Technical: New address formats and rpc calls

With the release of DigiByte Core Wallet 6.16.2 we included provisions for future changes to address formats amongst other things that Exchanges, 3rd party wallets, and those integrating DigiByte into their product / platform should be aware of.

You can read the original release notes here that describe the address changes:

In summary we have addresses beginning with:

  • D, legacy addresses, still going to be supported indefinitely
  • 3, multisig addresses, also still supported going forward
  • dgb1, new bech32 address format
  • S, new multisig / segwit address format

We strongly recommend any integration with DigiByte from April 2018 take this into account and includes support for the new “dgb1” and “S” addresses, as these are rapidly becoming the new & default standard for our users.

In addition to this, we’ve also included some rpc changes from upstream Bitcoin 0.17 which is expected to be released around August 2018.

The signrawtransaction is being removed from the next version of Bitcoin Core Wallet.

This PR splits signrawtransaction into two commands, signrawtransactionwithkey and signrawtransactionwithwallet. signrawtransactionwithkey requires private keys to be passed in and does not use the wallet for any signing. signrawtransactionwithwallet uses the wallet to sign a raw transaction and does not have any parameters to take private keys.
The signrawtransaction RPC has been marked as deprecated and will call the appropriate RPC command based upon the parameters given. A test was added to check this behavior is still consistent with the original behavior.

You can find out more about these changes upstream that will also be affecting other Core Wallets based on Bitcoin Core codebase here:

We strongly advise also being aware of this where integrators are using the rpc calls directly, this call will no doubt be deprecated across other wallets going forward too as they bring themselves up to speed with the Bitcoin Core codebase.

Where existing products and services are using ‘signrawtransaction’, you should simply use ‘signrawtransactionwithwallet’ in it’s place.

In addition, if you’re making use of the ‘ismine’ value in ‘validateaddress’, you’ll want to instead call ‘getaddressinfo’ instead, as the ‘ismine’ result is being returned there.

The ‘accounts’ rpc call is also being changed, we recommend reviewing the release notes from BTC Core: https://github.com/bitcoin-core/bitcoin-devwiki/wiki/0.17.0-Release-notes#label-and-account-apis-for-wallet

If you require any additional assistance, we recommend joining our Developer Telegram channel.