DigiByte + DigiAssets wallet compatibility

Josiah Spackman
5 min readMay 19, 2019

--

With the advent of DigiAssets, we are going to also need to have wallet vendors intentionally add support for the protocol.

Initial responses from the several vendors I’ve spoken with has been hugely positive, however naturally these things take time.

As I mentioned on the recent LiveStream with Noah, Rudy & Jared, there are some things to be aware of when it comes to DigiAssets support. If you want to watch it, we spend most of the time talking about DigiAssets and I would encourage you to do-so to learn more about it:

A little history on SPV wallets

Back in the day when hierarchical deterministic wallets were being created (Wallets where you only need to back up a master seed once), the standard was to include the phrase “Bitcoin seed” in this BIP32 seed key.

This seed key is used to generate all your addresses, and, if it were to be changed by a particular wallet implementation, then that wallet would not be compatible with others (As the resulting addresses generated would be different).

Most wallets and blockchains simply keep “Bitcoin seed” and don’t ever bother to change it.

With DigiByte, we changed it.

Because our DigiByte for iOS and Android includes “DigiByte seed” in the generation of addresses, it’s not compatible with other 3rd-party wallets such as Coinomi which use “Bitcoin seed” in the address generation.

However, you could restore your wallet between Coinomi & the Guarda wallet, because they both use “Bitcoin seed”.

While this has previously been a cause for contention between certain DigiByte users, the fact we made the conscious effort to go through and change that has now turned out to be a blessing in disguise.

You don’t want to restore DigiAssets to a wallet that doesn’t support it

As we mentioned during the LiveStream, when you send a DigiAsset, it sends a small amount of DigiByte along with the asset:

0.000006 DGB sent with the asset

Now this 0.000006 DGB should never be “spent” by your wallet.

Never.

Even if you are “emptying” your wallet through a “send max” command, it shouldn’t include these, as you can still later send more DGB back to your account, and retain ownership of those DigiAssets.

If that 0.000006 DGB gets spent, you effectively “burn” the asset.

This is obviously bad.

So, we wouldn’t want users to go restoring their DigiAssets wallet to a normal DigiByte wallet that’s not aware that it shouldn’t go spending those tiny fractions of a DGB.

This is where the DigiByte Android & iOS apps having a different seed, “DigiByte seed” is going to be beneficial.

You see these two wallets will be the first to support DigiAssets, and people shouldn’t then take those wallets and restore them elsewhere.

Thankfully, even if they use the same restore phrase on a wallet that doesn’t support DigiAssets, because the other wallet uses “Bitcoin seed” in the address generation, it’ll never find any of the DigiByte in that account.

The Android & iOS DigiByte wallets are in the process now of being setup with the “understanding” of how to handle DigiAsset transactions, and specifically not to spend those inputs.

How will this work going forward then?

Well, as I mentioned earlier, I’ve already personally been in contact with a number of wallet vendors who have expressed interest in supporting DigiAssets.

These wallet vendors are going to need to make some small changes to how their wallets handle DigiByte transactions, in preparation for DigiAssets:

  1. Not gathering / using inputs that contain a DigiAsset
    (The method for this will vary from wallet to wallet, but information on what to look for can be found on GitHub on the Protocol Specifications)
  2. Not showing the balance of these DigiAsset inputs (The 0.000006 DGB shouldn’t be counted as a “spendable” balance) in the wallet balance.
  3. Changing the seed from “Bitcoin seed” to “DigiByte seed
    The derivation path should also be updated, where others predominantly use m/44'/20'/0' this should be m/0'

By doing this, the existing addresses generated won’t be compatible.

It’s for this reason we envisage one of two things occurring:

  1. Multicoin wallets will likely generate a new “DigiByte + DigiAssets” coin type that specifically uses this “DigiByte seed” for address generation and is aware of handling DigiAssets
  2. Single coin wallets will likely release a second “app” or possibly a “mode” (Like an on / off switch perhaps) for their wallet which specifically supports DigiAssets.

This way, a user can restore their wallet, and use DigiAssets, without the assets inadvertently being “spent” and burned.

Won’t that be a bit of extra work?

Yes, it will, but not too much, and we are confident in the long term that the payoff will be worth it as DigiAssets gets off the ground and sees a groundswell of implementation and users.

This is funnily enough the safest way for us to proceed.

Other wallets, which don’t want to support DigiAssets, don’t need to make any changes. They can continue, as-is, and never have any issues whatsoever.

Users who don’t want to use DigiAssets can likewise continue to use these wallets without any changes, and things will still function perfectly going forward.

However, we hope that over time both the wallet vendors and users will all adopt DigiAssets.

It’s also probably a really good opportunity for vendors to review address-types and look at Bech32 address generation. An address starting with “dgb1” is going to be easier to identify as a DigiByte address, rather than one starting with a “D” (Same as DOGE), or “3” (Bitcoin). Given our upcoming Odocrypt network upgrade occurring at Block 9,100,000, it’s safer than ever to presume support for SegWit / Bech32 address types.

How will I know if my wallet supports this, and isn’t going to accidentally spend my DigiAssets?

The long story short is: You shouldn’t worry about this.

If the wallet supports DigiAssets, that’s all you need to know. If you see it supports DigiAssets, you’re good to go.

This explanation is more of a slightly technical investigation for the members of the community who are curious, or for wallet vendors who are looking in to what is needed to support DigiAssets.

So with this out of the way, we hope you’ll get excited about DigiAssets support coming soon to a wallet near you!

--

--

Josiah Spackman
Josiah Spackman

Written by Josiah Spackman

I write interesting things about cryptocurrency, especially DigiByte

Responses (1)