Dash Core Source Documentation (0.16.0.1)
Find detailed information regarding the Dash Core source code.
Release is now available from:
https://www.dash.org/downloads/#wallets
This is a new major version release, bringing new features and other improvements.
Please report bugs using the issue tracker at github:
https://github.com/dashpay/dash/issues
Upgrading and downgrading
How to Upgrade
If you are running an older version, shut it down. Wait until it has completely shut down (which might take a few minutes for older versions), then run the installer (on Windows) or just copy over /Applications/Dash-Qt (on Mac) or dashd/dash-qt (on Linux).
Downgrade warning
Downgrade to a version < 0.12.2
Because release 0.12.2 includes DIP0001 (2 MB block size hardfork) plus a transaction fee reduction and a fix for masternode rank calculation algo (which activation also depends on DIP0001) this release will not be backwards compatible after DIP0001 lock in/activation happens.
This does not affect wallet forward or backward compatibility.
Notable changes
DIP0001
We outline an initial scaling mechanism for Dash. After deployment and activation, Dash will be able to handle double the transactions it can currently handle. Together with the faster block times, Dash we will be prepared to handle eight times the traffic of Bitcoin.
https://github.com/dashpay/dips/blob/master/dip-0001.md
Fee reduction
All transaction fees are reduced 10x (from 10K per Kb to 1K per Kb), including fees for InstantSend (from 0.001 DASH per input to 0.0001 per input)
InstantSend fix
The potential vulnerability found by Matt Robertson and Alexander Block was fixed in d7a8489f3 (#1620).
RPC changes
There are few changes in existing RPC in this release:
- There is no more
bcconfirmationsfield in RPC output andconfirmationsshows blockchain only confirmations by default now. You can change this behaviour by switching newaddlockconfparam totrue. There is a new rpc fieldinstantlockwhich indicates whether a given transaction is locked via InstantSend. For more info and examples please see https://github.com/dashpay/dash/blob/v0.12.2.x/doc/instantsend.md; gobject listandgobject diffacceptfunding,deleteandendorsedfiltering options now, in addition tovalidandallcurrently available;vinfield inmasternodecommands is renamed tooutpointand shows data in short format now;getblocktemplateoutput is extended with versionbits-related information;- Output of wallet-related commands
validateaddressis extended with optionalhdkeypathandhdchainidfields.
There are few new RPC commands also:
masternodelist infoshows additional information about sentinel for each masternode in the list;masternodelist pubkeyshows pubkey corresponding to masternodeprivkey for each masternode in the list;gobject checkallows to check proposal data for correctness before preparing/submitting the proposal,gobject prepareandgobject submitshould also perform additional validation now though;setnetworkactiveallows to turn all network activity on and off;dumphdinfodisplays some information about HD wallet (if available).
Command-line options
New: assumevalid, blocksonly, reindex-chainstate
Experimental: usehd, mnemonic, mnemonicpassphrase, hdseed
See Help -> Command-line options in Qt wallet or dashd --help for more info.
PrivateSend improvements
Algorithm for selecting inputs was slightly changed in 6067896ae (#1248). This should allow user to get some mixed funds much faster.
Lots of backports, refactoring and bug fixes
We backported some performance improvements from Bitcoin Core and aligned our codebase with their source a little bit better. We still do not have all the improvements so this work is going to be continued in next releases.
A lot of refactoring and other fixes should make code more reliable and easier to review now.
Experimental HD wallet
This release includes experimental implementation of BIP39/BIP44 compatible HD wallet. Wallet type (HD or non-HD) is selected when wallet is created via usehd command-line option, default is 0 which means that a regular non-deterministic wallet is going to be used. If you decide to use HD wallet, you can also specify BIP39 mnemonic and mnemonic passphrase (see mnemonic and mnemonicpassphrase command-line options) but you can do so only on initial wallet creation and can't change these afterwards. If you don't specify them, mnemonic is going to be generated randomly and mnemonic passphrase is going to be just a blank string.
WARNING: The way it's currently implemented is NOT safe and is NOT recommended to use on mainnet. Wallet is created unencrypted with mnemonic stored inside, so even if you encrypt it later there will be a short period of time when mnemonic is stored in plain text. This issue will be addressed in future releases.
0.12.2 Change log
Detailed change log below.
Backports:
ff30aed68Align with btc 0.12 (#1409)9901cf433Fix for dash-qt issue with startup and multiple monitors. (#1461)39750439bForce to use C++11 mode for compilation (#1463)e30faab6fMake strWalletFile const (#1459)c4fe22900Access WorkQueue::running only within the cs lock. (#1460)8572d54a9trivial: fix bloom filter init to isEmpty = true (#1458)b272ae56aAvoid ugly exception in log on unknown inv type (#1457)e99dbe620Don't return the address of a P2SH of a P2SH (#1455)f24efd483Generate auth cookie in hex instead of base64 (#1454)3efcb755eDo not shadow LOCK's criticalblock variable for LOCK inside LOCK (#1453)b7822464fRemove unnecessary LOCK(cs_main) in getrawpmempool (#1452)72176e501Remove duplicate bantablemodel.h include (#1446)634ef6c06Fix for build on Ubuntu 14.04 with system libraries (#1467)c0450f609Improve EncodeBase58/DecodeBase58 performance (#1456)258ed119aauto_ptr → unique_ptrbe968206bBoost 1.61.07f8775409Boost 1.63.011afc8f4bMinimal fix to slow prevector tests as stopgap measure11121747bbuild: fix qt5.7 build under macOS (#1469)5988e1e7fIncrease minimum debug.log size to 10MB after shrink. (#1480)a443d4e2dBackport Bitcoin PRs #6589, #7180 and remaining part of #7181: enable per-command byte counters inCNode(#1496)f9730cb2eIncrease test coverage for addrman and addrinfo (#1497)a12491448Eliminate unnecessary call to CheckBlock (#1498)b0843c397Backport Bincoin PR#7348: MOVE ONLY: move rpc* to rpc/ + same for Dash-specific rpc (#1502)f65017cfeBackport Bitcoin PR#7349: Build against system UniValue when available (#1503)ac6c3c900Backport Bitcoin PR#7350: Banlist updates (#1505)d787fe4abBackport Bitcoin PR#7458: [Net] peers.dat, banlist.dat recreated when missing (#1506)6af9955faBackport Bitcoin PR#7696: Fix de-serialization bug where AddrMan is corrupted after exception (#1507)b39c518d5Backport Bitcoin PR#7749: Enforce expected outbound services (#1508)9268a336dBackport Bitcoin PR#7917: Optimize reindex (#1515)b47984f30Remove non-determinism which is breaking net_tests #8069 (#1517)9a8a290b8fix race that could fail to persist a ban (#1518)5a1961e5eBackport Bitcoin PR#7906: net: prerequisites for p2p encapsulation changes (#1521)7b5556a29Backport Bitcoin PR#8084: Add recently accepted blocks and txn to AttemptToEvictConnection (#1522)9ce2b966cBackport Bitcoin PR#8113: Rework addnode behaviour (#1525)aa32f1dc9Remove bad chain alert partition check (#1529)d934ffb2fAdded feeler connections increasing good addrs in the tried table. (#1530)290fb3b57Backport Bitcoin PR#7942: locking for Misbehave() and other cs_main locking fixes (#1535)a9d771e49Backport Bitcoin PR#8085: p2p: Begin encapsulation (#1537)82851b439Backport Bitcoin PR#8049: Expose information on whether transaction relay is enabled ingetnetwork(#1545)7707c0789backport 9008: Remove assert(nMaxInbound > 0) (#1548)b621cfb5fBackport Bitcoin PR#8708: net: have CConnman handle message sending (#1553)cc4db34f4net: only delete CConnman if it's been created (#1555)a3c8cb20dBackport Bitcoin PR#8865: Decouple peer-processing-logic from block-connection-logic (#1556)e7e106e22Backport Bitcoin PR#8969: Decouple peer-processing-logic from block-connection-logic (#2) (#1558)b4b343145Backport Bitcoin PR#9075: Decouple peer-processing-logic from block-connection-logic (#3) (#1560)415085c73Backport Bitcoin PR#9183: Final Preparation for main.cpp Split (#1561)bcf5455bfBackport Bitcoin PR#8822: net: Consistent checksum handling (#1565)df6d458b8Backport Bitcoin PR#9260: Mrs Peacock in The Library with The Candlestick (killed main.{h,cpp}) (#1566)42c784dc7Backport Bitcoin PR#9289: net: drop boost::thread_group (#1568)b9c67258bBackport Bitcoin PR#9609: net: fix remaining net assertions (#1575) + Dashify2472999daBackport Bitcoin PR#9441: Net: Massive speedup. Net locks overhaul (#1586)ccee103a0Backport "assumed valid blocks" feature from Bitcoin 0.13 (#1582)105122181Partially backport Bitcoin PR#9626: Clean up a few CConnman cs_vNodes/CNode things (#1591)76181f575Do not add random inbound peers to addrman. (#1593)589d22f2cnet: No longer send local address in addrMe (#1600)b41d9eac2Backport Bitcoin PR#7868: net: Split DNS resolving functionality out of net structures (#1601)b82b9787dBackport Bitcoin PR#8128: Net: Turn net structures into dumb storage classes (#1604)690cb58f8Backport Bitcoin Qt/Gui changes up to 0.14.x part 1 (#1614)9707ca5ceBackport Bitcoin Qt/Gui changes up to 0.14.x part 2 (#1615)91d99fcd3Backport Bitcoin Qt/Gui changes up to 0.14.x part 3 (#1617)4cac044d9Merge #8944: Remove bogus assert on number of oubound connections. (#1685)d23adcc0fMerge #10231: [Qt] Reduce a significant cs_main lock freeze (#1704)
PrivateSend:
6067896aemix inputs with highest number of rounds first (#1248)559f8421bFew fixes for PrivateSend (#1408)7242e2922Refactor PS (#1437)68e858f8dPrivateSend: dont waste keys from keypool on failure in CreateDenominated (#1473)2daea77a5fix calculation of (unconfirmed) anonymizable balance (#1477)029ee6494split CPrivateSend (#1492)739ef9a68Expire confirmed DSTXes after ~1h since confirmation (#1499)7abac068bfix MakeCollateralAmounts (#1500)0f05e25c7fix a bug in CommitFinalTransaction (#1540)82595b1b9fix number of blocks to wait after successful mixing tx (#1597)33e460f30Fix losing keys on PrivateSend (#1616)ea793a71fMake sure mixing masternode follows bip69 before signing final mixing tx (#1510)8c15f5f87speedup MakeCollateralAmounts by skiping denominated inputs early (#1631)8e9289e12Keep track of wallet UTXOs and use them for PS balances and rounds calculations (#1655)f77efcf24do not calculate stuff that are not going to be visible in simple PS UI anyway (#1656)
InstantSend:
68e1a8c79Safety check in CInstantSend::SyncTransaction (#1412)4a9fbca08Fix potential deadlock in CInstantSend::UpdateLockedTransaction (#1571)f786ce6abfix instantsendtoaddress param convertion (#1585)ae909d0a0Fix: Reject invalid instantsend transaction (#1583)84ecccefcInstandSend overhaul (#1592)5f4362cb8fix SPORK_5_INSTANTSEND_MAX_VALUE validation in CWallet::CreateTransaction (#1619)d7a8489f3Fix masternode score/rank calculations (#1620)b41f8d3ddfix instantsend-related RPC output (#1628)502748487bump MIN_INSTANTSEND_PROTO_VERSION to 70208 (#1650)788ae63acFix edge case for IS (skip inputs that are too large) (#1695)470e5435cremove InstantSend votes for failed lock attemts after some timeout (#1705)a9293ad03update setAskFor on TXLOCKVOTE (#1713)859144809fix bug introduced in #1695 (#1714)
Governance:
4595db0ceFew changes for governance rpc: (#1351)411332f94sentinel uses status of funding votes (#1440)a109a611fValidate proposals on prepare and submit (#1488)a439e9840Replace watchdogs with ping (#1491)109c5fd1dFixed issues with propagation of governance objects (#1489)f7aa81586Fix issues with mapSeenGovernanceObjects (#1511)8075370d1change invalid version string constant (#1532)916af52c0Fix vulnerability with mapMasternodeOrphanObjects (#1512)70eb83a5cNew rpc call "masternodelist info" (#1513)f47f0daf9add 6 to strAllowedChars (#1542)6cb3fddccfixed potential deadlock in CSuperblockManager::IsSuperblockTriggered (#1536)15958c594fix potential deadlock (PR#1536 fix) (#1538)1c4e2946afix potential deadlock in CGovernanceManager::ProcessVote (#1541)4942884c7fix potential deadlock in CMasternodeMan::CheckMnbAndUpdateMasternodeList (#1543)4ed838cb5Fix MasternodeRateCheck (#1490)6496fc9dafix off-by-1 in CSuperblock::GetPaymentsLimit (#1598)48d63ab29Relay govobj and govvote to every compatible peer, not only to the one with the same version (#1662)6f57519c6allow up to 40 chars in proposal name (#1693)ceda3abe6start_epoch, end_epoch and payment_amount should be numbers, not strings (#1707)
Network/Sync:
62963e911fix sync reset which is triggered erroneously during reindex (#1478)fc406f2d8track asset sync time (#1479)9e9df2820do not use masternode connections in feeler logic (#1533)9694658cdMake sure mixing messages are relayed/accepted properly (#1547)87707c012fix CDSNotificationInterface::UpdatedBlockTip signature (#1562)105713c10Sync overhaul (#1564)0fc13434blimit UpdatedBlockTip in IBD (#1570)510c0a06dRelay tx in sendrawtransaction according to its inv.type (#1584)c56ba56e7net: Consistently use GetTimeMicros() for inactivity checks (#1588)4f5455000Use GetAdjustedTime instead of GetTime when dealing with network-wide timestamps (#1590)4f0618ae8Fix sync issues (#1599)169afafd5Fix duplicate headers download in initial sync (#1589)91ae0b712Use connman passed to ThreadSendAlert() instead of g_connman global. (#1610)8da26da71Eliminate g_connman use in spork module. (#1613)4956ba7a7Eliminate g_connman use in instantx module. (#1626)10eddb52dMove some (spamy) CMasternodeSync log messages to newmnsynclog category (#1630)753b1e486Eliminate remaining uses of g_connman in Dash-specific code. (#1635)8949f4345Wait for full sync in functional tests that use getblocktemplate. (#1642)5f0da8aa7fix sync (#1643)7a8910443Fix unlocked access to vNodes.size() (#1654)278cf144bRemove cs_main from ThreadMnbRequestConnections (#1658)52cd4d40dFix bug: nCachedBlockHeight was not updated on start (#1673)1df889e23Add more logging for MN votes and MNs missing votes (#1683)28c8d1729Fix sync reset on lack of activity (#1686)dfb8dbbf6Fix mnp relay bug (#1700)
GUI:
5758ae1bfFull path in "failed to load cache" warnings (#1411)18c83f58eQt: bug fixes and enhancement to traffic graph widget (#1429)72fbfe93dIcon Cutoff Fix (#1485)4df8a20f9Fix windows installer script, should handledash:uri correctly now (#1550)8b7dffbb6Update startup shortcuts (#1551)6ff7b7aa5fix TrafficGraphData bandwidth calculation (#1618)026ad8421Fix empty tooltip during sync under specific conditions (#1637)08e503da2[GUI] Change look of modaloverlay (#1653)296cfd2efFix compilation with qt < 5.2 (#1672)11afd7cfdTranslations201710 - en, de, fi, fr, ru, vi (#1659)14d11e4a8Translations 201710 part2 (#1676)2144dae91Add hires version oflighttheme for Hi-DPI screens (#1712)
DIP0001:
cd262bf64DIP0001 implementation (#1594)6a6b31b74Dip0001-related adjustments (inc. constants) (#1621)e22453c90fix fDIP0001* flags initialization (#1625)25fa44d5afix DIP0001 implementation (#1639)d07ac4fbdfix: update DIP0001 related stuff even in IBD (#1652)d28619872fix: The idea behind fDIP0001LockedInAtTip was to indicate that it WAS locked in, not that it IS locked in (#1666)
Wallet:
27f3218deHD wallet (#1405)b6804678fMinor Warning Fixed (#1482)cd76f2a15Disable HD wallet by default (#1629)8f850c60fLower tx fees 10x (#1632)7ab175a8eEnsure Dash wallets < 0.12.2 can't open HD wallets (#1638)7efa5e79dfix fallback fee (#1649)
RPC:
a0851494daddmasternodelist pubkeyto rpc (#1549)825b3ccc9more "vin" -> "outpoint" in masternode rpc output (#1633)0c1679e58fixmasternode currentrpc (#1640)8c1e5e838remove send addresses from listreceivedbyaddress output (#1664)c3bc06bbffix Examples section of the RPC output for listreceivedbyaccount, listreceivedbyaccount and sendfrom commands (#1665)ece884994RPC help formatting updates (#1670)32ad53e77Revert "fix `masternode current` rpc (#1640)" (#1681)a5f99ef2fpartially revert "[Trivial] RPC help formatting updates #1670" (#1711)
Docs:
82a464313Doc: fix broken formatting in markdown #headers (#1462)ee4daed83Added clarifications in INSTALL readme for newcomers (#1481)5d2795029Documentation: Add spork message / details to protocol-documentation.md (#1493)5617aef07Documentation: Update undocumented messages in protocol-documentation.md (#1596)72ef788c5Updateinstantsend.mdaccording to PR#1628 changes (#1663)304b886d0Update build-osx.md formatting (#1690)578d5597912.2 release notes (#1675)
Other (noticeable) refactoring and fixes:
98990b683Refactor: CDarkSendSigner (#1410)397ea95dbImplement BIP69 outside of CTxIn/CTxOut (#1514)27b6f3633fix deadlock (#1531)e0d6c5b5afixed potential deadlock in CMasternodePing::SimpleCheck (#1534)8b5f47e68Masternode classes: Remove repeated/un-needed code and data (#1572)23582aea4add/use GetUTXO[Coins/Confirmations] helpers instead of GetInputAge[IX] (#1578)fe81d641ddrop pCurrentBlockIndex and use cached block height instead (nCachedBlockHeight) (#1579)8012f2ca7drop masternode index (#1580)b5f7be649slightly refactor CDSNotificationInterface (#1581)9028a22b8safe version of GetMasternodeByRank (#1595)05da4557dRefactor masternode management (#1611)adc7c6cb1Remove some recursive locks (#1624)
Other (technical) commits:
1a528d945bump to 0.12.2.0 (#1407)b815a7b6aMerge remote-tracking branch 'remotes/origin/master' into v0.12.2.x7a5943c3aMerge pull request #1431 from dashpay/v0.12.2.x-merge_upstream8bbcf6200Fixed pow (test and algo) (#1415)f3b92a95dc++11: don't throw from the reverselock destructor (#1421)b40f8f333Rename bitcoinconsensus library to dashconsensus. (#1432)28a1d0eccFix the same header included twice. (#1474)adf97e12afix travis ci mac build (#1483)a28fa724cfix BIP34 starting blocks for mainnet/testnet (#1476)bea548c61adjust/fix some log and error messages (#1484)715504357Dashify bitcoin unix executables (#1486)1d67d5212Don't try to create empty datadir before the real path is known (#1494)549b659e8Force self-recheck on CActiveMasternode::ManageStateRemote() (#1441)96f0d6ec2various trivial cleanup fixes (#1501)f9dd40888include atomic (#1523)eea78d45eRevert "fixed regtest+ds issues" (#1524)1b1d52ac3workaround for travis (#1526)c608bbec1Pass reference when calling HasPayeeWithVotes (#1569)b22cda4dftypo: "Writting" -> "Writing" (#1605)ace00175cbuild: silence gcc7's implicit fallthrough warning (#1622)02e882c3dbump MIN_MASTERNODE_PAYMENT_PROTO_VERSION_2 and PROTOCOL_VERSION to 70208 (#1636)d3829e55bfix BIP68 granularity and mask (#1641)72b221f74Revert "fix BIP68 granularity and mask (#1641)" (#1647)381ffdc4bFork testnet to test 12.2 migration (#1660)33dbafbbafork testnet again to re-test dip0001 because of 2 bugs found in 1st attempt (#1667)0b6955a7bupdate nMinimumChainWork and defaultAssumeValid for testnet (#1668)4ecbedbe7fixsetnetworkactive(typo) (#1682)46342b2e8update nCollateralMinConfBlockHash for local (hot) masternode on mn start (#1689)f5286b179Fix/optimize images (#1688)673e161d5fix trafficgraphdatatests for qt4 (#1699)
Credits
Thanks to everyone who directly contributed to this release:
- Alex Werner
- Alexander Block
- Allan Doensen
- Bob Feldbauer
- chaeplin
- crowning-
- diego-ab
- Gavin Westwood
- gladcow
- Holger Schinzel
- Ilya Savinov
- Kamuela Franco
- krychlicki
- Nathan Marley
- Oleg Girko
- QuantumExplorer
- sorin-postelnicu
- Spencer Lievens
- taw00
- TheLazieR Yip
- thephez
- Tim Flynn
- UdjinM6
- Will Wray
As well as Bitcoin Core Developers and everyone that submitted issues or helped translating on Transifex.
Older releases
Dash was previously known as Darkcoin.
Darkcoin tree 0.8.x was a fork of Litecoin tree 0.8, original name was XCoin which was first released on Jan/18/2014.
Darkcoin tree 0.9.x was the open source implementation of masternodes based on the 0.8.x tree and was first released on Mar/13/2014.
Darkcoin tree 0.10.x used to be the closed source implementation of Darksend which was released open source on Sep/25/2014.
Dash Core tree 0.11.x was a fork of Bitcoin Core tree 0.9, Darkcoin was rebranded to Dash.
Dash Core tree 0.12.0.x was a fork of Bitcoin Core tree 0.10.
Dash Core tree 0.12.1.x was a fork of Bitcoin Core tree 0.12.
These release are considered obsolete. Old changelogs can be found here:
- release-notes/dash/release-notes-0.12.1.md "v0.12.1" released ???/??/2016
- release-notes/dash/release-notes-0.12.0.md "v0.12.0" released ???/??/2015
- release-notes/dash/release-notes-0.11.2.md "v0.11.2" released Mar/25/2015
- release-notes/dash/release-notes-0.11.1.md "v0.11.1" released Feb/10/2015
- release-notes/dash/release-notes-0.11.0.md "v0.11.0" released Jan/15/2015
- release-notes/dash/release-notes-0.10.0.md "v0.10.x" released Sep/25/2014
- release-notes/dash/release-notes-0.9.0.md "v0.9.x" released Mar/13/2014

