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, 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).
Downgrade warning
Downgrade to a version < 0.12.2.2
Because release 0.12.2.2 included the per-UTXO fix which changed the structure of the internal database, you will have to reindex the database if you decide to use any pre-0.12.2.2 version.
Wallet forward or backward compatibility was not affected.
Downgrade to 0.12.2.2/3
Downgrading to these versions does not require any additional actions, should be fully compatible.
Notable changes
Introducing Named Devnets
We introduce a new feature called Named Devnets. This feature allows the creation of multiple independent devnets. Each one is identified by a name which is hardened into a "devnet genesis" block, which is automatically positioned at height 1. Validation rules will ensure that a node from devnet=test1 will never be able to accept blocks from devnet=test2. This is done by checking the expected devnet genesis block.
The genesis block of the devnet is the same as the one from regtest. This starts the devnet with a very low difficulty, allowing us to fill up needed balances for masternodes very fast.
Also, the devnet name is put into the sub-version of the VERSION message. If a node connects to the wrong network, it will immediately be disconnected.
New format of network message signatures
We introduced a new signature format for Dash-specific network messages, read more here and here. We also introduced a new spork SPORK_6_NEW_SIGS which is going to be used to activate the new format after the network has finished the upgrade. Note that old pre-12.3 nodes won't be able to recognize and verify new signatures after SPORK_6_NEW_SIGS activates.
The old format is partly kept in the code to keep backwards compatibility. This code will be removed in an upcoming release.
Governance system improvements
We do not use watchdogs since 12.2.x, instead we include all required information about sentinel into masternode pings. With this update we add some additional information and cover everything with a signature to ensure that masternode ping wasn't maleated by some intermediary node. All messages and logic related to watchdogs are completely removed now. We also improved proposal message format, as well as proposal validation and processing, which should lower network traffic and CPU usage. Handling of triggers was also improved slightly.
SPORK_13_OLD_SUPERBLOCK_FLAG was removed now as it was unused since some time.
PrivateSend improvements
PrivateSend collaterals are no longer required to be N times of the PrivateSend fee (PSF), instead any input which is greater or equal 1 PSF but less or equal 4 PSF can be used as a collateral. Inputs that are greater or equal 1 PSF but strictly less than 2 PSF will be used in collaterals with OP_RETURN outputs. Note that such inputs will be consumed completely, with no change outputs at all. This should lower number of inputs wallet would need to take care of, improve privacy by eliminating the case where user accidentally merge small non-private inputs together and also decrease global UTXO set size.
It might feel that thanks to this change mixing fees are going to be slightly higher on average if have lots of such small inputs. However, you need to keep in mind that creating new PrivateSend collaterals cost some fee too and since such small inputs were not used at all you'd need more txes to create such collaterals. So in general, we believe average mixing fees should stay mostly the same.
There are also some other minor fixes which should also slightly improve mixing process.
Additional indexes cover P2PK now
Additional indexes like addressindex etc. process P2PK outputs correctly now. Note, that these indexes will not be re-built automatically on wallet update, you must reindex manually to update indexes with P2PK outputs.
Support for pruned nodes in Lite Mode
It is now possible to run a pruned node which stores only some recent blocks and not the whole blockchain. However this option is only available in so called Lite Mode. In this mode, Dash specific features are disabled, meaning that such nodes won't fully validate the blockchain (masternode payments and superblocks). PrivateSend and InstantSend functions are also disabled on such nodes. Such nodes are comparable to SPV-like nodes in terms of security and validation - it relies a lot on surrounding nodes, so please keep this in mind if you decide to use it for something.
Default maximum block size
We've changed the default maximum block size to 2MB. Such blocks were already allowed before, but the default setting for the maximum block size (which only affects miners) was kept in place until this version.
RPC changes
There are a few changes in existing RPC interfaces in this release:
gobject count,masternode countandmasternode listwill now by default return JSON formatted output; If you rely on the old output format, you can still specify an additional parameter for backwards compatibility (allforcountandstatusforlist);masternodelisthas a few new modes:daemon,json,sentinel;debugrpc now requires categories to be separated via+, not,like before (e.g.dash+net);getchaintipsnow shows the block fork occurred inforkpointfield;getrawmempool's has InstantSend-related info (instantsendandinstantlock);getgovernanceinfohas new fieldsentinelpingmaxseconds;getwalletinfonow shows PrivateSend balance inprivatesend_balancefield;sendrawtransactionno longer bypasses transaction policy limits by default.dumphdinfoshould throw an error when wallet isn't HD now
There is also a new RPC command listaddressbalances.
You can read about RPC changes brought by backporting from Bitcoin Core in following docs:
- https://github.com/bitcoin/bitcoin/blob/master/doc/release-notes/release-notes-0.13.0.md#low-level-rpc-changes
- https://github.com/bitcoin/bitcoin/blob/master/doc/release-notes/release-notes-0.13.1.md#low-level-rpc-changes
- https://github.com/bitcoin/bitcoin/blob/master/doc/release-notes/release-notes-0.14.0.md#low-level-rpc-changes
Command-line options
New cmd-line options:
- introduced in Dash Core 0.12.3.1:
allowprivatenet,bip9params,sporkaddr,devnet; - backported from Bitcoin Core 0.13/0.14:
blockreconstructionextratxn,maxtimeadjustment,maxtipage,incrementalrelayfee,dustrelayfee,blockmintxfee.
See Help -> Command-line options in Qt wallet or dashd --help for more info.
New Masternode Information Dialog
You can now double-click on your masternode in My Masternodes list on Masternodes tab to reveal the new Masternode Information dialog. It will show you some basic information as well as software versions reported by the masternode. There is also a QR code now which encodes corresponding masternode private key (the one you set with mnprivkey during MN setup and NOT the one that controls the 1000 DASH collateral) which should make the process of pairing with mobile software allowing you to vote with your masternode a bit easier (this software is still in development).
Testnet fixes
While we've been in release preparation, a miner used his ASICs on testnet. This resulted in too many blocks being mined in a too short time. It revealed a few corner-case bugs in validation and synchronisation rules which we have fixed now. We've also backported a special testnet rule for our difficulty adjustment algorithm that allows to mine a low difficulty block on testnet when the last block is older than 5 minutes. This and the other fixes should stabilize our testnet in case of future ASIC uses on testnet.
Using masternode lists for initial peers discovery
We now use a recent masternode list to feed the hardcoded seed nodes list in Dash Core. This list was previously unmaintained as we fully relied on DNS based discovery on startup. DNS discovery is still used as the main discovery method, but the hardcoded seed list should now be able to serve as a proper backup in case DNS fails for some reason.
Lots of backports, refactoring and bug fixes
We backported many performance improvements and refactoring from Bitcoin Core and aligned most of our codebase with version 0.14. Most notable ones besides various performance and stability improvements probably are Compact Block support (BIP 152), Mining transaction selection ("Child Pays For Parent"), Null dummy soft fork (BIP 147, without SegWit), Nested RPC Commands in Debug Console and Support for JSON-RPC Named Arguments.
You can read more about all changes in Bitcoin Core 0.13 and 0.14 in following documents:
- https://github.com/bitcoin/bitcoin/blob/master/doc/release-notes/release-notes-0.13.0.md "release-notes-0.13.0.md";
- https://github.com/bitcoin/bitcoin/blob/master/doc/release-notes/release-notes-0.13.1.md "release-notes-0.13.1.md";
- https://github.com/bitcoin/bitcoin/blob/master/doc/release-notes/release-notes-0.13.2.md "release-notes-0.13.2.md";
- https://github.com/bitcoin/bitcoin/blob/master/doc/release-notes/release-notes-0.14.0.md "release-notes-0.14.0.md";
- https://github.com/bitcoin/bitcoin/blob/master/doc/release-notes/release-notes-0.14.1.md "release-notes-0.14.1.md";
- https://github.com/bitcoin/bitcoin/blob/master/doc/release-notes/release-notes-0.14.2.md "release-notes-0.14.2.md".
Note that some features were already backported earlier (per-UTXO fix, -assumevalid, GUI overlay etc.) and some were not backported at all (SegWit and feefilter, you can read more about why we did so here and here). The alert system was also kept in place for now. We are going to continue backporting the most notable fixes and improvements from Bitcoin Core versions 0.15 and 0.16 in future releases.
A lot of refactoring, code cleanups and other small fixes were done in this release again. We are going to continue making code more reliable and easier to review in future releases as well.
0.12.3.1 Change log
See detailed change log below.
Governance:
6c79c348eDrop "MAY, 2018" clause for proposal validation on mainnet (#2101)6079b860eDrop trigger objects when triggers are deleted or failed to be created (#2098)2583e1963Test: Add few valid/invalid proposals (internationalization) (#2044)25eb6d7b3clean up governance vote code (#2042)a0874b72aValidate data size for proposals only (#2004)15fac7c7eValidate proposals for expiration (#2003)a3bcc4307Refactor governance (#1993)04a23bf0cFix the bug in CGovernanceObject::ProcessVote() (#1989)b0868093bsimplify gobject JSON format, remove unused fields (#1902)1dda9fe6fCProposalValidator refactoring and follow up fixes (#1956)89380b4c9Drop watchdogs, replace them with sentinel pings (#1949)e71cb3861Store CGovernanceVote hash in memory instead of recalculating it via GetHash() every time (#1946)580c4884cFix trigger execution and expiration (#1920)0670695feMove prev/next sb height logic from rpc to CSuperblock::GetNearestSuperblocksHeights (#1919)741fcbc90Remove excessive custom validation in CProposalValidator::ValidatePaymentAddress (#1917)354aac8d1rename nEpochStart variable and adjust comments (#1915)8ea1bd0f5remove unused method GetObjectSubtype (#1914)8a387ee09Drop SPORK_13_OLD_SUPERBLOCK_FLAG and check superblock start hash (#1872)
InstantSend:
8c2d16f5fLimit IS quorums by updated MNs only (#2107)ef85d5144Comment updates - InstantSend (#2062)c0a109998Fix instantsend in testnet and regtest (#2016)2f1661678Locked txes should not expire until mined and have sufficient confirmations (#2011)846f1d217Avoid processing tx lock request twice in the wallet it was sent from (#2007)c0c998da3Fix CInstantSend::GetTxLockRequest() (#2006)7d5223b5eNetwork-specific thresholds for required confirmations (IS) (#1962)2c04504f1Refactor IS votes processing (#1951)
PrivateSend:
0d5426343Fix an edge case in PrepareDenominate (#2138)8e129877aPartially revert 1922 (#2108)fcac40ab4RPC: fix wallet lock check inprivatesend start(#2102)dbbedc031Fix JoinExistingQueue bug (#2100)7ac4b972aRequire all participants to submit equal number of inputs (#2075)d1bf615f3No POOL_STATE_ERROR or POOL_STATE_SUCCESS on masternodes (#2009)d03adb7c3Check if in masternode mode first and only then do the job (or not) (#2008)ddff32b96Fix TransactionRecord::PrivateSendMakeCollaterals tx type (#1996)4f978a263Drop Nx requirements for PS collaterals (#1995)a44f48743Allow data outputs in PS collaterals (#1984)ef9a9f2d6Fix unlocking error on "Start Mixing" (#1941)0bd8c8e43Refactor: vecTxIn -> vecOutPoints for CompactTallyItem (#1932)d7f55d508Switch nTimeLastSuccessfulStep from GetTimeMillis() to GetTime() (#1923)204b1fe99Drop unnecessary AcceptToMemoryPool in PS (and corresponding cs-main locks), just relay what we have (#1922)271c249e1Skip next mn payments winners when selecting a MN to mix on (#1921)ca89c7b87[Trivial] Update PrivateSend denominations in comments / typo fixes (#1910)b1817dd93Introduce CDarksendAccept class (for DSACCEPT messages) (#1875)d69ad9d61Skip existing masternode conections on mixing (#1833)1d620d1f9Fix calls to AcceptToMemoryPool in PS submodules (#1823)
Network:
fda74b4a8Use correct protocol when serializing messages in reply togetdata(#2157)6bf389afbDon't drop mnb-s for outdated MNs (#2131)c60079b59ThreadOpenMasternodeConnections should process only one mn at a time (#2080)a648d6effDrop delayed headers logic and fix duplicate initial headers sync by handling block inv correctly (#2032)99085c5b6swap devnet magic bytes around (#2028)a37dbd6d2Fix netfulfilledman usage (#2033)08033ffe4Reject Dash-specific messages from obsolete peers (#1983)43671a39dDeprecate nMnCount in mnget (#1942)451f7f071Fix issues with mnp, mnw and dsq signatures via new spork (SPORK_6_NEW_SIGS) (#1936)048062641Force masternodes to have listen=1 and maxconnections to be at least DEFAULT_MAX_PEER_CONNECTIONS (#1935)aadec3735Change format of gobject, store/transmit vchData instead of hex-encoded string of a string (#1934)ed712eb81Fix nDelayGetHeadersTime (int64_t max == never delay) (#1916)f35b5979aRefactor CGovernanceManager::Sync (split in two) (#1930)b5046d59cDseg fixes (#1929)312088b56Fix connectivity check in CActiveMasternode::ManageStateInitial (#1918)8f2c1998dRename vBlockHashesFromINV to vDelayedGetHeaders (#1909)4719ec477Remove some locking in net.h/net.cpp (#1905)a6ba82ac9Use masternode list to generate hardcoded seeds (#1892)1b1a440f4Do not send dash-specific requests to masternodes before we are fully connected (#1882)1ca270ed8No need for msgMakerInitProto for sporks because we loop by fully connected nodes only now (#1877)b84afb251Allow to filter for fully connected nodes when calling CopyNodeVector (#1864)532b9fa3dUse OpenNetworkConnection instead of calling ConnectNode directly in Dash code (#1857)3aad9d908Fix logging in PushInventory (#1847)81fb931fbDon't delay GETHEADERS when no blocks have arrived yet in devnet (#1807)
Mining:
ff93dd613Check devnet genesis block (#2057)1dbf5a0f6Fix transaction/block versions for devnet genesis blocks (#2056)880cbf43bBackport fPowAllowMinDifficultyBlocks rule to DarkGravityWave (#2027)27dfed424Bump default max block size from 750k to 2MB (#2023)79183f630Add tests for GetBlockSubsidy algorithm (#2022)
Wallet:
0a71c693eRemove explicit wallet lock in MasternodeList::StartAll() (#2106)0de79d70bDo not create oversized transactions (bad-txns-oversize) (#2103)0260821f8fix SelectCoinsByDenominations (#2074)b7bd96e2bClarify the warning displayed when encrypting HD wallet (#2002)4930bb9f5Don't hold cs_storage in CKeyHolderStorage while calling functions which might lock cs_wallet (#2000)4d442376eLimit the scope of cs_wallet lock in CPrivateSendClient::PrepareDenominate() (#1997)1d32d1c32Add missing includes required for compilation with –disable-wallet flag (#1991)3f0c8723eSlightly refactor AutoBackupWallet (#1927)9965d51bbAvoid reference leakage in CKeyHolderStorage::AddKey (#1840)c532be1c0Protect CKeyHolderStorage via mutex (#1834)144850657Switch KeePassHttp integration to new AES lib, add tests and a note about KeePassHttp security (#1818)fa2549986Swap iterations and fUseInstantSend parameters in ApproximateBestSubset (#1819)
RPC:
700b7ceb7RPC: dumphdinfo should throw an error when wallet isn't HD (#2134)5669fc880Fix typos and rpc help text (#2120)806d7f049Fix rpc tests broken by 2110 (#2118)8d8fdb433sendrawtransaction no longer bypasses transaction policy limits by default (#2110)6ab1fd763RPC: Add description for InstantSend-related fields of mempool entry (#2050)138441eb8Addforkpointtogetchaintips(#2039)9b17f2b9cConvertgobject countoutput to json (by default) (#1994)4b128b1b9Fix listaddressbalances (#1987)d115efacb[RPC] Few additions to masternodelist (#1971)9451782a0RPC: Addlistaddressbalances(#1972)bab543f3eVarious RPC fixes (#1958)151152b98rpc - Update getaddednodeinfo help to remove dummy argument (#1947)3c44dde2eReturn JSON object for masternode count (by default but still support old modes for now) (#1900)4bc4a7dacFixdebugrpc (#1897)063bc5542Fixmasternode list(#1893)5a5f61872Shorten MN outpoint output from getvotes (#1871)86d33b276Remove double registration of "privatesend" RPC (#1853)c2de362b9Actually honor fMiningRequiresPeers in getblocktemplate (#1844)1cffb8a7eInclude p2pk into addressindex (#1839)
GUI:
7ab5b4a28Update/optimize images (#2147)82805a6c6swap out old logo for T&C logo in Qt GUI (#2081)e9f63073dWarn when more than 50% of masternodes are using newer version (#1963)653600352Draw text on top of everything else in TrafficGraphWidget (#1944)118eeded6[GUI] Create QR-code for Masternode private key (#1970)9f2467af8Hide autocompleter on Enter/Return key (#1898)e30009c31Fix qt and fontconfig depends #1884
Docs:
a80ef0423Update release notes (#2155)5e1149a65Update release notes (#2142)d46dc0f56Update release notes (#2135)d076ad4ceUpdate release notes and staging tree in README (#2116)ca2eae6e612.3 release notes draft (#2045)faeb4480aUpdate manpages with ./contrib/devtools/gen-manpages.sh (#2088)4148b8200Release notes cleanup (#2034)d2c46a6a3Update protocol-documentation.md (#1964)4db8483d4[Docs] Doxyfile Project version update (#1938)6e022c57bRemove src/drafted folder (#1907)0318c76baUpdate links and references to current communication channels (#1906)e23861c0e[Trivial] RPC Typos / markdown formatting (#1830)3dc62106b[Docs] Doxygen config update (#1796)
Other fixes and improvements:
4dbde218bFix p2pkh tests asserts (#2153)26c891f67Fix block value/payee validation in lite mode (#2148)9af9d57b4Release 0.12.3 (#2145)8e6364694Bump SERIALIZATION_VERSION_STRINGs (#2136)641070521Fix 2 small issues in sporks module (#2133)97b9b4fedBump nMinimumChainWork, defaultAssumeValid and checkpoints (#2130)1c9917e22Fix CVE-2018-12356 by hardening the regex (#2126)b7c326115Do not create mnb until sync is finished (#2122)b98643c27Split sentinel expiration in CMasternode::Check() in two parts (timeout and version) (#2121)836e10471Bump proto to 70210 (#2109)23ba94b37Bump remaining min protocols (#2097)9299a84b1Bump few consts (#2096)7b43720f0Fix copying of final binaries into dashcore-binaries (#2090)cc593615eBump copyright year to 2018 (#2087)2129ee4d8Add docker support when doing Gitian builds (#2084)6a1456ef4Update gitian key for codablock (#2085)ab96a6af6Update gitian keys, script and doc (#2082)5d057cf66Add string_cast benchmark (#2073)cf71f5767Fix potential DoS vector for masternode payments (#2071)febdc2116Fixnllocale alias (#2061)1264a5577Fix spork signature check for new nodes after SPORK_6_NEW_SIGS is switched to ON (#2060)41680f4d9small cleanup in a few places (#2058)741b94875Translations201804 (#2012)8e24b087breplace boost iterators in dash-specific code (#2048)7719b7ec2Update BIP147 deployment times, nMinimumChainWork and defaultAssumeValid (#2030)b07503f01Some cleanup (mostly trivial) (#2038)f8e5c5d56Simplify spork defaults by using a map (#2037)6dd8304a5Remove duplication of "class CBlockIndex;" (#2036)4ea790377Dashify lib names (#2035)53093c65bRun tests in mocked time (#2031)f7b9aae27Correctly update pindexBestHeader and pindexBestInvalid in InvalidateBlock (#2029)8b09e779bBump testnet checkpoint and nMinimumChainWork/defaultAssumeValid params (#2026)eecc69223Fix a very ancient bug from mid 2015 (#2021)72a225b9bFew fixes for lite mode (#2014)c7e9ea9fbAvoid repeating the full scan in CMasternodeMan::UpdateLastPaid() on non-MNs (#1985)f28a58e0aRefactor and fix restart (#1999)7248700b3Add missing cs_main locks (#1998)9e98c856fA pack of small fixes (#1992)19ea1a791Use operator[] instead of emplace in CMasternodePayments::AddPaymentVote (#1980)ca3655f49Fix some (potential dead)locks (#1977)2a7e6861dInclude "clientversion.h" in rpc/masternode.cpp (#1979)ef1a86c3eAdd dummy CMakeLists.txt file to make development with CLion easier (#1978)a9d8e2c5d[Init] Avoid segfault when called with -enableinstantsend=0 (#1976)3200eae9bDon't use short version of 'tinyformat/fmt' namespace in util.h (#1975)97a07cbc4RefactorCMasternodePayment*(#1974)4ffa7bac0Introduce DIP0001Height (#1973)611879aa6Use spork addresses instead of raw keys and allow changing them on startup (#1969)9ef38c6d7Switch CNetFulfilledRequestManager and CMasternodeMan maps/funcs to CService (#1967)929c1584aRename CheckPreviousBlockVotes to CheckBlockVotes and adjust its log output a bit (#1965)bf0854e58Swapexpiredandsentinel_expiredstates in order (#1961)9876207ceMultiple devnet fixes (#1960)e37b6c7daFix BIP147 deployment threshold parameter (#1955)106276a3eAdjust/fix log output (#1954)0abd1894eCall CheckMnbAndUpdateMasternodeList when starting MN (#1945)e23f61822Make TrafficGraphDataTests more general (#1943)5b1c4d8a1Few (mostly trivial) cleanups and fixes (#1940)99273f63aUse SPORK_6_NEW_SIGS to switch from signing string messages to hashes (#1937)c65613350Switch masternode id in Dash data structures from CTxIn to COutPoint (#1933)2ea6f7d82Useoverridekeyword for overriden class member functions (#1644)d5ef77ba9Refactor: use constant refs andRetsuffix (#1928)2e04864b2Replace boost::lexical_cast<int> with atoi (#1926)0f4d963baAdd DSHA256 and X11 benchmarks, refactor names of other algo benchmarks to group them together (#1925)4528c735fReplace some instantsend/privatesend magic numbers with constants (#1924)120893c63Update timeLastMempoolReq when responding to MEMPOOL request (#1904)bb20b4e7bFew cleanups after backporting (#1903)a7fa07a30Drop BOOST_FOREACH and use references in loops (const ref where applicable, Dash code only) (#1899)e0b6988a4Various fixes and refactoring for Cache*Map classes (#1896)99b2789a7Fix DeserializeAndCheckBlockTest benchmark and store hashDevnetGenesisBlock inconsensus(#1888)88646bd0dRenamefMasterNodetofMasternodeModeto clarify its meaning and to avoid confusion withCNode::fMasternode(#1874)f6d98422cSilence ratecheck_test (#1873)9cee4193bSeparate .h generation from .json/.raw for different modules (#1870)83957f2d3Fix alertTests.raw.h (again) (#1869)c13afaad8Fix alertTests.raw.h generation (#1868)a46bf120bDon't directly call "wine test_dash.exe" and let "make check" handle it (#1841)e805f790eAutomatically build and push docker image to docker.io/dashpay/dashd-develop (#1809)d9058aa04Increase travis timeout for "wine src/test/test_dash.exe" call (#1820)10786fe8eUse travis_wait for "wine test_dash.exe" call to fix timeouts (#1812)4bce3bf8bFix crash on exit when -createwalletbackups=0 (#1810)cd9c6994cImplement named devnets (#1791)ebbd26a05Drop IsInputAssociatedWithPubkey and optimize CheckOutpoint (#1783)
Backports and related fixes:
- See commit list https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.12.3-backports.md "here"
Credits
Thanks to everyone who directly contributed to this release:
- Alexander Block
- Chris Adam
- Codarren Velvindron
- crowning-
- gladcow
- InhumanPerfection
- Kamil Woźniak
- Nathan Marley
- Oleg Girko
- PaulieD
- Semen Martynov
- Spencer Lievens
- thephez
- UdjinM6
As well as Bitcoin Core Developers and everyone who 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:
- https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.12.2.3.md "v0.12.2.3" released Jan/12/2018
- https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.12.2.2.md "v0.12.2.2" released Dec/17/2017
- https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.12.2.md "v0.12.2" released Nov/08/2017
- https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.12.1.md "v0.12.1" released Feb/06/2017
- https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.12.0.md "v0.12.0" released Jun/15/2015
- https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.11.2.md "v0.11.2" released Mar/04/2015
- https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.11.1.md "v0.11.1" released Feb/10/2015
- https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.11.0.md "v0.11.0" released Jan/15/2015
- https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.10.0.md "v0.10.x" released Sep/25/2014
- https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.9.0.md "v0.9.x" released Mar/13/2014

