diff --git a/_templates/sidebar-main.html b/_templates/sidebar-main.html
index aa902a219..56ad99526 100644
--- a/_templates/sidebar-main.html
+++ b/_templates/sidebar-main.html
@@ -63,20 +63,113 @@
-
+
Core Docs
diff --git a/docs/core/api/remote-procedure-call-quick-reference.md b/docs/core/api/remote-procedure-call-quick-reference.md
index 6596b69b0..a08e11a34 100644
--- a/docs/core/api/remote-procedure-call-quick-reference.md
+++ b/docs/core/api/remote-procedure-call-quick-reference.md
@@ -22,10 +22,11 @@ These RPCs are all Dash-specific and not found in Bitcoin Core
* [GetBestBlockHash](../api/remote-procedure-calls-blockchain.md#getbestblockhash): returns the header hash of the most recent block on the best block chain.
* [DumpTxOutset](../api/remote-procedure-calls-blockchain.md#dumptxoutset): Write the serialized UTXO set to disk. _New in Dash Core 18.1.0_
* [GetBestChainLock](../api/remote-procedure-calls-blockchain.md#getbestchainlock): returns the block hash of the best chainlock. _New in Dash Core 0.15.0_
-* [GetBlock](../api/remote-procedure-calls-blockchain.md#getblock): gets a block with a particular header hash from the local block database either as a JSON object or as a serialized block. **Updated in Dash Core 21.0.0**
-* [GetBlockChainInfo](../api/remote-procedure-calls-blockchain.md#getblockchaininfo): provides information about the current state of the block chain. **Updated in Dash Core 21.0.0**
+* [GetBlock](../api/remote-procedure-calls-blockchain.md#getblock): gets a block with a particular header hash from the local block database either as a JSON object or as a serialized block. **_Updated in Dash Core 21.0.0_**
+* [GetBlockChainInfo](../api/remote-procedure-calls-blockchain.md#getblockchaininfo): provides information about the current state of the block chain. **_Updated in Dash Core 21.0.0_**
* [GetBlockCount](../api/remote-procedure-calls-blockchain.md#getblockcount): returns the number of blocks in the local best block chain.
* [GetBlockFilter](../api/remote-procedure-calls-blockchain.md#getblockfilter): retrieves a [BIP157](https://github.com/bitcoin/bips/blob/master/bip-0157.mediawiki) content filter for a particular block. _New in Dash Core 18.0.0_
+* [GetBlockFromPeer](../api/remote-procedure-calls-blockchain.md#getblockfrompeer): attempts to fetch a specific block from a given peer. **Updated in Dash Core 22.0.0**
* [GetBlockHash](../api/remote-procedure-calls-blockchain.md#getblockhash): returns the header hash of a block at the given height in the local best block chain.
* [GetBlockHashes](../api/remote-procedure-calls-blockchain.md#getblockhashes): returns array of hashes of blocks within the timestamp range provided (requires `timestampindex` to be enabled). New in Dash Core 0.12.1
* [GetBlockHeader](../api/remote-procedure-calls-blockchain.md#getblockheader): gets a block header with a particular header hash from the local block database either as a JSON object or as a serialized block header. _Updated in Dash Core 0.16.0_
@@ -34,20 +35,20 @@ These RPCs are all Dash-specific and not found in Bitcoin Core
* [GetChainTips](../api/remote-procedure-calls-blockchain.md#getchaintips): returns information about the highest-height block (tip) of each local block chain. _Updated in Dash Core 0.12.3_
* [GetChainTxStats](../api/remote-procedure-calls-blockchain.md#getchaintxstats): compute statistics about the total number and rate of transactions in the chain. _Updated in Dash Core 18.0.0_
* [GetDifficulty](../api/remote-procedure-calls-blockchain.md#getdifficulty): returns the proof-of-work difficulty as a multiple of the minimum difficulty.
-* [GetMemPoolAncestors](../api/remote-procedure-calls-blockchain.md#getmempoolancestors): returns all in-mempool ancestors for a transaction in the mempool. **Updated in Dash Core 20.0.0**
-* [GetMemPoolDescendants](../api/remote-procedure-calls-blockchain.md#getmempooldescendants): returns all in-mempool descendants for a transaction in the mempool. **Updated in Dash Core 20.0.0**
-* [GetMemPoolEntry](../api/remote-procedure-calls-blockchain.md#getmempoolentry): returns mempool data for given transaction (must be in mempool). **Updated in Dash Core 20.0.0**
-* [GetMemPoolInfo](../api/remote-procedure-calls-blockchain.md#getmempoolinfo): returns information about the node's current transaction memory pool. **Updated in Dash Core 20.1.0**
-* [GetRawMemPool](../api/remote-procedure-calls-blockchain.md#getrawmempool): returns all transaction identifiers (TXIDs) in the memory pool as a JSON array, or detailed information about each transaction in the memory pool as a JSON object. **Updated in Dash Core 20.0.0**
+* [GetMemPoolAncestors](../api/remote-procedure-calls-blockchain.md#getmempoolancestors): returns all in-mempool ancestors for a transaction in the mempool. _Updated in Dash Core 20.0.0_
+* [GetMemPoolDescendants](../api/remote-procedure-calls-blockchain.md#getmempooldescendants): returns all in-mempool descendants for a transaction in the mempool. _Updated in Dash Core 20.0.0_
+* [GetMemPoolEntry](../api/remote-procedure-calls-blockchain.md#getmempoolentry): returns mempool data for given transaction (must be in mempool). _Updated in Dash Core 20.0.0_
+* [GetMemPoolInfo](../api/remote-procedure-calls-blockchain.md#getmempoolinfo): returns information about the node's current transaction memory pool. _Updated in Dash Core 20.1.0_
+* [GetRawMemPool](../api/remote-procedure-calls-blockchain.md#getrawmempool): returns all transaction identifiers (TXIDs) in the memory pool as a JSON array, or detailed information about each transaction in the memory pool as a JSON object. **Updated in Dash Core 22.0.0**
* [GetMerkleBlocks](../api/remote-procedure-calls-blockchain.md#getmerkleblocks): returns an array of hex-encoded merkleblocks for blocks starting from which match . _New in Dash Core 0.15.0_
* [GetSpecialTxes](../api/remote-procedure-calls-blockchain.md#getspecialtxes): returns an array of special transactions found in the specified block _New in Dash Core 0.13.1_
* [GetSpentInfo](../api/remote-procedure-calls-blockchain.md#getspentinfo): returns the txid and index where an output is spent (requires `spentindex` to be enabled). New in Dash Core 0.12.1
-* [GetTxOut](../api/remote-procedure-calls-blockchain.md#gettxout): returns details about an unspent transaction output (UTXO). **Updated in Dash Core 21.0.0**
+* [GetTxOut](../api/remote-procedure-calls-blockchain.md#gettxout): returns details about an unspent transaction output (UTXO). **_Updated in Dash Core 21.0.0_**
* [GetTxOutProof](../api/remote-procedure-calls-blockchain.md#gettxoutproof): returns a hex-encoded proof that one or more specified transactions were included in a block.
* [GetTxOutSetInfo](../api/remote-procedure-calls-blockchain.md#gettxoutsetinfo): returns statistics about the confirmed unspent transaction output (UTXO) set. Note that this call may take some time and that it only counts outputs from confirmed transactions---it does not count outputs from the memory pool. _Updated in Dash Core 18.1.0_
* [PreciousBlock](../api/remote-procedure-calls-blockchain.md#preciousblock): treats a block as if it were received before others with the same work. _New in Dash Core 0.12.3_
* [PruneBlockChain](../api/remote-procedure-calls-blockchain.md#pruneblockchain): prunes the blockchain up to a specified height or timestamp. _New in Dash Core 0.12.3_
-* [SaveMemPool](../api/remote-procedure-calls-blockchain.md#savemempool): dumps the mempool to disk. _New in Dash Core 0.16.0_
+* [SaveMemPool](../api/remote-procedure-calls-blockchain.md#savemempool): dumps the mempool to disk. **Updated in Dash Core 22.0.0**
* [VerifyChain](../api/remote-procedure-calls-blockchain.md#verifychain): verifies each entry in the local block chain database.
* [VerifyTxOutProof](../api/remote-procedure-calls-blockchain.md#verifytxoutproof): verifies that a proof points to one or more transactions in a block, returning the transactions the proof commits to and throwing an RPC error if the block is not in our best block chain.
@@ -63,24 +64,25 @@ These RPCs are all Dash-specific and not found in Bitcoin Core
## [Dash RPCs](../api/remote-procedure-calls-dash.md)
-* [GetGovernanceInfo](../api/remote-procedure-calls-dash.md#getgovernanceinfo): returns an object containing governance parameters. **Updated in Dash Core 20.0.0**
-* [GetCoinJoinInfo](../api/remote-procedure-calls-dash.md#getcoinjoininfo): returns an object containing an information about CoinJoin settings and state. _New in Dash Core 0.15.0_
+* [CoinJoin](../api/remote-procedure-calls-dash.md#coinjoin): controls the CoinJoin process. _Updated in Dash Core 0.12.3_
+* [CoinJoinSalt](../api/remote-procedure-calls-dash.md#coinjoinsalt): controls the CoinJoin salt used in the process. It allows you to generate, retrieve, or set the salt. **Added in Dash Core 22.0.0**
+* [GetCoinJoinInfo](../api/remote-procedure-calls-dash.md#getcoinjoininfo): returns an object containing an information about CoinJoin settings and state. **Updated in Dash Core 22.0.0**
+* [GetGovernanceInfo](../api/remote-procedure-calls-dash.md#getgovernanceinfo): returns an object containing governance parameters. _Updated in Dash Core 20.0.0_
* [GetSuperblockBudget](../api/remote-procedure-calls-dash.md#getsuperblockbudget): returns the absolute maximum sum of superblock payments allowed.
-* [GObject](../api/remote-procedure-calls-dash.md#gobject): provides a set of commands for managing governance objects and displaying information about them. **Updated in Dash Core 20.0.0**
-* [Masternode](../api/remote-procedure-calls-dash.md#masternode): provides a set of commands for managing masternodes and displaying information about them. **_Updated in Dash Core 19.2.0_**
-* [MasternodeList](../api/remote-procedure-calls-dash.md#masternodelist): returns a list of masternodes in different modes. **Updated in Dash Core 20.0.0**
+* [GObject](../api/remote-procedure-calls-dash.md#gobject): provides a set of commands for managing governance objects and displaying information about them. _Updated in Dash Core 20.0.0_
+* [Masternode](../api/remote-procedure-calls-dash.md#masternode): provides a set of commands for managing masternodes and displaying information about them. **Updated in Dash Core 22.0.0**
+* [MasternodeList](../api/remote-procedure-calls-dash.md#masternodelist): returns a list of masternodes in different modes. _Updated in Dash Core 20.0.0_
* [MnSync](../api/remote-procedure-calls-dash.md#mnsync): returns the sync status, updates to the next step or resets it entirely. _Updated in Dash Core 0.14.0_
-* [CoinJoin](../api/remote-procedure-calls-dash.md#coinjoin): controls the CoinJoin process. _Updated in Dash Core 0.12.3_
* [Spork](../api/remote-procedure-calls-dash.md#spork): shows information about the current state of sporks. _Updated in Dash Core 18.1.0_
* [SporkUpdate](../api/remote-procedure-calls-dash.md#sporkupdate): updates the value of the provided spork. _New in Dash Core 18.1.0_
* [VoteRaw](../api/remote-procedure-calls-dash.md#voteraw): compiles and relays a governance vote with provided external signature instead of signing vote internally
## [Evolution RPCs](../api/remote-procedure-calls-evo.md)
-* [BLS](../api/remote-procedure-calls-evo.md#bls): provides a set of commands to execute BLS-related actions. **_Updated in Dash Core 19.0.0_**
-* [ProTx](../api/remote-procedure-calls-evo.md#protx): provides a set of commands to execute ProTx related actions. **Updated in Dash Core 20.1.0**
-* [Quorum](../api/remote-procedure-calls-evo.md#quorum): provides a set of commands for quorums (LLMQs). **Updated in Dash Core 20.1.0**
-* [SubmitChainLock](../api/remote-procedure-calls-evo.md#submitchainlock): allows the submission of a ChainLock signature. **New in Dash Core 20.1.0**
+* [BLS](../api/remote-procedure-calls-evo.md#bls): provides a set of commands to execute BLS-related actions. _Updated in Dash Core 19.0.0_
+* [ProTx](../api/remote-procedure-calls-evo.md#protx): provides a set of commands to execute ProTx related actions. _Updated in Dash Core 20.1.0_
+* [Quorum](../api/remote-procedure-calls-evo.md#quorum): provides a set of commands for quorums (LLMQs). **Updated in Dash Core 22.0.0**
+* [SubmitChainLock](../api/remote-procedure-calls-evo.md#submitchainlock): allows the submission of a ChainLock signature. _New in Dash Core 20.1.0_
* [VerifyChainLock](../api/remote-procedure-calls-evo.md#verifychainlock): tests if a quorum signature is valid for a ChainLock. _New in Dash Core 0.17.0_
* [VerifyISLock](../api/remote-procedure-calls-evo.md#verifyislock): tests if a quorum signature is valid for an InstantSend lock. _New in Dash Core 0.17.0_
@@ -92,7 +94,7 @@ These RPCs are all Dash-specific and not found in Bitcoin Core
## [Mining RPCs](../api/remote-procedure-calls-mining.md)
-* [GetBlockTemplate](../api/remote-procedure-calls-mining.md#getblocktemplate): gets a block template or proposal for use with mining software. **Updated in Dash Core 20.0.0**
+* [GetBlockTemplate](../api/remote-procedure-calls-mining.md#getblocktemplate): gets a block template or proposal for use with mining software. _Updated in Dash Core 20.0.0_
* [GetMiningInfo](../api/remote-procedure-calls-mining.md#getmininginfo): returns various mining-related information. _Updated in Dash Core 18.0.0_
* [GetNetworkHashPS](../api/remote-procedure-calls-mining.md#getnetworkhashps): returns the estimated network hashes per second based on the last n blocks.
* [PrioritiseTransaction](../api/remote-procedure-calls-mining.md#prioritisetransaction): adds virtual priority or fee to a transaction, allowing it to be accepted into blocks mined by this node (or miners which use this node) with a lower priority or fee. (It can also remove virtual priority or fee, requiring the transaction have a higher priority or fee to be accepted into a locally-mined block.) _Updated in Dash Core 0.14.0_
@@ -101,18 +103,18 @@ These RPCs are all Dash-specific and not found in Bitcoin Core
## [Network RPCs](../api/remote-procedure-calls-network.md)
-* [AddNode](../api/remote-procedure-calls-network.md#addnode): attempts to add or remove a node from the addnode list, or to try a connection to a node once.
-* [AddPeerAddress](../api/remote-procedure-calls-network.md#addpeeraddress): adds the address of a potential peer to the address manager. **New in Dash Core 20.0.0**
+* [AddNode](../api/remote-procedure-calls-network.md#addnode): attempts to add or remove a node from the addnode list, or to try a connection to a node once. **Updated in Dash Core 22.0.0**
+* [AddPeerAddress](../api/remote-procedure-calls-network.md#addpeeraddress): adds the address of a potential peer to the address manager. **Updated in Dash Core 22.0.0**
* [ClearBanned](../api/remote-procedure-calls-network.md#clearbanned): clears list of banned nodes.
-* [ClearDiscouraged](../api/remote-procedure-calls-network.md#cleardiscouraged): clears all discouraged nodes. **_New in Dash Core 19.0.0_**
+* [ClearDiscouraged](../api/remote-procedure-calls-network.md#cleardiscouraged): clears all discouraged nodes. _New in Dash Core 19.0.0_
* [DisconnectNode](../api/remote-procedure-calls-network.md#disconnectnode): immediately disconnects from a specified node. _Updated in Dash Core 0.15.0_
-* [GetAddedNodeInfo](../api/remote-procedure-calls-network.md#getaddednodeinfo): returns information about the given added node, or all added nodes (except onetry nodes). Only nodes which have been manually added using the [`addnode` RPC](../api/remote-procedure-calls-network.md#addnode) will have their information displayed. **Updated in Dash Core 21.0.0**
+* [GetAddedNodeInfo](../api/remote-procedure-calls-network.md#getaddednodeinfo): returns information about the given added node, or all added nodes (except onetry nodes). Only nodes which have been manually added using the [`addnode` RPC](../api/remote-procedure-calls-network.md#addnode) will have their information displayed. **_Updated in Dash Core 21.0.0_**
* [GetConnectionCount](../api/remote-procedure-calls-network.md#getconnectioncount): returns the number of connections to other nodes.
* [GetNetTotals](../api/remote-procedure-calls-network.md#getnettotals): returns information about network traffic, including bytes in, bytes out, and the current time.
-* [GetNetworkInfo](../api/remote-procedure-calls-network.md#getnetworkinfo): returns information about the node's connection to the network. **Updated in Dash Core 21.0.0**
-* [GetNodeAddresses](../api/remote-procedure-calls-network.md#getnodeaddresses): returns the known addresses which can potentially be used to find new nodes in the network. **Updated in Dash Core 21.0.0**
-* [GetPeerInfo](../api/remote-procedure-calls-network.md#getpeerinfo): returns data about each connected network node. **Updated in Dash Core 21.0.0**
-* [ListBanned](../api/remote-procedure-calls-network.md#listbanned): lists all banned IPs/Subnets. **Updated in Dash Core 21.0.0**
+* [GetNetworkInfo](../api/remote-procedure-calls-network.md#getnetworkinfo): returns information about the node's connection to the network. **_Updated in Dash Core 21.0.0_**
+* [GetNodeAddresses](../api/remote-procedure-calls-network.md#getnodeaddresses): returns the known addresses which can potentially be used to find new nodes in the network. **_Updated in Dash Core 21.0.0_**
+* [GetPeerInfo](../api/remote-procedure-calls-network.md#getpeerinfo): returns data about each connected network node. **Updated in Dash Core 22.0.0**
+* [ListBanned](../api/remote-procedure-calls-network.md#listbanned): lists all banned IPs/Subnets. **_Updated in Dash Core 21.0.0_**
* [Ping](../api/remote-procedure-calls-network.md#ping): sends a P2P ping message to all connected nodes to measure ping time. Results are provided by the [`getpeerinfo` RPC](../api/remote-procedure-calls-network.md#getpeerinfo) pingtime and pingwait fields as decimal seconds. The P2P [`ping` message](../reference/p2p-network-control-messages.md#ping) is handled in a queue with all other commands, so it measures processing backlog, not just network ping.
* [SetBan](../api/remote-procedure-calls-network.md#setban): attempts add or remove a IP/Subnet from the banned list.
* [SetNetworkActive](../api/remote-procedure-calls-network.md#setnetworkactive): disables/enables all P2P network activity.
@@ -124,31 +126,31 @@ These RPCs are all Dash-specific and not found in Bitcoin Core
* [CombineRawTransaction](../api/remote-procedure-calls-raw-transactions.md#combinerawtransaction): combine multiple partially signed transactions into one transaction. _New in Dash Core 0.15.0_
* [ConvertToPSBT](../api/remote-procedure-calls-raw-transactions.md#converttopsbt): converts a network serialized transaction to a PSBT. _New in Dash Core 18.0.0_
* [CreatePSBT](../api/remote-procedure-calls-raw-transactions.md#createpsbt): creates a transaction in the Partially Signed Transaction (PST) format. _New in Dash Core 18.0.0_
-* [GetAssetUnlockStatuses](../api/remote-procedure-calls-raw-transactions.md#getassetunlockstatuses): returns the status of the provided Asset Unlock indexes at the tip of the chain or at a particular block height if specified. **New in Dash Core 20.1.0**
+* [GetAssetUnlockStatuses](../api/remote-procedure-calls-raw-transactions.md#getassetunlockstatuses): returns the status of the provided Asset Unlock indexes at the tip of the chain or at a particular block height if specified. _New in Dash Core 20.1.0_
* [CreateRawTransaction](../api/remote-procedure-calls-raw-transactions.md#createrawtransaction): creates an unsigned serialized transaction that spends a previous output to a new output with a P2PKH or P2SH address. The transaction is not stored in the wallet or transmitted to the network. _Updated in Dash Core 0.17.0_
* [DecodePSBT](../api/remote-procedure-calls-raw-transactions.md#decodepsbt): returns a JSON object representing the serialized, base64-encoded partially signed Dash transaction. _New in Dash Core 18.0.0_
-* [DecodeRawTransaction](../api/remote-procedure-calls-raw-transactions.md#decoderawtransaction): decodes a serialized transaction hex string into a JSON object describing the transaction. **Updated in Dash Core 21.0.0**
-* [DecodeScript](../api/remote-procedure-calls-raw-transactions.md#decodescript): decodes a hex-encoded P2SH redeem script. **Updated in Dash Core 21.0.0**
+* [DecodeRawTransaction](../api/remote-procedure-calls-raw-transactions.md#decoderawtransaction): decodes a serialized transaction hex string into a JSON object describing the transaction. **_Updated in Dash Core 21.0.0_**
+* [DecodeScript](../api/remote-procedure-calls-raw-transactions.md#decodescript): decodes a hex-encoded P2SH redeem script. **_Updated in Dash Core 21.0.0_**
* [FinalizePSBT](../api/remote-procedure-calls-raw-transactions.md#finalizepsbt): finalizes the inputs of a PSBT. The PSBT produces a network serialized transaction if the transaction is fully signed. _New in Dash Core 18.0.0_
-* [FundRawTransaction](../api/remote-procedure-calls-raw-transactions.md#fundrawtransaction): adds inputs to a transaction until it has enough in value to meet its out value. **Updated in Dash Core 21.0.0**
-* [GetRawTransaction](../api/remote-procedure-calls-raw-transactions.md#getrawtransaction): gets a hex-encoded serialized transaction or a JSON object describing the transaction. By default, Dash Core only stores complete transaction data for UTXOs and your own transactions, so the RPC may fail on historic transactions unless you use the non-default `txindex=1` in your Dash Core startup settings. **Updated in Dash Core 21.0.0**
-* [GetRawTransactionMulti](../api/remote-procedure-calls-raw-transactions.md#getrawtransactionmulti): gets hex-encoded serialized transactions or a JSON object describing the multiple transactions. **Added in Dash Core 20.1.0**
-* [GetTxChainlocks](../api/remote-procedure-calls-raw-transactions.md#gettxchainlocks): returns the block height each transaction was mined at and whether it is ChainLocked or not. **Updated in Dash Core 20.1.0**
+* [FundRawTransaction](../api/remote-procedure-calls-raw-transactions.md#fundrawtransaction): adds inputs to a transaction until it has enough in value to meet its out value. **_Updated in Dash Core 21.0.0_**
+* [GetRawTransaction](../api/remote-procedure-calls-raw-transactions.md#getrawtransaction): gets a hex-encoded serialized transaction or a JSON object describing the transaction. By default, Dash Core only stores complete transaction data for UTXOs and your own transactions, so the RPC may fail on historic transactions unless you use the non-default `txindex=1` in your Dash Core startup settings. **_Updated in Dash Core 21.0.0_**
+* [GetRawTransactionMulti](../api/remote-procedure-calls-raw-transactions.md#getrawtransactionmulti): gets hex-encoded serialized transactions or a JSON object describing the multiple transactions. _New in Dash Core 20.1.0_
+* [GetTxChainlocks](../api/remote-procedure-calls-raw-transactions.md#gettxchainlocks): returns the block height each transaction was mined at and whether it is ChainLocked or not. _Updated in Dash Core 20.1.0_
* [JoinPSBTs](../api/remote-procedure-calls-raw-transactions.md#joinpsbts): joins multiple distinct PSBTs with different inputs and outputs into one PSBT with inputs and outputs from all of the PSBTs.
* [SendRawTransaction](../api/remote-procedure-calls-raw-transactions.md#sendrawtransaction): validates a transaction and broadcasts it to the peer-to-peer network. _Updated in Dash Core 0.15.0_
* [SignRawTransactionWithKey](../api/remote-procedure-calls-raw-transactions.md#signrawtransactionwithkey): signs a transaction in the serialized transaction format using private keys provided in the call. _New in Dash Core 0.17.0_
-* [TestMempoolAccept](../api/remote-procedure-calls-raw-transactions.md#testmempoolaccept): returns the results of mempool acceptance tests indicating if raw transaction (serialized, hex-encoded) would be accepted by mempool. **Updated in Dash Core 20.1.0**
+* [TestMempoolAccept](../api/remote-procedure-calls-raw-transactions.md#testmempoolaccept): returns the results of mempool acceptance tests indicating if raw transaction (serialized, hex-encoded) would be accepted by mempool. _Updated in Dash Core 20.1.0_
* [UTXOUpdatePSBT](../api/remote-procedure-calls-raw-transactions.md#testmempoolaccept): updates a PSBT with data from output descriptors, UTXOs retrieved from the UTXO set or the mempool. _Updated in Dash Core 18.1.0_
## [Utility RPCs](../api/remote-procedure-calls-util.md)
-* [CreateMultiSig](../api/remote-procedure-calls-util.md#createmultisig): creates a P2SH multi-signature address. **Updated in Dash Core 20.0.0**
+* [CreateMultiSig](../api/remote-procedure-calls-util.md#createmultisig): creates a P2SH multi-signature address. _Updated in Dash Core 20.0.0_
* [DeriveAddresses](../api/remote-procedure-calls-util.md#deriveaddresses): derives one or more addresses corresponding to an output descriptor. _Updated in Dash Core 18.1.0_
* [EstimateSmartFee](../api/remote-procedure-calls-util.md#estimatesmartfee): estimates the transaction fee per kilobyte that needs to be paid for a transaction to begin confirmation within a certain number of blocks and returns the number of blocks for which the estimate is valid. _Updated in Dash Core 0.15.0_
* [GetDescriptorInfo](../api/remote-procedure-calls-util.md#getdescriptorinfo): analyses a descriptor. _New in Dash Core 18.0.0_
-* [GetIndexInfo](../api/remote-procedure-calls-util.md#getindexinfo): returns the status of one or all available indices currently running in the node. **New in Dash Core 20.0.0**
+* [GetIndexInfo](../api/remote-procedure-calls-util.md#getindexinfo): returns the status of one or all available indices currently running in the node. _New in Dash Core 20.0.0_
* [SignMessageWithPrivKey](../api/remote-procedure-calls-util.md#signmessagewithprivkey): signs a message with a given private key. _New in Dash Core 0.12.3_
-* [ValidateAddress](../api/remote-procedure-calls-util.md#validateaddress): returns information about the given Dash address. **Updated in Dash Core 20.1.0**
+* [ValidateAddress](../api/remote-procedure-calls-util.md#validateaddress): returns information about the given Dash address. _Updated in Dash Core 20.1.0_
* [VerifyMessage](../api/remote-procedure-calls-util.md#verifymessage): verifies a signed message.
## [Wallet RPCs](../api/remote-procedure-calls-wallet.md)
@@ -157,14 +159,14 @@ These RPCs are all Dash-specific and not found in Bitcoin Core
* [AbandonTransaction](../api/remote-procedure-calls-wallet.md#abandontransaction): marks an in-wallet transaction and all its in-wallet descendants as abandoned. This allows their inputs to be respent.
* [AbortRescan](../api/remote-procedure-calls-wallet.md#abortrescan): stops current wallet rescan. _New in Dash Core 0.15.0_
-* [AddMultiSigAddress](../api/remote-procedure-calls-wallet.md#addmultisigaddress): adds a P2SH multisig address to the wallet. **Updated in Dash Core 20.0.0**
+* [AddMultiSigAddress](../api/remote-procedure-calls-wallet.md#addmultisigaddress): adds a P2SH multisig address to the wallet. _Updated in Dash Core 20.0.0_
* [BackupWallet](../api/remote-procedure-calls-wallet.md#backupwallet): safely copies `wallet.dat` to the specified file, which can be a directory or a path with filename.
-* [CreateWallet](../api/remote-procedure-calls-wallet.md#createwallet): creates and loads a new wallet. **Updated in Dash Core 21.0.0**
+* [CreateWallet](../api/remote-procedure-calls-wallet.md#createwallet): creates and loads a new wallet. **_Updated in Dash Core 21.0.0_**
* [DumpHDInfo](../api/remote-procedure-calls-wallet.md#dumphdinfo): returns an object containing sensitive private info about this HD wallet New in Dash Core 0.12.2
* [DumpPrivKey](../api/remote-procedure-calls-wallet.md#dumpprivkey): returns the wallet-import-format (WIP) private key corresponding to an address. (But does not remove it from the wallet.)
* [DumpWallet](../api/remote-procedure-calls-wallet.md#dumpwallet): creates or overwrites a file with all wallet keys in a human-readable format. _Updated in Dash Core 0.17.0_
* [EncryptWallet](../api/remote-procedure-calls-wallet.md#encryptwallet): encrypts the wallet with a passphrase. This is only to enable encryption for the first time. After encryption is enabled, you will need to enter the passphrase to use private keys.
-* [GetAddressInfo](../api/remote-procedure-calls-wallet.md#getaddressinfo): returns information about the given Dash address. **Updated in Dash Core 21.0.0**
+* [GetAddressInfo](../api/remote-procedure-calls-wallet.md#getaddressinfo): returns information about the given Dash address. **_Updated in Dash Core 21.0.0_**
* [GetAddressesByLabel](../api/remote-procedure-calls-wallet.md#getaddressesbylabel): returns a list of every address assigned to a particular label. _New in Dash Core 0.17.0_
* [GetBalance](../api/remote-procedure-calls-wallet.md#getbalance): gets the balance in decimal dash across all accounts or for a particular account. _Updated in Dash Core 18.1.0_
* [GetBalances](../api/remote-procedure-calls-wallet.md#getbalances): returns an object with all balances denominated in DASH. _Updated in Dash Core 18.2.0_
@@ -172,12 +174,12 @@ These RPCs are all Dash-specific and not found in Bitcoin Core
* [GetRawChangeAddress](../api/remote-procedure-calls-wallet.md#getrawchangeaddress): returns a new Dash address for receiving change. This is for use with raw transactions, not normal use.
* [GetReceivedByAddress](../api/remote-procedure-calls-wallet.md#getreceivedbyaddress): returns the total amount received by the specified address in transactions with the specified number of confirmations. It does not count coinbase transactions. _Updated in Dash Core 0.13.0_
* [GetReceivedByLabel](../api/remote-procedure-calls-wallet.md#getreceivedbylabel): returns the list of addresses assigned the specified label. _New in Dash Core 0.17.0_
-* [GetTransaction](../api/remote-procedure-calls-wallet.md#gettransaction): gets detailed information about an in-wallet transaction. **Updated in Dash Core 20.0.0**
+* [GetTransaction](../api/remote-procedure-calls-wallet.md#gettransaction): gets detailed information about an in-wallet transaction. _Updated in Dash Core 20.0.0_
* [GetUnconfirmedBalance](../api/remote-procedure-calls-wallet.md#getunconfirmedbalance): returns the wallet's total unconfirmed balance.
-* [GetWalletInfo](../api/remote-procedure-calls-wallet.md#getwalletinfo): provides information about the wallet. **Updated in Dash Core 20.0.0**
+* [GetWalletInfo](../api/remote-procedure-calls-wallet.md#getwalletinfo): provides information about the wallet. _Updated in Dash Core 20.0.0_
* [ImportAddress](../api/remote-procedure-calls-wallet.md#importaddress): adds an address or pubkey script to the wallet without the associated private key, allowing you to watch for transactions affecting that address or pubkey script without being able to spend any of its outputs.
* [ImportElectrumWallet](../api/remote-procedure-calls-wallet.md#importelectrumwallet): imports keys from an Electrum wallet export file (.csv or .json) New in Dash Core 0.12.1
-* [ImportDescriptors](../api/remote-procedure-calls-wallet.md#importdescriptors): imports multiple descriptors into the wallet. **New in Dash Core 21.0.0**
+* [ImportDescriptors](../api/remote-procedure-calls-wallet.md#importdescriptors): imports multiple descriptors into the wallet. **_New in Dash Core 21.0.0_**
* [ImportMulti](../api/remote-procedure-calls-wallet.md#importmulti): imports addresses or scripts (with private keys, public keys, or P2SH redeem scripts) and optionally performs the minimum necessary rescan for all imports. _New in Dash Core 0.12.3_
* [ImportPrivKey](../api/remote-procedure-calls-wallet.md#importprivkey): adds a private key to your wallet. The key should be formatted in the wallet import format created by the [`dumpprivkey` RPC](../api/remote-procedure-calls-wallet.md#dumpprivkey).
* [ImportPrunedFunds](../api/remote-procedure-calls-wallet.md#importprunedfunds): imports funds without the need of a rescan. Meant for use with pruned wallets. _New in Dash Core 0.12.3_
@@ -186,13 +188,13 @@ These RPCs are all Dash-specific and not found in Bitcoin Core
* [KeyPoolRefill](../api/remote-procedure-calls-wallet.md#keypoolrefill): fills the cache of unused pre-generated keys (the keypool).
* [ListAddressBalances](../api/remote-procedure-calls-wallet.md#listaddressbalances): lists addresses of this wallet and their balances _New in Dash Core 0.12.3_
* [ListAddressGroupings](../api/remote-procedure-calls-wallet.md#listaddressgroupings): lists groups of addresses that may have had their common ownership made public by common use as inputs in the same transaction or from being used as change from a previous transaction. _Updated in Dash Core 0.17.0_
-* [ListDescriptors](../api/remote-procedure-calls-wallet.md#listdescriptors): lists descriptors imported into a descriptor-enabled wallet. **New in Dash Core 21.0.0**
+* [ListDescriptors](../api/remote-procedure-calls-wallet.md#listdescriptors): lists descriptors imported into a descriptor-enabled wallet. **_New in Dash Core 21.0.0_**
* [ListLabels](../api/remote-procedure-calls-wallet.md#listlabels): returns the list of all labels, or labels that are assigned to addresses with a specific purpose. _New in Dash Core 0.17.0_
* [ListLockUnspent](../api/remote-procedure-calls-wallet.md#listlockunspent): returns a list of temporarily unspendable (locked) outputs.
* [ListReceivedByAddress](../api/remote-procedure-calls-wallet.md#listreceivedbyaddress): lists the total number of dash received by each address. _Updated in Dash Core 0.17.0_
* [ListReceivedByLabel](../api/remote-procedure-calls-wallet.md#listreceivedbylabel): lists the total number of dash received by each label. _New in Dash Core 0.17.0_
-* [ListSinceBlock](../api/remote-procedure-calls-wallet.md#listsinceblock): gets all transactions affecting the wallet which have occurred since a particular block, plus the header hash of a block at a particular depth. **Updated in Dash Core 20.0.0**
-* [ListTransactions](../api/remote-procedure-calls-wallet.md#listtransactions): returns the most recent transactions that affect the wallet. **Updated in Dash Core 20.0.0**
+* [ListSinceBlock](../api/remote-procedure-calls-wallet.md#listsinceblock): gets all transactions affecting the wallet which have occurred since a particular block, plus the header hash of a block at a particular depth. _Updated in Dash Core 20.0.0_
+* [ListTransactions](../api/remote-procedure-calls-wallet.md#listtransactions): returns the most recent transactions that affect the wallet. _Updated in Dash Core 20.0.0_
* [ListUnspent](../api/remote-procedure-calls-wallet.md#listunspent): returns an array of unspent transaction outputs belonging to this wallet. _Updated in Dash Core 18.1.0_
* [ListWalletDir](../api/remote-procedure-calls-wallet.md#listwalletdir): returns a list of wallets in the wallet directory. _New in Dash Core 18.0.0_
* [ListWallets](../api/remote-procedure-calls-wallet.md#listwallets): returns a list of currently loaded wallets. _New in Dash Core 0.15.0_
@@ -201,10 +203,10 @@ These RPCs are all Dash-specific and not found in Bitcoin Core
* [RemovePrunedFunds](../api/remote-procedure-calls-wallet.md#removeprunedfunds): deletes the specified transaction from the wallet. Meant for use with pruned wallets and as a companion to importprunedfunds. _New in Dash Core 0.12.3_
* [RescanBlockChain](../api/remote-procedure-calls-wallet.md#rescanblockchain): rescans the local blockchain for wallet related transactions. _New in Dash Core 0.16.0_
* [ScanTxOutset](../api/remote-procedure-calls-wallet.md#scantxoutset): scans the unspent transaction output set for entries that match certain output descriptors. _New in Dash Core 18.0.0_
-* [Send](../api/remote-procedure-calls-wallet.md#send): sends a transaction with specified outputs. **New in Dash Core 21.0.0**
-* [SendMany](../api/remote-procedure-calls-wallet.md#sendmany): creates and broadcasts a transaction which sends outputs to multiple addresses. **Updated in Dash Core 21.0.0**
-* [SendToAddress](../api/remote-procedure-calls-wallet.md#sendtoaddress): spends an amount to a given address. **Updated in Dash Core 21.0.0**
-* [SetHDSeed](../api/remote-procedure-calls-wallet.md#sethdseed): sets or generates a new HD wallet seed **New in Dash Core 21.0.0**
+* [Send](../api/remote-procedure-calls-wallet.md#send): sends a transaction with specified outputs. **Updated in Dash Core 22.0.0**
+* [SendMany](../api/remote-procedure-calls-wallet.md#sendmany): creates and broadcasts a transaction which sends outputs to multiple addresses. **Updated in Dash Core 22.0.0**
+* [SendToAddress](../api/remote-procedure-calls-wallet.md#sendtoaddress): spends an amount to a given address. **Updated in Dash Core 22.0.0**
+* [SetHDSeed](../api/remote-procedure-calls-wallet.md#sethdseed): sets or generates a new HD wallet seed **_New in Dash Core 21.0.0_**
* [SetLabel](../api/remote-procedure-calls-wallet.md#setlabel): sets the label associated with the given address.
* [SetCoinJoinAmount](../api/remote-procedure-calls-wallet.md#setcoinjoinamount): sets the amount of DASH to be processed _New in Dash Core 0.13.0_
* [SetCoinJoinRounds](../api/remote-procedure-calls-wallet.md#setcoinjoinrounds): sets the number of rounds to use _New in Dash Core 0.13.0_
@@ -212,15 +214,15 @@ These RPCs are all Dash-specific and not found in Bitcoin Core
* [SetWalletFlag](../api/remote-procedure-calls-wallet.md#setwalletflag): changes the state of the given wallet flag for a wallet.
* [SignMessage](../api/remote-procedure-calls-wallet.md#signmessage): signs a message with the private key of an address.
* [SignRawTransactionWithWallet](../api/remote-procedure-calls-wallet.md#signrawtransactionwithwallet): signs a transaction in the serialized transaction format using private keys found in the wallet. _New in Dash Core 0.17.0_
-* [UnloadWallet](../api/remote-procedure-calls-wallet.md#unloadwallet): unloads the wallet referenced by the request endpoint otherwise unloads the wallet specified in the argument. **Updated in Dash Core 20.0.0**
+* [UnloadWallet](../api/remote-procedure-calls-wallet.md#unloadwallet): unloads the wallet referenced by the request endpoint otherwise unloads the wallet specified in the argument. _Updated in Dash Core 20.0.0_
* [UpgradeToHD](../api/remote-procedure-calls-wallet.md#upgradetohd): upgrades non-HD wallets to HD. _New in Dash Core 0.17.0_
-* [UpgradeWallet](../api/remote-procedure-calls-wallet.md#upgradewallet): upgrades wallet version. **Updated in Dash Core 21.0.0**
-* [WalletCreateFundedPSBT](../api/remote-procedure-calls-wallet.md#walletcreatefundedpsbt): creates and funds a transaction in the Partially Signed Transaction (PST) format. Inputs will be added if supplied inputs are not enough. **Updated in Dash Core 21.0.0**
+* [UpgradeWallet](../api/remote-procedure-calls-wallet.md#upgradewallet): upgrades wallet version. **_Updated in Dash Core 21.0.0_**
+* [WalletCreateFundedPSBT](../api/remote-procedure-calls-wallet.md#walletcreatefundedpsbt): creates and funds a transaction in the Partially Signed Transaction (PST) format. Inputs will be added if supplied inputs are not enough. **_Updated in Dash Core 21.0.0_**
* [WalletLock](../api/remote-procedure-calls-wallet.md#walletlock): removes the wallet encryption key from memory, locking the wallet. After calling this method, you will need to call `walletpassphrase` again before being able to call any methods which require the wallet to be unlocked.
* [WalletPassphrase](../api/remote-procedure-calls-wallet.md#walletpassphrase): stores the wallet decryption key in memory for the indicated number of seconds. Issuing the `walletpassphrase` command while the wallet is already unlocked will set a new unlock time that overrides the old one.
* [WalletPassphraseChange](../api/remote-procedure-calls-wallet.md#walletpassphrasechange): changes the wallet passphrase from 'old passphrase' to 'new passphrase'.
* [WalletProcessPSBT](../api/remote-procedure-calls-wallet.md#walletprocesspsbt): updates a PSBT with input information from a wallet and then allows the signing of inputs. _Updated in Dash Core 18.2.0_
-* [WipeWalletTxes](../api/remote-procedure-calls-wallet.md#wipewallettxes): wipes wallet transactions. **_New in Dash Core 19.3.0_**
+* [WipeWalletTxes](../api/remote-procedure-calls-wallet.md#wipewallettxes): wipes wallet transactions. _New in Dash Core 19.3.0_
## [Wallet RPCs (Deprecated)](../api/remote-procedure-calls-wallet-deprecated.md)
@@ -233,3 +235,7 @@ These RPCs are all Dash-specific and not found in Bitcoin Core
## [Removed RPCs](../api/remote-procedure-calls-removed.md)
* [GObject vote-conf](../api/remote-procedure-calls-removed.md#gobject-vote-conf): **was removed in Dash Core 20.0.0**
+* [Protx Register HPMN](../api/remote-procedure-calls-evo.md#protx-register-evo): **was removed in Dash Core 22.0.0**
+* [Protx Register Fund HPMN](../api/remote-procedure-calls-evo.md#protx-register-fund-evo): **was removed in Dash Core 22.0.0**
+* [Protx Register Prepare HPMN](../api/remote-procedure-calls-evo.md#protx-register-prepare-evo): **was removed in Dash Core 22.0.0**
+* [Protx Update Service HPMN](../api/remote-procedure-calls-evo.md#protx-update-service-evo): **was removed in Dash Core 22.0.0**
diff --git a/docs/core/api/remote-procedure-calls-blockchain.md b/docs/core/api/remote-procedure-calls-blockchain.md
index b98ec3a3d..460960e5b 100644
--- a/docs/core/api/remote-procedure-calls-blockchain.md
+++ b/docs/core/api/remote-procedure-calls-blockchain.md
@@ -85,7 +85,7 @@ Name | Type | Presence | Description
`result` | object/null | Required
(exactly 1) | An object containing the requested block, or JSON `null` if an error occurred
→
`blockhash` | string (hex) | Required
(exactly 1) | The hash of the block encoded as hex in RPC byte order
→
`height` | number (int) | Required
(exactly 1) | The height of this block on its block chain
-→
`signature` | string (hex) | Required
(exactly 1) | _Added in Dash Core 0.17.0_
The BLS signature of the ChainLock
+→
`signature` | string (hex) | Required
(exactly 1) | The BLS signature of the ChainLock
→
`known_block` | boolean | Required
(exactly 1) | True if the block is known by this node
*Example from Dash Core 0.17.0*
@@ -183,7 +183,7 @@ Name | Type | Presence | Description
→
`bits` | string (hex) | Required
(exactly 1) | The value of the *nBits* field in the block header, indicating the target threshold this block's header had to pass
→
`difficulty` | number (real) | Required
(exactly 1) | The estimated amount of work done to find this block relative to the estimated amount of work done to find block 0
→
`chainwork` | string (hex) | Required
(exactly 1) | The estimated number of block header hashes miners had to check from the genesis block to this block, encoded as big-endian hex
-→
`nTx` | number (int) | Required
(exactly 1) | _Added in Dash Core 0.16.0_
The number of transactions in the block
+→
`nTx` | number (int) | Required
(exactly 1) | The number of transactions in the block
→
`previousblockhash` | string (hex) | Optional
(0 or 1) | The hash of the header of the previous block, encoded as hex in RPC byte order. Not returned for genesis block
→
`nextblockhash` | string (hex) | Optional
(0 or 1) | The hash of the next block on the best block chain, if known, encoded as hex in RPC byte order
→
`chainlock` | bool | Required
(exactly 1) | *Added in Dash Core 0.14.0*
If set to `true`, this transaction is in a block that is locked (not susceptible to a chain re-org)
@@ -604,6 +604,52 @@ Result:
* [GetBlockHash](../api/remote-procedure-calls-blockchain.md#getblockhash): returns the header hash of a block at the given height in the local best block chain.
* [GetBlock](../api/remote-procedure-calls-blockchain.md#getblock): gets a block with a particular header hash from the local block database either as a JSON object or as a serialized block.
+## GetBlockFromPeer
+
+The `getblockfrompeer` RPC attempts to fetch a specific block from a given peer. The node must
+already have the header for the block (e.g., by using the [`submitheader`
+RPC](./remote-procedure-calls-mining.md#submitheader)).
+
+*Parameter #1---the block hash to fetch*
+
+Name | Type | Presence | Description
+-----------|----------|-------------------------|------------
+blockhash | string | Required
(exactly 1) | The block hash to try to fetch
+
+*Parameter #2---the peer to fetch from*
+
+Name | Type | Presence | Description
+-----------|--------|-------------------------|------------
+peer_id | number | Required
(exactly 1) | The ID of the peer to fetch the block from. You can get peer IDs by using the [`getpeerinfo` RPC](./remote-procedure-calls-network.md#getpeerinfo).
+
+*Result---execution result*
+
+Name | Type | Presence | Description
+------------|---------|-------------------------|------------
+`warnings` | string | Optional
(0 or 1) | Any warnings or issues encountered during the block fetch attempt. If there are no warnings, this field will not appear.
+
+Returns `{}` if a block request was successfully scheduled.
+
+*Example from Dash Core 22.0.0*
+
+Attempt to fetch block `00000021e19ebb597d74627a4df829768c3f26d3185d943a53773e4a681391bd` from peer ID `0`:
+
+```bash
+dash-cli -testnet getblockfrompeer "00000021e19ebb597d74627a4df829768c3f26d3185d943a53773e4a681391bd" 0
+```
+
+Result:
+
+```json
+{
+ "warnings": "Block already downloaded"
+}
+```
+
+*See also*
+
+* [GetBlock](../api/remote-procedure-calls-blockchain.md#getblock): gets a block with a particular header hash from the local block database either as a JSON object or as a serialized block.
+
## GetBlockHash
The [`getblockhash` RPC](../api/remote-procedure-calls-blockchain.md#getblockhash) returns the header hash of a block at the given height in the local best block chain.
@@ -779,7 +825,7 @@ Name | Type | Presence | Description
→
`bits` | string (hex) | Required
(exactly 1) | The value of the *nBits* field in the block header, indicating the target threshold this block's header had to pass
→
`difficulty` | number (real) | Required
(exactly 1) | The estimated amount of work done to find this block relative to the estimated amount of work done to find block 0
→
`chainwork` | string (hex) | Required
(exactly 1) | The estimated number of block header hashes miners had to check from the genesis block to this block, encoded as big-endian hex
-→
`nTx` | number (int) | Required
(exactly 1) | _Added in Dash Core 0.16.0_
The number of transactions in the block
+→
`nTx` | number (int) | Required
(exactly 1) | The number of transactions in the block
→
`previousblockhash` | string (hex) | Optional
(0 or 1) | The hash of the header of the previous block, encoded as hex in RPC byte order. Not returned for genesis block
→
`nextblockhash` | string (hex) | Optional
(0 or 1) | The hash of the next block on the best block chain, if known, encoded as hex in RPC byte order
@@ -897,7 +943,7 @@ Name | Type | Presence | Description
→ →
`bits` | string (hex) | Required
(exactly 1) | The value of the *nBits* field in the block header, indicating the target threshold this block's header had to pass
→ →
`difficulty` | number (real) | Required
(exactly 1) | The estimated amount of work done to find this block relative to the estimated amount of work done to find block 0
→
`chainwork` | string (hex) | Required
(exactly 1) | The estimated number of block header hashes miners had to check from the genesis block to this block, encoded as big-endian hex
-→
`nTx` | number (int) | Required
(exactly 1) | _Added in Dash Core 0.16.0_
The number of transactions in the block
+→
`nTx` | number (int) | Required
(exactly 1) | The number of transactions in the block
→ →
`previousblockhash` | string (hex) | Optional
(0 or 1) | The hash of the header of the previous block, encoded as hex in RPC byte order. Not returned for genesis block
→ →
`nextblockhash` | string (hex) | Optional
(0 or 1) | The hash of the next block on the best block chain, if known, encoded as hex in RPC byte order
@@ -1234,11 +1280,11 @@ Name | Type | Presence | Description
→ →
`ancestorcount` | number (int) | Required
(exactly 1) | The number of in-mempool ancestor transactions (including this one)
→ →
`ancestorsize` | number (int) | Required
(exactly 1) | The size of in-mempool ancestors (including this one)
→ →
`ancestorfees` | number (int) | Required
(exactly 1) | **Deprecated in Dash Core 0.17.0**
The modified fees (see `modifiedfee` above) of in-mempool ancestors (including this one)
-→ →
`fees` | object | Optional
(0 or 1) | _Added in Dash Core 0.17.0_
Object containing fee information
-→→→
`base` | number | Optional
(0 or 1) | _Added in Dash Core 0.17.0_
Transaction fee in DASH
-→→→
`modified` | number | Optional
(0 or 1) | _Added in Dash Core 0.17.0_
Transaction fee with fee deltas used for mining priority in DASH
-→→→
`ancestor` | number | Optional
(0 or 1) | _Added in Dash Core 0.17.0_
Modified fees (see above) of in-mempool ancestors (including this one) in DASH
-→→→
`descendent` | number | Optional
(0 or 1) | _Added in Dash Core 0.17.0_
Modified fees (see above) of in-mempool descendants (including this one) in DASH
+→ →
`fees` | object | Optional
(0 or 1) | Object containing fee information
+→→→
`base` | number | Optional
(0 or 1) | Transaction fee in DASH
+→→→
`modified` | number | Optional
(0 or 1) | Transaction fee with fee deltas used for mining priority in DASH
+→→→
`ancestor` | number | Optional
(0 or 1) | Modified fees (see above) of in-mempool ancestors (including this one) in DASH
+→→→
`descendent` | number | Optional
(0 or 1) | Modified fees (see above) of in-mempool descendants (including this one) in DASH
→ →
`depends` | array | Required
(exactly 1) | An array holding TXIDs of unconfirmed transactions this transaction depends upon (parent transactions). Those transactions must be part of a block before this transaction can be added to a block, although all transactions may be included in the same block. The array may be empty
→ → →
Depends TXID | string | Optional (0 or more) | The TXIDs of any unconfirmed transactions this transaction depends upon, encoded as hex in RPC byte order
→ →
`spentby` | array | Required
(exactly 1) | **Added in Dash Core 20.0.0**
An array of unconfirmed transactions spending outputs from this transaction
@@ -1352,11 +1398,11 @@ Name | Type | Presence | Description
→ →
`ancestorcount` | number (int) | Required
(exactly 1) | The number of in-mempool ancestor transactions (including this one)
→ →
`ancestorsize` | number (int) | Required
(exactly 1) | The size of in-mempool ancestors (including this one)
→ →
`ancestorfees` | number (int) | Required
(exactly 1) | **Deprecated in Dash Core 0.17.0**
The modified fees (see `modifiedfee` above) of in-mempool ancestors (including this one)
-→ →
`fees` | object | Optional
(0 or 1) | _Added in Dash Core 0.17.0_
Object containing fee information
-→→→
`base` | number | Optional
(0 or 1) | _Added in Dash Core 0.17.0_
Transaction fee in DASH
-→→→
`modified` | number | Optional
(0 or 1) | _Added in Dash Core 0.17.0_
Transaction fee with fee deltas used for mining priority in DASH
-→→→
`ancestor` | number | Optional
(0 or 1) | _Added in Dash Core 0.17.0_
Modified fees (see above) of in-mempool ancestors (including this one) in DASH
-→→→
`descendent` | number | Optional
(0 or 1) | _Added in Dash Core 0.17.0_
Modified fees (see above) of in-mempool descendants (including this one) in DASH
+→ →
`fees` | object | Optional
(0 or 1) | Object containing fee information
+→→→
`base` | number | Optional
(0 or 1) | Transaction fee in DASH
+→→→
`modified` | number | Optional
(0 or 1) | Transaction fee with fee deltas used for mining priority in DASH
+→→→
`ancestor` | number | Optional
(0 or 1) | Modified fees (see above) of in-mempool ancestors (including this one) in DASH
+→→→
`descendent` | number | Optional
(0 or 1) | Modified fees (see above) of in-mempool descendants (including this one) in DASH
→ →
`depends` | array | Required
(exactly 1) | An array holding TXIDs of unconfirmed transactions this transaction depends upon (parent transactions). Those transactions must be part of a block before this transaction can be added to a block, although all transactions may be included in the same block. The array may be empty
→ → →
Depends TXID | string | Optional (0 or more) | The TXIDs of any unconfirmed transactions this transaction depends upon, encoded as hex in RPC byte order
→ →
`spentby` | array | Required
(exactly 1) | **Added in Dash Core 20.0.0**
An array of unconfirmed transactions spending outputs from this transaction
@@ -1456,11 +1502,11 @@ Name | Type | Presence | Description
→
`ancestorcount` | number (int) | Required
(exactly 1) | The number of in-mempool ancestor transactions (including this one)
→
`ancestorsize` | number (int) | Required
(exactly 1) | The size of in-mempool ancestors (including this one)
→
`ancestorfees` | number (int) | Required
(exactly 1) | **Deprecated in Dash Core 0.17.0**
The modified fees (see `modifiedfee` above) of in-mempool ancestors (including this one)
-→ →
`fees` | object | Optional
(0 or 1) | _Added in Dash Core 0.17.0_
Object containing fee information
-→→→
`base` | number | Optional
(0 or 1) | _Added in Dash Core 0.17.0_
Transaction fee in DASH
-→→→
`modified` | number | Optional
(0 or 1) | _Added in Dash Core 0.17.0_
Transaction fee with fee deltas used for mining priority in DASH
-→→→
`ancestor` | number | Optional
(0 or 1) | _Added in Dash Core 0.17.0_
Modified fees (see above) of in-mempool ancestors (including this one) in DASH
-→→→
`descendent` | number | Optional
(0 or 1) | _Added in Dash Core 0.17.0_
Modified fees (see above) of in-mempool descendants (including this one) in DASH
+→ →
`fees` | object | Optional
(0 or 1) | Object containing fee information
+→→→
`base` | number | Optional
(0 or 1) | Transaction fee in DASH
+→→→
`modified` | number | Optional
(0 or 1) | Transaction fee with fee deltas used for mining priority in DASH
+→→→
`ancestor` | number | Optional
(0 or 1) | Modified fees (see above) of in-mempool ancestors (including this one) in DASH
+→→→
`descendent` | number | Optional
(0 or 1) | Modified fees (see above) of in-mempool descendants (including this one) in DASH
→
`depends` | array | Required
(exactly 1) | An array holding TXIDs of unconfirmed transactions this transaction depends upon (parent transactions). Those transactions must be part of a block before this transaction can be added to a block, although all transactions may be included in the same block. The array may be empty
→ →
Depends TXID | string | Optional (0 or more) | The TXIDs of any unconfirmed transactions this transaction depends upon, encoded as hex in RPC byte order
→
`spentby` | array | Required
(exactly 1) | **Added in Dash Core 20.0.0**
An array of unconfirmed transactions spending outputs from this transaction
@@ -1571,18 +1617,25 @@ Result:
The [`getrawmempool` RPC](../api/remote-procedure-calls-blockchain.md#getrawmempool) returns all transaction identifiers (TXIDs) in the memory pool as a JSON array, or detailed information about each transaction in the memory pool as a JSON object.
-*Parameter---desired output format*
+*Parameter #1---verbose*
Name | Type | Presence | Description
--- | --- | --- | ---
Format | bool | Optional
(0 or 1) | Set to `true` to get verbose output describing each transaction in the memory pool; set to `false` (the default) to only get an array of TXIDs for transactions in the memory pool
+*Parameter #2---mempool sequence*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+Format | bool | Optional
(0 or 1) | If verbose=false, returns a json object with transaction list and mempool sequence number attached.
+
*Result (format `false`)---an array of TXIDs*
Name | Type | Presence | Description
--- | --- | --- | ---
`result` | array | Required
(exactly 1) | An array of TXIDs belonging to transactions in the memory pool. The array may be empty if there are no transactions in the memory pool
→
TXID | string | Optional
(0 or more) | The TXID of a transaction in the memory pool, encoded as hex in RPC byte order
+→
mempool_sequence | number (int) | Optional
(0 or 1) | *Added in Dash Core 22.0.0*
The mempool sequence value
*Result (format: `true`)---a JSON object describing each transaction*
@@ -1591,24 +1644,24 @@ Name | Type | Presence | Description
`result` | object | Required
(exactly 1) | A object containing transactions currently in the memory pool. May be empty
→
TXID | string : object | Optional
(0 or more) | The TXID of a transaction in the memory pool, encoded as hex in RPC byte order
→ →
`size` | number (int) | Required
(exactly 1) | The size of the serialized transaction in bytes
-→ →
`fee` | amount (Dash) | Required
(exactly 1) | **Deprecated in Dash Core 0.17.0**
The transaction fee paid by the transaction in decimal Dash
-→ →
`modifiedfee` | amount (Dash) | Required
(exactly 1) | **Deprecated in Dash Core 0.17.0**
The transaction fee with fee deltas used for mining priority in decimal Dash
+→ →
`fee` | amount (Dash) | Required
(exactly 1) | *Deprecated in Dash Core 0.17.0*
The transaction fee paid by the transaction in decimal Dash
+→ →
`modifiedfee` | amount (Dash) | Required
(exactly 1) | *Deprecated in Dash Core 0.17.0*
The transaction fee with fee deltas used for mining priority in decimal Dash
→ →
`time` | number (int) | Required
(exactly 1) | The time the transaction entered the memory pool, Unix epoch time format
→ →
`height` | number (int) | Required
(exactly 1) | The block height when the transaction entered the memory pool
-→ →
`descendantcount` | number (int) | Required
(exactly 1) | *Added in Bitcoin Core 0.12.0*
The number of in-mempool descendant transactions (including this one)
-→ →
`descendantsize` | number (int) | Required
(exactly 1) | *Added in Bitcoin Core 0.12.0*
The size of in-mempool descendants (including this one)
-→ →
`descendantfees` | number (int) | Required
(exactly 1) | **Deprecated in Dash Core 0.17.0**
The modified fees (see `modifiedfee` above) of in-mempool descendants (including this one)
-→ →
`ancestorcount` | number (int) | Required
(exactly 1) | *Added in Dash Core 0.12.3 / Bitcoin Core 0.13.0*
The number of in-mempool ancestor transactions (including this one)
-→ →
`ancestorsize` | number (int) | Required
(exactly 1) | *Added in Dash Core 0.12.3 / Bitcoin Core 0.13.0*
The size of in-mempool ancestors (including this one)
-→ →
`ancestorfees` | number (int) | Required
(exactly 1) | **Deprecated in Dash Core 0.17.0**
The modified fees (see `modifiedfee` above) of in-mempool ancestors (including this one)
-→ →
`fees` | object | Optional
(0 or 1) | _Added in Dash Core 0.17.0_
Object containing fee information
-→→→
`base` | number | Optional
(0 or 1) | _Added in Dash Core 0.17.0_
Transaction fee in DASH
-→→→
`modified` | number | Optional
(0 or 1) | _Added in Dash Core 0.17.0_
Transaction fee with fee deltas used for mining priority in DASH
-→→→
`ancestor` | number | Optional
(0 or 1) | _Added in Dash Core 0.17.0_
Modified fees (see above) of in-mempool ancestors (including this one) in DASH
-→→→
`descendent` | number | Optional
(0 or 1) | _Added in Dash Core 0.17.0_
Modified fees (see above) of in-mempool descendants (including this one) in DASH
+→ →
`descendantcount` | number (int) | Required
(exactly 1) | The number of in-mempool descendant transactions (including this one)
+→ →
`descendantsize` | number (int) | Required
(exactly 1) | The size of in-mempool descendants (including this one)
+→ →
`descendantfees` | number (int) | Required
(exactly 1) | *Deprecated in Dash Core 0.17.0*
The modified fees (see `modifiedfee` above) of in-mempool descendants (including this one)
+→ →
`ancestorcount` | number (int) | Required
(exactly 1) | The number of in-mempool ancestor transactions (including this one)
+→ →
`ancestorsize` | number (int) | Required
(exactly 1) | The size of in-mempool ancestors (including this one)
+→ →
`ancestorfees` | number (int) | Required
(exactly 1) | *Deprecated in Dash Core 0.17.0*
The modified fees (see `modifiedfee` above) of in-mempool ancestors (including this one)
+→ →
`fees` | object | Optional
(0 or 1) | Object containing fee information
+→→→
`base` | number | Optional
(0 or 1) | Transaction fee in DASH
+→→→
`modified` | number | Optional
(0 or 1) | Transaction fee with fee deltas used for mining priority in DASH
+→→→
`ancestor` | number | Optional
(0 or 1) | Modified fees (see above) of in-mempool ancestors (including this one) in DASH
+→→→
`descendent` | number | Optional
(0 or 1) | Modified fees (see above) of in-mempool descendants (including this one) in DASH
→ →
`depends` | array | Required
(exactly 1) | An array holding TXIDs of unconfirmed transactions this transaction depends upon (parent transactions). Those transactions must be part of a block before this transaction can be added to a block, although all transactions may be included in the same block. The array may be empty
→ → →
Depends TXID | string | Optional (0 or more) | The TXIDs of any unconfirmed transactions this transaction depends upon, encoded as hex in RPC byte order
-→ →
`spentby` | array | Required
(exactly 1) | _Added in Dash Core 0.17.0_
An array of unconfirmed transactions spending outputs from this transaction
+→ →
`spentby` | array | Required
(exactly 1) | An array of unconfirmed transactions spending outputs from this transaction
→ → →
TXID | string | Optional (0 or more) | The TXIDs of any unconfirmed transactions spending from this transaction
→ →
`unbroadcast` | bool | Required
(exactly 1) | **Added in Dash Core 20.0.0**
True if this transaction is currently unbroadcast (initial broadcast not yet acknowledged by any peers)
→ →
`instantlock` | bool | Required
(exactly 1) | *Added in Dash Core 0.12.3*
Set to `true` for locked [InstantSend](../resources/glossary.md#instantsend) transactions (masternode quorum has locked the transaction inputs via `isdlock` message). Set to `false` if the masternodes have not approved the [InstantSend](../resources/glossary.md#instantsend) transaction
@@ -2206,13 +2259,26 @@ The [`savemempool` RPC](../api/remote-procedure-calls-blockchain.md#savemempool)
*Parameters: none*
-*Example from Dash Core 0.16.0*
+*Result---output filename*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`result` | object/null | Required
(exactly 1) | An object containing the filename the mempool was saved to
+→
`filename` | string | Required
(exactly 1) | The directory and file where the mempool was saved
+
+*Example from Dash Core 22.0.0*
``` bash
dash-cli savemempool
```
-Result (no output from dash-cli).
+Result:
+
+```json
+{
+ "filename": "/home/phez/.dashcore/testnet3/mempool.dat"
+}
+```
*See also: none*
diff --git a/docs/core/api/remote-procedure-calls-dash.md b/docs/core/api/remote-procedure-calls-dash.md
index ce56bdfbe..acafd98b9 100644
--- a/docs/core/api/remote-procedure-calls-dash.md
+++ b/docs/core/api/remote-procedure-calls-dash.md
@@ -6,6 +6,170 @@
# Dash RPCs
+
+
+## CoinJoin
+
+As of Dash Core 0.12.3, this is not supported on masternodes since wallet functionality is disabled on them for security reasons.
+
+The [`coinjoin` RPC](#coinjoin) controls the CoinJoin process (previously named `privatesend` prior to Dash Core 0.17.0).
+
+| Name | Type | Presence | Description |
+| ------ | ------ | ----------------------- | ---------------------------------------------------------------------------------------------------------- |
+| `mode` | string | Required
(exactly 1) | The command mode to use:
`start` - Start CoinJoin
`stop` - Stop CoinJoin
`reset` - Reset CoinJoin |
+
+**Command Mode - `start`**
+
+*Result---start command return status*
+
+| Name | Type | Presence | Description |
+| -------- | ------ | ----------------------- | --------------------- |
+| `result` | string | Required
(exactly 1) | Command return status |
+
+*Example from Dash Core 0.17.0*
+
+``` bash
+dash-cli -testnet coinjoin start
+```
+
+Result:
+
+```text
+Mixing started successfully
+```
+
+**Command Mode - `stop`**
+
+*Result---stop command return status*
+
+| Name | Type | Presence | Description |
+| -------- | ------ | ----------------------- | --------------------- |
+| `result` | string | Required
(exactly 1) | Command return status |
+
+*Example from Dash Core 0.17.0*
+
+``` bash
+dash-cli -testnet coinjoin stop
+```
+
+Result:
+
+```text
+Mixing was stopped
+```
+
+**Command Mode - `reset`**
+
+*Result---reset command return status*
+
+| Name | Type | Presence | Description |
+| -------- | ------ | ----------------------- | --------------------- |
+| `result` | string | Required
(exactly 1) | Command return status |
+
+*Example from Dash Core 0.17.0*
+
+``` bash
+dash-cli -testnet coinjoin reset
+```
+
+Result:
+
+```text
+Mixing was reset
+```
+
+*See also: none*
+
+## CoinJoinSalt
+
+The [`coinjoinsalt` RPC](#coinjoinsalt) controls the CoinJoin salt used in the process. It allows
+you to generate, retrieve, or set the salt.
+
+| Name | Type | Presence | Description |
+| --------- | ------ | ----------------------- | ------------------------------------------------------------------------------------------------ |
+| `command` | string | Required
(exactly 1) | The command mode to use:
`generate` - Generate new CoinJoin salt
`get` - Fetch existing CoinJoin salt
`set` - Set new CoinJoin salt |
+
+**Command Mode - `generate`**
+
+Generates a new CoinJoin salt and stores it in the wallet database. Note that a new salt cannot be
+generated if CoinJoin mixing is in process or if the wallet has private keys disabled.
+
+| Name | Type | Presence | Description |
+| ----------- | ------- | ------------------------------- | ----------- |
+| `overwrite` | boolean | Optional
(default: `false`) | Allows generating new salt even if an existing salt is present and/or there is a CoinJoin balance |
+
+*Result---generate command return status*
+
+| Name | Type | Presence | Description |
+| -------- | ------- | ----------------------- | ---------------------------------- |
+| `result` | boolean | Required
(exactly 1) | Status of CoinJoin salt generation |
+
+*Examples*
+
+```bash
+dash-cli -testnet coinjoinsalt generate
+```
+
+Result:
+
+```text
+true
+```
+
+**Command Mode - `get`**
+
+Fetches the existing CoinJoin salt. Note that the salt cannot be fetched if the wallet has private
+keys disabled.
+
+*Result---get command return value*
+
+| Name | Type | Presence | Description |
+| ----- | ------ | ----------------------- | ------------------------- |
+| `salt` | string | Required
(exactly 1) | The current CoinJoin salt (in hexadecimal format) |
+
+*Examples*
+
+```bash
+dash-cli -testnet coinjoinsalt get
+```
+
+Result:
+
+```text
+"c2ca...4546"
+```
+
+**Command Mode - `set`**
+
+Sets a new CoinJoin salt. The salt cannot be set if CoinJoin mixing is in process or if the wallet
+has private keys disabled. This command will overwrite the existing salt, and if a CoinJoin balance
+is present, the wallet will rescan.
+
+| Name | Type | Presence | Description |
+| ----------- | ------- | ------------------------------- | ----------- |
+| `salt` | string | Required
(exactly 1) | The desired CoinJoin salt value for the wallet (in hexadecimal format) |
+| `overwrite` | boolean | Optional
(default: `false`) | Allows overwriting the salt even if a CoinJoin balance is present |
+
+*Result---set command return status*
+
+| Name | Type | Presence | Description |
+| -------- | ------- | ----------------------- | -------------------------------------- |
+| `result` | boolean | Required
(exactly 1) | Status of CoinJoin salt change request |
+
+*Examples*
+
+```bash
+dash-cli -testnet coinjoinsalt set f4184fc596403b9d638783cf57adfe4c75c605f6356fbc91338530e9831e9e16
+```
+
+Result:
+
+```text
+true
+```
+
+*See also: none*
+
## GetGovernanceInfo
The [`getgovernanceinfo` RPC](#getgovernanceinfo) returns an object containing governance parameters.
@@ -61,39 +225,38 @@ The [`getcoinjoininfo` RPC](#getcoinjoininfo) returns an object containing an in
*Result---(for regular nodes) information about the pool*
-| Name | Type | Presence | Description |
-| ------------------------ | --------------------- | ----------------------- | ---------------------------------------------------------------------------------------------------- |
-| `result` | object | Required
(exactly 1) | Information about the pool |
-| →
`enabled` | bool | Required
(exactly 1) | Whether CoinJoin functionality is enabled |
-| →
`multisession` | bool | Required
(exactly 1) | Whether CoinJoin multisession option is enabled |
-| →
`max_sessions` | number (int) | Required
(exactly 1) | How many parallel sessions can there be at once |
-| →
`max_rounds` | number (int) | Required
(exactly 1) | How many rounds to process |
-| →
`max_amount` | number (int) | Required
(exactly 1) | How many DASH to keep processed |
-| →
`max_denoms` | number (int) | Required
(exactly 1) | **Removed in Dash Core 0.16.0**
How many inputs of each denominated amount to create |
-| →
`denoms_goal` | number (int) | Required
(exactly 1) | *Added in Dash Core 0.16.0*
How many inputs of each denominated amount to target |
+| Name | Type | Presence | Description |
+| ------------------------ | --------------------- | ----------------------- | ----------- |
+| `result` | object | Required
(exactly 1) | Information about the pool |
+| →
`enabled` | bool | Required
(exactly 1) | Whether CoinJoin functionality is enabled |
+| →
`multisession` | bool | Required
(exactly 1) | Whether CoinJoin multisession option is enabled |
+| →
`max_sessions` | number (int) | Required
(exactly 1) | How many parallel sessions can there be at once |
+| →
`max_rounds` | number (int) | Required
(exactly 1) | How many rounds to process |
+| →
`max_amount` | number (int) | Required
(exactly 1) | How many DASH to keep processed |
+| →
`denoms_goal` | number (int) | Required
(exactly 1) | *Added in Dash Core 0.16.0*
How many inputs of each denominated amount to target |
| →
`denoms_hardcap` | number (int) | Required
(exactly 1) | *Added in Dash Core 0.16.0*
Maximum limit of how many inputs of each denominated amount to create |
-| →
`queue_size` | number (int) | Required
(exactly 1) | How many queues there are currently on the network |
-| →
`running` | bool | Required
(exactly 1) | Whether CoinJoin is currently running |
-| →
`sessions` | array of json objects | Required
(exactly 1) | Information about session(s) |
-| → →
Session | object | Optional
(1 or more) | Information for a session |
-| → → →
`protxhash` | string | Required
(exactly 1) | The ProTxHash of the masternode |
-| → → →
`outpoint` | string (txid-index) | Required
(exactly 1) | The outpoint of the masternode |
-| → → →
`service` | string (host:port) | Required
(exactly 1) | The IP address and port of the masternode |
-| → → →
`denomination` | number (int) | Required
(exactly 1) | The denomination of the session (in DASH) |
-| → → →
`state` | string | Required
(exactly 1) | Current state of the session |
-| → → →
`entries_count` | number (int) | Required
(exactly 1) | The number of entries in the session |
-| →
`keys_left` | number (int) | Required
(exactly 1) | How many new keys are left since last automatic backup |
-| →
`warnings` | string | Optional
(exactly 1) | Any warnings |
+| →
`queue_size` | number (int) | Required
(exactly 1) | How many queues there are currently on the network |
+| →
`running` | bool | Required
(exactly 1) | Whether CoinJoin is currently running |
+| →
`sessions` | array of json objects | Required
(exactly 1) | Information about session(s) |
+| → →
Session | object | Optional
(1 or more) | Information for a session |
+| → → →
`protxhash` | string | Required
(exactly 1) | The ProTxHash of the masternode |
+| → → →
`outpoint` | string (txid-index) | Required
(exactly 1) | The outpoint of the masternode |
+| → → →
`service` | string (host:port) | Required
(exactly 1) | The IP address and port of the masternode |
+| → → →
`denomination` | number (int) | Required
(exactly 1) | The denomination of the session (in DASH) |
+| → → →
`state` | string | Required
(exactly 1) | Current state of the session |
+| → → →
`entries_count` | number (int) | Required
(exactly 1) | The number of entries in the session |
+| →
`keys_left` | number (int) | Optional
(0 or 1) | *Changed to optional in Dash Core 22.0.0*
How many new keys are left since last automatic backup |
+| →
`warnings` | string | Optional
(exactly 1) | Any warnings |
*Result---(for masternodes) information about the pool*
-| Name | Type | Presence | Description |
-| -------------------- | ------------ | ----------------------- | -------------------------------------------------- |
-| `result` | object | Required
(exactly 1) | Information about the pool |
+| Name | Type | Presence | Description |
+| -------------------- | ------------ | ----------------------- | ----------- |
+| `result` | object | Required
(exactly 1) | Information about the pool |
| →
`queue_size` | number (int) | Required
(exactly 1) | How many queues there are currently on the network |
-| →
`denomination` | number (int) | Required
(exactly 1) | The denomination of the session (in DASH) |
-| →
`state` | string | Required
(exactly 1) | Current state of the session |
-| →
`entries_count` | number (int) | Required
(exactly 1) | The number of entries in the session |
+| →
`denomination` | number (int) | Required
(exactly 1) | The denomination of the session (in DASH) |
+| →
`state` | string | Required
(exactly 1) | Current state of the session |
+| →
`entries_count` | number (int) | Required
(exactly 1) | The number of entries in the session |
*Example from Dash Core 0.17.0 (regular node)*
@@ -1030,6 +1193,44 @@ dash-cli -testnet gobject vote-many \
The [`masternode` RPC](#masternode) provides a set of commands for managing masternodes and displaying information about them.
+### Masternode Connect
+
+The [`masternode connect` RPC](#masternode-connect) initiates a connection to a specified masternode address, with optional support for the BIP324 v2 transport protocol.
+
+_Parameter #1---the address of the masternode_
+
+| Name | Type | Presence | Description |
+| --------- | ------ | ----------------------- | ----------- |
+| address | string | Required
(exactly 1) | The IP address and port of the masternode to connect to (e.g., `192.168.1.100:19999`) |
+
+_Parameter #2---transport protocol options_
+
+| Name | Type | Presence | Description |
+| ------------ | ------- | -------------------- | ----------- |
+| v2transport | bool | Optional
(0 or 1) | Set to `true` to attempt connection using the BIP324 v2 transport protocol. Defaults to `false`. |
+
+_Result---connection status_
+
+| Name | Type | Presence | Description |
+| ------------ | ------- | ----------------------- | ----------- |
+| `result` | string | Required
(exactly 1) | Command return status |
+
+*Example from Dash Core 22.0.0*
+
+Connect to a masternode at address `192.168.1.100` using the default transport protocol:
+
+```bash
+dash-cli masternode connect "192.168.1.100:19999"
+```
+
+Result:
+
+```text
+successfully connected
+```
+
+*See also: none*
+
### Masternode Count
The `masternode count` RPC prints the number of all known masternodes.
@@ -1664,80 +1865,6 @@ success
* [Masternode](#masternode): provides a set of commands for managing masternodes and displaying information about them.
* [MasternodeList](#masternodelist): returns a list of masternodes in different modes.
-
-
-## CoinJoin
-
-As of Dash Core 0.12.3, this is not supported on masternodes since wallet functionality is disabled on them for security reasons.
-
-The [`coinjoin` RPC](#coinjoin) controls the CoinJoin process (previously named `privatesend` prior to Dash Core 0.17.0).
-
-| Name | Type | Presence | Description |
-| ------ | ------ | ----------------------- | ---------------------------------------------------------------------------------------------------------- |
-| `mode` | string | Required
(exactly 1) | The command mode to use:
`start` - Start CoinJoin
`stop` - Stop CoinJoin
`reset` - Reset CoinJoin |
-
-**Command Mode - `start`**
-
-*Result---start command return status*
-
-| Name | Type | Presence | Description |
-| -------- | ------ | ----------------------- | --------------------- |
-| `result` | string | Required
(exactly 1) | Command return status |
-
-*Example from Dash Core 0.17.0*
-
-``` bash
-dash-cli -testnet coinjoin start
-```
-
-Result:
-
-```text
-Mixing started successfully
-```
-
-**Command Mode - `stop`**
-
-*Result---stop command return status*
-
-| Name | Type | Presence | Description |
-| -------- | ------ | ----------------------- | --------------------- |
-| `result` | string | Required
(exactly 1) | Command return status |
-
-*Example from Dash Core 0.17.0*
-
-``` bash
-dash-cli -testnet coinjoin stop
-```
-
-Result:
-
-```text
-Mixing was stopped
-```
-
-**Command Mode - `reset`**
-
-*Result---reset command return status*
-
-| Name | Type | Presence | Description |
-| -------- | ------ | ----------------------- | --------------------- |
-| `result` | string | Required
(exactly 1) | Command return status |
-
-*Example from Dash Core 0.17.0*
-
-``` bash
-dash-cli -testnet coinjoin reset
-```
-
-Result:
-
-```text
-Mixing was reset
-```
-
-*See also: none*
-
## Spork
The [`spork` RPC](#spork) shows information about the current state of sporks.
diff --git a/docs/core/api/remote-procedure-calls-evo.md b/docs/core/api/remote-procedure-calls-evo.md
index fac14de03..037f0316c 100644
--- a/docs/core/api/remote-procedure-calls-evo.md
+++ b/docs/core/api/remote-procedure-calls-evo.md
@@ -1401,12 +1401,6 @@ ec66f97568727a9e5188acb3ccf680086ae11217236efcccd67b0b72e83c79a043d6c6d064378fdd
47d9401e0a569a5488728e09542d0545ab56f8249a4b21e03445fa411e
```
-### ProTx Register HPMN
-
-:::{deprecated} 20.0.0
-The `protx *_hpmn` RPC commands were renamed in Dash Core 20.0.0 and can now be accessed as `protx *_evo` (e.g. `protx register_hpmn` is now `protx register_evo`).
-:::
-
### ProTx Register Fund Evo
The `protx register_fund_evo` RPC creates, funds, and sends a ProTx to the network. The resulting transaction will move 4000 Dash to the address specified by `collateralAddress` and will then function as the collateral of your evonode. A few of the limitations you see in the arguments are temporary and might be lifted after DIP3 is fully deployed. Requires the wallet passphrase to be provide with the [`walletpassphrase` RPC](../api/remote-procedure-calls-wallet.md#walletpassphrase) if the wallet is encrypted.
@@ -1536,12 +1530,6 @@ c207ebd525793ccb43f60ce34a5cd5f4011976a9145a375814e9caf5b8575a8221be246457e5c5c2
8d88ac45084a0f63d6f06767c941ffd5af4ed17ea0e28afa481e46b2bdbadbd8446c8c00\
```
-### ProTx Register Fund HPMN
-
-:::{deprecated} 20.0.0
-The `protx *_hpmn` RPC commands were renamed in Dash Core 20.0.0 and can now be accessed as `protx *_evo` (e.g. `protx register_hpmn` is now `protx register_evo`).
-:::
-
### ProTx Register Prepare Evo
The `protx register_prepare_evo` RPC creates an unsigned ProTx and a message that must be signed externally with the private key that corresponds to `collateralAddress` to prove collateral ownership. The prepared transaction will also contain inputs and outputs to cover fees.
@@ -1648,12 +1636,6 @@ Result:
}
```
-### ProTx Register Prepare HPMN
-
-:::{deprecated} 20.0.0
-The `protx *_hpmn` RPC commands were renamed in Dash Core 20.0.0 and can now be accessed as `protx *_evo` (e.g. `protx register_hpmn` is now `protx register_evo`).
-:::
-
### ProTx Update Service Evo
The `protx update_service_evo` RPC creates and sends a ProUpServTx to the network. This will update the IP address and the Platform fields of an evonode. If this is done for an evonode that was PoSe-banned, the ProUpServTx will also revive this evonode.
@@ -1728,12 +1710,6 @@ Result:
5b6cfa1bdd3c8b7e0b9550b9c4e809381f81a410bc7f241d3879dd736fd51270
```
-### ProTx Update Service HPMN
-
-:::{deprecated} 20.0.0
-The `protx *_hpmn` RPC commands were renamed in Dash Core 20.0.0 and can now be accessed as `protx *_evo` (e.g. `protx register_hpmn` is now `protx register_evo`).
-:::
-
### ProTx Register Submit
The `protx register_submit` RPC combines the unsigned ProTx and a signature of the signMessage, signs all inputs which were added to cover fees and submits the resulting transaction to the network. Note: See [`protx register_prepare`](#protx-register-prepare) for more info about creating a ProTx and a message to sign.
@@ -2949,6 +2925,64 @@ Result:
}
```
+### Quorum GetData
+
+The [`quorum getdata` RPC](#quorum-getdata) sends a [`qgetdata` message](../reference/p2p-network-quorum-messages.md#qgetdata) to a specified peer, requesting specific quorum-related data from that peer.
+
+_Parameter #1---the internal node ID_
+
+| Name | Type | Presence | Description |
+|----------|--------|-------------------------|-------------|
+| `nodeId` | number | Required
(exactly 1) | The internal nodeId of the peer from which quorum data is requested |
+
+_Parameter #2---the LLMQ type_
+
+| Name | Type | Presence | Description |
+|-----------|--------|-------------------------|-------------|
+| `llmqType`| number | Required
(exactly 1) | The LLMQ type associated with the quorum data being requested |
+
+_Parameter #3---the quorum hash_
+
+| Name | Type | Presence | Description |
+|--------------|--------|-------------------------|-------------|
+| `quorumHash` | string | Required
(exactly 1) | The quorum hash for the quorum data being requested |
+
+_Parameter #4---the data mask_
+
+| Name | Type | Presence | Description |
+|-------------|--------|-------------------------|-------------|
+| `dataMask` | number | Required
(exactly 1) | Specifies the type of data requested. Possible values are:
`1` - Quorum verification vector
`2` - Encrypted contributions for member specified by `proTxHash` (`proTxHash` must be specified if this option is used)
`3` - Both (1 and 2) |
+
+_Parameter #5---the ProTxHash_
+
+| Name | Type | Presence | Description |
+|------------|--------|---------------------------|-------------|
+| `proTxHash`| string | Optional
(default="") | The ProTxHash for the contributions requested. Must be a member of the specified LLMQ. Cannot be specified if `dataMask` is set to `1`. Required if `dataMask` is set to `2`. |
+
+_Result---execution result_
+
+| Name | Type | Presence | Description |
+|---------------------|-----------------|-------------------------|-------------|
+| `success` | bool | Required
(exactly 1) | Displays `true` if the data request was successful or `false` if it failed |
+
+_Example from Dash Core 22.0.0_
+
+Requesting the quorum verification vector from a peer with node ID `12` for a quorum of type `2`:
+
+```bash
+dash-cli quorum getdata 1 2 "000000822d2b1b311af360750b6448917f10d8b92d2ea2a7bbae221e859354f9" 1
+```
+
+Result:
+
+```text
+true
+```
+
+_See also_
+
+* [Quorum List](#quorum-list): displays a list of on-chain quorums.
+
### Quorum GetRecSig
The `quorum getrecsig` RPC gets the recovered signature for a previous threshold-signing message request.
diff --git a/docs/core/api/remote-procedure-calls-network.md b/docs/core/api/remote-procedure-calls-network.md
index 7a6dfcb1c..ff1d05751 100644
--- a/docs/core/api/remote-procedure-calls-network.md
+++ b/docs/core/api/remote-procedure-calls-network.md
@@ -12,20 +12,26 @@ The [`addnode` RPC](../api/remote-procedure-calls-network.md#addnode) attempts t
*Parameter #1---hostname/IP address and port of node to add or remove*
-| Name | Type | Presence | Description |
-| ------ | ------ | ----------------------- | ----------------------------------------------------------------- |
+| Name | Type | Presence | Description |
+| ------ | ------ | ----------------------- | ----------- |
| `node` | string | Required
(exactly 1) | The node to add as a string in the form of `:`. |
*Parameter #2---whether to add or remove the node, or to try only once to connect*
-| Name | Type | Presence | Description |
-| --------- | ------ | ----------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| Name | Type | Presence | Description |
+| --------- | ------ | ----------------------- | ----------- |
| `command` | string | Required
(exactly 1) | What to do with the IP address above. Options are:
• `add` to add a node to the addnode list. Up to 8 nodes can be added additional to the default 8 nodes. Not limited by `-maxconnections`
• `remove` to remove a node from the list. If currently connected, this will disconnect immediately
• `onetry` to immediately attempt connection to the node even if the outgoing connection slots are full; this will only attempt the connection once |
+*Parameter #3---v2 transport*
+
+| Name | Type | Presence | Description |
+| ------ | ------ | ----------------------- | ----------- |
+| `v2transport` | bool | Optional
(0 or1) | Attempt to connect using BIP324 v2 transport protocol (ignored for `remove` command). Default=set by `-v2transport` option. |
+
_Result---`null` plus error on failed remove_
-| Name | Type | Presence | Description |
-| -------- | ---- | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| Name | Type | Presence | Description |
+| -------- | ---- | ----------------------- | ----------- |
| `result` | null | Required
(exactly 1) | Always JSON `null` whether the node was added, removed, tried-and-connected, or tried-and-not-connected. The JSON-RPC error field will be set only if you try adding a node that was already added or removing a node that is not on the addnodes list |
*Example from Dash Core 0.12.2*
@@ -44,8 +50,12 @@ Result (no output from `dash-cli` because result is set to `null`).
## AddPeerAddress
+:::{attention}
+This RPC is for testing only.
+:::
+
The [`addpeeraddress` RPC](../api/remote-procedure-calls-network.md#addpeeraddress) adds the address
-of a potential peer to the address manager. **This RPC is for testing only.**
+of a potential peer to the address manager.
*Parameter #1---IP address of node to add*
@@ -59,6 +69,12 @@ of a potential peer to the address manager. **This RPC is for testing only.**
| ---- | ---- | -------- | ----------- |
| `port` | number | Required
(exactly 1) | The port of the peer |
+*Parameter #3---add to tried address table*
+
+| Name | Type | Presence | Description |
+| ---- | ---- | -------- | ----------- |
+| `tried` | bool | Optional
(0 or 1) | If true, attempt to add the peer to the tried addresses table |
+
*Result---a list of added nodes*
| Name | Type | Presence | Description |
@@ -397,7 +413,7 @@ The [`getnetworkinfo` RPC](../api/remote-procedure-calls-network.md#getnetworkin
| →
`connections_mn` | number (int) | Required
(exactly 1) | _Added in Dash Core 18.0.0_
The number of verified masternode connections |
| →
`connections_mn_in` | number (int) | Required
(exactly 1) | _Added in Dash Core 18.0.0_
The number of inbound verified masternode connections |
| →
`connections_mn_out` | number (int) | Required
(exactly 1) | _Added in Dash Core 18.0.0_
The number of outbound verified masternode connections |
-| →
`socketevents` | string | Required
(exactly 1) | _Added in Dash Core 0.16.0_
The socket events mode, either `epoll`, `poll`, or `select` |
+| →
`socketevents` | string | Required
(exactly 1) | The socket events mode, either `epoll`, `poll`, or `select` |
| →
`networks` | array | Required
(exactly 1) | An array with three objects: one describing the IPv4 connection, one describing the IPv6 connection, and one describing the Tor hidden service (onion) connection |
| → →
Network | object | Optional
(0 to 3) | An object describing a network. If the network is unroutable, it will not be returned |
| → → →
`name` | string | Required
(exactly 1) | The name of the network. Either `ipv4`, `ipv6`, or `onion` |
@@ -554,8 +570,10 @@ The [`getpeerinfo` RPC](../api/remote-procedure-calls-network.md#getpeerinfo) re
| → →
`bytesrecv_per_msg` | string :
object | Required
(exactly 1) | *Added in Bitcoin Core 0.13.0*
Information about total received bytes aggregated by message type |
| → → →
Message Type | number (int) | Required
(1 or more) | Total received bytes aggregated by message type. One field for every used message type |
| `connection_type` | string | Required
(exactly 1) | **Added in Dash Core 20.1.0**
Type of connection:
outbound-full-relay, block-relay-only, inbound, manual, addr-fetch, feeler.
Describes how the connection was established. Set to `true` if this node was added via the [`addnode` RPC](../api/remote-procedure-calls-network.md#addnode).
**Note: This output is subject to change in future releases as connection behaviors are refined.** |
+| `transport_protocol_type`| string | Optional
(0 or 1) | **Added in Dash Core 22.0.0**
The transport protocol type:
`detecting` - peer could be v1 or v2
`v1` - plaintext transport protocol
`v2` - BIP324 encrypted transport protocol |
+| `session_id` | string | Optional
(0 or 1) | **Added in Dash Core 22.0.0**
The session ID for this connection, or "" if there is none ("v2" transport protocol only). |
-*Example from Dash Core 21.0.0*
+*Example from Dash Core 22.0.0*
```bash
dash-cli -testnet getpeerinfo
@@ -589,20 +607,20 @@ Result (edited to show only a single entry, with IP addresses changed to
"timeoffset": 0,
"pingtime": 0.105995,
"minping": 0.095181,
- "version": 70232,
- "subver": "/Dash Core:21.0.0(dcg-masternode-7)/",
+ "version": 70233,
+ "subver": "/Dash Core:21.1.0(dcg-masternode-7)/",
"inbound": false,
"bip152_hb_to": false,
"bip152_hb_from": false,
"masternode": false,
- "startingheight": 1022323,
- "synced_headers": 1022323,
- "synced_blocks": 1022323,
+ "startingheight": 1131692,
+ "synced_headers": 1131804,
+ "synced_blocks": 1131804,
"inflight": [
],
- "relaytxes": false,
- "addr_relay_enabled": false,
- "addr_processed": 0,
+ "relaytxes": true,
+ "addr_relay_enabled": true,
+ "addr_processed": 519,
"addr_rate_limited": 0,
"permissions": [
],
@@ -641,7 +659,9 @@ Result (edited to show only a single entry, with IP addresses changed to
"verack": 24,
"version": 180
},
- "connection_type": "block-relay-only"
+ "connection_type": "outbound-full-relay",
+ "transport_protocol_type": "v1",
+ "session_id": ""
}
]
```
diff --git a/docs/core/api/remote-procedure-calls-raw-transactions.md b/docs/core/api/remote-procedure-calls-raw-transactions.md
index adedd0c9c..4b22574b9 100644
--- a/docs/core/api/remote-procedure-calls-raw-transactions.md
+++ b/docs/core/api/remote-procedure-calls-raw-transactions.md
@@ -916,7 +916,7 @@ _Parameter #3---hash of a block to look in for the transaction_
| Name | Type | Presence | Description |
| ---------- | ---- | -------------------- | --------------------------------------------------------------------------------------------- |
-| Block Hash | string | Optional
(0 or 1) | _Added in Dash Core 0.16.0_
The hash of the block in which to look for the transaction |
+| Block Hash | string | Optional
(0 or 1) | The hash of the block in which to look for the transaction |
_Result (if transaction not found)---`null`_
@@ -985,7 +985,7 @@ _Result (if verbose=`true`)---the decoded transaction_
| →
`blocktime` | number (int) | Optional
(0 or 1) | This field is currently identical to the time field described above |
| →
`instantlock` | bool | Required
(exactly 1) | If set to `true`, this transaction is either protected by an [InstantSend](../resources/glossary.md#instantsend) lock or it is in a block that has received a [ChainLock](../resources/glossary.md#chainlock) |
| →
`instantlock_internal` | bool | Required
(exactly 1) | If set to `true`, this transaction has an [InstantSend](../resources/glossary.md#instantsend) lock |
-| →
`chainlock` | bool | Required
(exactly 1) | _Added in Dash Core 0.14.0_
If set to `true`, this transaction is in a block that is locked (not susceptible to a chain re-org) |
+| →
`chainlock` | bool | Required
(exactly 1) | If set to `true`, this transaction is in a block that is locked (not susceptible to a chain re-org) |
_Examples from Dash Core 21.1.0_
diff --git a/docs/core/api/remote-procedure-calls-removed.md b/docs/core/api/remote-procedure-calls-removed.md
index 363d0d28e..b9f61aa9e 100644
--- a/docs/core/api/remote-procedure-calls-removed.md
+++ b/docs/core/api/remote-procedure-calls-removed.md
@@ -61,3 +61,45 @@ dash-cli -testnet gobject vote-conf \
}
}
```
+
+## Protx
+
+### ProTx Register HPMN
+
+:::{attention}
+Removed in Dash Core 22.0.0
+:::
+
+The `protx *_hpmn` RPC commands were renamed and deprecated in Dash Core 20.0.0. They can now be accessed as `protx *_evo` (e.g., `protx register_hpmn` is now [`protx register_evo`](../api/remote-procedure-calls-evo.md#protx-register-evo)).
+
+**All `protx *_hpmn` RPC commands were removed in Dash Core 22.0.0.**
+
+### ProTx Register Fund HPMN
+
+:::{attention}
+Removed in Dash Core 22.0.0
+:::
+
+The `protx *_hpmn` RPC commands were renamed and deprecated in Dash Core 20.0.0. They can now be accessed as `protx *_evo` (e.g., `protx register_hpmn` is now [`protx register_evo`](../api/remote-procedure-calls-evo.md#protx-register-evo)).
+
+**All `protx *_hpmn` RPC commands were removed in Dash Core 22.0.0.**
+
+### ProTx Register Prepare HPMN
+
+:::{attention}
+Removed in Dash Core 22.0.0
+:::
+
+The `protx *_hpmn` RPC commands were renamed and deprecated in Dash Core 20.0.0. They can now be accessed as `protx *_evo` (e.g., `protx register_hpmn` is now [`protx register_evo`](../api/remote-procedure-calls-evo.md#protx-register-evo)).
+
+**All `protx *_hpmn` RPC commands were removed in Dash Core 22.0.0.**
+
+### ProTx Update Service HPMN
+
+:::{attention}
+Removed in Dash Core 22.0.0
+:::
+
+The `protx *_hpmn` RPC commands were renamed and deprecated in Dash Core 20.0.0. They can now be accessed as `protx *_evo` (e.g., `protx register_hpmn` is now [`protx register_evo`](../api/remote-procedure-calls-evo.md#protx-register-evo)).
+
+**All `protx *_hpmn` RPC commands were removed in Dash Core 22.0.0.**
diff --git a/docs/core/api/remote-procedure-calls-wallet.md b/docs/core/api/remote-procedure-calls-wallet.md
index 949114340..74e207402 100644
--- a/docs/core/api/remote-procedure-calls-wallet.md
+++ b/docs/core/api/remote-procedure-calls-wallet.md
@@ -932,7 +932,7 @@ _Result---a description of the transaction_
| →
`confirmations` | number (int) | Required
(exactly 1) | The number of confirmations the transaction has received. Will be `0` for unconfirmed and `-1` for conflicted |
| →
`instantlock` | bool | Required
(exactly 1) | If set to `true`, this transaction is either protected by an [InstantSend](../resources/glossary.md#instantsend) lock or it is in a block that has received a [ChainLock](../resources/glossary.md#chainlock) |
| →
`instantlock-internal` | bool | Required
(exactly 1) | If set to `true`, this transaction has an [InstantSend](../resources/glossary.md#instantsend) lock. Available for 'send' and 'receive' category of transactions. |
-| →
`chainlock` | bool | Required
(exactly 1) | _Added in Dash Core 0.14.0_
If set to `true`, this transaction is in a block that is locked (not susceptible to a chain re-org) |
+| →
`chainlock` | bool | Required
(exactly 1) | If set to `true`, this transaction is in a block that is locked (not susceptible to a chain re-org) |
| →
`trusted` | bool | Optional
(0 or 1) | Whether we consider the outputs of this unconfirmed transaction safe to spend. Only returned for unconfirmed transactions |
| →
`generated` | bool | Optional
(0 or 1) | Set to `true` if the transaction is a coinbase. Not returned for regular transactions |
| →
`blockhash` | string (hex) | Optional
(0 or 1) | The hash of the block on the local best block chain which includes this transaction, encoded as hex in RPC byte order. Only returned for confirmed transactions |
@@ -1058,7 +1058,7 @@ _Result---information about the wallet_
| →
`unconfirmed_balance` | number (dash) | Required
(exactly 1) | **Deprecated** The total unconfirmed balance of the wallet. The same as returned by the [`getunconfirmedbalance` RPC](../api/remote-procedure-calls-wallet.md#getunconfirmedbalance) with default parameters. Identical to `getbalances().mine.untrusted_pending`. |
| →
`immature_balance` | number (dash) | Required
(exactly 1) | **Deprecated** The total immature balance of the wallet. This includes mining/masternode rewards that cannot be spent yet. Identical to `getbalances().mine.immature`. |
| →
`txcount` | number (int) | Required
(exactly 1) | The total number of transactions in the wallet (both spends and receives) |
-| →
`timefirstkey` | number (int) | Required
(exactly 1) | _Added in Dash Core 0.17.0_
The timestamp (seconds since Unix epoch) of the oldest known key in the wallet |
+| →
`timefirstkey` | number (int) | Required
(exactly 1) | The timestamp (seconds since Unix epoch) of the oldest known key in the wallet |
| →
`keypoololdest` | number (int) | Required
(exactly 1) | The date as Unix epoch time when the oldest key in the wallet key pool was created; useful for only scanning blocks created since this date for transactions |
| →
`keypoolsize` | number (int) | Required
(exactly 1) | The number of keys in the wallet keypool |
| →
`keypoolsize_hd_internal` | number (int) | Optional
(0 or 1) | How many new keys are pre-generated for internal use (used for change outputs, only appears if the wallet is using this feature, otherwise external keys are used) |
@@ -2031,7 +2031,7 @@ _Parameter #4---include_removed_
| →
`confirmations` | number (int) | Required
(exactly 1) | The number of confirmations the transaction has received. Will be `0` for unconfirmed and `-1` for conflicted |
| →
`instantlock` | bool | Required
(exactly 1) | If set to `true`, this transaction is either protected by an [InstantSend](../resources/glossary.md#instantsend) lock or it is in a block that has received a [ChainLock](../resources/glossary.md#chainlock) |
| →
`instantlock_internal` | bool | Required
(exactly 1) | If set to `true`, this transaction has an [InstantSend](../resources/glossary.md#instantsend) lock |
-| →
`chainlock` | bool | Required
(exactly 1) | _Added in Dash Core 0.14.0_
If set to `true`, this transaction is in a block that is locked (not susceptible to a chain re-org) |
+| →
`chainlock` | bool | Required
(exactly 1) | If set to `true`, this transaction is in a block that is locked (not susceptible to a chain re-org) |
| →
`generated` | bool | Optional
(0 or 1) | Set to `true` if the transaction is a coinbase. Not returned for regular transactions |
| →
`blockhash` | string (hex) | Optional
(0 or 1) | The hash of the block on the local best block chain which includes this transaction, encoded as hex in RPC byte order. Only returned for confirmed transactions |
| →
`blockheight` | string (hex) | Optional
(0 or 1) | The block height containing the transaction. |
@@ -2165,7 +2165,7 @@ _Result---payment details_
| → →
`confirmations` | number (int) | Optional
(0 or 1) | The number of confirmations the transaction has received. Will be `0` for unconfirmed and `-1` for conflicted. Not returned for _move_ category payments |
| →
`instantlock` | bool | Required
(exactly 1) | If set to `true`, this transaction is either protected by an [InstantSend](../resources/glossary.md#instantsend) lock or it is in a block that has received a [ChainLock](../resources/glossary.md#chainlock) |
| →
`instantlock_internal` | bool | Required
(exactly 1) | If set to `true`, this transaction has an [InstantSend](../resources/glossary.md#instantsend) lock |
-|
`chainlock` | bool | Required
(exactly 1) | _Added in Dash Core 0.14.0_
If set to `true`, this transaction is in a block that is locked (not susceptible to a chain re-org) |
+|
`chainlock` | bool | Required
(exactly 1) | If set to `true`, this transaction is in a block that is locked (not susceptible to a chain re-org) |
| → →
`generated` | bool | Optional
(0 or 1) | Set to `true` if the transaction is a coinbase. Not returned for regular transactions or _move_ category payments |
| → →
`trusted` | bool | Optional
(0 or 1) | Indicates whether we consider the outputs of this unconfirmed transaction safe to spend. Only returned for unconfirmed transactions |
| → →
`blockhash` | string (hex) | Optional
(0 or 1) | The hash of the block on the local best block chain which includes this transaction, encoded as hex in RPC byte order. Only returned for confirmed transactions |
@@ -2781,7 +2781,13 @@ _Parameter #3---estimate_mode_
| -------------- | ------ | -------------------- | ------------------------------------------------------------------------------------------------------------------------- |
| estimate_mode | string | Optional
(0 or 1) | The fee estimate mode. Must be one of: `unset`, `economical`, `conservative`, `DASH/kB`, `duff/B`. Default is `unset`. |
-_Parameter #4---Options_
+_Parameter #4---Fee rate_
+
+| Name | Type | Presence | Description |
+| -------- | ------- | ----------------------- | ----------- |
+| fee_rate | number or string | Optional
(0 or 1) | **Added in Dash Core 22.0.0**
Specify a fee rate in duffs/B (default=not set, fall back to wallet fee estimation). |
+
+_Parameter #5---Options_
| Name | Type | Presence | Description |
| --------------------------- | ------------------ | ----------------------- | --------------------------------------------------- |
@@ -2901,10 +2907,16 @@ _Parameter #10---fee estimate mode_
| ---- | ---- | -------- | ----------- |
| `estimate_mode` | string | Optional
(0 or 1) | The fee estimate mode, must be one of:
`unset`
`economical`
`conservative`
`DASH/kB`
`duff/B` |
-_Parameter #11---verbose_
+_Parameter #11---fee rate_
+
+| Name | Type | Presence | Description |
+| -------- | ------- | ----------------------- | ----------- |
+| `fee_rate` | number or string | Optional
(0 or 1) | **Added in Dash Core 22.0.0**
Specify a fee rate in duffs/B (default=not set, fall back to wallet fee estimation). |
-| Name | Type | Presence | Description |
-| ------- | ------- | ----------------------- | ---------------------------------------------------------- |
+_Parameter #12---verbose_
+
+| Name | Type | Presence | Description |
+| ------- | ------- | ----------------------- | ----------- |
| verbose | boolean | Optional
(0 or 1) | If `true`, return extra information about the transaction. Default is `false` |
_Result---execution result_
@@ -3047,10 +3059,16 @@ _Parameter #10---avoids partial respends_
| ------------- | ------- | -------------------- | ----------------------------------------------------------------------------------------------------------------------- |
| `avoid_reuse` | boolean | Optional
(0 or 1) | Avoid spending from dirty addresses; addresses are considered dirty if they have previously been used in a transaction. |
-_Parameter #11---verbose_
+_Parameter #11---fee rate_
+
+| Name | Type | Presence | Description |
+| -------- | ------- | ----------------------- | ----------- |
+| `fee_rate` | number or string | Optional
(0 or 1) | **Added in Dash Core 22.0.0**
Specify a fee rate in duffs/B (default=not set, fall back to wallet fee estimation). |
+
+_Parameter #12---verbose_
-| Name | Type | Presence | Description |
-| ------- | ------- | ----------------------- | ---------------------------------------------------------- |
+| Name | Type | Presence | Description |
+| ------- | ------- | ----------------------- | ----------- |
| verbose | boolean | Optional
(0 or 1) | If `true`, return extra information about the transaction. Default is `false` |
_Result---execution result_
diff --git a/docs/core/api/zmq.md b/docs/core/api/zmq.md
index 6e16f461e..c6fb85d2b 100644
--- a/docs/core/api/zmq.md
+++ b/docs/core/api/zmq.md
@@ -41,7 +41,8 @@ Currently, the following notifications are supported:
| zmqpubrawgovernancevote | Raw governance vote ([`govobjvote`](../reference/p2p-network-governance-messages.md#govobjvote)) |
| zmqpubrawgovernanceobject | Raw governance object ([`govobject`](../reference/p2p-network-governance-messages.md#govobj)) |
| zmqpubrawinstantsend
doublespend | Raw transaction ([`tx`](../reference/transactions-raw-transaction-format.md)) attempting to double-spend an InstantSend-locked input |
-| zmqpubrawrecoveredsig | Raw recovered signatures (recovered by LLMQs)
+| zmqpubrawrecoveredsig | Raw recovered signatures (recovered by LLMQs) |
+| zmqpubsequence | Mempool sequence number |
## High Water Mark
@@ -67,6 +68,7 @@ The option to set the PUB socket's outbound message [high water mark](https://ze
| zmqpubrawgovernanceobjecthwm | Raw governance object ([`govobject`](../reference/p2p-network-governance-messages.md#govobj)) high water mark |
| zmqpubrawinstantsenddoublespendhwm | Raw transaction ([`tx`](../reference/transactions-raw-transaction-format.md)) attempting to double-spend an InstantSend-locked input high water mark |
| zmqpubrawrecoveredsighwm | Raw recovered signatures (recovered by LLMQs) high water mark |
+| zmqpubsequencehwm | Mempool sequence number high water mark |
## Dash Core Configuration
@@ -74,14 +76,14 @@ ZMQ notifications can be enabled via either command line arguments or the config
### Command Line
-```
+```shell
$ dashd -zmqpubhashtx=tcp://127.0.0.1:28332 \
-zmqpubrawtx=ipc:///tmp/dashd.tx.raw
```
### Config File
-```
+```conf
# ZMQ
zmqpubhashtx=tcp://0.0.0.0:28332
zmqpubrawtx=tcp://0.0.0.0:28332
diff --git a/docs/core/guide/dash-features-coinjoin.md b/docs/core/guide/dash-features-coinjoin.md
index 093666f20..a75980da1 100644
--- a/docs/core/guide/dash-features-coinjoin.md
+++ b/docs/core/guide/dash-features-coinjoin.md
@@ -40,9 +40,9 @@ Protocol version 70213 added a 5th denomination (0.001 DASH).
**Creating Collaterals**
-Collaterals are used to pay CoinJoin fees, but are kept separate from the denominations to maximize privacy. Since protocol version 70213, the minimum collateral fee is 1/10 of the smallest denomination for all sessions regardless of denomination. In Dash Core, collaterals are created with enough value to pay 4 collateral fees (4 x 0.001 DASH). ([Dash Core Reference](https://github.com/dashpay/dash/blob/v0.15.0.0/src/privatesend/privatesend.h#L459))
+Collaterals are used to pay CoinJoin fees, but are kept separate from the denominations to maximize privacy. Since protocol version 70213, the minimum collateral fee is 1/10 of the smallest denomination for all sessions regardless of denomination. In Dash Core, collaterals are created with enough value to pay 4 collateral fees (4 x 0.001 DASH). ([Dash Core Reference](https://github.com/dashpay/dash/blob/v21.1.x/src/coinjoin/common.h#L109))
-In protocol version 70208, collateral inputs can be anything from 2x the minimum collateral amount to the maximum collateral amount (currently defined as 4x the minimum collateral). In protocol versions > 70208, Dash Core can use any [input](../resources/glossary.md#input) from 1x the minimum collateral amount to the maximum collateral amount.
+In protocol versions > 70208, Dash Core can use any [input](../resources/glossary.md#input) from 1x the minimum collateral amount to the maximum collateral amount.
[Example Testnet collateral creation transaction](https://testnet-insight.dashevo.org/insight/tx/8f9b15973983876f7ce4eb2c32b09690dfb0432d2caf6c6df516196a8d17689f)
@@ -52,24 +52,33 @@ In protocol version 70208, collateral inputs can be anything from 2x the minimum
This phase involves exchanging a sequence of messages with a [masternode](../resources/glossary.md#masternode) so it can construct a denominate transaction with inputs from the clients in its pool.
-*Data Flow*
+### Data Flow
+
+:::{attention}
+Since protocol version 70234 (Dash Core 22.0.0), the [`dsq`
+message](../reference/p2p-network-privatesend-messages.md#dsq) is broadcast using the inventory
+system instead of being relayed to all connected peers. This reduces the bandwidth needs for all
+nodes, especially highly connected masternodes.
+:::
| | **Clients** | **Direction** | **Masternode** | **Description** |
| --- | --- | :---: | --- | --- |
| 0 | | | | Client determines whether to join an existing pool or create a new one |
| 1 | [`dsa` message](../reference/p2p-network-privatesend-messages.md#dsa) | → | | Client asks to join pool or have the masternode create a new one
| 2 | | ← | [`dssu` message](../reference/p2p-network-privatesend-messages.md#dssu) | Masternode provides a pool status update (Typical - State: `POOL_STATE_QUEUE`, Message: `MSG_NOERR`)
-| 3 | | ← | [`dsq` message](../reference/p2p-network-privatesend-messages.md#dsq) | Masternode notifies clients when it is ready to receive inputs
-| 4 | [`dsi` message](../reference/p2p-network-privatesend-messages.md#dsi) | → | | Upon receiving a [`dsq` message](../reference/p2p-network-privatesend-messages.md#dsq) with the Ready bit set, clients each provide a list of their inputs (unsigned), collateral, and a list of outputs where funds should be sent
-| 5 | | ← | [`dssu` message](../reference/p2p-network-privatesend-messages.md#dssu) | Masternode provides a pool status update (typical - State: `POOL_STATE_ACCEPTING_ENTRIES`, Message: `MSG_ENTRIES_ADDED`)
-| 6 | | ← | [`dsf` message](../reference/p2p-network-privatesend-messages.md#dsf) | Masternode sends the final transaction containing all clients inputs (unsigned) and all client outputs to each client for verification
-| 7 | | ← | [`dssu` message](../reference/p2p-network-privatesend-messages.md#dssu) | Masternode provides a pool status update (Typical - State: `POOL_STATE_SIGNING`, Message: `MSG_NOERR`)
-| 8 | [`dss` message](../reference/p2p-network-privatesend-messages.md#dss) | → | | After verifying the final transaction, clients each sign their own inputs with the `SIGHASH_ALL \| SIGHASH_ANYONECANPAY` signature type and send them back
-| 9 | | ← | [`dsc` message](../reference/p2p-network-privatesend-messages.md#dsc) | Masternode verifies the signed inputs, creates a [`dstx` message](../reference/p2p-network-privatesend-messages.md#dstx) to broadcast the transaction, and notifies clients that the denominate transaction is complete (Typical - Message: `MSG_SUCCESS`)
-| 10 | | ← | [`inv` message](../reference/p2p-network-data-messages.md#inv) | Masternode broadcasts a `dstx` inventory message
-| 11 | [`getdata` message](../reference/p2p-network-data-messages.md#getdata) (dstx) | → | | (Optional)
-
-**Additional notes**
+| 3 | | ← | [`inv` message](../reference/p2p-network-data-messages.md#inv) (dsq) | Masternode notifies clients when it is ready to receive inputs by sending a `dsq` inventory message
+| 4 | [`getdata` message](../reference/p2p-network-data-messages.md#getdata) (dsq) | → | | Client requests a [`dsq` message](../reference/p2p-network-privatesend-messages.md#dsq)
+| 5 | | ← | [`dsq` message](../reference/p2p-network-privatesend-messages.md#dsq) | Masternode responds with the requested [`dsq` message](../reference/p2p-network-privatesend-messages.md#dsq)
+| 6 | [`dsi` message](../reference/p2p-network-privatesend-messages.md#dsi) | → | | Upon receiving a [`dsq` message](../reference/p2p-network-privatesend-messages.md#dsq) with the Ready bit set, clients each provide a list of their inputs (unsigned), collateral, and a list of outputs where funds should be sent
+| 7 | | ← | [`dssu` message](../reference/p2p-network-privatesend-messages.md#dssu) | Masternode provides a pool status update (typical - State: `POOL_STATE_ACCEPTING_ENTRIES`, Message: `MSG_ENTRIES_ADDED`)
+| 8 | | ← | [`dsf` message](../reference/p2p-network-privatesend-messages.md#dsf) | Masternode sends the final transaction containing all clients inputs (unsigned) and all client outputs to each client for verification
+| 9 | | ← | [`dssu` message](../reference/p2p-network-privatesend-messages.md#dssu) | Masternode provides a pool status update (Typical - State: `POOL_STATE_SIGNING`, Message: `MSG_NOERR`)
+| 10 | [`dss` message](../reference/p2p-network-privatesend-messages.md#dss) | → | | After verifying the final transaction, clients each sign their own inputs with the `SIGHASH_ALL \| SIGHASH_ANYONECANPAY` signature type and send them back
+| 11 | | ← | [`dsc` message](../reference/p2p-network-privatesend-messages.md#dsc) | Masternode verifies the signed inputs, creates a [`dstx` message](../reference/p2p-network-privatesend-messages.md#dstx) to broadcast the transaction, and notifies clients that the denominate transaction is complete (Typical - Message: `MSG_SUCCESS`)
+| 12 | | ← | [`inv` message](../reference/p2p-network-data-messages.md#inv) | Masternode broadcasts a `dstx` inventory message
+| 13 | [`getdata` message](../reference/p2p-network-data-messages.md#getdata) (dstx) | → | | (Optional)
+
+### Additional notes
_**Step 0 - Pool Selection**_
@@ -82,34 +91,34 @@ _**Step 1 - Pool Request**_
* This transaction uses a collateral [input](../resources/glossary.md#input) created in the [Wallet Preparation](#wallet-preparation) phase
* The collateral is a signed [transaction](../resources/glossary.md#transaction) that pays the collateral back to a client [address](../resources/glossary.md#address) minus a fee of 0.001 DASH
-_**Step 3 - Queue**_
-
-* A masternode broadcasts [`dsq` messages](../reference/p2p-network-privatesend-messages.md#dsq) when it starts a new queue. These message are relayed by all [peers](../resources/glossary.md#peer).
-* As of protocol version 70214, sessions have a variable number of participants defined by the range `nPoolMinParticipants` ([3](https://github.com/dashpay/dash/blob/v0.15.0.0/src/chainparams.cpp#L360)) to `nPoolMaxParticipants` ([5](https://github.com/dashpay/dash/blob/v0.15.0.0/src/chainparams.cpp#L361)). Prior protocol version sessions always contained exactly 3 participants. Spork 22 introduced in Dash Core 0.16.0 expanded the maximum number of participants to 20 and also reduced the minimum number of participants to 2 for testnet/devnet/regtest networks. The spork was removed in Dash Core 0.17.0 which made the change permanent.
-* The masternode sends a [`dsq` message](../reference/p2p-network-privatesend-messages.md#dsq) with the ready bit set once it has received valid [`dsa` messages](../reference/p2p-network-privatesend-messages.md#dsa) from either:
- 1. The maximum number of clients (20)
- 2. Greater than the minimum number of clients (3) and the timeout has been reached ([30 seconds](https://github.com/dashpay/dash/blob/v0.16.x/src/privatesend/privatesend.h#L23))
+_**Steps 3-5 - Queue**_
:::{attention}
-Clients must respond to the Queue ready within 30 seconds or risk forfeiting the collateral they provided in the [`dsa` message](../reference/p2p-network-privatesend-messages.md#dsa) (Step 1) ([Dash Core Reference](https://github.com/dashpay/dash/blob/v0.16.x/src/privatesend/privatesend.h#L23))
+Clients must respond to the Queue ready within 30 seconds or risk forfeiting the collateral they provided in the [`dsa` message](../reference/p2p-network-privatesend-messages.md#dsa) (Step 1) ([Dash Core Reference](https://github.com/dashpay/dash/blob/v21.1.x/src/coinjoin/coinjoin.h#L43))
:::
-_**Step 4 - Inputs**_
+* When a masternode starts a new queue, it broadcasts an inventory message notifying all [peers](../resources/glossary.md#peer) of an available [`dsq` message](../reference/p2p-network-privatesend-messages.md#dsq). Interested clients can then request the full `dsq` message. Prior to protocol version 70234, `dsq` messages were directly relayed to all peers.
+* Sessions have a variable number of participants defined by the range `nPoolMinParticipants` ([3](https://github.com/dashpay/dash/blob/v21.1.x/src/chainparams.cpp#L298) for mainnet, 2 for other networks) to `nPoolMaxParticipants` ([20](https://github.com/dashpay/dash/blob/v21.1.x/src/chainparams.cpp#L299)).
+* The masternode sends an inventory message for a [`dsq` message](../reference/p2p-network-privatesend-messages.md#dsq) with the ready bit set once it has received valid [`dsa` messages](../reference/p2p-network-privatesend-messages.md#dsa) from either:
+ 1. The maximum number of clients
+ 2. Greater than the minimum number of clients and the timeout has been reached ([30 seconds](https://github.com/dashpay/dash/blob/v21.1.x/src/coinjoin/coinjoin.h#L43))
+
+_**Step 6 - Inputs**_
* The collateral transaction can be the same in the [`dsi` message](../reference/p2p-network-privatesend-messages.md#dsi) as the one in the [`dsa` message](../reference/p2p-network-privatesend-messages.md#dsa) (Step 1) as long as it has not been spent
-* Each client can provide up to 9 (`COINJOIN_ENTRY_MAX_SIZE`) inputs (and an equal number of outputs) to be used ([Dash Core Reference](https://github.com/dashpay/dash/blob/v0.15.0.0/src/privatesend/privatesend.h#L29))
+* Each client can provide up to 9 (`COINJOIN_ENTRY_MAX_SIZE`) inputs (and an equal number of outputs) to be used ([Dash Core Reference](https://github.com/dashpay/dash/blob/v21.1.x/src/coinjoin/coinjoin.h#L46))
* This is the only message in the process that contains enough information to link a wallet's CoinJoin inputs with its outputs
* This message is sent directly between a client and the masternode processing the session (not relayed across the Dash network) so no other clients see it
-_**Step 6 - Final Transaction (unsigned)**_
+_**Step 8 - Final Transaction (unsigned)**_
* Once the masternode has received valid [`dsi` messages](../reference/p2p-network-privatesend-messages.md#dsi) from all clients, it creates the final transaction and sends a [`dsf` message](../reference/p2p-network-privatesend-messages.md#dsf)
- * Inputs/outputs are ordered deterministically as defined by [BIP-69](https://github.com/dashevo/bips/blob/master/bip-0069.mediawiki#Abstract) to avoid leaking any data ([Dash Core Reference](https://github.com/dashpay/dash/blob/v0.15.0.0/src/privatesend/privatesend-server.cpp#L271-L272))
- * Clients must sign their inputs to the Final Transaction within 15 seconds or risk forfeiting the collateral they provided in the [`dsi` message](../reference/p2p-network-privatesend-messages.md#dsi) (Step 4) ([Dash Core Reference](https://github.com/dashpay/dash/blob/v0.15.0.0/src/privatesend/privatesend.h#L24))
+ * Inputs/outputs are ordered deterministically as defined by [BIP-69](https://github.com/dashevo/bips/blob/master/bip-0069.mediawiki#Abstract) to avoid leaking any data ([Dash Core Reference](https://github.com/dashpay/dash/blob/v21.1.x/src/coinjoin/server.cpp#L301-L302))
+ * Clients must sign their inputs to the Final Transaction within 15 seconds or risk forfeiting the collateral they provided in the [`dsi` message](../reference/p2p-network-privatesend-messages.md#dsi) (Step 4) ([Dash Core Reference](https://github.com/dashpay/dash/blob/v21.1.x/src/coinjoin/coinjoin.h#L44))
-_**Step 10 - Final Transaction broadcast**_
+_**Step 12 - Final Transaction broadcast**_
-* Prior to protocol version 70213, masternodes could only send a single un-mined [`dstx` message](../reference/p2p-network-privatesend-messages.md#dstx) at a time. As of protocol version 70213, up to 5 (`MASTERNODE_MAX_MIXING_TXES`) un-mined [`dstx` messages](../reference/p2p-network-privatesend-messages.md#dstx) per masternode are allowed. ([Dash Core Reference](https://github.com/dashpay/dash/blob/v0.15.0.0/src/masternode/masternode-meta.h#L16))
+As of protocol version 70213, up to 5 (`MASTERNODE_MAX_MIXING_TXES`) un-mined [`dstx` messages](../reference/p2p-network-privatesend-messages.md#dstx) per masternode are allowed. ([Dash Core Reference](https://github.com/dashpay/dash/blob/v21.1.x/src/masternode/meta.h#L21))
_**General**_
@@ -119,8 +128,8 @@ _**General**_
**Processing Fees**
-* If processing completes successfully, Dash Core charges the collateral randomly in 1/10 denominate transactions to pay miners ([Dash Core Reference](https://github.com/dashpay/dash/blob/v0.17.0.0/src/coinjoin/coinjoin-server.cpp#L427-L444))
-* Clients that abuse the system by failing to respond to [`dsq` messages](../reference/p2p-network-privatesend-messages.md#dsq) or [`dsf` messages](../reference/p2p-network-privatesend-messages.md#dsf) within the timeout periods may forfeit their collateral. Dash Core charges the abuse fee in 1/3 cases ([Dash Core Reference](https://github.com/dashpay/dash/blob/v0.17.0.0/src/coinjoin/coinjoin-server.cpp#L357-L374))
+* If processing completes successfully, Dash Core charges the collateral randomly in 1/10 denominate transactions to pay miners ([Dash Core Reference](https://github.com/dashpay/dash/blob/v21.1.x/src/coinjoin/server.cpp#L432-449))
+* Clients that abuse the system by failing to respond to [`dsq` messages](../reference/p2p-network-privatesend-messages.md#dsq) or [`dsf` messages](../reference/p2p-network-privatesend-messages.md#dsf) within the timeout periods may forfeit their collateral. Dash Core charges the abuse fee in 1/3 cases ([Dash Core Reference](https://github.com/dashpay/dash/blob/v21.1.x/src/coinjoin/server.cpp#L363-L381))
**Sending Fees**
diff --git a/docs/core/reference/p2p-network-control-messages.md b/docs/core/reference/p2p-network-control-messages.md
index 82d030da8..9da674f1b 100644
--- a/docs/core/reference/p2p-network-control-messages.md
+++ b/docs/core/reference/p2p-network-control-messages.md
@@ -411,7 +411,6 @@ sporks section](#removed-sporks) for a list of previously removed sporks.
| 10018 | 19 | `SPORK_19_CHAINLOCKS_`
`ENABLED` | ***Updated in Dash Core 19.2.0***
Enable LLMQ-based ChainLocks.
| 10020 | 21 | `SPORK_21_QUORUM_ALL_`
`CONNECTED` | *Added in Dash Core 0.16.0*
Enable connections between all masternodes in a quorum to optimize the signature recovery process.
Note: Prior to Dash Core 0.17.0 this spork also enforced [PoSe requirements](../guide/dash-features-proof-of-service.md#distributed-key-generation-participation-requirements) for masternodes to support a minimum protocol version and maintain open ports.
| 10022 | 23 | `SPORK_23_QUORUM_POSE`
`CONNECTED` | *Added in Dash Core 0.17.0*
Enforce [PoSe requirements](../guide/dash-features-proof-of-service.md#distributed-key-generation-participation-requirements) for masternodes to support a minimum protocol version and maintain open ports.
-| 10023 | 24 | `SPORK_24_TEST_EHF` | **Added in Dash Core 20.0.0** (*Testnet/Devnet/Regtest only*)
Enables quorums to sign and broadcast the `mnhfsignal` message that allows the fork to proceed
**Spork 2 values**
@@ -448,6 +447,7 @@ The following sporks were used in the past but are no longer necessary and have
| :----------: | :----------: | ----------- | ----------- |
| *10005* | *6* | `NEW_SIGS` | _Removed in Dash Core 0.16.0.
Turns on and off new signature format for Dash-specific messages.
Never enabled on mainnet. The associated logic was hardened in [PR 3662](https://github.com/dashpay/dash/pull/3662) to support testnet (where it is enabled). If testnet is reset at some point in the future, the remaining logic will be removed._
| *10021* | *22* | `SPORK_22_PS_MORE_`
`PARTICIPANTS` | *Removed in Dash Core 0.17.0*
*Increase the maximum number of participants in CoinJoin sessions.*
+| *10023* | *24* | `SPORK_24_TEST_EHF` | **Removed in Dash Core 22.0.0** (*Testnet/Devnet/Regtest only*)
Enables quorums to sign and broadcast the `mnhfsignal` message that allows the fork to proceed
### Spork verification
@@ -505,6 +505,8 @@ The following service identifiers have been assigned.
| 0x08 | `NODE_XTHIN` | **Dash Core does not support this service**
This node supports Xtreme Thinblocks.
| 0x40 | `NODE_COMPACT_FILTERS` | This node supports basic block filter requests. See [BIP157](https://github.com/bitcoin/bips/blob/master/bip-0157.mediawiki) and [BIP158](https://github.com/bitcoin/bips/blob/master/bip-0158.mediawiki) for details on how this is implemented.
| 0x400 | `NODE_NETWORK_LIMITED` | This is the same as `NODE_NETWORK` with the limitation of only serving the last 288 blocks. See [BIP159](https://github.com/bitcoin/bips/blob/master/bip-0159.mediawiki) for details on how this is implemented. *Not supported prior to Dash Core 0.16.0*
+| 0x800 | `NODE_HEADERS_COMPRESSED` | This node supports compressed headers as described in [DIP-25](https://github.com/dashpay/dips/blob/master/dip-0025.md)
+| 0x1000 | `NODE_P2P_V2` | This node supports the version 2 of the peer-to-peer protocol, which provides an encrypted transport protocol. See [BIP-324](https://github.com/bitcoin/bips/blob/master/bip-0324.mediawiki) for details. *Not supported prior to Dash Core 22.0.0*
The following annotated hexdump shows a [`version` message](../reference/p2p-network-control-messages.md#version). (The message header has been omitted and the actual IP addresses have been replaced with [RFC5737](http://tools.ietf.org/html/rfc5737) reserved IP addresses.)
diff --git a/docs/core/reference/p2p-network-data-messages.md b/docs/core/reference/p2p-network-data-messages.md
index 08b488dce..cf06f7051 100644
--- a/docs/core/reference/p2p-network-data-messages.md
+++ b/docs/core/reference/p2p-network-data-messages.md
@@ -37,6 +37,7 @@ The currently-available type identifiers are:
| 28 | MSG_QUORUM_RECOVERED_SIG | The hash is a long-living masternode quorum recovered signature.
**Note**: Only relayed to other masternodes in the same quorum and nodes that have sent a [`qwatch` message](../reference/p2p-network-quorum-messages.md#qwatch) as of Dash Core 0.17.0
_Added in 0.14.0_
| 29 | MSG_CLSIG | The hash is a ChainLock signature.
_Added in 0.14.0_
| 31 | MSG_ISDLOCK | The hash is an LLMQ-based deterministic InstantSend lock ([DIP22](https://github.com/dashpay/dips/blob/master/dip-0022.md)).
_Added in 18.0_
+| 32 | MSG_DSQ | The hash of a CoinJoin [dsq message](./p2p-network-privatesend-messages.md#dsq).
**Added in 22.0.0**
**Deprecated Type Identifiers**
@@ -381,11 +382,16 @@ The [`getheaders` message](../reference/p2p-network-data-messages.md#getheaders)
## getheaders2
+:::{versionchanged} 70235
+Protocol version 70235 (Dash Core 22.0.0) expanded the maximum number of headers that this message
+can request to 8000.
+:::
+
_Added in protocol version 70223 of Dash Core._
The [`getheaders2` message](../reference/p2p-network-data-messages.md#getheaders2) requests a [`headers2` message](../reference/p2p-network-data-messages.md#headers2) that provides block headers starting from a particular point in the [block chain](../resources/glossary.md#block-chain). It allows a [peer](../resources/glossary.md#peer) which has been disconnected or started for the first time to get the [headers](../resources/glossary.md#header) it hasn’t seen yet.
-The [`getheaders2` message](../reference/p2p-network-data-messages.md#getheaders2) contains the same fields as the [`getheaders` message](../reference/p2p-network-data-messages.md#getheaders).
+The [`getheaders2` message](../reference/p2p-network-data-messages.md#getheaders2) contains the same fields as the [`getheaders` message](../reference/p2p-network-data-messages.md#getheaders). Since protocol version 70235, up to 8,000 headers can be requested at a time.
## getmnlistd
@@ -477,13 +483,19 @@ fe9f0864 ........................... Nonce
## headers2
+:::{versionchanged} 70235
+Protocol version 70235 (Dash Core 22.0.0) expanded the maximum number of headers that this message
+can send to 8000.
+:::
+
_Added in protocol version 70223 of Dash Core._
+
The [`headers2` message](../reference/p2p-network-data-messages.md#headers2) sends compressed block headers to a [node](../resources/glossary.md#node) which previously requested certain [headers](../resources/glossary.md#header) with a [`getheaders2` message](../reference/p2p-network-data-messages.md#getheaders) or indicated it wants to receive them by signaling with a [`sendheaders2` message](../reference/p2p-network-control-messages.md#sendheaders2).
| Bytes | Name | Data Type | Description
|----------|---------|------------------|-----------------
-| _Varies_ | count | compactSize uint | Number of block headers up to a maximum of 2,000. Note: headers-first sync assumes the sending node will send the maximum number of headers whenever possible.
+| _Varies_ | count | compactSize uint | Number of block headers up to a maximum of 8,000. Prior to protocol version 70235 (Dash Core 22.0.0), only 2,000 headers could be requested at a time. Note: headers-first sync assumes the sending node will send the maximum number of headers whenever possible.
| _Varies_ | headers | block_header2 | Block headers in the [`block_header2`](https://github.com/thephez/dips/blob/compressed-headers/compressed-headers.md#block_header2-data-type) format
**Note**: the first header will always be uncompressed.
The following annotated hexdump shows a [`headers2` message](../reference/p2p-network-data-messages.md#headers2). (The message header has been omitted.)
diff --git a/docs/core/reference/p2p-network-privatesend-messages.md b/docs/core/reference/p2p-network-privatesend-messages.md
index e6064e74c..903f2b95c 100644
--- a/docs/core/reference/p2p-network-privatesend-messages.md
+++ b/docs/core/reference/p2p-network-privatesend-messages.md
@@ -305,6 +305,13 @@ User outputs
## dsq
+:::{attention}
+Since protocol version 70234 (Dash Core 22.0.0), the [`dsq`
+message](../reference/p2p-network-privatesend-messages.md#dsq) is broadcast using the inventory
+system instead of being relayed to all connected peers. This reduces the bandwidth needs for all
+nodes, especially highly connected masternodes.
+:::
+
The [`dsq` message](../reference/p2p-network-privatesend-messages.md#dsq) provides [nodes](../resources/glossary.md#node) with queue details and notifies them when to sign final transaction messages.
If the message indicates the queue is not ready, the node verifies the message is valid. It also verifies that the [masternode](../resources/glossary.md#masternode) is not flooding the [network](../resources/glossary.md#network) with [`dsq` messages](../reference/p2p-network-privatesend-messages.md#dsq) in an attempt to dominate the queuing process. It then relays the message to its connected [peers](../resources/glossary.md#peer).
@@ -319,7 +326,7 @@ If the message indicates the queue is ready, the node responds with a [`dsi` mes
| 1 | fReady | bool | Required | Indicates if the pool is ready to be executed
| 97 | vchSig | char[] | Required | BLS Signature of this message by masternode verifiable via pubKeyMasternode (Length (1 byte) + Signature (96 bytes))
**Note**: serialized using the basic BLS scheme after Dash 19.0 activation
-Denominations (per [`src/coinjoin.cpp`](https://github.com/dashpay/dash/blob/v0.16.x/src/privatesend/privatesend.cpp#L316-L336))
+Denominations (per [`src/coinjoin/common.h`](https://github.com/dashpay/dash/blob/v21.0.x/src/coinjoin/common.h#L38-L44))
| Value | Denomination
|------|--------------
diff --git a/docs/core/reference/p2p-network-protocol-versions.md b/docs/core/reference/p2p-network-protocol-versions.md
index 0e9c938a1..64b33242f 100644
--- a/docs/core/reference/p2p-network-protocol-versions.md
+++ b/docs/core/reference/p2p-network-protocol-versions.md
@@ -10,10 +10,11 @@
The table below lists some notable versions of the P2P network protocol, with the most recent versions listed first.
-As of Dash Core 21.1, the most recent protocol version is 70233.
+As of Dash Core 22.0, the most recent protocol version is 70235.
| Version | Initial Release | Major Changes
|---------|------------------------------------|--------------
+| 70235 | [Dash Core 22.0](https://github.com/dashpay/dash/blob/v22.0.0/doc/release-notes.md)
(Nov 2024) | • [DSQ via inventory](https://github.com/dashpay/dash/pull/6148)
• [Support 8000 compressed headers per request](https://github.com/dashpay/dash/pull/6239/)
| 70233 | [Dash Core 21.1](https://github.com/dashpay/dash/blob/v21.1.0/doc/release-notes.md)
(Aug 2024) | • [Enhanced hard fork update](https://github.com/dashpay/dash/pull/6175)
| 70232 | [Dash Core 21.0](https://github.com/dashpay/dash/blob/v21.0.0/doc/release-notes.md)
(Jul 2024) | • Masternode reward location reallocation
• Mainnet spork hardening
• Experimental descriptor wallet support
| 70231 | [Dash Core 20.1](https://github.com/dashpay/dash/blob/v20.1.0/doc/release-notes.md)
(Mar 2024) | • HD wallets by default
• Legacy InstantSend deprecated (`islock` p2p and inv messages)
diff --git a/docs/core/reference/transactions-special-transactions.md b/docs/core/reference/transactions-special-transactions.md
index b716382cb..fb9b04d80 100644
--- a/docs/core/reference/transactions-special-transactions.md
+++ b/docs/core/reference/transactions-special-transactions.md
@@ -1214,8 +1214,26 @@ The JSON representation of a raw transaction can be obtained with the [`getrawtr
"assetLockTx": {
"version": 1,
"creditOutputs": [
- "CTxOut(nValue=1.00000000, scriptPubKey=76a9147c75beb097957cc09537b615)",
- "CTxOut(nValue=9.00141421, scriptPubKey=76a9147c75beb097957cc09537b615)"
+ {
+ "value": 1.00000000,
+ "valueSat": 100000000,
+ "scriptPubKey": {
+ "asm": "OP_DUP OP_HASH160 7c75beb097957cc09537b615dde9ea6807719cdf OP_EQUALVERIFY OP_CHECKSIG",
+ "hex": "76a9147c75beb097957cc09537b615dde9ea6807719cdf88ac",
+ "address": "yXfXh3jFYHHxnJZVsXnPcktCENqPaAhcX1",
+ "type": "pubkeyhash"
+ }
+ },
+ {
+ "value": 9.00141421,
+ "valueSat": 900141421,
+ "scriptPubKey": {
+ "asm": "OP_DUP OP_HASH160 7c75beb097957cc09537b615dde9ea6807719cdf OP_EQUALVERIFY OP_CHECKSIG",
+ "hex": "76a9147c75beb097957cc09537b615dde9ea6807719cdf88ac",
+ "address": "yXfXh3jFYHHxnJZVsXnPcktCENqPaAhcX1",
+ "type": "pubkeyhash"
+ }
+ }
]
}
}