-`gobject count`, `masternode count` and `masternode list` will 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 (`all` for `count` and `status` for `list`);
-`masternodelist` has a few new modes: `daemon`, `json`, `sentinel`;
-`debug` rpc now requires categories to be separated via `+`, not `,` like before (e.g. `dash+net`);
-`getchaintips` now shows the block fork occurred in `forkpoint` field;
-`getrawmempool`'s has InstantSend-related info (`instantsend` and `instantlock`);
-`getgovernanceinfo` has new field `sentinelpingmaxseconds`;
-`getwalletinfo` now shows PrivateSend balance in `privatesend_balance` field;
-`sendrawtransaction` no longer bypasses transaction policy limits by default.
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)](https://github.com/bitcoin/bitcoin/blob/master/doc/release-notes/release-notes-0.13.0.md#compact-block-support-bip-152),
[Mining transaction selection ("Child Pays For Parent")](https://github.com/bitcoin/bitcoin/blob/master/doc/release-notes/release-notes-0.13.0.md#mining-transaction-selection-child-pays-for-parent),
[Null dummy soft fork (BIP 147, without SegWit)](https://github.com/bitcoin/bitcoin/blob/master/doc/release-notes/release-notes-0.13.1.md#null-dummy-soft-fork),
[Nested RPC Commands in Debug Console](https://github.com/bitcoin/bitcoin/blob/master/doc/release-notes/release-notes-0.14.0.md#nested-rpc-commands-in-debug-console) and
[Support for JSON-RPC Named Arguments](https://github.com/bitcoin/bitcoin/blob/master/doc/release-notes/release-notes-0.14.0.md#support-for-json-rpc-named-arguments).
You can read more about all changes in Bitcoin Core 0.13 and 0.14 in following documents:
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](https://blog.dash.org/segwit-lighting-rbf-in-dash-9536868ca861) and [here](https://github.com/dashpay/dash/pull/2025)).
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 Change log
=================
See detailed [change log](https://github.com/dashpay/dash/compare/v0.12.2.3...dashpay:v0.12.3) below.
- [`04a23bf0c`](https://github.com/dashpay/dash/commit/04a23bf0c) Fix the bug in CGovernanceObject::ProcessVote() (#1989)
- [`b0868093b`](https://github.com/dashpay/dash/commit/b0868093b) simplify gobject JSON format, remove unused fields (#1902)
- [`1dda9fe6f`](https://github.com/dashpay/dash/commit/1dda9fe6f) CProposalValidator refactoring and follow up fixes (#1956)
- [`89380b4c9`](https://github.com/dashpay/dash/commit/89380b4c9) Drop watchdogs, replace them with sentinel pings (#1949)
- [`e71cb3861`](https://github.com/dashpay/dash/commit/e71cb3861) Store CGovernanceVote hash in memory instead of recalculating it via GetHash() every time (#1946)
- [`580c4884c`](https://github.com/dashpay/dash/commit/580c4884c) Fix trigger execution and expiration (#1920)
- [`0670695fe`](https://github.com/dashpay/dash/commit/0670695fe) Move prev/next sb height logic from rpc to CSuperblock::GetNearestSuperblocksHeights (#1919)
- [`741fcbc90`](https://github.com/dashpay/dash/commit/741fcbc90) Remove excessive custom validation in CProposalValidator::ValidatePaymentAddress (#1917)
- [`354aac8d1`](https://github.com/dashpay/dash/commit/354aac8d1) rename nEpochStart variable and adjust comments (#1915)
- [`7ac4b972a`](https://github.com/dashpay/dash/commit/7ac4b972a) Require all participants to submit equal number of inputs (#2075)
- [`d1bf615f3`](https://github.com/dashpay/dash/commit/d1bf615f3) No POOL_STATE_ERROR or POOL_STATE_SUCCESS on masternodes (#2009)
- [`d03adb7c3`](https://github.com/dashpay/dash/commit/d03adb7c3) Check if in masternode mode first and only then do the job (or not) (#2008)
- [`ddff32b96`](https://github.com/dashpay/dash/commit/ddff32b96) Fix TransactionRecord::PrivateSendMakeCollaterals tx type (#1996)
- [`4f978a263`](https://github.com/dashpay/dash/commit/4f978a263) Drop Nx requirements for PS collaterals (#1995)
- [`a44f48743`](https://github.com/dashpay/dash/commit/a44f48743) Allow data outputs in PS collaterals (#1984)
- [`ef9a9f2d6`](https://github.com/dashpay/dash/commit/ef9a9f2d6) Fix unlocking error on "Start Mixing" (#1941)
- [`0bd8c8e43`](https://github.com/dashpay/dash/commit/0bd8c8e43) Refactor: vecTxIn -> vecOutPoints for CompactTallyItem (#1932)
- [`d7f55d508`](https://github.com/dashpay/dash/commit/d7f55d508) Switch nTimeLastSuccessfulStep from GetTimeMillis() to GetTime() (#1923)
- [`204b1fe99`](https://github.com/dashpay/dash/commit/204b1fe99) Drop unnecessary AcceptToMemoryPool in PS (and corresponding cs-main locks), just relay what we have (#1922)
- [`271c249e1`](https://github.com/dashpay/dash/commit/271c249e1) Skip next mn payments winners when selecting a MN to mix on (#1921)
- [`08033ffe4`](https://github.com/dashpay/dash/commit/08033ffe4) Reject Dash-specific messages from obsolete peers (#1983)
- [`43671a39d`](https://github.com/dashpay/dash/commit/43671a39d) Deprecate nMnCount in mnget (#1942)
- [`451f7f071`](https://github.com/dashpay/dash/commit/451f7f071) Fix issues with mnp, mnw and dsq signatures via new spork (SPORK_6_NEW_SIGS) (#1936)
- [`048062641`](https://github.com/dashpay/dash/commit/048062641) Force masternodes to have listen=1 and maxconnections to be at least DEFAULT_MAX_PEER_CONNECTIONS (#1935)
- [`aadec3735`](https://github.com/dashpay/dash/commit/aadec3735) Change format of gobject, store/transmit vchData instead of hex-encoded string of a string (#1934)
- [`ed712eb81`](https://github.com/dashpay/dash/commit/ed712eb81) Fix nDelayGetHeadersTime (int64_t max == never delay) (#1916)
- [`f35b5979a`](https://github.com/dashpay/dash/commit/f35b5979a) Refactor CGovernanceManager::Sync (split in two) (#1930)
- [`312088b56`](https://github.com/dashpay/dash/commit/312088b56) Fix connectivity check in CActiveMasternode::ManageStateInitial (#1918)
- [`8f2c1998d`](https://github.com/dashpay/dash/commit/8f2c1998d) Rename vBlockHashesFromINV to vDelayedGetHeaders (#1909)
- [`4719ec477`](https://github.com/dashpay/dash/commit/4719ec477) Remove some locking in net.h/net.cpp (#1905)
- [`a6ba82ac9`](https://github.com/dashpay/dash/commit/a6ba82ac9) Use masternode list to generate hardcoded seeds (#1892)
- [`1b1a440f4`](https://github.com/dashpay/dash/commit/1b1a440f4) Do not send dash-specific requests to masternodes before we are fully connected (#1882)
- [`1ca270ed8`](https://github.com/dashpay/dash/commit/1ca270ed8) No need for msgMakerInitProto for sporks because we loop by fully connected nodes only now (#1877)
- [`b84afb251`](https://github.com/dashpay/dash/commit/b84afb251) Allow to filter for fully connected nodes when calling CopyNodeVector (#1864)
- [`532b9fa3d`](https://github.com/dashpay/dash/commit/532b9fa3d) Use OpenNetworkConnection instead of calling ConnectNode directly in Dash code (#1857)
- [`3aad9d908`](https://github.com/dashpay/dash/commit/3aad9d908) Fix logging in PushInventory (#1847)
- [`81fb931fb`](https://github.com/dashpay/dash/commit/81fb931fb) Don't delay GETHEADERS when no blocks have arrived yet in devnet (#1807)
- [`b7bd96e2b`](https://github.com/dashpay/dash/commit/b7bd96e2b) Clarify the warning displayed when encrypting HD wallet (#2002)
- [`4930bb9f5`](https://github.com/dashpay/dash/commit/4930bb9f5) Don't hold cs_storage in CKeyHolderStorage while calling functions which might lock cs_wallet (#2000)
- [`4d442376e`](https://github.com/dashpay/dash/commit/4d442376e) Limit the scope of cs_wallet lock in CPrivateSendClient::PrepareDenominate() (#1997)
- [`1d32d1c32`](https://github.com/dashpay/dash/commit/1d32d1c32) Add missing includes required for compilation with --disable-wallet flag (#1991)
- [`9965d51bb`](https://github.com/dashpay/dash/commit/9965d51bb) Avoid reference leakage in CKeyHolderStorage::AddKey (#1840)
- [`c532be1c0`](https://github.com/dashpay/dash/commit/c532be1c0) Protect CKeyHolderStorage via mutex (#1834)
- [`144850657`](https://github.com/dashpay/dash/commit/144850657) Switch KeePassHttp integration to new AES lib, add tests and a note about KeePassHttp security (#1818)
- [`fa2549986`](https://github.com/dashpay/dash/commit/fa2549986) Swap iterations and fUseInstantSend parameters in ApproximateBestSubset (#1819)
- [`bab543f3e`](https://github.com/dashpay/dash/commit/bab543f3e) Various RPC fixes (#1958)
- [`151152b98`](https://github.com/dashpay/dash/commit/151152b98) rpc - Update getaddednodeinfo help to remove dummy argument (#1947)
- [`3c44dde2e`](https://github.com/dashpay/dash/commit/3c44dde2e) Return JSON object for masternode count (by default but still support old modes for now) (#1900)
- [`641070521`](https://github.com/dashpay/dash/commit/641070521) Fix 2 small issues in sporks module (#2133)
- [`97b9b4fed`](https://github.com/dashpay/dash/commit/97b9b4fed) Bump nMinimumChainWork, defaultAssumeValid and checkpoints (#2130)
- [`1c9917e22`](https://github.com/dashpay/dash/commit/1c9917e22) Fix CVE-2018-12356 by hardening the regex (#2126)
- [`b7c326115`](https://github.com/dashpay/dash/commit/b7c326115) Do not create mnb until sync is finished (#2122)
- [`b98643c27`](https://github.com/dashpay/dash/commit/b98643c27) Split sentinel expiration in CMasternode::Check() in two parts (timeout and version) (#2121)
- [`cf71f5767`](https://github.com/dashpay/dash/commit/cf71f5767) Fix potential DoS vector for masternode payments (#2071)
- [`febdc2116`](https://github.com/dashpay/dash/commit/febdc2116) Fix `nl` locale alias (#2061)
- [`1264a5577`](https://github.com/dashpay/dash/commit/1264a5577) Fix spork signature check for new nodes after SPORK_6_NEW_SIGS is switched to ON (#2060)
- [`41680f4d9`](https://github.com/dashpay/dash/commit/41680f4d9) small cleanup in a few places (#2058)
- [`611879aa6`](https://github.com/dashpay/dash/commit/611879aa6) Use spork addresses instead of raw keys and allow changing them on startup (#1969)
- [`9ef38c6d7`](https://github.com/dashpay/dash/commit/9ef38c6d7) Switch CNetFulfilledRequestManager and CMasternodeMan maps/funcs to CService (#1967)
- [`929c1584a`](https://github.com/dashpay/dash/commit/929c1584a) Rename CheckPreviousBlockVotes to CheckBlockVotes and adjust its log output a bit (#1965)
- [`bf0854e58`](https://github.com/dashpay/dash/commit/bf0854e58) Swap `expired` and `sentinel_expired` states in order (#1961)
- [`0abd1894e`](https://github.com/dashpay/dash/commit/0abd1894e) Call CheckMnbAndUpdateMasternodeList when starting MN (#1945)
- [`e23f61822`](https://github.com/dashpay/dash/commit/e23f61822) Make TrafficGraphDataTests more general (#1943)
- [`5b1c4d8a1`](https://github.com/dashpay/dash/commit/5b1c4d8a1) Few (mostly trivial) cleanups and fixes (#1940)
- [`99273f63a`](https://github.com/dashpay/dash/commit/99273f63a) Use SPORK_6_NEW_SIGS to switch from signing string messages to hashes (#1937)
- [`c65613350`](https://github.com/dashpay/dash/commit/c65613350) Switch masternode id in Dash data structures from CTxIn to COutPoint (#1933)
- [`2ea6f7d82`](https://github.com/dashpay/dash/commit/2ea6f7d82) Use `override` keyword for overriden class member functions (#1644)
- [`d5ef77ba9`](https://github.com/dashpay/dash/commit/d5ef77ba9) Refactor: use constant refs and `Ret` suffix (#1928)
- [`2e04864b2`](https://github.com/dashpay/dash/commit/2e04864b2) Replace boost::lexical_cast<int> with atoi (#1926)
- [`0f4d963ba`](https://github.com/dashpay/dash/commit/0f4d963ba) Add DSHA256 and X11 benchmarks, refactor names of other algo benchmarks to group them together (#1925)
- [`4528c735f`](https://github.com/dashpay/dash/commit/4528c735f) Replace some instantsend/privatesend magic numbers with constants (#1924)
- [`120893c63`](https://github.com/dashpay/dash/commit/120893c63) Update timeLastMempoolReq when responding to MEMPOOL request (#1904)
- [`bb20b4e7b`](https://github.com/dashpay/dash/commit/bb20b4e7b) Few cleanups after backporting (#1903)
- [`a7fa07a30`](https://github.com/dashpay/dash/commit/a7fa07a30) Drop BOOST_FOREACH and use references in loops (const ref where applicable, Dash code only) (#1899)
- [`e0b6988a4`](https://github.com/dashpay/dash/commit/e0b6988a4) Various fixes and refactoring for Cache*Map classes (#1896)
- [`99b2789a7`](https://github.com/dashpay/dash/commit/99b2789a7) Fix DeserializeAndCheckBlockTest benchmark and store hashDevnetGenesisBlock in `consensus` (#1888)
- [`88646bd0d`](https://github.com/dashpay/dash/commit/88646bd0d) Rename `fMasterNode` to `fMasternodeMode` to clarify its meaning and to avoid confusion with `CNode::fMasternode` (#1874)