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 minor version release, bringing various bugfixes 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). Because of the per-UTXO fix (see below) there is a one-time database upgrade operation, so expect a slightly longer startup time on the first run.
Downgrade warning
Downgrade to a version < 0.12.2.2
Because release 0.12.2.2 includes the per-UTXO fix (see below) which changes the structure of the internal database, this release is not fully backwards compatible. You will have to reindex the database if you decide to use any previous version.
This does not affect wallet forward or backward compatibility.
Notable changes
Per-UTXO fix
This fixes a potential vulnerability, so called 'Corebleed', which was demonstrated this summer at the Вrеаkіng Віtсоіn Соnfеrеnсе іn Раrіs. The DoS can cause nodes to allocate excessive amounts of memory, which leads them to a halt. You can read more about the fix in the original Bitcoin Core pull request https://github.com/bitcoin/bitcoin/pull/10195
To fix this issue in Dash Core however, we had to backport a lot of other improvements from Bitcoin Core, see full list of backports in the detailed change log below.
Additional indexes fix
If you were using additional indexes like addressindex, spentindex or timestampindex it's possible that they are not accurate. Please consider reindexing the database by starting your node with -reindex command line option. This is a one-time operation, the issue should be fixed now.
InstantSend fix
InstantSend should work with multisig addresses now.
PrivateSend fix
Some internal data structures were not cleared properly, which could lead to a slightly higher memory consumption over a long period of time. This was a minor issue which was not affecting mixing speed or user privacy in any way.
Removal of support for local masternodes
Keeping a wallet with 1000 DASH unlocked for 24/7 is definitely not a good idea anymore. Because of this fact, it's also no longer reasonable to update and test this feature, so it's completely removed now. If for some reason you were still using it, please follow one of the guides and setup a remote masternode instead.
Dropping old (pre-12.2) peers
Connections from peers with protocol lower than 70208 are no longer accepted.
Other improvements and bug fixes
As a result of previous intensive refactoring and some additional fixes, it should be possible to compile Dash Core with --disable-wallet option now.
This release also improves sync process and significantly lowers the time after which getblocktemplate rpc becomes available on node start.
And as usual, various small bugs and typos were fixed and more refactoring was done too.
0.12.2.2 Change log
See detailed change log below.
Backports:
996f5103aBackport #7056: Save last db read23fe35a18Backport #7756: Add cursor to iterate over utxo set, use this ingettxoutsetinfo17f2ea5d7Backport #7904: txdb: Fix assert crash in new UTXO set cursor2e54bd2e8Backport #7927: Minor changes to dbwrapper to simplify support for other databasesabaf524f0Backport #7815: Break circular dependency main ↔ txdb02a6cef94Move index structures into spentindex.hd92b454a2Add SipHash-2-4 primitives to hash44526af95Use SipHash-2-4 for CCoinsCache index60e6a602eUse C++11 thread-safe static initializers in coins.h/coins.cpp753cb1563Backport #7874: Improve AlreadyHave952383e16Backport #7933: Fix OOM when deserializing UTXO entries with invalid lengthe3b7ed449Backport #8273: Bump-dbcachedefault to 300MiB94e01eb66Backport #8467: [Trivial] Do not shadow members in dbwrapper105fd1815Use fixed preallocation instead of costly GetSerializeSize6fbe93aa7Backport #9307: Remove undefined FetchCoins method declaration6974f1723Backport #9346: Batch construct batches4b4d22293Backport #9308: [test] Add CCoinsViewCache Access/Modify/Write testsa589c94a9Backport #9107: Safer modify new coins09b3e042fBackport #9310: Assert FRESH validity in CCoinsViewCache::BatchWriteceb64fcd4Backport #8610: Share unused mempool memory with coincache817ecc03dBackport #9353: Add data() method to CDataStream (and use it)249db2776Backport #9999: [LevelDB] Plug leveldb logs to bitcoin logscfefd34f4Backport #10126: Compensate for memory peak at flush timeff9b2967aBackport #10133: Clean up calculations of pcoinsTip memory usage567043d36Make DisconnectBlock and ConnectBlock static in validation.cpp9a266e68dBackport #10297: Simplify DisconnectBlock arguments/return valuefc5ced317Backport #10445: Add test for empty chain and reorg consistency for gettxoutsetinfo.6f1997182Add COMPACTSIZE wrapper similar to VARINT for serializationb06a6a2e7Fix use of missing self.log in blockchain.py8ed672219Backport #10250: Fix some empty vector referencesafa96b7c1Backport #10249: Switch CCoinsMap from boost to std unordered_mapc81394b97Backport #10195: Switch chainstate db and cache to per-txout modeld4562b5e5Fix CCoinsViewCache::GetPriority to use new per-utxo92bb65894Fix address index to use new per-utxo DB9ad56fe18Dash related fixes for per-utxo DB4f807422fBackport #10550: Don't return stale data from CCoinsViewCache::Cursor()151c552c7Backport #10537: Few Minor per-utxo assert-semantics re-adds and tweak06aa02ff6Backport #10559: Change semantics of HaveCoinInCache to match HaveCoin549839a50Backport #10581: Simplify return values of GetCoin/HaveCoin(InCache)5b232161aBackport #10558: Address nits from per-utxo change1a9add78cBackport #10660: Allow to cancel the txdb upgrade via splashscreen keypress 'q'4102211a3Backport #10526: Force on-the-fly compaction during pertxout upgrade8780c762eBackport #10985: Add undocumented -forcecompactdb to force LevelDB compactions4cd19913dBackport #10998: Fix upgrade cancel warnings371feda4cBackport #11529: Avoid slow transaction search with txindex enabledcdb2b1944build: quiet annoying warnings without adding new onesfee05dab9build: silence gcc7's implicit fallthrough warning
Masternodes:
312663b4bRemove support for local masternodes (#1706)
PrivateSend:
7e96af4e6Refactor PrivateSend (#1735)f4502099amake CheckDSTXes() private, execute it on both client and server (#1736)
InstantSend:
4802a1fb7Allow IS for all txes, not only for txes with p2pkh and data outputs (#1760)f37a64208InstantSend txes should never qualify to be a 0-fee txes (#1777)
DIP0001:
3028af19fpost-DIP0001 cleanup (#1763)51b2c7501Fix WarningBitsConditionChecker (#1765)
Network/Sync:
5d58dd90cMake sure to clear setAskFor in Dash submodules (#1730)328009749fine-tune sync conditions in getblocktemplate (#1739)362becbccBump MIN_PEER_PROTO_VERSION to 70208 (#1772)930afd7dfFix mnp and mnv invs (#1775)63e306148Improve sync (#1779)a79c97248Fix ProcessVerifyBroadcast (#1780)
Build:
c166ed39bAllow compilation with--disable-wallet(#1733)31bc9d4eeShow test progress for tests running in wine to avoid Travis timeout (#1740)32f21698eAdjust tests to avoid Travis timeouts (#1745)837c4fc5dForce rcc to use resource format version 1. (#1784)
GUI:
Docs:
bc8342558Two small fixes in docs (#1746)9e7cc56cbFix typo in release-notes.md (#1759)3f3705c47[Trivial] Typo/doc updates and RPC help formatting (#1758)e96da9f19move 0.12.2 release notes6915ee45eBump version in README.md to 0.12.2 (#1774)0291604adClarify usage of pointers and references in code (#1778)
Other:
ccbd5273ebump to 0.12.3.0 (#1726)865b61b50Unify GetNextWorkRequired (#1737)d1aeac1b2Spelling mistake in validation.cpp (#1752)442325b07addmaxgovobjdatasizefield to the output ofgetgovernanceinfo(#1757)c5ec2f82aDropIsNormalPaymentScript, useIsPayToPublicKeyHash(#1761)f9f28e7c7De-bump to 0.12.2.2 (#1768)54186a159Make sure additional indexes are recalculated correctly in VerifyDB (#1773)86e6f0dd2Fix CMasternodeMan::ProcessVerify* logs (#1782)
Credits
Thanks to everyone who directly contributed to this release:
- Alexander Block
- shade
- sidhujag
- thephez
- turbanoff
- Ilya Savinov
- UdjinM6
- Will Wray
As well as Bitcoin Core Developers and everyone that submitted issues, reviewed pull requests 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 release notes can be found here:
- release-notes/dash/release-notes-0.12.2.md "v0.12.2" released Nov/08/2017
- 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

