* Add `Mining` section to `Notable changes`, mention P2SH and `script` in `getblocktemplate` * Also mention `coinbase_payload`
66 KiB
Dash Core version 0.13.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 you will have to reindex (start with -reindex-chainstate or -reindex) to make sure your wallet has all the new data synced.
Downgrade warning
Downgrade to a version < 0.13.0.0
Downgrading to a version smaller than 0.13 is only supported as long as DIP2/DIP3 has not been activated. Activation will happen when enough miners signal compatibility through a BIP9 (bit 3) deployment.
Notable changes
DIP0002 - Special Transactions
Currently, new features and consensus mechanisms have to be implemented on top of the restrictions imposed by the simple nature of transactions. Since classical transactions can only carry inputs and outputs, they are most useful for financial transactions (i.e. transfers of quantities of Dash between addresses on the distributed ledger). These inputs and outputs carry scripts and signatures which are used to authorize and validate the transaction.
To implement new on-chain features and consensus mechanisms which do not fit into this concept of financial transactions, it is often necessary to misuse the inputs/outputs and their corresponding scripts to add additional data and meaning to a transaction. For example, new opcodes would have to be introduced to mark a transaction as something special and add a payload. In other cases, OP_RETURN has been misused to store data on-chain.
The introduction of special transactions will require the whole Dash ecosystem to perform a one-time mandatory update of all the software and libraries involved. Software and libraries will have to be changed so that they can differentiate between classical transactions and special transactions. Deserialization of a classical transaction remains unchanged. Deserialization of a special transaction requires the software/library to at least implement skipping and ignoring the extra_payload field. Validation and processing of the inputs and outputs of a special transaction must remain identical to classical transactions.
Read more: https://github.com/dashpay/dips/blob/master/dip-0002.md
DIP0003 - Deterministic Masternode Lists
This DIP provides on-chain consensus for masternode lists that in turn allow for deterministic quorum derivation and service scoring of masternode rewards.
In the previous system, each node maintained its own individual masternode list. Masternodes gained entry to that masternode list after the owner created a 1000 Dash UTXO and the masternode broadcast a "masternode broadcast/announcement" P2P message. This in turn set the masternode to a PRE_ENABLED state in the list maintained by each node. Masternodes then regularly broadcasted ping messages to keep the masternode in ENABLED state.
The previous system was maintained with consensus mechanisms that predated Satoshi Nakamoto’s solution to the Byzantine Generals Problem. This meant that each node needed to maintain their own individual masternode list with P2P messages and not a blockchain based solution. Due to the nature of the P2P system, there was no guarantee that nodes would come to the same conclusion on what the masternode list ought to look like. Discrepancies might, for example, occur due to a different order of message reception or if messages had not been received at all. This posed some risks in regard to consensus and limited the possible uses of quorums by the system.
Additionally, the previous system required a complicated and failure prone "masternode sync" after the initial startup of the node. After the blockchain was synced, the node would request the current masternode list, the reward payment votes, and then verify the received list. This process tended to take an unnecessarily long amount of time and sometimes resulted in failure.
In the new system, the masternode list is derived entirely from information found on-chain. New masternodes are added by new special transactions called Provider Registration Transactions (abbreviated as ProRegTx). They are only removed by spending the collateral. A ProRegTx is a special transaction which includes either a 1000-Dash collateral payment or a reference to it, along with other payload information (DIP0002).
The new system is going to be activated via combination of a BIP9-like deployment (bit 3) and new spork
(SPORK_15_DETERMINISTIC_MNS_ENABLED
).
Read more: https://github.com/dashpay/dips/blob/master/dip-0003.md Upgrade instructions: https://docs.dash.org/DIP3-masternode-upgrade
DIP0004 - Simplified Verification of Deterministic Masternode Lists
A verifiable and correct masternode list is foundational to many Dash features, including verification of an InstantSend transaction, mixing in PrivateSend and many features of Evolution. The deterministic masternode lists introduced by DIP0003 enable full derivation and verification of a masternode list via on-chain data. This, however, requires the full chain to be available to construct or verify this list. A SPV client does not have the full chain and thus would have to rely on a list provided by one or more nodes in the network. This provided list must be verifiable by the SPV client without needing the full chain. This DIP proposes additions to the block’s coinbase transaction and new P2P messages to get and update a masternode list with additional proof data.
Read more: https://github.com/dashpay/dips/blob/master/dip-0004.md
Mining
Please note that masternode payments in getblocktemplate
rpc are now returned as an array and not as
a single object anymore. Make sure to apply corresponding changes to your pool software.
Also, deterministic masternodes can now set their payout address to a P2SH address. The most common use
case for P2SH is multisig but script can be pretty much anything. If your pool software doesn't recognize
P2SH addresses, the simplest way to fix it is to use script
field which shows scriptPubKey for each
entry of masternode payments array in getblocktemplate
.
And finally, after DIP0003 activation your pool software must be able to produce Coinbase Special
Transaction https://github.com/dashpay/dips/blob/master/dip-0004.md#coinbase-special-transaction.
Use coinbase_payload
from getblocktemplate
to get extra payload needed to construct this transaction.
PrivateSend
With further refactoring of PrivateSend code it became possible to implement mixing in few parallel
mixing sessions at once from one single wallet. You can set number of mixing sessions via
privatesendsessions
cmd-line option or dash.conf. You can pick any number of sessions between 1 and 10,
default is 4 which should be good enough for most users. For this feature to work you should also make
sure that privatesendmultisession
is set to 1
via cmd-line or Enable PrivateSend multi-session
is
enabled in GUI.
Introducing parallel mixing sessions should speed mixing up which makes it reasonable to add a new mixing denom (0.00100001 DASH) now while keeping all the old ones too. It also makes sense to allow more mixing rounds now, so the new default number of rounds is 4 and the maximum number of rounds is 16 now.
You can also adjust rounds and amount via setprivatesendrounds
and setprivatesendamount
RPC commands
which override corresponding cmd-line params (privatesendrounds
and privatesendamount
respectively).
NOTE: Introducing the new denom and a couple of other changes made it incompatible with mixing on masternodes running on pre-0.13 software. Please keep using 0.12.3 local wallet to mix your coins until there is some significant number of masternodes running on version 0.13 to make sure you have enough masternodes to choose from when the wallet picks one to mix funds on.
InstantSend
With further improvements of networking code it's now possible to handle more load, so we are changing InstantSend to be always-on for so called "simple txes" - transactions with 4 or less inputs. Such transactions will be automatically locked even if they only pay minimal fee. According to stats, this means that up to 90% of currently observed transactions will became automatically locked via InstantSend with no additional cost to end users or any additional effort from wallet developers or other service providers.
This feature is going to be activated via combination of a BIP9-like deployment (we are reusing bit 3)
and new spork (SPORK_16_INSTANTSEND_AUTOLOCKS
).
Historically, InstantSend transactions were shown in GUI and RPC with more confirmations than regular ones,
which caused quite a bit of confusion. This will no longer be the case, instead we are going to show real
blockchain confirmations only and a separate indicator to show if transaction was locked via InstantSend
or not. For GUI it's color highlight and a new column, for RPC commands - instantlock
field and addlocked
param.
One of the issues with InstantSend adoption by SPV wallets (besides lack of Deterministic Masternode List) was inability to filter all InstantSend messages the same way transactions are filtered. This should be fixed now and SPV wallets should only get lock votes for transactions they are interested in.
Another popular request was to preserve information about InstantSend locks between wallet restarts, which
is now implemented. This data is stored in a new cache file instantsend.dat
. You can safely remove it,
if you don't need information about recent transaction locks for some reason (NOTE: make sure it's not one
of your wallets!).
We also added new ZMQ notifications for double-spend attempts which try to override transactions locked
via InstantSend - zmqpubrawinstantsenddoublespend
and zmqpubhashinstantsenddoublespend
.
Sporks
There are a couple of new sporks introduced in this version SPORK_15_DETERMINISTIC_MNS_ENABLED
(block
based) and SPORK_16_INSTANTSEND_AUTOLOCKS
(timestamp based). There is aslo SPORK_17_QUORUM_DKG_ENABLED
(timestamp based) which is going to be used on testnet only for now.
Spork data is stored in a new cache file (sporks.dat
) now.
Governance
Introduction of Deterministic Masternodes requires replacing of the old masternode private key which was used both for operating a MN and for voting on proposals with a set of separate keys, preferably fresh new ones. This means that votes casted for proposals by Masternode Owners via the old system will no longer be valid after DIP0003 activation and must be re-casted using the new voting key.
Also, you can now get notifications about governance objects or votes via new ZMQ notifications:
zmqpubhashgovernancevote
, zmqpubhashgovernanceobject
, zmqpubrawgovernancevote
and
zmqpubhashgovernanceobject
.
GUI changes
Masternodes tab has a new section dedicated to DIP0003 registered masternodes now. After DIP0003 activation this will be the only section shown here, the two old sections for non-deterministic masternodes will no longer be available.
There are changes in the way InstantSend transactions are displayed, see InstantSend
section above.
Some other (mostly minor) issues were also fixed, see GUI
part of 0.13.0.0 Change log
section below for
detailed list of fixes.
RPC changes
There are a few changes in existing RPC interfaces in this release:
gobject prepare
allows to send proposal transaction as an InstantSend one and also accepts an UTXO reference to spend;masternode status
andmasternode list
show some DIP0003 related info now;previousbits
andcoinbase_payload
fields were added ingetblocktemplate
;getblocktemplate
now returns an array for masternode payments instead of a single object (miners and mining pools have to upgrade their software to support multiple masternode payees);- masternode and superblock payments in
getblocktemplate
show payee scriptPubKey inscript
field in addition to payee address inpayee
; getblockchaininfo
shows BIP9 deployment progress;help command subCommand
should give detailed help for subcommands e.g.help protx list
;compressed
option inmasternode genkey
;dumpwallet
shows info about dumped wallet and warns user about security issues;instantlock
field added in output ofgetrawmempool
,getmempoolancestors
,getmempooldescendants
,getmempoolentry
,getrawtransaction
,decoderawtransaction
,gettransaction
,listtransactions
,listsinceblock
;addlocked
param added togetreceivedbyaddress
,getreceivedbyaccount
,getbalance
,sendfrom
,sendmany
,listreceivedbyaddress
,listreceivedbyaccount
,listaccounts
.
There are also new RPC commands:
protx
(list
,info
,diff
,register
,register_fund
,register_prepare
,register_submit
,update_service
,update_registrar
,revoke
);bls generate
;setprivatesendrounds
;setprivatesendamount
.
See help command
in rpc for more info.
Command-line options
New cmd-line options:
masternodeblsprivkey
;minsporkkeys
;privatesendsessions
;zmqpubrawinstantsenddoublespend
;zmqpubhashinstantsenddoublespend
;zmqpubhashgovernancevote
;zmqpubhashgovernanceobject
;zmqpubrawgovernancevote
;zmqpubhashgovernanceobject
.
Some of them are Devnet only:
budgetparams
;minimumdifficultyblocks
;highsubsidyblocks
;highsubsidyfactor
.
Few cmd-line options are no longer supported:
instantsenddepth
;mempoolreplacement
.
See Help -> Command-line options
in Qt wallet or dashd --help
for more info.
Lots of refactoring and bug fixes
A lot of refactoring, code cleanups and other small fixes were done in this release.
0.13.0.0 Change log
See detailed set of changes.
Network
03a6865d9
Enforce correct port on mainnet for DIP3 MNs (#2576)3f26ed78c
Backport network checks missing in CActiveDeterministicMasternodeManager::Init() (#2572)7c7500864
Also stop asking other peers for a TX when ProcessTxLockRequest fails (#2529)19a6f718d
Don't respond with getdata for legacy inv types when spork15 is active (#2528)22dcec71a
Punish nodes which keep requesting and then rejecting blocks (#2518)a18ca49a2
Disconnect peers with version < 70212 after DIP3 activation via BIP9 (#2497)a57e9dea7
Fix filtering of the lock votes for SPV nodes. (#2468)c6cf4d9a4
Relay txes through MN network faster than through regular nodes (#2397)e66c4e184
Don't revert to INV based block announcements when the previous block is the devnet genesis block (#2388)b5142ee2c
Implement RemoveAskFor to indicate that we're not interested in an item anymore (#2384)53e12b7b4
Don't bail out from ProcessMasternodeConnections in regtest (#2368)31759a44d
Fix tx inv throughput (#2300)9d90b4fa4
Honor filterInventoryKnown for non-tx/non-block items (#2292)6764dafec
Skip initial masternode list sync if spork 15 is activefced9a4b8
Ban peers that send us MNLISTDIFF messagesd3ac86206
Implement GETMNLISTDIFF and MNLISTDIFF P2P messages40eee1775
Fix sync in regtest (again) (#2241)c4ee2c89e
Fix mnsync in regtest (#2202)
Mining
f96563462
Fix check for nTemporaryTestnetForkDIP3Height (#2508)80656038f
Bump nTemporaryTestnetForkHeight to 274000 (#2498)1c25356ff
Allow to use low difficulty and higher block rewards for devnet (#2369)3cc4ac137
Fix crash bug with duplicate inputs within a transaction (#2302)e6b699bc2
Enforce MN and superblock payments in same blockc7f75afdd
Fix nulldummy tests by creating correct DIP4 coinbase transactionsbcc071957
Calculate and enforce DIP4 masternodes merkle root in CbTx0a086898f
Implement and enforce CbTx with correct block height and deprecate BIP34
RPC
a22f1bffe
Remove support for "0" as an alternative to "" when the default is requested (#2622) (#2624)18e1edabf
Backport 2618 to v0.13.0.x (#2619)0dce846d5
Add an option to use specific address as a source of funds in protx rpc commands (otherwise use payoutAddress/operatorPayoutAddress) (#2581)e71ea29e6
Add ownerAddr and votingAddr to CDeterministicMNState::ToJson (#2571)999a51907
Fix optional revocation reason parameter for "protx revoke" and a few help strings (#2568)c08926146
Unify "protx list" options (#2559)e9f7142ed
Bump PROTOCOL_VERSION and DMN_PROTO_VERSION to 70213 (#2557)818f0f464
Allow consuming specific UTXO in gobject prepare command (#2482)1270b7122
Use a verbosity instead of two verbose parameters (#2506)f6f6d075d
Still support "protx list" and "protx diff" when wallet is disabled at compile time (#2511)5a3f64310
Deserialize CFinalCommitmentTxPayload instead of CFinalCommitment in TxToJSON (#2510)5da4c9728
Use "registered" as default for "protx list" (#2513)fc6d651c4
Fix crashes in "protx" RPCs when wallet is disabled (#2509)ba49a4a16
Trivial: protx fund_register RPC help corrections (#2502)45421b1a3
Add IS parameter for gobject prepare (#2452)2ba1ff521
Use ParseFixedPoint instead of ParseDoubleV in "protx register" commands (#2458)e049f9c1e
fix protx register rpc help (#2461)eb2103760
trivail, clarifies help text for protx register (#2462)76e93c7d7
Corrections to incorrect syntax in RPC help (#2466)3c1f44c3a
Make sure protx_update_registrar adds enough funds for the feesd130f25ac
Fix check for number of params to protx_update_service (#2443)adf9c87e2
Fix protx/bls rpc help (#2438)579c83e88
Add coinbase_payload to getblocktemplate help (#2437)3685c85e7
Show BIP9 progress in getblockchaininfo (#2435)da3e3db4d
Fix sub-command help for masternode, gobject and protx rpcs (#2425)adad3fcfe
RPC: protx help corrections (#2422)1d56dffda
Unify help display logic for various "complex" rpc commands (#2415)02442673d
Trivial: Correct protx diff RPC help (#2410)1f56600c4
Trivial: Protx operator reward clarification (#2407)7011fec1b
RPC: Add help details for the bls RPC (#2403)50f133ad0
Add merkle tree and coinbase transaction to theprotx diff
rpc command (#2392)25b6dae9e
Code style and RPC help string cleanups for DIP2/DIP3 (#2379)0ad2906c5
Clarify addlocked description in getbalance RPC (#2364)547b81dd0
loggobject prepare
params (#2317)d932d2c4e
Add instantlock field to getrawtransaction rpc output (#2314)c3d6b0651
Remove redundant check for unknown commands in masternode RPC (#2279)44706dc88
Implement projection of MN reward winners in "masternode winners"2d8f1244c
Implement 'masternode info ' RPCe2a9dbbce
Better "masternode status" for deterministic masternodes50ac6fb3a
Throw exception when trying to invoke start-xxx RPC in deterministic mode58aa81364
Implement "protx revoke" RPC185416b97
Implement "protx update_registrar" RPC32951f795
Implement "protx update_service" RPC5e3abeca2
Implement "protx list" RPCc77242346
Implement "protx register" RPC1c2565804
Refactormasternode
andgobject
RPCs to supporthelp command subCommand
syntax (#2240)fb4d301a2
Add extraPayloadSize/extraPayload fields to RPC help2997d6d26
add compressed option tomasternode genkey
(#2232)98ed90cbb
adds rpc calls forsetprivatesendrounds
andsetprivatesendamount
(#2230)50eb98d90
Prepare for DIP3 operator reward payments and switch to array in getblocktemplate (#2216)a959f60aa
De-duplicate "gobject vote-alias" and "gobject "vote-many" code (#2217)566fa5ec3
Add support for "help command subCommand" (#2210)4cd969e3d
Addpreviousbits
field togetblocktemplate
output (#2201)ac30196bc
Show some info about the wallet dumped via dumpwallet (#2191)
LLMQ and Deterministic Masternodes
a3b01dfbe
Gracefully shutdown on evodb inconsistency instead of crashing (#2611) (#2620)3861c6a82
Add BIP9 deployment for DIP3 on mainnet (#2585)587911b36
Fix IsBlockPayeeValid (#2577)3c30a6aff
Add missing masternodeblsprivkey help text (#2569)378dadd0f
Ensure EvoDB consistency for quorum commitments by storing the best block hash (#2537)2127a426b
Further refactoring of CQuorumBlockProcessor (#2545)1522656d6
Correctly handle spent collaterals for MNs that were registered in the same block (#2553)583035337
Track operator key changes in mempool and handle conflicts (#2540)88f7bf0d8
Don't delete/add values to the unique property map when it's null (#2538)15414dac2
Refactor CQuorumBlockProcessor and CDeterministicMNManager (#2536)d9b28fe1a
Introduce dummy (ping-like) contributions for the dummy DKG (#2542)df0d0cce7
Watch for changes in operator key and disable local MN (#2541)511dc3714
Remove ProTxs from mempool that refer to a ProRegTx for which the collateral was spent (#2539)225c2135e
Allow skipping of MN payments with zero duffs (#2534)60867978d
Avoid printing DIP3/DIP4 related logs twice (#2525)7037f7c99
Bail out from GetBlockTxOuts in case nBlockHeight is above tip+1 (#2523)022491420
Print the state object when ProcessSpecialTxsInBlock fails in ConnectBlock (#2516)812834dc5
Put height into mined commitments and use it instead of the special handling of quorumVvecHash (#2501)a4f5ba38b
Implement CDummyDKG and CDummyCommitment until we have the real DKG merged (#2492)66612cc4b
Add 0 entry to vTxSigOps when adding quorum commitments (#2489)f5beeafa1
Also restart MNs which didn't have the collateral moved, but do it later (#2483)0123517b4
Implement PoSe based on information from LLMQ commitments (#2478)22b5952c5
Implement and enforce DIP6 commitments (#2477)d40a5ce31
Properly initialize confirmedHash in CSimplifiedMNListEntry (#2479)5ffc31bce
Forbid version=0 in special TXs (#2473)85157f9a9
Few trivial fixes for DIP2/DIP3 (#2474)b5947f299
Implement BuildSimplifiedDiff in CDeterministicMNList6edad3745
Use ForEachMN and GetMN in BuildDiff instead of directly accessing mnMap83aac461b
Allow P2SH/multisig addresses for operator rewardsf5864254c
Do not use keyIDCollateralAddress anymore when spork15 is active5ccf556f3
GetMasternodeInfo with payee argument should do nothing when DIP3 is active927e8bd79
Also forbid reusing collateral key for owner/voting keys826e7d063
Move internal collateral check to the else branch of the external collateral checkdc404e755
Allow P2SH for payout scripts9adf8ad73
Remove restriction that forced use of same addresses for payout and collateral7c1f11089
Revert #2441 and retry fixing (#2444)6761fa49f
More checks for tx typeb84369663
Be more specific about tx version in conditionsc975a986b
no cs_main in specialtxes8bd5b231b
Log mempool payload errors instead of crashing via assert658b7afd1
Make error messages re payload a bit more specific153afb906
Restart MNs in DIP3 tests even if collateral has not moved (#2441)4ad2f647c
Use proTxHash instead of outpoint when calculating masternode scores (#2440)c27e62935
Allow reusing of external collaterals in DIP3 (#2427)9da9d575a
Allow collaterals for non-DIP3 MNs which were created after DIP3/BIP9 activation (#2412)30a2b283a
Sign ProRegTx collaterals with a string message instead of payload hash, splitprotx register
intoprepare
/submit
(#2395)e34701295
Fix crash when deterministic MN list is empty and keep paying superblocks in this case (#2387)28a6007a4
Prepare DIP3 for testnet and reuse DIP3 deployment for autoix deployment (#2389)e3df91082
Allow referencing other TX outputs for ProRegTx collateral (#2366)fdfb07742
Update ProRegTx serialization order (#2378)eaa856eb7
Remove nProtocolVersion and add mode/type fields to DIP3 (#2358)c9d274518
Use BLS keys for the DIP3 operator key (#2352)eaef90202
Don't use boost range adaptors in CDeterministicMNList (#2327)6adc236d0
Only use dataDir in CEvoDB when not in-memory (#2291)8a878bfcf
Call InitializeCurrentBlockTip and activeMasternodeManager->Init after importing has finished (#2286)6b3d65028
After DIP3 activation, allow voting with voting keys stored in your wallet (#2281)d8247dfff
Use refactored payment logic when spork15 is active60002b7dd
Payout and enforce operator reward payments2c481f0f8
Implement deterministic version of CMasternodePayments::IsScheduled19fbf8ab7
Move cs_main lock from CMasternode::UpdateLastPaid to CMasternodeMandc7292afa
Implement new MN payments logic and add compatibility coded4530eb7d
Put all masternodes in MASTERNODE_ENABLED state when spork15 is active31b4f8354
Forbid starting of legacy masternodes with non matching ProTx collateral values5050a9205
Add compatibility code for FindRandomNotInVec and GetMasternodeScorescc73422f8
Add methods to add/remove (non-)deterministic MNs7d14566bc
Add compatibility code to CMasternodeMan so that old code is still compatible27e8b48a6
Stop executing legacy MN list code when spork 15 is activatedd90b13996
Implement CActiveDeterministicMasternodeManagera5e65aa37
Erase mnListCache entry on UndoBlock (#2254)88e7888de
Try using cache in GetListForBlock before reading from disk (#2253)9653af2f3
Classes, validation and update logic for CProUpRevTX1c68d1107
Classes, validation and update logic for CProUpRegTX8aca3b040
Also check duplicate addresses for CProUpServTX in CTxMemPool923fd6739
Implement CProUpServTx logic in CDeterministicMNManager6ec0d7aea
Classes and basic validation of ProUpServTx255403e92
Include proTx data in json formatted transactions25545fc1e
Split keyIDMasternode into keyIDOwner/keyIDOperator/keyIDVoting (#2248)2c172873a
Don't allow non-ProTx masternode collaterals after DIP3 activation9e8a86714
Implementation of deterministic MNs list76fd30894
Automatically lock ProTx collaterals when TX is added/loaded to walletcdd723ede
Conflict handling for ProRegTx in mempool958b84ace
Implementation of ProRegTx with basic validation (no processing)c9a72e888
Introduce CEvoDB for all evo related things, e.g. DIP34531f6b89
Implement CDBTransaction and CScopedDBTransactione225cebcd
Use previous block for CheckSpecialTx (#2243)b92bd8997
Fix mninfo search by payee (#2233)8af7f6223
Account for extraPayload when calculating fees in FundTransactionb606bde9a
Support version 3 transaction serialization in mininode.py61bbe54ab
Add Get-/SetTxPayload helperscebf71bbc
Stubs for special TX validation and processingd6c5a72e2
Basic validation of version 3 TXs in CheckTransactiona3c4ee3fd
DIP2 changes to CTransaction and CMutableTransactiond20100ecd
DIP0003 deployment4d3518fe0
Refactor MN payee logic in preparation for DIP3 (#2215)d946f21bd
Masternode related refactorings in preparation of DIP3 (#2212)
PrivateSend
07309f0ec
Allow up to MASTERNODE_MAX_MIXING_TXES (5) DSTXes per MN in a row (#2552)ed53fce47
Revert "Apply similar logic to vecMasternodesUsed" (#2503)69bffed72
Do not sort resulting vector in SelectCoinsGroupedByAddresses (#2493)bb11f1a63
Fix recent changes in DSA conditions (#2494)6480ad1d5
Should check dsq queue regardless of the mixing state (#2491)67483cd34
Fix dsq/dsa conditions (#2487)9d4df466b
Fix CreateDenominated failure for addresses with huge amount of inputs (#2486)2b400f74b
Base dsq/dstx thresholold on total number of up to date masternodes (#2465)262454791
Add 5th denom, drop deprecated logic and bump min PS version (#2318)23f169c44
Drop custom PS logic for guessing fees etc. from SelectCoins (#2371)f7b0b5759
Pick rounds with the most inputs available to mix first (#2278)727e940c0
Fix recently introduced PS bugs (#2330)85a958a36
Drop dummy copy constructors in CPrivateSend*Session (#2305)c6a0c5541
A couple of small fixes for mixing collaterals (#2294)d192d642f
Move heavy coin selection out of the loop in SubmitDenominate (#2274)28e0476f4
Squash two logic branches in SubmitDenominate into one (#2270)9b6eb4765
Include inputs with max rounds in SelectCoinsDark/SelectCoinsByDenominations (#2277)55d7bb900
Add an option to disable popups for PS mixing txes (#2272)38ccfef3b
Identify PS collateral payments in transaction list a bit more accurate (#2271)ad31dbbd7
Add more variance to coin selection in PS mixing (#2261)8c9cb2909
Revert 2075 (#2259)b164bcc7a
Split PS into Manager and Session and allow running multiple mixing sessions in parallel (client side) (#2203)d4d11476a
Fix typo and grammar in PS error message (#2199)a83ab5501
Fix wallet lock check in DoAutomaticDenominating (#2196)30fa8bc33
Make sure pwalletMain is not null whenever it's used in PS client (#2190)3c89983db
Remove DarksendConfig (#2132)43091a3ef
PrivateSend Enhancement: Up default round count to 4 and allow user to mix up to 16 rounds (#2128)
InstantSend
35550a3f9
Add quorumModifierHash to instant send lock vote (#2505)fa8f4a10c
Include masternodeProTxHash in CTxLockVote (#2484)624e50949
Remove few leftovers of-instantsenddepth
733cd9512
Remove global fDIP0003ActiveAtTip and fix wrong use of VersionBitsState in auto IX (#2380)5454bea37
Automatic InstantSend locks for "simple" transactions (#2140)1e74bcace
[ZMQ] Notify when an IS double spend is attempted (#2262)6bcd868de
Fix lockedByInstantSend initialization (#2197)0a6f47323
Remove dummy confirmations in RPC API and GUI for InstantSend transactions (#2040)ace980834
Extend Bloom Filter support to InstantSend related messages (#2184)2c0d4c9d7
Save/load InstantSend cache (#2051)
Sporks
33f78d70e
Do not accept sporks with nTimeSigned way too far into the future (#2578)6c4b3ed8d
Load sporks before checking blockchain (#2573)d94092b60
Fix spork propagation while in IBD and fix spork integration tests (#2533)43e757bee
Amend SERIALIZATION_VERSION_STRING string for spork cache (#2339)f7ab6c469
M-of-N-like sporks (#2288)c2958733e
CSporkManager::Clear() should not alter sporkPubKeyID and sporkPrivKey (#2313)8c0dca282
Add versioning to spork cache (#2312)5461e92bf
Add spork to control deterministic MN lists activation73c2ddde7
extract sporkmanager from sporkmessage (#2234)1767e3457
Save/load spork cache (#2206)075ca0903
Protect CSporkManager with critical section (#2213)
Governance
222e5b4f7
Remove proposal/funding votes from MNs that changed the voting key (#2570)5185dd5b7
Use correct time field when removing pre-DIP3 votes (#2535)d2ca9edde
Fix multiple issues with governance voting after spork15 activation (#2526)08dc17871
Drop pre-DIP3 votes from current votes per MN per object (#2524)0c1b683a0
Clear votes which were created before spork15 activation and use operator key for non-funding votes (#2512)da4b5fb16
Remove an unused function from governance object collateral code (#2480)8deb8e90f
Modernize Gov Methods (#2326)0471fa884
Drop MAX_GOVERNANCE_OBJECT_DATA_SIZE (and maxgovobjdatasize in rpc) (#2298)737353c84
Fix IsBlockValueValid/IsOldBudgetBlockValueValid (#2276)a5643f899
Switch RequestGovernanceObjectVotes from pointers to hashes (#2189)0e689341d
Implement Governance ZMQ notification messages (#2160)
GUI
858bb52ad
Show correct operator payee address in DIP3 MN list GUI (#2563)190863722
Remove legacy MN list tabs on spork15 activation (#2567)3e97b0cbd
Make sure that we can get inputType and fUseInstantSend regardless of the way recipients are sorted (#2550)1a7c29b97
Revert "Sort recipients in SendCoins dialog via BIP69 rule (#2546)" (#2549)ca0aec2a3
Match recipients with txouts by scriptPubKey in reassignAmounts() (#2548)09730e1c5
Bail out from update methods in MasternodeList when shutdown is requested (#2551)18cd5965c
Sort recipients in SendCoins dialog via BIP69 rule (#2546)9100c69eb
Allow filtering by proTxHash on DIP3 MN tab (#2532)216119921
Fix wrong total MN count in UI and "masternode count" RPC (#2527)8f8878a94
Add dummy/hidden column to carry the proTxHash per MN list entry... (#2530)a4ea816b2
use aqua gui theme (#2472)aa495405b
[GUI] Realign tx filter widgets (#2485)f4ef388de
Update PS help text for the new denom (#2471)7cabbadef
Implement context menu and extra info on double-click for DIP3 masternode list (#2459)9232a455c
Do not hold cs_main while emitting messages in WalletModel::prepareTransaction (#2463)cf2b547b7
Implement tab for DIP3 MN list (#2454)46462d682
Add a column for IS lock status on Transactions tab (#2433)5ecd91b05
Fix ps collateral/denom creation tx category confusion (#2430)4a78b161f
PrivateSend spending txes should have "outgoing" icon on overview screen (#2396)d7e210341
Fixes inaccurate round count in CoinControlDialog (#2137)
Cleanups/Tests/Docs/Other
b5670c475
Set CLIENT_VERSION_IS_RELEASE to true (#2591)a05eeb21e
Update immer to c89819df92191d6969a6a22c88c72943b8e25016 (#2626)10b3736bd
[0.13.0.x] Translations201901 (#2592)34d2a6038
Release notes 0.13.0.0 draft (#2583)c950a8f51
Merge v0.12.3.4 commits into develop (#2582)6dfceaba5
Force FlushStateToDisk on ConnectTip/DisconnectTip while not in IBD (#2560)552d9089e
Update testnet seeds to point to MNs that are on the new chain (#2558)63b58b1e9
Reintroduce BLSInit to correctly set secure alloctor callbacks (#2543)cbd030352
Serialize the block header in CBlockHeader::GetHash() (#2531)3a6bd8d23
Call ProcessTick every second, handle tick cooldown inside (#2522)973a7f6dd
Fix GUI warnings in debug.log (#2521)c248c48e4
Try to fix a few sporadic instant send failures in DIP3 tests (#2500)7a709b81d
Perform less instant send tests in DIP3 tests (#2499)245c3220e
Sync blocks before creating TXs (#2496)65528e9e7
Bump masternodeman cache version (#2467)6c190d1bb
Fix make deploy error on macos (#2475)df7d12b41
Add univalue test for real numbers (#2460)614ff70b4
Let ccache compress the cache by itself instead of compressing ccache.tar (#2456)40fa1bb49
Add platform dependent include_directories in CMakeLists.txt (#2455)12aba2592
Updating translations for de, es, fi, nl, pt, sk, zh_CN, zh_TW (#2451)52bf5a6b0
Install libxkbcommon0 in gitian-linux.ymlfefe34250
Update manpagesc60687fe6
Sleep longer between attempts in sync_blocks88498ba13
Apply suggestions from code review91af72b18
Allow to specify how log to sleep between attempts in wait_untilf65e74682
Pass "-parallel=3" to reduce load on Travis nodes while testing3c99d9e35
Fix test_fail_create_protx in DIP3 tests4de70f0ac
Test P2SH/multisig payee addresses in DIP3 tests5fc4072ca
Parallel ASN resolve and allow passing of input file names to makeseeds.py (#2432)76a38f6ce
Update defaultAssumeValid, nMinimumChainWork and checkpoints (#2428)0e9ad207a
Update hardcoded seeds (#2429)42ee369b1
[Formatting] masternodelist.* clang+manual format (#2426)e961c7134
Translations 201811 (#2249)f0df5bffa
Clang evo folder and activemasternode.* (#2418)98bdf35f9
bump PS copyright (#2417)e9bb822c1
Clang format PrivateSend files (#2373)bea590958
Fix auto-IS tests (#2414)f03629d6d
Explicitly specify which branch of Wine to install (#2411)5e829a3b1
Update Chia bls-signature to latest version (#2409)51addf9a0
Fix p2p-instantsend.py test (#2408)7e8f07bb9
A couple of fixes for shutdown sequence (#2406)9c455caea
A couple of fixes for init steps (#2405)6560ac64b
Properly escape $ in Jenkinsfile.gitian (#2404)70eb710b1
Undefine DOUBLE after include Chia BLS headers (#2400)052af81b4
Ensure correct order of destruction for BLS secure allocator (#2401)c8804ea5a
Do not ignore patches in depends (#2399)13f2eb449
Force fvisibility=hidden when compiling on macos (#2398)9eb9c99d5
Bump version to 0.13.0 (#2386)8f9b004ca
Support "fast" mode when calling sync_masternodes (#2383)fcea333ba
Rewrite handling of too long depends builds in .travis.yml (#2385)d1debfc26
Implement mt_pooled_secure_allocator and use it for BLS secure allocation (#2375)0692de1c5
Fix prepare_masternodes/create_masternodes in DashTestFramework (#2382)6433a944a
[Trivial] typo Groupped -> Grouped (#2374)59932401b
Change internal references of Darksend to PrivateSend (#2372)e3046adb3
Clear devNetParams and mimic behavior of other param types (#2367)de426e962
Give tail calls enough time to print errors (#2376)0402240a2
Bump CMAKE_CXX_STANDARD to 14 in CMakeLists.txt (#2377)3c9237aa4
Use VersionBitsState instead of VersionBitsTipState to avoid cs_main lock (#2370)c4351fd32
revert 737, DEFAULT_TRANSACTION_MAXFEE = 0.1 * COIN (#2362)1c9ed7806
GDB automation with Python script to measure memory usage in dashd (#1609)d998dc13e
Add cmake to non-mac gitian descriptors (#2360)266dd3232
mkdir -p to allow re-start of failed chia build (#2359)11a0cbf84
InstantSend-related tests refactoring (#2333)3313bbd51
Backport bitcoin #13623 Migrate gitian-build.sh to python (#2319)7b76bbb57
Update Chia BLS libs to latest master (#2357)e2de632f8
Move handling ofsize != SerSize
into SetBuf/GetBuf (#2356)81d60bc28
Fix the issue with transaction amount precision in IS tests (#2353)a45055384
Fix qt configure to detect clang version correctly (#2344)b99d94a0f
Minor build documentation updates (#2343)464191698
Review fixes9c8e4ac76
Move bls stuff from crypto/ to bls/bed1ded8b
Remove duplicated check (#2336)89f744d06
pack of small cleanup fixes / optimizations (#2334)9603c5290
Trivial: Codestyle fixes in InstantSend code (#2332)90ad75911
Fix auto-IS and tests (#2331)b3fc236af
Fix mnodeman.cs vs cs_vPendingMasternodes vs cs_main deadlock (#2200)80fd096b0
Add ECDSA benchmarks78675d9bb
Add BLS and DKG benchmarks3ee27c168
Add highly parallelized worker/helper for BLS/DKG calculationsaa3b0aa8a
Add simple helpers/wrappers for BLS+AES based integrated encryption schemes (IES)9ccf6f584
Implement wrappers around Chia BLS lib3039d44d3
Add Chia bls-signatures library to dependsf3dcb6916
Add cmake to ci/Dockerfile.builder057d7445e
Add libgmp to dependsb0d0093d7
Add helper to rename all threads of a ctpl::thread_pool47a162255
Add ctpl header only library407baccec
Remove obsolete build-openbsd.md (#2328)8a1b51356
Backport: Fix Qt build with XCode (for depends) (#2325)a5aca049d
rename vars in mnsync to make more sense (#2308)ee6a5a33b
Gov cleanup + copyright bump (#2324)d7e5f02ea
Update build documentation (#2323)bd8c54d12
A bit more verbosity for some critical errors (#2316)a4ff2a19a
Fix some warnings and do a couple of other trivial cleanups (#2315)07208a4ae
document spork system with doxygen comments (#2301)2c1a17909
cleanup: remove unused vars, includes, functions (#2306)3d48824b4
Update .clang-format to more accurately show the actual style (#2299)8ea40102c
Remove leftover RBF code from BTC (#2297)76599aad3
Drop (pre-)70208 compatibility code (#2295)016681cd3
Add support for serialization of bitsets and tuples (#2293)2a95dd30c
Fix locking issues in DIP3 unit tests (#2285)47ca06ab3
DIP3 integration tests (#2280)ad6c2893c
Docs - Update Core version number in readme files (#2267)bc7924d41
Add unit tests for DIP3 and DIP4d653ace99
Update CbTx in TestChainSetup9674be8f9
Refactor TestChain100Setup to allow different test chain setupscb37c3972
Bump PROTOCOL_VERSION to 70211, bump MIN_* protocols to 70210 (#2256)b99886532
add link for developer-notes in contributing (#2260)fded838c9
RPC folder: Cleaned up brackets on if, while, for, BOOST_FOREACH. Some whitespace fixes (#2257)5295c78cc
Fix typo in "penalty" (#2247)c566ce75d
Update copyright in specialtx.h/cppe002c50b0
Add "immer" functional/immutable containers library (#2244)799e3c312
Perform Jenkins builds in /dash-src all the time to fix caching issues (#2242)b6896387a
Move DIP1 transaction size checks out of ContextualCheckBlock and use ContextualCheckTransaction instead (#2238)e415fd049
Revert CMasternodePayments::IsTransactionValid to the logic before the recent refactorings (#2237)8da88ecf6
Don't crash when formatting in logging throws exceptions (#2231)2e06f8133
fix missed format parameter (#2229)3d654b981
Build bionic base image in Jenkinsfile.gitian & update docs (#2226)c09f57bd7
Backport move to Ubuntu Bionic and GCC7 in Gitian builds (#2225)7cf9572c2
Backport Bitcoin #11881: Remove Python2 support (#2224)633879cd2
Only use version 1 and 2 transactions for sighash_tests (#2219)2d4e18537
Some useful commits from the DIP3 PR in regard to integration tests (#2218)106bab1ae
Add new ParseXXX methods to easily parse UniValue values (#2211)c4c610783
Use C++14 standard when building (#2209)589a77013
Correction to release date for 0.12.0 (#2205)96435288f
Move block template specific stuff from CBlock to CBlockTemplate (#2195)3d002c946
Fix active masternode task schedule (#2193)65b904526
Add helpers GetSentinelString() and GetDaemonString() to CMasternodePing (#2192)eb202e812
Use ccache in gitian builds (#2185)b47617325
Install python3 in gitian builds (#2182)7a85e24c3
Remove deprecated gitian-rpi2.yml descriptor (#2183)1681d6366
Replace Dash-specific threads with Dash-specific scheduled tasks (#2043)dac090964
remove dashpay.io dns seed entry (#2181)753c2436b
Fix MissingPropertyException on Jenkins when no cache was found (#2180)f3e380659
Move to in-docker CI builds and add Jenkins support (#2178)23dde9f12
Remove a few annoying debug prints from CMasternodeMan (#2179)5036d7dfc
depends: Update Qt download url (#2177)e23339d6f
use nullptr in Dash-specific code (#2166)42c193df0
replace map count/insert w/emplace in instantx.cpp (#2165)fd70a1eb9
iterator cleanup in several places (#2164)df1be90ce
Update links to obsolete documentation (#2162)448e92f4a
GetOutPointPrivateSendRounds readability (#2149)6da2837bd
InstantSend Integration tests (#2141)8ee9333bc
remove boost dependency from Dash-specific code (#2072)a527845e4
Bump to 0.12.4.0 pre-release (#2167)
Credits
Thanks to everyone who directly contributed to this release:
- Alexander Block
- UdjinM6
- PastaPastaPasta
- gladcow
- Nathan Marley
- thephez
- strophy
- PaulieD
- InhumanPerfection
- Spencer Lievens
- -k
- Salisbury
- Solar Designer
- Oleg Girko
- Anton Suprunchuk
As well as 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:
- 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