Mainnet target for end of September.
Significant scope has been added to Dash Core Release v0.16.0 since the initial Product Brief was published in June. The end of September has been set as the target for this major release to hit mainnet. The final stage in the process is our third release candidate, v0.16.0 RC3, coming next week to testnet. Over the next few days we will merge the final pull requests, tag the release in the repository and start the gitian builds. The testnet release will be announced through typical social media and marketing channels.
DashCore v0.16 is a major release and will be a mandatory upgrade for all users. Version 0.16 introduces the multi-year shift in the allocation of block rewards between masternodes and miners. In addition, this release includes a number of improvements to Dash including performance optimizations, wallet user interface enhancements, greater stability, and numerous enhancements through Bitcoin backports. Below are a few key highlights of this release. Comprehensive details can be found in the release notes.
Block Reward Reallocation
The allocation of block rewards — excluding proposal funding — between masternodes and miners is changing from a 50–50 split to a 60–40 split over a multi-year transition period. This change was proposed and approved by the network during the July voting cycle with the primary objective to better stabilize Dash’s store of value properties. The reallocation of rewards will incentivize the formation and retention of masternodes on the Dash network which will in turn slow the growth rate of Dash’s circulating supply.
The reallocation will take place gradually over 4½ years with incremental adjustments to the split of non-treasury funds. The proposed changes will occur every three superblock cycles, approximately once per quarter. After the BIP-9 activation for v0.16, the initial change to the reallocation will occur at the next superblock. Read more.
Core Wallet UI/UX Improvements
The Dash core wallet has gone through a significant design overhaul in v0.16 to improve the user experience. The experience is now more consistent across all supported operating systems in regards to fonts, graphics and screen layouts. A new tab has been introduced specifically for PrivateSend transactions to improve the workflow by reducing the potential for errors. Configuration settings have also been added to improve individual user preferences such as font type, size and weighting for improved readability across all monitor resolutions. Over 100 files were modified with thousands of lines of new code to support the v0.16 design changes. Read more.
Quorum Signing Optimizations
Quorum load has been significantly reduced when recovering signatures. The new system initially sends signature shares to a single deterministically selected node, instead of propagating signature shares to every node until one has enough to recover the signature. After one second, if the recovered signature has not appeared, the signature share is sent to another deterministically selected node and this process repeats until a recovered signature is present. This way only the recovered signature needs to be propagated and verified by all members. This optimization is expected to reduce the load by several orders of magnitude. Read more.
Network Threading Improvement
Network threading has been optimized by eliminating unnecessary repetition of loops through all nodes by implementing event polling (epoll) on Linux. This efficient event notification system will reduce the overhead of the socket handler thread to nearly nothing. This optimization only impacts linux implementations and is specifically impactful for masternodes which handle a large number of connections. Read more.
Minimum Protocol Check
Proof of Service (PoSe) for Masternodes is enhanced by ensuring a minimum protocol version is running. During the distributed key generation (DKG) process, a masternode will verify that the Dash port of other masternodes is open and accepting connections. In addition, the protocol version will be checked to ensure it is above the minimum required version. If either of these conditions are not met, the offending masternode will be flagged as a bad quorum member. This feature will be activated by spork 21 once 60% of the masternodes have upgraded to version 0.16. Read more.
This release also introduces over 650 updates from Bitcoin v0.16 as well as some updates from Bitcoin v0.17. 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 Dash users will benefit from. 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.16, please refer to their release notes.
PrivateSend Code Refactoring
PrivateSend code has been refactored, removing outdated logic, and changing mixing logic to be simpler and on average provide better privacy. PrivateSend mixing rounds used to have a random number of participants between three and five. In v0.16, this logic has changed. It is no longer random, but instead, a masternode will accept up to five participants and will fall back to using three or four participants if there isn’t enough liquidity at that moment.
PrivateSend Create Denominations Improvement
The create denominations algorithm has been significantly improved. Previously, users when mixing would either end up with too many tiny outputs, effectively clogging their wallet, or too few outputs, resulting in mixing not completing. This has been resolved with a new and improved algorithm which both ensures that all funds that the user wants to have mixed are mixed, while also avoiding creating too many small outputs. Read more.
Core Wallet Enhancements
Numerous issues have been resolved to improve the overall consistency and cleanliness of the user interface of the core wallet. All of the graphic controls have been standardized into a custom configuration for proper display across operating systems and within different themes. Clean-up work has been focused on tabs, fonts, labels, colors, hover mode, focus and various controls. A new PrivateSend tab has also been introduced to simplify the experience when dealing with mixing transactions. This tab will only be enabled when PrivateSend functionality is enabled within the configuration settings.
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.
Partner Implementation Notes
DashCore v0.16 is a mandatory update due to the change of the block reward allocation. 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.16, there are important fixes and optimizations which will not be backported to v0.15. 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 is one new RPC command which is Dash specific and three new RPC commands introduced through Bitcoin backports. In addition, one RPC, GETINFO, was removed and has been deprecated since version 0.15. The new RPC commands are: QUORUM SELECTQUORUM, LOADWALLET, RESCANBLOCKCHAIN, and SAVEMEMPOOL.
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.16 which are included in DashCore v0.16. In addition, select items have been backported from Bitcoin v0.17+ to remedy high priority issues.
V0.16 Upgrade Phases
Below is a diagram explaining our current upgrade phases for Dash Core v0.16. Please note this is subject to change based on any new information discovered between now and when we release to mainnet.