73 KiB
Dash Core version 0.14.0.0
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). If you upgrade after DIP0003 activation and you were using version < 0.13 you will have to reindex (start with -reindex-chainstate or -reindex) to make sure your wallet has all the new data synced. Upgrading from version 0.13 should not require any additional actions.
Downgrade warning
Downgrade to a version < 0.13.0.0
Downgrading to a version smaller than 0.13 is not supported anymore as DIP2/DIP3 has activated on mainnet and testnet.
Downgrade to versions 0.13.0.0 - 0.13.3.0
Downgrading to 0.13 releases is fully supported until DIP0008 activation but is not recommended unless you have some serious issues with version 0.14.
Notable changes
DIP0004 - Coinbase Payload v2
Coinbase Payload v2 introduces new field merkleRootQuorums
which represents the merkle root of
all the hashes of the final quorum commitments of all active LLMQ sets. This allows SPV clients
to verify active LLMQ sets and use this information to further verify ChainLocks and LLMQ-based
InstantSend messages. Coinbase Payload v2 relies on DIP0008 (bit 4) activation.
DIP0008 - ChainLocks
This version introduces ChainLocks, a technology for near-instant confirmation of blocks and
finding near-instant consensus on the longest valid/accepted chain. ChainLocks leverages LLMQ
Signing Requests/Sessions to accomplish this. ChainLocks relies on DIP0008 (bit 4) activation and
SPORK_19_CHAINLOCKS_ENABLED
spork.
Read more: https://github.com/dashpay/dips/blob/master/dip-0008.md
DIP0010 - LLMQ-based InstantSend
InstantSend is a feature to allow instant confirmations of payments. It works by locking transaction inputs through masternode quorums. It has been present in Dash for a few years and been proven to work. Nevertheless, there are some limits which could theoretically be removed in the old system but doing so would have created risks in terms of scalability and security.
We introduce LLMQ-based InstantSend which is designed to be much more scalable without sacrificing security and which allows all transactions to be treated as InstantSend transactions. The old system differentiated transactions as InstantSend transactions by using the P2P message “ix” instead of “tx”. Since this distinction is not required in the new system, the P2P message “ix” will be removed after DIP0008 deployment (for now, transactions sent via "ix" message will be relayed further via "tx" message).
Read more: https://github.com/dashpay/dips/blob/master/dip-0010.md
Network
Legacy messages mnw
, mnwb
, mnget
, mnb
, mnp
, dseg
, mnv
, qdcommit
and their corresponding
inventory types (7, 10, 14, 15, 19, 22) are no longer suported.
Message version
is extended with a 256 bit field - a challenge sent to a masternode. Masternode which
received such a challenge must reply with new p2p message mnauth
directly after verack
. This mnauth
message must include a signed challenge that was previously sent via version
.
Mining
Due to changes in coinbase payload this version requires for miners to signal their readiness via
BIP9-like mechanism - by setting bit 4 of the block version to 1. Note that if your mining software
simply uses coinbase_payload
field from getblocktemplate
RPC and doesn't construct coinbase payload
manually then there should be no changes to your mining software required. We however encourage pools
and solo-miners to check their software compatibility on testnet to ensure flawless migration.
PrivateSend
The wallet will try to create and consume denoms a bit more accurately now. It will also only create a
limited number of inputs for each denominated amount to prevent bloating itself with mostly the smallest
denoms. You can control this number of inputs via new -privatesenddenoms
cmd-line option (default is 300).
InstantSend
Legacy InstantSend is going to be superseded by the newly implemented LLMQ-based one once DIP0008 (bit 4)
is active and SPORK_20_INSTANTSEND_LLMQ_BASED
spork is ON.
Sporks
There are two new sporks introduced in this version - SPORK_19_CHAINLOCKS_ENABLED
and
SPORK_20_INSTANTSEND_LLMQ_BASED
. SPORK_17_QUORUM_DKG_ENABLED
was introduced in v0.13 but was kept OFF.
It will be turned on once 80% masternodes are upgraded to v0.14 which will enable DKG and DKG-based PoSe.
QR codes
Wallet can now show QR codes for addresses in the address book, receiving addresses and addresses identified in transactions list (right click -> "Show QR-code").
RPC changes
There are a few changes in existing RPC interfaces in this release:
- for blockchain based RPC commands
instantlock
will saytrue
if the transaction was locked via LLMQ based ChainLocks (for backwards compatibility reasons) prioritisetransaction
no longer allows adjusting prioritygetgovernanceinfo
no longer hasmasternodewatchdogmaxseconds
andsentinelpingmaxseconds
fieldsmasternodelist
no longer supportsactiveseconds
,daemon
,lastseen
,protocol
,keyid
,rank
andsentinel
modes, new mode -pubkeyoperator
masternode count
no longer hasps_compatible
andqualify
fields andps
andqualify
modesmasternode winner
andmasternode current
no longer haveprotocol
,lastseen
andactiveseconds
fields, new field -proTxHash
debug
supports new categories:chainlocks
,llmq
,llmq-dkg
,llmq-sigs
mnsync
no longer hasIsMasternodeListSynced
andIsWinnersListSynced
fields- various RPCs that had
instantlock
field havechainlock
(excluding mempool RPCs) andinstantlock_internal
fields now
There are also new RPC commands:
bls fromsecret
parses a BLS secret key and returns the secret/public key pairquorum
is a set of commands for quorums/LLMQs e.g.list
to show active quorums (by default, can specify differentcount
) orinfo
to shows detailed information about some specific quorum etc., seehelp quorum
Few RPC commands are no longer supported: estimatepriority
, estimatesmartpriority
,
gobject getvotes
, masternode start-*
, masternode genkey
, masternode list-conf
, masternode check
,
masternodebroadcast
, sentinelping
See help command
in rpc for more info.
ZMQ changes
Added two new messages hashchainlock
and rawchainlock
which return the hash of the chainlocked block
or the raw block itself respectively.
Command-line options
Changes in existing cmd-line options:
-bip9params
supports optionalwindow
andthreshold
values now
New cmd-line options:
-watchquorums
-privatesenddenoms
-dip3params
(regtest-only)-llmqchainlocks
(devnet-only)
Few cmd-line options are no longer supported: -limitfreerelay
, -relaypriority
, -blockprioritysize
,
-sendfreetransactions
, -mnconf
, -mnconflock
, -masternodeprivkey
See Help -> Command-line options
in Qt wallet or dashd --help
for more info.
Miscellaneous
A lot of refactoring, backports, code cleanups and other small fixes were done in this release.
0.14.0.0 Change log
See detailed set of changes.
612a90e8c
Set CLIENT_VERSION_IS_RELEASE to true (#2926)9482f77e5
Update help text via gen-manpages.sh (#2929)211a39d19
0.14 release notes draft (#2896)84162021a
Fix duplicate-instantsendnotify
invocation (#2925)38aab0c5e
Add blocks conflicting with ChainLocks to block index (#2923)394bec483
Skip processing in SyncTransaction when chain is not synced yet (#2920)c8a80b279
Set DIP0008 mainnet activation params (#2915)040abafe3
[0.14] Bump chainparams (#2910)240238b19
Fix db leaks in LLMQ db (#2914)56f31195d
Fall back to ReadBlockFromDisk when blockTxs is not filled yet (#2908)4dc5c0e9e
Bump "keepOldConnections" by one for all LLMQ types (#2909)7696a6fc8
Print inputs on which we voted and quorums used for signing (#2907)a173e6836
Implement integration tests for DKG error handling (#2905)89f6f7591
Implement zmq notifications for chainlocked blocks (#2899)66a2cdeaf
Properly handle conflicts between ChainLocks and InstantSend (#2904)b63f7dd39
Fix a crash inmasternode winners
whencount
is too large (#2902)357b7279d
Implement isolate_node/reconnect_isolated_node in tests (#2901)7fdc66dd8
Ask for locked TXs after removing conflicting TXs (#2898)5d05ab17a
Fix PrivateSend log (#2892)53827a376
Remove code for QDEBUGSTATUS propagation (#2891)783cb9ca6
Skip CheckCbTxMerkleRoots until assumeValid block (#2890)4dee7c4a2
Cache heavy parts ofCalcCbTxMerkleRoot*
(#2885)b3ed6410f
Be more accurate with denom creation/consumption (#2853)3d993ee8f
Translations v14 (#2638)fbd244dde
Bail out in few more places when blockchain is not synced yet (#2888)fd6aaae7f
Add proTxHash to masternode list rpc response (#2887)dd3977523
More "bench" log for Dash specific parts (#2884)8ffdcbf99
A bunch of mostly trivial tweaks/fixes (#2889)195100161
New LLMQ-based IS should have no legacy IS strings in UI and no legacy restrictions (#2883)7f419ae7f
Accept non-spent LLMQ IS locked outpoints from mempool in PS mixing (#2878)2652030a2
Use larger nPruneAfterSizeIn parameter for mapAlreadyAskedFor (#2882)03021fa53
Harden DIP3 activation (#2881)dcdb9dba1
Add NotifyMasternodeListChanged signal to CClientUIInterface (#2880)19a9e2f4c
Reportinstantlock: true
for transactions locked via ChainLocks (#2877)5cfceab86
Refactor IS-lock GUI notification and implement a similar one for ChainLocks (#2875)ed30db713
Ensure wallet is available and unlocked for somegovernance
andevo
RPCs (#2874)0c2fdf4da
Refactor some Dash/mixing-specific wallet functions (#2850)22ae0bc21
Archive islock hashes when removing confirmed islocks (#2872)b322b4828
Wait longer until re-requesting recovered sigs and ISLOCKs from other peers (#2871)2502aadd7
Fix infinite loop in CDBTransactionIterator::SkipDeletedAndOverwritten (#2870)cd94cbe6f
Track which TXs are not locked yet and use this info in ProcessPendingRetryLockTxs (#2869)c4549aca2
Changequorum list
behaviour to list active quorums by default (#2866)cff9f9717
Prefix all bls/quorum threads withdash-
(#2865)5e865f9c8
Bump mempool counter on each successful IS lock (#2864)a67e66143
Don't disconnect peers on MNAUTH verification failure (#2868)1d8c7226d
Fix race condition in sendheaders.py (#2862)0c54e41f2
Retry locking of child TXs in batches instead of per locked parent (#2858)fbe44761c
Don't wake up select if it was already woken up (#2863)7fe1a4a78
Also invoke WriteInstantSendLockMined when IS lock comes after the mined block (#2861)f32f9523b
Use lazy BLS signatures more often and don't always verify self-recovered sigs (#2860)5e8ae2ceb
Disable optimistic send in PushMessage by default (#2859)90b1b7196
Move processing of InstantSend locks into its own worker thread (#2857)ae78360e5
Add cache to CQuorumManager::ScanQuorums (#2856)241f76f9b
Collection of minor performance optimizations (#2855)82a47f543
Allow testing ChainLocks enforcement with spork19 == 1 (#2854)e67618ac5
Clean up a few GUI related items (#2846)225c3898d
Don't skip "safe TX" check when ChainLocks are not enforced yet (#2851)27b2cd2cc
Skip required services and port checks when outgoing connections is a MN (#2847)aeb4c60c8
Reimplement CMNAuth::NotifyMasternodeListChanged to work with new interfacefa90c0204
Also call NotifyMasternodeListChanged when MNs have been updateddb781b32d
Pass oldList and diff instead of newList into NotifyMasternodeListChangedb0260e970
Do not maintain CService in masternodeQuorumNodes60788ce32
Connect to most recently updated address in ThreadOpenMasternodeConnections93b1b3d73
Fix shadowing of "addr"5bebdda71
Add GetValidMNByService to CDeterministicMNList5d94d6bdf
Remove unused CConnman::ForEachQuorumMember1ba8694cd
Various fixes for RemoveInvalidVotes() (#2845)b5bc7c9da
Call HandleFullyConfirmedBlock when ChainLocks are enabled but not enforced (#2844)9fa09b974
CBLSWrapper::SetHexStr() should not accept non-hex strings (#2843)0f0d8eaf4
Add RPC for BLS secret to public key (#2841)6982d9854
Ignore cache files on reindex (#2840)f8bedba7c
Don't retry locks when new IS system is disabled (#2837)92feade81
Remove unused forward declaration (#2838)206e5a1b4
Use big endian inversed height in CInstantSendDb4b9f6cd3a
Use big endian inversed height in BuildInversedHeightKey53656b3e8
Compare CDataStream internal vector with unsigned comparisondd21d046f
Avoid unnecessary calls to parentIt->GetKeyd34ec7866
Update wallet transactions when confirmed IS locks are removedb897505f8
Remove the need for maintaining the last ChainLocked block in the DB8e7083cb8
Use db.RemoveConfirmedISLocks() in NotifyChainLock to remove confirmed locks4577438e8
Implement RemoveConfirmedInstantSendLocks to prune confirmed IS locks from DBd6e775851
Keep track of when IS locks were mined0a6416e06
Wipe llmq db on reindex (#2835)4af5ea8a7
Remove netfulfilledman.h duplicate (#2834)208406df7
Re-introduce nInstantSendKeepLock check for LLMQ-based IS when spork19 is OFF (#2829)7d765a0fc
Track best block to later know if a DB upgrade is needed1a25c2084
Apply suggestions from code review282cb697a
Use version 2 CCbTx in create_coinbase to fix test failuresadc101a11
Implement quorum commitment merkle root tests in dip4-coinbasemerkleroots.py40ad06e77
Return the fresh quorum hash from mine_quorum17b9318a0
Mine SIGN_HEIGHT_OFFSET additional blocks after the quorum commitment5e832e2fa
Implement support for CbTx version 2 (with quorum merkle root)b1b41f02a
Fix a crash in mininode.py when inventory type is unknown44a3b9c90
Don't use pindex->GetBlockHash() in ProcessCommitmentf9dbe3ed5
Track in which block a quorum commitment was minedba459663b
Add deletedQuorums and newQuorums to CSimplifiedMNListEntry8f7929bed
Implement and enforce quorum commitment merkle roots in coinbases07620746a
Implement GetMined(AndActive)CommitmentsUntilBlock and use it in ScanQuorumsd5250a333
Track at which height a quorum commitment was mined806948f90
Store the full commitment in CQuorumb67f6a0dc
Implement CDBTransactionIterator6d1599bc6
Change CDBTransaction to compare keys by their serialized form5482083eb
Support passing CDataStream as key into CDBWrapper/CDBBatch/CDBIteratorc23dfaf57
Update qa/rpc-tests/dip4-coinbasemerkleroots.py9f2e5d085
Use FromHex to deserialize block header999848432
Implement dip4-coinbasemerkleroots.py integration testsade5760a9
Allow registering MNs without actually starting themef6b6a1e6
Implement support for GETMNLISTD and MNLISTDIFF P2P message in mininode.py585b9c281
Make CBlock.get_merkle_root static1e0bdbc9b
Implement CPartialMerkleTree and CMerkleBlock in mininode.pyd8778f555
Implement CService in mininode.py02480402b
Implement deser_dyn_bitset and ser_dyn_bitset in mininode.pyb0850fad0
Do not skip pushing of vMatch and vHashes in CMerkleBlock (#2826)58589fb50
Trivial: Fix a couple typos (#2818)992922c49
Specify DIP3 enforcement block height/hash for mainnet paramsa370bbfe3
Update immer library to current master (0a718d2d76bab6ebdcf43de943bd6c7d2dbfe2f9) (#2821)9f04855ae
Fix blsWorker (#2820)377dd3b82
There can be no two votes which differ by the outcome only (#2819)a87909ec3
Keep the most recent gobject votes only (#2815)010752d4e
Set fAllowMultiplePorts to true for testnet (#2817)74d999e56
Remove watchdogs from existence (#2816)bfc288afb
Update getblock rpc help text (#2814)aeba4afce
Fix vote ratecheck (#2813)ad7defba9
Drop all kind of invalid votes from all types of gobjects (#2812)e75760fa7
Update "listtransactions" and "listsinceblock" RPC help (#2811)8987a6c3e
Update "debug" rpc help text (#2810)4b4234f39
Refactor: fix layer violation for LLMQ based IS in UI (#2808)614cb6c2e
Fix getgovernanceinfo rpc help text (#2809)39ba45f3c
Show chainlocked txes as fully confirmed (#2807)f87035d14
Fix qt tests and actually run them (#2801)162acc5a0
Fix potential deadlock in LoadWallet() (#2806)81eeff1c5
Fix devnet genesis check in InitBlockIndex() (#2805)4d8ef3512
Reset local/static cache in LogAcceptCategory when categories change (#2804)4a79f7a70
Few trivial cleanups (#2803)5057ad511
Drop DBG macros uses from governance modules (#2802)29a9e24b4
Prepare Dash-related stuff before starting ThreadImport (#2800)8f280f346
Split "llmq" debug category into "llmq", "llmq-dkg" and "llmq-sigs" (#2799)15c720dd4
Stop tracking interested/participating nodes and send/announce to MNAUTH peers (#2798)f20620b0a
Also handle MNAUTH on non-masternodes (#2797)b18f8cb77
Implement MNAUTH and allow unlimited inbound MN connections (#2790)aae985746
Update log categories in help message and in decomposition of "dash" category (#2792)7b76e7abb
Implement BIP9 style deployment for DIP8/ChainLocks and fix a bug with late headers (#2793)3ead8cd85
Fix potential travis failures due to network failures (#2795)02db06658
Fix loop in CLLMQUtils::GetQuorumConnections to add at least 2 connections (#2796)071b60ded
Bump MAX_OUTBOUND_MASTERNODE_CONNECTIONS to 250 on masternodes (#2791)0ed5ae05a
Fix bug in GetNextMasternodeForPayment (#2789)7135f01a1
Fix revoke reason check for ProUpRevTx (#2787)658ce9eff
Apply Bloom filters to DIP2 transactions extra payload (#2786)a1e4ac21f
Disable logging of libevent debug messages (#2794)9a1362abd
Introduce SENDDSQUEUE to indicate that a node is interested in DSQ messages (#2785)9e70209e4
Honor bloom filters when announcing LLMQ based IS locks (#2784)12274e578
Introduce "qsendrecsigs" to indicate that plain recovered sigs should be sent (#2783)60a91848a
Skip mempool.dat when wallet is starting in "zap" mode (#2782)b87821047
Make LLMQ/InstantSend/ChainLocks code less spammy (#2781)591b0185c
Bump proto version and only send LLMQ related messages to v14 nodes (#2780)c3602372c
Implement retroactive IS locking of transactions first seen in blocks instead of mempool (#2770)9df6acdc2
Disable in-wallet miner for win/macos Travis/Gitian builds (#2778)5299d3933
Multiple refactorings/fixes for LLMQ bases InstantSend and ChainLocks (#2779)a5d2edbe0
Relay spork after updating internal spork maps (#2777)e52763d21
Refactor and fix instantsend tests/utils (#2776)25205fd46
RPC - Remove P2PKH message from protx help (#2773)a69a5cf4a
Use smaller (3 out of 5) quorums for regtest/Travis (#2774)396ebc2dc
Fix tests after 2768 (#2772)6f90cf7a1
Merge bitcoin#9602: Remove coin age priority and free transactions - implementation (#2768)6350adf1b
Slightly refactor ProcessInstantSendLock (#2767)3a1aeb000
Multiple fixes/refactorings for ChainLocks (#2765)152a78eab
Add compatibility code to P2PFingerprintTest until we catch up with backports72af215a3
Fix CreateNewBlock_validity by not holding cs_main when calling createAndProcessEmptyBlock95192d5b5
Require no cs_main lock for ProcessNewBlock/ActivateBestChain2eb553174
Avoid cs_main in net_processing ActivateBestChain callsf69c4370d
Refactor ProcessGetData in anticipation of avoiding cs_main for ABC7f54372bb
Create new mutex for orphans, no cs_main in PLV::BlockConnected6085de378
Add ability to assert a lock is not held in DEBUG_LOCKORDER9344dee8a
Merge #11580: Do not send (potentially) invalid headers in response to getheadersd1a602260
Merge #11113: [net] Ignore getheaders requests for very old side blocksd1db98c67
Merge #9665: Use cached [compact] blocks to respond to getdata messages0905b911d
Actually use cached most recent compact blockcd0f94fb5
Give wait_for_quorum_phase more time4ae52758b
Remove size check in CDKGSessionManager::GetVerifiedContributionse21da2d99
Move simple PoSe tests into llmq-simplepose.py6488135f4
Track index into self.nodes in mninfof30ea6dfd
Replace BITCOIN_UNORDERED_LRU_CACHE_H with DASH_UNORDERED_LRU_CACHE_He763310b5
Add missing LOCK(cs_main)3a5e7c433
Do not hold cs_vNodes in CSigSharesManager::SendMessages() for too long (#2758)fbf0dcb08
Various small cleanups (#2761)588eb30b8
Fix deadlock in CSigSharesManager::SendMessages (#2757)7b24f9b8b
Drop --c++11 brew flag in build-osx.md (#2755)ac00c6628
Make InstantSend locks persistent293c9ad6a
Use unordered_lru_cache in CRecoveredSigsDb9e4aa1f98
Implement unordered_lru_cache609114a80
Code review: re-add string cast in mininode.py85ffc1d64
dropswap_outputs_in_rawtx
andDecimalEncoder
in smartfees.pybc593c84b
Revert "Fix use of missing self.log in blockchain.py"0e91ebcf4
Use logging framework in Dash specific testsdd1245c2a
Update dnsseed-policy.md (#2751)f351145e6
Use GetVoteForId instead of maintaining votes on inputsd4cf78fe2
Add HasVotedOnId/GetVoteForId to CSigningManager43e1bf674
Add key prefix to "rs_" for CRecoveredSigsDb keys61e10f651
Use llmqDb for CRecoveredSigsDbb2cd1db40
Don't use CEvoDB in CDKGSessionManager and instead use llmqDbe2cad1bd6
Introduce global llmq::llmqDb instance of CDBWrapperacb52f6ec
Don't pass CEvoDB to CDKGSessionHandler and CDKGSession06fc65559
Actually remove from finalInstantSendLocks in CInstantSendManager::RemoveFinalISLock041a1c26d
Move safe TX checks into TestForBlock and TestPackageTransactions4d3365ddb
Completely disable InstantSend while filling mempool in autoix-mempool.pyfae33e03a
Let ProcessPendingReconstructedRecoveredSigs return void instead of boolf8f867a6b
Sync blocks after generating in mine_quorum()3e60d2d2d
Adjust LLMQ based InstantSend tests for new spork2041a71fe44
update autoix-mempool.py to test both "old" and "new" InstantSend (and fix CheckCanLock to respect mempool limits)843b6d7a9
update p2p-autoinstantsend.py to test both "old" and "new" InstantSenda8da11ac5
update p2p-instantsend.py to test both "old" and "new" InstantSend55152cb31
Move IS block filtering into ConnectBlock2299ee283
Rename IXLOCK to ISLOCK and InstantX to InstantSendf5dcb00ac
Introduce spork SPORK_20_INSTANTSEND_LLMQ_BASED to switch between new/old system280690792
Combine loops in CChainLocksHandler::NewPoWValidBlock9e9081110
Add override keywork to CDSNotificationInterface::NotifyChainLocke2f99f4ae
Set llmqForInstantSend for mainnet and testnet5b8344e8f
Use scheduleFromNow instead of schedule+boost::chronof44f09ca0
Fix crash in BlockAssembler::addPackageTxsbaf8b81c4
Fix no-wallet build2a7a5c633
Only sign ChainLocks when all included TXs are "safe"96291e7a0
Cheaper/Faster bailout from TrySignChainTip when already signed before0a5e8eb86
Move ChainLock signing into TrySignChainTip and call it periodicallybd7edc8ae
Track txids of new blocks and first-seen time of TXs in CChainLocksHandler7945192ff
Enforce IX locks from the new systemdc97835ec
Disable explicit lock requests when the new IX system is active68cfdc932
Also call ProcessTx from sendrawtransaction and RelayWalletTransaction1d2d370cd
Whenever we check for locked TXs, also check for the new system having a lock3a6cc2cc1
Show "verified via LLMQ based InstantSend" in GUI TX status34a8b2997
Disable old IX code when the new system is active5ff4db0a0
Downgrade TXLOCKREQUEST to TX when new IX system is active1959f3e4a
Handle incoming TXs by calling CInstantXManager::ProcessTx83dbcc483
Implement CInstantSendManager and related P2P messages5bbc12274
Implement PushReconstructedRecoveredSig in CSigningManager2bbac8ff7
Introduce NotifyChainLock signal and invoke it when CLSIGs get processede47af29d4
Fix "chainlock" in WalletTxToJSON (#2748)e21d8d6b9
Fix error message for invalid voting addresses (#2747)80891ee6f
Make -masternodeblsprivkey mandatory when -masternode is given (#2745)521d4ae08
Implement 2-stage commit for CEvoDB to avoid inconsistencies after crashes (#2744)e63cdadc9
Add a button/context menu items to show QR codes for addresses (#2741)b6177740c
Add collateraladdress into masternode/protx list rpc output (#2740)b5466e20a
Add "chainlock" field to more rpcs (#2743)8dd934922
Don't be too harsh for invalid CLSIGs (#2742)a34fb6d6f
Fix banning when local node doesn't have the vvec (#2739)4a495c6b4
Only include selected TX types into CMerkleBlock (#2737)0db2d1596
code review and reset file permsf971da831
Stop g_connman first before deleting it (#2734)9eb0ca704
Ignore sig share inv messages when we don't have the quorum vvec (#2733)080b59a57
Backport bitcoin#14385: qt: avoid system harfbuzz and bz2 (#2732)2041186f4
On timeout, print members proTxHashes from members which did not send a share (#2731)ea90296b6
Actually start the timers for sig share and recSig verification (#2730)5c84cab0f
Send/Receive multiple messages as part of one P2P message in CSigSharesManager (#2729)d2573c43b
Only return from wait_for_chainlock when the block is actually processed (#2728)6ac49da24
Send QSIGSESANN messages when sending first message for a session8ce8cb9ca
Remove MarkXXX methods from CSigSharesNodeStatefa25728ca
Use new sessionId based session management in CSigSharesManager34e3f8eb5
Implement session management based on session ids and announcements7372f6f10
Move RebuildSigShare from CBatchedSigShares to CSigSharesManager55a6182b1
Introduce QSIGSESANN/CSigSesAnn P2P message80375a0b4
Change CSigSharesInv and CBatchedSigShares to be sessionId based9b4285b1c
Use salted hashing for keys for unordered maps/sets in LLMQ codeb5462f524
Implement std::unordered_map/set compatible hasher classes for salted hashesc52e8402c
Remove now obsolete TODO comment above CRecoveredSigsDbe83e32b95
Add in-memory cache for CRecoveredSigsDb::HasRecoveredSigForHash677c0040c
Add in-memory cache to CQuorumBlockProcessor::HasMinedCommitmentf305cf77b
Multiple fixes and optimizations for LLMQs and ChainLocks (#2724)c3eb0c788
reset file permsc17356efc
Merge #9970: Improve readability of segwit.py, smartfees.pyee6e5654e
Merge #9505: Prevector Quick Destructc4a3cd6a1
Merge #8665: Assert all the things!b09e3e080
Merge #9977: QA: getblocktemplate_longpoll.py should always use >0 fee txe8df27f8e
Merge #9984: devtools: Make github-merge compute SHA512 from git, instead of worktreec55e019bf
Merge #9940: Fix verify-commits on OSX, update for new bad Tree-SHA512, point travis to different keyserversf9a2e4c4f
Merge #9514: release: Windows signing scriptee2048ae4
Merge #9830: Add safe flag to listunspent result914bd7877
Merge #9972: Fix extended rpc tests broken by #9768dad8c67d3
Merge #9768: [qa] Add logging to test_framework.pyc75d7dc83
Merge #9962: [trivial] Fix typo in rpc/protocol.h49b743e39
Merge #9538: [util] Remove redundant call to get() on smart pointer (thread_specific_ptr)e5c4a67a2
Merge #9916: Fix msvc compiler error C4146 (minus operator applied to unsigned type)fcd3b4fd4
Disallow new proposals using legacy serialization (#2722)668b84b1e
Fix stacktraces compilation issues (#2721)0fd1fb7d5
Don't build docker image when running Travis job on some another repo (#2718)48d92f116
Implement optional pretty printed stacktraces (#2420)0b552be20
Fix file permissions broken in 2682 (#2717)74bb23cac
Add link to bugcrowd in issue template (#2716)252ee89c3
Implement new algo for quorum connections (#2710)104c6e776
Cleanup successful sessions before doing timeout check (#2712)26db020d1
Separate init/destroy and start/stop steps in LLMQ flow (#2709)9f5869032
Avoid using ordered maps in LLMQ signing code (#2708)bb90eb4bf
backports-0.15-pr6 code review7a192e2e4
Optimize sleeping behavior in CSigSharesManager::WorkThreadMain (#2707)d7bd0954f
Use pipe() together with fcntl instead of pipe2()742a25898
Implement caching in CRecoveredSigsDb500b9c89a
Use CBLSLazySignature in CBatchedSigShares02b68885a
Implement CBLSLazySignature for lazy serialization/deserialization6e8f50aa5
Faster default-initialization of BLS primitives by re-using the null-hashc03480d20
Disable optimistic sending when pushing sig share related messagesacb87895f
Implement WakeupSelect() to allow preliminary wakeup after message pushcf2932098
Allow to disable optimistic send in PushMessage()bedfc262e
Rework handling of CSigSharesManager worker thread (#2703)3e4286a58
Less cs_main locks in quorums (#2702)3bbc75fc4
Reintroduce spork15 so that it's relayed by 0.14 nodes (#2701)b71a3f48d
Remove not used and not implemented methods from net.h (#2700)c0cb27465
Fix incorrect usage of begin() when genesis block is requested in "protx diff" (#2699)b239bb24a
Do not process blocks in CDeterministicMNManager before dip3 activation (#2698)86fc05049
Drop no longer used code and bump min protos (#2697)fef8e5d45
A small overhaul of the way MN list/stats UI and data are tied together (#2696)90bb3ca2f
Backport #14701: build: Add CLIENT_VERSION_BUILD to CFBundleGetInfoString (#2687)00f904ec7
Change the way invalid ProTxes are handled inaddUnchecked
andexistsProviderTxConflict
(#2691)5478183e7
Call existsProviderTxConflict after CheckSpecialTx (#2690)1be5a72a9
Merge #9853: Fix error codes from various RPCs1bfc069e3
Merge #9575: Remove unused, non-working RPC PostCommand signale53da66b2
Merge #9936: [trivial] Fix three typos introduced into walletdb.h in commit 7184e252121ba776
Merge #9945: Improve logging in bctest.py if there is a formatting mismatchb1d64f3a1
Merge #9548: Remove min reasonable fee1c08f9a5f
Merge #9369: Factor out CWallet::nTimeSmart computation into a method.9a3067115
fix compile error caused by #96057e4257254
Allow to override llmqChainLocks with "-llmqchainlocks" on devnet (#2683)bed57cfbf
Stop checking MN protocol version before signalling DIP3 (#2684)8d249d4df
Merge #9605: Use CScheduler for wallet flushing, remove ThreadFlushWalletDB9c8c12ed4
devtools: Fix a syntax error typo8a436ec36
Merge #9932: Fix verify-commits on travis and always check top commit's tree31267f4c8
Merge #9555: [test] Avoid reading a potentially uninitialized variable in tx_invalid-test (transaction_tests.cpp)a31b2de7a
Merge #9906: Disallow copy constructor CReserveKeys22cda1a92
Merge #9929: tests: Delete unused function_rpchost_to_args
6addbe074
Merge #9880: Verify Tree-SHA512s in merge commits, enforce sigs are not SHA129bbfc58f
Merge #8574: [Wallet] refactor CWallet/CWalletDB/CDB67a86091a
Implement and use secure BLS batch verification (#2681)e2ae2ae63
Update misspelled Synchronizing in GetSyncStatus (#2680)721965990
Add missing help text foroperatorPayoutAddress
(#2679)68c0de4ba
Do not send excessive messages in governance sync (#2124)09e71de80
Fix bench log for payee and special txes (#2678)03fa11550
Speed up CQuorumManager::ScanQuorums (#2677)071035b93
Apply code review suggestions #2647501227dee
Merge #9333: Document CWalletTx::mapValue entries and remove erase of nonexistent "version" entry.a61b747a2
Merge #9547: bench: Assert that division by zero is unreachableb821dfa7d
Merge #9739: Fix BIP68 activation test56890f98f
Merge #9832: [qa] assert_start_raises_init_error31755267a
Missing=
characters (#2676)088525bde
Multiple fixes for LLMQs and BLS batch verification (#2674)ae70e8a34
Fix negative "keys left since backup" (#2671)2a330f17a
Fix endless wait in RenameThreadPool (#2675)1400df2e5
Invoke CheckSpecialTx after all normal TX checks have passed (#2673)18950f923
Optimize DKG debug message processing for performance and lower bandwidth (#2672)4615da99f
Merge #9576: [wallet] Remove redundant initialization8944b5a78
Merge #9905: [contrib] gh-merge: Move second sha512 check to the end8dfddf503
Merge #9910: Docs: correct and elaborate -rpcbind doc395b53716
Merge #9774: Enable host lookups for -proxy and -onion parameters2c3dde75c
Merge #9828: Avoid -Wshadow warnings in wallet_tests3d3443b6a
Merge #8808: Do not shadow variables (gcc set)053b97c94
Merge #9903: Docs: add details to -rpcclienttimeout doc5d1c97da1
Add getspecialtxes rpc (#2668)ca6c8f547
Add missing default value for SPORK_19_CHAINLOCKS_ENABLED (#2670)6da341379
Use smaller LLMQs for ChainLocks on testnet and devnet (#2669)54f576ea7
Fix LLMQ related test failures on Travis (#2666)6fe479aa1
Don't leak skShare in logs (#2662)559bdfc6e
ProcessSpecialTxsInBlock should respect fJustCheck (#2653)805aeaa16
Drop cs_main from UpdatedBlockTip in CDKGSessionManager/CDKGSessionHandler (#2655)2a4fbb6e4
Bump block stats when adding commitment tx into block (#2654)25cb14b61
Fix confusion between dip3 activation and enforcement (#2651)7caf9394e
drop dash-docs folder and instead link to dash-docs.github.io in README (#2650)70a9e905c
Use helper function to produce help text for params ofprotx
rpcs (#2649)f123248f1
update copyright (#2648)d398bf052
reverse order from jsonRequest, strSubCommandad4b3cda3
Instead of asserting signatures once, wait for them to change to the expected state3237668b1
Rename inInvalidate->inEnforceBestChainLock and make it atomic5033d5ef4
Don't check for conflicting ChainLocks when phashBlock is not set08d915dc2
Increase waiting time in LLMQ signing tests886299a40
Implement llmq-chainlocks.py integration tests3413ff917
Add info about ChainLocks to block and transaction RPCs135829dc4
Add SPORK_19_CHAINLOCKS_ENABLED29532ba19
Implement and enforce ChainLocks2bf6eb1c7
Track parent->child relations for blocks04a51c9ef
Use a block that is 8 blocks in the past for SelectQuorumForSigningcf33efc9e
Move SelectQuorumForSigning into CSigningManager and make it height based4026ea203
Implement VerifyRecoveredSig to allow verifcation of sigs found in P2P messages9f211ef12
Add listener interface to listen for recovered sigs189cee210
Don't pass poolSize to SelectQuorum and instead use consensus params13855674d
Add missing new-line character in log outputd31edf66a
Wait for script checks to finish before messing with txes in Dash-specific way (#2652)2c477b0d4
Fix no_wallet for rpcmasternode/rpcevofc00b7bae
add import to rpcevo fixing backport 877530b03863e
Apply suggestions from code review #2646c70aa6079
change #8775 to keep dash codebase improvement, but still backport #9908afdb0a267
Merge #9908: Define 7200 second timestamp window constantc094d4bbe
fix #8775 backportf9147466f
remove other rpc references to pwalletMaind7474fd56
remove all references to pwalletMain in rpc folder87af11781
Merge #8775: RPC refactoring: Access wallet using new GetWalletForJSONRPCRequest1fa7f7e74
stop test failures444f671ab
Update src/miner.cpp514769940
fix 98687ee31cbd6
Speed up integration tests with masternodes (#2642)fda16f1fe
Fix off-by-1 in phase calculations and the rest of llmq-signing.py issues (#2641)b595f9e6a
Fix LLMQ signing integration tests (#2640)597748689
Bring back ResetLocalSessionStatus call (#2639)682a3b993
Merge #9904: test: Fail if InitBlockIndex fails55a656c24
Merge #9359: Add test for CWalletTx::GetImmatureCredit() returning stale values.68f6b43d1
fix #9143 backportbba55e262
Merge #9143: Refactor ZapWalletTxes to avoid layer violations02f4661b3
fix #9894 backport07b50aefa
Merge #9894: remove 'label' filter for rpc command help8035769d4
remove removed argument from #9834904e56fb1
Merge #9834: qt: clean up initialize/shutdown signals2df84c6f1
fix merge error from #982121e00e905
Merge #9821: util: Specific GetOSRandom for Linux/FreeBSD/OpenBSDf9c585776
manual fixes on #98683ddf3dc62
Merge #9868: Abstract out the command line options for block assembly397792355
Merge #9861: Trivial: Debug log ambiguity fix for peer addrs3d1a0b3ab
Merge #9871: Add a tree sha512 hash to merge commits8264e15cd
Merge #9822: Remove block file location upgrade codef51d2e094
Merge #9732: [Trivial] Remove nonsense #undef foreach3e10ff63f
Merge #9867: Replace remaining sprintf with snprintf0d38c16e7
Merge #9350: [Trivial] Adding label for amount inside of tx_valid/tx_invalid.jsond2ddc2a00
A couple of fixes/refactorings for CDKGSessionHandler (#2637)b2b97f258
Fix some strings, docs and cmd-line/rpc help messages (#2632)e7981e468
Remove fLLMQAllowDummyCommitments from consensus params (#2636)8cd7287ba
Fix missing lupdate in depends (#2633)b0ad1425e
Review fixes (mostly if/else related but no change in logic)c905f1fe1
Initialize g_connman before initializing the LLMQ systemb8d069bcd
fix/cleanup qt rpcnestedtestsb970c20a9
Avoid using immature coinbase UTXOs for dummy TXins4d25148c0
Add llmq-signing.py testsd020ffa00
Add wait_for_sporks_same and mine_quorum to DashTestFramework0cc1cf279
Add receivedFinalCommitment flag to CDKGDebugSessionStatus23d7ed80d
Implement "quorum sign/hasrecsig/isconflicting" RPCs316b6bf0d
Faster re-requesting of recovered sigsc38f889e7
Implement processing, verifcation and propagation of signature shares43fd1b352
Implement CSigningManager to process and propagage recovered signatures56ee83a76
Add ReadDataStream to CDBWrapper to allow manual deserializationb6346a2f6
Implement CBLSInsecureBatchVerifier for convenient batch verificationdd8f24588
Implement IsBanned to allow checking for banned nodes outside of net_processing.cpp49de41726
Implement CFixedVarIntsBitSet and CAutoBitSet76a58f5a4
Addsrc/bls/*.h
and .cpp to CMakeLists.txtb627528ce
Use void as return type for WriteContributionsedac100f5
Fix "quorum" RPCs help and unify logic in the sub-commands RPC entry point217f3941d
Skip starting of cache populator thread in case we don't have a valid vvec679a9895b
Add comments about why it's ok to ignore some failures15c34ccbd
Implement CQuorum and CQuorumManager8e4fe3660
[PrivateSend] Fallback to less participants if possible, fix too long timeouts on server side (#2616)ee808d819
Add checkbox to show only masternodes the wallet has keys for (#2627)fff50af3c
Revert "Set CLIENT_VERSION_IS_RELEASE to true (#2591)"fed4716c0
Remove support for "0" as an alternative to "" when the default is requested (#2622)8b7771a31
Add someconst
s0b1347c0d
Pass self-created message to CDKGPendingMessages instead of processing them02c7932f4
Add owner and voting addresses to rpc output, unify it across different methods (#2618)c948c0ff3
Fix help for optional parameters in "quorum dkgstatus"957652bf3
Fix help for "quorum dkgstatus" and remove support for "0" proTxHashb7b436b7d
Apply review suggestions to rpcquorums.cpp3fe991063
Drop unused overload of GetMasternodeQuorums5daeedabf
Batched logger should not break log parsing2aed51c55
Give nodes more time per phase when doing PoSe tests5958f8b81
Remove dkgRndSleepTime from consensus params and make sleeping it non-random0dae46c2f
Move RandBool() into random.h/cppe1901d24a
Handle review suggestions352edbd33
Introduce SPORK_18_QUORUM_DEBUG_ENABLED to enable/disable LLMQ debug messages324406bfe
Implement debugging messages and RPC for LLMQ DKGs098b09495
Pass scheduler to InitLLMQSystema1f4853d6
Use LLMQ DKGs for PoSe testing in DIP3 tests6836f8c38
Implement LLMQ DKG318b59813
Prepare inter-quorum masternode connections4bf736f33
Add cxxtimer header only librariesc6be8cfcd
Allow to skip malleability check when deserializing BLS primitives9d25bb1d8
Add batched logger0df3871d1
Remove dummy DKG55f205eba
A couple of fixes formasternode list
rpc (#2615)fa18d3e10
More fixes for PrivateSend after 2612 (#2614)bade33273
Fix 2612 (#2613)5c5932eb9
[PrivateSend] Allow more than 3 mixing participants (#2612)0acfbf640
Gracefully shutdown on evodb inconsistency instead of crashing (#2611)07dcddb4c
Backports 0.15 pr2 (#2597)04d1671b9
armv7l build support (#2601)7d58d87f4
Remove a few sporks which are not used anymore (#2607)d1910eaff
Refactor remains of CMasternode/-Man into CMasternodeMeta/-Man (#2606)cdc8ae943
Don't hold CDeterministicMNManager::cs while calling signals (#2608)968eb3fc5
Add real timestamp to log output when mock time is enabled (#2604)0648496e2
Fix flaky p2p-fullblocktest (#2605)96d4f7459
Try to fix flaky IX tests in DIP3 tests (#2602)896733223
Dashify copyright_header.py (#2598)c58f775cc
De-dashify env vars and dashify help text in tests instead (#2603)a49f4123e
Backports 0.15 pr1 (#2590)f95aae2b3
Remove all legacy/compatibility MN code (#2600)0e28f0aa9
Fix flaky autoix tests by disabling autoix while filling mempool (#2595)78c22ad0f
Multiple fixes for "masternode list"e54f6b274
Use ban score of 10 for invalid DSQ sigs536229d17
Apply suggestions from code review75024e117
Merge #10365: [tests] increase timeouts in sendheaders test1efd77358
Remove non-DIP3 code path in CMasternodePayments::IsScheduled4c749b7e9
Directly use deterministicMNManager in "masternode list"0fe97a045
Remove support for "masternode list rank"adc2ec225
Remove unsupported types/fields from "masternode list"4b150e72f
Directly use deterministicMNManager instead of mnodeman.CountXXX4c3bb7304
Remove call to mnodeman.PoSeBan0594cd719
Remove code that is incompatible now due to GetMasternodeRanks returning DMNs now37541ee00
Change GetMasternodeScores and GetMasternodeRank/s to use CDeterministicMNCPtr17c792cd3
Remove MN upgrade check in ComputeBlockVersion71a695100
Move logic from FindRandomNotInVec into GetRandomNotUsedMasternode2f66d6ada
Replace uses of mnodeman in PS code when deterministicMNManager can be used directlyeedb15845
Remove use of mnodeman.GetMasternodeInfo from IX codefb13b000b
Remove support for legacy operator keys in CPrivateSendBroadcastTx5f5fcc49c
Remove legacy signatures support in CPrivateSendQueueda924519a
Remove support for legacy signatures in CTxLockVote2b2e4f45d
Remove a few uses of mnodeman from governance code14d8ce03c
Don't use GetMasternodeInfo in CTxLockVote::IsValid1ff241881
Directly use deterministicMNManager in some places45f34e130
Implement HasValidMN, HasValidMNByCollateral and GetValidMNByCollateralbc29fe160
Remove compatibility code from governance RPCs and directly use deterministicMNManagerb49ef5d71
Directly use deterministicMNManager when processing DSTXae229e283
Directly use deterministicMNManager in CGovernanceManager::GetCurrentVotes96e0385db
Let "masternode winner/current" directly use deterministicMNManager82745dd07
Use DIP3 MNs in auto-IX tests (#2588)ce5a51134
Speed up stopping of nodes in tests by splitting up stop and wait (#2587)0c9fb6968
Harden spork15 on testnet (#2586)361900e46
Bump version to 0.14 (#2589)
Credits
Thanks to everyone who directly contributed to this release:
- Alexander Block (codablock)
- Amir Abrams (AmirAbrams)
- Daniel Hoffmann (dhoffmann)
- Duke Leto (leto)
- fish-en
- gladcow
- -k (charlesrocket)
- Nathan Marley (nmarley)
- PastaPastaPasta
- Peter Bushnell (Bushstar)
- strophy
- thephez
- UdjinM6
As well as everyone that submitted issues and reviewed pull requests.
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:
- v0.13.3 released Apr/04/2019
- v0.13.2 released Mar/15/2019
- v0.13.1 released Feb/9/2019
- v0.13.0 released Jan/14/2019
- v0.12.3.4 released Dec/14/2018
- v0.12.3.3 released Sep/19/2018
- v0.12.3.2 released Jul/09/2018
- v0.12.3.1 released Jul/03/2018
- v0.12.2.3 released Jan/12/2018
- v0.12.2.2 released Dec/17/2017
- v0.12.2 released Nov/08/2017
- v0.12.1 released Feb/06/2017
- v0.12.0 released Aug/15/2015
- v0.11.2 released Mar/04/2015
- v0.11.1 released Feb/10/2015
- v0.11.0 released Jan/15/2015
- v0.10.x released Sep/25/2014
- v0.9.x released Mar/13/2014