Support for Dash Platform has been expanded through the addition of a new quorum type, several RPCs, and a way to limit Platform RPC access to a subset of allowed RPCs. These changes provide necessary Platform capabilities while maximizing the isolation between Core and Platform.
Several opcodes have been reactivated/introduced to broaden the functionality of the system and enable developers to build new solutions. These opcodes are a combination of previously disabled ones that have been found to be safe and new ones previously introduced by Bitcoin Cash. Details of the opcodes are provided in DIP-20.
Upgrading a non-Hierarchical Deterministic (HD) wallet to an HD wallet is now possible. Previously new HD wallets could be created, but non-HD wallets could not be upgraded. This update will enable existing non-HD wallets to upgrade to take advantage of HD wallet features. Upgrades must be done via either the debug console or command line and a new backup must be made when this upgrade is performed. Read more
DKG Data Sharing
Quorum resilience has been improved by enabling masternodes to request DKG data from other quorum members. This allows Dash Platform to obtain required information while also making it possible for corrupted masternodes to recover the DKG data they need to participate in quorums they are part of. Details are provided in DIP-21.
This release also introduces over 450 updates from Bitcoin v0.17 as well as some updates from Bitcoin v0.18 and more recent versions. This includes a number of performance improvements, dynamic loading of wallets via RPC, support for signalling pruned nodes, and a number of other updates that will benefit Dash users. Bitcoin changes that do not align with Dash’s product needs, such as SegWit and RBF, are excluded from our backporting. For additional detail on what’s included in Bitcoin v0.17, please refer to their release notes.
Several spork changes have been made to streamline code and improve system reliability. Activation of Spork 22 in DashCore v0.16 has rendered that spork unnecessary. The associated logic has been hardened and the spork removed. Spork 21 logic has been split into two sporks, 21 and 23, so that masternode quorum connectivity and quorum Proof of Service (PoSe) can be controlled independently. Finally, spork 2 has a new mode (value: 1) that enables a smooth transition in case InstantSend needs to be disabled. Read more here, here, and here
DashCore’s BLS signature library has been updated based on v1.0 of the Chia BLS library to support migration to a new BLS signature scheme which will be implemented in a future version of DashCore. These changes will be made to align with standards and improve security.
PrivateSend has been renamed to CoinJoin to better reflect the functionality it provides and align with industry standard terminology. The renaming only applies to the UI and RPCs but does not change functionality.
A number of other changes were made including updates to RPC commands, command-line options, crash reports, and stack traces. For additional detail on these please refer to the release notes, when available.
DashCore v0.17 is a mandatory update due to the introduction of several new opcodes and a new long living masternode quorum type. All integration partners should immediately review the Product Brief and Release Notes to become familiar with the details of the release and begin the update process.
In addition to the hard fork which will occur with v0.17, there are important fixes and optimizations which will not be backported to v0.16. It is important to verify compatibility with particular attention to 1) changes to RPCs, 2) changes to command-line options, and 3) Bitcoin backports.
Remote Procedure Call (RPC) Changes
There are six new RPC commands which are Dash specific and seven new RPC commands introduced through Bitcoin backports. One previously deprecated RPC, estimatefee, was removed and several RPCs have been deprecated.
The new RPCs are: getzmqnotifications, gobject list-prepared, masternode payments, quorum verify, verifyislock, upgradetohd, signrawtransactionwithkey, signrawtransactionwithwallet, createwallet, getaddressinfo, getaddressesbylabel, listlabels, and unloadwallet.
The deprecated RPCs are all related to the deprecation of wallet accounts and will be removed in DashCore v0.18. Note that the deprecation of wallet accounts means that any RPCs that previously accepted an “account” parameter are affected — please refer to the RPC help for details about specific RPCs. The deprecated RPCs are:
getaccount, getaccountaddress, getaddressbyaccount, getreceivedbyaccount, listaccounts, listreceivedbyaccount, move, sendfrom, setaccount
Also, please note that all mixing-related RPCs have been renamed to replace “PrivateSend” with “CoinJoin” (e.g., setprivatesendrounds -> setcoinjoinrounds).
A number of command-line option changes were made related to debugging, network management, and mixing. For additional detail on these please refer to the release notes.
We have backported hundreds of items from Bitcoin v0.17 which are included in DashCore v0.17. In addition, select items have been backported from Bitcoin v0.18+ to remedy high priority issues.
Dash is a global payments network with its own cryptocurrency offering businesses and individuals instant payments for less than a cent per transaction. Our goal is to provide users with a better way to pay and get paid. Dash Core Group is in the process of rolling out a series of upgrades to our system dubbed “Evolution” to make Dash the most user-friendly blockchain-based payment network in the world.