diff --git a/conf.py b/conf.py
index c2c6c4267..cd5ec7e44 100644
--- a/conf.py
+++ b/conf.py
@@ -20,6 +20,17 @@
# import sys
# sys.path.insert(0, os.path.abspath('.'))
+import os
+import subprocess
+os.chdir(os.path.dirname(os.path.abspath(__file__)))
+
+# Clone the DIPs repository and process DIPs so they are rendered properly
+if not os.path.exists('_external_repo'):
+ subprocess.check_call(['git', 'clone', 'https://github.com/dashpay/dips.git', '_dips'])
+ subprocess.check_call(['./scripts/dip-format.sh'])
+ subprocess.check_call('cd _dips/ && find . -name ".git" -prune -o -print -exec cp --parents \{} ../docs/core/dips/ \;', shell=True)
+ subprocess.check_call('cd', shell=True)
+ subprocess.check_call('rm -rf _dips/', shell=True)
# -- General configuration ------------------------------------------------
@@ -73,6 +84,8 @@
'README.md',
'.devcontainer',
'transifex',
+ 'docs/core/api/ai-prompt.md',
+ 'docs/img/dev/gifs/README.md',
'docs/user/wallets/electrum/dip3_p2sh_howto.md',
'venv'
]
@@ -116,7 +129,6 @@
# -- intersphinx configuration -----------------------------------------------
intersphinx_mapping = {
- "core": ("https://docs.dash.org/projects/core/en/stable/", None),
"platform": ("https://docs.dash.org/projects/platform/en/stable/", None),
}
@@ -139,7 +151,6 @@
#
html_theme_options = {
"external_links": [
- {"name": "Core docs", "url": "https://docs.dash.org/projects/core/en/stable/docs/index.html"},
{"name": "Platform docs", "url": "https://docs.dash.org/projects/platform/en/stable/docs/index.html"},
{"name": "Dash.org", "url": "https://www.dash.org"},
{"name": "Forum", "url": "https://www.dash.org/forum"},
diff --git a/docs/core/api/ai-prompt.md b/docs/core/api/ai-prompt.md
new file mode 100644
index 000000000..78b9f8a77
--- /dev/null
+++ b/docs/core/api/ai-prompt.md
@@ -0,0 +1,116 @@
+## Check documentation against Core help output
+
+Compare this documentation
+```
+INSERT MARKDOWN TABLE FROM DOCS HERE
+```
+
+With the actual help output
+```
+INSERT "HELP " OUTPUT HERE
+```
+
+Only list any discrepancies (including parameters and/or response fields that have changed to be deprecated) and output markdown table entries in a copyable code block for items missing from the documentation. Use field descriptions from the provided help output without modifying them.
+
+## Remove the excess whitespace at the end of tables
+
+Remove the whitespace padding from the last column of this markdown table. do not worry about alignment of the end of the line but do include the ending "|" with a single space before it
+
+## Create documentation for a new RPC
+
+Use this RPC documentation as a template to create documentation for new RPCs:
+
+```## ImportMulti
+
+:::{note}
+Requires [wallet](../resources/glossary.md#wallet) support (**unavailable on masternodes**). Wallet must be unlocked.
+:::
+
+_Added in Dash Core 0.12.3 / Bitcoin Core 0.14.0_
+
+The [`importmulti` RPC](../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.
+
+_Parameter #1---the addresses/scripts to import_
+
+| Name | Type | Presence | Description|
+| --------------------- | --------------------- | ----------------------- | -----------|
+| Imports | array | Required (exactly 1) | An array of JSON objects, each one being an address or script to be imported |
+| → Import | object | Required (1 or more) | A JSON object describing a particular import |
+| → → `scriptPubKey` | string (hex) | Optional (0 or 1) | The script (string) to be imported. Must have either this field or `address` below |
+| → → `address` | string (base58) | Optional (0 or 1) | The P2PKH or P2SH address to be imported. Must have either this field or `scriptPubKey` above |
+| → → `timestamp` | number (int) / string | Required (exactly 1) | The creation time of the key in Unix epoch time or the string “now” to substitute the current synced block chain time. The timestamp of the oldest key will determine how far back block chain rescans need to begin. Specify `now` to bypass scanning for keys which are known to never have been used. Specify `0` to scan the entire block chain. Blocks up to 2 hours before the earliest key creation time will be scanned |
+| → → `redeemscript` | string | Optional (0 or 1) | A redeem script. Only allowed if either the `address` field is a P2SH address or the `scriptPubKey` field is a P2SH scriptPubKey |
+| → → `pubkeys` | array | Optional (0 or 1) | Array of strings giving pubkeys that must occur in the scriptPubKey or redeemscript |
+| → → `keys` | array | Optional (0 or 1) | Array of strings giving private keys whose corresponding public keys must occur in the scriptPubKey or redeemscript |
+| → → `internal` | bool | Optional (0 or 1) | Stating whether matching outputs should be treated as change rather than incoming payments. The default is `false` |
+| → → `watchonly` | bool | Optional (0 or 1) | Stating whether matching outputs should be considered watched even when they're not spendable. This is only allowed if keys are empty. The default is `false` |
+| → → `label` | string | Optional (0 or 1) | Label to assign to the address, only allowed with `internal` set to `false`. The default is an empty string (“”) |
+
+_Parameter #2---options regarding the import_
+
+| Name | Type | Presence | Description |
+| -------------- | ------ | -------------------- | ----------- |
+| Option | object | Optional (0 or 1) | JSON object with options regarding the import |
+| → `rescan` | bool | Optional (0 or 1) | Set to `true` (the default) to rescan the entire local block chain for transactions affecting any imported address or script. Set to `false` to not rescan after the import. Rescanning may take a considerable amount of time and may require re-downloading blocks if using block chain pruning |
+
+_Result---execution result_
+
+| Name | Type | Presence | Description |
+| ------------------- | --------------- | ----------------------- | ----------------------------------------------------------------------------------------- |
+| `result` | array | Required (exactly 1) | An array of JSON objects, with each object describing the execution result of each import |
+| → Result | object | Required (1 or more) | A JSON object describing the execution result of an imported address or script |
+| → → `success` | string | Required (exactly 1) | Displays `true` if the import has been successful or `false` if it failed |
+| → → `error` | string : object | Optional (0 or 1) | A JSON object containing details about the error. Only displayed if the import fails |
+| → → → `code` | number (int) | Optional (0 or 1) | The error code |
+| → → → `message` | string | Optional (0 or 1) | The error message |
+
+_Example from Dash Core 0.12.3_
+
+Import the address `ycCsAUKsjdmoP4qAXiS1cjYA4ixM48zJWe` (giving it a label and scanning the entire block chain) and the scriptPubKey `76a9146cf5870411edc31ba5630d61c7cddff55b884fda88ac` (giving a specific timestamp and label):
+
+```bash
+dash-cli importmulti '
+ [
+ {
+ "scriptPubKey" : { "address": "ycCsAUKsjdmoP4qAXiS1cjYA4ixM48zJWe" },
+ "timestamp" : 0,
+ "label" : "Personal"
+ },
+ {
+ "scriptPubKey" : "76a9146cf5870411edc31ba5630d61c7cddff55b884fda88ac",
+ "timestamp" : 1493912405,
+ "label" : "TestFailure"
+ }
+ ]' '{ "rescan": true }'
+```
+
+Result (scriptPubKey import failed because `internal` was not set to `true`):
+
+```json
+[
+ {
+ "success": true
+ },
+ {
+ "success": false,
+ "error": {
+ "code": -8,
+ "message": "Internal must be set for hex scriptPubKey"
+ }
+ }
+]
+```
+
+_See also_
+
+* [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).
+* [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.
+* [ImportWallet](../api/remote-procedure-calls-wallet.md#importwallet): imports private keys from a file in wallet dump file format (see the [`dumpwallet` RPC](../api/remote-procedure-calls-wallet.md#dumpwallet)). These keys will be added to the keys currently in the wallet. This call may need to rescan all or parts of the block chain for transactions affecting the newly-added keys, which may take several minutes.
+```
+
+
+Create documentation for the following new RPC using the style of previously provided RPC documentation as a template:
+
+```
+INSERT "HELP " OUTPUT HERE
+```
diff --git a/docs/core/api/dash-core-apis-hash-byte-order.md b/docs/core/api/dash-core-apis-hash-byte-order.md
new file mode 100644
index 000000000..a38091a35
--- /dev/null
+++ b/docs/core/api/dash-core-apis-hash-byte-order.md
@@ -0,0 +1,81 @@
+```{eval-rst}
+.. meta::
+ :title: Hash Byte Order
+ :description: Dash Core RPCs accept and return the byte-wise reverse of computed SHA-256 hash values. Dash Core's RPCs use the byte-wise reverse for hashes.
+```
+
+# Hash Byte Order
+
+Dash Core RPCs accept and return the byte-wise reverse of computed SHA-256 hash values. For example, the Unix `sha256sum` command displays the SHA256(SHA256()) hash of mainnet block 300,000's header as:
+
+``` shell
+> /bin/echo -n '020000007ef055e1674d2e6551dba41cd214debbee34aeb544c7ec670000000000000000d3998963f80c5bab43fe8c26228e98d030edf4dcbe48a666f5c39e2d7a885c9102c86d536c890019593a470d' \
+ | xxd -r -p \
+ | sha256sum -b \
+ | xxd -r -p \
+ | sha256sum -b
+
+5472ac8b1187bfcf91d6d218bbda1eb2405d7c55f1f8cc820000000000000000 (Resulting hash)
+```
+
+The result above is also how the hash appears in the previous-header-hash part of [block](../resources/glossary.md#block) 300,001's header:
+
+
+
+However, Dash Core's RPCs use the byte-wise reverse for hashes, so if you want to get information about block 675,776 using the [`getblock` RPC](../api/remote-procedure-calls-blockchain.md#getblock), you need to reverse the requested hash:
+
+``` shell
+> dash-cli getblock \
+ 000000000000327a66cd1011b2d1defd1417b7d9e39b439e8e67ba996ee92602
+```
+
+:::{note}
+Hex representation uses two characters to display each byte of data, which is why the reversed string looks somewhat mangled.
+:::
+
+The rationale for the reversal is unknown, but it likely stems from Dash Core's use of hashes (which are byte arrays in C++) as integers for the purpose of determining whether the hash is below the network target. Whatever the reason for reversing header hashes, the reversal also extends to other hashes used in RPCs, such as [TXIDs](../resources/glossary.md#transaction-identifiers) and merkle roots.
+
+As header hashes and TXIDs are widely used as global identifiers in other Dash software, this reversal of hashes has become the standard way to refer to certain objects. The table below should make clear where each byte order is used.
+
+| Data | Internal Byte Order | RPC Byte Order |
+|---------------|---------------------|-----------------|
+| Example: SHA256(SHA256(0x00)) | Hash: 1406...539a | Hash: 9a53...0614 |
+|---------------|---------------------|-----------------|
+| Header Hashes: SHA256(SHA256(block header)) | Used when constructing block headers | Used by RPCs such as `getblock`; widely used in block explorers |
+|---------------|---------------------|-----------------|
+| Merkle Roots: SHA256(SHA256(TXIDs and merkle rows)) | Used when constructing block headers | Returned by RPCs such as `getblock` |
+|---------------|---------------------|-----------------|
+| TXIDs: SHA256(SHA256(transaction)) | Used in transaction inputs | Used by RPCs such as `gettransaction` and transaction data parts of `getblock`; widely used in wallet programs |
+|---------------|---------------------|-----------------|
+| P2PKH Hashes: RIPEMD160(SHA256(pubkey)) | Used in both addresses and pubkey scripts | **N/A:** RPCs use addresses which use internal byte order |
+|---------------|---------------------|-----------------|
+| P2SH Hashes: RIPEMD160(SHA256(redeem script)) | Used in both addresses and pubkey scripts | **N/A:** RPCs use addresses which use internal byte order |
+|---------------|---------------------|-----------------|
+
+:::{note}
+Note: RPCs which return raw results, such as `getrawtransaction` or the raw mode of `getblock`, always display hashes as they appear in blocks ([internal byte order](../resources/glossary.md#internal-byte-order)).
+:::
+
+The code below may help you check byte order by generating hashes from raw hex.
+
+``` python
+from sys import byteorder
+from hashlib import sha256
+import codecs
+
+decode_hex = codecs.getdecoder('hex_codec')
+encode_hex = codecs.getencoder('hex_codec')
+
+# You can put in $data an 80-byte block header to get its header hash,
+# or a raw transaction to get its txid
+data = decode_hex('00')[0]
+data_hash = sha256(sha256(data).digest()).digest()
+
+print("Warning: this code only tested on a little-endian x86_64 arch")
+print()
+print("System byte order: ", byteorder)
+print("Internal-Byte-Order Hash: ", encode_hex(data_hash)[0])
+print("RPC-Byte-Order Hash: ", encode_hex(data_hash[::-1])[0])
+```
diff --git a/docs/core/api/http-rest-quick-reference.md b/docs/core/api/http-rest-quick-reference.md
new file mode 100644
index 000000000..c91632829
--- /dev/null
+++ b/docs/core/api/http-rest-quick-reference.md
@@ -0,0 +1,11 @@
+# Quick Reference
+
+* [GET Block](../api/http-rest-requests.md#get-block) 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 Bitcoin Core 0.13.0_
+* [GET Block/NoTxDetails](../api/http-rest-requests.md#get-blocknotxdetails) gets a block with a particular header hash from the local block database either as a JSON object or as a serialized block. The JSON object includes TXIDs for transactions within the block rather than the complete transactions [GET block](../api/http-rest-requests.md#get-block) returns. _Updated in Bitcoin Core 0.13.0_
+* [GET BlockHashByHeight](../api/http-rest-requests.md#get-blockhashbyheight) returns the hash of a block in best-block-chain at the height provided. The hash can be returned as a JSON object or serialized as binary or hex. _Added in Dash Core 18.0.0_
+* [GET ChainInfo](../api/http-rest-requests.md#get-chaininfo) returns information about the current state of the block chain. _Updated in Bitcoin Core 0.12.0_
+* [GET GetUtxos](../api/http-rest-requests.md#get-getutxos) returns an UTXO set given a set of outpoints. _New in Bitcoin Core 0.11.0_
+* [GET Headers](../api/http-rest-requests.md#get-headers) returns a specified amount of block headers in upward direction. _Updated in Bitcoin Core 0.13.0_
+* [GET MemPool/Contents](../api/http-rest-requests.md#get-mempoolcontents) returns all transaction in the memory pool with detailed information. _New in Bitcoin Core 0.12.0_
+* [GET MemPool/Info](../api/http-rest-requests.md#get-mempoolinfo) returns information about the node's current transaction memory pool. _New in Bitcoin Core 0.12.0_
+* [GET Tx](../api/http-rest-requests.md#get-tx) 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 this method may fail on historic transactions unless you use the non-default `txindex=1` in your Dash Core startup settings. _Updated in Bitcoin Core 0.13.0_
diff --git a/docs/core/api/http-rest-requests.md b/docs/core/api/http-rest-requests.md
new file mode 100644
index 000000000..f5271a3af
--- /dev/null
+++ b/docs/core/api/http-rest-requests.md
@@ -0,0 +1,1030 @@
+```{eval-rst}
+.. meta::
+ :title: Requests
+ :description: Provides details about Dash Core HTTP REST API endpoints.
+```
+
+# Requests
+
+## GET Block
+
+The `GET block` operation gets a block with a particular header hash from the local block database either as a JSON object or as a serialized block.
+
+*Request*
+
+``` text
+GET /block/.
+```
+
+*Parameter #1---the header hash of the block to retrieve*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+Header Hash | path (hex) | Required (exactly 1) | The hash of the header of the block to get, encoded as hex in RPC byte order
+
+*Parameter #2---the output format*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+Format | suffix | Required (exactly 1) | Set to `.json` for decoded block contents in JSON, or `.bin` or `hex` for a serialized block in binary or hex
+
+*Response as JSON*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+Result | object | Required (exactly 1) | An object containing the requested block
+→ `hash` | string (hex) | Required (exactly 1) | The hash of this block's block header encoded as hex in RPC byte order. This is the same as the hash provided in parameter #1
+→ `confirmations` | number (int) | Required (exactly 1) | The number of confirmations the transactions in this block have, starting at 1 when this block is at the tip of the best block chain. This score will be -1 if the the block is not part of the best block chain
+→ `size` | number (int) | Required (exactly 1) | The size of this block in serialized block format, counted in bytes
+→ `height` | number (int) | Required (exactly 1) | The height of this block on its block chain
+→ `version` | number (int) | Required (exactly 1) | This block's version number. See [block version numbers](../reference/block-chain-block-headers.md#block-versions)
+→ `versionHex` | number (int) | Required (exactly 1) | This block's version number formatted in hexadecimal.
+→ `merkleroot` | string (hex) | Required (exactly 1) | The merkle root for this block, encoded as hex in RPC byte order
+→ `tx` | array | Required (exactly 1) | An array containing all transactions in this block. The transactions appear in the array in the same order they appear in the serialized block
+→ → Transaction | object | Required (1 or more) | An object describing a particular transaction within this block
+→ → → `txid` | string (hex) | Required (exactly 1) | The transaction's TXID encoded as hex in RPC byte order
+→ → → `size` | number (int) | Required (exactly 1) | *Added in Bitcoin Core 0.12.0*
The serialized transaction size
+→ → → `version` | number (int) | Required (exactly 1) | The transaction format version number
+→ → → `type` | number (int) | Required (exactly 1) | *Added in Dash Core 0.13.0.0*
The transaction format type
+→ → → `locktime` | number (int) | Required (exactly 1) | The transaction's locktime: either a Unix epoch date or block height; see the [locktime parsing rules](../guide/transactions-locktime-and-sequence-number.md#locktime-parsing-rules)
+→ → → `vin` | array | Required (exactly 1) | An array of objects with each object being an input vector (vin) for this transaction. Input objects will have the same order within the array as they have in the transaction, so the first input listed will be input 0
+→ → → → Input | object | Required (1 or more) | An object describing one of this transaction's inputs. May be a regular input or a coinbase
+→ → → → → `txid` | string | Optional (0 or 1) | The TXID of the outpoint being spent, encoded as hex in RPC byte order. Not present if this is a coinbase transaction
+→ → → → → `vout` | number (int) | Optional (0 or 1) | The output index number (vout) of the outpoint being spent. The first output in a transaction has an index of `0`. Not present if this is a coinbase transaction
+→ → → → → `scriptSig` | object | Optional (0 or 1) | An object describing the signature script of this input. Not present if this is a coinbase transaction
+→ → → → → → `asm` | string | Required (exactly 1) | The signature script in decoded form with non-data-pushing opcodes listed
+→ → → → → → `hex` | string (hex) | Required (exactly 1) | The signature script encoded as hex
+→ → → → → `coinbase` | string (hex) | Optional (0 or 1) | The coinbase (similar to the hex field of a scriptSig) encoded as hex. Only present if this is a coinbase transaction
+→ → → → → `value` | number (Dash) | Optional (exactly 1) | The number of Dash paid to this output. May be `0`.
Only present if `spentindex` enabled
+→ → → → → `valueSat` | number (duffs) | Optional (exactly 1) | The number of duffs paid to this output. May be `0`.
Only present if `spentindex` enabled
+→ → → → → → `addresses` | string : array | Optional (0 or 1) | The P2PKH or P2SH addresses used in this transaction, or the computed P2PKH address of any pubkeys in this transaction. This array will not be returned for `nulldata` or `nonstandard` script types.
Only present if `spentindex` enabled
+→ → → → → → → Address | string | Required (1 or more) | A P2PKH or P2SH address
+→ → → → → `sequence` | number (int) | Required (exactly 1) | The input sequence number
+→ → → `vout` | array | Required (exactly 1) | An array of objects each describing an output vector (vout) for this transaction. Output objects will have the same order within the array as they have in the transaction, so the first output listed will be output 0
+→ → → → Output | object | Required (1 or more) | An object describing one of this transaction's outputs
+→ → → → → `value` | number (Dash) | Required (exactly 1) | The number of Dash paid to this output. May be `0`
+→ → → → → `valueSat` | number (duffs) | Required (exactly 1) | The number of duffs paid to this output. May be `0`
+→ → → → → `n` | number (int) | Required (exactly 1) | The output index number of this output within this transaction
+→ → → → → `scriptPubKey` | object | Required (exactly 1) | An object describing the pubkey script
+→ → → → → → `asm` | string | Required (exactly 1) | The pubkey script in decoded form with non-data-pushing opcodes listed
+→ → → → → → `hex` | string (hex) | Required (exactly 1) | The pubkey script encoded as hex
+→ → → → → → `reqSigs` | number (int) | Optional (0 or 1) | The number of signatures required; this is always `1` for P2PK, P2PKH, and P2SH (including P2SH multisig because the redeem script is not available in the pubkey script). It may be greater than 1 for bare multisig. This value will not be returned for `nulldata` or `nonstandard` script types (see the `type` key below)
+→ → → → → → `type` | string | Optional (0 or 1) | The type of script. This will be one of the following: • `pubkey` for a P2PK script • `pubkeyhash` for a P2PKH script • `scripthash` for a P2SH script • `multisig` for a bare multisig script • `nulldata` for nulldata scripts • `nonstandard` for unknown scripts
+→ → → → → → `addresses` | string : array | Optional (0 or 1) | The P2PKH or P2SH addresses used in this transaction, or the computed P2PKH address of any pubkeys in this transaction. This array will not be returned for `nulldata` or `nonstandard` script types
+→ → → → → → → Address | string | Required (1 or more) | A P2PKH or P2SH address
+→ → → `extraPayloadSize` | number (int) | Optional (0 or 1) | *Added in Dash Core 0.13.0.0*
Size of the DIP2 extra payload. Only present if it's a DIP2 special transaction
+→ → → `extraPayload` | string (hex) | Optional (0 or 1) | *Added in Dash Core 0.13.0.0*
Hex encoded DIP2 extra payload data. Only present if it's a DIP2 special transaction
+→ `time` | number (int) | Required (exactly 1) | The value of the *time* field in the block header, indicating approximately when the block was created
+→ `mediantime` | number (int) | Required (exactly 1) | *Added in Bitcoin Core 0.12.0*
The median time of the 11 blocks before the most recent block on the blockchain. Used for validating transaction locktime under BIP113
+→ `nonce` | number (int) | Required (exactly 1) | The nonce which was successful at turning this particular block into one that could be added to the best block chain
+→ `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
+→ `previousblockhash` | string (hex) | Required (exactly 1) | The hash of the header of the previous block, encoded as hex in RPC byte order
+→ `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
+
+*Examples from Dash Core 0.12.2*
+
+Request a block in hex-encoded serialized block format:
+
+``` bash
+curl http://localhost:19998/rest/block/0000000000ccbf46cf6b78827ac1019f82598be839bce08bff00d188e75fb451.hex
+```
+
+Result (wrapped):
+
+``` bash
+0000002097e8135d73afa52145f6d0b4d0f957030cd598837ddc6750271fb109\
+000000008478305a7abf2f7cb21a889fb68d53c3e51685349e18e1b104b5956c\
+100bfea2c72d285a84030a1cd0041ed701010000000100000000000000000000\
+00000000000000000000000000000000000000000000ffffffff13037a94000e\
+2f5032506f6f6c2d74444153482fffffffff06a1f9ef04000000001976a91414\
+e3832cd7192ffb358a31d842636c4db8dfb1ac88ac6c357f3c000000001976a9\
+149262f2289e1f021dca954d8cf07a7ad72c2cc24d88ac31f49e010000000019\
+76a914d93f7ffa324b77d361e89a3c9c8df46ccdb4b39288ac40230e43000000\
+001976a914c4541983721b26ada79770bf22de4885e19f566188ac0200000000\
+0000004341047559d13c3f81b1fadbd8dd03e4b5a1c73b05e2b980e00d467aa9\
+440b29c7de23664dde6428d75cafed22ae4f0d302e26c5c5a5dd4d3e1b796d72\
+81bdc9430f35ac00000000000000002a6a28c855abe6461b1003ea36feb88a3b\
+d50c5696e5784d11f8cd5e892978685de1d6000000000100000000000000
+```
+
+Get the same block in JSON:
+
+``` bash
+curl http://localhost:19998/rest/block/0000000000ccbf46cf6b78827ac1019f82598be839bce08bff00d188e75fb451.json
+```
+
+Result (whitespace added):
+
+``` json
+{
+ "hash":"0000000000ccbf46cf6b78827ac1019f82598be839bce08bff00d188e75fb451",
+ "confirmations":20,
+ "size":414,
+ "height":38010,
+ "version":536870912,
+ "merkleroot":"a2fe0b106c95b504b1e1189e348516e5c3538db69f881ab27c2fbf7a5a307884",
+ "tx":[
+ {
+ "txid":"a2fe0b106c95b504b1e1189e348516e5c3538db69f881ab27c2fbf7a5a307884",
+ "size":333,
+ "version":1,
+ "locktime":0,
+ "vin":[
+ {
+ "coinbase":"037a94000e2f5032506f6f6c2d74444153482f",
+ "sequence":4294967295
+ }
+ ],
+ "vout":[
+ {
+ "value":0.82835873,
+ "valueSat":82835873,
+ "n":0,
+ "scriptPubKey":{
+ "asm":"OP_DUP OP_HASH160 14e3832cd7192ffb358a31d842636c4db8dfb1ac OP_EQUALVERIFY OP_CHECKSIG",
+ "hex":"76a91414e3832cd7192ffb358a31d842636c4db8dfb1ac88ac",
+ "reqSigs":1,
+ "type":"pubkeyhash",
+ "addresses":[
+ "yNDtusuhm6otr3eeGh3SqdpNczV4aZSx1b"
+ ]
+ }
+ },
+ {
+ "value":10.14969708,
+ "valueSat":1014969708,
+ "n":1,
+ "scriptPubKey":{
+ "asm":"OP_DUP OP_HASH160 9262f2289e1f021dca954d8cf07a7ad72c2cc24d OP_EQUALVERIFY OP_CHECKSIG",
+ "hex":"76a9149262f2289e1f021dca954d8cf07a7ad72c2cc24d88ac",
+ "reqSigs":1,
+ "type":"pubkeyhash",
+ "addresses":[
+ "yZfU36R8dhdnFaK3AwfnubrLXAG2G1WiVn"
+ ]
+ }
+ },
+ {
+ "value":0.27194417,
+ "valueSat":27194417,
+ "n":2,
+ "scriptPubKey":{
+ "asm":"OP_DUP OP_HASH160 d93f7ffa324b77d361e89a3c9c8df46ccdb4b392 OP_EQUALVERIFY OP_CHECKSIG",
+ "hex":"76a914d93f7ffa324b77d361e89a3c9c8df46ccdb4b39288ac",
+ "reqSigs":1,
+ "type":"pubkeyhash",
+ "addresses":[
+ "yg89Yt5Tjzs9nRpX3wJCuvr7KuQvgkvmeC"
+ ]
+ }
+ },
+ {
+ "value":11.25000000,
+ "valueSat":1125000000,
+ "n":3,
+ "scriptPubKey":{
+ "asm":"OP_DUP OP_HASH160 c4541983721b26ada79770bf22de4885e19f5661 OP_EQUALVERIFY OP_CHECKSIG",
+ "hex":"76a914c4541983721b26ada79770bf22de4885e19f566188ac",
+ "reqSigs":1,
+ "type":"pubkeyhash",
+ "addresses":[
+ "yeDY39aiqbBHbJft5F6rokR23EaZca6UTU"
+ ]
+ }
+ },
+ {
+ "value":0.00000002,
+ "valueSat":2,
+ "n":4,
+ "scriptPubKey":{
+ "asm":"047559d13c3f81b1fadbd8dd03e4b5a1c73b05e2b980e00d467aa9440b29c7de23664dde6428d75cafed22ae4f0d302e26c5c5a5dd4d3e1b796d7281bdc9430f35 OP_CHECKSIG",
+ "hex":"41047559d13c3f81b1fadbd8dd03e4b5a1c73b05e2b980e00d467aa9440b29c7de23664dde6428d75cafed22ae4f0d302e26c5c5a5dd4d3e1b796d7281bdc9430f35ac",
+ "reqSigs":1,
+ "type":"pubkey",
+ "addresses":[
+ "yb21342iADyqAotjwcn4imqjvAcdYhnzeH"
+ ]
+ }
+ },
+ {
+ "value":0.00000000,
+ "valueSat":0,
+ "n":5,
+ "scriptPubKey":{
+ "asm":"OP_RETURN c855abe6461b1003ea36feb88a3bd50c5696e5784d11f8cd5e892978685de1d60000000001000000",
+ "hex":"6a28c855abe6461b1003ea36feb88a3bd50c5696e5784d11f8cd5e892978685de1d60000000001000000",
+ "type":"nulldata"
+ }
+ }
+ ]
+ }
+ ],
+ "time":1512582599,
+ "mediantime":1512582025,
+ "nonce":3609068752,
+ "bits":"1c0a0384",
+ "difficulty":25.56450187425715,
+ "chainwork":"00000000000000000000000000000000000000000000000000092fc476457b68",
+ "previousblockhash":"0000000009b11f275067dc7d8398d50c0357f9d0b4d0f64521a5af735d13e897",
+ "nextblockhash":"0000000000a9baff28a79db2a50e13af8f313138f4568339f58d73eda14a4d51"
+}
+```
+
+*See also*
+
+* [GET Block/NoTxDetails](../api/http-rest-requests.md#get-blocknotxdetails) gets a block with a particular header hash from the local block database either as a JSON object or as a serialized block. The JSON object includes TXIDs for transactions within the block rather than the complete transactions [GET block](../api/http-rest-requests.md#get-block) returns.
+* [GetBestBlockHash](../api/remote-procedure-calls-blockchain.md#getbestblockhash) RPC: returns the header hash of the most recent block on the best block chain.
+* [GetBlock](../api/remote-procedure-calls-blockchain.md#getblock) RPC: gets a block with a particular header hash from the local block database either as a JSON object or as a serialized block.
+* [GetBlockHash](../api/remote-procedure-calls-blockchain.md#getblockhash) RPC: returns the header hash of a block at the given height in the local best block chain.
+
+## GET Block/NoTxDetails
+
+The `GET block/notxdetails` operation gets a block with a particular header hash from the local block database either as a JSON object or as a serialized block. The JSON object includes TXIDs for transactions within the block rather than the complete transactions [GET block](../api/http-rest-requests.md#get-block) returns.
+
+*Request*
+
+``` text
+GET /block/notxdetails/.
+```
+
+*Parameter #1---the header hash of the block to retrieve*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+Header Hash | path (hex) | Required (exactly 1) | The hash of the header of the block to get, encoded as hex in RPC byte order
+
+*Parameter #2---the output format*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+Format | suffix | Required (exactly 1) | Set to `.json` for decoded block contents in JSON, or `.bin` or `hex` for a serialized block in binary or hex
+
+*Response as JSON*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+Result | object | Required (exactly 1) | An object containing the requested block
+→ `hash` | string (hex) | Required (exactly 1) | The hash of this block's block header encoded as hex in RPC byte order. This is the same as the hash provided in parameter #1
+→ `confirmations` | number (int) | Required (exactly 1) | The number of confirmations the transactions in this block have, starting at 1 when this block is at the tip of the best block chain. This score will be -1 if the the block is not part of the best block chain
+→ `size` | number (int) | Required (exactly 1) | The size of this block in serialized block format, counted in bytes
+→ `height` | number (int) | Required (exactly 1) | The height of this block on its block chain
+→ `version` | number (int) | Required (exactly 1) | This block's version number. See [block version numbers](../reference/block-chain-block-headers.md#block-versions)
+→ `versionHex` | number (int) | Required (exactly 1) | *Added in Bitcoin Core 0.13.0*
This block's version number formatted in hexadecimal. See [BIP9 assignments]
+→ `merkleroot` | string (hex) | Required (exactly 1) | The merkle root for this block, encoded as hex in RPC byte order
+→ `tx` | array | Required (exactly 1) | An array containing all transactions in this block. The transactions appear in the array in the same order they appear in the serialized block
+→ → TXID | string (hex) | Required (1 or more) | The TXID of a transaction in this block, encoded as hex in RPC byte order
+→ `time` | number (int) | Required (exactly 1) | The value of the *time* field in the block header, indicating approximately when the block was created
+→ `mediantime` | number (int) | Required (exactly 1) | *Added in Bitcoin Core 0.12.0*
The median time of the 11 blocks before the most recent block on the blockchain. Used for validating transaction locktime under BIP113
+→ `nonce` | number (int) | Required (exactly 1) | The nonce which was successful at turning this particular block into one that could be added to the best block chain
+→ `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
+→ `previousblockhash` | string (hex) | Required (exactly 1) | The hash of the header of the previous block, encoded as hex in RPC byte order
+→ `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
+
+*Examples from Dash Core 0.12.2*
+
+Request a block in hex-encoded serialized block format:
+
+``` bash
+curl http://localhost:19998/rest/block/notxdetails/0000000000ccbf46cf6b78827ac1019f82598be839bce08bff00d188e75fb451.hex
+```
+
+Result (wrapped):
+
+``` bash
+0000002097e8135d73afa52145f6d0b4d0f957030cd598837ddc6750271fb109\
+000000008478305a7abf2f7cb21a889fb68d53c3e51685349e18e1b104b5956c\
+100bfea2c72d285a84030a1cd0041ed701010000000100000000000000000000\
+00000000000000000000000000000000000000000000ffffffff13037a94000e\
+2f5032506f6f6c2d74444153482fffffffff06a1f9ef04000000001976a91414\
+e3832cd7192ffb358a31d842636c4db8dfb1ac88ac6c357f3c000000001976a9\
+149262f2289e1f021dca954d8cf07a7ad72c2cc24d88ac31f49e010000000019\
+76a914d93f7ffa324b77d361e89a3c9c8df46ccdb4b39288ac40230e43000000\
+001976a914c4541983721b26ada79770bf22de4885e19f566188ac0200000000\
+0000004341047559d13c3f81b1fadbd8dd03e4b5a1c73b05e2b980e00d467aa9\
+440b29c7de23664dde6428d75cafed22ae4f0d302e26c5c5a5dd4d3e1b796d72\
+81bdc9430f35ac00000000000000002a6a28c855abe6461b1003ea36feb88a3b\
+d50c5696e5784d11f8cd5e892978685de1d6000000000100000000000000
+```
+
+Get the same block in JSON:
+
+``` bash
+curl http://localhost:19998/rest/block/notxdetails/0000000000ccbf46cf6b78827ac1019f82598be839bce08bff00d188e75fb451.json
+```
+
+Result (whitespace added):
+
+``` json
+{
+ "hash":"0000000000ccbf46cf6b78827ac1019f82598be839bce08bff00d188e75fb451",
+ "confirmations":55,
+ "size":414,
+ "height":38010,
+ "version":536870912,
+ "merkleroot":"a2fe0b106c95b504b1e1189e348516e5c3538db69f881ab27c2fbf7a5a307884",
+ "tx":[
+ "a2fe0b106c95b504b1e1189e348516e5c3538db69f881ab27c2fbf7a5a307884"
+ ],
+ "time":1512582599,
+ "mediantime":1512582025,
+ "nonce":3609068752,
+ "bits":"1c0a0384",
+ "difficulty":25.56450187425715,
+ "chainwork":"00000000000000000000000000000000000000000000000000092fc476457b68",
+ "previousblockhash":"0000000009b11f275067dc7d8398d50c0357f9d0b4d0f64521a5af735d13e897",
+ "nextblockhash":"0000000000a9baff28a79db2a50e13af8f313138f4568339f58d73eda14a4d51"
+}
+```
+
+*See also*
+
+* [GET Block](../api/http-rest-requests.md#get-block): gets a block with a particular header hash from the local block database either as a JSON object or as a serialized block.
+* [GetBlock](../api/remote-procedure-calls-blockchain.md#getblock) RPC: gets a block with a particular header hash from the local block database either as a JSON object or as a serialized block.
+* [GetBlockHash](../api/remote-procedure-calls-blockchain.md#getblockhash) RPC: returns the header hash of a block at the given height in the local best block chain.
+* [GetBestBlockHash](../api/remote-procedure-calls-blockchain.md#getbestblockhash) RPC: returns the header hash of the most recent block on the best block chain.
+
+## GET BlockHashByHeight
+
+The `GET blockhashbyheight` operation returns the hash of a block in best-block-chain at the height provided. The hash can be returned as a JSON object or serialized as binary or hex.
+
+*Request*
+
+``` text
+GET /blockhashbyheight/.
+```
+
+*Parameter #1---the header hash of the block to retrieve*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+Block Height | number (int) | Required (exactly 1) | The height of the block hash to get
+
+*Parameter #2---the output format*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+Format | suffix | Required (exactly 1) | Set to `.json` for decoded block hash contents in JSON, or `.bin` or `hex` for a serialized block hash in binary or hex
+
+*Response as JSON*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`result` | object | Required (exactly 1) | An object containing the block hash for the requested height
+→ `blockhash` | string | Required (exactly 1) | Block hash for the requested height
+
+*Examples from Dash Core 18.0.0*
+
+Request a block hash in hex-encoded serialized block hash format:
+
+``` bash
+curl http://localhost:19998/rest/blockhashbyheight/1.hex
+```
+
+Result:
+
+```text
+0000047d24635e347be3aaaeb66c26be94901a2f962feccd4f95090191f208c1
+```
+
+Get the same block hash in JSON:
+
+``` bash
+curl http://localhost:19998/rest/blockhashbyheight/1.json
+```
+
+Result:
+
+```json
+{
+ "blockhash": "0000047d24635e347be3aaaeb66c26be94901a2f962feccd4f95090191f208c1"
+}
+```
+
+*See also*
+
+* [GetBlockHash](../api/remote-procedure-calls-blockchain.md#getblockhash) RPC: returns the header hash of a block at the given height in the local best block chain.
+
+## GET ChainInfo
+
+The `GET chaininfo` operation returns information about the current state of the block chain. Supports only `json` as output format.
+
+*Request*
+
+``` text
+GET /chaininfo.json
+```
+
+*Parameters: none*
+
+*Response as JSON*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`result` | object | Required (exactly 1) | Information about the current state of the local block chain
+→ `chain` | string | Required (exactly 1) | The name of the block chain. One of `main` for mainnet, `test` for testnet, or `regtest` for regtest
+→ `blocks` | number (int) | Required (exactly 1) | The number of validated blocks in the local best block chain. For a new node with just the hardcoded genesis block, this will be 0
+→ `headers` | number (int) | Required (exactly 1) | The number of validated headers in the local best headers chain. For a new node with just the hardcoded genesis block, this will be zero. This number may be higher than the number of *blocks*
+→ `bestblockhash` | string (hex) | Required (exactly 1) | The hash of the header of the highest validated block in the best block chain, encoded as hex in RPC byte order. This is identical to the string returned by the [`getbestblockhash` RPC](../api/remote-procedure-calls-blockchain.md#getbestblockhash)
+→ `difficulty` | number (real) | Required (exactly 1) | The difficulty of the highest-height block in the best block chain
+→ `mediantime` | number (int) | Required (exactly 1) | *Added in Bitcoin Core 0.12.0*
The median time of the 11 blocks before the most recent block on the blockchain. Used for validating transaction locktime under BIP113
+→ `verificationprogress` | number (real) | Required (exactly 1) | Estimate of what percentage of the block chain transactions have been verified so far, starting at 0.0 and increasing to 1.0 for fully verified. May slightly exceed 1.0 when fully synced to account for transactions in the memory pool which have been verified before being included in a block
+→ `chainwork` | string (hex) | Required (exactly 1) | The estimated number of block header hashes checked from the genesis block to this block, encoded as big-endian hex
+→ `pruned` | bool | Required (exactly 1) | Indicates if the blocks are subject to pruning
+→ `pruneheight` | number (int) | Optional (0 or 1) | The lowest-height complete block stored if pruning is activated
+→ `softforks` | array | Required (exactly 1) | *Added in Bitcoin Core 0.12.0*
An array of objects each describing a current or previous soft fork
+→ → Softfork | object | Required (3 or more) | A specific softfork
+→ → → `id` | string | Required (exactly 1) | The name of the softfork
+→ → → `version` | numeric (int) | Required (exactly 1) | The block version used for the softfork
+→ → → `enforce` | string : object | Optional (0 or 1) | The progress toward enforcing the softfork rules for new-version blocks
+→ → → → `status` | bool | Required (exactly 1) | Indicates if the threshold was reached
+→ → → → `found` | numeric (int) | Optional (0 or 1) | Number of blocks that support the softfork
+→ → → → `required` | numeric (int) | Optional (0 or 1) | Number of blocks that are required to reach the threshold
+→ → → → `window` | numeric (int) | Optional (0 or 1) | The maximum size of examined window of recent blocks
+→ → → `reject` | object | Optional (0 or 1) | The progress toward enforcing the softfork rules for new-version blocks
+→ → → → `status` | bool | Optional (0 or 1) | Indicates if the threshold was reached
+→ → → → `found` | numeric (int) | Optional (0 or 1) | Number of blocks that support the softfork
+→ → → → `required` | numeric (int) | Optional (0 or 1) | Number of blocks that are required to reach the threshold
+→ → → → `window` | numeric (int) | Optional (0 or 1) | The maximum size of examined window of recent blocks
+→ `bip9_softforks` | object | Required (exactly 1) | *Added in Bitcoin Core 0.12.1*
The status of BIP9 softforks in progress
+→ → Name | string : object | Required (1 or more) | A specific BIP9 softfork
+→ → → `status` | string | Required (exactly 1) | Set to one of the following reasons: • `defined` if voting hasn't started yet • `started` if the voting has started • `locked_in` if the voting was successful but the softfort hasn't been activated yet • `active` if the softfork was activated • `failed` if the softfork has not receieved enough votes
+
+*Examples from Dash Core 0.12.2*
+
+Get blockchain info in JSON:
+
+``` bash
+curl http://localhost:19998/rest/chaininfo.json
+```
+
+Result (whitespace added):
+
+``` json
+{
+ "chain":"test",
+ "blocks":38066,
+ "headers":38066,
+ "bestblockhash":"0000000006c6f812d4721c09b3a3ce6547d2291ff822ee39597515f75822ed3e",
+ "difficulty":18.8278810867833,
+ "mediantime":1512591324,
+ "verificationprogress":0.9999996159024219,
+ "chainwork":"00000000000000000000000000000000000000000000000000093549c2729cb1",
+ "pruned":false,
+ "softforks":[
+ {
+ "id":"bip34",
+ "version":2,
+ "enforce":{
+ "status":true,
+ "found":100,
+ "required":51,
+ "window":100
+ },
+ "reject":{
+ "status":true,
+ "found":100,
+ "required":75,
+ "window":100
+ }
+ },
+ {
+ "id":"bip66",
+ "version":3,
+ "enforce":{
+ "status":true,
+ "found":100,
+ "required":51,
+ "window":100
+ },
+ "reject":{
+ "status":true,
+ "found":100,
+ "required":75,
+ "window":100
+ }
+ },
+ {
+ "id":"bip65",
+ "version":4,
+ "enforce":{
+ "status":true,
+ "found":100,
+ "required":51,
+ "window":100
+ },
+ "reject":{
+ "status":true,
+ "found":100,
+ "required":75,
+ "window":100
+ }
+ }
+ ],
+ "bip9_softforks":[
+ {
+ "id":"csv",
+ "status":"active"
+ },
+ {
+ "id":"dip0001",
+ "status":"active"
+ }
+ ]
+}
+```
+
+*See also*
+
+* [GetBlockChainInfo](../api/remote-procedure-calls-blockchain.md#getblockchaininfo) RPC: provides information about the current state of the block chain.
+
+## GET GetUtxos
+
+The `GET getutxos` operation returns an UTXO set given a set of outpoints.
+
+*Request*
+
+``` text
+GET /getutxos//-/-/.../-.
+```
+
+*Parameter #1---Include memory pool transactions*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+Check mempool | string | Optional (0 or 1) | Set to `checkmempool` to include transactions that are currently in the memory pool to the calculation
+
+*Parameter #2---List of Outpoints*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+Outpoint | vector | Required (1 or more) | The list of outpoints to be queried. Each outpoint is the TXID of the transaction, encoded as hex in RPC byte order with an additional `-n` parameter for the output index (vout) number, with the index starting from 0
+
+*Parameter #3---the output format*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+Format | suffix | Required (exactly 1) | Set to `.json` for decoded block contents in JSON, or `.bin` or `hex` for a serialized block in binary or hex
+
+*Response as JSON*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`result` | object | Required (exactly 1) | The requested UTXO set
+→→ `chainHeight` | number (int) | Required (exactly 1) | The height of the chain at the moment the result was calculated
+→ `chaintipHash` | number (int) | Required (exactly 1) | The block hash of the top of the chain at the moment the result was calculated
+→ `bitmap` | number (int) | Required (exactly 1) | Whether each requested output was found in the UTXO set or not. A `1` is returned for those that were found and a `0` is returned for those that were not found. Results are returned in the same order as outpoints were requested in the input parameters
+→ `utxos` | array | Required (exactly 1) | An array of objects each describing an outpoint that is unspent
+→→`Unspent Outpoint` | object | Optional (0 or more) | A UTXO match based on the query
+→→→ `txvers` | number (int) | Required (exactly 1) | The version number of the transaction the UTXO was found in
+→ `height` | number (int) | Required (exactly 1) | The height of the block containing the defining transaction, or 0x7FFFFFFF if the tx is in the mempool
+→ → → `value` | number (int) | Required (exactly 1) | The value of the transaction
+→ → → `scriptPubKey` | object | Required (exactly 1) | An object describing the pubkey script
+→ → → → `asm` | string | Required (exactly 1) | The pubkey script in decoded form with non-data-pushing opcodes listed
+→ → → → `hex` | string (hex) | Required (exactly 1) | The pubkey script encoded as hex
+→ → → → `reqSigs` | number (int) | Optional (0 or 1) | The number of signatures required; this is always `1` for P2PK, P2PKH, and P2SH (including P2SH multisig because the redeem script is not available in the pubkey script). It may be greater than 1 for bare multisig. This value will not be returned for `nulldata` or `nonstandard` script types (see the `type` key below)
+→ → → → `type` | string | Optional (0 or 1) | The type of script. This will be one of the following: • `pubkey` for a P2PK script • `pubkeyhash` for a P2PKH script • `scripthash` for a P2SH script • `multisig` for a bare multisig script • `nulldata` for nulldata scripts • `nonstandard` for unknown scripts
+→ → → → `addresses` | string : array | Optional (0 or 1) | Array of P2PKH or P2SH addresses used in this transaction, or the computed P2PKH address of any pubkeys in this transaction. This array will not be returned for `nulldata` or `nonstandard` script types
+→ → → → → Address | string | Required (1 or more) | A P2PKH or P2SH address
+
+*Examples from Dash Core 0.12.2*
+
+Request the UTXO set:
+
+``` bash
+curl http://localhost:19998/rest/getutxos/checkmempool/7b6caf68c33794b0bda65e63691739919f13156b57c7ec20a0b4de1f33c580bd-0.hex
+```
+
+Result (wrapped):
+
+``` bash
+c39400005ac8db505390f3c77635132117a7fdf07b2eb45c3d9fe38535b77b05\
+0000000001010101000000c394000050ae3b16000000001976a9146f4def95a3\
+15e83bef5e1197ace4aa7ec55f2ecc88ac
+```
+
+Same request in JSON:
+
+``` bash
+curl http://localhost:19998/rest/getutxos/checkmempool/7b6caf68c33794b0bda65e63691739919f13156b57c7ec20a0b4de1f33c580bd-0.json
+```
+
+Result (whitespace added):
+
+``` json
+{
+ "chainHeight":38083,
+ "chaintipHash":"00000000057bb73585e39f3d5cb42e7bf0fda71721133576c7f3905350dbc85a",
+ "bitmap":"1",
+ "utxos":[
+ {
+ "txvers":1,
+ "height":38083,
+ "value":3.73010000,
+ "scriptPubKey":{
+ "asm":"OP_DUP OP_HASH160 6f4def95a315e83bef5e1197ace4aa7ec55f2ecc OP_EQUALVERIFY OP_CHECKSIG",
+ "hex":"76a9146f4def95a315e83bef5e1197ace4aa7ec55f2ecc88ac",
+ "reqSigs":1,
+ "type":"pubkeyhash",
+ "addresses":[
+ "yWTyDaMb1KZSRYwrq2DDW3Q4rKYuuPutDS"
+ ]
+ }
+ }
+ ]
+}
+```
+
+*See also*
+
+* [GetTxOutSetInfo](../api/remote-procedure-calls-blockchain.md#gettxoutsetinfo) RPC: 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.
+
+## GET Headers
+
+The `GET headers` operation returns a specified amount of block headers in upward direction.
+
+*Request*
+
+``` text
+GET /headers//.
+```
+
+*Parameter #1---the amount of block headers to retrieve*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+Amount | number (int) | Required (exactly 1) | The amount of block headers in upward direction to return (including the start header hash)
+
+*Parameter #2---the header hash of the block to retrieve*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+Header Hash | path (hex) | Required (exactly 1) | The hash of the header of the block to get, encoded as hex in RPC byte order
+
+*Parameter #3---the output format*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+Format | suffix | Required (exactly 1) | Set to `.json` for decoded block contents in JSON, or `.bin` or `hex` for a serialized block in binary or hex
+
+*Response as JSON*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+Result | array | Required (exactly 1) | An array containing the requested block headers
+→ Block Header | object | Required (1 or more) | An object containing a block header. The amount of the objects is the same as the amount provided in parameter #1
+→→ `hash` | string (hex) | Required (exactly 1) | The hash of this block's block header encoded as hex in RPC byte order. This is the same as the hash provided in parameter #2
+→→ `confirmations` | number (int) | Required (exactly 1) | The number of confirmations the transactions in this block have, starting at 1 when this block is at the tip of the best block chain. This score will be -1 if the the block is not part of the best block chain
+→→ `height` | number (int) | Required (exactly 1) | The height of this block on its block chain
+→→ `version` | number (int) | Required (exactly 1) | This block's version number. See [block version numbers](../reference/block-chain-block-headers.md#block-versions)
+→→ `merkleroot` | string (hex) | Required (exactly 1) | The merkle root for this block, encoded as hex in RPC byte order
+→→ `time` | number (int) | Required (exactly 1) | The value of the *time* field in the block header, indicating approximately when the block was created
+→→ `mediantime` | number (int) | Required (exactly 1) | *Added in Bitcoin Core 0.12.0*
The median time of the 11 blocks before the most recent block on the blockchain. Used for validating transaction locktime under BIP113
+→→ `nonce` | number (int) | Required (exactly 1) | The nonce which was successful at turning this particular block into one that could be added to the best block chain
+→→ `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
+→→ `previousblockhash` | string (hex) | Required (exactly 1) | The hash of the header of the previous block, encoded as hex in RPC byte order
+→→ `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
+
+*Examples from Dash Core 0.12.2*
+
+Request 2 block headers in hex-encoded serialized block format:
+
+``` bash
+curl http://localhost:19998/rest/headers/2/0000000000ccbf46cf6b78827ac1019f82598be839bce08bff00d188e75fb451.hex
+```
+
+Result (wrapped):
+
+``` bash
+0000002097e8135d73afa52145f6d0b4d0f957030cd598837ddc6750271fb109\
+000000008478305a7abf2f7cb21a889fb68d53c3e51685349e18e1b104b5956c\
+100bfea2c72d285a84030a1cd0041ed70000002051b45fe788d100ff8be0bc39\
+e88b59829f01c17a82786bcf46bfcc000000000004dc24bddd15f790efcd7af3\
+8d03f805cc1c74516888ccec8874db2ac8beb043092e285a999f091c5d6ec419
+```
+
+Get the same block headers in JSON:
+
+``` bash
+curl http://localhost:19998/rest/headers/2/0000000000ccbf46cf6b78827ac1019f82598be839bce08bff00d188e75fb451.json
+```
+
+Result (whitespace added):
+
+``` json
+[
+ {
+ "hash":"0000000000ccbf46cf6b78827ac1019f82598be839bce08bff00d188e75fb451",
+ "confirmations":80,
+ "height":38010,
+ "version":536870912,
+ "merkleroot":"a2fe0b106c95b504b1e1189e348516e5c3538db69f881ab27c2fbf7a5a307884",
+ "time":1512582599,
+ "mediantime":1512582025,
+ "nonce":3609068752,
+ "bits":"1c0a0384",
+ "difficulty":25.56450187425715,
+ "chainwork":"00000000000000000000000000000000000000000000000000092fc476457b68",
+ "previousblockhash":"0000000009b11f275067dc7d8398d50c0357f9d0b4d0f64521a5af735d13e897",
+ "nextblockhash":"0000000000a9baff28a79db2a50e13af8f313138f4568339f58d73eda14a4d51"
+ },
+ {
+ "hash":"0000000000a9baff28a79db2a50e13af8f313138f4568339f58d73eda14a4d51",
+ "confirmations":79,
+ "height":38011,
+ "version":536870912,
+ "merkleroot":"43b0bec82adb7488eccc886851741ccc05f8038df37acdef90f715ddbd24dc04",
+ "time":1512582665,
+ "mediantime":1512582146,
+ "nonce":432303709,
+ "bits":"1c099f99",
+ "difficulty":26.60134045579303,
+ "chainwork":"00000000000000000000000000000000000000000000000000092fdf1051882b",
+ "previousblockhash":"0000000000ccbf46cf6b78827ac1019f82598be839bce08bff00d188e75fb451",
+ "nextblockhash":"0000000008de9da638149042323fc05ded619a922ff1fac6e66f66fc773bd716"
+ }
+]
+```
+
+*See also*
+
+* [GET Block/NoTxDetails](../api/http-rest-requests.md#get-blocknotxdetails) gets a block with a particular header hash from the local block database either as a JSON object or as a serialized block. The JSON object includes TXIDs for transactions within the block rather than the complete transactions [GET block](../api/remote-procedure-calls-blockchain.md#getblock) returns.
+* [GetBlockHash](../api/remote-procedure-calls-blockchain.md#getblockhash) RPC: returns the header hash of a block at the given height in the local best block chain.
+* [GetBlockHeader](../api/remote-procedure-calls-blockchain.md#getblockheader) RPC: 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.
+
+## GET MemPool/Contents
+
+The `GET mempool/contents` operation returns all transaction in the memory pool with detailed information. Supports only `json` as output format.
+
+*Request*
+
+``` text
+GET /mempool/contents.json
+```
+
+*Parameters: none*
+
+*Result as JSON*
+
+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` | number (bitcoins) | Required (exactly 1) | The transaction fee paid by the transaction in decimal bitcoins
+→ → `modifiedfee` | number (bitcoins) | Required (exactly 1) | *Added in Bitcoin Core 0.12.0*
The transaction fee with fee deltas used for mining priority in decimal bitcoins
+→ → `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
+→ → `startingpriority` | number (int) | Required (exactly 1) | The priority of the transaction when it first entered the memory pool
+→ → `currentpriority` | number (int) | Required (exactly 1) | The current priority of the transaction
+→ → `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) | *Added in Bitcoin Core 0.12.0*
The modified fees (see `modifiedfee` above) of in-mempool descendants (including this one)
+→ → `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
+
+*Examples from Dash Core 0.12.2*
+
+Get all transactions in the memory pool in JSON:
+
+``` bash
+curl http://localhost:19998/rest/mempool/contents.json
+```
+
+Result (whitespace added):
+
+``` json
+{
+ "b06edec446fbcc0fc04a6e2774a843823f5238c2e15de40e61767a44f6788d32":{
+ "size":225,
+ "fee":0.00010000,
+ "modifiedfee":0.00010000,
+ "time":1512596309,
+ "height":38094,
+ "startingpriority":1934576927.410256,
+ "currentpriority":1934576927.410256,
+ "descendantcount":1,
+ "descendantsize":225,
+ "descendantfees":10000,
+ "depends":[
+
+ ]
+ }
+}
+```
+
+*See also*
+
+* [GET MemPool/Info](../api/http-rest-requests.md#get-mempoolinfo): returns information about the node's current transaction memory pool.
+* [GetMemPoolInfo](../api/remote-procedure-calls-blockchain.md#getmempoolinfo) RPC: returns information about the node's current transaction memory pool.
+* [GetRawMemPool](../api/remote-procedure-calls-blockchain.md#getrawmempool) RPC: 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.
+
+## GET MemPool/Info
+
+The `GET mempool/info` operation returns information about the node's current transaction memory pool. Supports only `json` as output format.
+
+*Request*
+
+``` text
+GET /mempool/info.json
+```
+
+*Parameters: none*
+
+*Result as JSON*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`result` | object | Required (exactly 1) | A object containing information about the memory pool
+→ `size` | number (int) | Required (exactly 1) | The number of transactions currently in the memory pool
+→ `bytes` | number (int) | Required (exactly 1) | The total number of bytes in the transactions in the memory pool
+→ `usage` | number (int) | Required (exactly 1) | *Added in Bitcoin Core 0.11.0*
Total memory usage for the mempool in bytes
+→ `maxmempool` | number (int) | Required (exactly 1) | *Added in Bitcoin Core 0.12.0*
Maximum memory usage for the mempool in bytes
+→ `mempoolminfee` | number (int) | Required (exactly 1) | *Added in Bitcoin Core 0.12.0*
The lowest fee per kilobyte paid by any transaction in the memory pool
+
+*Examples from Dash Core 0.12.2*
+
+Get memory pool info in JSON:
+
+``` bash
+curl http://localhost:19998/rest/mempool/info.json
+```
+
+Result (whitespace added):
+
+``` json
+{
+ "size":1,
+ "bytes":1256,
+ "usage":3376,
+ "maxmempool":300000000,
+ "mempoolminfee":0.00000000
+}
+```
+
+*See also*
+
+* [GET MemPool/Contents](../api/http-rest-requests.md#get-mempoolcontents): returns all transaction in the memory pool with detailed information.
+* [GetMemPoolInfo](../api/remote-procedure-calls-blockchain.md#getmempoolinfo) RPC: returns information about the node's current transaction memory pool.
+
+## GET Tx
+
+The `GET tx` operation 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 this method may fail on historic transactions unless you use the non-default `txindex=1` in your Dash Core startup settings.
+
+:::{note}
+If you begin using `txindex=1` after downloading the block chain, you must rebuild your indexes by starting Dash Core with the option `-reindex`. This may take several hours to complete, during which time your node will not process new blocks or transactions. This reindex only needs to be done once.
+:::
+
+*Request*
+
+``` text
+GET /tx/.
+```
+
+*Parameter #1---the TXID of the transaction to retrieve*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+TXID | path (hex) | Required (exactly 1) | The TXID of the transaction to get, encoded as hex in RPC byte order
+
+*Parameter #2---the output format*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+Format | suffix | Required (exactly 1) | Set to `.json` for decoded transaction contents in JSON, or `.bin` or `hex` for a serialized transaction in binary or hex
+
+*Response as JSON*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+Result | object | Required (exactly 1) | An object describing the request transaction
+→ `txid` | string (hex) | Required (exactly 1) | The transaction's TXID encoded as hex in RPC byte order
+→ `size` | number (int) | Required (exactly 1) | *Added in Bitcoin Core 0.12.0*
The serialized transaction size
+→ `version` | number (int) | Required (exactly 1) | The transaction format version number
+→ `type` | number (int) | Required (exactly 1) | *Added in Dash Core 0.13.0.0*
The transaction format type
+→ `locktime` | number (int) | Required (exactly 1) | The transaction's locktime: either a Unix epoch date or block height; see the [locktime parsing rules](../guide/transactions-locktime-and-sequence-number.md#locktime-parsing-rules)
+→ `vin` | array | Required (exactly 1) | An array of objects with each object being an input vector (vin) for this transaction. Input objects will have the same order within the array as they have in the transaction, so the first input listed will be input 0
+→ → Input | object | Required (1 or more) | An object describing one of this transaction's inputs. May be a regular input or a coinbase
+→ → → `txid` | string | Optional (0 or 1) | The TXID of the outpoint being spent, encoded as hex in RPC byte order. Not present if this is a coinbase transaction
+→ → → `vout` | number (int) | Optional (0 or 1) | The output index number (vout) of the outpoint being spent. The first output in a transaction has an index of `0`. Not present if this is a coinbase transaction
+→ → → `scriptSig` | object | Optional (0 or 1) | An object describing the signature script of this input. Not present if this is a coinbase transaction
+→ → → → `asm` | string | Required (exactly 1) | The signature script in decoded form with non-data-pushing opcodes listed
+→ → → → `hex` | string (hex) | Required (exactly 1) | The signature script encoded as hex
+→ → → `coinbase` | string (hex) | Optional (0 or 1) | The coinbase (similar to the hex field of a scriptSig) encoded as hex. Only present if this is a coinbase transaction
+→ → → `value` | number (Dash) | Optional (exactly 1) | The number of Dash paid to this output. May be `0`.
Only present if `spentindex` enabled
+→ → → `valueSat` | number (duffs) | Optional (exactly 1) | The number of duffs paid to this output. May be `0`.
Only present if `spentindex` enabled
+→ → → → `addresses` | string : array | Optional (0 or 1) | The P2PKH or P2SH addresses used in this transaction, or the computed P2PKH address of any pubkeys in this transaction. This array will not be returned for `nulldata` or `nonstandard` script types.
Only present if `spentindex` enabled
+→ → → → → Address | string | Required (1 or more) | A P2PKH or P2SH address
+→ → → `sequence` | number (int) | Required (exactly 1) | The input sequence number
+→ `vout` | array | Required (exactly 1) | An array of objects each describing an output vector (vout) for this transaction. Output objects will have the same order within the array as they have in the transaction, so the first output listed will be output 0
+→ → Output | object | Required (1 or more) | An object describing one of this transaction's outputs
+→ → → `value` | number (Dash) | Required (exactly 1) | The number of Dash paid to this output. May be `0`
+→ → → `valueSat` | number (duffs) | Required (exactly 1) | The number of duffs paid to this output. May be `0`
+→ → → `n` | number (int) | Required (exactly 1) | The output index number of this output within this transaction
+→ → → `scriptPubKey` | object | Required (exactly 1) | An object describing the pubkey script
+→ → → → `asm` | string | Required (exactly 1) | The pubkey script in decoded form with non-data-pushing opcodes listed
+→ → → → `hex` | string (hex) | Required (exactly 1) | The pubkey script encoded as hex
+→ → → → `reqSigs` | number (int) | Optional (0 or 1) | The number of signatures required; this is always `1` for P2PK, P2PKH, and P2SH (including P2SH multisig because the redeem script is not available in the pubkey script). It may be greater than 1 for bare multisig. This value will not be returned for `nulldata` or `nonstandard` script types (see the `type` key below)
+→ → → → `type` | string | Optional (0 or 1) | The type of script. This will be one of the following: • `pubkey` for a P2PK script • `pubkeyhash` for a P2PKH script • `scripthash` for a P2SH script • `multisig` for a bare multisig script • `nulldata` for nulldata scripts • `nonstandard` for unknown scripts
+→ → → → `addresses` | string : array | Optional (0 or 1) | The P2PKH or P2SH addresses used in this transaction, or the computed P2PKH address of any pubkeys in this transaction. This array will not be returned for `nulldata` or `nonstandard` script types
+→ → → → → Address | string | Required (1 or more) | A P2PKH or P2SH address
+→ `extraPayloadSize` | number (int) | Optional (0 or 1) | *Added in Dash Core 0.13.0.0*
Size of the DIP2 extra payload. Only present if it's a DIP2 special transaction
+→ `extraPayload` | string (hex) | Optional (0 or 1) | *Added in Dash Core 0.13.0.0*
Hex encoded DIP2 extra payload data. Only present if it's a DIP2 special transaction
+→ `blockhash` | string (hex) | Optional (0 or 1) | If the transaction has been included in a block on the local best block chain, this is the hash of that block encoded as hex in RPC byte order
+→ `height` | number (int) | Required (exactly 1) | The height of this block on its block chain
+→ `confirmations` | number (int) | Required (exactly 1) | If the transaction has been included in a block on the local best block chain, this is how many confirmations it has. Otherwise, this is `0`
+→ `time` | number (int) | Optional (0 or 1) | If the transaction has been included in a block on the local best block chain, this is the block header time of that block (may be in the future)
+→ `blocktime` | number (int) | Optional (0 or 1) | This field is currently identical to the time field described above
+
+*Examples from Dash Core 0.12.2*
+
+Request a transaction in hex-encoded serialized transaction format:
+
+``` bash
+curl http://localhost:19998/rest/tx/b06edec446fbcc0fc04a6e2774a843823f5238c2e15de40e61767a44f6788d32.hex
+```
+
+Result (wrapped):
+
+``` text
+0100000001c91d4bb14e061f8f6b775ca8e62ec8a66739b375f169bce1964cee\
+a2368197e5000000006a473044022050644e406be3e463d94868c617309dc021\
+174551dbb340665f48119e110a72b2022022f3cc93deeb4c44ce70bebe8e7f0f\
+69c462f120eb64b47eeb77f0a62e9bd361012102f542dde7c155717ac8df05d0\
+fc8f65e2ecc078ecad42b23462f27832b441ffa5feffffff0200e1f505000000\
+001976a91443d11ad5889532f22f069b18b24489b1f94f253188ac7dbafa0800\
+0000001976a914bb900427682b8f7cae6779fb955a610ff71d68c888acce940000
+```
+
+Get the same transaction in JSON:
+
+``` bash
+curl http://localhost:19998/rest/tx/b06edec446fbcc0fc04a6e2774a843823f5238c2e15de40e61767a44f6788d32.json
+```
+
+Result (whitespace added):
+
+``` json
+{
+ "txid":"b06edec446fbcc0fc04a6e2774a843823f5238c2e15de40e61767a44f6788d32",
+ "size":225,
+ "version":1,
+ "locktime":38094,
+ "vin":[
+ {
+ "txid":"e5978136a2ee4c96e1bc69f175b33967a6c82ee6a85c776b8f1f064eb14b1dc9",
+ "vout":0,
+ "scriptSig":{
+ "asm":"3044022050644e406be3e463d94868c617309dc021174551dbb340665f48119e110a72b2022022f3cc93deeb4c44ce70bebe8e7f0f69c462f120eb64b47eeb77f0a62e9bd361[ALL] 02f542dde7c155717ac8df05d0fc8f65e2ecc078ecad42b23462f27832b441ffa5",
+ "hex":"473044022050644e406be3e463d94868c617309dc021174551dbb340665f48119e110a72b2022022f3cc93deeb4c44ce70bebe8e7f0f69c462f120eb64b47eeb77f0a62e9bd361012102f542dde7c155717ac8df05d0fc8f65e2ecc078ecad42b23462f27832b441ffa5"
+ },
+ "sequence":4294967294
+ }
+ ],
+ "vout":[
+ {
+ "value":1.00000000,
+ "valueSat":100000000,
+ "n":0,
+ "scriptPubKey":{
+ "asm":"OP_DUP OP_HASH160 43d11ad5889532f22f069b18b24489b1f94f2531 OP_EQUALVERIFY OP_CHECKSIG",
+ "hex":"76a91443d11ad5889532f22f069b18b24489b1f94f253188ac",
+ "reqSigs":1,
+ "type":"pubkeyhash",
+ "addresses":[
+ "ySW2cuvm2wJ4EU5KzX4waYfFPV3xQni6Nm"
+ ]
+ }
+ },
+ {
+ "value":1.50649469,
+ "valueSat":150649469,
+ "n":1,
+ "scriptPubKey":{
+ "asm":"OP_DUP OP_HASH160 bb900427682b8f7cae6779fb955a610ff71d68c8 OP_EQUALVERIFY OP_CHECKSIG",
+ "hex":"76a914bb900427682b8f7cae6779fb955a610ff71d68c888ac",
+ "reqSigs":1,
+ "type":"pubkeyhash",
+ "addresses":[
+ "ydRBjVr78ejCqXuGs2wbtYoFpGbDkqV8V4"
+ ]
+ }
+ }
+ ],
+ "blockhash":"0000000003b6a57e3614176e5b93caf9498009853e06d16028ebffeb361afda5",
+ "height":38095,
+ "confirmations":9,
+ "time":1512596315,
+ "blocktime":1512596315
+}
+```
+
+*See also*
+
+* [GetRawTransaction](../api/remote-procedure-calls-raw-transactions.md#getrawtransaction) RPC: 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.
+* [GetTransaction](../api/remote-procedure-calls-wallet.md#gettransaction) RPC: gets detailed information about an in-wallet transaction.
diff --git a/docs/core/api/http-rest.md b/docs/core/api/http-rest.md
new file mode 100644
index 000000000..33e7422e7
--- /dev/null
+++ b/docs/core/api/http-rest.md
@@ -0,0 +1,23 @@
+```{eval-rst}
+.. meta::
+ :title: HTTP REST
+ :description: Dash Core provides an unauthenticated HTTP REST interface. The interface runs on the same port as the JSON-RPC interface, by default port 9998 for mainnet and port 19998 for testnet.
+```
+
+# HTTP REST
+
+:::{attention}
+A web browser can access a HTTP REST interface running on localhost, possibly allowing third parties to use cross-site scripting attacks to download your transaction and block data, reducing your privacy. If you have privacy concerns, you should not run a browser on the same computer as a REST-enabled Dash Core node.
+:::
+
+Dash Core provides an **unauthenticated** HTTP REST interface. The interface runs on the same port as the JSON-RPC interface, by default port 9998 for [mainnet](../resources/glossary.md#mainnet) and port 19998 for [testnet](../resources/glossary.md#testnet). It must be enabled by either starting Dash Core with the `-rest` option or by specifying `rest=1` in the configuration file. Make sure that the RPC interface is also activated. Set `server=1` in `dash.conf` or supply the `-server` argument when starting Dash Core. Starting Dash Core with `dashd` automatically enables the RPC interface.
+
+The interface is not intended for public access and is only accessible from localhost by default. The interface uses standard [HTTP status codes](https://en.wikipedia.org/wiki/List_of_HTTP_status_codes) and returns a plain-text description of errors for debugging.
+
+```{toctree}
+:maxdepth: 3
+:titlesonly:
+
+http-rest-quick-reference
+http-rest-requests
+```
diff --git a/docs/core/api/remote-procedure-call-quick-reference.md b/docs/core/api/remote-procedure-call-quick-reference.md
new file mode 100644
index 000000000..a08e11a34
--- /dev/null
+++ b/docs/core/api/remote-procedure-call-quick-reference.md
@@ -0,0 +1,241 @@
+```{eval-rst}
+.. _api-rpc-quick-reference:
+.. meta::
+ :title: Remote Procedure Call Quick Reference
+ :description: A quick reference guide for all the RPCs in Dash.
+```
+
+# Quick Reference
+
+## [Addressindex RPCs](../api/remote-procedure-calls-address-index.md)
+
+These RPCs are all Dash-specific and not found in Bitcoin Core
+
+* [GetAddressBalance](../api/remote-procedure-calls-address-index.md#getaddressbalance): returns the balance for address(es).
+* [GetAddressDeltas](../api/remote-procedure-calls-address-index.md#getaddressdeltas): returns all changes for an address.
+* [GetAddressMempool](../api/remote-procedure-calls-address-index.md#getaddressmempool): returns all mempool deltas for an address.
+* [GetAddressTxids](../api/remote-procedure-calls-address-index.md#getaddresstxids): returns the txids for an address(es).
+* [GetAddressUtxos](../api/remote-procedure-calls-address-index.md#getaddressutxos): returns all unspent outputs for an address.
+
+## [Blockchain RPCs](../api/remote-procedure-calls-blockchain.md)
+
+* [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_**
+* [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_
+* [GetBlockHeaders](../api/remote-procedure-calls-blockchain.md#getblockheaders): returns an array of items with information about the requested number of blockheaders starting from the requested hash. New in Dash Core 0.12.1
+* [GetBlockStats](../api/remote-procedure-calls-blockchain.md#getblockstats): computes per block statistics for a given window. _Updated in Dash Core 18.0.0_
+* [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 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_**
+* [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. **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.
+
+## [Control RPCs](../api/remote-procedure-calls-control.md)
+
+* [Debug](../api/remote-procedure-calls-control.md#debug): changes the debug category from the console. _Updated in Dash Core 18.0.0_
+* [GetMemoryInfo](../api/remote-procedure-calls-control.md#getmemoryinfo): returns information about memory usage. _Updated in Dash Core 0.15.0_
+* [GetRPCInfo](../api/remote-procedure-calls-control.md#getrpcinfo): returns details about the RPC server. _New in Dash Core 18.0.0_
+* [Help](../api/remote-procedure-calls-control.md#help): lists all available public RPC commands, or gets help for the specified RPC. Commands which are unavailable will not be listed, such as wallet RPCs if wallet support is disabled. _Updated in Dash Core 0.17.0_
+* [Logging](../api/remote-procedure-calls-control.md#logging): gets and sets the logging configuration _Updated in Dash Core 18.0.0_
+* [Stop](../api/remote-procedure-calls-control.md#stop): safely shuts down the Dash Core server.
+* [Uptime](../api/remote-procedure-calls-control.md#uptime): returns the total uptime of the server. _New in Dash Core 0.15.0_
+
+## [Dash RPCs](../api/remote-procedure-calls-dash.md)
+
+* [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 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_
+* [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 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_
+
+## [Generating RPCs](../api/remote-procedure-calls-generating.md)
+
+* [GenerateBlock](../api/remote-procedure-calls-generating.md#generateblock) mines a block with a set of ordered transactions immediately to a specified address or descriptor (before the RPC call returns). _New in Dash Core 18.1.0_
+* [GenerateToAddress](../api/remote-procedure-calls-generating.md#generatetoaddress): mines blocks immediately to a specified address. _New in Dash Core 0.12.3_
+* [GenerateToDescriptor](../api/remote-procedure-calls-generating.md#generatetodescriptor): mines blocks immediately to a specified descriptor. _New in Dash Core 18.1.0_
+
+## [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_
+* [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_
+* [SubmitBlock](../api/remote-procedure-calls-mining.md#submitblock): accepts a block, verifies it is a valid addition to the block chain, and broadcasts it to the network. Extra parameters are ignored by Dash Core but may be used by mining pools or other programs.
+* [SubmitHeader](../api/remote-procedure-calls-mining.md#submitheader): decodes the given hex data as a header and submits it as a candidate chain tip if valid. _New in Dash Core 18.0.0_
+
+## [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. **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_
+* [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_**
+* [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 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.
+
+## [Raw Transaction RPCs](../api/remote-procedure-calls-raw-transactions.md)
+
+* [AnalyzePSBT](../api/remote-procedure-calls-raw-transactions.md#analyzepsbt): analyzes and provides information about the current status of a PSBT and its inputs. _New in Dash Core 18.2.0_
+* [CombinePSBT](../api/remote-procedure-calls-raw-transactions.md#combinepsbt): combines multiple partially-signed Dash transactions into one transaction. _New in Dash Core 18.0.0_
+* [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_
+* [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_**
+* [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. _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_
+* [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_
+* [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_
+* [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_
+* [VerifyMessage](../api/remote-procedure-calls-util.md#verifymessage): verifies a signed message.
+
+## [Wallet RPCs](../api/remote-procedure-calls-wallet.md)
+
+**Note:** the wallet RPCs are only available if Dash Core was built with [wallet support](../resources/glossary.md#wallet-support), which is the default.
+
+* [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_
+* [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_**
+* [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_**
+* [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_
+* [GetNewAddress](../api/remote-procedure-calls-wallet.md#getnewaddress): returns a new Dash address for receiving payments. If an account is specified, payments received with the address will be credited to that account. _Updated in Dash Core 0.17.0_
+* [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_
+* [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_
+* [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_**
+* [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_
+* [ImportPubKey](../api/remote-procedure-calls-wallet.md#importpubkey): imports a public key (in hex) that can be watched as if it were in your wallet but cannot be used to spend
+* [ImportWallet](../api/remote-procedure-calls-wallet.md#importwallet): imports private keys from a file in wallet dump file format (see the [`dumpwallet` RPC](../api/remote-procedure-calls-wallet.md#dumpwallet)). These keys will be added to the keys currently in the wallet. This call may need to rescan all or parts of the block chain for transactions affecting the newly-added keys, which may take several minutes.
+* [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_**
+* [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_
+* [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_
+* [LoadWallet](../api/remote-procedure-calls-wallet.md#loadwallet): loads a wallet from a wallet file or directory. _Updated in Dash Core 18.1.0_
+* [LockUnspent](../api/remote-procedure-calls-wallet.md#lockunspent): temporarily locks or unlocks specified transaction outputs. A locked transaction output will not be chosen by automatic coin selection when spending dash. Locks are stored in memory only, so nodes start with zero locked outputs and the locked output list is always cleared when a node stops or fails.
+* [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. **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_
+* [SetTxFee](../api/remote-procedure-calls-wallet.md#settxfee): sets the transaction fee per kilobyte paid by transactions created by this wallet.
+* [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_
+* [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_**
+* [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_
+
+## [Wallet RPCs (Deprecated)](../api/remote-procedure-calls-wallet-deprecated.md)
+
+**Note:** the wallet RPCs are only available if Dash Core was built with [wallet support](../resources/glossary.md#wallet-support), which is the default.
+
+## [ZeroMQ (ZMQ) RPCs](../api/remote-procedure-calls-zmq.md)
+
+* [GetZmqNotifications](../api/remote-procedure-calls-zmq.md#getzmqnotifications): returns information about the active ZeroMQ notifications. _Updated in Dash Core 18.0.0_
+
+## [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-address-index.md b/docs/core/api/remote-procedure-calls-address-index.md
new file mode 100644
index 000000000..94b8add04
--- /dev/null
+++ b/docs/core/api/remote-procedure-calls-address-index.md
@@ -0,0 +1,279 @@
+```{eval-rst}
+.. meta::
+ :title: Address Index RPCs
+ :description: A list of all the Address Index RPCs in Dash.
+```
+
+# Address Index RPCs
+
+## GetAddressBalance
+
+:::{note}
+Requires `-addressindex` Dash Core command-line/configuration-file parameter to be enabled.
+:::
+
+The [`getaddressbalance` RPC](../api/remote-procedure-calls-address-index.md#getaddressbalance) returns the balance for address(es).
+
+*Parameter #1---an array of [addresses](../resources/glossary.md#address)*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`addresses` | object | Required (exactly 1) | An array of P2PKH or P2SH Dash address(es)
+→Address | string (base58) | Required (1 or more) | The base58check encoded address
+
+*Result---the current balance in [duffs](../resources/glossary.md#duffs) and the total number of duffs received (including change)*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`result` | object | Required (exactly 1) | An object listing the current balance and total amount received (including change), or an error if any address is invalid
+→ `balance` | string | Required (exactly 1) | The current balance in duffs
+→ `balance_immature` | string | Required (exactly 1) | The current immature balance in duffs
+→ `balance_spendable` | string | Required (exactly 1) | The current spendable balance in duffs
+→ `received` | string | Required (exactly 1) | The total number of duffs received (including change)
+
+*Example from Dash Core 0.17.0*
+
+Get the balance for an address:
+
+```bash
+dash-cli getaddressbalance '{"addresses": ["yWjoZBvnUKWhpKMbBkVVnnMD8Bzno9j6tQ"]}'
+```
+
+Result:
+
+```json
+{
+ "balance": 876020488,
+ "balance_immature": 776020488,
+ "balance_spendable": 100000000,
+ "received": 876020488
+}
+```
+
+*See also*
+
+* [GetBalance](../api/remote-procedure-calls-wallet.md#getbalance): gets the balance in decimal dash across all accounts or for a particular account.
+* [GetUnconfirmedBalance](../api/remote-procedure-calls-wallet.md#getunconfirmedbalance): returns the wallet's total unconfirmed balance.
+
+## GetAddressDeltas
+
+:::{note}
+Requires `-addressindex` Dash Core command-line/configuration-file parameter to be enabled.
+:::
+
+The [`getaddressdeltas` RPC](../api/remote-procedure-calls-address-index.md#getaddressdeltas) returns all changes for an address.
+
+*Parameter #1---an array of addresses*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`addresses` | object | Required (exactly 1) | An array of P2PKH or P2SH Dash address(es)
+→Address | string (base58) | Required (1 or more) | The base58check encoded address
+
+*Parameter #2---the start block height*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`start` | number (int) | Optional (exactly 1) | The start block height
+
+*Parameter #3---the end block height*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`end` | number (int) | Optional (exactly 1) | The end block height
+
+*Result---information about all changes for the address(es)*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`result` | array | Required (exactly 1) | An array of JSON objects, with each object describing a transaction involving one of the requested addresses
+→ Delta | object | Required (1 or more) | An object describing a particular address delta
+→→ `satoshis` | number | Required (exactly 1) | The difference of duffs
+→→ `txid` | string | Required (exactly 1) | The related txid
+→→ `blockindex` | number | Required (exactly 1) | The related input or output index
+→→ `height` | number | Required (exactly 1) | The block height
+→→ `address` | string | Required (exactly 1) | The base58check encoded address
+
+*Example from Dash Core 0.12.2*
+
+Get the deltas for an address:
+
+```bash
+dash-cli getaddressdeltas '{"addresses": ["yWjoZBvnUKWhpKMbBkVVnnMD8Bzno9j6tQ"], "start":5000, "end":7500}'
+```
+
+Result:
+
+```json
+[
+ {
+ "satoshis": 10000100,
+ "txid": "1fe86e463a9394d4ccd9a5ff1c6b483c95b4350ffdb055b55dc3615111e977de",
+ "index": 18,
+ "blockindex": 1,
+ "height": 6708,
+ "address": "yWjoZBvnUKWhpKMbBkVVnnMD8Bzno9j6tQ"
+ },
+ {
+ "satoshis": -10000100,
+ "txid": "6cb4379eec45cd3bb08b8f4c3a101b8cd89795e24f2cb8288a9941a85fb114cf",
+ "index": 0,
+ "blockindex": 1,
+ "height": 7217,
+ "address": "yWjoZBvnUKWhpKMbBkVVnnMD8Bzno9j6tQ"
+ }
+]
+```
+
+## GetAddressMempool
+
+:::{note}
+Requires `-addressindex` Dash Core command-line/configuration-file parameter to be enabled.
+:::
+
+The [`getaddressmempool` RPC](../api/remote-procedure-calls-address-index.md#getaddressmempool) returns all mempool deltas for an address.
+
+*Parameter #1---an array of addresses*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`addresses` | object | Required (exactly 1) | An array of P2PKH or P2SH Dash address(es)
+→Address | string (base58) | Required (1 or more) | The base58check encoded address
+
+*Result---information about mempool deltas for the address(es)*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`result` | array | Required (exactly 1) | An array of JSON objects, with each object describing a transaction involving one of the requested addresses
+→Mempool Deltas | object | Required (1 or more) | An object describing a particular mempool address delta
+→→ `address` | string | Required (exactly 1) | The base58check encoded address
+→→ `txid` | string | Required (exactly 1) | The related txid
+→→ `index` | number | Required (exactly 1) | The related input or output index
+→→ `satoshis` | number | Required (exactly 1) | The difference of duffs
+→→ `timestamp` | string | Required (exactly 1) | The time the transaction entered the mempool (seconds)
+→→ `prevtxid` | string | Required (exactly 1) | The previous txid (if spending)
+→→ `prevout` | string | Required (exactly 1) | The previous transaction output index (if spending)
+
+*Example from Dash Core 0.12.2*
+
+Get the deltas for an address:
+
+```bash
+dash-cli getaddressmempool '{"addresses": ["yVcYtcKd3nSi85JFtE8ZSDPimj3VMTJB8k"]}'
+```
+
+Result:
+
+```json
+[
+ {
+ "address": "yVcYtcKd3nSi85JFtE8ZSDPimj3VMTJB8k",
+ "txid": "e53d871df8b26116fbc1b766172323f9c477375133eec8ea5c66f1867a61a533",
+ "index": 1,
+ "satoshis": 100000000000,
+ "timestamp": 1573753889
+ }
+]
+```
+
+## GetAddressTxids
+
+:::{note}
+Requires `-addressindex` Dash Core command-line/configuration-file parameter to be enabled.
+:::
+
+The [`getaddresstxids` RPC](../api/remote-procedure-calls-address-index.md#getaddresstxids) returns the txids for an address(es).
+
+*Parameter #1---an array of addresses*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`addresses` | object | Required (exactly 1) | An array of P2PKH or P2SH Dash address(es)
+→Address | string (base58) | Required (1 or more) | The base58check encoded address
+
+*Parameter #2---the start block height*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`start` | number (int) | Optional (exactly 1) | The start block height
+
+*Parameter #3---the end block height*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`end` | number (int) | Optional (exactly 1) | The end block height
+
+*Result---information about txids for the address(es)*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`result` | array | Required (exactly 1) | An array of txids related to the requested address(es)
+→ TXID | string | Required (1 or more) | The transaction id
+
+*Example from Dash Core 0.12.2*
+
+Get the deltas for an address:
+
+```bash
+dash-cli getaddresstxids '{"addresses": ["yWjoZBvnUKWhpKMbBkVVnnMD8Bzno9j6tQ"], "start":5000, "end":7500}'
+```
+
+Result:
+
+```json
+[
+ "1fe86e463a9394d4ccd9a5ff1c6b483c95b4350ffdb055b55dc3615111e977de",
+ "6cb4379eec45cd3bb08b8f4c3a101b8cd89795e24f2cb8288a9941a85fb114cf"
+]
+```
+
+## GetAddressUtxos
+
+:::{note}
+Requires `-addressindex` Dash Core command-line/configuration-file parameter to be enabled.
+:::
+
+The [`getaddressutxos` RPC](../api/remote-procedure-calls-address-index.md#getaddressutxos) returns all unspent outputs for an address.
+
+*Parameter #1---an array of addresses*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`addresses` | object | Required (exactly 1) | An array of P2PKH or P2SH Dash address(es)
+→Address | string (base58) | Required (1 or more) | The base58check encoded address
+
+*Result---information about unspent outputs for the address(es)*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`result` | array | Required (exactly 1) | An array of JSON objects, with each object describing a transaction involving one of the requested addresses
+→Unspent outputs | object | Required (1 or more) | An object describing a particular unspent output for the requested address(es)
+→→ `address` | string | Required (exactly 1) | The base58check encoded address
+→→ `txid` | string | Required (exactly 1) | The output txid
+→→ `outputIndex` | number | Required (exactly 1) | The output index
+→→ `script` | string | Required (exactly 1) | The script hex encoded
+→→ `satoshis` | number | Required (exactly 1) | The number of duffs of the output
+→→ `height` | number | Required (exactly 1) | The block height
+
+*Example from Dash Core 0.12.2*
+
+Get the unspent outputs for an address:
+
+```bash
+dash-cli getaddressutxos '{"addresses": ["yLeC3F9UxJmFaRaf5yzH7FDc7RdvBasi84"]}'
+```
+
+Result:
+
+```json
+[
+ {
+ "address": "yLeC3F9UxJmFaRaf5yzH7FDc7RdvBasi84",
+ "txid": "ef7bcd083db8c9551ca295698c3b7a6811288fae9944018d2a660a0f939bdb35",
+ "outputIndex": 0,
+ "script": "76a914038b8a73338c8f9c22024338198d63ff7c4cb4c088ac",
+ "satoshis": 1000010000,
+ "height": 7683
+ }
+]
+```
diff --git a/docs/core/api/remote-procedure-calls-blockchain.md b/docs/core/api/remote-procedure-calls-blockchain.md
new file mode 100644
index 000000000..460960e5b
--- /dev/null
+++ b/docs/core/api/remote-procedure-calls-blockchain.md
@@ -0,0 +1,2366 @@
+```{eval-rst}
+.. meta::
+ :title: Blockchain RPCs
+ :description: A list of all the Blockchain RPCs in Dash.
+```
+
+# Blockchain RPCs
+
+## GetBestBlockHash
+
+The [`getbestblockhash` RPC](../api/remote-procedure-calls-blockchain.md#getbestblockhash) returns the header hash of the most recent block on the best blockchain.
+
+*Parameters: none*
+
+*Result---hash of the tip from the best block chain*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`result` | string (hex) | Required (exactly 1) | The hash of the block header from the most recent block on the best block chain, encoded as hex in RPC byte order
+
+*Example from Dash Core 0.12.2*
+
+``` bash
+dash-cli -testnet getbestblockhash
+```
+
+Result:
+
+``` text
+00000bafbc94add76cb75e2ec92894837288a481e5c005f6563d91623bf8bc2c
+```
+
+*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](../api/remote-procedure-calls-blockchain.md#getblockhash): returns the header hash of a block at the given height in the local best block chain.
+
+## DumpTxOutset
+
+Write the serialized UTXO set to disk.
+
+*Parameter #1---path to output file*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+path | string (hex) | Required (exactly 1) | Path to the output file. If relative, will be prefixed by datadir.
+
+*Result*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`result` | object/null | Required (exactly 1) | An object containing the requested block, or JSON `null` if an error occurred
+→ `coins_written` | number (int) | Required (exactly 1) | the number of coins written in the snapshot
+→ `base_hash` | string (hex) | Required (exactly 1) | the hash of the base of the snapshot
+→ `base_height` | number (int) | Required (exactly 1) | the height of the base of the snapshot
+→ `path` | string (str) | Required (exactly 1) | the absolute path that the snapshot was written to
+
+*Example from Dash Core 18.1.0*
+
+> dash-cli dumptxoutset a
+
+Result:
+
+``` json
+{
+ "coins_written": 4313775,
+ "base_hash": "000000000000000ef8f6b8f9b73ae4c516b961b7bbc01945b48d84b954ae68a1",
+ "base_height": 1412676,
+ "path": "/Users/username/Library/Application Support/DashCore/a"
+}
+```
+
+## GetBestChainLock
+
+The [`getbestchainlock` RPC](../api/remote-procedure-calls-blockchain.md#getbestchainlock) returns the information about the best ChainLock.
+
+Throws an error if there is no known ChainLock yet.
+
+*Parameters: none*
+
+*Result*
+
+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) | 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*
+
+``` bash
+dash-cli -testnet getbestchainlock
+```
+
+Result:
+
+``` json
+{
+ "blockhash": "00000c0e7a866e67444813858b976886d839aff28f56dc178c92ed1390c97f4e",
+ "height": 405044,
+ "signature": "960ead08adcc3fcf5e576f9e6ad290251325db900d19d961f5ece398b5389390b8a44e8986199c201ac348a89bc8534a0f7153c61c54157a241c521131025e5054b7c4298065069e478abdaea4d6c861848061e32c0d903ddeb5ee6036e8ddcf",
+ "known_block": true
+}
+```
+
+*See also: none*
+
+```{eval-rst}
+.. _api-rpc-blockchain-getblock:
+```
+
+## GetBlock
+
+The [`getblock` RPC](../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.
+
+*Parameter #1---block hash*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+Block Hash | string (hex) | Required (exactly 1) | The hash of the header of the block to get, encoded as hex in RPC byte order
+
+*Parameter #2---whether to get JSON or hex output*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+Verbosity | number (int) | Optional (0 or 1) | Set to one of the following verbosity levels: • `0` - Get the block as a string in the hex-encoded serialized block format; • `1` - Get the decoded block as a JSON object (default) • `2` - Get the decoded block as a JSON object with transaction details
+
+*Result (if verbosity was `0`)---a serialized block*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`result` | string (hex)/null | Required (exactly 1) | The requested block as a serialized block, encoded as hex, or JSON `null` if an error occurred
+
+*Result (if verbosity was `1` or omitted)---a JSON block with transaction hashes*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`result` | object/null | Required (exactly 1) | An object containing the requested block, or JSON `null` if an error occurred
+→ `hash` | string (hex) | Required (exactly 1) | The hash of this block's block header encoded as hex in RPC byte order. This is the same as the hash provided in parameter #1
+→ `confirmations` | number (int) | Required (exactly 1) | The number of confirmations the transactions in this block have, starting at 1 when this block is at the tip of the best block chain. This score will be -1 if the the block is not part of the best block chain
+→ `height` | number (int) | Required (exactly 1) | The height of this block on its block chain
+→ `version` | number (int) | Required (exactly 1) | This block's version number. See [block version numbers](../reference/block-chain-block-headers.md#block-versions)
+→ `versionHex` | string (hex) | Required (exactly 1) | *Added in Bitcoin Core 0.13.0*
The block version formatted in hexadecimal
+→ `merkleroot` | string (hex) | Required (exactly 1) | The merkle root for this block, encoded as hex in RPC byte order
+→ `time` | number (int) | Required (exactly 1) | The value of the *time* field in the block header, indicating approximately when the block was created
+→ `mediantime` | number (int) | Required (exactly 1) | *Added in Bitcoin Core 0.12.0*
The median block time in Unix epoch time
+→ `nonce` | number (int) | Required (exactly 1) | The nonce which was successful at turning this particular block into one that could be added to the best block chain
+→ `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
+→ `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)
+→ `size` | number (int) | Required (exactly 1) | The size of this block in serialized block format, counted in bytes
+→ `tx` | array | Required (exactly 1) | An array containing the TXIDs of all transactions in this block. The transactions appear in the array in the same order they appear in the serialized block
+→ → TXID | string (hex) | Required (1 or more) | The TXID of a transaction in this block, encoded as hex in RPC byte order
+→ `cbTx` | object | Required (exactly 1) | Coinbase special transaction details
+→ → `version` | number (int) | Required (exactly 1) | The version of the Coinbase special transaction (CbTx)
+→ → `height` | number (int) | Required (exactly 1) | The height of this block on its block chain
+→ → `merkleRootMNList` | string (hex) | Required (exactly 1) | The merkle root for the masternode list
+→ → `merkleRootQuorums` | string (hex) | Required (exactly 1) | The merkle root for the quorum list
+→ → `bestCLHeightDiff` | number (int) | Required (exactly 1) | **Added in Dash Core 20.0.0** The best ChainLock height difference
+→ → `bestCLSignature` | string (hex) | Required (exactly 1) | **Added in Dash Core 20.0.0** The best ChainLock signature
+→ → `creditPoolBalance` | number (real) | Required (exactly 1) | **Added in Dash Core 20.0.0** The balance of the credit pool
+
+*Result (if verbosity was `2`---a JSON block with full transaction details*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`result` | object/null | Required (exactly 1) | An object containing the requested block, or JSON `null` if an error occurred
+→ `hash` | string (hex) | Required (exactly 1) | The hash of this block's block header encoded as hex in RPC byte order. This is the same as the hash provided in parameter #1
+→ `confirmations` | number (int) | Required (exactly 1) | The number of confirmations the transactions in this block have, starting at 1 when this block is at the tip of the best block chain. This score will be -1 if the the block is not part of the best block chain
+→ `height` | number (int) | Required (exactly 1) | The height of this block on its block chain
+→ `version` | number (int) | Required (exactly 1) | This block's version number. See [block version numbers](../reference/block-chain-block-headers.md#block-versions)
+→ `versionHex` | string (hex) | Required (exactly 1) | *Added in Bitcoin Core 0.13.0*
The block version formatted in hexadecimal
+→ `merkleroot` | string (hex) | Required (exactly 1) | The merkle root for this block, encoded as hex in RPC byte order
+→ `time` | number (int) | Required (exactly 1) | The value of the *time* field in the block header, indicating approximately when the block was created
+→ `mediantime` | number (int) | Required (exactly 1) | *Added in Bitcoin Core 0.12.0*
The median block time in Unix epoch time
+→ `nonce` | number (int) | Required (exactly 1) | The nonce which was successful at turning this particular block into one that could be added to the best block chain
+→ `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) | 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)
+→ `size` | number (int) | Required (exactly 1) | The size of this block in serialized block format, counted in bytes
+→ `tx` | array | Required (exactly 1) | An array containing the details for all transactions in this block. The transactions appear in the array in the same order they appear in the serialized block
+→ → `txid` | string (hex) | Required (exactly 1) | The transaction's TXID encoded as hex in RPC byte order
+→ → `size` | number (int) | Required (exactly 1) | *Added in Bitcoin Core 0.12.0*
The serialized transaction size
+→ → `version` | number (int) | Required (exactly 1) | The transaction format version number
+→ → `type` | number (int) | Required (exactly 1) | *Added in Dash Core 0.13.0.0*
The transaction format type
+→ → `locktime` | number (int) | Required (exactly 1) | The transaction's locktime: either a Unix epoch date or block height; see the [locktime parsing rules](../guide/transactions-locktime-and-sequence-number.md#locktime-parsing-rules)
+→ → `vin` | array | Required (exactly 1) | An array of objects with each object being an input vector (vin) for this transaction. Input objects will have the same order within the array as they have in the transaction, so the first input listed will be input 0
+→ → → Input | object | Required (1 or more) | An object describing one of this transaction's inputs. May be a regular input or a coinbase
+→ → → → `txid` | string | Optional (0 or 1) | The TXID of the outpoint being spent, encoded as hex in RPC byte order. Not present if this is a coinbase transaction
+→ → → → `vout` | number (int) | Optional (0 or 1) | The output index number (vout) of the outpoint being spent. The first output in a transaction has an index of `0`. Not present if this is a coinbase transaction
+→ → → → `scriptSig` | object | Optional (0 or 1) | An object describing the signature script of this input. Not present if this is a coinbase transaction
+→ → → → → `asm` | string | Required (exactly 1) | The signature script in decoded form with non-data-pushing opcodes listed
+→ → → → → `hex` | string (hex) | Required (exactly 1) | The signature script encoded as hex
+→ → → → `coinbase` | string (hex) | Optional (0 or 1) | The coinbase (similar to the hex field of a scriptSig) encoded as hex. Only present if this is a coinbase transaction
+→ → → → `value` | number (Dash) | Optional (exactly 1) | The number of Dash paid to this output. May be `0`.
Only present if `spentindex` enabled
+→ → → → `valueSat` | number (duffs) | Optional (exactly 1) | The number of duffs paid to this output. May be `0`.
Only present if `spentindex` enabled
+→ → → → → `addresses` | string : array | Optional (0 or 1) | The P2PKH or P2SH addresses used in this transaction, or the computed P2PKH address of any pubkeys in this transaction. This array will not be returned for `nulldata` or `nonstandard` script types.
Only present if `spentindex` enabled
+→ → → → → → Address | string | Required (1 or more) | A P2PKH or P2SH address
+→ → → → `sequence` | number (int) | Required (exactly 1) | The input sequence number
+→ → `vout` | array | Required (exactly 1) | An array of objects each describing an output vector (vout) for this transaction. Output objects will have the same order within the array as they have in the transaction, so the first output listed will be output 0
+→ → → Output | object | Required (1 or more) | An object describing one of this transaction's outputs
+→ → → → `value` | number (Dash) | Required (exactly 1) | The number of Dash paid to this output. May be `0`
+→ → → → `valueSat` | number (duffs) | Required (exactly 1) | The number of duffs paid to this output. May be `0`
+→ → → → `n` | number (int) | Required (exactly 1) | The output index number of this output within this transaction
+→ → → → `scriptPubKey` | object | Required (exactly 1) | An object describing the pubkey script
+→ → → → → `asm` | string | Required (exactly 1) | The pubkey script in decoded form with non-data-pushing opcodes listed
+→ → → → → `hex` | string (hex) | Required (exactly 1) | The pubkey script encoded as hex
+→ → → → → `reqSigs` | number (int) | Optional (0 or 1) | The number of signatures required; this is always `1` for P2PK, P2PKH, and P2SH (including P2SH multisig because the redeem script is not available in the pubkey script). It may be greater than 1 for bare multisig. This value will not be returned for `nulldata` or `nonstandard` script types (see the `type` key below)
+→ → → → → `type` | string | Optional (0 or 1) | The type of script. This will be one of the following: • `pubkey` for a P2PK script • `pubkeyhash` for a P2PKH script • `scripthash` for a P2SH script • `multisig` for a bare multisig script • `nulldata` for nulldata scripts • `nonstandard` for unknown scripts
+→ → → → → `addresses` | string : array | Optional (0 or 1) | The P2PKH or P2SH addresses used in this transaction, or the computed P2PKH address of any pubkeys in this transaction. This array will not be returned for `nulldata` or `nonstandard` script types
+→ → → → → → Address | string | Required (1 or more) | A P2PKH or P2SH address
+→ → `extraPayloadSize` | number (int) | Optional (0 or 1) | *Added in Dash Core 0.13.0.0*
Size of the DIP2 extra payload. Only present if it's a DIP2 special transaction
+→ → `extraPayload` | string (hex) | Optional (0 or 1) | *Added in Dash Core 0.13.0.0*
Hex encoded DIP2 extra payload data. Only present if it's a DIP2 special transaction
+→ → `fee` | number | Optional (0 or 1) | The transaction fee in DASH, omitted if block undo data is not available
+→ → `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
+→ `cbTx` | object | Required (exactly 1) | Coinbase special transaction details
+→ → `version` | number (int) | Required (exactly 1) | The version of the Coinbase special transaction (CbTx)
+→ → `height` | number (int) | Required (exactly 1) | The height of this block on its block chain
+→ → `merkleRootMNList` | string (hex) | Required (exactly 1) | The merkle root for the masternode list
+→ → `merkleRootQuorums` | string (hex) | Required (exactly 1) | The merkle root for the quorum list
+→ → `bestCLHeightDiff` | number (int) | Required (exactly 1) | **Added in Dash Core 20.0.0** The best ChainLock height difference
+→ → `bestCLSignature` | string (hex) | Required (exactly 1) | **Added in Dash Core 20.0.0** The best ChainLock signature
+→ → `creditPoolBalance` | number (real) | Required (exactly 1) | **Added in Dash Core 20.0.0** The balance of the credit pool
+
+*Example from Dash Core 21.0.0*
+
+Get a block in raw hex:
+
+``` bash
+dash-cli -testnet getblock \
+ 00000379fb0a60210eb58e736775784b4e0491ae23b65f7916988f9d780a9f93 \
+ 0
+```
+
+Result (wrapped):
+
+``` text
+00000020fdd8c7fa1c64fe932918d0a5c40209ab155f738291dec38c9e39690c\
+22000000cac98c66d5f8828ec72b68a24d61e354a19434fa0569707b90e5cd47\
+fefdd7653d425d6541f3031e468a050001030005000100000000000000000000\
+00000000000000000000000000000000000000000000ffffffff060326ff0d01\
+01ffffffff0283706e04000000001976a914c69a0bda7daaae481be8def95e5f\
+347a1d00a4b488ac89514b0d000000001976a91421eca01872dbfce4bf20886a\
+004f6caaa69c1ff788ac00000000af030026ff0d00581474bac547d8c933eb30\
+4e1c98d241bf807a85ea706591dacee405b3e7d3fac4c4566f175ccb5e3ee12f\
+0e869d2bb1ede63112975c8d147f8c072bd63960fe009849edd3f5f7c4ddfa54\
+dd43b06a8a6ca9043c6a6498cf0d757902e69301f780a5d6190ac0da904420bb\
+c2e8079f590d0ebca384512f1c61910b51336e401759734189de9bdb9d26d299\
+c225e3ee290a7c96a448b83ed97f1e9ed34be1da354566da8a0202000000
+```
+
+Get the same block in JSON:
+
+``` bash
+dash-cli -testnet getblock \
+ 00000379fb0a60210eb58e736775784b4e0491ae23b65f7916988f9d780a9f93
+```
+
+Result:
+
+``` json
+{
+ "hash": "00000379fb0a60210eb58e736775784b4e0491ae23b65f7916988f9d780a9f93",
+ "confirmations": 107991,
+ "height": 917286,
+ "version": 536870912,
+ "versionHex": "20000000",
+ "merkleroot": "65d7fdfe47cde5907b706905fa3494a154e3614da2682bc78e82f8d5668cc9ca",
+ "time": 1700610621,
+ "mediantime": 1700609994,
+ "nonce": 363078,
+ "bits": "1e03f341",
+ "difficulty": 0.0009888562457268011,
+ "chainwork": "00000000000000000000000000000000000000000000000002d68d38fa5ef014",
+ "nTx": 1,
+ "previousblockhash": "000000220c69399e8cc3de9182735f15ab0902c4a5d0182993fe641cfac7d8fd",
+ "nextblockhash": "0000039bbed5dba71339bf917be5a797123919f02d1d9bda78cae3ab5d38985e",
+ "chainlock": true,
+ "size": 382,
+ "tx": [
+ "65d7fdfe47cde5907b706905fa3494a154e3614da2682bc78e82f8d5668cc9ca"
+ ],
+ "cbTx": {
+ "version": 3,
+ "height": 917286,
+ "merkleRootMNList": "fad3e7b305e4ceda916570ea857a80bf41d2981c4e30eb33c9d847c5ba741458",
+ "merkleRootQuorums": "fe6039d62b078c7f148d5c971231e6edb12b9d860e2fe13e5ecb5c176f56c4c4",
+ "bestCLHeightDiff": 0,
+ "bestCLSignature": "9849edd3f5f7c4ddfa54dd43b06a8a6ca9043c6a6498cf0d757902e69301f780a5d6190ac0da904420bbc2e8079f590d0ebca384512f1c61910b51336e401759734189de9bdb9d26d299c225e3ee290a7c96a448b83ed97f1e9ed34be1da3545",
+ "creditPoolBalance": 86.32588902
+ }
+}
+```
+
+Get the same block in JSON with transaction details:
+
+``` bash
+dash-cli -testnet getblock \
+ 00000379fb0a60210eb58e736775784b4e0491ae23b65f7916988f9d780a9f93 2
+```
+
+Result:
+
+``` json
+{
+ "hash": "00000379fb0a60210eb58e736775784b4e0491ae23b65f7916988f9d780a9f93",
+ "confirmations": 107993,
+ "height": 917286,
+ "version": 536870912,
+ "versionHex": "20000000",
+ "merkleroot": "65d7fdfe47cde5907b706905fa3494a154e3614da2682bc78e82f8d5668cc9ca",
+ "time": 1700610621,
+ "mediantime": 1700609994,
+ "nonce": 363078,
+ "bits": "1e03f341",
+ "difficulty": 0.0009888562457268011,
+ "chainwork": "00000000000000000000000000000000000000000000000002d68d38fa5ef014",
+ "nTx": 1,
+ "previousblockhash": "000000220c69399e8cc3de9182735f15ab0902c4a5d0182993fe641cfac7d8fd",
+ "nextblockhash": "0000039bbed5dba71339bf917be5a797123919f02d1d9bda78cae3ab5d38985e",
+ "chainlock": true,
+ "size": 382,
+ "tx": [
+ {
+ "txid": "65d7fdfe47cde5907b706905fa3494a154e3614da2682bc78e82f8d5668cc9ca",
+ "version": 3,
+ "type": 5,
+ "size": 301,
+ "locktime": 0,
+ "vin": [
+ {
+ "coinbase": "0326ff0d0101",
+ "sequence": 4294967295
+ }
+ ],
+ "vout": [
+ {
+ "value": 0.74346627,
+ "valueSat": 74346627,
+ "n": 0,
+ "scriptPubKey": {
+ "asm": "OP_DUP OP_HASH160 c69a0bda7daaae481be8def95e5f347a1d00a4b4 OP_EQUALVERIFY OP_CHECKSIG",
+ "hex": "76a914c69a0bda7daaae481be8def95e5f347a1d00a4b488ac",
+ "reqSigs": 1,
+ "type": "pubkeyhash",
+ "addresses": [
+ "yeRZBWYfeNE4yVUHV4ZLs83Ppn9aMRH57A"
+ ]
+ }
+ },
+ {
+ "value": 2.23039881,
+ "valueSat": 223039881,
+ "n": 1,
+ "scriptPubKey": {
+ "asm": "OP_DUP OP_HASH160 21eca01872dbfce4bf20886a004f6caaa69c1ff7 OP_EQUALVERIFY OP_CHECKSIG",
+ "hex": "76a91421eca01872dbfce4bf20886a004f6caaa69c1ff788ac",
+ "reqSigs": 1,
+ "type": "pubkeyhash",
+ "addresses": [
+ "yPQpcZ1EdtQXWHzNjZuvVCKXuESW5wZ5x1"
+ ]
+ }
+ }
+ ],
+ "extraPayloadSize": 175,
+ "extraPayload": "030026ff0d00581474bac547d8c933eb304e1c98d241bf807a85ea706591dacee405b3e7d3fac4c4566f175ccb5e3ee12f0e869d2bb1ede63112975c8d147f8c072bd63960fe009849edd3f5f7c4ddfa54dd43b06a8a6ca9043c6a6498cf0d757902e69301f780a5d6190ac0da904420bbc2e8079f590d0ebca384512f1c61910b51336e401759734189de9bdb9d26d299c225e3ee290a7c96a448b83ed97f1e9ed34be1da354566da8a0202000000",
+ "cbTx": {
+ "version": 3,
+ "height": 917286,
+ "merkleRootMNList": "fad3e7b305e4ceda916570ea857a80bf41d2981c4e30eb33c9d847c5ba741458",
+ "merkleRootQuorums": "fe6039d62b078c7f148d5c971231e6edb12b9d860e2fe13e5ecb5c176f56c4c4",
+ "bestCLHeightDiff": 0,
+ "bestCLSignature": "9849edd3f5f7c4ddfa54dd43b06a8a6ca9043c6a6498cf0d757902e69301f780a5d6190ac0da904420bbc2e8079f590d0ebca384512f1c61910b51336e401759734189de9bdb9d26d299c225e3ee290a7c96a448b83ed97f1e9ed34be1da3545",
+ "creditPoolBalance": 86.32588902
+ },
+ "hex": "03000500010000000000000000000000000000000000000000000000000000000000000000ffffffff060326ff0d0101ffffffff0283706e04000000001976a914c69a0bda7daaae481be8def95e5f347a1d00a4b488ac89514b0d000000001976a91421eca01872dbfce4bf20886a004f6caaa69c1ff788ac00000000af030026ff0d00581474bac547d8c933eb304e1c98d241bf807a85ea706591dacee405b3e7d3fac4c4566f175ccb5e3ee12f0e869d2bb1ede63112975c8d147f8c072bd63960fe009849edd3f5f7c4ddfa54dd43b06a8a6ca9043c6a6498cf0d757902e69301f780a5d6190ac0da904420bbc2e8079f590d0ebca384512f1c61910b51336e401759734189de9bdb9d26d299c225e3ee290a7c96a448b83ed97f1e9ed34be1da354566da8a0202000000",
+ "instantlock": true,
+ "instantlock_internal": false
+ }
+ ],
+ "cbTx": {
+ "version": 3,
+ "height": 917286,
+ "merkleRootMNList": "fad3e7b305e4ceda916570ea857a80bf41d2981c4e30eb33c9d847c5ba741458",
+ "merkleRootQuorums": "fe6039d62b078c7f148d5c971231e6edb12b9d860e2fe13e5ecb5c176f56c4c4",
+ "bestCLHeightDiff": 0,
+ "bestCLSignature": "9849edd3f5f7c4ddfa54dd43b06a8a6ca9043c6a6498cf0d757902e69301f780a5d6190ac0da904420bbc2e8079f590d0ebca384512f1c61910b51336e401759734189de9bdb9d26d299c225e3ee290a7c96a448b83ed97f1e9ed34be1da3545",
+ "creditPoolBalance": 86.32588902
+ }
+}
+```
+
+*See also*
+
+* [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.
+* [GetBestBlockHash](../api/remote-procedure-calls-blockchain.md#getbestblockhash): returns the header hash of the most recent block on the best block chain.
+
+## GetBlockChainInfo
+
+The [`getblockchaininfo` RPC](../api/remote-procedure-calls-blockchain.md#getblockchaininfo) provides information about the current state of the block chain.
+
+*Parameters: none*
+
+*Result---A JSON object providing information about the block chain*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`result` | object | Required (exactly 1) | Information about the current state of the local block chain
+→ `chain` | string | Required (exactly 1) | The name of the block chain. Either `main` for mainnet, `test` for testnet, `regtest` for regtest, or `devnet-` for devnets
+→ `blocks` | number (int) | Required (exactly 1) | The number of validated blocks in the local best block chain. For a new node with just the hardcoded genesis block, this will be 0
+→ `headers` | number (int) | Required (exactly 1) | The number of validated headers in the local best headers chain. For a new node with just the hardcoded genesis block, this will be zero. This number may be higher than the number of *blocks*
+→ `bestblockhash` | string (hex) | Required (exactly 1) | The hash of the header of the highest validated block in the best block chain, encoded as hex in RPC byte order. This is identical to the string returned by the [`getbestblockhash` RPC](../api/remote-procedure-calls-blockchain.md#getbestblockhash)
+→ `difficulty` | number (real) | Required (exactly 1) | The difficulty of the highest-height block in the best block chain
+→ `time` | number (int) | Required (exactly 1) | **Added in Dash Core 20.1.0**
The block time expressed in UNIX epoch time
+→ `mediantime` | number (int) | Required (exactly 1) | *Added in Bitcoin Core 0.12.0*
The median time of the 11 blocks before the most recent block on the blockchain. Used for validating transaction locktime under BIP113
+→ `verificationprogress` | number (real) | Required (exactly 1) | Estimate of what percentage of the block chain transactions have been verified so far, starting at 0.0 and increasing to 1.0 for fully verified. May slightly exceed 1.0 when fully synced to account for transactions in the memory pool which have been verified before being included in a block
+→ `initialblockdownload` | boolean | Required (exactly 1) | *Added in Dash Core 0.16.0*
An estimate of whether this node is in [Initial Block Download](../guide/p2p-network-initial-block-download.md) mode (*debug information*)
+→ `chainwork` | string (hex) | Required (exactly 1) | The estimated number of block header hashes checked from the genesis block to this block, encoded as big-endian hex
+→ `size_on_disk` | number (int) | Required (exactly 1) | *Added in Dash Core 0.16.0*
The estimated size of the block and undo files on disk
+→ `pruned` | bool | Required (exactly 1) | *Added in Bitcoin Core 0.11.0*
Indicates if the blocks are subject to pruning
+→ `pruneheight` | number (int) | Optional (0 or 1) | *Added in Bitcoin Core 0.11.0*
The lowest-height complete block stored if pruning is activated
+→ `automatic_pruning` | bool | Required (exactly 1) | *Added in Dash Core 0.16.0*
Whether automatic pruning is enabled (only present if pruning is enabled)
+→ `prune_target_size` | number (int) | Optional (0 or 1) | *Added in Dash Core 0.16.0*
The target size used by pruning (only present if automatic pruning is enabled)
+→ `softforks` | object | Required (exactly 1) | **Revised significantly in Dash Core 20.0.0**
An object with each key describing a current or previous soft fork
+→ → Softfork | object | Required (0 or more) | The name of a specific softfork
+→ → → `type` | string | Required | One of "buried", "bip9"
+→ → → `bip9` | object | Optional | Status of bip9 softforks (only for "bip9" type)
+→ → → → `status` | string | Required | One of "defined", "started", "locked_in", "active", "failed"
+→ → → → `bit` | numeric | Optional | The bit (0-28) in the block version field used to signal this softfork (only for "started" status)
+→ → → → `start_time` | numeric | Required | The minimum median time past of a block at which the bit gains its meaning
+→ → → → `timeout` | numeric | Required | The median time past of a block at which the deployment is considered failed if not yet locked in
+→ → → → `since` | numeric | Required | Height of the first block to which the status applies
+→ → → → `activation_height` | numeric | Optional | Expected activation height for this softfork (only for "locked_in" `status`)
+→ → → → `min_activation_height` | numeric | Optional | Minimum height of blocks for which the rules may be enforced
+→ → → → `ehf` | bool | Required | `true` for EHF activated hard forks
+→ → → → `ehf_height` | numeric | Optional | The minimum height at which miner's signals for the deployment matter. Below this height miner signaling cannot trigger hard fork lock-in. Not returned if `ehf` is `false` or if the minimum height is not known yet.
+→ → → → `statistics` | string : object | Required (exactly 1) | *Added in Dash Core 0.15.0*
Numeric statistics about BIP9 signaling for a softfork (only for \started\" status)"
+→ → → → → `period` | numeric (int) | Optional (0 or 1) | *Added in Dash Core 0.15.0*
The length in blocks of the BIP9 signaling period. Field is only shown when status is `started`
+→ → → → → `threshold` | numeric (int) | Optional (0 or 1) | *Added in Dash Core 0.15.0*
The number of blocks with the version bit set required to activate the feature. Field is only shown when status is `started`
+→ → → → → `elapsed` | numeric (int) | Optional (0 or 1) | *Added in Dash Core 0.15.0*
The number of blocks elapsed since the beginning of the current period. Field is only shown when status is `started`
+→ → → → → `count` | numeric (int) | Optional (0 or 1) | *Added in Dash Core 0.15.0*
The number of blocks with the version bit set in the current period. Field is only shown when status is `started`
+→ → → → → `possible` | bool | Optional (0 or 1) | *Added in Bitcoin Core 0.11.0*
Returns false if there are not enough blocks left in this period to pass activation threshold. Field is only shown when status is `started`
+→ → → `height` | numeric | Optional | Height of the first block at which the rules are or will be enforced (only for "buried" type, or "bip9" type with "active" status)
+→ → → `active` | boolean | Required | True if the rules are enforced for the mempool and the next block
+→ `warnings` | string | Optional (0 or 1) | *Added in Dash Core 0.16.0*
Returns any network and blockchain warnings
+
+*Example from Dash Core 21.0.0*
+
+``` bash
+dash-cli -testnet getblockchaininfo
+```
+
+Result:
+
+``` json
+{
+ "chain": "test",
+ "blocks": 1025413,
+ "headers": 1025413,
+ "bestblockhash": "000000a7f4dbe0865dbbfacf24d8cdb2914fc0ba2d24131ed7ea0b181bec532f",
+ "difficulty": 0.002316476131335342,
+ "time": 1715629755,
+ "mediantime": 1715628900,
+ "verificationprogress": 0.9999996933131421,
+ "initialblockdownload": false,
+ "chainwork": "000000000000000000000000000000000000000000000000030928dd71247c3d",
+ "size_on_disk": 3508237778,
+ "pruned": false,
+ "softforks": {
+ "bip34": {
+ "type": "buried",
+ "active": true,
+ "height": 76
+ },
+ "bip66": {
+ "type": "buried",
+ "active": true,
+ "height": 2075
+ },
+ "bip65": {
+ "type": "buried",
+ "active": true,
+ "height": 2431
+ },
+ "bip147": {
+ "type": "buried",
+ "active": true,
+ "height": 4300
+ },
+ "csv": {
+ "type": "buried",
+ "active": true,
+ "height": 8064
+ },
+ "dip0001": {
+ "type": "buried",
+ "active": true,
+ "height": 5500
+ },
+ "dip0003": {
+ "type": "buried",
+ "active": true,
+ "height": 7000
+ },
+ "dip0008": {
+ "type": "buried",
+ "active": true,
+ "height": 78800
+ },
+ "dip0020": {
+ "type": "buried",
+ "active": true,
+ "height": 414100
+ },
+ "dip0024": {
+ "type": "buried",
+ "active": true,
+ "height": 769700
+ },
+ "realloc": {
+ "type": "buried",
+ "active": true,
+ "height": 387500
+ },
+ "v19": {
+ "type": "buried",
+ "active": true,
+ "height": 850100
+ },
+ "v20": {
+ "type": "bip9",
+ "bip9": {
+ "status": "active",
+ "start_time": 1693526400,
+ "timeout": 9223372036854775807,
+ "ehf": false,
+ "since": 905100,
+ "min_activation_height": 0
+ },
+ "height": 905100,
+ "active": true
+ },
+ "mn_rr": {
+ "type": "bip9",
+ "bip9": {
+ "status": "defined",
+ "start_time": 1693526400,
+ "timeout": 9223372036854775807,
+ "ehf": true,
+ "since": 0,
+ "min_activation_height": 0
+ },
+ "active": false
+ }
+ },
+ "warnings": "Make sure to encrypt your wallet and delete all non-encrypted backups after you have verified that the wallet works!"
+}
+```
+
+*See also*
+
+* [GetMiningInfo](../api/remote-procedure-calls-mining.md#getmininginfo): returns various mining-related information.
+* [GetNetworkInfo](../api/remote-procedure-calls-network.md#getnetworkinfo): returns information about the node's connection to the network.
+* [GetWalletInfo](../api/remote-procedure-calls-wallet.md#getwalletinfo): provides information about the wallet.
+
+## GetBlockCount
+
+The [`getblockcount` RPC](../api/remote-procedure-calls-blockchain.md#getblockcount) returns the number of blocks in the local best block chain.
+
+*Parameters: none*
+
+*Result---the number of blocks in the local best block chain*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`result` | number (int) | Required (exactly 1) | The number of blocks in the local best block chain. For a new node with only the hardcoded genesis block, this number will be 0
+
+*Example from Dash Core 0.12.2*
+
+``` bash
+dash-cli -testnet getblockcount
+```
+
+Result:
+
+``` text
+4627
+```
+
+*See also*
+
+* [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.
+
+*Parameter---a block height*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+Block Height | number (int) | Required (exactly 1) | The height of the block whose header hash should be returned. The height of the hardcoded genesis block is 0
+
+*Result---the block header hash*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`result` | string (hex)/null | Required (exactly 1) | The hash of the block at the requested height, encoded as hex in RPC byte order, or JSON `null` if an error occurred
+
+*Example from Dash Core 0.12.2*
+
+``` bash
+dash-cli -testnet getblockhash 4000
+```
+
+Result:
+
+``` text
+00000ce22113f3eb8636e225d6a1691e132fdd587aed993e1bc9b07a0235eea4
+```
+
+*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.
+* [GetBestBlockHash](../api/remote-procedure-calls-blockchain.md#getbestblockhash): returns the header hash of the most recent block on the best block chain.
+
+## GetBlockFilter
+
+*Added in Dash Core 18.0.0*
+
+The [`getblockfilter` RPC](../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.
+
+:::{note}
+Requires the `-blockfilterindex` Dash Core command-line/configuration-file parameter to be enabled.
+:::
+
+*Parameter #1---blockhash*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+Hash | string | Required (exactly 1) | The hash of the block
+
+*Parameter #2---filtertype*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+Filter type | string | Optional (0 or 1) | The type name of the filter (default: basic).
+
+*Result---A JSON object with the encoded filter data*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`result` | object | Required (exactly 1) | The hex-encoded filter data.
+→ `filter` | string (hex) | Required (exactly 1) | The hex-encoded filter data
+→ `header` | string (hex) | Required (exactly 1) | The hex-encoded filter header
+
+*Example from Dash Core 18.0.0*
+
+``` bash
+dash-cli -testnet getblockfilter 0000004bb972bddf8d5b2bce517db07ff4c69a04e74e9c0bd2caa11ee23d0323 basic
+```
+
+Result:
+
+``` json
+{
+ "filter": "038c72a18c696aca7a",
+ "header": "f80b699589d1bfb1b269f948e9114034686c110273b01b6e4c0026ade1d6b968"
+}
+```
+
+## GetBlockHashes
+
+:::{note}
+Requires `timestampindex` Dash Core command-line/configuration-file parameter to be enabled.
+:::
+
+*Added in Dash Core 0.12.1*
+
+The [`getblockhashes` RPC](../api/remote-procedure-calls-blockchain.md#getblockhashes) returns array of hashes of blocks within the timestamp range provided (requires `timestampindex` to be enabled).
+
+*Parameter #1---high block timestamp*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+Block Timestamp | number (int) | Required (exactly 1) | The block timestamp for the newest block hash that should be returned.
+
+*Parameter #2---low block timestamp*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+Block Timestamp | number (int) | Required (exactly 1) | The block timestamp for the oldest block hash that should be returned.
+
+*Result---the block header hashes in the give time range*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`result` | array | Required (exactly 1) | The hashes of the blocks in the requested time range
+→ `hash` | string (hex) | Required (1 or more) | The hash of a block in the chain, encoded as hex in RPC byte order
+
+*Example from Dash Core 0.12.2*
+
+``` bash
+dash-cli -testnet getblockhashes 1507555793 1507554793
+```
+
+Result:
+
+``` json
+[
+ "0000000010a16c6fbc6bd5cdc238c2beabcda334e97fde1500d59be4e6fc4b89",
+ "000000009910885e811230c403e55aac6547d6df04ee671b2e8348524f73cab8",
+ "000000004bbb3828db1c4d4491760336cec215087819ab656336f30d4095e3d2",
+ "00000000ad2df2149aca2261a9a87c41e139dfe8f73d91db7ec0c1837fee21a0",
+ "0000000074068a9e3a271d165da3deb28bc3f8c751dde97f460d8078d92a9d06"
+]
+```
+
+*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](../api/remote-procedure-calls-blockchain.md#getblockhash): returns the header hash of a block at the given height in the local best block chain.
+* [GetBestBlockHash](../api/remote-procedure-calls-blockchain.md#getbestblockhash): returns the header hash of the most recent block on the best block chain.
+
+```{eval-rst}
+.. _api-rpc-blockchain-getblockheader:
+```
+
+## GetBlockHeader
+
+*Added in Bitcoin Core 0.12.0*
+
+The [`getblockheader` RPC](../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.
+
+*Parameter #1---header hash*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+Header Hash | string (hex) | Required (exactly 1) | The hash of the block header to get, encoded as hex in RPC byte order
+
+*Parameter #2---JSON or hex output*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+Format | bool | Optional (0 or 1) | Set to `false` to get the block header in serialized block format; set to `true` (the default) to get the decoded block header as a JSON object
+
+*Result (if format was `false`)---a serialized block header*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`result` | string (hex)/null | Required (exactly 1) | The requested block header as a serialized block, encoded as hex, or JSON `null` if an error occurred
+
+*Result (if format was `true` or omitted)---a JSON block header*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`result` | object/null | Required (exactly 1) | An object containing the requested block, or JSON `null` if an error occurred
+→ `hash` | string (hex) | Required (exactly 1) | The hash of this block's block header encoded as hex in RPC byte order. This is the same as the hash provided in parameter #1
+→ `confirmations` | number (int) | Required (exactly 1) | The number of confirmations the transactions in this block have, starting at 1 when this block is at the tip of the best block chain. This score will be -1 if the the block is not part of the best block chain
+→ `height` | number (int) | Required (exactly 1) | The height of this block on its block chain
+→ `version` | number (int) | Required (exactly 1) | This block's version number. See [block version numbers](../reference/block-chain-block-headers.md#block-versions)
+→ `merkleroot` | string (hex) | Required (exactly 1) | The merkle root for this block, encoded as hex in RPC byte order
+→ `time` | number (int) | Required (exactly 1) | The time of the block
+→ `mediantime` | number (int) | Required (exactly 1) | The computed median time of the previous 11 blocks. Used for validating transaction locktime under BIP113
+→ `nonce` | number (int) | Required (exactly 1) | The nonce which was successful at turning this particular block into one that could be added to the best block chain
+→ `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) | 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
+
+*Changes from Bitcoin - Following items not present in Dash result*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+→ `versionHex` | number (hex) | Required (exactly 1) | This block's hex version number. See [block version numbers](../reference/block-chain-block-headers.md#block-versions)
+
+*Example from Dash Core 0.16.0*
+
+Get a block header in raw hex:
+
+``` bash
+dash-cli -testnet getblockheader \
+ 00000000007b0fb99e36713cf08012482478ee496e6dcb4007ad2e806306e62b \
+ false
+```
+
+Result (wrapped):
+
+``` text
+00000020272e374a06c87a0ce0e6ee1a0754c98b9ec2493e7c0ac7ba41a0\
+730000000000568b3c4156090db4d8db5447762e95dd1d4c921c96801a9\
+086720ded85266325916cc05caa94001c5caf3595
+```
+
+Get the same block in JSON:
+
+``` bash
+dash-cli -testnet getblockheader \
+ 00000000007b0fb99e36713cf08012482478ee496e6dcb4007ad2e806306e62b
+```
+
+Result:
+
+``` json
+{
+ "hash": "00000000007b0fb99e36713cf08012482478ee496e6dcb4007ad2e806306e62b",
+ "confirmations": 212900,
+ "height": 86190,
+ "version": 536870912,
+ "versionHex": "20000000",
+ "merkleroot": "25632685ed0d7286901a80961c924c1ddd952e764754dbd8b40d0956413c8b56",
+ "time": 1556114577,
+ "mediantime": 1556113720,
+ "nonce": 2503323484,
+ "bits": "1c0094aa",
+ "difficulty": 440.8261075201009,
+ "chainwork": "0000000000000000000000000000000000000000000000000045ab6f9403a8e7",
+ "nTx": 1,
+ "previousblockhash": "000000000073a041bac70a7c3e49c29e8bc954071aeee6e00c7ac8064a372e27",
+ "nextblockhash": "00000000001c6c962639a1aad4cd069f315560a824d489418dc1f26b50a58aed",
+ "chainlock": true
+}
+```
+
+*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](../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).
+* [GetBlockHeaders](../api/remote-procedure-calls-blockchain.md#getblockheaders): returns an array of items with information about the requested number of blockheaders starting from the requested hash.
+* [GetBestBlockHash](../api/remote-procedure-calls-blockchain.md#getbestblockhash): returns the header hash of the most recent block on the best block chain.
+
+```{eval-rst}
+.. _api-rpc-blockchain-getblockheaders:
+```
+
+## GetBlockHeaders
+
+*Added in Dash Core 0.12.1*
+
+The [`getblockheaders` RPC](../api/remote-procedure-calls-blockchain.md#getblockheaders) returns an array of items with information about the requested number of blockheaders starting from the requested hash.
+
+*Parameter #1---header hash*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+Header Hash | string (hex) | Required (exactly 1) | The hash of the block header to get, encoded as hex in RPC byte order
+
+*Parameter #2---number of headers to return*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+Count | number | Optional (exactly 1) | The number of block headers to get
+
+*Parameter #3---JSON or hex output*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+Verbose | bool | Optional (0 or 1) | Set to `false` to get the block headers in serialized block format; set to `true` (the default) to get the decoded block headers as a JSON object
+
+*Result (if format was `false`)---a serialized block header*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`result` | array | Required (exactly 1) | The requested block header(s) as a serialized block
+→ `header` | string (hex) | Required (1 or more) | The block header encoded as hex in RPC byte order
+
+*Result (if format was `true` or omitted)---a JSON block header*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`result` | array | Required (exactly 1) | An array of objects each containing a block header, or JSON `null` if an error occurred
+→ Block Header | object/null | Required (exactly 1) | An object containing a block header
+→ → `hash` | string (hex) | Required (exactly 1) | The hash of this block's block header encoded as hex in RPC byte order. This is the same as the hash provided in parameter #1
+→ → `confirmations` | number (int) | Required (exactly 1) | The number of confirmations the transactions in this block have, starting at 1 when this block is at the tip of the best block chain. This score will be -1 if the the block is not part of the best block chain
+→ → `height` | number (int) | Required (exactly 1) | The height of this block on its block chain
+→ → `version` | number (int) | Required (exactly 1) | This block's version number. See [block version numbers](../reference/block-chain-block-headers.md#block-versions)
+→ → `merkleroot` | string (hex) | Required (exactly 1) | The merkle root for this block, encoded as hex in RPC byte order
+→ → `time` | number (int) | Required (exactly 1) | The time of the block
+→ → `mediantime` | number (int) | Required (exactly 1) | The computed median time of the previous 11 blocks. Used for validating transaction locktime under BIP113
+→ → `nonce` | number (int) | Required (exactly 1) | The nonce which was successful at turning this particular block into one that could be added to the best block chain
+→ → `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) | 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
+
+*Example from Dash Core 0.16.0*
+
+Get two block headers in raw hex:
+
+``` bash
+dash-cli -testnet getblockheaders \
+ 00000000007b0fb99e36713cf08012482478ee496e6dcb4007ad2e806306e62b \
+ 2 false
+```
+
+Result (wrapped):
+
+``` text
+[
+ "00000020272e374a06c87a0ce0e6ee1a0754c98b9ec2493e7c0ac7ba41a0730000000\
+ 000568b3c4156090db4d8db5447762e95dd1d4c921c96801a9086720ded8526632591\
+ 6cc05caa94001c5caf3595",
+ "000000202be60663802ead0740cb6d6e49ee7824481280f03c71369eb90f7b00000000\
+ 006abd277facc8cf02886d88662dbcc2adb6d8de7a491915e74bed4d835656a4f1f26d\
+ c05ced93001ccf81cabc"
+]
+```
+
+Get the same two block headers in JSON:
+
+``` bash
+dash-cli -testnet getblockheader \
+ 00000000eb0af5aec7b673975a22593dc0cc763f71ba8de26292410273437078 \
+ 2 true
+```
+
+Result:
+
+``` json
+[
+ {
+ "hash": "00000000007b0fb99e36713cf08012482478ee496e6dcb4007ad2e806306e62b",
+ "confirmations": 212910,
+ "height": 86190,
+ "version": 536870912,
+ "versionHex": "20000000",
+ "merkleroot": "25632685ed0d7286901a80961c924c1ddd952e764754dbd8b40d0956413c8b56",
+ "time": 1556114577,
+ "mediantime": 1556113720,
+ "nonce": 2503323484,
+ "bits": "1c0094aa",
+ "difficulty": 440.8261075201009,
+ "chainwork": "0000000000000000000000000000000000000000000000000045ab6f9403a8e7",
+ "nTx": 1,
+ "previousblockhash": "000000000073a041bac70a7c3e49c29e8bc954071aeee6e00c7ac8064a372e27",
+ "nextblockhash": "00000000001c6c962639a1aad4cd069f315560a824d489418dc1f26b50a58aed",
+ "chainlock": true
+ },
+ {
+ "hash": "00000000001c6c962639a1aad4cd069f315560a824d489418dc1f26b50a58aed",
+ "confirmations": 212909,
+ "height": 86191,
+ "version": 536870912,
+ "versionHex": "20000000",
+ "merkleroot": "f1a45656834ded4be71519497aded8b6adc2bc2d66886d8802cfc8ac7f27bd6a",
+ "time": 1556114930,
+ "mediantime": 1556113903,
+ "nonce": 3167388111,
+ "bits": "1c0093ed",
+ "difficulty": 443.0262219757585,
+ "chainwork": "0000000000000000000000000000000000000000000000000045ad2a9c752d18",
+ "nTx": 1,
+ "previousblockhash": "00000000007b0fb99e36713cf08012482478ee496e6dcb4007ad2e806306e62b",
+ "nextblockhash": "000000000076a17beb1bb56e6ec53579f8a604d2363c9a4f8ca3f63e6aca3423",
+ "chainlock": true
+ }
+]
+```
+
+*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](../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).
+* [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.
+* [GetBestBlockHash](../api/remote-procedure-calls-blockchain.md#getbestblockhash): returns the header hash of the most recent block on the best block chain.
+
+## GetBlockStats
+
+The [`getblockstats` RPC](../api/remote-procedure-calls-blockchain.md#getblockstats) computes per block statistics for a given window.
+
+This RPC won't work for some heights if pruning is enabled. Since Dash Core 18.1, `-txindex` is no longer required and it works for all non-pruned blocks.
+
+*Parameter #1---hash_or_height*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+hash_or_height | string or numeric | Required (exactly 1) | The block hash or height of the target block
+
+*Parameter #2---stats*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+stats | array | optional | Values to plot, by default all values (see result below)
+
+*Result---a JSON object containing the requested statistics*
+
+:::{note}
+All amounts are in duffs.
+:::
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`result` | object/null | Required (exactly 1) | An object containing stats for the requested block, or JSON `null` if an error occurred
+→ `avgfee` | numeric | Required (exactly 1) | Average fee in the block
+→ `avgfeerate` | numeric | Required (exactly 1) | Average feerate (in duffs per byte)
+→ `avgtxsize` | numeric | Required (exactly 1) | Average transaction size
+→ `blockhash` | string (hex) | Required (exactly 1) | The block hash (to check for potential reorgs)
+→ `feerate_percentiles` | array (num) | Required (exactly 1) | _Added in Dash Core 18.0.0_ Feerates at the 10th, 25th, 50th, 75th, and 90th percentile weight unit, which are in duffs per byte.
+→ → `10th_percentile_feerate` | numeric | Required (exactly 1) | The 10th percentile feerate
+→ → `25th_percentile_feerate` | numeric | Required (exactly 1) | The 25th percentile feerate
+→ → `50th_percentile_feerate` | numeric | Required (exactly 1) | The 50th percentile feerate
+→ → `75th_percentile_feerate` | numeric | Required (exactly 1) | The 75th percentile feerate
+→ → `90th_percentile_feerate` | numeric | Required (exactly 1) | The 90th percentile feerate
+→ `height` | numeric | Required (exactly 1) | The height of the block
+→ `ins` | numeric | Required (exactly 1) | The number of inputs (excluding coinbase)
+→ `maxfee` | numeric | Required (exactly 1) | Maximum fee in the block
+→ `maxfeerate` | numeric | Required (exactly 1) | Maximum feerate (in duffs per byte)
+→ `maxtxsize` | numeric | Required (exactly 1) | Maximum transaction size
+→ `medianfee` | numeric | Required (exactly 1) | Truncated median fee in the block
+→ ~~medianfeerate~~ | ~~numeric~~ | ~~Required (exactly 1)~~ | **Removed in Dash Core 18.0.0** ~~Truncated median feerate (in duffs per byte)~~
+→ `mediantime` | numeric | Required (exactly 1) | The block median time past
+→ `mediantxsize` | numeric | Required (exactly 1) | Truncated median transaction size
+→ `minfee` | numeric | Required (exactly 1) | Minimum fee in the block
+→ `minfeerate` | numeric | Required (exactly 1) | Minimum feerate (in duffs per byte)
+→ `mintxsize` | numeric | Required (exactly 1) | Minimum transaction size
+→ `outs` | numeric | Required (exactly 1) | The number of outputs
+→ `subsidy` | numeric | Required (exactly 1) | The block subsidy
+→ `time` | number (real) | Required (exactly 1) | The block time
+→ `total_out` | numeric | Required (exactly 1) | Total amount in all outputs (excluding coinbase and thus reward [i.e. subsidy + totalfee])
+→ `total_size` | numeric | Required (exactly 1) | Total size of all non-coinbase transactions
+→ `totalfee` | numeric | Required (exactly 1) | The fee total
+→ `txs` | numeric | Required (exactly 1) | The number of transactions (including coinbase)
+→ `utxo_increase` | numeric | Required (exactly 1) | The increase/decrease in the number of unspent outputs
+→ `utxo_size_inc` | numeric | Required (exactly 1) | The increase/decrease in size for the utxo index (not discounting op_return and similar)
+
+*Example from Dash Core 18.0.0*
+
+``` bash
+dash-cli getblockstats 1000 '["minfeerate","avgfeerate"]'
+```
+
+Result:
+
+``` json
+{
+ "avgfeerate": 0,
+ "minfeerate": 0
+}
+```
+
+*See also: none*
+
+## GetChainTips
+
+The [`getchaintips` RPC](../api/remote-procedure-calls-blockchain.md#getchaintips) returns information about the highest-height block (tip) of each local block chain.
+
+*Parameters: none*
+
+*Result---an array of block chain tips*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`result` | array | Required (exactly 1) | An array of JSON objects, with each object describing a chain tip. At least one tip---the local best block chain---will always be present
+→ Tip | object | Required (1 or more) | An object describing a particular chain tip. The first object will always describe the active chain (the local best block chain)
+→ → `height` | number (int) | Required (exactly 1) | The height of the highest block in the chain. A new node with only the genesis block will have a single tip with height of 0
+→ → `hash` | string (hex) | Required (exactly 1) | The hash of the highest block in the chain, encoded as hex in RPC byte order
+→ `difficulty` | number (real) | Required (exactly 1) | The difficulty of the highest-height block in the best block chain (Added in Dash Core 0.12.1)
+→ `chainwork` | string (hex) | Required (exactly 1) | The estimated number of block header hashes checked from the genesis block to this block, encoded as big-endian hex (Added in Dash Core 0.12.1)
+→ → `branchlen` | number (int) | Required (exactly 1) | The number of blocks that are on this chain but not on the main chain. For the local best block chain, this will be `0`; for all other chains, it will be at least `1`
+→ → `forkpoint` | string (hex) | Required (exactly 1) | *Added in Dash Core 0.12.3*
Block hash of the last common block between this tip and the main chain
+→ → `status` | string | Required (exactly 1) | The status of this chain. Valid values are: • `active` for the local best block chain • `invalid` for a chain that contains one or more invalid blocks • `headers-only` for a chain with valid headers whose corresponding blocks both haven't been validated and aren't stored locally • `valid-headers` for a chain with valid headers whose corresponding blocks are stored locally, but which haven't been fully validated • `valid-fork` for a chain which is fully validated but which isn't part of the local best block chain (it was probably the local best block chain at some point) • `unknown` for a chain whose reason for not being the active chain is unknown
+
+*Example from Dash Core 0.12.3*
+
+``` bash
+dash-cli -testnet getchaintips
+```
+
+``` json
+[
+ {
+ "height": 110192,
+ "hash": "000000000c6007f40c3b68a77b0e1319a89c0504ae1b391d071cf49fa7591dee",
+ "difficulty": 18.38631407059958,
+ "chainwork": "000000000000000000000000000000000000000000000000002cbd2546718747",
+ "branchlen": 0,
+ "forkpoint": "000000000c6007f40c3b68a77b0e1319a89c0504ae1b391d071cf49fa7591dee",
+ "status": "active"
+ }
+]
+```
+
+*See also*
+
+* [GetBestBlockHash](../api/remote-procedure-calls-blockchain.md#getbestblockhash): returns the header hash of the most recent block on the 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.
+* [GetBlockChainInfo](../api/remote-procedure-calls-blockchain.md#getblockchaininfo): provides information about the current state of the block chain.
+
+## GetChainTxStats
+
+The [`getchaintxstats` RPC](../api/remote-procedure-calls-blockchain.md#getchaintxstats) compute statistics about the total number and rate of transactions in the chain.
+
+*Parameter #1---nblocks*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+nblocks | number (int) | Optional | Size of the window in number of blocks (default: one month).
+
+*Parameter #2---blockhash*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+blockhash | string | Optional | The hash of the block that ends the window.
+
+*Result--statistics about transactions*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`result` | object | Required (exactly 1) | Object containing transaction statistics
+→ `time` | number (int) | Required (exactly 1) | The timestamp for the statistics in UNIX format
+→ `txcount` | number (int) | Required (exactly 1) | The total number of transactions in the chain up to that point
+→ `window_final_block_hash` | string (hex) | Required (exactly 1) | *Added in Dash Core 0.17.0*
The hash of the final block in the window
+→ `window_block_count` | number (int) | Required (exactly 1) | *Added in Dash Core 0.16.0*
Size of the window in number of blocks
+→ `window_final_block_height` | number (int) | Required (exactly 1) | _Added in Dash Core 18.0.0_
Height of the final block in window
+→ `window_tx_count` | number (int) | Optional (0 or 1) | *Added in Dash Core 0.16.0*
The number of transactions in the window. Only returned if `window_block_count` is > 0
+→ `window_interval` | number (int) | Optional (0 or 1) | *Added in Dash Core 0.16.0*
The elapsed time in the window in seconds. Only returned if `window_block_count` is > 0
+→ `txrate` | number (int) | Optional (0 or 1) | The average rate of transactions per second in the window. Only returned if `window_interval` is > 0
+
+*Example from Dash Core 18.0.0*
+
+``` bash
+dash-cli -testnet getchaintxstats
+```
+
+Result:
+
+``` json
+{
+ "time": 1634200935,
+ "txcount": 5255650,
+ "window_final_block_hash": "0000013524141f0e54137d266088c3d042cca340eabc4393414d7d0560866239",
+ "window_final_block_height": 593815,
+ "window_block_count": 17280,
+ "window_tx_count": 33384,
+ "window_interval": 2417430,
+ "txrate": 0.0138097070028915
+}
+
+```
+
+*See also: none*
+
+## GetDifficulty
+
+The [`getdifficulty` RPC](../api/remote-procedure-calls-blockchain.md#getdifficulty) returns the proof-of-work difficulty as a multiple of the minimum difficulty.
+
+*Parameters: none*
+
+*Result---the current difficulty*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`result` | number (real) | Required (exactly 1) | The difficulty of creating a block with the same target threshold (nBits) as the highest-height block in the local best block chain. The number is a a multiple of the minimum difficulty
+
+*Example from Dash Core 0.12.2*
+
+``` bash
+dash-cli -testnet getdifficulty
+```
+
+Result:
+
+``` text
+1.069156225528583
+```
+
+*See also*
+
+* [GetNetworkHashPS](../api/remote-procedure-calls-mining.md#getnetworkhashps): returns the estimated network hashes per second based on the last n blocks.
+* [GetMiningInfo](../api/remote-procedure-calls-mining.md#getmininginfo): returns various mining-related information.
+
+```{eval-rst}
+.. _api-rpc-blockchain-getmempoolancestors:
+```
+
+## GetMemPoolAncestors
+
+*Added in Dash Core 0.12.3*
+
+The [`getmempoolancestors` RPC](../api/remote-procedure-calls-blockchain.md#getmempoolancestors) returns all in-mempool ancestors for a transaction in the mempool.
+
+*Parameter #1---a transaction identifier (TXID)*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+TXID | string (hex) | Required (exactly 1) | The TXID of a transaction in the memory pool, encoded as hex in RPC byte order
+
+*Parameter #2---desired output format*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+Format | bool | Optional (0 or 1) | Set to `true` to get json objects describing each transaction in the memory pool; set to `false` (the default) to only get an array of TXIDs
+
+*Result---list of ancestor transactions*
+
+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
+
+*Result (format: `true`)---a JSON object describing each transaction*
+
+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` | number (bitcoins) | Required (exactly 1) | **Deprecated in Dash Core 0.17.0**
The transaction fee paid by the transaction in decimal bitcoins
+→ → `modifiedfee` | number (bitcoins) | Required (exactly 1) | **Deprecated in Dash Core 0.17.0**
The transaction fee with fee deltas used for mining priority in decimal bitcoins
+→ → `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) | 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 20.0.0** 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) | Set to `true` if this transaction was locked via [InstantSend](../resources/glossary.md#instantsend)
+
+*Examples from Dash Core 20.0.0*
+
+The default (`false`):
+
+``` bash
+dash-cli getmempoolancestors c32b5d5d94a6d151b69bfd25d77e5b538dffba2445b957c81fcf9df1b90f4ba1
+```
+
+Result:
+
+``` json
+[
+ "d64eb30e5435e7a4564df9d06525a8ab48858fdaf111661d1e7874a72cebc132"
+]
+```
+
+Verbose output (`true`):
+
+``` bash
+dash-cli getmempoolancestors c32b5d5d94a6d151b69bfd25d77e5b538dffba2445b957c81fcf9df1b90f4ba1 true
+```
+
+Result:
+
+``` json
+{
+ "177826190c3fd38a93a381a9b5ad7d955c3f2cf886f7c6f0d58647fb868cf9f5": {
+ "fees": {
+ "base": 0.00000226,
+ "modified": 0.00000226,
+ "ancestor": 0.00000226,
+ "descendant": 0.00003226
+ },
+ "vsize": 226,
+ "fee": 0.00000226,
+ "modifiedfee": 0.00000226,
+ "time": 1690318336,
+ "height": 1909978,
+ "descendantcount": 6,
+ "descendantsize": 1648,
+ "descendantfees": 3226,
+ "ancestorcount": 1,
+ "ancestorsize": 226,
+ "ancestorfees": 226,
+ "depends": [
+ ],
+ "spentby": [
+ "127cfa4cd892ad78b9c1227bebfef2bb5a8a06636b659a734c0a5787004934ca"
+ ],
+ "instantlock": "true",
+ "unbroadcast": false
+ }
+}
+```
+
+*See also*
+
+* [GetMemPoolDescendants](../api/remote-procedure-calls-blockchain.md#getmempooldescendants): returns all in-mempool descendants for a transaction in the mempool.
+* [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.
+
+```{eval-rst}
+.. _api-rpc-blockchain-getmempooldescendants:
+```
+
+## GetMemPoolDescendants
+
+*Added in Dash Core 0.12.3*
+
+The [`getmempooldescendants` RPC](../api/remote-procedure-calls-blockchain.md#getmempooldescendants) returns all in-mempool descendants for a transaction in the mempool.
+
+*Parameter #1---a transaction identifier (TXID)*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+TXID | string (hex) | Required (exactly 1) | The TXID of a transaction in the memory pool, encoded as hex in RPC byte order
+
+*Parameter #2---desired output format*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+Format | bool | Optional (0 or 1) | Set to `true` to get json objects describing each transaction in the memory pool; set to `false` (the default) to only get an array of TXIDs
+
+*Result---list of descendant transactions*
+
+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
+
+*Result (format: `true`)---a JSON object describing each transaction*
+
+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` | number (bitcoins) | Required (exactly 1) | **Deprecated in Dash Core 0.17.0**
The transaction fee paid by the transaction in decimal bitcoins
+→ → `modifiedfee` | number (bitcoins) | Required (exactly 1) | **Deprecated in Dash Core 0.17.0**
The transaction fee with fee deltas used for mining priority in decimal bitcoins
+→ → `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) | 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 20.0.0** 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) | Set to `true` if this transaction was locked via [InstantSend](../resources/glossary.md#instantsend)
+
+*Examples from Dash Core 20.0.0*
+
+The default (`false`):
+
+``` bash
+dash-cli getmempooldescendants 414735b9b4da8232299b25510628e321ba7d2adfb042f7c6437ad3b0f7793b80
+```
+
+Result:
+
+``` json
+[
+ "94445715afd59a7ecc2fd6d62e42905194e91633e8f54b459f605fe0d780fe99"
+]
+```
+
+Verbose output (`true`):
+
+``` bash
+dash-cli getmempooldescendants 414735b9b4da8232299b25510628e321ba7d2adfb042f7c6437ad3b0f7793b80 true
+```
+
+Result:
+
+``` json
+{
+ "94445715afd59a7ecc2fd6d62e42905194e91633e8f54b459f605fe0d780fe99": {
+ "fees": {
+ "base": 0.00000225,
+ "modified": 0.00000225,
+ "ancestor": 0.00000450,
+ "descendant": 0.00000225
+ },
+ "vsize": 225,
+ "fee": 0.00000225,
+ "modifiedfee": 0.00000225,
+ "time": 1690906537,
+ "height": 879144,
+ "descendantcount": 1,
+ "descendantsize": 225,
+ "descendantfees": 225,
+ "ancestorcount": 2,
+ "ancestorsize": 450,
+ "ancestorfees": 450,
+ "depends": [
+ "414735b9b4da8232299b25510628e321ba7d2adfb042f7c6437ad3b0f7793b80"
+ ],
+ "spentby": [
+ ],
+ "instantlock": "true",
+ "unbroadcast": false
+ }
+}
+```
+
+*See also*
+
+* [GetMemPoolAncestors](../api/remote-procedure-calls-blockchain.md#getmempoolancestors): returns all in-mempool ancestors for a transaction in the mempool.
+* [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.
+
+```{eval-rst}
+.. _api-rpc-blockchain-getmempoolentry:
+```
+
+## GetMemPoolEntry
+
+*Added in Dash Core 0.14.0*
+
+The [`getmempoolentry` RPC](../api/remote-procedure-calls-blockchain.md#getmempoolentry) returns mempool data for given transaction (must be in mempool).
+
+*Parameter #1---a transaction identifier (TXID)*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+TXID | string (hex) | Required (exactly 1) | The TXID of a transaction in the memory pool, encoded as hex in RPC byte order
+
+*Result ---a JSON object describing the transaction*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`result` | object | Required (exactly 1) | A object containing transactions currently in the memory pool. May be empty
+→ `vsize` | number (int) | Required (exactly 1) | The virtual transaction size. This can be different from actual serialized size for high-sigop transactions.
+→ `fee` | number (bitcoins) | Required (exactly 1) | **Deprecated in Dash Core 0.17.0**
The transaction fee paid by the transaction in decimal bitcoins
+→ `modifiedfee` | number (bitcoins) | Required (exactly 1) | **Deprecated in Dash Core 0.17.0**
The transaction fee with fee deltas used for mining priority in decimal bitcoins
+→ `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) | 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 20.0.0** 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) | Set to `true` if this transaction was locked via [InstantSend](../resources/glossary.md#instantsend)
+
+*Example from Dash Core 20.0.0*
+
+``` bash
+dash-cli getmempoolentry 33136ead40c8ad0019be7ab8d8e430c1e336fd6f7fcfe204096c0da28d9a6225
+```
+
+Result:
+
+``` json
+{
+ "fees": {
+ "base": 0.00009350,
+ "modified": 0.00009350,
+ "ancestor": 0.00009350,
+ "descendant": 0.00009350
+ },
+ "vsize": 374,
+ "fee": 0.00009350,
+ "modifiedfee": 0.00009350,
+ "time": 1690317662,
+ "height": 1909971,
+ "descendantcount": 1,
+ "descendantsize": 374,
+ "descendantfees": 9350,
+ "ancestorcount": 1,
+ "ancestorsize": 374,
+ "ancestorfees": 9350,
+ "depends": [
+ ],
+ "spentby": [
+ ],
+ "instantlock": "true",
+ "unbroadcast": false
+}
+```
+
+*See also*
+
+* [GetMemPoolAncestors](../api/remote-procedure-calls-blockchain.md#getmempoolancestors): returns all in-mempool ancestors for a transaction in the mempool.
+* [GetMemPoolDescendants](../api/remote-procedure-calls-blockchain.md#getmempooldescendants): returns all in-mempool descendants for a transaction in the mempool.
+* [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.
+
+## GetMemPoolInfo
+
+The [`getmempoolinfo` RPC](../api/remote-procedure-calls-blockchain.md#getmempoolinfo) returns information about the node's current transaction memory pool.
+
+*Parameters: none*
+
+*Result---information about the transaction memory pool*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`result` | object | Required (exactly 1) | A object containing information about the memory pool
+→ `loaded` | boolean | Required (exactly 1) | True if the mempool is fully loaded
+→ `size` | number (int) | Required (exactly 1) | The number of transactions currently in the memory pool
+→ `bytes` | number (int) | Required (exactly 1) | The total number of bytes in the transactions in the memory pool
+→ `usage` | number (int) | Required (exactly 1) | *Added in Bitcoin Core 0.11.0*
Total memory usage for the mempool in bytes
+`total_fee` | number (int) | Required (exactly 1) | **Added in Dash Core 20.1.0**
Total fees for the mempool in DASH, ignoring fees modified through prioritizetransaction
+→ `maxmempool` | number (int) | Required (exactly 1) | *Added in Bitcoin Core 0.12.0*
Maximum memory usage for the mempool in bytes
+→ `mempoolminfee` | number | Required (exactly 1) | *Added in Bitcoin Core 0.12.0*
The lowest fee per kilobyte paid by any transaction in the memory pool
+→ `mempoolminfee` | number | Required (exactly 1) | *Added in Dash Core 0.16.0*
Minimum fee rate in DASH/kB for tx to be accepted. Is the maximum of minrelaytxfee and minimum mempool fee
+→ `minrelaytxfee` | number (int) | Required (exactly 1) | *Added in Dash Core 20.0.0*
Current minimum relay fee for transactions
+→ `instantsendlocks` | number (int) | Required (exactly 1) | *Added in Dash Core 0.15.0*
Number of InstantSend locked transactions not yet in a block
+→ `unbroadcastcount` | number (int) | Required (exactly 1) | *Added in Dash Core 20.0.0*
Current number of transactions that haven't passed initial broadcast yet
+
+*Example from Dash Core 20.1.0*
+
+``` bash
+dash-cli -testnet getmempoolinfo
+```
+
+Result:
+
+``` json
+
+{
+ "loaded": true,
+ "size": 3,
+ "bytes": 1116,
+ "usage": 5072,
+ "total_fee": 0.00001116,
+ "maxmempool": 300000000,
+ "mempoolminfee": 0.00001000,
+ "minrelaytxfee": 0.00001000,
+ "instantsendlocks": 3,
+ "unbroadcastcount": 0
+}
+```
+
+*See also*
+
+* [GetBlockChainInfo](../api/remote-procedure-calls-blockchain.md#getblockchaininfo): provides information about the current state of the block chain.
+* [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.
+* [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.
+
+```{eval-rst}
+.. _api-rpc-blockchain-getrawmempool:
+```
+
+## GetRawMemPool
+
+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 #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*
+
+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
+→ → `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) | 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) | 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
+
+*Examples from Dash Core 20.0.0*
+
+The default (`false`):
+
+``` bash
+dash-cli getrawmempool
+```
+
+Result:
+
+``` json
+[
+ "16f9a964f1bafbf2a745c2add0da31330b2ee521c2d411416d59c25343b9fb92",
+ "664e9ca96802ec014469e0d2c34cc7c7e49c4a5a72613614ee97ebd193104376",
+ "bbbfff097dff060a44622d6569c6f11d13ec29d3c204318ec2c2b8bf5b888487",
+ "9e6cd0b8feb804b796a6a74e12c45d93c1ea39d3fd205b463e26c70f7f2063e9",
+ "d541e8776b42ab9dc9a722bf38f99f0b38be0325193ebaf1576119e3dbc00a49",
+ "4d1d77c26cf1184ff26d27cbbc78f95eada99965920c6bceeb508194bb7217e2",
+ "e1eafdf61c1062a8e82fd6c42baa0a95f24b8f75fb81db94c4b9e41afc0405d2",
+ "f4696ff8a75a0235fe7c9062a895a6e364fd7b3941b41a66efa513176bf3cb21",
+ "8614e7a3f4208f69823f09e02c66a22813cac8de7bc05828c3847e39c6d8e323",
+ "b8c9eea215addedd8f162e6c4881dd74a14dbd05c820d5149e29990ee5b869dd",
+ "0a8ccaf37b2652b6ac400922be8cd4ea91267d19ec8e11e20f848d8e62bdef77",
+ "bc0b7a1d1ee9976652949ef014637d107e8154d00484c62fc3a69cc004367244",
+ "5446f81969179087b5b490d20b156d13a9d63d7a6d9f618ccda903722b0dab34",
+ "50caf79821d946b46db0bb64d0e9d354680ce2b94257d5c7a28a1f65fefde226",
+ "76e018d092d1cd8c4e2074ef6225e38f1d7cc5264980b0d1b5e484f944affa06",
+ "b86f0408ae8c3126da6458df0c64b1bf19c2f512b40e5811b3130c9fecbc316d",
+ "52d8e1ea95fcb1b9156ec7ff2ab82ae3e3040cf8328f86b4d96974990527cd90",
+ "43619b452edc8647cbfe740b55a0c8f9716f6bd6bb258b3c7cb6e0be204a57d3",
+ "a77d001facacf7d00b2721d246b6790c12018e6e89d6cd543478a84e63bb498a",
+ "e4a409ee2fbb94925bdea0fa5a3040550fa85063c6343fba3c7b88122fba365f"
+]
+```
+
+Verbose output (`true`):
+
+``` bash
+dash-cli getrawmempool true
+```
+
+Result:
+
+``` json
+"0994e854166beb6f15630e7b5aba0ef0e57b2a7235957bcbb8000c09449e9eba": {
+ "fees": {
+ "base": 0.00000225,
+ "modified": 0.00000225,
+ "ancestor": 0.00000225,
+ "descendant": 0.00000225
+ },
+ "vsize": 225,
+ "fee": 0.00000225,
+ "modifiedfee": 0.00000225,
+ "time": 1690318205,
+ "height": 1909975,
+ "descendantcount": 1,
+ "descendantsize": 225,
+ "descendantfees": 225,
+ "ancestorcount": 1,
+ "ancestorsize": 225,
+ "ancestorfees": 225,
+ "depends": [
+ ],
+ "spentby": [
+ ],
+ "instantlock": "false",
+ "unbroadcast": false
+ }
+```
+
+*See also*
+
+* [GetMemPoolInfo](../api/remote-procedure-calls-blockchain.md#getmempoolinfo): returns information about the node's current transaction memory pool.
+* [GetMemPoolEntry](../api/remote-procedure-calls-blockchain.md#getmempoolentry): returns mempool data for given transaction (must be in mempool).
+* [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.
+
+## GetMerkleBlocks
+
+*Added in Dash Core 0.15.0*
+
+The [`getmerkleblocks` RPC](../api/remote-procedure-calls-blockchain.md#getmerkleblocks) returns an array of hex-encoded merkleblocks for blocks starting from which match .
+
+*Parameter #1---filter*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+filter | string | Required (exactly 1) | The hex encoded bloom filter
+
+*Parameter #2---hash*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+hash | string | Required (exactly 1) | The block hash
+
+*Parameter #3---count*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+count | number (int) | Optional Default/max=2000 |
+
+*Result---the list of merkleblocks*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`result` | array | Required (exactly 1) | An array of merkleblocks
+→ Merkle Block | string (hex) | Optional (1 or more) | A serialized, hex-encoded merkleblock
+
+*Example from Dash Core 0.15.0*
+
+``` bash
+dash-cli getmerkleblocks \
+ "2303028005802040100040000008008400048141010000f8400420800080025004000004130000000000000001" \
+ "00000000007e1432d2af52e8463278bf556b55cf5049262f25634557e2e91202"
+ 2000
+```
+
+Result (truncated):
+
+``` json
+[
+ "000000202c...aefc440107",
+ "0000002058...9a17830103"
+]
+```
+
+*See also: none*
+
+## GetSpecialTxes
+
+*Added in Dash Core 0.13.1*
+
+The [`getspecialtxes` RPC](../api/remote-procedure-calls-blockchain.md#getspecialtxes) returns an array of special transactions found in the specified block
+
+*Parameter #1---Block hash*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`blockhash` | string | Required (exactly 1) | The block hash.
+
+*Parameter #2---Special transaction type*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+type | int | Optional (0 or 1) | Filter special txes by type, -1 means all types (default: -1)
+
+*Parameter #3---Result limit*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+count | int | Optional (0 or 1) | The number of transactions to return (default: 10)
+
+*Parameter #4---Results to skip*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+skip | int | Optional (0 or 1) | The number of transactions to skip (default: 0)
+
+*Parameter #5---Verbosity*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+verbosity | int | Optional (0 or 1) | 0 for hashes, 1 for hex-encoded data, and 2 for JSON object (default: 0)
+
+*Result (if `verbosity` was `0`)---An array of transaction IDs*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`result` | string (hex): array | Required (exactly 1) | Array of special transaction hashes
+
+*Result (if `verbosity` was `1`)---An array of serialized transactions*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`result` | string (hex): array | Required (exactly 1) | Array of serialized, hex-encoded data for the special transaction(s)
+
+*Result (if `verbosity` was `2`)---An array of JSON objects*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`result` | string (hex): array of ojbects | Required (exactly 1) | Array of special transaction objects in the format of the [`getrawtransaction` RPC](../api/remote-procedure-calls-raw-transactions.md#getrawtransaction)
+
+*Example from Dash Core 0.13.1*
+
+List of Special Transactions hashes.
+
+``` bash
+dash-cli -testnet getspecialtxes \
+0000003db0006ecaccdf5ae2cfa9d94406ef40ff65b9ec34668b87fca3da9226
+```
+
+Result:
+
+``` json
+[
+ "1572a15f56307e413afe3cb7ea0017a1a3fd6d89c6c5f258cc17b2888a8e7fff",
+ "89a6dc42063e4a792ec225db64dd9426742a5d1738e8821625d2ab920a6187b2",
+ "fa3b3b0d3522becb02ddd15dd075f3d6ecc6a5a50b43c6c9f6d4703a9a8509d5"
+]
+```
+
+List of Provider Registration Special Transactions (type: 1) in serialized, hex-encoded format.
+
+``` bash
+dash-cli -testnet getspecialtxes \
+0000003db0006ecaccdf5ae2cfa9d94406ef40ff65b9ec34668b87fca3da9226 1 10 0 1
+```
+
+Result:
+
+``` json
+[
+ "0300010001ea721d7420a9b58025894d08f9fecc73b7b87ed09277fa99dad5aa028ea357e1000000006b48304502210093c409672eed335f80630d7108c108d0b85ebe4d8be0758f8a3745f617c4b57302203175063605552c89f6de7f3dadc1773d5ef773b7cc0ccf98e6c5555ea75ba307012102b21d19fec95d9863c5b12fafeb60530e1cfc51d83f49ea9bca7192abb8b83e46feffffff01c4bb609a010000001976a9142efe9f9d3b36b133364d3cccbd27db75a0fbdcb788ac00000000fd120101000000000031567fbaf591ae9d2d0e9050bebce6a311cfd900616f851a3a630aa65e53f6940000000000000000000000000000ffffad3d1ee74a43c1ad3af209f75deaeb9216fc8339fd48d376f9b007ffa44583c9908f4aaca8dd97990c56043e475723f90940ef5fd7d493152540f25f58fb8c965ee5e1be4f850a661476c1ad3af209f75deaeb9216fc8339fd48d376f9b0e8031976a91454bbd7bd7c21553612d60ab16579e51efbcb135288acc281e8bf5a0dd22dfc9f1edeef9ef248f965a79210d997da37fb3e1dec76d1a4412096809bc005c860a0215cb008e3044b972688443b0b7a31ac5a04b728e63b1b5c5489e33dd666435f93c646523ad8a1d935a58957026749cbd0a9bf7e09a77388",
+ "03000100012354b77c0f261f3d5b8424cbe67c2f27130f01c531732a08b8ae3f28aaa1b1fb000000006a473044022058323d3d9114492a7a7d350d5e3127d2dc550563968319987079c98f19ed519202204160cfe81adf1f41301136a3cbe03697baa1b14c3103b66bd839ace503dbf2630121026f83a8dad6b4695b136c399405b31d4031fd6631c469673d71eda479157ef9dcfeffffff0106b8609a010000001976a9142a855dc127bfdd5cc0ab73b71ff126e49aa409c488ac00000000fd1201010000000000b60dcb8bab5aba47435942c36ca4ee74ea5b662f4d7c7b528ce341915b2d5aec0100000000000000000000000000ffffad3d1ee74a428d3433cb6b9a1a29fdf07613172bbfdab744889689e308c9d2d8a3cb35f9d7bb7220b1eca82c952b82111119670dacae18a509628c775287e4e796128cd6379b80dffd7d8d3433cb6b9a1a29fdf07613172bbfdab744889610271976a91454bbd7bd7c21553612d60ab16579e51efbcb135288ac512010a2b992d7d5c1e1f999852855cc55162800025cfdf3b56c74e4734a2d97411f858532607cbd8848452dab1f216650def1d11a5abf3fa464c9ffcc7fec894a012a4b70ee5d3b983b5fe640f04a7f3e4fe67fbb5b7cccb71afa37888ad6cca48e"
+]
+```
+
+List of Coinbase Special Transactions (type: 5) in JSON format.
+
+``` bash
+dash-cli -testnet getspecialtxes \
+00000000007b0fb99e36713cf08012482478ee496e6dcb4007ad2e806306e62b 5 10 0 2
+```
+
+Result:
+
+``` json
+[
+ {
+ "txid": "25632685ed0d7286901a80961c924c1ddd952e764754dbd8b40d0956413c8b56",
+ "size": 229,
+ "version": 3,
+ "type": 5,
+ "locktime": 0,
+ "vin": [
+ {
+ "coinbase": "03ae50011a4d696e656420627920416e74506f6f6c2021000b01201da9196f0000000007000000",
+ "sequence": 4294967295
+ }
+ ],
+ "vout": [
+ {
+ "value": 8.10000000,
+ "valueSat": 810000000,
+ "n": 0,
+ "scriptPubKey": {
+ "asm": "OP_DUP OP_HASH160 cbd7bfcc50351180132b2c0698cb90ad74c473c7 OP_EQUALVERIFY OP_CHECKSIG",
+ "hex": "76a914cbd7bfcc50351180132b2c0698cb90ad74c473c788ac",
+ "reqSigs": 1,
+ "type": "pubkeyhash",
+ "addresses": [
+ "yeuGUfPMrbEqAS2Pw1wonYgEPbM4LAA9LK"
+ ]
+ }
+ },
+ {
+ "value": 8.10000000,
+ "valueSat": 810000000,
+ "n": 1,
+ "scriptPubKey": {
+ "asm": "OP_DUP OP_HASH160 88a060bc2dfe05780ae4dcb6c98b12436c35a939 OP_EQUALVERIFY OP_CHECKSIG",
+ "hex": "76a91488a060bc2dfe05780ae4dcb6c98b12436c35a93988ac",
+ "reqSigs": 1,
+ "type": "pubkeyhash",
+ "addresses": [
+ "yYmrsYP3XYMZr1cGtha3QzmuNB1C7CfyhV"
+ ]
+ }
+ }
+ ],
+ "extraPayloadSize": 70,
+ "extraPayload": "0200ae50010078e5c08b39960887bf95185c381bdb719e60b6925fa12af78a8824fade927387c757acb6bac63da84f9245e20cfd5d830382ac634d434725ca6349ab5db920a3",
+ "cbTx": {
+ "version": 2,
+ "height": 86190,
+ "merkleRootMNList": "877392defa24888af72aa15f92b6609e71db1b385c1895bf870896398bc0e578",
+ "merkleRootQuorums": "a320b95dab4963ca2547434d63ac8203835dfd0ce245924fa83dc6bab6ac57c7"
+ },
+ "instantlock": false,
+ "chainlock": false
+ }
+]
+```
+
+*See also:*
+
+* [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.
+
+## GetSpentInfo
+
+:::{note}
+Requires `spentindex` Dash Core command-line/configuration-file parameter to be enabled.
+:::
+
+*Added in Dash Core 0.12.1*
+
+The [`getspentinfo` RPC](../api/remote-procedure-calls-blockchain.md#getspentinfo) returns the txid and index where an output is spent (requires `spentindex` to be enabled).
+
+*Parameter #1---the TXID of the output*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+TXID | string (hex) | Required (exactly 1) | The TXID of the transaction containing the relevant output, encoded as hex in RPC byte order
+
+*Parameter #2---the start block height*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+Index | number (int) | Required (exactly 1) | The block height to begin looking in
+
+*Result---the TXID and spending input index*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`result` | object/null | Required (exactly 1) | Information about the spent output. If output wasn't found or if an error occurred, this will be JSON `null`
+→ `txid` | string | Required (exactly 1) | The output txid
+→ `index` | number | Required (exactly 1) | The spending input index
+
+*Example from Dash Core 0.12.2*
+
+Get the txid and index where an output is spent:
+
+``` bash
+dash-cli getspentinfo \
+ '''
+ {
+ "txid": "0456aaf51a8df21dd47c2a06ede046a5bf7403bcb95d14d1d71b178c189fb933", \
+ "index": 0
+ }
+ '''
+```
+
+Result:
+
+``` json
+{
+ "txid": "14e874421350840e9d43965967c5a989e7d41ad361ef37484ee67d01d433ecfa",
+ "index": 1,
+ "height": 7742
+}
+```
+
+*See also: none*
+
+## GetTxOut
+
+The [`gettxout` RPC](../api/remote-procedure-calls-blockchain.md#gettxout) returns details about an unspent transaction output (UTXO).
+
+*Parameter #1---the TXID of the output to get*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+TXID | string (hex) | Required (exactly 1) | The TXID of the transaction containing the output to get, encoded as hex in RPC byte order
+
+*Parameter #2---the output index number (vout) of the output to get*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+Vout | number (int) | Required (exactly 1) | The output index number (vout) of the output within the transaction; the first output in a transaction is vout 0
+
+*Parameter #3---whether to display unconfirmed outputs from the memory pool*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+Unconfirmed | bool | Optional (0 or 1) | Set to `true` to display unconfirmed outputs from the memory pool; set to `false` (the default) to only display outputs from confirmed transactions
+
+*Result---a description of the output*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`result` | object/null | Required (exactly 1) | Information about the output. If output wasn't found, if it was spent, or if an error occurred, this will be JSON `null`
+→ `bestblock` | string (hex) | Required (exactly 1) | The hash of the header of the block on the local best block chain which includes this transaction. The hash will encoded as hex in RPC byte order. If the transaction is not part of a block, the string will be empty
+→ `confirmations` | number (int) | Required (exactly 1) | The number of confirmations received for the transaction containing this output or `0` if the transaction hasn't been confirmed yet
+→ `value` | number (Dash) | Required (exactly 1) | The amount of Dash spent to this output. May be `0`
+→ `scriptPubKey` | string : object | Optional (0 or 1) | An object with information about the pubkey script. This may be `null` if there was no pubkey script
+→ → `asm` | string | Required (exactly 1) | The pubkey script in decoded form with non-data-pushing opcodes listed
+→ → `hex` | string (hex) | Required (exactly 1) | The pubkey script encoded as hex
+→ → `reqSigs` | number (int) | Optional (0 or 1) | **Deprecated in Dash Core 21.0.0** (returned only if config option -deprecatedrpc=addresses is passed)
The number of signatures required; this is always `1` for P2PK, P2PKH, and P2SH (including P2SH multisig because the redeem script is not available in the pubkey script). It may be greater than 1 for bare multisig. This value will not be returned for `nulldata` or `nonstandard` script types (see the `type` key below)
+→ → `type` | string | Optional (0 or 1) | The type of script. This will be one of the following: • `pubkey` for a P2PK script • `pubkeyhash` for a P2PKH script • `scripthash` for a P2SH script • `multisig` for a bare multisig script • `nulldata` for nulldata scripts • `nonstandard` for unknown scripts
+→ → `address` | string | Optional (0 or 1) | Dash address (only if a well-defined address exists)
+→ → `addresses` | string : array | Optional (0 or 1) | **Deprecated in Dash Core 21.0.0** (returned only if config option -deprecatedrpc=addresses is passed)
The P2PKH or P2SH addresses used in this transaction, or the computed P2PKH address of any pubkeys in this transaction. This array will not be returned for `nulldata` or `nonstandard` script types
+→ → → Address | string | Required (1 or more) | A P2PKH or P2SH address
+→ `coinbase` | bool | Required (exactly 1) | Set to `true` if the transaction output belonged to a coinbase transaction; set to `false` for all other transactions. Coinbase transactions need to have 101 confirmations before their outputs can be spent
+
+*Example from Dash Core 0.15.0*
+
+Get the UTXO from the following transaction from the first output index ("0"),
+searching the memory pool if necessary.
+
+``` bash
+dash-cli -testnet gettxout \
+ e0a06b47f0de6f3851a228d5ac377ac38b495adf04298c43e951e679c5b0aa8f \
+ 0 true
+```
+
+Result:
+
+``` json
+{
+ "bestblock": "000000005651f6d7859793dee07d476a2f2a7338e66bbb41caf4b544c5b0318d",
+ "confirmations": 2,
+ "value": 25.00000000,
+ "scriptPubKey": {
+ "asm": "OP_DUP OP_HASH160 b66266c5017a759817f3bb99e8d9124bf5bb2e74 OP_EQUALVERIFY OP_CHECKSIG",
+ "hex": "76a914b66266c5017a759817f3bb99e8d9124bf5bb2e7488ac",
+ "type": "pubkeyhash",
+ "address": "ycwoiAibTjpwnoCZSX7S4kiB2H8wULw9qo"
+ },
+ "coinbase": false
+}
+```
+
+*See also*
+
+* [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.
+* [GetTransaction](../api/remote-procedure-calls-wallet.md#gettransaction): gets detailed information about an in-wallet transaction.
+
+## GetTxOutProof
+
+The [`gettxoutproof` RPC](../api/remote-procedure-calls-blockchain.md#gettxoutproof) returns a hex-encoded proof that one or more specified transactions were included in a block.
+
+NOTE: By default this function only works when there is an
+unspent output in the UTXO set for this transaction. To make it always work,
+you need to maintain a transaction index, using the `-txindex` command line option, or
+specify the block in which the transaction is included in manually (by block header hash).
+
+*Parameter #1---the transaction hashes to prove*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+TXIDs | array | Required (exactly 1) | A JSON array of txids to filter
+→ `txid` | string | Required (1 or more) | TXIDs of the transactions to generate proof for. All transactions must be in the same block
+
+*Parameter #2---the block to look for txids in*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+Header hash | string | Optional (0 or 1) | If specified, looks for txid in the block with this hash
+
+*Result---serialized, hex-encoded data for the proof*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`result` | string | Required (exactly 1) | A string that is a serialized, hex-encoded data for the proof
+
+*Example from Dash Core 0.12.2*
+
+Get the hex-encoded proof that "txid" was included in block 000000012d774f3c7668f32bc448efeb93b317f312dd863679de3a007d47817f:
+
+``` bash
+dash-cli gettxoutproof \
+ '''
+ [
+ "e0a06b47f0de6f3851a228d5ac377ac38b495adf04298c43e951e679c5b0aa8f"
+ ]
+ ''' \
+ '000000012d774f3c7668f32bc448efeb93b317f312dd863679de3a007d47817f'
+```
+
+Result (wrapped):
+
+``` text
+01000020ed72cc6a7294782a7711d8fa7ef74716ef062dc50bb0820f7eec923801000000\
+aa5d17c5128043803b67c7ab03e4d3ffbc9604b54f877f1c5cf9ed3adeaa19b2cd7ed659\
+f838011d10a70a480200000002033c89c2baecba9fc983c85dcf365c2d9cc93aca1dee2e\
+5ac18124464056542e8faab0c579e651e9438c2904df5a498bc37a37acd528a251386fde\
+f0476ba0e00105
+```
+
+*See also*
+
+* [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.
+* [`merkleblock` message](../reference/p2p-network-data-messages.md#merkleblock): A description of the
+ format used for the proof.
+
+## GetTxOutSetInfo
+
+The [`gettxoutsetinfo` RPC](../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.
+
+*Parameter #1---Selecting UTXO set hash*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+hash_type | string | Optional (0 or 1) | Which UTXO set hash should be calculated. Options: 'hash_serialized_2' (the legacy algorithm), 'muhash', 'none'.
+
+*Result---statistics about the UTXO set*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`result` | object | Required (exactly 1) | Information about the UTXO set
+→ `height` | number (int) | Required (exactly 1) | The height of the local best block chain. A new node with only the hardcoded genesis block will have a height of 0
+→ `bestblock` | string (hex) | Required (exactly 1) | The hash of the header of the highest block on the local best block chain, encoded as hex in RPC byte order
+→ `transactions` | number (int) | Required (exactly 1) | The number of transactions with unspent outputs
+→ `txouts` | number (int) | Required (exactly 1) | The number of unspent transaction outputs
+→ `bogosize` | number (int) | Required (exactly 1) | A meaningless metric for UTXO set size
+→ `hash_serialized_2` | string (hex) | Optional (exactly 1) | The serialized hash (only present if 'hash_serialized_2' hash_type is chosen)
+→ `muhash` | string (hex) | Optional (exactly 1) | A SHA256(SHA256()) The serialized hash (only present if 'muhash' hash_type is chosen).
+→ `disk_size` | number (int) | Required (exactly 1) | The estimated size of the chainstate on disk
+→ `total_amount` | number (Dash) | Required (exactly 1) | The total amount of Dash in the UTXO set
+
+*Example from Dash Core 0.15.0*
+
+``` bash
+dash-cli -testnet gettxoutsetinfo
+```
+
+Result:
+
+``` json
+{
+ "height": 159358,
+ "bestblock": "0000000000a705ef74a1fc134ea1eba49af8eead40b3df1fc4fb40f5940a0d60",
+ "transactions": 187542,
+ "txouts": 366996,
+ "bogosize": 28344374,
+ "hash_serialized_2": "d7326bdc2d9cb7d91580bfd47d6c2972ab1776c2c33c787873a5fd01986c9377",
+ "disk_size": 21513509,
+ "total_amount": 7517185.08574437
+}
+```
+
+*See also*
+
+* [GetBlockChainInfo](../api/remote-procedure-calls-blockchain.md#getblockchaininfo): provides information about the current state of the block chain.
+* [GetMemPoolInfo](../api/remote-procedure-calls-blockchain.md#getmempoolinfo): returns information about the node's current transaction memory pool.
+
+## PreciousBlock
+
+*Added in Dash Core 0.12.3 / Bitcoin Core 0.14.0*
+
+The [`preciousblock` RPC](../api/remote-procedure-calls-blockchain.md#preciousblock) treats a block as if it were received before others with the same work. A later `preciousblock` call can override the effect of an earlier one. The effects of `preciousblock` are not retained across restarts.
+
+*Parameter #1---the block hash*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+Header Hash | string (hex) | Required (exactly 1) | The hash of the block to mark as precious
+
+*Result---`null` or error on failure*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`result` | null | Required (exactly 1) | JSON `null`. The JSON-RPC error field will be set only if you entered an invalid block hash
+
+*Example from Dash Core 0.12.3*
+
+``` bash
+dash-cli preciousblock 00000000034d77e287b63922a94f12e8c4ab9e\
+1d8056060fd51f6153ea5dc757
+```
+
+Result (no output from `dash-cli` because result is set to `null`).
+
+## PruneBlockChain
+
+*Added in Dash Core 0.12.3 / Bitcoin Core 0.14.0*
+
+The [`pruneblockchain` RPC](../api/remote-procedure-calls-blockchain.md#pruneblockchain) prunes the blockchain up to a specified height or timestamp. The `-prune` option needs to be enabled (disabled by default).
+
+*Parameter #1---the block height or timestamp*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+Height | number (int) | Required (exactly 1) | The block height to prune up to. May be set to a particular height, or a unix timestamp to prune blocks whose block time is at least 2 hours older than the provided timestamp
+
+*Result---the height of the last block pruned*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`result` | number (int) | Required (exactly 1) | The height of the last block pruned
+
+*Example from Dash Core 0.12.3*
+
+``` bash
+dash-cli pruneblockchain 413555
+```
+
+Result:
+
+``` text
+413555
+```
+
+*See also*
+
+* [ImportPrunedFunds](../api/remote-procedure-calls-wallet.md#importprunedfunds): imports funds without the need of a rescan. Meant for use with pruned wallets.
+
+## SaveMemPool
+
+The [`savemempool` RPC](../api/remote-procedure-calls-blockchain.md#savemempool) dumps the mempool to disk.
+
+*Parameters: none*
+
+*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:
+
+```json
+{
+ "filename": "/home/phez/.dashcore/testnet3/mempool.dat"
+}
+```
+
+*See also: none*
+
+## VerifyChain
+
+The [`verifychain` RPC](../api/remote-procedure-calls-blockchain.md#verifychain) verifies each entry in the local block chain database.
+
+*Parameter #1---how thoroughly to check each block*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+Check Level | number (int) | Optional (0 or 1) | How thoroughly to check each block, from 0 to 4. Default is the level set with the `-checklevel` command line argument; if that isn't set, the default is `3`. Each higher level includes the tests from the lower levels
Levels are: **0.** Read from disk to ensure the files are accessible **1.** Ensure each block is valid **2.** Make sure undo files can be read from disk and are in a valid format **3.** Test each block undo to ensure it results in correct state **4.** After undoing blocks, reconnect them to ensure they reconnect correctly
+
+*Parameter #2---the number of blocks to check*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+Number Of Blocks | number (int) | Optional (0 or 1) | The number of blocks to verify. Set to `0` to check all blocks. Defaults to the value of the `-checkblocks` command-line argument; if that isn't set, the default is `288`
+
+*Result---verification results*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`result` | bool | Required (exactly 1) | Set to `true` if verified; set to `false` if verification failed for any reason
+
+*Example from Dash Core 0.12.2*
+
+Verify the most recent 400 blocks in the most through way:
+
+``` bash
+dash-cli -testnet verifychain 4 400
+```
+
+Result (took < 1 second on a mobile workstation; it would've taken much longer on mainnet):
+
+``` json
+true
+```
+
+*See also*
+
+* [GetBlockChainInfo](../api/remote-procedure-calls-blockchain.md#getblockchaininfo): provides information about the current state of the block chain.
+* [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.
+
+## VerifyTxOutProof
+
+The [`verifytxoutproof` RPC](../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.
+
+*Parameter #1---The hex-encoded proof generated by gettxoutproof*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`proof` | string | Required | A hex-encoded proof
+
+*Result---txid(s) which the proof commits to*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`result` | string | Required (exactly 1) | The txid(s) which the proof commits to, or empty array if the proof cannot be validated
+
+*Example from Dash Core 0.12.2*
+
+Verify a proof:
+
+``` bash
+dash-cli verifytxoutproof \
+01000020ed72cc6a7294782a7711d8fa7ef74716ef062dc50bb0820f7eec923801000000\
+aa5d17c5128043803b67c7ab03e4d3ffbc9604b54f877f1c5cf9ed3adeaa19b2cd7ed659\
+f838011d10a70a480200000002033c89c2baecba9fc983c85dcf365c2d9cc93aca1dee2e\
+5ac18124464056542e8faab0c579e651e9438c2904df5a498bc37a37acd528a251386fde\
+f0476ba0e00105
+```
+
+Result:
+
+``` json
+[
+"e0a06b47f0de6f3851a228d5ac377ac38b495adf04298c43e951e679c5b0aa8f"
+]
+```
+
+*See also*
+
+* [GetTxOutProof](../api/remote-procedure-calls-blockchain.md#gettxoutproof): returns a hex-encoded proof that one or more specified transactions were included in a block.
+* [`merkleblock` message](../reference/p2p-network-data-messages.md#merkleblock): A description of the format used for the proof.
diff --git a/docs/core/api/remote-procedure-calls-control.md b/docs/core/api/remote-procedure-calls-control.md
new file mode 100644
index 000000000..221582301
--- /dev/null
+++ b/docs/core/api/remote-procedure-calls-control.md
@@ -0,0 +1,374 @@
+```{eval-rst}
+.. meta::
+ :title: Control RPCs
+ :description: A list of all the Control RPCs in Dash.
+```
+
+# Control RPCs
+
+## Debug
+
+The [`debug` RPC](../api/remote-procedure-calls-control.md#debug) changes the debug category from the console.
+
+*Parameter #1---debug category*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+Debug category | string | Required (1 or more) | The debug category to activate. Use a `+` to specify multiple categories. Categories are shown in the [table below](#debug-logging-categories).
Note: No error will be thrown even if the specified category doesn't match any of the above
+
+### Debug logging categories
+
+| Type | Category |
+| - | - |
+| Special | • `0` or `none` - Disables all categories • `1` or `all` - Enables all categories • `dash` - Enables/disables all Dash categories |
+| Standard | `addrman`, `bench`, `cmpctblock`, `coindb`, `estimatefee`, `http`, `i2p`, `ipc`, `leveldb`, `libevent`, `lock`, `mempool`, `mempoolrej`, `net`, `netconn`, `proxy`, `prune`, `qt`, `rand`, `reindex`, `rpc`, `selectcoins`, `tor`, `validation`, `walletdb`, `zmq`|
+| Dash | `chainlocks`, `coinjoin`, `creditpool`, `ehf`, `gobject`, `instantsend`, `llmq`, `llmq-dkg`, `llmq-sigs`, `mnpayments`, `mnsync`, `spork` |
+
+Note: `libevent` logging is configured on startup and cannot be modified by this RPC during runtime.
+
+*Example from Dash Core 20.0.1*
+
+```bash
+dash-cli -testnet debug "net+mempool"
+```
+
+Result:
+
+```text
+Debug mode: net+mempool
+```
+
+*See also*
+
+* [Logging](../api/remote-procedure-calls-control.md#logging): gets and sets the logging configuration
+
+## GetMemoryInfo
+
+*Added in Dash Core 0.12.3 / Bitcoin Core 0.14.0*
+
+The [`getmemoryinfo` RPC](../api/remote-procedure-calls-control.md#getmemoryinfo) returns information about memory usage.
+
+*Parameter #1---mode*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+mode| string | Optional Default: `stats` | *Added in Dash Core 0.15.0*
Determines what kind of information is returned. - `stats` returns general statistics about memory usage in the daemon. - `mallocinfo` returns an XML string describing low-level heap state (only available if compiled with glibc 2.10+).
+
+*Result---information about memory usage*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`result` | object | Required (exactly 1) | An object containing information about memory usage
+→ `locked` | string : object | Required (exactly 1) | An object containing information about locked memory manager
+→→ `used` | number (int) | Required (exactly 1) | Number of bytes used
+→→ `free` | number (int) | Required (exactly 1) | Number of bytes available in current arenas
+→→ `total` | number (int) | Required (exactly 1) | Total number of bytes managed
+→→ `locked` | number (int) | Required (exactly 1) | Amount of bytes that succeeded locking
+→→ `chunks_used` | number (int) | Required (exactly 1) | Number allocated chunks
+→→ `chunks_free` | number (int) | Required (exactly 1) | Number unused chunks
+
+*Example from Dash Core 0.12.3*
+
+```bash
+dash-cli getmemoryinfo
+```
+
+Result:
+
+```json
+{
+ "locked": {
+ "used": 1146240,
+ "free": 426624,
+ "total": 1572864,
+ "locked": 1572864,
+ "chunks_used": 16368,
+ "chunks_free": 7
+ }
+}
+```
+
+*See also*
+
+* [GetMemPoolInfo](../api/remote-procedure-calls-blockchain.md#getmempoolinfo): returns information about the node's current transaction memory pool.
+
+## GetRPCInfo
+
+*Added in Dash Core 18.0.0*
+
+The [`getrpcinfo` RPC](#getrpcinfo) returns details about the RPC server.
+
+*Parameters: none*
+
+*Result---information about the RPC server*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`result` | object | Required (exactly 1) | An object containing information about the RPC server
+→ `active_commands` | array of objects | Required (exactly 1) | An object containing information about active RPC commands
+→→ Active command | object | Optional (0 or more) | Information about a currently active command
+→→→ `method` | number (int) | Required (exactly 1) | Name of the command
+→→→ `duration` | number (int) | Required (exactly 1) | Number of microseconds the command has been active
+
+*Example from Dash Core 18.0.0*
+
+```bash
+dash-cli getrpcinfo
+```
+
+Result:
+
+```json
+{
+ "active_commands": [
+ {
+ "method": "generate",
+ "duration": 5226138
+ },
+ {
+ "method": "getrpcinfo",
+ "duration": 5
+ }
+ ]
+}
+
+```
+
+*See also: none*
+
+## Help
+
+The [`help` RPC](../api/remote-procedure-calls-control.md#help) lists all available public RPC commands, or gets help for the specified RPC. Commands which are unavailable will not be listed, such as wallet RPCs if wallet support is disabled.
+
+*Parameter #1---the name of the RPC to get help for*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+RPC | string | Optional (0 or 1) | The name of the RPC to get help for. If omitted, Dash Core 0.10x will display an alphabetical list of commands; Dash Core 0.11.0 will display a categorized list of commands
+
+*Parameter #2---the name of the subcommand to get help for*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+Sub-command | string | Optional (0 or 1) | The subcommand to get help on. Please note that not all subcommands support this at the moment
+
+*Result---a list of RPCs or detailed help for a specific RPC*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`result` | string | Required (exactly 1) | The help text for the specified RPC or the list of commands. The `dash-cli` command will parse this text and format it as human-readable text
+
+*Example from Dash Core 0.17.0*
+
+Command to get help about the [`help` RPC](../api/remote-procedure-calls-control.md#help):
+
+```bash
+dash-cli -testnet help help
+```
+
+Result:
+
+```text
+help ( "command" "subcommand" )
+
+List all commands, or get help for a specified command.
+
+Arguments:
+1. "command" (string, optional) The command to get help on
+2. "subcommand" (string, optional) The subcommand to get help on. Please note that not all subcommands support this at the moment
+
+Result:
+"text" (string) The help text
+```
+
+*See also*
+
+* The [RPC Quick Reference](../api/remote-procedure-call-quick-reference.md)
+
+## Logging
+
+The [`logging` RPC](../api/remote-procedure-calls-control.md#logging) gets and sets the logging configuration. When called without an argument, returns the list of categories with status that are currently being debug logged or not. When called with arguments, adds or removes categories from debug logging and return the lists above. The arguments are evaluated in order "include", "exclude". If an item is both included and excluded, it will thus end up being excluded.
+
+*Parameter #1---include categories*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`include` | array of strings | Optional (0 or 1) | Enable debugging for these categories
+
+*Parameter #2---exclude categories*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`exclude` | array of strings | Optional (0 or 1) | Enable debugging for these categories
+
+The categories are:
+
+| Type | Category |
+| - | - |
+| Special | • `0` or `none` - Disables all categories • `1` or `all` - Enables all categories • `dash` - Enables/disables all Dash categories |
+| Standard | `addrman`, `bench`, `cmpctblock`, `coindb`, `estimatefee`, `http`, `i2p`, `ipc`, `leveldb`, `libevent`, `lock`, `mempool`, `mempoolrej`, `net`, `netconn`, `proxy`, `prune`, `qt`, `rand`, `reindex`, `rpc`, `selectcoins`, `tor`, `validation`, `walletdb`, `zmq`|
+| Dash | `chainlocks`, `coinjoin`, `creditpool`, `ehf`, `gobject`, `instantsend`, `llmq`, `llmq-dkg`, `llmq-sigs`, `mnpayments`, `mnsync`, `spork` |
+
+*Result---a list of the logging categories that are active*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`result` | object | Required (exactly 1) | A JSON object show a list of the logging categories that are active
+
+*Example from Dash Core 21.1.0*
+
+Include a category in logging
+
+```bash
+dash-cli -testnet logging '["llmq", "chainlocks"]'
+```
+
+Result:
+
+```json
+{
+ "addrman": false,
+ "bench": false,
+ "chainlocks": true,
+ "cmpctblock": false,
+ "coindb": false,
+ "coinjoin": false,
+ "creditpool": false,
+ "ehf": false,
+ "estimatefee": false,
+ "gobject": false,
+ "http": false,
+ "i2p": false,
+ "instantsend": false,
+ "leveldb": false,
+ "libevent": false,
+ "llmq": true,
+ "llmq-dkg": false,
+ "llmq-sigs": false,
+ "lock": false,
+ "mempool": false,
+ "mempoolrej": false,
+ "mnpayments": false,
+ "mnsync": false,
+ "net": false,
+ "netconn": false,
+ "proxy": false,
+ "prune": false,
+ "qt": false,
+ "rand": false,
+ "reindex": false,
+ "rpc": false,
+ "selectcoins": false,
+ "spork": false,
+ "tor": false,
+ "validation": false,
+ "walletdb": false,
+ "zmq": false
+}
+```
+
+Excluding a previously included category (without including any new ones):
+
+```bash
+dash-cli -testnet logging '[]' '["chainlocks"]'
+```
+
+Result:
+
+```json
+{
+ "addrman": false,
+ "bench": false,
+ "chainlocks": false,
+ "cmpctblock": false,
+ "coindb": false,
+ "coinjoin": false,
+ "creditpool": false,
+ "ehf": false,
+ "estimatefee": false,
+ "gobject": false,
+ "http": false,
+ "i2p": false,
+ "instantsend": false,
+ "leveldb": false,
+ "libevent": false,
+ "llmq": true,
+ "llmq-dkg": false,
+ "llmq-sigs": false,
+ "lock": false,
+ "mempool": false,
+ "mempoolrej": false,
+ "mnpayments": false,
+ "mnsync": false,
+ "net": false,
+ "netconn": false,
+ "proxy": false,
+ "prune": false,
+ "qt": false,
+ "rand": false,
+ "reindex": false,
+ "rpc": false,
+ "selectcoins": false,
+ "spork": false,
+ "tor": false,
+ "validation": false,
+ "walletdb": false,
+ "zmq": false
+}
+```
+
+*See also*
+
+* [Debug](../api/remote-procedure-calls-control.md#debug): changes the debug category from the console.
+
+## Stop
+
+The [`stop` RPC](../api/remote-procedure-calls-control.md#stop) safely shuts down the Dash Core server.
+
+*Parameters: none*
+
+*Result---the server is safely shut down*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`result` | string | Required (exactly 1) | The string \Dash Core server stopping\""
+
+*Example from Dash Core 0.12.2*
+
+```bash
+dash-cli -testnet stop
+```
+
+Result:
+
+```text
+Dash Core server stopping
+```
+
+*See also: none*
+
+## Uptime
+
+The [`uptime` RPC](../api/remote-procedure-calls-control.md#uptime) returns the total uptime of the server.
+
+*Parameters: none*
+
+*Result*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`result` | number (int) | Required (exactly 1) | The number of seconds that the server has been running
+
+*Example from Dash Core 0.15.0*
+
+```bash
+dash-cli -testnet uptime
+```
+
+Result:
+
+```text
+5500
+```
+
+*See also: none*
diff --git a/docs/core/api/remote-procedure-calls-dash.md b/docs/core/api/remote-procedure-calls-dash.md
new file mode 100644
index 000000000..acafd98b9
--- /dev/null
+++ b/docs/core/api/remote-procedure-calls-dash.md
@@ -0,0 +1,2056 @@
+```{eval-rst}
+.. meta::
+ :title: Dash RPCs
+ :description: A list of remote procedure calls that classify under Dash RPCs.
+```
+
+# 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.
+
+*Parameters: none*
+
+*Result---information about the governance system*
+
+| Name | Type | Presence | Description |
+| ------------------------------- | ------------ | ----------------------- | ----------- |
+| `result` | object | Required (exactly 1) | Information about the governance system |
+| → `governanceminquorum` | number (int) | Required (exactly 1) | The absolute minimum number of votes needed to trigger a governance action |
+| → `proposalfee` | number (int) | Required (exactly 1) | The collateral transaction fee which must be paid to create a proposal in Dash |
+| → `superblockcycle` | number (int) | Required (exactly 1) | The number of blocks between superblocks |
+| → `superblockmaturitywindow` | number (int) | Required (exactly 1) | The superblock trigger creation window |
+| → `lastsuperblock` | number (int) | Required (exactly 1) | The block number of the last superblock |
+| → `nextsuperblock` | number (int) | Required (exactly 1) | The block number of the next superblock |
+| → `fundingthreshold` | number (int) | Required (exactly 1) | **Added in Dash Core 20.0.0** The number of absolute yes votes required for a proposal to be passing |
+| → `governancebudget` | number (real) | Required (exactly 1) | **Added in Dash Core 20.0.0** The governance budget for the next superblock in DASH |
+
+*Example from Dash Core 20.0.0*
+
+``` bash
+dash-cli -testnet getgovernanceinfo
+```
+
+Result:
+
+``` json
+{
+ "governanceminquorum": 1,
+ "proposalfee": 1.00000000,
+ "superblockcycle": 24,
+ "superblockmaturitywindow": 8,
+ "lastsuperblock": 916632,
+ "nextsuperblock": 916656,
+ "fundingthreshold": 21,
+ "governancebudget": 44.60797584
+}
+```
+
+*See also:*
+
+* [GObject](#gobject): provides a set of commands for managing governance objects and displaying information about them.
+
+****
+
+## GetCoinJoinInfo
+
+The [`getcoinjoininfo` RPC](#getcoinjoininfo) returns an object containing an information about CoinJoin settings and state (previously named `getprivatesendinfo` prior to Dash Core 0.17.0).
+
+*Parameters: none*
+
+*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 |
+| → `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) | 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 |
+| → `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 |
+
+*Example from Dash Core 0.17.0 (regular node)*
+
+``` bash
+dash-cli -testnet getcoinjoininfo
+```
+
+Result:
+
+``` json
+{
+ "enabled": true,
+ "multisession": true,
+ "max_sessions": 4,
+ "max_rounds": 16,
+ "max_amount": 2000,
+ "denoms_goal": 50,
+ "denoms_hardcap": 300,
+ "queue_size": 3,
+ "running": true,
+ "sessions": [
+ {
+ "protxhash": "0515c9a411df0f1bd9940d9a2e4f6d739c29c52fc8c045c383f1ff6acc87c7b7",
+ "outpoint": "0a6520a6ef523de71fd0ca70441e1fd648483f094442d986b24e2c9391be61cf-29",
+ "service": "54.170.119.85:26216",
+ "denomination": 10.00010000,
+ "state": "QUEUE",
+ "entries_count": 0
+ }
+ ],
+ "keys_left": 998,
+ "warnings": ""
+}
+```
+
+*See also: none*
+
+## GetSuperblockBudget
+
+The [`getsuperblockbudget` RPC](#getsuperblockbudget) returns the absolute maximum sum of superblock payments allowed.
+
+*Parameter #1---block index*
+
+| Name | Type | Presence | Description |
+| ----- | ------------ | ----------------------- | -------------------- |
+| index | number (int) | Required (exactly 1) | The superblock index |
+
+*Result---maximum sum of superblock payments*
+
+| Name | Type | Presence | Description |
+| -------- | ------------ | ----------------------- | ---------------------------------------------------------------- |
+| `result` | number (int) | Required (exactly 1) | The absolute maximum sum of superblock payments allowed, in DASH |
+
+*Example from Dash Core 0.12.2*
+
+``` bash
+dash-cli -testnet getsuperblockbudget 7392
+```
+
+Result:
+
+``` text
+367.20
+```
+
+*See also:*
+
+* [GetGovernanceInfo](#getgovernanceinfo): returns an object containing governance parameters.
+
+## GObject
+
+The [`gobject` RPC](#gobject) provides a set of commands for managing governance objects and displaying information about them.
+
+### GObject Check
+
+The `gobject check` RPC validates governance object data (*proposals only*).
+
+*Parameter #1---object data (hex)*
+
+| Name | Type | Presence | Description |
+| ---------- | ------------ | ----------------------- | ---------------------------------------------- |
+| `data-hex` | string (hex) | Required (exactly 1) | The data (hex) of a governance proposal object |
+
+*Result---governance object status*
+
+| Name | Type | Presence | Description |
+| -------------------- | ------ | ----------------------- | ------------------------------- |
+| Result | object | Required (exactly 1) | Object containing status |
+| → `Object Status` | string | Required (exactly 1) | Status of the governance object |
+
+*Example from Dash Core 0.14.0*
+
+``` bash
+dash-cli -testnet gobject check 7b22656e645f65706f6368223a3135363034353730\
+35352c226e616d65223a2274657374222c227061796d656e745f61646472657373223a22796\
+4354b4d52457333474c4d65366d544a597233597248316a75774e777246436642222c227061\
+796d656e745f616d6f756e74223a352c2273746172745f65706f6368223a313536303435333\
+439302c2274797065223a312c2275726c223a22687474703a2f2f746573742e636f6d227d
+```
+
+Result:
+
+``` json
+{
+ "Object status": "OK"
+}
+```
+
+### GObject Count
+
+The `gobject count` RPC returns the count of governance objects and votes.
+
+*Parameter #1---mode*
+
+| Name | Type | Presence | Description |
+| ------ | ------ | ----------------------- | ------------------------------------------------------------------------------------------------------------------ |
+| `mode` | string | Optional (exactly 1) | Result return format: `json` (default) `all` - Default before Dash Core 0.12.3 (for backwards compatibility) |
+
+**Command Mode - `json`**
+
+*Result---count of governance objects and votes*
+
+| Name | Type | Presence | Description |
+| -------------------- | ------ | ----------------------- | --------------------------------------- |
+| Result | object | Required (exactly 1) | Information about the governance object |
+| → `objects_total` | int | Required (exactly 1) | Total object count |
+| → `proposals` | int | Required (exactly 1) | Proposal count |
+| → `triggers` | int | Required (exactly 1) | Trigger count |
+| → `other` | int | Required (exactly 1) | Non-proposal/trigger count |
+| → `erased` | int | Required (exactly 1) | Erased count |
+| → `votes` | int | Required (exactly 1) | Vote count |
+
+_Example from Dash Core 0.14.0 (mode: `json`/default)_
+
+``` bash
+dash-cli -testnet gobject count
+```
+
+Result (wrapped):
+
+``` json
+{
+ "objects_total": 3,
+ "proposals": 3,
+ "triggers": 0,
+ "other": 0,
+ "erased": 4,
+ "votes": 18
+}
+```
+
+**Command Mode - `all`**
+
+*Result---count of governance objects and votes*
+
+| Name | Type | Presence | Description |
+| -------- | ------ | ----------------------- | ----------------------------------------- |
+| `result` | string | Required (exactly 1) | The count of governance objects and votes |
+
+_Example from Dash Core 0.14.0 (mode: `all`)_
+
+``` bash
+dash-cli -testnet gobject count all
+```
+
+Result (wrapped):
+
+``` text
+Governance Objects: 177 (Proposals: 177, Triggers: 0, Other: 0; Erased: 5), \
+Votes: 9680
+```
+
+### GObject Deserialize
+
+The `gobject deserialize` RPC deserializes a governance object from a hex string to JSON.
+
+*Parameter #1---object data (hex)*
+
+| Name | Type | Presence | Description |
+| ---------- | ------------ | ----------------------- | ------------------------------------- |
+| `hex_data` | string (hex) | Required (exactly 1) | The data (hex) of a governance object |
+
+**Results**
+
+The result output varies depending on the type of governance object being deserialized. Examples are shown below for both proposal and trigger object types.
+
+**Result - Proposal**
+
+*Result---governance proposal object deserialized to JSON*
+
+| Name | Type | Presence | Description |
+| ------------------------ | ------ | ----------------------- | --------------------------------------------------------------------------------------------------------- |
+| Result | object | Required (exactly 1) | Array of governance objects |
+| → → `end_epoch` | string | Required (exactly 1) | Governance object info as string |
+| → → `name` | string | Required (exactly 1) | Proposal name |
+| → → `payment_address` | string | Required (exactly 1) | Proposal payment address. ***Support for P2SH addresses (e.g. multisig) added in Dash Core v18.0.0.*** |
+| → → `payment_amount` | string | Required (exactly 1) | Proposal payment amount |
+| → → `start_epoch` | int | Required (exactly 1) | Proposal start |
+| → → `type` | int | Required (exactly 1) | Object type |
+| → → `url` | string | Required (exactly 1) | Proposal URL |
+
+*Example from Dash Core 0.14.0*
+
+``` bash
+dash-cli -testnet gobject deserialize 7b22656e645f65706f6368223a313536303435\
+373035352c226e616d65223a2274657374222c227061796d656e745f61646472657373223a22\
+7964354b4d52457333474c4d65366d544a597233597248316a75774e777246436642222c2270\
+61796d656e745f616d6f756e74223a352c2273746172745f65706f6368223a31353630343533\
+3439302c2274797065223a312c2275726c223a22687474703a2f2f746573742e636f6d227d
+```
+
+Result:
+
+``` json
+{
+ "end_epoch": 1560457055,
+ "name": "test",
+ "payment_address": "yd5KMREs3GLMe6mTJYr3YrH1juwNwrFCfB",
+ "payment_amount": 5,
+ "start_epoch": 1560453490,
+ "type": 1,
+ "url": "http://test.com"
+}
+```
+
+**Result - Trigger**
+
+*Result---governance trigger object deserialized to JSON*
+
+| Name | Type | Presence | Description |
+| --------------------------- | ------------ | ----------------------- | -------------------------------- |
+| Result | object | Required (exactly 1) | Array of governance objects |
+| → → `event_block_height` | int | Required (exactly 1) | Block height to activate trigger |
+| → → `payment_addresses` | string | Required (exactly 1) | Proposal payment address |
+| → → `payment_amounts` | string | Required (exactly 1) | Proposal payment amount |
+| → → `proposal_hashes` | string (hex) | Required (exactly 1) | Proposal hashes |
+| → → `type` | int | Required (exactly 1) | Object type |
+
+*Example from Dash Core 0.14.0*
+
+``` bash
+dash-cli -testnet gobject deserialize 7b226576656e745f626c6f636b5f68656967687\
+4223a203131393539322c20227061796d656e745f616464726573736573223a20227954686d6e\
+75565a316765516e79776f456147627079333362695435473573587a62222c20227061796d656\
+e745f616d6f756e7473223a2022312e3335393631393331222c202270726f706f73616c5f6861\
+73686573223a20223836333966636464653131626432373032373663396330333564366435346\
+3653962393138323465366466373532636164376464646331616532663734386435222c202274\
+797065223a20327d
+```
+
+Result (wrapped):
+
+``` json
+{
+ "event_block_height": 119592,
+ "payment_addresses": "yThmnuVZ1geQnywoEaGbpy33biT5G5sXzb",
+ "payment_amounts": "1.35961931",
+ "proposal_hashes": "8639fcdde11bd270276c9c035d6d54ce9b91824e6df752cad7dddc1ae2f748d5",
+ "type": 2
+}
+```
+
+### GObject Diff
+
+The `gobject diff` RPC Lists governance objects differences since last diff.
+
+*Parameter #1---signal*
+
+| Name | Type | Presence | Description |
+| -------- | ------ | ----------------------- | ------------------------------------------------------------------------------------------------------------------- |
+| `signal` | string | Optional (exactly 1) | Type of governance object signal: • `valid` • `funding` • `delete` • `endorsed` • `all` (*DEFAULT*) |
+
+*Parameter #2---type*
+
+| Name | Type | Presence | Description |
+| ------ | ------ | ----------------------- | ------------------------------------------------------------------------------------------ |
+| `type` | string | Optional (exactly 1) | Type of governance object signal: • `proposals` • `triggers` • `all` (*DEFAULT*) |
+
+*Result---governance objects*
+
+| Name | Type | Presence | Description |
+| -------------------------- | ------------ | ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| Result | object | Required (exactly 1) | Information about the governance object |
+| → Governance Object(s) | object | Required (1 or more) | Key: Governance object hash Values: Governance object details |
+| → → `DataHex` | string (hex) | Required (exactly 1) | Governance object info as hex string |
+| → → `DataString` | string | Required (exactly 1) | Governance object info as string |
+| → → `Hash` | string (hex) | Required (exactly 1) | Hash of this governance object |
+| → → `CollateralHash` | string (hex) | Required (exactly 1) | Hash of the collateral payment transaction |
+| → → `ObjectType` | number | Required (exactly 1) | Object types: `1` - Unknown `2` - Proposal `3` - Trigger |
+| → → `CreationTime` | number | Required (exactly 1) | Object creation time as Unix epoch time |
+| → → `SigningMasternode` | string (hex) | Optional (0 or 1) | Signing masternode's vin (only present in triggers) |
+| → → `AbsoluteYesCount` | number | Required (exactly 1) | Number of `Yes` votes minus number of `No` votes |
+| → → `YesCount` | number | Required (exactly 1) | Number of `Yes` votes |
+| → → `NoCount` | number | Required (exactly 1) | Number of `No` votes |
+| → → `AbstainCount` | number | Required (exactly 1) | Number of `Abstain` votes |
+| → `fLocalValidity` | boolean | Required (exactly 1) | Valid by the blockchain |
+| → `IsValidReason` | string | Required (exactly 1) | `fLocalValidity` error result. Empty if no error returned. |
+| → `fCachedValid` | boolean | Required (exactly 1) | Minimum network support has been reached flagging this object as a valid and understood governance object (e.g, the serialized data is correct format, etc) |
+| → `fCachedFunding` | boolean | Required (exactly 1) | Minimum network support has been reached for this object to be funded (doesn't mean it will be for sure though) |
+| → `fCachedDelete` | boolean | Required (exactly 1) | Minimum network support has been reached saying this object should be deleted from the system entirely |
+| → `fCachedEndorsed` | boolean | Required (exactly 1) | Minimum network support has been reached flagging this object as endorsed |
+
+*Example from Dash Core 0.12.2*
+
+``` bash
+dash-cli -testnet gobject diff all all
+```
+
+Result (truncated):
+
+``` json
+{
+ "17c2bd32005c5168a52f9b5caa74d875ee8a6867a6109f36923887ef6c36b301": {
+ "DataHex": "5b5b2270726f706f73616c222c7b22656e645f65706f6368223a2231353037343533353731222c226e616d65223a227465737470726f706f73616c5f2d5f6162636465666768696a6b6c6d6e6f707172737475767778797a3031323334353637383931353037323634343939222c227061796d656e745f61646472657373223a2279697355653636445352487048504233514245426764574746637068435933626234222c227061796d656e745f616d6f756e74223a2232222c2273746172745f65706f6368223a2231353037323634343939222c2274797065223a312c2275726c223a2268747470733a2f2f7777772e6461736863656e7472616c2e6f72672f702f746573745f70726f706f73616c5f31353037323634343939227d5d5d",
+ "DataString": "[[\"proposal\",{\"end_epoch\":\"1507453571\",\"name\":\"testproposal\",\"payment_address\":\"yisUe66DSRHpHPB3QBEBgdWGFcphCY3bb4\",\"payment_amount\":\"2\",\"start_epoch\":\"1507264499\",\"type\":1,\"url\":\"https://www.dashcentral.org/p/test_proposal_1507264499\"}]]",
+ "Hash": "17c2bd32005c5168a52f9b5caa74d875ee8a6867a6109f36923887ef6c36b301",
+ "CollateralHash": "a25c44b57931afd74530ce39741f91456446a8fd794d2f1c58c42d6f492647ad",
+ "ObjectType": 1,
+ "CreationTime": 1507264499,
+ "AbsoluteYesCount": 0,
+ "YesCount": 0,
+ "NoCount": 0,
+ "AbstainCount": 0,
+ "fBlockchainValidity": true,
+ "IsValidReason": "",
+ "fCachedValid": true,
+ "fCachedFunding": false,
+ "fCachedDelete": false,
+ "fCachedEndorsed": false
+ }
+}
+```
+
+### GObject Get
+
+The `gobject get` RPC returns a governance object by hash.
+
+*Parameter #1---object hash*
+
+| Name | Type | Presence | Description |
+| ----------------- | ------------ | ----------------------- | ------------------------------- |
+| `governance-hash` | string (hex) | Required (exactly 1) | The hash of a governance object |
+
+*Result---governance object details*
+
+| Name | Type | Presence | Description |
+| ------------------------- | ------------ | ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| Result | object | Required (exactly 1) | Information about the governance object |
+| → `DataHex` | string (hex) | Required (exactly 1) | Governance object info as hex string |
+| → `DataString` | string | Required (exactly 1) | Governance object info as string |
+| → `Hash` | string (hex) | Required (exactly 1) | Hash of this governance object |
+| → `CollateralHash` | string (hex) | Required (exactly 1) | Hash of the collateral payment transaction |
+| → `ObjectType` | number | Required (exactly 1) | Object types: `1` - Unknown `2` - Proposal `3` - Trigger |
+| → `CreationTime` | number | Required (exactly 1) | Object creation time as Unix epoch time |
+| → `FundingResult` | object | Required (exactly 1) | Funding vote details |
+| → → `AbsoluteYesCount` | number | Required (exactly 1) | Number of `Yes` votes minus number of `No` votes |
+| → → `YesCount` | number | Required (exactly 1) | Number of `Yes` votes |
+| → → `NoCount` | number | Required (exactly 1) | Number of `No` votes |
+| → → `AbstainCount` | number | Required (exactly 1) | Number of `Abstain` votes |
+| → `ValidResult` | object | Required (exactly 1) | Object validity vote details |
+| → → `AbsoluteYesCount` | number | Required (exactly 1) | Number of `Yes` votes minus number of `No` votes |
+| → → `YesCount` | number | Required (exactly 1) | Number of `Yes` votes |
+| → → `NoCount` | number | Required (exactly 1) | Number of `No` votes |
+| → → `AbstainCount` | number | Required (exactly 1) | Number of `Abstain` votes |
+| → `DeleteResult` | object | Required (exactly 1) | Delete vote details |
+| → → `AbsoluteYesCount` | number | Required (exactly 1) | Number of `Yes` votes minus number of `No` votes |
+| → → `YesCount` | number | Required (exactly 1) | Number of `Yes` votes |
+| → → `NoCount` | number | Required (exactly 1) | Number of `No` votes |
+| → → `AbstainCount` | number | Required (exactly 1) | Number of `Abstain` votes |
+| → `EndorsedResult` | object | Required (exactly 1) | Endorsed vote details |
+| → → `AbsoluteYesCount` | number | Required (exactly 1) | Number of `Yes` votes minus number of `No` votes |
+| → → `YesCount` | number | Required (exactly 1) | Number of `Yes` votes |
+| → → `NoCount` | number | Required (exactly 1) | Number of `No` votes |
+| → → `AbstainCount` | number | Required (exactly 1) | Number of `Abstain` votes |
+| → `fLocalValidity` | boolean | Required (exactly 1) | Valid by the blockchain |
+| → `IsValidReason` | string | Required (exactly 1) | `fLocalValidity` error result. Empty if no error returned. |
+| → `fCachedValid` | boolean | Required (exactly 1) | Minimum network support has been reached flagging this object as a valid and understood governance object (e.g, the serialized data is correct format, etc) |
+| → `fCachedFunding` | boolean | Required (exactly 1) | Minimum network support has been reached for this object to be funded (doesn't mean it will be for sure though) |
+| → `fCachedDelete` | boolean | Required (exactly 1) | Minimum network support has been reached saying this object should be deleted from the system entirely |
+| → `fCachedEndorsed` | boolean | Required (exactly 1) | Minimum network support has been reached flagging this object as endorsed |
+
+*Example from Dash Core 0.12.2*
+
+``` bash
+dash-cli -testnet gobject get \
+ 42253a7bec554b97a65d2889e6cb9a1cf308b3d47a778c704bf9cdc1fe1bf6ff
+```
+
+Result (wrapped):
+
+``` json
+{
+ "DataHex": "5b5b2270726f706f73616c222c7b22656e645f65706f6368223a2231353037343339353130222c226e616d65223a227465737470726f706f73616c5f2d5f6162636465666768696a6b6c6d6e6f707172737475767778797a3031323334353637383931353037323530343338222c227061796d656e745f61646472657373223a22795668577955345933756456784d5234464b3333556741534a41436831436835516a222c227061796d656e745f616d6f756e74223a2232222c2273746172745f65706f6368223a2231353037323530343338222c2274797065223a312c2275726c223a2268747470733a2f2f7777772e6461736863656e7472616c2e6f72672f702f746573745f70726f706f73616c5f31353037323530343338227d5d5d",
+ "DataString": "[[\"proposal\",{\"end_epoch\":\"1507439510\",\"name\":\"testproposal_-_abcdefghijklmnopqrstuvwxyz01234567891507250438\",\"payment_address\":\"yVhWyU4Y3udVxMR4FK33UgASJACh1Ch5Qj\",\"payment_amount\":\"2\",\"start_epoch\":\"1507250438\",\"type\":1,\"url\":\"https://www.dashcentral.org/p/test_proposal_1507250438\"}]]",
+ "Hash": "42253a7bec554b97a65d2889e6cb9a1cf308b3d47a778c704bf9cdc1fe1bf6ff",
+ "CollateralHash": "cb09bd0310c0a67cde9387ad4d8908a7ad9f5d89c5afd58e9332b8bd26a646c7",
+ "ObjectType": 1,
+ "CreationTime": 1507246694,
+ "FundingResult": {
+ "AbsoluteYesCount": 0,
+ "YesCount": 0,
+ "NoCount": 0,
+ "AbstainCount": 0
+ },
+ "ValidResult": {
+ "AbsoluteYesCount": 0,
+ "YesCount": 0,
+ "NoCount": 0,
+ "AbstainCount": 0
+ },
+ "DeleteResult": {
+ "AbsoluteYesCount": 31,
+ "YesCount": 31,
+ "NoCount": 0,
+ "AbstainCount": 0
+ },
+ "EndorsedResult": {
+ "AbsoluteYesCount": 0,
+ "YesCount": 0,
+ "NoCount": 0,
+ "AbstainCount": 0
+ },
+ "fLocalValidity": true,
+ "IsValidReason": "",
+ "fCachedValid": true,
+ "fCachedFunding": false,
+ "fCachedDelete": false,
+ "fCachedEndorsed": false
+}
+```
+
+### GObject Getcurrentvotes
+
+The `gobject getcurrentvotes` RPC gets only current (tallying) votes for a governance object hash (does not include old votes).
+
+*Parameter #1---object hash*
+
+| Name | Type | Presence | Description |
+| ----------------- | ------------ | ----------------------- | ------------------------------- |
+| `governance-hash` | string (hex) | Required (exactly 1) | The hash of a governance object |
+
+*Parameter #2---transaction ID*
+
+| Name | Type | Presence | Description |
+| ------ | ------ | -------------------- | ------------------------------------------------ |
+| `txid` | string | Optional (0 or 1) | The transaction ID of the masternode collateral. |
+
+*Parameter #3---output index*
+
+| Name | Type | Presence | Description |
+| ------ | ------ | -------------------- | -------------------------------------------------------------------- |
+| `vout` | string | Optional (0 or 1) | Masternode collateral output index. This is required if txid present |
+
+*Result---votes for specified governance*
+
+| Name | Type | Presence | Description |
+| -------------- | ------ | ----------------------- | ----------------------------------------------------------------------------------------------------------------------- |
+| Result | object | Required (exactly 1) | The governance object votes |
+| → Vote Info | string | Required (1 or more) | Key: vote-hash
Value: vinMasternode, time, outcome, vote signal, and vote weight (1 vote / 1000 DASH collateral) |
+
+*Example from Dash Core 19.0.0*
+
+``` bash
+dash-cli -testnet gobject getcurrentvotes 78941af577f639ac94440e4855a1ed8f\
+ 696f1506d1c0bed4f4b68f05be26d3ca
+```
+
+Result (truncated):
+
+``` json
+{
+ "174aaba65982d25a23f437e2a66ec3836146ba7b7ce5b3fe2d5476907f7079d9": "2eab488e3a7b030303de0d18e357ce17a9fc6b8876705d61076bbe923b2e5fc8-1:1509354047:YES:DELETE:1",
+ "444d4d871ec35479804f060c733f516908382642ec2dfce6044a59fcadfdcd60": "18e496fe85b61ac9a5fcaec1ef683c7e3fc9bce4a83c883608427ecfb1002fca-1:1508866932:YES:FUNDING:4",
+ "d49a472c62e9d8105931829fc50ef6c6ce04a230507646ee0eaa615e863ef3a0": "18e496fe85b61ac9a5fcaec1ef683c7e3fc9bce4a83c883608427ecfb1002fca-1:1509117071:YES:DELETE:1",
+ "78442507441d4524d2493b8568d130415c1eb394adb2fe38d6ffeb199115bc5d": "3df7fb192e21c34da99bdd10c34e58ecaf3f3c37d6b2289f0ffedba5050188cc-1:1509312524:YES:DELETE:4",
+ "aa4dc9d3b9e74e8c1ffc725b737d07f8a32e43c64907e4bea19e64a86135f08a": "af9f5646ace92f76b3a01b0abe08716a0a7ded64074c2d2e712c93174b9013d1-1:1508866932:YES:FUNDING:1",
+}
+```
+
+### GObject List
+
+The `gobject list` RPC Lists governance objects (can be filtered by signal and/or object type).
+
+*Parameter #1---signal*
+
+| Name | Type | Presence | Description |
+| -------- | ------ | ----------------------- | ------------------------------------------------------------------------------------------------------------------- |
+| `signal` | string | Optional (exactly 1) | Type of governance object signal: • `valid` • `funding` • `delete` • `endorsed` • `all` (*DEFAULT*) |
+
+*Parameter #2---type*
+
+| Name | Type | Presence | Description |
+| ------ | ------ | ----------------------- | ------------------------------------------------------------------------------------------ |
+| `type` | string | Optional (exactly 1) | Type of governance object signal: • `proposals` • `triggers` • `all` (*DEFAULT*) |
+
+*Result---governance objects*
+
+| Name | Type | Presence | Description |
+| -------------------------- | ------------ | ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| Result | object | Required (exactly 1) | Information about the governance object |
+| → Governance Object(s) | object | Required (1 or more) | Key: Governance object hash Values: Governance object details |
+| → → `DataHex` | string (hex) | Required (exactly 1) | Governance object info as hex string |
+| → → `DataString` | string | Required (exactly 1) | Governance object info as string |
+| → → `Hash` | string (hex) | Required (exactly 1) | Hash of this governance object |
+| → → `CollateralHash` | string (hex) | Required (exactly 1) | Hash of the collateral payment transaction |
+| → → `ObjectType` | number | Required (exactly 1) | Object types: `1` - Unknown `2` - Proposal `3` - Trigger |
+| → → `CreationTime` | number | Required (exactly 1) | Object creation time as Unix epoch time |
+| → → `SigningMasternode` | string (hex) | Optional (0 or 1) | Signing masternode's vin (only present in triggers) |
+| → → `AbsoluteYesCount` | number | Required (exactly 1) | Number of `Yes` votes minus number of `No` votes |
+| → → `YesCount` | number | Required (exactly 1) | Number of `Yes` votes |
+| → → `NoCount` | number | Required (exactly 1) | Number of `No` votes |
+| → → `AbstainCount` | number | Required (exactly 1) | Number of `Abstain` votes |
+| → `fLocalValidity` | boolean | Required (exactly 1) | Valid by the blockchain |
+| → `IsValidReason` | string | Required (exactly 1) | `fLocalValidity` error result. Empty if no error returned. |
+| → `fCachedValid` | boolean | Required (exactly 1) | Minimum network support has been reached flagging this object as a valid and understood governance object (e.g, the serialized data is correct format, etc) |
+| → `fCachedFunding` | boolean | Required (exactly 1) | Minimum network support has been reached for this object to be funded (doesn't mean it will be for sure though) |
+| → `fCachedDelete` | boolean | Required (exactly 1) | Minimum network support has been reached saying this object should be deleted from the system entirely |
+| → `fCachedEndorsed` | boolean | Required (exactly 1) | Minimum network support has been reached flagging this object as endorsed |
+
+*Example from Dash Core 0.12.2*
+
+``` bash
+dash-cli -testnet gobject list all proposals
+```
+
+Result (truncated):
+
+``` json
+{
+ "b370fa1afd61aca9aa879abea3087e29656a670478f281d4196efb4e7e893ffe": {
+ "DataHex": "5b5b2270726f706f73616c222c7b22656e645f65706f6368223a2231353037343430303338222c226e616d65223a227465737470726f706f73616c5f2d5f6162636465666768696a6b6c6d6e6f707172737475767778797a3031323334353637383931353037323530393636222c227061796d656e745f61646472657373223a2279544c636f506d4e315963654432534345474d6b6e34395753565a4277626f646e6e222c227061796d656e745f616d6f756e74223a2232222c2273746172745f65706f6368223a2231353037323530393636222c2274797065223a312c2275726c223a2268747470733a2f2f7777772e6461736863656e7472616c2e6f72672f702f746573745f70726f706f73616c5f31353037323530393636227d5d5d",
+ "DataString": "[[\"proposal\",{\"end_epoch\":\"1507440038\",\"name\":\"testproposal_-_abcdefghijklmnopqrstuvwxyz01234567891507250966\",\"payment_address\":\"yTLcoPmN1YceD2SCEGMkn49WSVZBwbodnn\",\"payment_amount\":\"2\",\"start_epoch\":\"1507250966\",\"type\":1,\"url\":\"https://www.dashcentral.org/p/test_proposal_1507250966\"}]]",
+ "Hash": "b370fa1afd61aca9aa879abea3087e29656a670478f281d4196efb4e7e893ffe",
+ "CollateralHash": "a51ea89c14735f8b5df37cd846b3561494cc616d4a741e4ef83b368d45c960ba",
+ "ObjectType": 1,
+ "CreationTime": 1507250966,
+ "AbsoluteYesCount": 0,
+ "YesCount": 0,
+ "NoCount": 0,
+ "AbstainCount": 0,
+ "fBlockchainValidity": true,
+ "IsValidReason": "",
+ "fCachedValid": true,
+ "fCachedFunding": false,
+ "fCachedDelete": false,
+ "fCachedEndorsed": false
+ },
+ "906ae4dbd285e1025832ac9b3160073ecbfeef094d34cf81b3d797a349c720ff": {
+ "DataHex": "5b5b2270726f706f73616c222c7b22656e645f65706f6368223a2231353037343534383935222c226e616d65223a227465737470726f706f73616c5f2d5f6162636465666768696a6b6c6d6e6f707172737475767778797a3031323334353637383931353037323635383233222c227061796d656e745f61646472657373223a2279664e68484c4c695936577a5a646a51766137324a64395134313468516578514c68222c227061796d656e745f616d6f756e74223a2232222c2273746172745f65706f6368223a2231353037323635383233222c2274797065223a312c2275726c223a2268747470733a2f2f7777772e6461736863656e7472616c2e6f72672f702f746573745f70726f706f73616c5f31353037323635383233227d5d5d",
+ "DataString": "[[\"proposal\",{\"end_epoch\":\"1507454895\",\"name\":\"testproposal_-_abcdefghijklmnopqrstuvwxyz01234567891507265823\",\"payment_address\":\"yfNhHLLiY6WzZdjQva72Jd9Q414hQexQLh\",\"payment_amount\":\"2\",\"start_epoch\":\"1507265823\",\"type\":1,\"url\":\"https://www.dashcentral.org/p/test_proposal_1507265823\"}]]",
+ "Hash": "906ae4dbd285e1025832ac9b3160073ecbfeef094d34cf81b3d797a349c720ff",
+ "CollateralHash": "1707470c4372ba048b72945365b4bb71afc8a986e0755c1f1e8a37bba21fde83",
+ "ObjectType": 1,
+ "CreationTime": 1507265823,
+ "AbsoluteYesCount": 0,
+ "YesCount": 0,
+ "NoCount": 0,
+ "AbstainCount": 0,
+ "fBlockchainValidity": true,
+ "IsValidReason": "",
+ "fCachedValid": true,
+ "fCachedFunding": false,
+ "fCachedDelete": false,
+ "fCachedEndorsed": false
+ }
+}
+```
+
+```{eval-rst}
+.. _api-rpc-dash-gobject-prepare:
+```
+
+### GObject Prepare
+
+The `gobject prepare` RPC prepares a governance object by signing and creating a collateral transaction. Dash Core v18.0.0 added support for directing proposal payouts to P2SH addresses such as multisig.
+
+*Parameter #1---parent hash*
+
+| Name | Type | Presence | Description |
+| ------------- | ------------ | ----------------------- | ---------------------------------------------------------------------- |
+| `parent-hash` | string (hex) | Required (exactly 1) | Hash of the parent object. Usually the root node which has a hash of 0 |
+
+*Parameter #2---revision*
+
+| Name | Type | Presence | Description |
+| ---------- | ---- | ----------------------- | ---------------------- |
+| `revision` | int | Required (exactly 1) | Object revision number |
+
+*Parameter #3---time*
+
+| Name | Type | Presence | Description |
+| ------ | ------- | ----------------------- | ----------------------------- |
+| `time` | int64_t | Required (exactly 1) | Create time (Unix epoch time) |
+
+*Parameter #4---data*
+
+| Name | Type | Presence | Description |
+| ---------- | ------------ | ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `data-hex` | string (hex) | Required (exactly 1) | **Updated in Dash Core 0.14.0 to require all new proposals to use JSON serialization.**
Object data (JSON object with governance details). Additional details regarding this are provided in an example below. |
+
+*Parameter #5---use-IS*
+
+| Name | Type | Presence | Description |
+| -------- | ------- | -------------------- | ----------------------------------------------- |
+| `use-IS` | boolean | Optional (0 or 1) | *Deprecated and ignored since Dash Core 0.15.0* |
+
+*Parameter #6---outputHash*
+
+| Name | Type | Presence | Description |
+| ------------ | ------------ | -------------------- | ------------------------------------------------------------------------------------ |
+| `outputHash` | string (hex) | Optional (0 or 1) | *Added in Dash Core 0.13.0*
The single output to submit the proposal fee from |
+
+*Parameter #7---outputIndex*
+
+| Name | Type | Presence | Description |
+| ------------- | ------- | -------------------- | -------------------------------------------------------------------------------------------------------- |
+| `outputIndex` | numeric | Optional (0 or 1) | *Added in Dash Core 0.13.0*
The output index (required if the `outputHash` parameter is provided) |
+
+*Result---collateral transaction ID*
+
+| Name | Type | Presence | Description |
+| -------- | ------------ | ----------------------- | --------------------------------------------- |
+| `result` | string (hex) | Required (exactly 1) | Transaction ID for the collateral transaction |
+
+**Details of the `data-hex` field:**
+
+The `data-hex` field is comprised of a JSON object as described in [GObject Deserialize](#gobject-deserialize) which is serialized to hex.
+
+An example of a proposal JSON object is shown here:
+
+``` json
+{
+ "end_epoch": 1560457055,
+ "name": "test",
+ "payment_address": "yd5KMREs3GLMe6mTJYr3YrH1juwNwrFCfB",
+ "payment_amount": 5,
+ "start_epoch": 1560453490,
+ "type": 1,
+ "url": "http://test.com"
+}
+```
+
+To serialize the object, first remove all spaces from the JSON object as shown below:
+
+``` json
+{"end_epoch":1560457055,"name":"test","payment_address":"yd5KMREs3GLMe6mTJYr3YrH1juwNwrFCfB","payment_amount":5,"start_epoch":1560453490,"type":1,"url":"http://test.com"}
+```
+
+Then convert the string to its hex equivalent as shown below. This is what will be used for the `data-hex` field of the `gobject prepare` command:
+
+``` bash
+7b22656e645f65706f6368223a313536303435373035352c226e616d65223a2274657374222c\
+227061796d656e745f61646472657373223a227964354b4d52457333474c4d65366d544a5972\
+33597248316a75774e777246436642222c227061796d656e745f616d6f756e74223a352c2273\
+746172745f65706f6368223a313536303435333439302c2274797065223a312c2275726c223a\
+22687474703a2f2f746573742e636f6d227d
+```
+
+*Example from Dash Core 0.14.0*
+
+``` bash
+gobject prepare 0 1 1560449223 7b22656e645f65706f6368223a3135363034353730353\
+52c226e616d65223a2274657374222c227061796d656e745f61646472657373223a227964354\
+b4d52457333474c4d65366d544a597233597248316a75774e777246436642222c227061796d6\
+56e745f616d6f756e74223a352c2273746172745f65706f6368223a313536303435333439302\
+c2274797065223a312c2275726c223a22687474703a2f2f746573742e636f6d227d
+```
+
+Result (Collateral Transaction ID):
+
+``` bash
+3fd758e7a5761bb07b2850b8ba432ef42c1ea80f0921d2eab0682697dda78262
+```
+
+*See also:*
+
+* [GObject List-Prepared](#gobject-list-prepared): returns a list of governance objects prepared by this wallet
+
+### GObject List-Prepared
+
+The `gobject list-prepared` RPC returns a list of governance objects prepared by this wallet with [`gobject prepare`](#gobject-prepare) sorted by their creation time.
+
+*Parameter #1---count*
+
+| Name | Type | Presence | Description |
+| ------- | ------------ | -------------------- | ----------------------------------- |
+| `count` | number (int) | Optional (0 or 1) | Maximum number of objects to return |
+
+*Result---list of governance objects*
+
+| Name | Type | Presence | Description |
+| -------------------------- | ------------ | ----------------------- | ---------------------------------------------------------------------- |
+| `result` | array | Required (exactly 1) | List of governance objects |
+| → Governance Object | object | Required (0 or more) | Proposal object |
+| → → `objectHash` | string (hex) | Required (exactly 1) | Proposal object hash |
+| → → `parentHash` | string (hex) | Required (exactly 1) | Hash of the parent object. Usually the root node which has a hash of 0 |
+| → → `collateralHash` | string (hex) | Required (exactly 1) | Hash of the collateral payment transaction |
+| → → `createdAt` | number (int) | Required (exactly 1) | Proposal creation time as Unix epoch time |
+| → → `revision` | number (int) | Required (exactly 1) | Proposal revision number |
+| → → `data` | object | Required (exactly 1) | Object containing governance object data |
+| → → → `end_epoch` | string | Required (exactly 1) | Governance object info as string |
+| → → → `name` | string | Required (exactly 1) | Proposal name |
+| → → → `payment_address` | string | Required (exactly 1) | Proposal payment address |
+| → → → `payment_amount` | string | Required (exactly 1) | Proposal payment amount |
+| → → → `start_epoch` | number (int) | Required (exactly 1) | Proposal start |
+| → → → `type` | number (int) | Required (exactly 1) | Object type |
+| → → → `url` | string | Required (exactly 1) | Proposal URL |
+| → → → `hex` | string (hex) | Required (exactly 1) | Governance object data as hex |
+
+*Example from Dash Core 0.17.0*
+
+``` bash
+gobject list-prepared
+```
+
+Result (Collateral Transaction ID):
+
+``` json
+[
+ {
+ "objectHash": "307cde2e485968548cd1a19473bf48f788c16178d82f63cbe849c33988d9592b",
+ "parentHash": "0000000000000000000000000000000000000000000000000000000000000000",
+ "collateralHash": "987570add8979576cb8a4ee510df448fd2ae7097628b7980559489ecb116b0fa",
+ "createdAt": 1608143561,
+ "revision": 1,
+ "data": {
+ "end_epoch": 1608151237,
+ "name": "test",
+ "payment_address": "yd5KMREs3GLMe6mTJYr3YrH1juwNwrFCfB",
+ "payment_amount": 5,
+ "start_epoch": 1608147672,
+ "type": 1,
+ "url": "https://www.dash.org",
+ "hex": "7b22656e645f65706f6368223a313630383135313233372c226e616d65223a2274657374222c227061796d656e745f61646472657373223a227964354b4d52457333474c4d65366d544a597233597248316a75774e777246436642222c227061796d656e745f616d6f756e74223a352c2273746172745f65706f6368223a313630383134373637322c2274797065223a312c2275726c223a2268747470733a2f2f7777772e646173682e6f7267227d"
+ }
+ }
+]
+```
+
+*See also:*
+
+* [GObject Prepared](#gobject-prepare): prepares a governance object by signing and creating a collateral transaction
+
+```{eval-rst}
+.. _api-rpc-dash-gobject-submit:
+```
+
+### GObject Submit
+
+The `gobject submit` RPC submits a governance object to network (objects must first be prepared via `gobject prepare`).
+
+Note: Parameters 1-4 should be the same values as the ones used for `gobject
+prepare`.
+
+*Parameter #1---parent hash*
+
+| Name | Type | Presence | Description |
+| ------------- | ------------ | ----------------------- | ---------------------------------------------------------------------- |
+| `parent-hash` | string (hex) | Required (exactly 1) | Hash of the parent object. Usually the root node which has a hash of 0 |
+
+*Parameter #2---revision*
+
+| Name | Type | Presence | Description |
+| ---------- | ---- | ----------------------- | ---------------------- |
+| `revision` | int | Required (exactly 1) | Object revision number |
+
+*Parameter #3---time*
+
+| Name | Type | Presence | Description |
+| ------ | ------- | ----------------------- | ----------- |
+| `time` | int64_t | Required (exactly 1) | Create time |
+
+*Parameter #4---data*
+
+| Name | Type | Presence | Description |
+| ---------- | ------------ | ----------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `data-hex` | string (hex) | Required (exactly 1) | **Updated in Dash Core 0.14.0 to require all new proposals to use JSON serialization.**
Object data (JSON object with governance details). See [GObject Prepare](#gobject-prepare) for additional details about this field. |
+
+*Parameter #5---fee transaction ID*
+
+| Name | Type | Presence | Description |
+| ------ | ------------ | ----------------------- | ------------------------------------------------------------- |
+| `data` | string (hex) | Required (exactly 1) | **Updated in Dash Core 20.0.0 to remove support for trigger objects.**
Fee transaction ID - required for all objects |
+
+*Result---governance object hash*
+
+| Name | Type | Presence | Description |
+| -------- | ------------ | ----------------------- | ---------------------- |
+| `result` | string (hex) | Required (exactly 1) | Governance object hash |
+
+*Example from Dash Core 0.14.0*
+
+``` bash
+dash-cli -testnet gobject submit 0 1 1560449223 7b22656e645f65706f6368223a3\
+13536303435373035352c226e616d65223a2274657374222c227061796d656e745f61646472\
+657373223a227964354b4d52457333474c4d65366d544a597233597248316a75774e7772464\
+36642222c227061796d656e745f616d6f756e74223a352c2273746172745f65706f6368223a\
+313536303435333439302c2274797065223a312c2275726c223a22687474703a2f2f7465737\
+42e636f6d227d \
+3fd758e7a5761bb07b2850b8ba432ef42c1ea80f0921d2eab0682697dda78262
+```
+
+Result (Governance Object Hash):
+
+``` bash
+e353b2ab5f7e7cb24b95e00e153ec2a6339249672f18b8e8e144aa711678710d
+```
+
+*See also:*
+
+* [GObject Prepared](#gobject-prepare): prepares a governance object by signing and creating a collateral transaction
+
+### GObject Vote-alias
+
+The `gobject vote-alias` RPC votes on a governance object by masternode alias (using masternode.conf setup).
+
+*Parameter #1---governance hash*
+
+| Name | Type | Presence | Description |
+| ----------------- | ------------ | ----------------------- | ----------------------------- |
+| `governance-hash` | string (hex) | Required (exactly 1) | Hash of the governance object |
+
+*Parameter #2---vote signal*
+
+| Name | Type | Presence | Description |
+| -------- | ------ | ----------------------- | -------------------------------------------- |
+| `signal` | string | Required (exactly 1) | Vote signal: `funding`, `valid`, or `delete` |
+
+*Parameter #3---vote outcome*
+
+| Name | Type | Presence | Description |
+| --------- | ------ | ----------------------- | --------------------------------------- |
+| `outcome` | string | Required (exactly 1) | Vote outcome: `yes`, `no`, or `abstain` |
+
+*Parameter #4---masternode alias*
+
+| Name | Type | Presence | Description |
+| ------- | ------ | ----------------------- | -------------------------- |
+| `alias` | string | Required (exactly 1) | Alias of voting masternode |
+
+*Result---votes for specified governance*
+
+| Name | Type | Presence | Description |
+| ----------------------- | ------ | ----------------------- | ----------------------------------------- |
+| Result | object | Required (exactly 1) | The governance object votes |
+| → `overall` | string | Required (1 or more) | Reports number of vote successes/failures |
+| → `detail` | object | Required (exactly 1) | Vote details |
+| → → Masternode Alias | object | Required (1 or more) | Name of the masternode alias |
+| → → → `result` | string | Required (exactly 1) | Vote result |
+
+*Example from Dash Core 0.12.2*
+
+``` bash
+dash-cli -testnet gobject vote-alias \
+0bf97bce78b3b642c36d4ca8e9265f8f66de8774c220221f57739c1956413e2b \
+funding yes MN01
+```
+
+Result:
+
+``` json
+{
+ "overall": "Voted successfully 1 time(s) and failed 0 time(s).",
+ "detail": {
+ "MN01": {
+ "result": "success"
+ }
+ }
+}
+```
+
+### GObject Vote-many
+
+The `gobject vote-many` RPC votes on a governance object by all masternodes (using masternode.conf setup).
+
+*Parameter #1---governance hash*
+
+| Name | Type | Presence | Description |
+| ----------------- | ------------ | ----------------------- | ----------------------------- |
+| `governance-hash` | string (hex) | Required (exactly 1) | Hash of the governance object |
+
+*Parameter #2---vote signal*
+
+| Name | Type | Presence | Description |
+| -------- | ------ | ----------------------- | -------------------------------------------- |
+| `signal` | string | Required (exactly 1) | Vote signal: `funding`, `valid`, or `delete` |
+
+*Parameter #3---vote outcome*
+
+| Name | Type | Presence | Description |
+| --------- | ------ | ----------------------- | --------------------------------------- |
+| `outcome` | string | Required (exactly 1) | Vote outcome: `yes`, `no`, or `abstain` |
+
+*Parameter #4---masternode alias*
+
+| Name | Type | Presence | Description |
+| ------- | ------ | ----------------------- | -------------------------- |
+| `alias` | string | Required (exactly 1) | Alias of voting masternode |
+
+*Result---votes for specified governance*
+
+| Name | Type | Presence | Description |
+| ----------------------- | ------ | ----------------------- | ----------------------------------------- |
+| Result | object | Required (exactly 1) | The governance object votes |
+| → `overall` | string | Required (1 or more) | Reports number of vote successes/failures |
+| → `detail` | object | Required (exactly 1) | Vote details |
+| → → Masternode Alias | object | Required (1 or more) | Name of the masternode alias |
+| → → → `result` | string | Required (exactly 1) | Vote result |
+
+*Example from Dash Core 0.12.2*
+
+``` bash
+dash-cli -testnet gobject vote-many \
+0bf97bce78b3b642c36d4ca8e9265f8f66de8774c220221f57739c1956413e2b funding yes
+```
+
+``` json
+{
+ "overall": "Voted successfully 1 time(s) and failed 0 time(s).",
+ "detail": {
+ "MN01": {
+ "result": "success"
+ }
+ }
+}
+```
+
+*See also:*
+
+* [GetGovernanceInfo](#getgovernanceinfo): returns an object containing governance parameters.
+* [GetSuperblockBudget](#getsuperblockbudget): returns the absolute maximum sum of superblock payments allowed.
+
+## Masternode
+
+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.
+
+*Parameters: none*
+
+*Result---number of known masternodes*
+
+| Name | Type | Presence | Description |
+| ---------------- | ------ | ----------------------- | ---------------------------------------------------------------------- |
+| `result` | object | Required (exactly 1) | Masternode count by mode |
+| → `total` | int | Required (exactly 1) | Count of all masternodes |
+| → `enabled` | int | Required (exactly 1) | Count of enabled masternodes |
+| → `detailed` | object | Required (exactly 1) | *Added in Dash Core 19.0* Breakdown of regular masternodes and evonodes |
+| →→ `regular` | object | Required (exactly 1) | Breakdown of regular masternodes |
+| →→→ `total` | int | Required (exactly 1) | Number of total regular masternodes |
+| →→→ `enabled` | int | Required (exactly 1) | Number of enabled regular masternodes |
+| →→ `evo` | object | Required (exactly 1) | Breakdown of evonodes |
+| →→→ `total` | int | Required (exactly 1) | Number of total evonodes |
+| →→→ `enabled` | int | Required (exactly 1) | Number of enabled evonodes |
+
+*Example from Dash Core 20.0.0*
+
+``` bash
+dash-cli -testnet masternode count
+```
+
+Result:
+
+``` bash
+{
+ "total": 516,
+ "enabled": 116,
+ "detailed": {
+ "regular": {
+ "total": 478,
+ "enabled": 83
+ },
+ "evo": {
+ "total": 38,
+ "enabled": 33
+ }
+ }
+}
+```
+
+### Masternode Current
+
+:::{deprecated} 0.17.0
+This RPC has been deprecated and will be removed in a future version of Dash Core
+:::
+
+The `masternode current` RPC prints info on current masternode winner to be paid the next block (calculated locally).
+
+*Parameters: none*
+
+*Result---current winning masternode info*
+
+| Name | Type | Presence | Description |
+| ---------------- | ------ | ----------------------- | ------------------------------------------------------- |
+| Result | object | Required (exactly 1) | Winning masternode info |
+| → `height` | int | Required (exactly 1) | Block height |
+| → `IP:port` | string | Required (exactly 1) | The IP address/port of the masternode |
+| → `proTxHash` | string | Required (exactly 1) | The masternode's Provider Registration transaction hash |
+| → `outpoint` | string | Required (exactly 1) | The masternode's outpoint |
+| → `payee` | string | Required (exactly 1) | Payee address |
+
+*Example from Dash Core 0.14.0*
+
+``` bash
+dash-cli -testnet masternode current
+```
+
+Result:
+
+``` json
+{
+ "height": 76179,
+ "IP:port": "34.242.53.163:26155",
+ "proTxHash": "9de76b8291d00026ab0af86306023c7b90f8e9229dc04916fe1335bf5e11f15d",
+ "outpoint": "9de76b8291d00026ab0af86306023c7b90f8e9229dc04916fe1335bf5e11f15d-1",
+ "payee": "yZnU7YJJgGQKvKPQFqXJ4k4DGSsRMhgLXx"
+}
+```
+
+### Masternode List
+
+The `masternode list` prints a list of all known masternodes.
+
+This RPC uses the same parameters and returns the same data as
+[masternodelist](#masternodelist). Please reference it for full details.
+
+*Example from Dash Core 0.12.2*
+
+``` bash
+dash-cli -testnet masternode list \
+ rank f6c83fd96bfaa47887c4587cceadeb9af6238a2c86fe36b883c4d7a6867eab0f
+```
+
+Result:
+
+``` json
+{
+ "f6c83fd96bfaa47887c4587cceadeb9af6238a2c86fe36b883c4d7a6867eab0f-1": 11
+}
+```
+
+### Masternode Outputs
+
+The `masternode outputs` RPC prints masternode compatible outputs.
+
+*Parameters: none*
+
+*Result---masternode outputs*
+
+| Name | Type | Presence | Description |
+| ----------- | ------ | ----------------------- | ----------------------------------------- |
+| Result | array | Required (exactly 1) | Masternode compatible outputs |
+| → Output | string | Required (0 or more) | Masternode compatible output (TXID:Index) |
+
+*Example from Dash Core 18.1.0*
+
+``` bash
+dash-cli -testnet masternode outputs
+```
+
+Result:
+
+``` json
+[
+ "f6c83fd96bfaa47887c4587cceadeb9af6238a2c86fe36b883c4d7a6867eab0f-1"
+]
+```
+
+### Masternode Payments
+
+The `masternode payments` RPC prints an array of deterministic masternodes and their payments for the specified block.
+
+By default, payment information is returned for only the chain tip. More block winners can be requested via the optional `count` parameter.
+
+*Parameter #1---block hash*
+
+| Name | Type | Presence | Description |
+| ---------- | ------------ | ----------------------- | --------------------------------------------- |
+| Block Hash | string (hex) | Optional (exactly 1) | The hash of the starting block (default: tip) |
+
+*Parameter #2---count*
+
+| Name | Type | Presence | Description |
+| ----- | ------------ | ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
+| Count | number (int) | Optional (exactly 1) | The number of blocks to return (default: 1). Will return previous blocks if is negative. Both 1 and -1 correspond to the chain tip. |
+
+.
+*Result---masternode payments*
+
+| Name | Type | Presence | Description |
+| :------------------ | :--------------- | :---------------------- | :----------------------------------------------- |
+| Result | array of objects | Required (exactly 1) | List of masternode payment info |
+| → Block Payment | object | Optional (0 or more) | Masternode payment info for a block |
+| →→ `height` | number (int) | Required (exactly 1) | The height of the block |
+| →→ `blockhash` | number (int) | Required (exactly 1) | The hash of the block |
+| →→ `amount` | number (int) | Required (exactly 1) | Amount received in this block by all masternodes |
+| →→ `masternodes` | array of objects | Required (exactly 1) | Masternodes that received payments in this block |
+| →→→ Masternode | object | Required (1 or more) | Masternode info |
+| →→→→ `proTxHash` | string (hex) | Required (exactly 1) | The hash of the corresponding ProRegTx |
+| →→→→ `amount` | number (int) | Required (exactly 1) | Amount received by this masternode |
+| →→→→ `payees` | array of objects | Required (exactly 1) | Payees who received a share of this payment |
+| →→→→→ Payee | objects | Required (1 or more) | Payee info |
+| →→→→→→ `address` | string | Required (1 or more) | Payee address |
+| →→→→→→ `script` | string | Required (exactly 1) | Payee scriptPubKey |
+| →→→→→→ `amount` | number (int) | Required (exactly 1) | Amount received by this payee |
+
+*Example from Dash Core 0.17.0*
+
+``` bash
+dash-cli -testnet masternode payments
+```
+
+Result (block 407822):
+
+``` json
+[
+ {
+ "height": 407822,
+ "blockhash": "0000030ae0ca262af12918eac9069e61c481e17ac65a26c87ee44427699c3f3a",
+ "amount": 1253571429,
+ "masternodes": [
+ {
+ "proTxHash": "c865b48a09801c61dce5804f28fe994c72577254ea1859cf1c37fe92b428e757",
+ "amount": 1253571429,
+ "payees": [
+ {
+ "address": "yP72QU7PMG8wNQVTtaQrCLVKCmbuDeAK91",
+ "script": "76a9141e8efb321d5cad77e28e4e6b51546932579d02f588ac",
+ "amount": 1253571429
+ }
+ ]
+ }
+ ]
+ }
+]
+```
+
+*See also:*
+
+* [Masternode Winner](#masternode-winner): prints info on the next masternode winner to vote for.
+* [Masternode Winners](#masternode-winners): prints the list of masternode winners.
+
+### Masternode Status
+
+The `masternode status` RPC prints masternode status information.
+
+*Parameters: none*
+
+*Result---masternode status info*
+
+| Name | Type | Presence | Description |
+| ------------------------------ | ------------ | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| Result | object | Required (exactly 1) | Masternode status info |
+| → `outpoint` | string | Required (exactly 1) | The masternode's outpoint |
+| → `service` | string | Required (exactly 1) | The IP address/port of the masternode |
+| → `proTxHash` | string (hex) | Optional (0 or 1) | The masternode's ProRegTx hash |
+| → `type` | string | Required (exactly 1) | *Added in Dash Core 19.0* The type of masternode |
+| → `collateralHash` | string (hex) | Optional (0 or 1) | The masternode's collateral hash |
+| → `collateralIndex` | int | Optional (0 or 1) | Index of the collateral |
+| → `dmnState` | object | Optional (0 or 1) | Deterministic Masternode State |
+| → → `version` | int | Required (exactly 1) | **Added in Dash Core 19.2.0** The version of the most recent ProRegTx or ProUpRegTx |
+| → → `service` | string | Required (exactly 1) | The IP address/port of the masternode |
+| → → `registeredHeight` | int | Required (exactly 1) | Block height at which the masternode was registered |
+| → → `lastPaidHeight` | int | Required (exactly 1) | Block height at which the masternode was last paid |
+| → → `PoSePenalty` | int | Required (exactly 1) | Current proof-of-service penalty |
+| → → `PoSeRevivedHeight` | int | Required (exactly 1) | Block height at which the masternode was last revived from a PoSe ban |
+| → → `PoSeBanHeight` | int | Required (exactly 1) | Block height at which the masternode was last PoSe banned |
+| → → `revocationReason` | int | Required (exactly 1) | Reason code for of masternode operator key revocation |
+| → → `ownerAddress` | string | Required (exactly 1) | The owner address |
+| → → `votingAddress` | string | Required (exactly 1) | The voting address |
+| → → `platformNodeId` | string | Optional (0 or 1) | **Added in Dash Core 19.0.0** Platform P2P node ID, derived from P2P public key (evonodes only) |
+| → → `platformP2PPort` | int | Optional (0 or 1) | **Added in Dash Core 19.0.0** Platform P2P port (evonodes only) |
+| → → `platformHTTPPort` | int | Optional (0 or 1) | **Added in Dash Core 19.0.0** TCP port of Platform HTTP/API interface (evonodes only) |
+| → → `payoutAddress` | string | Required (exactly 1) | The payout address |
+| → → `pubKeyOperator` | string | Required (exactly 1) | The operator public key |
+| → → `operatorPayoutAddress` | string | Optional (0 or 1) | The operator payout address |
+| → `state` | string | Required (exactly 1) | The masternode's state. Valid states are: • `WAITING_FOR_PROTX` • `POSE_BANNED` • `REMOVED` • `OPERATOR_KEY_CHANGED` • `PROTX_IP_CHANGED` • `READY` • `ERROR` • `UNKNOWN` |
+| → `status` | string | Required (exactly 1) | The masternode's status (description based on current state) |
+
+*Example from Dash Core 19.2.0*
+
+``` bash
+dash-cli -testnet masternode status
+```
+
+Result:
+
+``` json
+{
+ "outpoint": "6ce8545e25d4f03aba1527062d9583ae01827c65b234bd979aca5954c6ae3a59-27",
+ "service": "34.214.48.68:19999",
+ "proTxHash": "9cb04f271ba050132c00cc5838fb69e77bc55b5689f9d2d850dc528935f8145c",
+ "type": "HighPerformance",
+ "collateralHash": "6ce8545e25d4f03aba1527062d9583ae01827c65b234bd979aca5954c6ae3a59",
+ "collateralIndex": 27,
+ "dmnState": {
+ "version": 2,
+ "service": "34.214.48.68:19999",
+ "registeredHeight": 850334,
+ "lastPaidHeight": 852599,
+ "consecutivePayments": 0,
+ "PoSePenalty": 0,
+ "PoSeRevivedHeight": -1,
+ "PoSeBanHeight": -1,
+ "revocationReason": 0,
+ "ownerAddress": "yeJdYWA1rNSKxxfo7mE2eBUj3ejBGUR6UB",
+ "votingAddress": "yeJdYWA1rNSKxxfo7mE2eBUj3ejBGUR6UB",
+ "platformNodeID": "62e960a3f6b650feed98a266b3ccdf6e363562cf",
+ "platformP2PPort": 36656,
+ "platformHTTPPort": 1443,
+ "payoutAddress": "yeRZBWYfeNE4yVUHV4ZLs83Ppn9aMRH57A",
+ "pubKeyOperator": "b6ee48c7a71a9d8e0813e68ca09846245fa155285f24a62b0ce9cb0102b1994ec58af8ba2a01c09363bdcc395d41f3df"
+ },
+ "state": "READY",
+ "status": "Ready"
+}
+```
+
+### Masternode Winner
+
+:::{deprecated} 0.17.0
+This RPC has been deprecated and will be removed in a future version of Dash Core
+:::
+
+The `masternode winner` RPC prints info on the next masternode winner to vote for.
+
+*Parameters: none*
+
+*Result---next masternode winner info*
+
+| Name | Type | Presence | Description |
+| ---------------- | ------ | ----------------------- | ------------------------------------------------------- |
+| Result | object | Required (exactly 1) | Winning masternode info |
+| → `height` | int | Required (exactly 1) | Block height |
+| → `IP:port` | string | Required (exactly 1) | The IP address/port of the masternode |
+| → `proTxHash` | string | Required (exactly 1) | The masternode's Provider Registration transaction hash |
+| → `outpoint` | string | Required (exactly 1) | The masternode's outpoint |
+| → `payee` | string | Required (exactly 1) | Payee address |
+
+*Example from Dash Core 0.14.0*
+
+``` bash
+dash-cli -testnet masternode winner
+```
+
+Result:
+
+``` json
+{
+ "height": 76191,
+ "IP:port": "34.242.53.163:26173",
+ "proTxHash": "024608d03beb6a6065f14a29a837c68ae449ac1e17056819366ca0b72b6dd81f",
+ "outpoint": "024608d03beb6a6065f14a29a837c68ae449ac1e17056819366ca0b72b6dd81f-1",
+ "payee": "yhp182AnF7gUAyHiWgSbDrKqHKt2dzhoyW"
+}
+```
+
+*See also:*
+
+* [Masternode Payments](#masternode-payments): prints an array of deterministic masternodes and their payments for the specified block.
+* [Masternode Winners](#masternode-winners): prints the list of masternode winners.
+
+### Masternode Winners
+
+The `masternode winners` RPC prints the list of masternode winners.
+
+By default, the 10 previous block winners, the current block winner, and the next 20 block winners are displayed. More past block winners can be requested via the optional `count` parameter.
+
+*Parameter #1---count*
+
+| Name | Type | Presence | Description |
+| ----- | ---- | ----------------------- | --------------------------------------------------------- |
+| Count | int | Optional (exactly 1) | Number of previous block winners to display (default: 10) |
+
+*Parameter #2---filter*
+
+| Name | Type | Presence | Description |
+| ------ | ------ | ----------------------- | ---------------------------- |
+| Filter | string | Optional (exactly 1) | Payment address to filter by |
+
+*Result---masternode winners*
+
+| Name | Type | Presence | Description |
+| ---------------------- | ------ | ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
+| Result | object | Required (exactly 1) | Winning masternode info |
+| → Masternode Winner | int | Required (exactly 1) | Key: Block height Value: payee address. As of Dash Core 0.17.0, all payees will be listed (e.g. both owner and operator where applicable). |
+
+*Example from Dash Core 0.17.0*
+
+``` bash
+dash-cli -testnet masternode winners
+```
+
+Result (current block - 37458):
+
+``` json
+{
+ "37448": "ygSWwhyzU61FNEta8gDh8gfoH5EZZUvc5m,yP8A3cbdxRtLRduy5mXDsBnJtMzHWs6ZXr",
+ "37449": "yjGZLzSSoFfTFgLDJrgniXfYxu3xF9xKQg",
+ "37450": "yRTo1wXWoNnPFWcQVepKGXuLsoypnPkGWj",
+ "37451": "yYMFRAYZ25XspHZ1EXC39wUMx9FhoC5VT2",
+ "37452": "yX5y3otE4LitGYiSfZhVH4LdbwHShdzQ8v",
+ "37453": "yX5y3otE4LitGYiSfZhVH4LdbwHShdzQ8v",
+ "37454": "yUamtYUFhqUxCMny3JTcZJTyttVt8SYFug",
+ "37455": "yU35XcdGMnj8Exa2ZZqCg4ongiNqQwpeUZ",
+ "37456": "yaJc6tADbEjxQBAC69ugWNoTFpzxqkcgWd",
+ "37457": "yf4WpwRX17p7YRkHJPQpHMXTwzi5s2VDcR",
+ "37458": "ydbfUYWfLm6xg7Y5aBLjy38DvksrvNcHEc",
+ "37459": "yYp9k2iuDptT2MB7qVZtVy6ModHtLXFjio",
+ "37460": "yP1UHNx26ShYLej56SbHiTiPAUv2QppbUv",
+ "37461": "yaCtZRpiYnVFMyWELHZF74v9ayLKCLPcC9",
+ "37462": "ygYFnLHoVRyhRoxd6fXQ9nmEafX4eLoWkB",
+ "37463": "yM5kTThWi8MnAFtZqx98Zipp1BbyypUZGK",
+ "37464": "yeDY39aiqbBHbJft5F6rokR23EaZca6UTU",
+ "37465": "yMME1ns1xfpGS2XbFPktsNyp7Cjr1BoJxb",
+ "37466": "ycn5RWc4Ruo35FTS8bJwugVyCEkfVcrw9a",
+ "37467": "yUTDkKKhbvDrnwkiaoP8HvqxTNC6rNnUe2",
+ "37468": "yTstes2nSaSpvu9nTapiCGnjCLvLD5fUqt",
+ "37469": "Unknown",
+ "37470": "Unknown",
+ "37471": "Unknown",
+ "37472": "Unknown",
+ "37473": "Unknown",
+ "37474": "Unknown",
+ "37475": "Unknown",
+ "37476": "Unknown",
+ "37477": "Unknown"
+}
+```
+
+Get a filtered list of masternode winners
+
+``` bash
+dash-cli -testnet masternode winners 150 "yTZ99"
+```
+
+Result:
+
+``` json
+{
+ "37338": "yTZ99fCnjNu33RDRtawf81iwJ9uxXFmkgM",
+ "37339": "yTZ99fCnjNu33RDRtawf81iwJ9uxXFmkgM",
+ "37432": "yTZ99fCnjNu33RDRtawf81iwJ9uxXFmkgM",
+ "37433": "yTZ99fCnjNu33RDRtawf81iwJ9uxXFmkgM"
+}
+```
+
+*See also:*
+
+* [MasternodeList](#masternodelist): returns a list of masternodes in different modes.
+* [Masternode Payments](#masternode-payments): prints an array of deterministic masternodes and their payments for the specified block.
+* [Masternode Winner](#masternode-winner): prints info on the next masternode winner to vote for.
+
+## Masternodelist
+
+The [`masternodelist` RPC](#masternodelist) returns a list of masternodes in different modes.
+
+*Parameter #1---List mode*
+
+| Name | Type | Presence | Description |
+| ------ | ------ | ------------------------------------------------- | ----------------------- |
+| `mode` | string | Optional (exactly 1); Required to use `filter` | The mode to run list in |
+
+*Mode Options (Default=json)*
+
+| Mode | Description |
+| ---------------- | ------------------------------------------------------------------------------------------------------------------ |
+| `addr` | Print IP address associated with a masternode (can be additionally filtered, partial match) |
+| `recent` | Print info in JSON format for active and recently banned masternodes (can be additionally filtered, partial match) |
+| `full` | Print info in format 'status payee lastpaidtime lastpaidblock IP' (can be additionally filtered, partial match) |
+| `evo` | Print info in JSON format for evonodes only. **Added in Dash Core 20.0.0** |
+| `info` | Print info in format 'status payee IP' (can be additionally filtered, partial match) |
+| `json` (Default) | Print info in JSON format (can be additionally filtered, partial match) |
+| `lastpaidblock` | Print the last block height a node was paid on the network |
+| `lastpaidtime` | Print the last time a node was paid on the network |
+| `owneraddress` | Print the masternode owner Dash address |
+| `payee` | Print Dash address associated with a masternode (can be additionally filtered, partial match) |
+| `pubKeyOperator` | Print the masternode operator public key |
+| `status` | Print masternode status: ENABLED / POSE_BANNED (can be additionally filtered, partial match) |
+| `votingaddress` | Print the masternode voting Dash address |
+
+*Parameter #2---List filter*
+
+| Name | Type | Presence | Description |
+| -------- | ------ | ----------------------- | ----------------------------------------------------------------------------------------------------------------------- |
+| `filter` | string | Optional (exactly 1) | Filter results. Partial match by outpoint by default in all modes, additional matches in some modes are also available. |
+
+*Result---the masternode list*
+
+| Name | Type | Presence | Description |
+| -------------------- | ----------- | ----------------------- | --------------------------------------------------------------------------------------------- |
+| `result` | object/null | Required (exactly 1) | Information about the masternode sync status |
+| → Masternode Info | string | Required (1 or more) | The requested masternode info. Output varies based on selected `mode` and `filter` parameters |
+
+*Example from Dash Core 20.0.0*
+
+Get unfiltered Masternode list in default mode
+
+``` bash
+dash-cli -testnet masternodelist
+```
+
+Result (truncated):
+
+``` json
+{
+ "ab3435c4974cffa8cf6e9a11d9a263c7efad367c4b22fcc75507c565027b51ecb1ba2a1602d9337eb3edb037d7c03b49"
+ },
+ "482cf74e7a615086514c261a9454db358290f05c6243089a3961ffdf14256d29-0": {
+ "proTxHash": "9bc9b7a879c137114fd17b2af5c3825a6f78224cfac8afd7109e52f1b3a05bff",
+ "address": "[::]:0",
+ "payee": "Xdsbzw7a5wTCQYvCwLuQc7qnRuCcs7ehsK",
+ "status": "POSE_BANNED",
+ "type": "Regular",
+ "pospenaltyscore": 4448,
+ "consecutivePayments": 0,
+ "lastpaidtime": 1660888856,
+ "lastpaidblock": 1723759,
+ "owneraddress": "XfJtpuZxEAYUofWKsHA7KNYpCKNxY98Hm3",
+ "votingaddress": "Xh6M9FR9a8Wdb7aVvWeF8z9CxBAM9PgDbW",
+ "collateraladdress": "Xs1yGUqc53XddB4E9FkHNYXtum5CCoGvbt",
+ "pubkeyoperator": "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
+ },
+ "a476f59677f43968ef22c12e250605e42b8ae6d0665fef1354c219ac1e3de82e-0": {
+ "proTxHash": "af7b52f2333fbb5605105b3efd094547c2f77d81ca06aa97b784414c4d1efbff",
+ "address": "100.24.78.251:9999",
+ "payee": "XnpE5Mwr8GsVujK2eWVVJh718Zeap5FHLj",
+ "status": "ENABLED",
+ "type": "Regular",
+ "pospenaltyscore": 0,
+ "consecutivePayments": 0,
+ "lastpaidtime": 1689823121,
+ "lastpaidblock": 1906829,
+ "owneraddress": "Xx7xCzbkHJnqbuqBk1zzGeuwopZ9x5UZvu",
+ "votingaddress": "XkK53owYVX5Q2t8XPzkR4bzourNzgfkjts",
+ "collateraladdress": "Xu2B3bvC75NuiYvudvJPR1npDdguyN7aWV",
+ "pubkeyoperator": "8f8097c423ad5bccc3d631bf518a1f28ff60b31841e3c7b0d44e578f94d33b96b9fb485e1690b72608423f3e926ac8c7"
+ }
+}
+```
+
+Get a filtered Masternode list
+
+``` bash
+dash-cli -testnet masternodelist full "NEW"
+```
+
+Result:
+
+``` json
+{
+ "cf9840b16f0c28e39beb89e06b995a12425f6a836ed899aa8203a448b31724c6-0": " ENABLED 0 yP8A3cbdxRtLRduy5mXDsBnJtMzHWs6ZXr 1650381993 708881 52.36.244.225:19999",
+ "6f506a5dbb0e88fe83242d4f9641b6f4a2616d22c889b74f29b5bfa6291dfdca-1": " POSE_BANNED 365 ySLuZnXd8ciZNXV5FEWpqRryT4viJdwazM 1578387987 243103 3.20.70.18:10003",
+ "52feab469665752944186952b361815ba53e5296457de6d1bd23baf80db36f0a-0": " ENABLED 0 yac7gAK3cKuDnYD4RmGaJiMnCssgu7Q7A5 1650385230 708906 54.185.249.226:19999",
+ "c44721bf0b5be6de4b7706eaef15c2d500bba148e21947907bd52f77d18bebbd-0": " ENABLED 0 yP8A3cbdxRtLRduy5mXDsBnJtMzHWs6ZXr 1650397178 708981 34.219.169.55:19999",
+ "893d83df0dfc05ac284b96c2b31d4db1d34552f814bd834b8c75f43c56945565-1": " ENABLED 0 yP8A3cbdxRtLRduy5mXDsBnJtMzHWs6ZXr 1650385930 708913 54.213.219.155:19999",
+ "23464abc2f724de235e69e72ef5068f1b2701521b88e7b2740b93978ff54909b-1": " POSE_BANNED 346 yhDhNgubyF1NEmT6qtiTXTbr3KMiJwUTxk 1555111615 78830 198.199.74.241:19999",
+ "d0e28cd51e674fe00af162877cb70e0ceed1906fef616b2d231ef009f6e4786a-0": " ENABLED 0 yP8A3cbdxRtLRduy5mXDsBnJtMzHWs6ZXr 1650396597 708974 34.220.41.134:19999",
+ "213a1c4beb216e8697d8d15701c248bcf91a889f4989fbb4275293b3aa697802-1": " POSE_BANNED 0 yfzLmLJUEYcC8LEygLB6AQFxCwsF3fV9Fw 1564053511 143062 [::]:0"
+}
+```
+
+*See also:*
+
+* [Masternode](#masternode): provides a set of commands for managing masternodes and displaying information about them.
+* [MnSync](#mnsync): returns the sync status, updates to the next step or resets it entirely.
+
+## MnSync
+
+The [`mnsync` RPC](#mnsync) returns the sync status, updates to the next step or resets it entirely.
+
+*Parameter #1---Command mode*
+
+| Name | Type | Presence | Description |
+| ------ | ------ | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
+| `mode` | string | Required (exactly 1) | The command mode to use: `status` - Get masternode sync status `next` - Move to next sync asset `reset` - Reset sync status |
+
+**Command Mode - `status`**
+
+*Result---the sync status*
+
+| Name | Type | Presence | Description |
+| ------------------------- | ------------ | ----------------------- | ----------------------------------------------------------------- |
+| `result` | object/null | Required (exactly 1) | Information about the masternode sync status |
+| → `AssetID` | number (int) | Required (exactly 1) | The sync asset ID |
+| → `AssetName` | string | Required (exactly 1) | The sync asset name |
+| → `AssetStartTime` | number (int) | Required (exactly 1) | The sync asset start time |
+| → `Attempt` | number (int) | Required (exactly 1) | The sync attempt number |
+| → `IsBlockchainSynced` | boolean | Required (exactly 1) | Blockchain sync status |
+| → `IsSynced` | boolean | Required (exactly 1) | Masternode sync status |
+| → `IsFailed` | boolean | Required (exactly 1) | *Removed in Dash Core 0.16.0* Masternode list sync fail status |
+
+Sync Assets
+
+| AssetID | AssetName |
+| ------- | -------------------------------------------------------------------------------------- |
+| 0 | MASTERNODE_SYNC_INITIAL (merged with `MASTERNODE_SYNC_BLOCKCHAIN` in Dash Core 0.16.0) |
+| 1 | MASTERNODE_SYNC_BLOCKCHAIN (previously `MASTERNODE_SYNC_WAITING`) |
+| 4 | MASTERNODE_SYNC_GOVERNANCE |
+| -1 | MASTERNODE_SYNC_FAILED (removed in Dash Core 0.16.0) |
+| 999 | MASTERNODE_SYNC_FINISHED |
+
+*Example from Dash Core 0.16.0*
+
+Get Masternode sync status
+
+``` bash
+dash-cli -testnet mnsync status
+```
+
+Result:
+
+``` json
+{
+ "AssetID": 999,
+ "AssetName": "MASTERNODE_SYNC_FINISHED",
+ "AssetStartTime": 1507662300,
+ "Attempt": 0,
+ "IsBlockchainSynced": true,
+ "IsSynced": true,
+}
+```
+
+**Command Mode - `next`**
+
+*Result---next command return status*
+
+| Name | Type | Presence | Description |
+| -------- | ------ | ----------------------- | --------------------- |
+| `result` | string | Required (exactly 1) | Command return status |
+
+*Example from Dash Core 0.12.2*
+
+``` bash
+dash-cli -testnet mnsync next
+```
+
+Result:
+
+```text
+sync updated to MASTERNODE_SYNC_GOVERNANCE
+```
+
+**Command Mode - `reset`**
+
+*Result---reset command return status*
+
+| Name | Type | Presence | Description |
+| -------- | ------ | ----------------------- | ------------------------------------------------ |
+| `result` | string | Required (exactly 1) | Command return status: `success` or `failure` |
+
+*Example from Dash Core 0.12.2*
+
+``` bash
+dash-cli -testnet mnsync reset
+```
+
+Result:
+
+```text
+success
+```
+
+*See also:*
+
+* [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.
+
+## Spork
+
+The [`spork` RPC](#spork) shows information about the current state of sporks.
+
+To display the status of sporks, use the `show` or `active` syntax.
+
+*Parameter #1---Command mode*
+
+| Name | Type | Presence | Description |
+| ------ | ------ | ----------------------- | ------------------------------------------------------------------------------------------------------- |
+| `mode` | string | Required (exactly 1) | The command mode to use: `show` - Display spork values `active` - Display spork activation status |
+
+**Command Mode - `show`**
+
+*Result---spork values*
+
+| Name | Type | Presence | Description |
+| ------------------ | ------- | ----------------------- | ---------------------------------------------- |
+| `result` | object | Required (exactly 1) | Object containing status |
+| → `Spork Value` | int64_t | Required (1 or more) | Spork value (epoch datetime to enable/disable) |
+
+*Example from Dash Core 18.1.0*
+
+``` bash
+dash-cli -testnet spork show
+```
+
+Result:
+
+``` json
+{
+ "SPORK_2_INSTANTSEND_ENABLED": 0,
+ "SPORK_3_INSTANTSEND_BLOCK_FILTERING": 0,
+ "SPORK_9_SUPERBLOCKS_ENABLED": 0,
+ "SPORK_17_QUORUM_DKG_ENABLED": 0,
+ "SPORK_19_CHAINLOCKS_ENABLED": 0,
+ "SPORK_21_QUORUM_ALL_CONNECTED": 1,
+ "SPORK_23_QUORUM_POSE": 0
+}
+```
+
+**Command Mode - `active`**
+
+*Result---spork active status*
+
+| Name | Type | Presence | Description |
+| ------------------------------ | ------ | ----------------------- | ------------------------ |
+| `result` | object | Required (exactly 1) | Object containing status |
+| → `Spork Activation Status` | bool | Required (1 or more) | Spork activation status |
+
+*Example from Dash Core 18.1.0*
+
+``` bash
+dash-cli -testnet spork active
+```
+
+Result:
+
+``` json
+{
+ "SPORK_2_INSTANTSEND_ENABLED": true,
+ "SPORK_3_INSTANTSEND_BLOCK_FILTERING": true,
+ "SPORK_9_SUPERBLOCKS_ENABLED": true,
+ "SPORK_17_QUORUM_DKG_ENABLED": true,
+ "SPORK_19_CHAINLOCKS_ENABLED": true,
+ "SPORK_21_QUORUM_ALL_CONNECTED": true,
+ "SPORK_23_QUORUM_POSE": true
+}
+```
+
+*See also:*
+
+* [Sporkupdate](#sporkupdate): updates the value of the provided spork.
+
+## Sporkupdate
+
+The [`sporkupdate` RPC](#sporkupdate) updates the value of the provided spork.
+
+:::{note}
+Signing spork update messages requires `-sporkkey` to be set via the command line or dash.conf file.
+:::
+
+To update the state of a spork activation, use the ` [value]` syntax.
+
+*Parameter #1---Spork name*
+
+| Name | Type | Presence | Description |
+| ------ | ------ | ----------------------- | ------------------------------- |
+| `name` | string | Required (exactly 1) | The name of the spork to update |
+
+*Parameter #2---Spork value*
+
+| Name | Type | Presence | Description |
+| ------- | ---- | ----------------------- | ----------------------------- |
+| `value` | int | Required (exactly 1) | The value to assign the spork |
+
+*Result---spork update status*
+
+| Name | Type | Presence | Description |
+| -------- | ------ | ----------------------- | ----------------------------------- |
+| `result` | string | Required (exactly 1) | Update status (`success` or `null`) |
+
+*Example from Dash Core 18.1.0*
+
+``` bash
+dash-cli -testnet spork SPORK_2_INSTANTSEND_ENABLED 0
+```
+
+Result:
+
+``` bash
+null
+```
+
+*See also:*
+
+* [Spork](#spork): shows information about the current state of sporks.
+
+## VoteRaw
+
+The [`voteraw` RPC](#voteraw) compiles and relays a governance vote with provided external signature instead of signing vote internally
+
+*Parameter #1---masternode collateral transaction hash*
+
+| Name | Type | Presence | Description |
+| ------------------------------- | ------------ | ----------------------- | --------------------------------------------- |
+| `masternode-collateral-tx-hash` | string (hex) | Required (exactly 1) | Hash of the masternode collateral transaction |
+
+*Parameter #2---masternode collateral transaction index*
+
+| Name | Type | Presence | Description |
+| -------------------------------- | ------ | ----------------------- | ---------------------------------------------- |
+| `masternode-collateral-tx-index` | string | Required (exactly 1) | Index of the masternode collateral transaction |
+
+*Parameter #3---governance hash*
+
+| Name | Type | Presence | Description |
+| ----------------- | ------------ | ----------------------- | ----------------------------- |
+| `governance-hash` | string (hex) | Required (exactly 1) | Hash of the governance object |
+
+*Parameter #4---vote signal*
+
+| Name | Type | Presence | Description |
+| -------- | ------ | ----------------------- | -------------------------------------------- |
+| `signal` | string | Required (exactly 1) | Vote signal: `funding`, `valid`, or `delete` |
+
+*Parameter #5---vote outcome*
+
+| Name | Type | Presence | Description |
+| --------- | ------ | ----------------------- | --------------------------------------- |
+| `outcome` | string | Required (exactly 1) | Vote outcome: `yes`, `no`, or `abstain` |
+
+*Parameter #6---time*
+
+| Name | Type | Presence | Description |
+| ------ | ------- | ----------------------- | ----------- |
+| `time` | int64_t | Required (exactly 1) | Create time |
+
+*Parameter #7---vote signature*
+
+| Name | Type | Presence | Description |
+| ---------- | --------------- | ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `vote-sig` | string (base64) | Required (exactly 1) | The vote signature created by external application (i.e. [Dash Masternode Tool](https://github.com/Bertrand256/dash-masternode-tool) or [dashmnb](https://github.com/chaeplin/dashmnb)).
Must match the Dash Core ([governance vote signature format](https://github.com/dashpay/dash/blob/v0.15.x/src/governance/governance-vote.cpp#L180-L181)). |
+
+*Result---votes for specified governance*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+Result | object | Required (exactly 1) | The vote result
+
+*Example from Dash Core 0.12.2*
+
+``` bash
+dash-cli -testnet voteraw \
+f6c83fd96bfaa47887c4587cceadeb9af6238a2c86fe36b883c4d7a6867eab0f 1 \
+65a358fefaace40fc07053350be23e519178519290f963dab8ba92f6f85f98c3 \
+funding yes 1512507255 \
+H1jXKZQp1TZWBPW11E665OwmGBYV1038FohEr0au7zp+O5BCKmVDP/3rGq38ZMy3KOpwnBu6ehd6jlas79hsRBY=
+```
+
+Result:
+
+``` bash
+Voted successfully
+```
+
+*See also:*
+
+* [GObject](#gobject): provides a set of commands for managing governance objects and displaying information about them.
diff --git a/docs/core/api/remote-procedure-calls-evo.md b/docs/core/api/remote-procedure-calls-evo.md
new file mode 100644
index 000000000..037f0316c
--- /dev/null
+++ b/docs/core/api/remote-procedure-calls-evo.md
@@ -0,0 +1,4302 @@
+```{eval-rst}
+.. meta::
+ :title: Evo RPCs
+ :description: A list of all the Evolution-related remote procedure calls in Dash Core.
+```
+
+# Evo RPCs
+
+## BLS
+
+*Added in Dash Core 0.13.0*
+
+The [`bls` RPC](../api/remote-procedure-calls-evo.md#bls) provides a set of commands to execute BLS-related actions.
+
+### BLS FromSecret
+
+The `bls fromsecret` RPC parses a BLS secret key and returns the secret/public key pair.
+
+*Parameter #1---secret key*
+
+| Name | Type | Presence | Description |
+| -------- | ------------ | ----------------------- | ------------------ |
+| `secret` | string (hex) | Required (exactly 1) | The BLS secret key |
+
+*Parameter #2---legacy*
+
+| Name | Type | Presence | Description |
+| -------- | ------- | -------------------- | ------------------------------------------------------------------------------------------------------ |
+| `legacy` | boolean | Optional (0 or 1) | Use the legacy BLS scheme (default=`true` prior to v19 hard fork; default=`false` after v19 hard fork) |
+
+*Result---the secret/public key pair*
+
+| Name | Type | Presence | Description |
+| ------------- | ------------ | ----------------------- | ----------------------------------------- |
+| `result` | object | Required (exactly 1) | BLS key pair |
+| → `secret` | string (hex) | Required (exactly 1) | A BLS secret key |
+| → `public` | string (hex) | Required (exactly 1) | A BLS public key |
+| → `scheme` | string | Required (exactly 1) | BLS scheme (valid schemes: legacy, basic) |
+
+*Example from Dash Core 19.0.0*
+
+```bash
+dash-cli -testnet bls fromsecret 32c017a69fb03e0b8c1be270974570a350b043a685e9acbdc6493dbd9f8a7f1a
+```
+
+Result:
+
+```json
+{
+ "secret": "32c017a69fb03e0b8c1be270974570a350b043a685e9acbdc6493dbd9f8a7f1a",
+ "public": "90b75db03beab716159c3d80a448954a0ff2a10e25d260934c29839abe68abc546f53a0ec83e8201b22eb48e8e61eb4e",
+ "scheme": "basic"
+}
+```
+
+*See also*
+
+* [BLS Generate](#bls-generate)
+
+### BLS Generate
+
+The `bls generate` RPC creates a new BLS secret/public key pair.
+
+:::{note}
+Since the v19 hard fork activation, BLS keys are generated using the basic scheme by default.
+:::
+
+*Parameter #1---legacy*
+
+| Name | Type | Presence | Description |
+| -------- | ------- | -------------------- | ------------------------------------------------------------------------------------------------------ |
+| `legacy` | boolean | Optional (0 or 1) | Use the legacy BLS scheme (default=`true` prior to v19 hard fork; default=`false` after v19 hard fork) |
+
+*Result---a secret/public key pair*
+
+| Name | Type | Presence | Description |
+| ------------- | ------------ | ----------------------- | ----------------------------------------- |
+| `result` | object | Required (exactly 1) | BLS key pair |
+| → `secret` | string (hex) | Required (exactly 1) | A BLS secret key |
+| → `public` | string (hex) | Required (exactly 1) | A BLS public key |
+| → `scheme` | string | Required (exactly 1) | BLS scheme (valid schemes: legacy, basic) |
+
+*Example from Dash Core 19.0.0* (post hard fork activation)
+
+```bash
+dash-cli -testnet bls generate
+```
+
+Result:
+
+```json
+{
+ "secret": "32c017a69fb03e0b8c1be270974570a350b043a685e9acbdc6493dbd9f8a7f1a",
+ "public": "90b75db03beab716159c3d80a448954a0ff2a10e25d260934c29839abe68abc546f53a0ec83e8201b22eb48e8e61eb4e",
+ "scheme": "basic"
+}
+```
+
+*See also*
+
+* [BLS FromSecret](#bls-fromsecret)
+
+## ProTx
+
+*Added in Dash Core 0.13.0*
+
+The [`protx` RPC](../api/remote-procedure-calls-evo.md#protx) provides a set of commands to execute ProTx related actions.
+
+### ProTx Diff
+
+The `protx diff` RPC calculates a diff and a proof between two masternode list.
+
+*Parameter #1---start block height*
+
+| Name | Type | Presence | Description |
+| ----------- | ------------ | ----------------------- | ------------------------- |
+| `baseBlock` | number (int) | Required (Exactly 1) | The starting block height |
+
+*Parameter #2---end block height*
+
+| Name | Type | Presence | Description |
+| ------- | ------------ | ----------------------- | ----------------------- |
+| `block` | number (int) | Required (Exactly 1) | The ending block height |
+
+*Parameter #3---extended fields*
+
+| Name | Type | Presence | Description |
+| ---------- | ------- | -------------------- | ------------------------------------------------------------------------------------------------ |
+| `extended` | boolean | Optional (0 or 1) | *Added in Dash Core 18.1.0* Show additional fields (e.g. `payoutAddress`) (default=`false`) |
+
+*Result---JSON provider registration transaction details*
+
+| Name | Type | Presence | Description |
+| ------------------------------ | ------------ | ----------------------- | ----------- |
+| `result` | array | Required (exactly 1) | An array of objects each containing a provider transaction, or JSON `null` if an error occurred |
+| → `nVersion` | number | Required (exactly 1) | **Added in Dash Core 19.0.0** Simplified masternode list version returned |
+| → `baseBlockHash` | string (hex) | Required (exactly 1) | The hash of the base block as hex in RPC byte order |
+| → `blockHash` | string (hex) | Required (exactly 1) | The hash of the ending block as hex in RPC byte order |
+| → `cbTxMerkleTree` | string (hex) | Required (exactly 1) | The coinbase transaction merkle tree |
+| → `cbTx` | string (hex) | Required (exactly 1) | The coinbase transaction |
+| → `deletedMNs` | array | Required (exactly 1) | An array of deleted masternode hashes |
+| → `mnlist` | array | Required (exactly 1) | An array of masternode details |
+| → → `nVersion` | number | Required (exactly 1) | **Added in Dash Core 19.0.0** BLS version `1` - Legacy BLS scheme `2` - [Basic BLS scheme](https://github.com/dashpay/dash/issues/5001) |
+| → → `nType` | number | Required (exactly 1) | **Added in Dash Core 19.0.0** Type of masternode `0` - Regular masternode `1` - Evolution masternode |
+| → → `proRegTxHash` | string (hex) | Required (exactly 1) | The hash of the initial provider registration transaction as hex in RPC byte order |
+| → → `confirmedHash` | string (hex) | Required (exactly 1) | The hash of the block where the ProRegTx was mined |
+| → → `service` | string | Required (exactly 1) | The IP address/Port of the masternode |
+| → → `pubKeyOperator` | string (hex) | Required (exactly 1) | The operator public key |
+| → → `votingAddress` | string | Required (exactly 1) | The voting address |
+| → → `isValid` | bool | Required (exactly 1) | Set to `true` if masternode is valid |
+| → → `platformHTTPPort` | number | Optional (0 or 1) | **Added in Dash Core 19.0.0** TCP port of Platform HTTP/API interface (evonodes only) |
+| → → `platformNodeID` | string (hex) | Optional (0 or 1) | **Added in Dash Core 19.0.0** Platform P2P node ID, derived from P2P public key (evonodes only) |
+| → → `payoutAddress` | string | Optional (0 or 1) | *Added in Dash Core 18.1.0* The owner's payout address. Only included if the `extended` parameter is set to `true`. |
+| → → `operatorPayoutAddress` | string | Required (exactly 1) | *Added in Dash Core 18.1.0* The operator's payout address. Only included if the `extended` parameter is set to `true`. |
+| → `deletedQuorums` | array | Required (exactly 1) | An array of deleted quorums |
+| → → `llmqType` | number | Required (exactly 1) | The quorum type |
+| → → `quorumHash` | string (hex) | Required (exactly 1) | The hash of the quorum |
+| → `newQuorums` | array | Required (exactly 1) | An array of new quorums |
+| → → `version` | number | Required (exactly 1) | The quorum version |
+| → → `llmqType` | number | Required (exactly 1) | The quorum type |
+| → → `quorumHash` | string (hex) | Required (exactly 1) | The hash of the quorum |
+| → → `quorumIndex` | number | Required (exactly 1) | *Added in Dash Core 18.0.0* The index of the quorum |
+| → → `signersCount` | number | Required (exactly 1) | The number of signers for the quorum |
+| → → `signers` | string (hex) | Required (exactly 1) | *Added in Dash Core 0.16.0* Bitset representing the aggregated signers of this final commitment |
+| → → `validMembersCount` | number | Required (exactly 1) | The number of valid members in the quorum |
+| → → `validMembers` | string (hex) | Required (exactly 1) | *Added in Dash Core 0.16.0* Bitset of valid members in this commitment |
+| → → `quorumPublicKey` | string (hex) | Required (exactly 1) | The public key of the quorum |
+| → → `quorumVvecHash` | string (hex) | Required (exactly 1) | *Added in Dash Core 0.16.0* The SHA256 hash of the quorum verification vector |
+| → → `quorumSig` | string (hex) | Required (exactly 1) | *Added in Dash Core 0.16.0* Recovered threshold signature |
+| → → `membersSig` | string (hex) | Required (exactly 1) | *Added in Dash Core 0.16.0* Aggregated BLS signatures from all included commitments |
+| → `merkleRootMNList` | string (hex) | Required (exactly 1) | Merkle root of the masternode list |
+| → `merkleRootQuorums` | string (hex) | Optional (0 or 1) | *Added in Coinbase Transaction version 2 (Dash Core 0.14.0)* Merkle root of the masternode list. |
+| → `quorumsCLSigs` | array | Optional (0 or 1) | **Added in Coinbase Transaction version 3 (Dash Core 20.0.0)** An array of objects containing ChainLock signature details. Only present after v20 hard fork activation. |
+| → → ChainLock signature | object | Optional (0 or more) | Key: ChainLock signature Value: array of quorum indexes |
+| → → → Quorum index | number | Required (1 or more) | Quorum index indicating a `newQuorums` entry that used this ChainLock signature for their member calculation |
+
+*Example from Dash Core 20.0.0*
+
+```bash
+dash-cli -testnet protx diff 100000 100500 true
+```
+
+Result (truncated):
+
+```json
+{
+ "nVersion": 1,
+ "baseBlockHash": "000000008650f09124958e7352f844f9c15705171ac38ee6668534c5c238b916",
+ "blockHash": "000000000bcc2322bbfa41dbae3bc56f1468c4773c355a41671595e3cc9fbe71",
+ "cbTxMerkleTree": "03000000039c07679a6b4ca6f2865a6f6c3a4f188f74a211be75146f32f134212da580468a097c57203dc8d46de9db73463ae7a68704d823dd05dd97075116e83914136b1bdf955363517189da760b89ac71957734c6389315b74e41a23ed35ae85b3784960107",
+ "cbTx": "03000500010000000000000000000000000000000000000000000000000000000000000000ffffffff4c03948801046c09df5c08fabe6d6d7804018887034cffffffff000000000000000000000000000000000000000000010000000000000057ffffd37c0100000d2f6e6f64655374726174756d2f000000000200240e43000000001976a914b7ce0ea9ce2010f58ba4aaa6caa76671c438e89088acf6230e43000000001976a9145889b4d255f6867504666d79e521be5cce30a4fd88ac00000000460200948801004cd4af41e87dedc9f93914689b6c8e90f20aa5ffb701dfcaabe716e682fd5fbd6aa200e13378d938ef435f1ce952594574ac956a6cd8ace46e6ba07a68161709",
+ "deletedMNs": [
+ "e7d524e0b6b55bdba9721cc71f4e472eafbcaaa138c35899af3edfcad93eb6e2"
+ ],
+ "mnList": [
+ {
+ "nVersion": 1,
+ "nType": 0,
+ "proRegTxHash": "488910d2554fbc8f803011dd107b993b185ed6eeb7efef6dedfd74ec6656f58b",
+ "confirmedHash": "00000000031c08dad48934c9e2a0bf3dac307aa1b6106ed8aa4345b5423166cd",
+ "service": "51.38.80.34:19999",
+ "pubKeyOperator": "8b63fa3eb2ed4caba1fec3647bcec7a2886b5cde5b2cec6b5a60dc04193e959d21e96cbfa41388159450f244578de9a9",
+ "votingAddress": "yXRzKxTbQUGWCqYwXnMWw5SnNCPj19NBGZ",
+ "isValid": true,
+ "payoutAddress": "yWPKEmx59zHRyyVFgC5xYXAZvGoaHCxTDE"
+ },
+ {
+ "nVersion": 1,
+ "nType": 0,
+ "proRegTxHash": "9dadb2198c6c3f7d9aef77493ee2f8f0513198bada377078a99a1128ffa1b2b0",
+ "confirmedHash": "00000000006fef47babe96126b70087c46defeb9527de07a52e417fe7fcd2fce",
+ "service": "34.83.230.157:19999",
+ "pubKeyOperator": "963984167b298d8d77b1be02e38e2493a75251cf9abecc7facee85512eabab7b05ffe053e8956d98ad4a3c20b77ade1e",
+ "votingAddress": "yW5QUL6GqNswhSdMnWjcyAZ871VKrdY4jS",
+ "isValid": true,
+ "payoutAddress": "yMvjw8sFTBZy72sgGVHHwisF1ETmhr9ngq"
+ }
+ ],
+ "deletedQuorums": [
+ {
+ "llmqType": 1,
+ "quorumHash": "0000000004557649b0e4e3efddfab854ec08e26838cebc7eb42fff52d0602a06"
+ },
+ {
+ "llmqType": 1,
+ "quorumHash": "00000000156618545aecc80d2dbb0385cc200a63137ddad75278ba3069ad2615"
+ }
+ ],
+ "newQuorums": [
+ {
+ "version": 1,
+ "llmqType": 1,
+ "quorumHash": "0000000006393472bb9a01853bcf86f62c3744a329f1ef7812b45f9ec68cf802",
+ "quorumIndex": 0,
+ "signersCount": 49,
+ "signers": "fffffffeffff03",
+ "validMembersCount": 49,
+ "validMembers": "fffffffeffff03",
+ "quorumPublicKey": "8999f54dab1dd04cabdd70532b929ec69e4d252f3283eadce1defd4b6a9550a7b2bdb303261a1b39733ebc1c089dbb17",
+ "quorumVvecHash": "65fe94b2ea695ca03428b32f03bc22cbee5c61fb85b170c6f6aca42562244283",
+ "quorumSig": "0e925a8fcfd8722ff52a9feb9780ecfc1173a0715dfa17b6af9fd7a0abd2f13953e3111b2c92cbb7b892423a984dc8440ad5842d294b1e10b34361227922a3b24395495475cef16688e626074426003ceb48021560e22582010a0338947eec03",
+ "membersSig": "80266b6ae1eea601fc50e46e00fb9d56596230fee64673e42bd61e17ccf65d45973ab6f9a96cee4e3b6db69ce9d9e81205b3e8ee81fab42699ce54ec78f70667fa0571c8cf78b6c2ec991956c2e0e6553bbfcb4a92e8e5529238185c1765682f"
+ },
+ {
+ "version": 1,
+ "llmqType": 1,
+ "quorumHash": "000000001cd753a7cdead3abaff75a6d6e009108e0b28c66b07042a940471706",
+ "quorumIndex": 0,
+ "signersCount": 50,
+ "signers": "ffffffffffff03",
+ "validMembersCount": 50,
+ "validMembers": "ffffffffffff03",
+ "quorumPublicKey": "8282dc910667713e033b75cf59b3d415ba0d8cfa38eda468bdf6da1f67a66f13eef9e2a5b5280dc215320a47d84dcd06",
+ "quorumVvecHash": "5e1f653b26dba9bb59ed0e6cb7dd1335df11801189cdf282e53585c6eeff75ef",
+ "quorumSig": "1234604b562c454896b369b54a3c5e0f98b55d4e67b35be171860cd100a35a70bfe3280c4d2f878cbd6ae0f8163fab0d19f63aab5f57fa645aa73fda9eb2ed77a24054ae0f8a46d2a93a2958cd8a96430fa7b63f3f891ef434ad55b7302ea611",
+ "membersSig": "9545aa8277d340d234a76855972599f029d9f0d8b76ebed65178d7e584eb12541dd2c59877b592dd658cd765ac3b68fd1932cd5089108db0f32aa83e6b242a857d7a8c76db1a4f107dc8df0ecd6aab9443ed073dd0c91d19fdaff57c7ee3d65b"
+ }
+ ],
+ "merkleRootMNList": "bd5ffd82e616e7abcadf01b7ffa50af2908e6c9b681439f9c9ed7de841afd44c",
+ "merkleRootQuorums": "091716687aa06b6ee4acd86c6a95ac74455952e91c5f43ef38d97833e100a26a",
+ "quorumsCLSigs": [
+ {
+ "82492bd4bcd9cd24b89011f11368e06d79942579cfa957fad51429553a45d9990cc10e8b475f59d5b29cedb7598edd300ccb43614f4c15055ea8b172d0dad174f6e8ea83814d7cd2dd528ec7a882e941e909763f70b1065bcdce384be559c31b": [
+ 6,
+ 30,
+ 86
+ ]
+ },
+ {
+ "aa3759de99561b451f24d95945674ae8e73ceb0dcd9ce303228599993080e20f0add1a99e24e241bc905e66eb6155c4e07adbbf2232f476495aabb48e6761af3e07f6660c2607e54dc2efaee38934f714aeff9199a818fd2dcc043edbb7d429b": [
+ 13,
+ 37,
+ 93
+ ]
+ }
+ ]
+}
+```
+
+*See also: none*
+
+### ProTx Info
+
+The `protx info` RPC returns detailed information about a deterministic masternode.
+
+*Parameters*
+
+| Name | Type | Presence | Description |
+| ----------- | ------------ | ----------------------- | ------------------------- |
+| `proTxHash` | string | Required (Exactly 1) | The hash of the initial ProRegTx |
+| `blockHash` | string | Optional (0 or 1) | The hash of the block to get deterministic masternode state at. Defaults to chain tip if not provided. |
+
+*Result--Details about a specific deterministic masternode*
+
+| Name | Type | Presence | Description |
+| ----------------------------------- | ------------ | ----------------------- | ------------------------------------------------------------------------------------------ |
+| `result` | object | Required (exactly 1) | A JSON object containing a provider transaction, or JSON `null` if an error occurred |
+| Provider Transaction | object/null | Required (exactly 1) | An object containing a provider transaction |
+| → `type` | string | Required (exactly 1) | **Added in Dash Core 19.0.0** The type of masternode |
+| → `proTxHash` | string (hex) | Required (exactly 1) | The hash of the provider transaction as hex in RPC byte order |
+| → `collateralHash` | string (hex) | Required (exactly 1) | The hash of the collateral transaction as hex in RPC byte order |
+| → `collateralIndex` | number (int) | Required (exactly 1) | The collateral index |
+| → `collateralAddress` | string | Required (exactly 1) | The collateral address |
+| → `operatorReward` | number (float) | Required (exactly 1) | The operator reward %. The value must be between `0.00` and `100.00`. |
+| → `state` | object/null | Required (exactly 1) | An object containing a provider transaction state |
+| → → `version` | number (int) | Required (exactly 1) | **Added in Dash Core 19.2.0** The version of the most recent ProRegTx or ProUpRegTx |
+| → → `service` | string | Required (exactly 1) | The masternode's IP:Port |
+| → → `registeredHeight` | number (int) | Required (exactly 1) | The height where the masternode was registered |
+| → → `lastPaidHeight` | number (int) | Required (exactly 1) | The height where the masternode was last paid |
+| → → `consecutivePayments` | number (int) | Required (exactly 1) | **Added in Dash Core 19.0.0** The number of consecutive payments the masternode has received in the payment cycle |
+| → → `PoSePenalty` | number (int) | Required (exactly 1) | The masternode's proof of service penalty |
+| → → `PoSeRevivedHeight` | number (int) | Required (exactly 1) | The height where the masternode recovered from a proof of service ban |
+| → → `PoSeBanHeight` | number (int) | Required (exactly 1) | The height where the masternode was banned for proof of service violations |
+| → → `revocationReason` | number (int) | Required (exactly 1) | The reason for a ProUpRegTx revocation |
+| → → `ownerAddress` | string | Required (exactly 1) | The owner address |
+| → → `votingAddress` | string | Required (exactly 1) | The voting address |
+| → → `payoutAddress` | string | Required (exactly 1) | The owner's payout address |
+| → → `pubKeyOperator` | string (hex) | Required (exactly 1) | The operator public key |
+| → → `operatorPayoutAddress` | string | Required (exactly 1) | The operator's payout address |
+| → `confirmations` | number (int) | Required (exactly 1) | The number of confirmations this ProTx has |
+| → `wallet` | object/null | Required (exactly 1) | An object containing a wallet details related to this ProTx |
+| → → `hasOwnerKey` | bool | Required (exactly 1) | The owner key is present in this wallet |
+| → → `hasOperatorKey` | bool | Required (exactly 1) | The operator key is present in this wallet |
+| → → `hasVotingKey` | bool | Required (exactly 1) | The voting key is present in this wallet |
+| → → `ownsCollateral` | bool | Required (exactly 1) | The collateral is owned by this wallet |
+| → → `ownsPayeeScript` | bool | Required (exactly 1) | The payee script is owned by this wallet |
+| → → `ownsOperatorRewardScript` | bool | Required (exactly 1) | The operator reward script is owned by this wallet |
+| → `metaInfo` | object/null | Required (exactly 1) | *Added in Dash Core 0.16.0* An object containing a metainfo related to this ProTx |
+| → → `lastDSQ` | string | Required (exactly 1) | The owner key is present in this wallet |
+| → → `mixingTxCount` | string | Required (exactly 1) | The operator key is present in this wallet |
+| → → `outboundAttemptCount` | integer | Required (exactly 1) | **Added in Dash Core 19.2.0** Number of outbound attempts |
+| → → `lastOutboundAttempt` | integer | Required (exactly 1) | Unix epoch time of the last outbound attempted |
+| → → `lastOutboundAttemptElapsed` | integer | Required (exactly 1) | Elapsed time since last outbound attempt |
+| → → `lastOutboundSuccess` | integer | Required (exactly 1) | Unix epoch time of the last successful outbound connection |
+| → → `lastOutboundSuccessElapsed` | integer | Required (exactly 1) | Elapsed time since last successful outbound attempt |
+
+*Example from Dash Core 20.1.0*
+
+```bash
+dash-cli -testnet protx info\
+ b43dadbd485e4d1e1d202ea5180f0ad4e8e7f05e97a7e566a764ed714356bd1f
+```
+
+Result:
+
+```json
+{
+ "type": "Regular",
+ "proTxHash": "b43dadbd485e4d1e1d202ea5180f0ad4e8e7f05e97a7e566a764ed714356bd1f",
+ "collateralHash": "acc1127471fb4417e2ca6420948143c82dfdd3595d5cb4336e19356df4e5715c",
+ "collateralIndex": 1,
+ "collateralAddress": "yMitd7GcJRUF8AeWhT7nWB9bDoruWM7tRb",
+ "operatorReward": 0,
+ "state": {
+ "version": 1,
+ "service": "47.111.181.207:20001",
+ "registeredHeight": 247288,
+ "lastPaidHeight": 0,
+ "consecutivePayments": 0,
+ "PoSePenalty": 369,
+ "PoSeRevivedHeight": -1,
+ "PoSeBanHeight": 247428,
+ "revocationReason": 0,
+ "ownerAddress": "yaMGQThTVPUf1LBqVqa1jMTtLW7ByVbN78",
+ "votingAddress": "yQ8oETtF1pRQfBP4iake2e5zyCCm85CAET",
+ "payoutAddress": "yZw2EYuVkTNUzUqd7mfXRNhCMReonL99tu",
+ "pubKeyOperator": "90c0e9ec9dc5f08b1d4d0211920fe5d96a225c555a4ba7dd7f6cb14e271c925f2fc72316a01282973f9ad9cf1e39e038"
+ },
+ "confirmations": 602825,
+ "wallet": {
+ "hasOwnerKey": false,
+ "hasOperatorKey": false,
+ "hasVotingKey": false,
+ "ownsCollateral": false,
+ "ownsPayeeScript": false,
+ "ownsOperatorRewardScript": false
+ },
+ "metaInfo": {
+ "lastDSQ": 0,
+ "mixingTxCount": 0,
+ "outboundAttemptCount": 0,
+ "lastOutboundAttempt": 0,
+ "lastOutboundAttemptElapsed": 1686685781,
+ "lastOutboundSuccess": 0,
+ "lastOutboundSuccessElapsed": 1686685781
+ }
+}
+```
+
+### ProTx List
+
+The `protx list` RPC returns a list of provider transactions.
+
+Lists all ProTxs in your wallet or on-chain, depending on the given type. If `type` is not specified, it defaults to `registered`. All types have the optional argument `detailed` which if set to `true` will result in a detailed list being returned. If set to `false`, only the hashes of the ProTx will be returned.
+
+*Parameter #1---type*
+
+| Name | Type | Presence | Description |
+| ------ | ------ | -------------------- | ----------- |
+| `type` | string | Optional (0 or 1) | The type of ProTxs to list: `registered` - all ProTxs registered at height `valid` - all active/valid ProTxs at height `evo` - List only ProTxs corresponding to evonodes at the given chain height `wallet` - all ProTxs found in the current wallet
Height defaults to current chain-tip if one is not provided |
+
+*Parameter #2---detailed*
+
+| Name | Type | Presence | Description |
+| ---------- | ---- | -------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
+| `detailed` | bool | Optional (0 or 1) | If set to `false` (default), only ProTx hashes are returned. If set to `true`, a detailed list of ProTx details is returned. |
+
+*Parameter #3---height*
+
+| Name | Type | Presence | Description |
+| -------- | ------------ | -------------------- | ---------------------------------------------------------- |
+| `height` | number (int) | Optional (0 or 1) | List ProTxs from this height (default: current chain tip). |
+
+*Result (if `detailed` was `false`)---provider registration transaction hash*
+
+| Name | Type | Presence | Description |
+| -------- | ------------------- | ----------------------- | -------------------------------------------- |
+| `result` | string (hex): array | Required (exactly 1) | Array of provider transaction (ProTx) hashes |
+
+*Result (if `detailed` was `true`)---JSON provider registration transaction details*
+
+| Name | Type | Presence | Description |
+| ----------------------------------- | ------------ | ----------------------- | ----------------------------------------------------------------------------------------------- |
+| `result` | array | Required (exactly 1) | An array of objects each containing a provider transaction, or JSON `null` if an error occurred |
+| Provider Transaction | object/null | Required (exactly 1) | An object containing a provider transaction |
+| → `type` | string | Required (exactly 1) | **Added in Dash Core 19.0.0** The type of masternode |
+| → `proTxHash` | string (hex) | Required (exactly 1) | The hash of the provider transaction as hex in RPC byte order |
+| → `collateralHash` | string (hex) | Required (exactly 1) | The hash of the collateral transaction as hex in RPC byte order |
+| → `collateralIndex` | number (int) | Required (exactly 1) | The collateral index |
+| → → `collateralAddress` | string | Required (exactly 1) | The collateral address |
+| → `operatorReward` | number (float) | Required (exactly 1) | The operator reward %. The value must be between `0.00` and `100.00`. |
+| → `state` | object/null | Required (exactly 1) | An object containing a provider transaction state |
+| → → `version` | number (int) | Required (exactly 1) | **Added in Dash Core 19.2.0** The version of the most recent ProRegTx or ProUpRegTx |
+| → → `service` | string | Required (exactly 1) | The masternode's IP:Port |
+| → → `registeredHeight` | number (int) | Required (exactly 1) | The height where the masternode was registered |
+| → → `lastPaidHeight` | number (int) | Required (exactly 1) | The height where the masternode was last paid |
+| → → `consecutivePayments` | number (int) | Required (exactly 1) | **Added in Dash Core 19.0.0** The number of consecutive payments the masternode has received in the payment cycle |
+| → → `PoSePenalty` | number (int) | Required (exactly 1) | The masternode's proof of service penalty |
+| → → `PoSeRevivedHeight` | number (int) | Required (exactly 1) | The height where the masternode recovered from a proof of service ban |
+| → → `PoSeBanHeight` | number (int) | Required (exactly 1) | The height where the masternode was banned for proof of service violations |
+| → → `revocationReason` | number (int) | Required (exactly 1) | The reason for a ProUpRegTx revocation |
+| → → `ownerAddress` | string | Required (exactly 1) | The owner address |
+| → → `votingAddress` | string | Required (exactly 1) | The voting address |
+| → → `payoutAddress` | string | Required (exactly 1) | The owner's payout address |
+| → → `pubKeyOperator` | string (hex) | Required (exactly 1) | The operator public key |
+| → → `operatorPayoutAddress` | string | Required (exactly 1) | The operator's payout address |
+| → `confirmations` | number (int) | Required (exactly 1) | The number of confirmations this ProTx has |
+| → `wallet` | object/null | Required (exactly 1) | An object containing a wallet details related to this ProTx |
+| → → `hasOwnerKey` | bool | Required (exactly 1) | The owner key is present in this wallet |
+| → → `hasOperatorKey` | bool | Required (exactly 1) | The operator key is present in this wallet |
+| → → `hasVotingKey` | bool | Required (exactly 1) | The voting key is present in this wallet |
+| → → `ownsCollateral` | bool | Required (exactly 1) | The collateral is owned by this wallet |
+| → → `ownsPayeeScript` | bool | Required (exactly 1) | The payee script is owned by this wallet |
+| → → `ownsOperatorRewardScript` | bool | Required (exactly 1) | The operator reward script is owned by this wallet |
+| → `metaInfo` | object/null | Required (exactly 1) | *Added in Dash Core 0.16.0* An object containing a metainfo related to this ProTx |
+| → → `lastDSQ` | string | Required (exactly 1) | The owner key is present in this wallet |
+| → → `mixingTxCount` | string | Required (exactly 1) | The operator key is present in this wallet |
+| → → `outboundAttemptCount` | integer | Required (exactly 1) | **Added in Dash Core 19.2.0** Number of outbound attempts |
+| → → `lastOutboundAttempt` | integer | Required (exactly 1) | Unix epoch time of the last outbound attempted |
+| → → `lastOutboundAttemptElapsed` | integer | Required (exactly 1) | Elapsed time since last outbound attempt |
+| → → `lastOutboundSuccess` | integer | Required (exactly 1) | Unix epoch time of the last successful outbound connection |
+| → → `lastOutboundSuccessElapsed` | integer | Required (exactly 1) | Elapsed time since last successful outbound attempt |
+
+*Example from Dash Core 19.2.0*
+
+```bash
+dash-cli -testnet protx list
+```
+
+Result:
+
+```json
+[
+ "2b4a07a9b04dc42a0c19b85edb60954a27acaadfe3ee21d0171385778f34e1c2",
+ "61e6d780178d353940c4cb9b3073ac0c50792bbcf0b15c1750d2028b71e34929",
+ "ca193751f3cbed2aa4f1b33b0acc48c7ed8b9a3679858d69cf23157a4f545176",
+ "ba1b3330e16a0876b7a186e7ceb689f03ec646e611e91d7139de021bbf13afdd"
+]
+```
+
+List of ProTxs which are active/valid at the given chain height.
+
+```bash
+dash-cli -testnet protx list valid false 7090
+```
+
+Result:
+
+```json
+[
+ "c48a44a9493eae641bea36992bc8c27eaaa33adb1884960f55cd259608d26d2f"
+]
+```
+
+Detailed list of ProTxs which are active/valid at the given chain height.
+
+```bash
+dash-cli -testnet protx list valid true 7090
+```
+
+Result:
+
+```json
+[
+ {
+ "type": "Regular",
+ "proTxHash": "c48a44a9493eae641bea36992bc8c27eaaa33adb1884960f55cd259608d26d2f",
+ "collateralHash": "e3270ff48c4b802d56ee58d3d53777f7f9c289964e4df0842518075fc81345b1",
+ "collateralIndex": 3,
+ "operatorReward": 0,
+ "state": {
+ "version": 1,
+ "service": "173.61.30.231:19013",
+ "registeredHeight": 7090,
+ "lastPaidHeight": 0,
+ "consecutivePayments": 0,
+ "PoSePenalty": 0,
+ "PoSeRevivedHeight": -1,
+ "PoSeBanHeight": -1,
+ "revocationReason": 0,
+ "ownerAddress": "yTMDce5yEpiPqmgPrPmTj7yAmQPJERUSVy",
+ "votingAddress": "yTMDce5yEpiPqmgPrPmTj7yAmQPJERUSVy",
+ "payoutAddress": "yU3UdrmS6KpWwBDLQTkp1KjXePwWsMbYdj",
+ "pubKeyOperator": "8700add55a28ef22ec042a2f28e25fb4ef04b3024a7c56ad7eed4aebc736f312d18f355370dfb6a5fec9258f464b227e"
+ },
+ "confirmations": -1,
+ "wallet": {
+ "hasOwnerKey": false,
+ "hasOperatorKey": false,
+ "hasVotingKey": false,
+ "ownsCollateral": false,
+ "ownsPayeeScript": false,
+ "ownsOperatorRewardScript": false
+ },
+ "metaInfo": {
+ "lastDSQ": 0,
+ "mixingTxCount": 0,
+ "outboundAttemptCount": 0,
+ "lastOutboundAttempt": 0,
+ "lastOutboundAttemptElapsed": 1686684013,
+ "lastOutboundSuccess": 0,
+ "lastOutboundSuccessElapsed": 1686684013
+ }
+ }
+]
+```
+
+### ProTx List Diff
+
+The `protx listdiff` RPC calculates a full MN list diff between two masternode lists.
+
+*Parameter #1---baseBlock*
+
+| Name | Type | Presence | Description |
+| ----------- | ------- | -------------------- | ------------------------ |
+| `baseBlock` | numeric | Required (exactly 1) | The starting block height|
+
+*Parameter #2---block*
+
+| Name | Type | Presence | Description |
+| ------- | ------- | -------------------- | -----------------------|
+| `block` | numeric | Required (exactly 1) | The ending block height|
+
+*Example from Dash Core*
+
+```bash
+dash-cli -testnet protx listdiff 7100 7135
+```
+
+Result:
+
+```json
+{
+ "baseHeight": 7100,
+ "blockHeight": 7135,
+ "addedMNs": [
+ {
+ "type": "Regular",
+ "proTxHash": "682b3e58e283081c51f2e8e7a7de5c7312a2e8074affaf389fafcc39c4805404",
+ "collateralHash": "4955dcb8f9f56705b2ce480369c8a0e50b05c3dd1770160c4ddd47515a87e290",
+ "collateralIndex": 1,
+ "collateralAddress": "ySbK2DePJxPzkeHD2ccnMmsJjvBK5tJSPU",
+ "operatorReward": 0,
+ "state": {
+ "version": 1,
+ "service": "64.193.62.206:19999",
+ "registeredHeight": 7134,
+ "lastPaidHeight": 7135,
+ "consecutivePayments": 0,
+ "PoSePenalty": 0,
+ "PoSeRevivedHeight": -1,
+ "PoSeBanHeight": -1,
+ "revocationReason": 0,
+ "ownerAddress": "yid7uAsVJzvSLrEekHuGNuY3KWCqJopyJ8",
+ "votingAddress": "yid7uAsVJzvSLrEekHuGNuY3KWCqJopyJ8",
+ "payoutAddress": "yf7kAvZXd49hnWaScRbbLP9LMKDvz1f1tp",
+ "pubKeyOperator": "05f2269374676476f00068b7cb168d124b7b780a92e8564e18edf45d77497abd9debf186ee98001a0c9a6dfccbab7a0a"
+ }
+ }
+ ],
+ "removedMNs": [
+ ],
+ "updatedMNs": [
+ {
+ "c48a44a9493eae641bea36992bc8c27eaaa33adb1884960f55cd259608d26d2f": {
+ "lastPaidHeight": 7134
+ }
+ }
+ ]
+}
+```
+
+### ProTx Register
+
+The `protx register` RPC creates a ProRegTx referencing an existing collateral and and sends it to the network.
+
+*Parameter #1---collateral address*
+
+| Name | Type | Presence | Description |
+| ---------------- | ------------ | ----------------------- | ------------------------------- |
+| `collateralHash` | string (hex) | Required (exactly 1) | The collateral transaction hash |
+
+*Parameter #2---collateral index*
+
+| Name | Type | Presence | Description |
+| ----------------- | ------------ | ----------------------- | --------------------------------------- |
+| `collateralIndex` | string (hex) | Required (exactly 1) | The collateral transaction output index |
+
+*Parameter #3---IP Address and port*
+
+| Name | Type | Presence | Description |
+| ----------- | ------ | ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
+| `ipAndPort` | string | Required (exactly 1) | IP and port in the form `IP:PORT`. Must be unique on the network. Can be set to `0`, which will require a ProUpServTx afterwards. |
+
+*Parameter #4---owner address*
+
+| Name | Type | Presence | Description |
+| -------------- | ------ | ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `ownerAddress` | string | Required (exactly 1) | The Dash address to use for payee updates and proposal voting. The corresponding private key does not have to be known by this wallet. The address must be unused and must differ from the `collateralAddress`. |
+
+*Parameter #5---operator public key*
+
+| Name | Type | Presence | Description |
+| ---------------- | ------------ | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| `operatorPubKey` | string (hex) | Required (exactly 1) | The operator public key. The private key does not have to be known. It has to match the private key which is later used when operating the masternode. |
+
+*Parameter #6---voting address*
+
+| Name | Type | Presence | Description |
+| --------------- | ------ | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `votingAddress` | string | Required (exactly 1) | The voting address. The private key does not have to be known by your wallet. It has to match the private key which is later used when voting on proposals. If set to an empty string, `ownerAddress` will be used. |
+
+*Parameter #7---operator reward*
+
+| Name | Type | Presence | Description |
+| ---------------- | ------ | ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `operatorReward` | number | Required (exactly 1) | The fraction in % to share with the operator. The value must be between `0.00` and `100.00`. **Note**: If non-zero, `ipAndPort` must be zero as well. |
+
+*Parameter #8---payout address*
+
+| Name | Type | Presence | Description |
+| --------------- | ------ | ----------------------- | ------------------------------------------------------- |
+| `payoutAddress` | string | Required (exactly 1) | The Dash address to use for masternode reward payments. |
+
+*Parameter #9---fee source address*
+
+| Name | Type | Presence | Description |
+| ------------------ | ------ | -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `feeSourceAddress` | string | Optional (0 or 1) | If specified, the wallet will only use coins from this address to fund the ProTx. If not specified, `payoutAddress` will be used. The private key belonging to this address must be known in your wallet. |
+
+*Parameter #10---whether to submit to the network or not*
+
+| Name | Type | Presence | Description |
+| -------- | ---- | -------------------- | ---------------------------------------------------------------------- |
+| `submit` | bool | Optional (0 or 1) | If `true` (default), the resulting transaction is sent to the network. |
+
+*Result if `submit` is not set or set to `true`---provider registration transaction hash*
+
+| Name | Type | Presence | Description |
+| -------- | ------------ | ----------------------- | ------------------------------------------------- |
+| `result` | string (hex) | Required (exactly 1) | Provider registration transaction (ProRegTx) hash |
+
+*Example from Dash Core 0.13.0*
+
+```bash
+dash-cli -testnet protx register\
+ 8b2eab3413abb6e04d17d1defe2b71039ba6b6f72ea1e5dab29bb10e7b745948 1\
+ 2.3.4.5:2345 yNLuVTXJbjbxgrQX5LSMi7hV19We8hT2d6\
+ 88d719278eef605d9c19037366910b59bc28d437de4a8db4d76fda6d6985dbdf10404fb9bb5cd0e8c22f4a914a6c5566\
+ yNLuVTXJbjbxgrQX5LSMi7hV19We8hT2d6 5 yjJJLkYDUN6X8gWjXbCoKEXoiLeKxxMMRt
+```
+
+Result:
+
+```text
+61e6d780178d353940c4cb9b3073ac0c50792bbcf0b15c1750d2028b71e34929
+```
+
+*Result if `submit` set to `false`---serialized and signed provider registration transaction*
+
+| Name | Type | Presence | Description |
+| -------- | ------------ | ----------------------- | ------------------------------------------------------------------ |
+| `result` | string (hex) | Required (exactly 1) | Serialized and signed provider registration transaction (ProRegTx) |
+
+*Example from Dash Core 0.17.0*
+
+```bash
+dash-cli -testnet protx register\
+b16e6f6ac71d16a8be46a78491bbdba20910287f59471a46514b88d7203bac6b 1 2.3.4.5:2345\
+yNLuVTXJbjbxgrQX5LSMi7hV19We8hT2d6\
+8ae227ffcbd4cbdc7ae2fe3e63264701ef6af1de71e6cade51867ecb7ed58b63862568522bab933987d0d043fa5590e1\
+yNLuVTXJbjbxgrQX5LSMi7hV19We8hT2d6 5 yjJJLkYDUN6X8gWjXbCoKEXoiLeKxxMMRt\
+yUYTxqjpCfAAK4vgxXtBPywRBtZqsxN7Vy false
+```
+
+Result:
+
+```text
+0300010001fe1caa50e5b8181be868fbd9fbd93affeb6c4a91a3c73373a6b25d548c7e6d41010000\
+006b48304502210081d206a8332d5b8715ca831155ef5c7e339d33cde2b0b27310b95aafc8c560f9\
+02204029d00d2b5515565321ec1fd6748fa0544b7356d9a389e4d1ce6ab4bb64d364012103c67d86\
+944315838aea7ec80d390b5d09b91b62483370d4979da5ccf7a7df77a9feffffff01a6f0433e0000\
+00001976a9145a375814e9caf5b8575a8221be246457e5c5c28d88ac00000000fd12010100000000\
+006bac3b20d7884b51461a47597f281009a2dbbb9184a746bea8161dc76a6f6eb101000000000000\
+00000000000000ffff0203040509291636e84d02310b0b458f3eb51d8ea8b2e684b7ce8ae227ffcb\
+d4cbdc7ae2fe3e63264701ef6af1de71e6cade51867ecb7ed58b63862568522bab933987d0d043fa\
+5590e11636e84d02310b0b458f3eb51d8ea8b2e684b7cef4011976a914fc136008111fcc7a05be6c\
+ec66f97568727a9e5188acb3ccf680086ae11217236efcccd67b0b72e83c79a043d6c6d064378fdd\
+5f21204120fac89c76d3f116d95a675e112ddbdbb7a78f957506299fe592662acd44b46f262d1c4d\
+47d9401e0a569a5488728e09542d0545ab56f8249a4b21e03445fa411e
+```
+
+### ProTx Register Legacy
+
+:::{note}
+Since the v19 hard fork activation, this command must be used if a legacy scheme BLS key is being used to register a masternode. In all other cases the [`protx register`RPC](#protx-register) should be used instead.
+
+Legacy scheme BLS keys are created if the [`bls generate` RPC](#bls-generate) is run prior to v19 hard fork activation OR if a legacy key is explicitly generated using the [`bls generate legacy` RPC](#bls-generate).
+:::
+
+The `protx register_legacy` RPC works similar to `protx register`, but parses the operator key using the legacy BLS scheme. The collateral is specified through `collateralHash` and `collateralIndex` and must be an unspent transaction output spendable by this wallet. It must also not be used by any other masternode. This RPC requires a wallet passphrase to be set with walletpassphrase call if wallet is encrypted.
+
+*Parameter #1---collateral hash*
+
+| Name | Type | Presence | Description |
+| ---------------- | ------------ | ----------------------- | ------------------------------- |
+| `collateralHash` | string (hex) | Required (exactly 1) | The collateral transaction hash |
+
+*Parameter #2---collateral index*
+
+| Name | Type | Presence | Description |
+| ----------------- | ------------ | ----------------------- | --------------------------------------- |
+| `collateralIndex` | string (hex) | Required (exactly 1) | The collateral transaction output index |
+
+*Parameter #3---IP Address and port*
+
+| Name | Type | Presence | Description |
+| ----------- | ------ | ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
+| `ipAndPort` | string | Required (exactly 1) | IP and port in the form `IP:PORT`. Must be unique on the network. Can be set to `0`, which will require a ProUpServTx afterwards. |
+
+*Parameter #4---owner address*
+
+| Name | Type | Presence | Description |
+| -------------- | ------ | ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `ownerAddress` | string | Required (exactly 1) | The Dash address to use for payee updates and proposal voting. The corresponding private key does not have to be known by this wallet. The address must be unused and must differ from the `collateralAddress`. |
+
+*Parameter #5---operator public key*
+
+| Name | Type | Presence | Description |
+| -------------------------- | ------------ | ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `operatorPubKey_register` | string (hex) | Required (exactly 1) | The operator BLS public key. The BLS private key does not have to be known. It has to match the BLS private key which is later used when operating the masternode. |
+
+*Parameter #6---voting address*
+
+| Name | Type | Presence | Description |
+| ------------------------ | ------ | ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `votingAddress_register` | string | Required (exactly 1) | The voting key address. The private key does not have to be known by your wallet. It has to match the private key which is later used when voting on proposals. If set to an empty string, ownerAddress will be used. |
+
+*Parameter #7---operator reward*
+
+| Name | Type | Presence | Description |
+| ---------------- | ------ | ----------------------- | ------------------------------------------------------------------------------------------------ |
+| `operatorReward` | number | Required (exactly 1) | The fraction in % to share with the operator. The value must be between `0.00` and `100.00`. |
+
+*Parameter #8---payout address*
+
+| Name | Type | Presence | Description |
+| ------------------------ | ------ | ----------------------- | ------------------------------------------------------- |
+| `payoutAddress_register` | string | Required (exactly 1) | The Dash address to use for masternode reward payments. |
+
+*Parameter #9---fee source address*
+
+| Name | Type | Presence | Description |
+| ------------------ | ------ | -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `feeSourceAddress` | string | Optional (0 or 1) | If specified, the wallet will only use coins from this address to fund the ProTx. If not specified, `payoutAddress` will be used. The private key belonging to this address must be known in your wallet. |
+
+*Parameter #10---whether to submit to the network or not*
+
+| Name | Type | Presence | Description |
+| -------- | ---- | -------------------- | ---------------------------------------------------------------------- |
+| `submit` | bool | Optional (0 or 1) | If `true` (default), the resulting transaction is sent to the network. |
+
+*Result if `submit` is not set or set to `true`---provider registration transaction hash*
+
+| Name | Type | Presence | Description |
+| -------- | ------------ | ----------------------- | ------------------------------------------------- |
+| `result` | string (hex) | Required (exactly 1) | Provider registration transaction (ProRegTx) hash |
+
+*Example from Dash Core 19.0.0*
+
+```bash
+dash-cli -testnet protx register_legacy\
+ 8b2eab3413abb6e04d17d1defe2b71039ba6b6f72ea1e5dab29bb10e7b745948 1\ 0
+ 2.3.4.5:2345 yNLuVTXJbjbxgrQX5LSMi7hV19We8hT2d6\ 88d719278eef605d9c19037366910b59bc28d437de4a8db4d76fda6d6985dbdf10404fb9bb5cd0e8c22f4a914a6c5566\
+ yNLuVTXJbjbxgrQX5LSMi7hV19We8hT2d6 5 yjJJLkYDUN6X8gWjXbCoKEXoiLeKxxMMRt
+```
+
+Result:
+
+```text
+61e6d780178d353940c4cb9b3073ac0c50792bbcf0b15c1750d2028b71e34929
+```
+
+*Result if `submit` set to `false`---serialized and signed provider registration transaction*
+
+| Name | Type | Presence | Description |
+| -------- | ------------ | ----------------------- | ------------------------------------------------------------------ |
+| `result` | string (hex) | Required (exactly 1) | Serialized and signed provider registration transaction (ProRegTx) |
+
+*Example from Dash Core 19.0.0*
+
+```bash
+dash-cli -testnet protx register_legacy\
+ 8b2eab3413abb6e04d17d1defe2b71039ba6b6f72ea1e5dab29bb10e7b745948 1\ 0
+ 2.3.4.5:2345 yNLuVTXJbjbxgrQX5LSMi7hV19We8hT2d6\ 88d719278eef605d9c19037366910b59bc28d437de4a8db4d76fda6d6985dbdf10404fb9bb5cd0e8c22f4a914a6c5566\
+ yNLuVTXJbjbxgrQX5LSMi7hV19We8hT2d6 5 yjJJLkYDUN6X8gWjXbCoKEXoiLeKxxMMRt false
+```
+
+Result:
+
+```text
+0300010001fe1caa50e5b8181be868fbd9fbd93affeb6c4a91a3c73373a6b25d548c7e6d41010000\
+006b48304502210081d206a8332d5b8715ca831155ef5c7e339d33cde2b0b27310b95aafc8c560f9\
+02204029d00d2b5515565321ec1fd6748fa0544b7356d9a389e4d1ce6ab4bb64d364012103c67d86\
+944315838aea7ec80d390b5d09b91b62483370d4979da5ccf7a7df77a9feffffff01a6f0433e0000\
+00001976a9145a375814e9caf5b8575a8221be246457e5c5c28d88ac00000000fd12010100000000\
+006bac3b20d7884b51461a47597f281009a2dbbb9184a746bea8161dc76a6f6eb101000000000000\
+00000000000000ffff0203040509291636e84d02310b0b458f3eb51d8ea8b2e684b7ce8ae227ffcb\
+d4cbdc7ae2fe3e63264701ef6af1de71e6cade51867ecb7ed58b63862568522bab933987d0d043fa\
+5590e11636e84d02310b0b458f3eb51d8ea8b2e684b7cef4011976a914fc136008111fcc7a05be6c\
+ec66f97568727a9e5188acb3ccf680086ae11217236efcccd67b0b72e83c79a043d6c6d064378fdd\
+5f21204120fac89c76d3f116d95a675e112ddbdbb7a78f957506299fe592662acd44b46f262d1c4d\
+47d9401e0a569a5488728e09542d0545ab56f8249a4b21e03445fa411e
+```
+
+### ProTx Register Fund
+
+The `protx register_fund` RPC creates and funds a ProRegTx with the 1,000 DASH necessary for a masternode and then sends it to the network.
+
+*Parameter #1---collateral address*
+
+| Name | Type | Presence | Description |
+| ------------------- | ------ | ----------------------- | ------------------------------------------ |
+| `collateralAddress` | string | Required (exactly 1) | The Dash address to send the collateral to |
+
+*Parameter #2---IP Address and port*
+
+| Name | Type | Presence | Description |
+| ----------- | ------ | ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
+| `ipAndPort` | string | Required (exactly 1) | IP and port in the form `IP:PORT`. Must be unique on the network. Can be set to `0`, which will require a ProUpServTx afterwards. |
+
+*Parameter #3---owner address*
+
+| Name | Type | Presence | Description |
+| -------------- | ------ | ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `ownerAddress` | string | Required (exactly 1) | The Dash address to use for payee updates and proposal voting. The corresponding private key does not have to be known by this wallet. The address must be unused and must differ from the `collateralAddress`. |
+
+*Parameter #4---operator public key*
+
+| Name | Type | Presence | Description |
+| ---------------- | ------------ | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| `operatorPubKey` | string (hex) | Required (exactly 1) | The operator public key. The private key does not have to be known. It has to match the private key which is later used when operating the masternode. |
+
+*Parameter #5---voting address*
+
+| Name | Type | Presence | Description |
+| --------------- | ------ | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `votingAddress` | string | Required (exactly 1) | The voting address. The private key does not have to be known by your wallet. It has to match the private key which is later used when voting on proposals. If set to an empty string, `ownerAddress` will be used. |
+
+*Parameter #6---operator reward*
+
+| Name | Type | Presence | Description |
+| ---------------- | ------ | ----------------------- | ----------------------------------------------------------------------------------------------- |
+| `operatorReward` | number | Required (exactly 1) | The fraction in % to share with the operator. The value must be between `0.00` and `100.00`. |
+
+*Parameter #7---payout address*
+
+| Name | Type | Presence | Description |
+| --------------- | ------ | ----------------------- | ------------------------------------------------------- |
+| `payoutAddress` | string | Required (exactly 1) | The Dash address to use for masternode reward payments. |
+
+*Parameter #8---fund address*
+
+| Name | Type | Presence | Description |
+| ------------- | ------ | -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `fundAddress` | string | Optional (0 or 1) | If specified, the wallet will only use coins from this address to fund the ProTx. If not specified, `payoutAddress` will be used. The private key belonging to this address must be known in your wallet. |
+
+*Parameter #9---whether to submit to the network or not*
+
+| Name | Type | Presence | Description |
+| -------- | ---- | -------------------- | ---------------------------------------------------------------------- |
+| `submit` | bool | Optional (0 or 1) | If `true` (default), the resulting transaction is sent to the network. |
+
+*Result if `submit` is not set or set to `true`---provider registration transaction hash*
+
+| Name | Type | Presence | Description |
+| -------- | ------------ | ----------------------- | ------------------------------------------------- |
+| `result` | string (hex) | Required (exactly 1) | Provider registration transaction (ProRegTx) hash |
+
+*Example from Dash Core 0.13.0*
+
+```bash
+dash-cli -testnet protx register_fund yakx4mMRptKhgfjedNzX5FGQq7kSSBF2e7\
+ 3.4.5.6:3456 yX2cDS4kcJ4LK4uq9Hd4TG7kURV3sGLZrw\
+ 0e02146e9c34cfbcb3f3037574a1abb35525e2ca0c3c6901dbf82ac591e30218d1711223b7ca956edf39f3d984d06d51\
+ yX2cDS4kcJ4LK4uq9Hd4TG7kURV3sGLZrw 5 yakx4mMRptKhgfjedNzX5FGQq7kSSBF2e7
+```
+
+Result:
+
+```text
+ba1b3330e16a0876b7a186e7ceb689f03ec646e611e91d7139de021bbf13afdd
+```
+
+*Result if `submit` set to `false`---serialized and signed provider registration transaction*
+
+| Name | Type | Presence | Description |
+| -------- | ------------ | ----------------------- | ------------------------------------------------------------------ |
+| `result` | string (hex) | Required (exactly 1) | Serialized and signed provider registration transaction (ProRegTx) |
+
+*Example from Dash Core 0.17.0*
+
+```bash
+dash-cli -testnet protx register_fund yNLuVTXJbjbxgrQX5LSMi7hV19We8hT2d6\
+3.4.5.6:3456 yURczr3qY31xkQZfFu8eZvKz19eAEPQxsd\
+0e02146e9c34cfbcb3f3037574a1abb35525e2ca0c3c6901dbf82ac591e30218d1711223b7ca956edf39f3d984d06d51\
+yURczr3qY31xkQZfFu8eZvKz19eAEPQxsd 5 yUYTxqjpCfAAK4vgxXtBPywRBtZqsxN7Vy\
+yRMFHxcJ2aS2vfo5whhE2Gg73dfQVm8LAF 0
+```
+
+Result:
+
+```text
+030001000156701575e76bca5720fa364ea6efc4b713279710dd1b8906797d18bd7048b71a010000\
+006b4830450221009178a387b3d82e3606e6484373508ef1ed4c1d7d98f8a0ca0851687c59edacaa\
+02204d245d20689b5be1100536faaadbb1781e3a67a55e9ecc613adb2a34f419c3cd012103109325\
+a92f9e6d31d2ebd0595d471275ae8d635db2a0c42358f387e1af69c14dfeffffff0200e876481700\
+00001976a9141636e84d02310b0b458f3eb51d8ea8b2e684b7ce88ac8c7a918b300000001976a914\
+372fd07f715c33ce88873a8e758d890e017cf02588ac00000000d101000000000000000000000000\
+000000000000000000000000000000000000000000000000000000000000000000000000000000ff\
+ff030405060d8058ebf95961c207ebd525793ccb43f60ce34a5cd50e02146e9c34cfbcb3f3037574\
+a1abb35525e2ca0c3c6901dbf82ac591e30218d1711223b7ca956edf39f3d984d06d5158ebf95961\
+c207ebd525793ccb43f60ce34a5cd5f4011976a9145a375814e9caf5b8575a8221be246457e5c5c2\
+8d88ac45084a0f63d6f06767c941ffd5af4ed17ea0e28afa481e46b2bdbadbd8446c8c00\
+```
+
+### ProTx Register Fund Legacy
+
+:::{note}
+Since the v19 hard fork activation, this command must be used if a legacy scheme BLS key is being used to register a masternode. In all other cases the [`protx register_fund` RPC](#protx-register-fund) should be used instead.
+
+Legacy scheme BLS keys are created if the [`bls generate` RPC](#bls-generate) is run prior to v19 hard fork activation OR if a legacy key is explicitly generated using the [`bls generate legacy` RPC](#bls-generate).
+:::
+
+The `protx register_fund_legacy` RPC creates, funds, and sends a ProTx to the network. The resulting transaction will move 1000 DASH to the address specified by `collateralAddress` and will then function as the collateral of your masternode. A few of the limitations you see in the arguments are temporary and might be lifted after DIP3 is fully deployed.
+
+*Parameter #1---collateral address*
+
+| Name | Type | Presence | Description |
+| ------------------- | ------ | ----------------------- | ------------------------------------------ |
+| `collateralAddress` | string | Required (exactly 1) | The Dash address to send the collateral to |
+
+*Parameter #2---IP Address and port*
+
+| Name | Type | Presence | Description |
+| ----------- | ------ | ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
+| `ipAndPort` | string | Required (exactly 1) | IP and port in the form `IP:PORT`. Must be unique on the network. Can be set to `0`, which will require a ProUpServTx afterwards. |
+
+*Parameter #3---owner address*
+
+| Name | Type | Presence | Description |
+| -------------- | ------ | ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `ownerAddress` | string | Required (exactly 1) | The Dash address to use for payee updates and proposal voting. The corresponding private key does not have to be known by this wallet. The address must be unused and must differ from the `collateralAddress`. |
+
+*Parameter #4---operator public key*
+
+| Name | Type | Presence | Description |
+| ------------------------- | ------------ | ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `operatorPubKey_register` | string (hex) | Required (exactly 1) | The operator BLS public key. The BLS private key does not have to be known. It has to match the BLS private key which is later used when operating the masternode. |
+
+*Parameter #5---voting address*
+
+| Name | Type | Presence | Description |
+| --------------- | ------ | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `votingAddress` | string | Required (exactly 1) | The voting address. The private key does not have to be known by your wallet. It has to match the private key which is later used when voting on proposals. If set to an empty string, `ownerAddress` will be used. |
+
+*Parameter #6---operator reward*
+
+| Name | Type | Presence | Description |
+| ---------------- | ------ | ----------------------- | ----------------------------------------------------------------------------------------------- |
+| `operatorReward` | number | Required (exactly 1) | The fraction in % to share with the operator. The value must be between `0.00` and `100.00`. |
+
+*Parameter #7---payout address*
+
+| Name | Type | Presence | Description |
+| ------------------------ | ------ | ----------------------- | ------------------------------------------------------- |
+| `payoutAddress_register` | string | Required (exactly 1) | The Dash address to use for masternode reward payments. |
+
+*Parameter #8---fund address*
+
+| Name | Type | Presence | Description |
+| ------------- | ------ | -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `fundAddress` | string | Optional (0 or 1) | If specified, the wallet will only use coins from this address to fund the ProTx. If not specified, `payoutAddress` will be used. The private key belonging to this address must be known in your wallet. |
+
+*Parameter #9---whether to submit to the network or not*
+
+| Name | Type | Presence | Description |
+| -------- | ---- | -------------------- | ---------------------------------------------------------------------- |
+| `submit` | bool | Optional (0 or 1) | If `true` (default), the resulting transaction is sent to the network. |
+
+\*Result if `submit` is not set or set to `true`
+
+| Name | Type | Presence | Description |
+| -------- | ------------ | ----------------------- | ------------------ |
+| `result` | string (hex) | Required (exactly 1) | The transaction id |
+
+*Example from Dash Core 19.0.0*
+
+```bash
+dash-cli -testnet protx register_fund_legacy yakx4mMRptKhgfjedNzX5FGQq7kSSBF2e7\
+ 3.4.5.6:3456 yX2cDS4kcJ4LK4uq9Hd4TG7kURV3sGLZrw\
+ 0e02146e9c34cfbcb3f3037574a1abb35525e2ca0c3c6901dbf82ac591e30218d1711223b7ca956edf39f3d984d06d51\
+ yX2cDS4kcJ4LK4uq9Hd4TG7kURV3sGLZrw 5 yakx4mMRptKhgfjedNzX5FGQq7kSSBF2e7
+```
+
+Result:
+
+```text
+ba1b3330e16a0876b7a186e7ceb689f03ec646e611e91d7139de021bbf13afdd
+```
+
+*Result if `submit` set to `false`---serialized and signed provider registration transaction*
+
+| Name | Type | Presence | Description |
+| -------- | ------------ | ----------------------- | ----------------------------------------- |
+| `result` | string (hex) | Required (exactly 1) | The serialized signed ProTx in hex format |
+
+*Example from Dash Core 19.0.0*
+
+```bash
+dash-cli -testnet protx register_fund_legacy yNLuVTXJbjbxgrQX5LSMi7hV19We8hT2d6\
+3.4.5.6:3456 yURczr3qY31xkQZfFu8eZvKz19eAEPQxsd\
+0e02146e9c34cfbcb3f3037574a1abb35525e2ca0c3c6901dbf82ac591e30218d1711223b7ca956edf39f3d984d06d51\
+yURczr3qY31xkQZfFu8eZvKz19eAEPQxsd 5 yUYTxqjpCfAAK4vgxXtBPywRBtZqsxN7Vy\
+yRMFHxcJ2aS2vfo5whhE2Gg73dfQVm8LAF 0
+```
+
+Result:
+
+```text
+030001000156701575e76bca5720fa364ea6efc4b713279710dd1b8906797d18bd7048b71a010000\
+006b4830450221009178a387b3d82e3606e6484373508ef1ed4c1d7d98f8a0ca0851687c59edacaa\
+02204d245d20689b5be1100536faaadbb1781e3a67a55e9ecc613adb2a34f419c3cd012103109325\
+a92f9e6d31d2ebd0595d471275ae8d635db2a0c42358f387e1af69c14dfeffffff0200e876481700\
+00001976a9141636e84d02310b0b458f3eb51d8ea8b2e684b7ce88ac8c7a918b300000001976a914\
+372fd07f715c33ce88873a8e758d890e017cf02588ac00000000d101000000000000000000000000\
+000000000000000000000000000000000000000000000000000000000000000000000000000000ff\
+ff030405060d8058ebf95961c207ebd525793ccb43f60ce34a5cd50e02146e9c34cfbcb3f3037574\
+a1abb35525e2ca0c3c6901dbf82ac591e30218d1711223b7ca956edf39f3d984d06d5158ebf95961\
+c207ebd525793ccb43f60ce34a5cd5f4011976a9145a375814e9caf5b8575a8221be246457e5c5c2\
+8d88ac45084a0f63d6f06767c941ffd5af4ed17ea0e28afa481e46b2bdbadbd8446c8c00\
+```
+
+### ProTx Register Prepare
+
+The `protx register_prepare` 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. The ProTx must be passed to [`protx register_submit`](#protx-register-submit).
+
+*Parameter #1---collateral address*
+
+| Name | Type | Presence | Description |
+| ---------------- | ------------ | ----------------------- | ------------------------------- |
+| `collateralHash` | string (hex) | Required (exactly 1) | The collateral transaction hash |
+
+*Parameter #2---collateral index*
+
+| Name | Type | Presence | Description |
+| ----------------- | ------------ | ----------------------- | --------------------------------------- |
+| `collateralIndex` | string (hex) | Required (exactly 1) | The collateral transaction output index |
+
+*Parameter #3---IP Address and port*
+
+| Name | Type | Presence | Description |
+| ----------- | ------ | ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
+| `ipAndPort` | string | Required (exactly 1) | IP and port in the form 'IP:PORT'. Must be unique on the network. Can be set to '0', which will require a ProUpServTx afterwards. |
+
+*Parameter #4---owner address*
+
+| Name | Type | Presence | Description |
+| -------------- | ------ | ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `ownerAddress` | string | Required (exactly 1) | The Dash address to use for payee updates and proposal voting. The corresponding private key does not have to be known by this wallet. The address must be unused and must differ from the `collateralAddress`. |
+
+*Parameter #5---operator public key*
+
+| Name | Type | Presence | Description |
+| ---------------- | ------------ | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| `operatorPubKey` | string (hex) | Required (exactly 1) | The operator public key. The private key does not have to be known. It has to match the private key which is later used when operating the masternode. |
+
+*Parameter #6---voting address*
+
+| Name | Type | Presence | Description |
+| --------------- | ------ | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `votingAddress` | string | Required (exactly 1) | The voting address. The private key does not have to be known by your wallet. It has to match the private key which is later used when voting on proposals. If set to an empty string, `ownerAddress` will be used. |
+
+*Parameter #7---operator reward*
+
+| Name | Type | Presence | Description |
+| ---------------- | ------ | ----------------------- | ----------------------------------------------------------------------------------------------- |
+| `operatorReward` | number | Required (exactly 1) | The fraction in % to share with the operator. The value must be between `0.00` and `100.00`. |
+
+*Parameter #8---payout address*
+
+| Name | Type | Presence | Description |
+| --------------- | ------ | ----------------------- | ------------------------------------------------------- |
+| `payoutAddress` | string | Required (exactly 1) | The Dash address to use for masternode reward payments. |
+
+*Parameter #9---fee source address*
+
+| Name | Type | Presence | Description |
+| ------------------ | ------ | -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `feeSourceAddress` | string | Optional (0 or 1) | If specified, the wallet will only use coins from this address to fund the ProTx. If not specified, `payoutAddress` will be used. The private key belonging to this address must be known in your wallet. |
+
+*Result---unsigned transaction and message to sign*
+
+| Name | Type | Presence | Description |
+| ------------------------ | --------------- | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
+| `result` | object | Required (exactly 1) | JSON object containing an unsigned provider transaction and the message to be signed externally, or JSON `null` if an error occurred |
+| → `tx` | string (hex) | Required (exactly 1) | The serialized unsigned ProRegTx in hex format |
+| → `collateralAddress` | string | Required (exactly 1) | The collateral address |
+| → `signMessage` | string (base64) | Required (exactly 1) | The string message that needs to be signed with the collateral key. |
+
+*Example from Dash Core 0.13.0*
+
+```bash
+dash-cli -testnet protx register_prepare\
+ df41e398bb245e973340d434d386f431dbd69735a575721b0b6833856e7d31ec 1 \
+ 9.8.7.6:9876 yemjhGQ99V5ayJMjoyGGPtxteahii6G1Jz\
+ 06849865d01e4f73a6d5a025117e48f50b897e14235800501c8bfb8a6365cc8dbf5ddb67a3635d0f1dcc7d46a7ee280c\
+ yemjhGQ99V5ayJMjoyGGPtxteahii6G1Jz 1.2 yjJJLkYDUN6X8gWjXbCoKEXoiLeKxxMMRt
+```
+
+Result:
+
+```json
+{
+ "tx": "0300010001912b88876fee2f8e43e23b5e81276c163cf23d867bad4148170cb106ef9023700000000000feffffff0125623ba40b0000001976a914736e155c1039a269d4019c66219d2a18f0fee27588ac00000000d1010000000000ec317d6e8533680b1b7275a53597d6db31f486d334d44033975e24bb98e341df0100000000000000000000000000ffff090807062694ca6b243168b30461d1f19e2bb89a965a5bac067e06849865d01e4f73a6d5a025117e48f50b897e14235800501c8bfb8a6365cc8dbf5ddb67a3635d0f1dcc7d46a7ee280cca6b243168b30461d1f19e2bb89a965a5bac067e78001976a914fc136008111fcc7a05be6cec66f97568727a9e5188ace5f6b70ac55411727e25178bd417b9b03f837ad7155d90ad286f3a427203fb9f00",
+ "collateralAddress": "yWuKWhDzGQqZL8rw6kGxGrfe6P8bUC2S4f",
+ "signMessage": "yjJJLkYDUN6X8gWjXbCoKEXoiLeKxxMMRt|120|yemjhGQ99V5ayJMjoyGGPtxteahii6G1Jz|yemjhGQ99V5ayJMjoyGGPtxteahii6G1Jz|69a49e18c1253b90d39322f7e2f7af74524401bc33a27645e697e74a214e3e1e"
+}
+```
+
+### ProTx Register Prepare Legacy
+
+:::{note}
+Since the v19 hard fork activation, this command must be used if a legacy scheme BLS key is being used to register a masternode. In all other cases the [`protx register_prepare` RPC](#protx-register-prepare) should be used instead.
+
+Legacy scheme BLS keys are created if the [`bls generate` RPC](#bls-generate) is run prior to v19 hard fork activation OR if a legacy key is explicitly generated using the [`bls generate legacy` RPC](#bls-generate).
+:::
+
+The `protx register_prepare_legacy` 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.
+
+*Parameter #1---collateral address*
+
+| Name | Type | Presence | Description |
+| ---------------- | ------------ | ----------------------- | ------------------------------- |
+| `collateralHash` | string (hex) | Required (exactly 1) | The collateral transaction hash |
+
+*Parameter #2---collateral index*
+
+| Name | Type | Presence | Description |
+| ----------------- | ------------ | ----------------------- | --------------------------------------- |
+| `collateralIndex` | string (hex) | Required (exactly 1) | The collateral transaction output index |
+
+*Parameter #3---IP Address and port*
+
+| Name | Type | Presence | Description |
+| ----------- | ------ | ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
+| `ipAndPort` | string | Required (exactly 1) | IP and port in the form 'IP:PORT'. Must be unique on the network. Can be set to '0', which will require a ProUpServTx afterwards. |
+
+*Parameter #4---owner address*
+
+| Name | Type | Presence | Description |
+| -------------- | ------ | ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `ownerAddress` | string | Required (exactly 1) | The Dash address to use for payee updates and proposal voting. The corresponding private key does not have to be known by this wallet. The address must be unused and must differ from the `collateralAddress`. |
+
+*Parameter #5---operator public key*
+
+| Name | Type | Presence | Description |
+| ------------------------- | ------------ | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| `operatorPubKey_register` | string (hex) | Required (exactly 1) | The operator public key. The private key does not have to be known. It has to match the private key which is later used when operating the masternode. |
+
+*Parameter #6---voting address*
+
+| Name | Type | Presence | Description |
+| ------------------------ | ------ | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `votingAddress_register` | string | Required (exactly 1) | The voting address. The private key does not have to be known by your wallet. It has to match the private key which is later used when voting on proposals. If set to an empty string, `ownerAddress` will be used. |
+
+*Parameter #7---operator reward*
+
+| Name | Type | Presence | Description |
+| ---------------- | ------ | ----------------------- | ----------------------------------------------------------------------------------------------- |
+| `operatorReward` | number | Required (exactly 1) | The fraction in % to share with the operator. The value must be between `0.00` and `100.00`. |
+
+*Parameter #8---payout address*
+
+| Name | Type | Presence | Description |
+| ------------------------- | ------ | ----------------------- | ------------------------------------------------------- |
+| `payoutAddress_register` | string | Required (exactly 1) | The Dash address to use for masternode reward payments. |
+
+*Parameter #9---fee source address*
+
+| Name | Type | Presence | Description |
+| ------------------ | ------ | -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `feeSourceAddress` | string | Optional (0 or 1) | If specified, the wallet will only use coins from this address to fund the ProTx. If not specified, `payoutAddress` will be used. The private key belonging to this address must be known in your wallet. |
+
+*Result---unsigned transaction and message to sign*
+
+| Name | Type | Presence | Description |
+| ------------------------ | --------------- | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
+| `result` | object | Required (exactly 1) | JSON object containing an unsigned provider transaction and the message to be signed externally, or JSON `null` if an error occurred |
+| → `tx` | string (hex) | Required (exactly 1) | The serialized unsigned ProRegTx in hex format |
+| → `collateralAddress` | string | Required (exactly 1) | The collateral address |
+| → `signMessage` | string (base64) | Required (exactly 1) | The string message that needs to be signed with the collateral key. |
+
+*Example from Dash Core 19.0.0*
+
+```bash
+dash-cli -testnet protx register_prepare_legacy\
+df41e398bb245e973340d434d386f431dbd69735a575721b0b6833856e7d31ec 1 0 9.8.7.6:9876\
+yemjhGQ99V5ayJMjoyGGPtxteahii6G1Jz\
+06849865d01e4f73a6d5a025117e48f50b897e14235800501c8bfb8a6365cc8dbf5ddb67a3635d0f1dcc7d46a7ee280c\
+yemjhGQ99V5ayJMjoyGGPtxteahii6G1Jz 1.2 yjJJLkYDUN6X8gWjXbCoKEXoiLeKxxMMRt
+```
+
+Result:
+
+```json
+{
+ "tx": "0300010001912b88876fee2f8e43e23b5e81276c163cf23d867bad4148170cb106ef9023700000000000feffffff0125623ba40b0000001976a914736e155c1039a269d4019c66219d2a18f0fee27588ac00000000d1010000000000ec317d6e8533680b1b7275a53597d6db31f486d334d44033975e24bb98e341df0100000000000000000000000000ffff090807062694ca6b243168b30461d1f19e2bb89a965a5bac067e06849865d01e4f73a6d5a025117e48f50b897e14235800501c8bfb8a6365cc8dbf5ddb67a3635d0f1dcc7d46a7ee280cca6b243168b30461d1f19e2bb89a965a5bac067e78001976a914fc136008111fcc7a05be6cec66f97568727a9e5188ace5f6b70ac55411727e25178bd417b9b03f837ad7155d90ad286f3a427203fb9f00",
+ "collateralAddress": "yWuKWhDzGQqZL8rw6kGxGrfe6P8bUC2S4f",
+ "signMessage": "yjJJLkYDUN6X8gWjXbCoKEXoiLeKxxMMRt|120|yemjhGQ99V5ayJMjoyGGPtxteahii6G1Jz|yemjhGQ99V5ayJMjoyGGPtxteahii6G1Jz|69a49e18c1253b90d39322f7e2f7af74524401bc33a27645e697e74a214e3e1e"
+}
+```
+
+### ProTx Register Evo
+
+The `protx register_evo` RPC functions similar to `protx register_fund_evo`, but with an externally referenced collateral. The collateral is specified through `collateralHash` and `collateralIndex` and must be an unspent transaction output spendable by this wallet. It must also not be used by any other masternode. Requires the wallet passphrase to be provide with the [`walletpassphrase` RPC](../api/remote-procedure-calls-wallet.md#walletpassphrase) if the wallet is encrypted.
+
+*Parameter #1---collateral address*
+
+| Name | Type | Presence | Description |
+| ---------------- | ------------ | ----------------------- | ------------------------------- |
+| `collateralHash` | string (hex) | Required (exactly 1) | The collateral transaction hash |
+
+*Parameter #2---collateral index*
+
+| Name | Type | Presence | Description |
+| ----------------- | ------------ | ----------------------- | --------------------------------------- |
+| `collateralIndex` | string (hex) | Required (exactly 1) | The collateral transaction output index |
+
+*Parameter #3---IP Address and port*
+
+| Name | Type | Presence | Description |
+| ----------- | ------ | ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
+| `ipAndPort` | string | Required (exactly 1) | IP and port in the form `IP:PORT`. Must be unique on the network. Can be set to `0`, which will require a ProUpServTx afterwards. |
+
+*Parameter #4---owner address*
+
+| Name | Type | Presence | Description |
+| -------------- | ------ | ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `ownerAddress` | string | Required (exactly 1) | The Dash address to use for payee updates and proposal voting. The corresponding private key does not have to be known by this wallet. The address must be unused and must differ from the `collateralAddress`. |
+
+*Parameter #5---operator public key*
+
+| Name | Type | Presence | Description |
+| ------------------------- | ------------ | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| `operatorPubKey_register` | string (hex) | Required (exactly 1) | The operator public key. The private key does not have to be known. It has to match the private key which is later used when operating the masternode. |
+
+*Parameter #6---voting address*
+
+| Name | Type | Presence | Description |
+| ------------------------ | ------ | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `votingAddress_register` | string | Required (exactly 1) | The voting address. The private key does not have to be known by your wallet. It has to match the private key which is later used when voting on proposals. If set to an empty string, `ownerAddress` will be used. |
+
+*Parameter #7---operator reward*
+
+| Name | Type | Presence | Description |
+| ---------------- | ------ | ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `operatorReward` | number | Required (exactly 1) | The fraction in % to share with the operator. The value must be between `0.00` and `100.00`. **Note**: If non-zero, `ipAndPort` must be zero as well. |
+
+*Parameter #8---payout address*
+
+| Name | Type | Presence | Description |
+| ------------------------ | ------ | ----------------------- | ------------------------------------------------------- |
+| `payoutAddress_register` | string | Required (exactly 1) | The Dash address to use for masternode reward payments. |
+
+*Parameter #9---platform node ID*
+
+| Name | Type | Presence | Description |
+| ---------------- | ------ | ----------------------- | -------------------------------------------------- |
+| `platformNodeID` | string | Required (exactly 1) | Platform P2P node ID, derived from P2P public key. |
+
+*Parameter #10---platform p2p port*
+
+| Name | Type | Presence | Description |
+| ----------------- | ------ | ----------------------- | ------------------------------------------------------------- |
+| `platformP2PPort` | number | Required (exactly 1) | TCP port of Platform HTTP/API interface (network byte order). |
+
+*Parameter #11---platform p2p port*
+
+| Name | Type | Presence | Description |
+| ----------------- | ------ | ----------------------- | ---------------------------------------------------------------------------------------- |
+| `platformP2PPort` | number | Required (exactly 1) | TCP port of Dash Platform peer-to-peer communication between nodes (network byte order). |
+
+*Parameter #12---fee source address*
+
+| Name | Type | Presence | Description |
+| ------------------ | ------ | -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `feeSourceAddress` | string | Optional (0 or 1) | If specified, the wallet will only use coins from this address to fund the ProTx. If not specified, `payoutAddress` will be used. The private key belonging to this address must be known in your wallet. |
+
+*Parameter #13---whether to submit to the network or not*
+
+| Name | Type | Presence | Description |
+| -------- | ---- | -------------------- | ---------------------------------------------------------------------- |
+| `submit` | bool | Optional (0 or 1) | If `true` (default), the resulting transaction is sent to the network. |
+
+*Result if `submit` is not set or set to `true`---provider registration transaction hash*
+
+| Name | Type | Presence | Description |
+| -------- | ------------ | ----------------------- | ------------------------------------------------- |
+| `result` | string (hex) | Required (exactly 1) | Provider registration transaction (ProRegTx) hash |
+
+*Example from Dash Core 20.0.0*
+
+```bash
+dash-cli -testnet protx register_evo
+ 8b2eab3413abb6e04d17d1defe2b71039ba6b6f72ea1e5dab29bb10e7b745948\
+1 2.3.4.5:2345\
+yNLuVTXJbjbxgrQX5LSMi7hV19We8hT2d6\
+88d719278eef605d9c19037366910b59bc28d437de4a8db4d76fda6d6985dbdf10404fb9bb5cd0e8c22f4a914a6c5566\
+yNLuVTXJbjbxgrQX5LSMi7hV19We8hT2d6 5\
+yjJJLkYDUN6X8gWjXbCoKEXoiLeKxxMMRt\
+f2dbd9b0a1f541a7c44d34a58674d0262f5feca5 22821 22822
+```
+
+Result:
+
+```text
+61e6d780178d353940c4cb9b3073ac0c50792bbcf0b15c1750d2028b71e34929
+```
+
+*Result if `submit` set to `false`---serialized and signed provider registration transaction*
+
+| Name | Type | Presence | Description |
+| -------- | ------------ | ----------------------- | ------------------------------------------------------------------ |
+| `result` | string (hex) | Required (exactly 1) | Serialized and signed provider registration transaction (ProRegTx) |
+
+*Example from Dash Core 20.0.0*
+
+```bash
+dash-cli -testnet protx register_evo\
+ 8b2eab3413abb6e04d17d1defe2b71039ba6b6f72ea1e5dab29bb10e7b745948 1\
+ 2.3.4.5:2345 yNLuVTXJbjbxgrQX5LSMi7hV19We8hT2d6\
+ 88d719278eef605d9c19037366910b59bc28d437de4a8db4d76fda6d6985dbdf10404fb9bb5cd0e8c22f4a914a6c5566\
+ yNLuVTXJbjbxgrQX5LSMi7hV19We8hT2d6 5 yjJJLkYDUN6X8gWjXbCoKEXoiLeKxxMMRt\ f2dbd9b0a1f541a7c44d34a58674d0262f5feca5 22821 22822 false
+```
+
+Result:
+
+```text
+0300010001fe1caa50e5b8181be868fbd9fbd93affeb6c4a91a3c73373a6b25d548c7e6d41010000\
+006b48304502210081d206a8332d5b8715ca831155ef5c7e339d33cde2b0b27310b95aafc8c560f9\
+02204029d00d2b5515565321ec1fd6748fa0544b7356d9a389e4d1ce6ab4bb64d364012103c67d86\
+944315838aea7ec80d390b5d09b91b62483370d4979da5ccf7a7df77a9feffffff01a6f0433e0000\
+00001976a9145a375814e9caf5b8575a8221be246457e5c5c28d88ac00000000fd12010100000000\
+006bac3b20d7884b51461a47597f281009a2dbbb9184a746bea8161dc76a6f6eb101000000000000\
+00000000000000ffff0203040509291636e84d02310b0b458f3eb51d8ea8b2e684b7ce8ae227ffcb\
+d4cbdc7ae2fe3e63264701ef6af1de71e6cade51867ecb7ed58b63862568522bab933987d0d043fa\
+5590e11636e84d02310b0b458f3eb51d8ea8b2e684b7cef4011976a914fc136008111fcc7a05be6c\
+ec66f97568727a9e5188acb3ccf680086ae11217236efcccd67b0b72e83c79a043d6c6d064378fdd\
+5f21204120fac89c76d3f116d95a675e112ddbdbb7a78f957506299fe592662acd44b46f262d1c4d\
+47d9401e0a569a5488728e09542d0545ab56f8249a4b21e03445fa411e
+```
+
+### 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.
+
+*Parameter #1---collateral address*
+
+| Name | Type | Presence | Description |
+| ------------------- | ------ | ----------------------- | ------------------------------------------ |
+| `collateralAddress` | string | Required (exactly 1) | The Dash address to send the collateral to |
+
+*Parameter #2---IP Address and port*
+
+| Name | Type | Presence | Description |
+| ----------- | ------ | ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
+| `ipAndPort` | string | Required (exactly 1) | IP and port in the form `IP:PORT`. Must be unique on the network. Can be set to `0`, which will require a ProUpServTx afterwards. |
+
+*Parameter #3---owner address*
+
+| Name | Type | Presence | Description |
+| -------------- | ------ | ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `ownerAddress` | string | Required (exactly 1) | The Dash address to use for payee updates and proposal voting. The corresponding private key does not have to be known by this wallet. The address must be unused and must differ from the `collateralAddress`. |
+
+*Parameter #4---operator public key register*
+
+| Name | Type | Presence | Description |
+| -------------------------- | ------------ | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| `operatorPubKey_register` | string (hex) | Required (exactly 1) | The operator public key. The private key does not have to be known. It has to match the private key which is later used when operating the masternode. |
+
+*Parameter #5---voting address register*
+
+| Name | Type | Presence | Description |
+| ------------------------ | ------ | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `votingAddress_register` | string | Required (exactly 1) | The voting address. The private key does not have to be known by your wallet. It has to match the private key which is later used when voting on proposals. If set to an empty string, `ownerAddress` will be used. |
+
+*Parameter #6---operator reward*
+
+| Name | Type | Presence | Description |
+| ---------------- | ------ | ----------------------- | ----------------------------------------------------------------------------------------------- |
+| `operatorReward` | number | Required (exactly 1) | The fraction in % to share with the operator. The value must be between `0.00` and `100.00`. |
+
+*Parameter #7---payout address register*
+
+| Name | Type | Presence | Description |
+| ------------------------ | ------ | ----------------------- | ------------------------------------------------------- |
+| `payoutAddress_register` | string | Required (exactly 1) | The Dash address to use for masternode reward payments. |
+
+*Parameter #8---platform node ID*
+
+| Name | Type | Presence | Description |
+| ---------------- | ------ | ----------------------- | -------------------------------------------------- |
+| `platformNodeID` | string | Required (exactly 1) | Platform P2P node ID, derived from P2P public key. |
+
+*Parameter #9---platform p2p port*
+
+| Name | Type | Presence | Description |
+| ----------------- | ------ | ----------------------- | ---------------------------------------------------------------------------------------- |
+| `platformP2PPort` | number | Required (exactly 1) | TCP port of Dash Platform peer-to-peer communication between nodes (network byte order). |
+
+*Parameter #10---platform http port*
+
+| Name | Type | Presence | Description |
+| ------------------ | ------ | ----------------------- | ------------------------------------------------------------- |
+| `platformHTTPPort` | number | Required (exactly 1) | TCP port of Platform HTTP/API interface (network byte order). |
+
+*Parameter #11---fund address*
+
+| Name | Type | Presence | Description |
+| ------------- | ------ | -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `fundAddress` | string | Optional (0 or 1) | If specified, the wallet will only use coins from this address to fund the ProTx. If not specified, `payoutAddress` will be used. The private key belonging to this address must be known in your wallet. |
+
+*Parameter #12---whether to submit to the network or not*
+
+| Name | Type | Presence | Description |
+| -------- | ---- | -------------------- | ---------------------------------------------------------------------- |
+| `submit` | bool | Optional (0 or 1) | If `true` (default), the resulting transaction is sent to the network. |
+
+\*Result if `submit` is not set or set to `true`
+
+| Name | Type | Presence | Description |
+| -------- | ------------ | ----------------------- | ------------------ |
+| `result` | string (hex) | Required (exactly 1) | The transaction ID |
+
+*Example from Dash Core 20.0.0*
+
+```bash
+dash-cli -testnet protx register_fund_evo yakx4mMRptKhgfjedNzX5FGQq7kSSBF2e7\
+ 3.4.5.6:3456 yX2cDS4kcJ4LK4uq9Hd4TG7kURV3sGLZrw\
+ 0e02146e9c34cfbcb3f3037574a1abb35525e2ca0c3c6901dbf82ac591e30218d1711223b7ca956edf39f3d984d06d51\
+ yX2cDS4kcJ4LK4uq9Hd4TG7kURV3sGLZrw 5 yakx4mMRptKhgfjedNzX5FGQq7kSSBF2e7\
+ f2dbd9b0a1f541a7c44d34a58674d0262f5feca5 22821 22822
+```
+
+Result:
+
+```text
+ba1b3330e16a0876b7a186e7ceb689f03ec646e611e91d7139de021bbf13afdd
+```
+
+\*Result if `submit` set to `false`
+
+| Name | Type | Presence | Description |
+| -------- | ------------ | ----------------------- | ----------------------------------------- |
+| `result` | string (hex) | Required (exactly 1) | The serialized signed ProTx in hex format |
+
+*Example from Dash Core 20.0.0*
+
+```bash
+dash-cli -testnet protx register_fund_evo yakx4mMRptKhgfjedNzX5FGQq7kSSBF2e7\
+ 3.4.5.6:3456 yX2cDS4kcJ4LK4uq9Hd4TG7kURV3sGLZrw\
+ 0e02146e9c34cfbcb3f3037574a1abb35525e2ca0c3c6901dbf82ac591e30218d1711223b7ca956edf39f3d984d06d51\
+ yX2cDS4kcJ4LK4uq9Hd4TG7kURV3sGLZrw 5 yakx4mMRptKhgfjedNzX5FGQq7kSSBF2e7\ f2dbd9b0a1f541a7c44d34a58674d0262f5feca5 22821 22822 0
+```
+
+Result:
+
+```text
+030001000156701575e76bca5720fa364ea6efc4b713279710dd1b8906797d18bd7048b71a010000\
+006b4830450221009178a387b3d82e3606e6484373508ef1ed4c1d7d98f8a0ca0851687c59edacaa\
+02204d245d20689b5be1100536faaadbb1781e3a67a55e9ecc613adb2a34f419c3cd012103109325\
+a92f9e6d31d2ebd0595d471275ae8d635db2a0c42358f387e1af69c14dfeffffff0200e876481700\
+00001976a9141636e84d02310b0b458f3eb51d8ea8b2e684b7ce88ac8c7a918b300000001976a914\
+372fd07f715c33ce88873a8e758d890e017cf02588ac00000000d101000000000000000000000000\
+000000000000000000000000000000000000000000000000000000000000000000000000000000ff\
+ff030405060d8058ebf95961c207ebd525793ccb43f60ce34a5cd50e02146e9c34cfbcb3f3037574\
+a1abb35525e2ca0c3c6901dbf82ac591e30218d1711223b7ca956edf39f3d984d06d5158ebf95961\
+c207ebd525793ccb43f60ce34a5cd5f4011976a9145a375814e9caf5b8575a8221be246457e5c5c2\
+8d88ac45084a0f63d6f06767c941ffd5af4ed17ea0e28afa481e46b2bdbadbd8446c8c00\
+```
+
+### 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.
+
+*Parameter #1---collateral address*
+
+| Name | Type | Presence | Description |
+| ---------------- | ------------ | ----------------------- | ------------------------------- |
+| `collateralHash` | string (hex) | Required (exactly 1) | The collateral transaction hash |
+
+*Parameter #2---collateral index*
+
+| Name | Type | Presence | Description |
+| ----------------- | ------------ | ----------------------- | --------------------------------------- |
+| `collateralIndex` | string (hex) | Required (exactly 1) | The collateral transaction output index |
+
+*Parameter #3---IP Address and port*
+
+| Name | Type | Presence | Description |
+| ----------- | ------ | ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
+| `ipAndPort` | string | Required (exactly 1) | IP and port in the form 'IP:PORT'. Must be unique on the network. Can be set to '0', which will require a ProUpServTx afterwards. |
+
+*Parameter #4---owner address*
+
+| Name | Type | Presence | Description |
+| -------------- | ------ | ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `ownerAddress` | string | Required (exactly 1) | The Dash address to use for payee updates and proposal voting. The corresponding private key does not have to be known by this wallet. The address must be unused and must differ from the `collateralAddress`. |
+
+*Parameter #5---operator public key register*
+
+| Name | Type | Presence | Description |
+| ------------------------- | ------------ | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| `operatorPubKey_register` | string (hex) | Required (exactly 1) | The operator public key. The private key does not have to be known. It has to match the private key which is later used when operating the masternode. |
+
+*Parameter #6---voting address register*
+
+| Name | Type | Presence | Description |
+| ------------------------ | ------ | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `votingAddress_register` | string | Required (exactly 1) | The voting address. The private key does not have to be known by your wallet. It has to match the private key which is later used when voting on proposals. If set to an empty string, `ownerAddress` will be used. |
+
+*Parameter #7---operator reward*
+
+| Name | Type | Presence | Description |
+| ---------------- | ------ | ----------------------- | ----------------------------------------------------------------------------------------------- |
+| `operatorReward` | number | Required (exactly 1) | The fraction in % to share with the operator. The value must be between `0.00` and `100.00`. |
+
+*Parameter #8---payout address register*
+
+| Name | Type | Presence | Description |
+| ------------------------ | ------ | ----------------------- | ------------------------------------------------------- |
+| `payoutAddress_register` | string | Required (exactly 1) | The Dash address to use for masternode reward payments. |
+
+*Parameter #9---platform node ID*
+
+| Name | Type | Presence | Description |
+| ---------------- | ------------ | ----------------------- | -------------------------------------------------- |
+| `platformNodeID` | string (hex) | Required (exactly 1) | Platform P2P node ID, derived from P2P public key. |
+
+*Parameter #10---platform p2p port*
+
+| Name | Type | Presence | Description |
+| ----------------- | ------- | ----------------------- | -------------------------------------------------- |
+| `platformP2PPort` | numeric | Required (exactly 1) | Platform P2P node ID, derived from P2P public key. |
+
+*Parameter #11---platform http port*
+
+| Name | Type | Presence | Description |
+| ------------------ | ------- | ----------------------- | ------------------------------------------------------------- |
+| `platformHTTPPort` | numeric | Required (exactly 1) | TCP port of Platform HTTP/API interface (network byte order). |
+
+*Parameter #12---fee source address*
+
+| Name | Type | Presence | Description |
+| ------------------ | ------ | -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `feeSourceAddress` | string | Optional (0 or 1) | If specified, the wallet will only use coins from this address to fund the ProTx. If not specified, `payoutAddress` will be used. The private key belonging to this address must be known in your wallet. |
+
+*Result---unsigned transaction and message to sign*
+
+| Name | Type | Presence | Description |
+| ------------------------ | ------------ | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
+| `result` | object | Required (exactly 1) | JSON object containing an unsigned provider transaction and the message to be signed externally, or JSON `null` if an error occurred |
+| → `tx` | string (hex) | Required (exactly 1) | The serialized unsigned ProRegTx in hex format |
+| → `collateralAddress` | string | Required (exactly 1) | The collateral address |
+| → `signMessage` | string (hex) | Required (exactly 1) | The string message that needs to be signed with the collateral key. |
+
+*Example from Dash Core 20.0.0*
+
+```bash
+dash-cli -testnet protx register_prepare_evo\
+ df41e398bb245e973340d434d386f431dbd69735a575721b0b6833856e7d31ec\
+ 1 9.8.7.6:9876 yemjhGQ99V5ayJMjoyGGPtxteahii6G1Jz\
+ 06849865d01e4f73a6d5a025117e48f50b897e14235800501c8bfb8a6365cc8dbf5ddb67a3635d0f1dcc7d46a7ee280c\
+ yemjhGQ99V5ayJMjoyGGPtxteahii6G1Jz 1.2 yjJJLkYDUN6X8gWjXbCoKEXoiLeKxxMMRt\
+ f2dbd9b0a1f541a7c44d34a58674d0262f5feca5 22821 22822
+```
+
+Result:
+
+```json
+{
+ "tx": "0300010001912b88876fee2f8e43e23b5e81276c163cf23d867bad4148170cb106ef9023700000000000feffffff0125623ba40b0000001976a914736e155c1039a269d4019c66219d2a18f0fee27588ac00000000d1010000000000ec317d6e8533680b1b7275a53597d6db31f486d334d44033975e24bb98e341df0100000000000000000000000000ffff090807062694ca6b243168b30461d1f19e2bb89a965a5bac067e06849865d01e4f73a6d5a025117e48f50b897e14235800501c8bfb8a6365cc8dbf5ddb67a3635d0f1dcc7d46a7ee280cca6b243168b30461d1f19e2bb89a965a5bac067e78001976a914fc136008111fcc7a05be6cec66f97568727a9e5188ace5f6b70ac55411727e25178bd417b9b03f837ad7155d90ad286f3a427203fb9f00",
+ "collateralAddress": "yWuKWhDzGQqZL8rw6kGxGrfe6P8bUC2S4f",
+ "signMessage": "yjJJLkYDUN6X8gWjXbCoKEXoiLeKxxMMRt|120|yemjhGQ99V5ayJMjoyGGPtxteahii6G1Jz|yemjhGQ99V5ayJMjoyGGPtxteahii6G1Jz|69a49e18c1253b90d39322f7e2f7af74524401bc33a27645e697e74a214e3e1e"
+}
+```
+
+### 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.
+
+*Parameter #1---initial provider registration transaction hash*
+
+| Name | Type | Presence | Description |
+| ----------- | ------------ | ----------------------- | ------------------------------------------------------------- |
+| `proTxHash` | string (hex) | Required (exactly 1) | The hash of the provider transaction as hex in RPC byte order |
+
+*Parameter #2---IP Address and port*
+
+| Name | Type | Presence | Description |
+| ----------- | ------ | ----------------------- | -------------------------------------------------------------------- |
+| `ipAndPort` | string | Required (exactly 1) | IP and port in the form 'IP:PORT'. Must be unique on the network. |
+
+*Parameter #3---operator key*
+
+| Name | Type | Presence | Description |
+| ------------- | ------------ | ----------------------- | -------------------------------------------------------------------------------- |
+| `operatorKey` | string (hex) | Required (exactly 1) | The operator BLS private key associated with the registered operator public key. |
+
+*Parameter #4---platform Node ID*
+
+| Name | Type | Presence | Description |
+| ---------------- | ------ | ----------------------- | -------------------------------------------------- |
+| `platformNodeID` | string | Required (exactly 1) | Platform P2P node ID, derived from P2P public key. |
+
+*Parameter #5---platform P2P Port*
+
+| Name | Type | Presence | Description |
+| ----------------- | ------- | ----------------------- | ---------------------------------------------------------------------------------------- |
+| `platformP2PPort` | numeric | Required (exactly 1) | TCP port of Dash Platform peer-to-peer communication between nodes (network byte order). |
+
+*Parameter #6---platform HTTP Port*
+
+| Name | Type | Presence | Description |
+| ------------------ | ------- | ----------------------- | ------------------------------------------------------------- |
+| `platformHTTPPort` | numeric | Required (exactly 1) | TCP port of Platform HTTP/API interface (network byte order). |
+
+*Parameter #7---operator payout address*
+
+| Name | Type | Presence | Description |
+| ----------------------- | ------ | -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `operatorPayoutAddress` | string | Optional (0 or 1) | The Dash address used for operator reward payments. Only allowed when the ProRegTx had a non-zero `operatorReward` value. If set to an empty string, the currently active payout address is reused. |
+
+*Parameter #8---fee source address*
+
+| Name | Type | Presence | Description |
+| ------------------ | ------ | -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `feeSourceAddress` | string | Optional (0 or 1) | If specified, the wallet will only use coins from this address to fund the ProTx. If not specified, `operatorPayoutAddress` will be used. The private key belonging to this address must be known in your wallet. |
+
+*Result---provider update service transaction hash*
+
+| Name | Type | Presence | Description |
+| -------- | ------------ | ----------------------- | ------------------------------------------------------ |
+| `result` | string (hex) | Required (exactly 1) | Provider update service transaction (ProUpServTx) hash |
+
+*Example from Dash Core 20.0.0*
+
+```bash
+dash-cli -testnetprotx update_service_evo\
+ ba1b3330e16a0876b7a186e7ceb689f03ec646e611e91d7139de021bbf13afdd\
+ 4.3.2.1:4321\
+ 4da7e1ea30fb9e55c73ad23df0b9d3d34342acb24facf4b19420e1a26ae272d1\
+ f2dbd9b0a1f541a7c44d34a58674d0262f5feca5 22821 22822
+```
+
+Result:
+
+```bash
+5b6cfa1bdd3c8b7e0b9550b9c4e809381f81a410bc7f241d3879dd736fd51270
+```
+
+### 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.
+
+*Parameter #1---collateral address*
+
+| Name | Type | Presence | Description |
+| ---- | ------------ | ----------------------- | ----------------------------------------------------------------------------------- |
+| `tx` | string (hex) | Required (exactly 1) | The serialized unsigned transaction previously returned by `protx register_prepare` |
+
+*Parameter #2---collateral index*
+
+| Name | Type | Presence | Description |
+| ----- | --------------- | ----------------------- | ----------------------------------------------------------------------- |
+| `sig` | string (base64) | Required (exactly 1) | The signature signed with the collateral key. Must be in base64 format. |
+
+*Result---provider registration transaction hash*
+
+| Name | Type | Presence | Description |
+| -------- | ------------ | ----------------------- | ------------------------------------------------- |
+| `result` | string (hex) | Required (exactly 1) | Provider registration transaction (ProRegTx) hash |
+
+*Example from Dash Core 0.13.0*
+
+```bash
+dash-cli -testnet protx register_submit\
+ 03000100012d988526d5d1efd32320023c92eff09c2963dcb021b0de9761\
+ 17e5e37dc7a7870000000000feffffff015f603ba40b0000001976a9140c\
+ 37e07eb5c608961769e6506c23c11e9f9fe00988ac00000000d101000000\
+ 00002d988526d5d1efd32320023c92eff09c2963dcb021b0de976117e5e3\
+ 7dc7a7870100000000000000000000000000ffff05060708162e243dd366\
+ bf4a329968d77eac9fb63481a600938d125e1b7cba03ca2a097e402185e6\
+ 160232ea53e6d62898a3be8617b06ff347d967543228bd9b605547c3d478\
+ b0a838ca243dd366bf4a329968d77eac9fb63481a600938dc4091976a914\
+ e9bf4e6f26fecf1dfc1e04dde43472df378628b888ac6a048e7f645e8adc\
+ 305ccfd8652066046a0702596af13b8ac97803ade256da2900\
+ \
+ H90IvqVtFjZkwLJb08yMEgGixs0/FpcdvwImBcir4cYLJhD3pdX+lKD2GsPl6KNxghVXNk5/HpOdBoWAHo9u++Y=
+```
+
+Result:
+
+```text
+273ce3ebe24183ee4117b10e054cdbb108a3bde5d2f286129e29480d46a3f573
+```
+
+### ProTx Revoke
+
+The `protx revoke` RPC creates and sends a ProUpRevTx to the network.
+
+*Parameter #1---initial provider registration transaction hash*
+
+| Name | Type | Presence | Description |
+| ----------- | ------------ | ----------------------- | ------------------------------------------------------------- |
+| `proTxHash` | string (hex) | Required (exactly 1) | The hash of the provider transaction as hex in RPC byte order |
+
+*Parameter #2---operator private key*
+
+| Name | Type | Presence | Description |
+| ---------------- | ------------ | ----------------------- | ------------------------------------------------------------------------- |
+| `operatorKey` | string (hex) | Required (exactly 1) | The operator private key belonging to the registered operator public key. |
+
+*Parameter #3---reason*
+
+| Name | Type | Presence | Description |
+| -------- | ------ | ----------------------- | -------------------------- |
+| `reason` | number | Optional (0 or 1) | The reason for revocation. This is informational and does not effect the revocation: `0` - Reason not specified `1` - Termination of service `2` - Compromised keys `3` - Change of keys |
+
+*Parameter #4---fee source address*
+
+| Name | Type | Presence | Description |
+| ------------------ | ------ | -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `feeSourceAddress` | string | Optional (0 or 1) | If specified, the wallet will only use coins from this address to fund the ProTx. If not specified, `payoutAddress` will be used. The private key belonging to this address must be known in your wallet. |
+
+*Result---provider update revoke transaction hash*
+
+| Name | Type | Presence | Description |
+| -------- | ------------ | ----------------------- | ---------------------------------------------------- |
+| `result` | string (hex) | Required (exactly 1) | Provider update revoke transaction (ProUpRevTx) hash |
+
+*Example from Dash Core 0.13.0*
+
+```bash
+dash-cli -testnet protx revoke\
+ "ba1b3330e16a0876b7a186e7ceb689f03ec646e611e91d7139de021bbf13afdd"\
+ "4da7e1ea30fb9e55c73ad23df0b9d3d34342acb24facf4b19420e1a26ae272d1"
+```
+
+Result:
+
+```bash
+2aad36dd2ab254bee06b0b5dad51e7603691b72058d5806fd94e1d2d19a7c209
+```
+
+### ProTx Update Registrar
+
+:::{attention}
+Following the Dash Core v19 hard fork activation, masternodes registered prior to the hard fork must use the [`protx update_registrar_legacy` RPC](#protx-update-registrar-legacy) unless they have already updated to a basic scheme BLS key.
+:::
+
+The `protx update_registrar` RPC creates and sends a ProUpRegTx to the network.
+
+*Parameter #1---initial provider registration transaction hash*
+
+| Name | Type | Presence | Description |
+| ----------- | ------------ | ----------------------- | ------------------------------------------------------------- |
+| `proTxHash` | string (hex) | Required (exactly 1) | The hash of the provider transaction as hex in RPC byte order |
+
+*Parameter #2---operator public key*
+
+| Name | Type | Presence | Description |
+| ---------------- | ------------ | ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `operatorPubKey` | string (hex) | Required (exactly 1) | The operator public key. The private key does not have to be known. It has to match the private key which is later used when operating the masternode. If set to an empty string, the currently active operator BLS public key is reused. |
+
+*Parameter #3---voting address*
+
+| Name | Type | Presence | Description |
+| --------------- | ------ | ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `votingAddress` | string | Required (exactly 1) | The voting address. The private key does not have to be known by your wallet. It has to match the private key which is later used when voting on proposals. If set to an empty string, the currently active voting key address is reused. |
+
+*Parameter #4---operator payout address*
+
+| Name | Type | Presence | Description |
+| --------------- | ------ | -------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
+| `payoutAddress` | string | Optional (0 or 1) | The Dash address to use for masternode reward payments. If set to an empty string, the currently active payout address is reused. |
+
+*Parameter #5---fee source address*
+
+| Name | Type | Presence | Description |
+| ------------------ | ------ | -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `feeSourceAddress` | string | Optional (0 or 1) | If specified, the wallet will only use coins from this address to fund the ProTx. If not specified, `payoutAddress` will be used. The private key belonging to this address must be known in your wallet. |
+
+*Result---provider update registrar transaction hash*
+
+| Name | Type | Presence | Description |
+| -------- | ------------ | ----------------------- | ------------------------------------------------------- |
+| `result` | string (hex) | Required (exactly 1) | Provider update registrar transaction (ProUpRegTx) hash |
+
+*Example from Dash Core 0.13.0*
+
+```bash
+dash-cli -testnet protx update_registrar\
+ "ba1b3330e16a0876b7a186e7ceb689f03ec646e611e91d7139de021bbf13afdd"\
+ "0e02146e9c34cfbcb3f3037574a1abb35525e2ca0c3c6901dbf82ac591e30218d1711223b7ca956edf39f3d984d06d51"\
+ "yX2cDS4kcJ4LK4uq9Hd4TG7kURV3sGLZrw" "yakx4mMRptKhgfjedNzX5FGQq7kSSBF2e7"
+```
+
+Result:
+
+```bash
+702390ef06b10c174841ad7b863df23c166c27815e3be2438e2fee6f87882b91
+```
+
+### ProTx Update Registrar Legacy
+
+:::{note}
+Since the v19 hard fork activation, this command must be used if a legacy scheme BLS key is being used to registrar update a masternode. This would include all masternodes registered prior to the hard fork that have not already updated to a new basic scheme BLS key.
+:::
+
+The `protx update_registrar_legacy` RPC creates and sends a ProUpRegTx to the network. This will update the operator key, voting key and payout address of the masternode specified by `proTxHash`. The owner key of the masternode must be known to your wallet. Requires the wallet passphrase to be provide with the [`walletpassphrase` RPC](../api/remote-procedure-calls-wallet.md#walletpassphrase) if the wallet is encrypted.
+
+*Parameter #1---initial provider registration transaction hash*
+
+| Name | Type | Presence | Description |
+| ----------- | ------------ | ----------------------- | ------------------------------------------------------------- |
+| `proTxHash` | string (hex) | Required (exactly 1) | The hash of the provider transaction as hex in RPC byte order |
+
+*Parameter #2---operator public key*
+
+| Name | Type | Presence | Description |
+| ----------------------- | ------------ | ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `operatorPubKey_update` | string (hex) | Required (exactly 1) | The operator public key. The private key does not have to be known. It has to match the private key which is later used when operating the masternode. If set to an empty string, the currently active operator BLS public key is reused. |
+
+*Parameter #3---voting address*
+
+| Name | Type | Presence | Description |
+| ---------------------- | ------ | ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `votingAddress_update` | string | Required (exactly 1) | The voting key address. The private key does not have to be known by your wallet. It has to match the private key which is later used when voting on proposals. If set to an empty string, the currently active voting key address is reused. |
+
+*Parameter #4---operator payout address*
+
+| Name | Type | Presence | Description |
+| ---------------------- | ------ | -------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
+| `payoutAddress_update` | string | Optional (0 or 1) | The Dash address to use for masternode reward payments. If set to an empty string, the currently active payout address is reused. |
+
+*Parameter #5---fee source address*
+
+| Name | Type | Presence | Description |
+| ------------------ | ------ | -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `feeSourceAddress` | string | Optional (0 or 1) | If specified, the wallet will only use coins from this address to fund ProTx. If not specified, payoutAddress is the one that is going to be used. The private key belonging to this address must be known in your wallet. |
+
+*Result---provide transaction ID*
+
+| Name | Type | Presence | Description |
+| -------- | ------------ | ----------------------- | ---------------------- |
+| `result` | string (hex) | Required (exactly 1) | Receive transaction ID |
+
+*Example from Dash Core 19.0.0*
+
+```bash
+dash-cli -testnet protx update_registrar_legacy\
+ "ba1b3330e16a0876b7a186e7ceb689f03ec646e611e91d7139de021bbf13afdd"\
+ "0e02146e9c34cfbcb3f3037574a1abb35525e2ca0c3c6901dbf82ac591e30218d1711223b7ca956edf39f3d984d06d51"\
+ "yX2cDS4kcJ4LK4uq9Hd4TG7kURV3sGLZrw" "yakx4mMRptKhgfjedNzX5FGQq7kSSBF2e7"
+```
+
+Result:
+
+```bash
+702390ef06b10c174841ad7b863df23c166c27815e3be2438e2fee6f87882b91
+```
+
+### ProTx Update Service
+
+The `protx update_service` RPC creates and sends a ProUpServTx to the network.
+
+*Parameter #1---initial provider registration transaction hash*
+
+| Name | Type | Presence | Description |
+| ----------- | ------------ | ----------------------- | ------------------------------------------------------------- |
+| `proTxHash` | string (hex) | Required (exactly 1) | The hash of the provider transaction as hex in RPC byte order |
+
+*Parameter #2---IP Address and port*
+
+| Name | Type | Presence | Description |
+| ----------- | ------ | ----------------------- | -------------------------------------------------------------------- |
+| `ipAndPort` | string | Required (exactly 1) | IP and port in the form 'IP:PORT'. Must be unique on the network. |
+
+*Parameter #3---operator key*
+
+| Name | Type | Presence | Description |
+| ------------- | ------------ | ----------------------- | -------------------------------------------------------------------------------- |
+| `operatorKey` | string (hex) | Required (exactly 1) | The operator BLS private key associated with the registered operator public key. |
+
+*Parameter #4---operator payout address*
+
+| Name | Type | Presence | Description |
+| ----------------------- | ------ | -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `operatorPayoutAddress` | string | Optional (0 or 1) | The Dash address used for operator reward payments. Only allowed when the ProRegTx had a non-zero `operatorReward` value. If set to an empty string, the currently active payout address is reused. |
+
+*Parameter #5---fee source address*
+
+| Name | Type | Presence | Description |
+| ------------------ | ------ | -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `feeSourceAddress` | string | Optional (0 or 1) | If specified, the wallet will only use coins from this address to fund the ProTx. If not specified, `operatorPayoutAddress` will be used. The private key belonging to this address must be known in your wallet. |
+
+*Result---provider update service transaction hash*
+
+| Name | Type | Presence | Description |
+| -------- | ------------ | ----------------------- | ------------------------------------------------------ |
+| `result` | string (hex) | Required (exactly 1) | Provider update service transaction (ProUpServTx) hash |
+
+*Example from Dash Core 0.13.0*
+
+```bash
+dash-cli -testnet protx update_service\
+ ba1b3330e16a0876b7a186e7ceb689f03ec646e611e91d7139de021bbf13afdd\
+ "4.3.2.1:4321"\
+ 4da7e1ea30fb9e55c73ad23df0b9d3d34342acb24facf4b19420e1a26ae272d1
+```
+
+Result:
+
+```bash
+5b6cfa1bdd3c8b7e0b9550b9c4e809381f81a410bc7f241d3879dd736fd51270
+```
+
+## Quorum
+
+*Added in Dash Core 0.14.0*
+
+The [`quorum` RPC](../api/remote-procedure-calls-evo.md#quorum) provides a set of commands for quorums (LLMQs).
+
+### Quorum List
+
+The `quorum list` RPC displays a list of on-chain quorums.
+
+*Parameter #1---quorum count*
+
+| Name | Type | Presence | Description |
+| ------- | ------ | -------------------- | -------------------------------------------------------------------------------- |
+| `count` | number | Optional (0 or 1) | Number of quorums to list. Will list active quorums if `count` is not specified. |
+
+*Result---a list of quorums*
+
+| Name | Type | Presence | Description |
+| ------------------ | ------------ | ----------------------- | ----------------------- |
+| `result` | object | Required (exactly 1) | Quorum list |
+| → Quorum | array | Required (1 or more) | Array of quorum details |
+| → → Quorum Hash | string (hex) | Optional (0 or more) | A quorum hash |
+
+*Example from Dash Core 0.14.0*
+
+```bash
+dash-cli -testnet quorum list
+```
+
+Result:
+
+```json
+{
+ "llmq_50_60": [
+ "00000000023cc6dde69bed898c83fe2328ef38b1ea9da14a599efa14caef0b7d",
+ "000000002b968fb3b2fc2ff18d6e89611e366b4d38a6d0437e99bd7c37f2fd83",
+ "000000000301054c038b07b5b51493d5efc3f078e3aede6eb603c47943d1cc78",
+ "000000000e901278c00c896754a06f8d45d0268c6aff6e72ffb3007d07c10e73",
+ "000000001bc592f2a8676203835bc6ad442abeadb9c22b8d6a2999db07354b01",
+ "000000000896c37ef8a32318ee871589394f1578473b8825275b610690e47db0",
+ "00000000133b192b2319a0716ad18e5788981fff51856f61205af5d6a634ba41",
+ "0000000004946f3f9f82a298985f73080d62627d51f6f4ba77f3cd8c6788b3d0",
+ "0000000005cb014d3df9bac0ba379f1d5b8b75f0e6d7c408d43ac1db330ec641",
+ "0000000006c1653c7ee747f140dd7daa1da23a541e67a0fc0dc88db3482ec4d5"
+ ],
+ "llmq_400_60": [
+ "0000000007697fd69a799bfa26576a177e817bc0e45b9fcfbf48b362b05aeff2"
+ ],
+ "llmq_400_85": [
+ ]
+}
+```
+
+### Quorum Info
+
+The `quorum info` RPC returns information about a specific quorum.
+
+*Parameter #1---LLMQ Type*
+
+| Name | Type | Presence | Description |
+| ---------- | ------ | ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `llmqType` | number | Required (exactly 1) | [Type of quorums](https://github.com/dashpay/dips/blob/master/dip-0006/llmq-types.md) to list: `1` - LLMQ_50_60 `2` - LLMQ_400_60 `3` - LLMQ_400_85 `4` - LLMQ_100_67 |
+
+*Parameter #2---quorum hash*
+
+| Name | Type | Presence | Description |
+| ------------ | ------------ | ----------------------- | ---------------------------- |
+| `quorumHash` | string (hex) | Required (exactly 1) | The block hash of the quorum |
+
+*Parameter #3---secret key share*
+
+| Name | Type | Presence | Description |
+| ---------------- | ---- | -------------------- | ----------------------------------------------- |
+| `includeSkShare` | bool | Optional (0 or 1) | Include the secret key share (default: `false`) |
+
+*Result---information about a quorum*
+
+| Name | Type | Presence | Description |
+| ------------------------------------- | ------------ | ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `result` | object | Required (exactly 1) | Quorum list |
+| → `height` | number | Required (exactly 1) | Block height of the quorum |
+| → `type` | string | Required (exactly 1) | Type of LLMQ |
+| → `quorumHash` | string (hex) | Required (exactly 1) | The hash of the quorum |
+| → `quorumIndex` | number | Required (exactly 1) | *Added in Dash Core 18.0.0* The index of the quorum |
+| → `minedBlock` | string (hex) | Required (exactly 1) | The hash of the block that established the quorum |
+| → `previousConsecutiveDKGFailures` | number | Optional (0 or 1) | **Added in Dash Core 19.0** The number of previous consecutive DKG failures for the corresponding `quorumIndex` before the currently active one. Only present for rotating quorums. |
+| → `members` | array | Required (exactly 1) | An array containing quorum member details |
+| → → Member | object | Required (1 or more) | An object describing a particular member |
+| → → → `proTxHash` | string (hex) | Required (exactly 1) | The masternode's Provider Registration transaction hash |
+| → → → `service` | string | Required (exactly 1) | *Added in Dash Core 18.1.0* The masternode's IP:Port |
+| → → → `pubKeyOperator` | string (hex) | Required (exactly 1) | *Added in Dash Core 0.15.0* The masternode's Operator public key |
+| → → → `valid` | bool | Required (exactly 1) | Indicates if the member is valid |
+| → → → `pubKeyShare` | string | Optional (0 or 1) | Member public key share |
+| → `quorumPublicKey` | string | Required (exactly 1) | Quorum public key |
+| → `secretKeyShare` | string | Optional (exactly 1) | Quorum secret key share |
+
+*Example from Dash Core 18.1.0*
+
+```bash
+dash-cli -testnet quorum info 1 \
+ 000000ebd10368ca387ce380539fad9c8ba21108a3bfd6fedeecb60d28f56ae9 true
+```
+
+Result (truncated):
+
+```json
+{
+ "height": 819240,
+ "type": "llmq_50_60",
+ "quorumHash": "000000ebd10368ca387ce380539fad9c8ba21108a3bfd6fedeecb60d28f56ae9",
+ "quorumIndex": 0,
+ "minedBlock": "00000548588369399691ad308a3c588a7bf842a40347e23ef40655e315898146",
+ "members": [
+ {
+ "proTxHash": "f77ec12ec8adb91a3a158c5f9cc3f7e2521d65eac6cda1e44763daa603a77570",
+ "service": "35.89.202.171:19999",
+ "pubKeyOperator": "16f8048e511e7c0c2b495a9b20030b315d75bca283b70af25d16c8809c7f2a786225c2fe47ff1c92aa8ebf586be91abc",
+ "valid": true,
+ "pubKeyShare": "12c305fdc5ec06785d2e89a8b64c291128e4a2034889e9f1539d9194954051a304d8bf1649a2d3a95aac200884e8e99d"
+ },
+ {"Truncated data":"..."},
+ {
+ "proTxHash": "2cd3833e1cef622e875096c70d6eb6c7083a250a6b26ca27edb3aa21ac05e3d1",
+ "service": "89.47.162.137:19999",
+ "pubKeyOperator": "8fc1d0cea417ed963e50d876a38bf0846b536b7e8809826e163bc9ea0f749ea8ebe00c6642e71bb84000549bda5bb1d0",
+ "valid": true,
+ "pubKeyShare": "8662927148ed33b8f0000f1666c277e14df9838c9dce4e3fb273866603b93502e70108408f81698e0b47cb3b5aff3a30"
+ }
+ ],
+ "quorumPublicKey": "18401a5c5d8d8145cea2843e0c37f10d06de642ce7665599ad35dce9f7a3027b42375a9e138e185867bfe5359fd952f2",
+ "secretKeyShare": "4d39c4c1cb856a5e2d96efffb4cf3695b57b5d0fb4e289e7b2be3b7592a6dfa6"
+}
+```
+
+### Quorum DKGInfo
+
+:::{versionadded} 20.1.0
+:::
+
+The `quorum dkginfo` RPC returns information about active and upcoming DKG sessions.
+
+*Parameters: none*
+
+*Result---information about DKG*
+
+| Name | Type | Presence | Description |
+| ------------------------------------- | ------------ | ----------------------- | ----------- |
+| `result` | object | Required (exactly 1) | Quorum info |
+| → `active_dkgs` | number | Required (exactly 1) | Total number of active DKG sessions this node is participating in currently
+| → `next_dkg` | number | Required (exactly 1) | The number of blocks until the next potential DKG session |
+
+*Example from Dash Core 20.1.0*
+
+```bash
+dash-cli -testnet quorum dkginfo
+```
+
+Result (truncated):
+
+```json
+{
+ "active_dkgs": 0,
+ "next_dkg": 10
+}
+```
+
+### Quorum DKGStatus
+
+The `quorum list` RPC displays the status of the current DKG process.
+
+*Parameter #1---detail level*
+
+| Name | Type | Presence | Description |
+| -------------- | ------ | -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `detail_level` | number | Optional (0 or 1) | Detail level of output (default: 0): `0` - Only show counts (*default*) `1` - Show member indexes `2` - Show member's ProTxHashes
*Note: Works only when Spork 17 is enabled and only displays details related to the node running the command.* |
+
+*Result (if detail level was 0 or omitted)---JSON DKG details*
+
+| Name | Type | Presence | Description |
+| ----------------------------------------- | ---------------- | ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `result` | array | Required (exactly 1) | An array of objects each containing a provider transaction, or JSON `null` if an error occurred |
+| → `time` | number | Required (exactly 1) | The Unix epoch time |
+| → `timeStr` | string | Required (exactly 1) | The UTC time as a string |
+| → `session` | array of objects | Required (exactly 1) | Array of objects containing DKG Session information |
+| → → Session | object | Required (exactly 1) | DKG session object |
+| → → → `llmqType` | string | Required (exactly 1) | *Added in Dash Core 18.0.0* [Quorum type name](https://github.com/dashpay/dips/blob/master/dip-0006/llmq-types.md) |
+| → → → `quorumIndex` | number | Required (exactly 1) | *Added in Dash Core 18.0.0* The index of the quorum |
+| → → → `status` | object | Required (exactly 1) | DKG session status information |
+| → → → → `llmqType` | number | Required (exactly 1) | [Type of quorum](https://github.com/dashpay/dips/blob/master/dip-0006/llmq-types.md): `1` - LLMQ_50_60 `2` - LLMQ_400_60 `3` - LLMQ_400_85 `4` - LLMQ_100_67 |
+| → → → → `quorumHash` | string (hex) | Required (exactly 1) | The block hash of the quorum |
+| → → → → `quorumHeight` | number | Required (exactly 1) | The block height of the quorum |
+| → → → → `phase` | number | Required (exactly 1) | The active DKG phase `1` - Initialized `2` - Contributing `3` - Complaining `4` - Justifying `5` - Committing `6` - Finalizing |
+| → → → → `sentContributions` | bool | Required (exactly 1) | True when contributions have been sent |
+| → → → → `sentComplaint` | bool | Required (exactly 1) | True when complaints have been sent |
+| → → → → `sentJustification` | bool | Required (exactly 1) | True when justifications have been sent |
+| → → → → `sentPrematureCommitment` | bool | Required (exactly 1) | True when premature commitments have been sent |
+| → → → → `aborted` | bool | Required (exactly 1) | True if the DKG session has been aborted |
+| → → → → `badMembers` | number | Required (exactly 1) | Number of bad members |
+| → → → → `weComplain` | number | Required (exactly 1) | Number of complaints sent |
+| → → → → `receivedContributions` | number | Required (exactly 1) | Number of contributions received |
+| → → → → `receivedComplaints` | number | Required (exactly 1) | Number of complaints received |
+| → → → → `receivedJustifications` | number | Required (exactly 1) | Number of justifications received |
+| → → → → `receivedPrematureCommitments` | number | Required (exactly 1) | Number of premature commitments received |
+| → `quorumConnections` | array of objects | Required (exactly 1) | **Modified in Dash Core 18.0.0** Array of objects containing quorum connection information |
+| → → Quorum type | object | Required (exactly 1) | *Added in Dash Core 18.0.0* An object describing connection information for a quorum index and type |
+| → → → `llmqType` | string | Required (exactly 1) | *Added in Dash Core 18.0.0* [Quorum type name](https://github.com/dashpay/dips/blob/master/dip-0006/llmq-types.md) |
+| → → → `quorumIndex` | number | Required (exactly 1) | *Added in Dash Core 18.0.0* The index of the quorum |
+| → → → `pQuorumBaseBlockIndex` | number | Required (exactly 1) | *Added in Dash Core 18.0.0* The height of the quorum's base block |
+| → → → `quorumHash` | string (hex) | Required (exactly 1) | The block hash of the quorum |
+| → → → `pindexTip` | number | Required (exactly 1) | *Added in Dash Core 18.0.0* The height of the quorum's index tip |
+| → → → `quorumConnections` | array of objects | Required (exactly 1) | Array of objects containing quorum connection information |
+| → → → → Connection | object | Required (exactly 1) | *Added in Dash Core 0.16.0*
An object describing a quorum connection |
+| → → → →→ `proTxHash` | string (hex) | Required (exactly 1) | *Added in Dash Core 0.16.0*
The hash of the quorum member's provider registration transaction as hex in RPC byte order |
+| → → → →→ `connected` | boolean | Required (exactly 1) | *Added in Dash Core 0.16.0*
Whether or not the connection is active |
+| → → → →→ `address` | string | Optional (exactly 1) | *Added in Dash Core 0.16.0*
Whether or not this is an outbound connection |
+| → `minableCommitments` | object | Required (exactly 1) | Object containing minable commitments |
+
+*Result (if detail level was 1)---JSON DKG details including member index*
+
+Note: detail level 1 includes all level 0 fields and expands the following fields.
+
+| Name | Type | Presence | Description |
+| --------------------------------------- | ----- | ----------------------- | ----------------------------------------------------------------- |
+| → → → `badMembers` | array | Required (exactly 1) | Array containing the member index for each bad member |
+| → → → `weComplain` | array | Required (exactly 1) | Array containing the member index for each complaint sent |
+| → → → `receivedContributions` | array | Required (exactly 1) | Array containing the member index for each contribution received |
+| → → → `receivedComplaints` | array | Required (exactly 1) | Array containing the member index for each complaint received |
+| → → → `receivedJustifications` | array | Required (exactly 1) | Array containing the member index for each justification received |
+| → → → `receivedPrematureCommitments` | array | Required (exactly 1) | Array containing the member index for each commitment received |
+
+*Result (if detail level was 2)---JSON DKG details including member index and ProTx hash*
+
+Note: detail level 2 includes all level 0 fields, adds the `allMembers` field, and expands several fields.
+
+| Name | Type | Presence | Description |
+| --------------------------------------- | ------------ | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
+| → → → `badMembers` | array | Required (exactly 1) | An array of objects with each object containing the member index and ProTx hash for a bad member |
+| → → → → Member | object | Required (0 or more) | An object describing quorum member details |
+| → → → → → `memberIndex` | number | Required (exactly 1) | The quorum member's index |
+| → → → → → `proTxHash` | string (hex) | Required (exactly 1) | The hash of the quorum member's provider registration transaction as hex in RPC byte order |
+| → → → `weComplain` | object | Required (exactly 1) | An array of objects with each object containing the member index and ProTx hash for a member being complained about |
+| → → → → Member | object | Required (0 or more) | An object describing quorum member details |
+| → → → → → `memberIndex` | number | Required (exactly 1) | The quorum member's index |
+| → → → → → `proTxHash` | string (hex) | Required (exactly 1) | The hash of the quorum member's provider registration transaction as hex in RPC byte order |
+| → → → `receivedContributions` | object | Required (exactly 1) | An array of objects with each object containing the member index and ProTx hash for a member a contribution was received from |
+| → → → → Member | object | Required (0 or more) | An object describing quorum member details |
+| → → → → → `memberIndex` | number | Required (exactly 1) | The quorum member's index |
+| → → → → → `proTxHash` | string (hex) | Required (exactly 1) | The hash of the quorum member's provider registration transaction as hex in RPC byte order |
+| → → → `receivedComplaints` | object | Required (exactly 1) | An array of objects with each object containing the member index and ProTx hash for a member a complaint was received from |
+| → → → → Member | object | Required (0 or more) | An object describing quorum member details |
+| → → → → → `memberIndex` | number | Required (exactly 1) | The quorum member's index |
+| → → → → → `proTxHash` | string (hex) | Required (exactly 1) | The hash of the quorum member's provider registration transaction as hex in RPC byte order |
+| → → → `receivedJustifications` | object | Required (exactly 1) | An array of objects with each object containing the member index and ProTx hash for a member a justification was received from |
+| → → → → Member | object | Required (0 or more) | An object describing quorum member details |
+| → → → → → `memberIndex` | number | Required (exactly 1) | The quorum member's index |
+| → → → → → `proTxHash` | string (hex) | Required (exactly 1) | The hash of the quorum member's provider registration transaction as hex in RPC byte order |
+| → → → `receivedPrematureCommitments` | object | Required (exactly 1) | An array of objects with each object containing the member index and ProTx hash for a member a premature commitment was received from |
+| → → → → Member | object | Required (0 or more) | An object describing quorum member details |
+| → → → → → `memberIndex` | number | Required (exactly 1) | The quorum member's index |
+| → → → → → `proTxHash` | string (hex) | Required (exactly 1) | The hash of the quorum member's provider registration transaction as hex in RPC byte order |
+| → → → `allMembers` | array | Required (exactly 1) | Array containing the provider registration transaction hash for all quorum members |
+
+*Example from Dash Core 18.0.0*
+
+```bash
+dash-cli -testnet quorum dkgstatus
+```
+
+Result (truncated):
+
+```json
+{
+ "time": 1644854935,
+ "timeStr": "2022-02-14T16:08:55Z",
+ "session": [
+ {
+ "llmqType": "llmq_devnet",
+ "quorumIndex": 0,
+ "status": {
+ "llmqType": 101,
+ "quorumHash": "0000003d2100d243f73bd65b392f21a1023f7dfecc54505511c897a5896c0c2c",
+ "quorumHeight": 6072,
+ "phase": 6,
+ "sentContributions": true,
+ "sentComplaint": false,
+ "sentJustification": false,
+ "sentPrematureCommitment": true,
+ "aborted": false,
+ "badMembers": 0,
+ "weComplain": 0,
+ "receivedContributions": 12,
+ "receivedComplaints": 0,
+ "receivedJustifications": 0,
+ "receivedPrematureCommitments": 12
+ }
+ }
+ ],
+ "quorumConnections": [
+ {
+ "llmqType": "llmq_50_60",
+ "quorumIndex": 0,
+ "pQuorumBaseBlockIndex": 6072,
+ "quorumHash": "0000003d2100d243f73bd65b392f21a1023f7dfecc54505511c897a5896c0c2c",
+ "pindexTip": 6082,
+ "quorumConnections": [
+ {
+ "proTxHash": "bfcfc61bb222d4744276a3591df2239c540da36f4638ce234a4490ac35254607",
+ "connected": true,
+ "address": "54.68.152.187:54748",
+ "outbound": false
+ },
+ {
+ "proTxHash": "e3a1bc7820e24820ab557c7dc7650b5a6ec326adac9599f42ed981e4227bdc0e",
+ "connected": true,
+ "address": "54.187.0.112:20001",
+ "outbound": true
+ },
+ ]
+ },
+ {
+ "llmqType": "llmq_400_60",
+ "quorumIndex": 0,
+ "pQuorumBaseBlockIndex": 6048,
+ "quorumHash": "0000000a428025892b1d62bd27b0bf8eee521218d12f9a459a7bde20a944a3bc",
+ "pindexTip": 6082,
+ "quorumConnections": [
+ {
+ "proTxHash": "bfcfc61bb222d4744276a3591df2239c540da36f4638ce234a4490ac35254607",
+ "connected": true,
+ "address": "54.68.152.187:54748",
+ "outbound": false
+ },
+ {
+ "proTxHash": "e3a1bc7820e24820ab557c7dc7650b5a6ec326adac9599f42ed981e4227bdc0e",
+ "connected": true,
+ "address": "54.187.0.112:20001",
+ "outbound": true
+ },
+ ]
+ },
+ {
+ "llmqType": "llmq_100_67",
+ "quorumIndex": 0,
+ "pQuorumBaseBlockIndex": 6072,
+ "quorumHash": "0000003d2100d243f73bd65b392f21a1023f7dfecc54505511c897a5896c0c2c",
+ "pindexTip": 6082,
+ "quorumConnections": [
+ {
+ "proTxHash": "bfcfc61bb222d4744276a3591df2239c540da36f4638ce234a4490ac35254607",
+ "connected": true,
+ "address": "54.68.152.187:54748",
+ "outbound": false
+ },
+ {
+ "proTxHash": "e3a1bc7820e24820ab557c7dc7650b5a6ec326adac9599f42ed981e4227bdc0e",
+ "connected": true,
+ "address": "54.187.0.112:20001",
+ "outbound": true
+ },
+ ]
+ },
+ {
+ "llmqType": "llmq_devnet",
+ "quorumIndex": 0,
+ "pQuorumBaseBlockIndex": 6072,
+ "quorumHash": "0000003d2100d243f73bd65b392f21a1023f7dfecc54505511c897a5896c0c2c",
+ "pindexTip": 6082,
+ "quorumConnections": [
+ {
+ "proTxHash": "ec4ca45ccce7d7f94ab824a9f4840c3a85731c8bc70ba21953992009214c7e1d",
+ "connected": true,
+ "address": "34.219.73.212:49030",
+ "outbound": false
+ },
+ {
+ "proTxHash": "895cb52efac54f92ed726ad9da15fd6a8c94fcabae2f9c41ad81be0c214e0d1e",
+ "connected": true,
+ "address": "35.88.228.131:46084",
+ "outbound": false
+ },
+ ]
+ },
+ {
+ "llmqType": "llmq_devnet",
+ "quorumIndex": 1,
+ "pQuorumBaseBlockIndex": 6073,
+ "quorumHash": "000000b1823c0d77dcfbd6a11404ddbcfc259a503aec9a7aadfdfabc7602a7be",
+ "pindexTip": 6082,
+ "quorumConnections": [
+ {
+ "proTxHash": "bfcfc61bb222d4744276a3591df2239c540da36f4638ce234a4490ac35254607",
+ "connected": true,
+ "address": "54.68.152.187:54748",
+ "outbound": false
+ },
+ {
+ "proTxHash": "93b2f08a18d9ac165aad16d66d8492721f4556e53d3a2d28b045cc992ce65725",
+ "connected": true,
+ "address": "54.191.24.26:38528",
+ "outbound": false
+ },
+ ]
+ }
+ ],
+ "minableCommitments": [
+ {
+ "version": 1,
+ "llmqType": 1,
+ "quorumHash": "0000003d2100d243f73bd65b392f21a1023f7dfecc54505511c897a5896c0c2c",
+ "quorumIndex": 0,
+ "signersCount": 0,
+ "signers": "00000000000000",
+ "validMembersCount": 0,
+ "validMembers": "00000000000000",
+ "quorumPublicKey": "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "quorumVvecHash": "0000000000000000000000000000000000000000000000000000000000000000",
+ "quorumSig": "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "membersSig": "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
+ },
+ {
+ "version": 1,
+ "llmqType": 4,
+ "quorumHash": "0000003d2100d243f73bd65b392f21a1023f7dfecc54505511c897a5896c0c2c",
+ "quorumIndex": 0,
+ "signersCount": 0,
+ "signers": "00000000000000000000000000",
+ "validMembersCount": 0,
+ "validMembers": "00000000000000000000000000",
+ "quorumPublicKey": "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "quorumVvecHash": "0000000000000000000000000000000000000000000000000000000000000000",
+ "quorumSig": "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "membersSig": "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
+ }
+ ]
+}
+```
+
+*Example from Dash Core 18.0.0 (detail_level: 1)*
+
+```bash
+dash-cli -testnet quorum dkgstatus 1
+```
+
+Result (truncated):
+
+```json
+{
+ "time": 1644854935,
+ "timeStr": "2022-02-14T16:08:55Z",
+ "session": [
+ {
+ "llmqType": "llmq_devnet",
+ "quorumIndex": 0,
+ "status": {
+ "llmqType": 101,
+ "quorumHash": "0000003d2100d243f73bd65b392f21a1023f7dfecc54505511c897a5896c0c2c",
+ "quorumHeight": 6072,
+ "phase": 6,
+ "sentContributions": true,
+ "sentComplaint": false,
+ "sentJustification": false,
+ "sentPrematureCommitment": true,
+ "aborted": false,
+ "badMembers": [
+ ],
+ "weComplain": [
+ ],
+ "receivedContributions": [
+ 0,
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11
+ ],
+ "receivedComplaints": [
+ ],
+ "receivedJustifications": [
+ ],
+ "receivedPrematureCommitments": [
+ 0,
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11
+ ]
+ }
+ }
+ ],
+ "quorumConnections": [
+ {
+ "llmqType": "llmq_50_60",
+ "quorumIndex": 0,
+ "pQuorumBaseBlockIndex": 6072,
+ "quorumHash": "0000003d2100d243f73bd65b392f21a1023f7dfecc54505511c897a5896c0c2c",
+ "pindexTip": 6082,
+ "quorumConnections": [
+ {
+ "proTxHash": "bfcfc61bb222d4744276a3591df2239c540da36f4638ce234a4490ac35254607",
+ "connected": true,
+ "address": "54.68.152.187:54748",
+ "outbound": false
+ },
+ {
+ "proTxHash": "e3a1bc7820e24820ab557c7dc7650b5a6ec326adac9599f42ed981e4227bdc0e",
+ "connected": true,
+ "address": "54.187.0.112:20001",
+ "outbound": true
+ },
+ ]
+ },
+ {
+ "llmqType": "llmq_100_67",
+ "quorumIndex": 0,
+ "pQuorumBaseBlockIndex": 6072,
+ "quorumHash": "0000003d2100d243f73bd65b392f21a1023f7dfecc54505511c897a5896c0c2c",
+ "pindexTip": 6082,
+ "quorumConnections": [
+ {
+ "proTxHash": "bfcfc61bb222d4744276a3591df2239c540da36f4638ce234a4490ac35254607",
+ "connected": true,
+ "address": "54.68.152.187:54748",
+ "outbound": false
+ },
+ {
+ "proTxHash": "e3a1bc7820e24820ab557c7dc7650b5a6ec326adac9599f42ed981e4227bdc0e",
+ "connected": true,
+ "address": "54.187.0.112:20001",
+ "outbound": true
+ },
+ ]
+ },
+],
+ "minableCommitments": [
+ {
+ "version": 1,
+ "llmqType": 1,
+ "quorumHash": "0000003d2100d243f73bd65b392f21a1023f7dfecc54505511c897a5896c0c2c",
+ "quorumIndex": 0,
+ "signersCount": 0,
+ "signers": "00000000000000",
+ "validMembersCount": 0,
+ "validMembers": "00000000000000",
+ "quorumPublicKey": "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "quorumVvecHash": "0000000000000000000000000000000000000000000000000000000000000000",
+ "quorumSig": "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "membersSig": "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
+ },
+ {
+ "version": 1,
+ "llmqType": 4,
+ "quorumHash": "0000003d2100d243f73bd65b392f21a1023f7dfecc54505511c897a5896c0c2c",
+ "quorumIndex": 0,
+ "signersCount": 0,
+ "signers": "00000000000000000000000000",
+ "validMembersCount": 0,
+ "validMembers": "00000000000000000000000000",
+ "quorumPublicKey": "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "quorumVvecHash": "0000000000000000000000000000000000000000000000000000000000000000",
+ "quorumSig": "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "membersSig": "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
+ }
+ ]
+}
+
+```
+
+*Example from Dash Core 18.0.0 (detail_level: 2)*
+
+```bash
+dash-cli -testnet quorum dkgstatus 2
+```
+
+Result (truncated):
+
+```json
+{
+ "time": 1644854935,
+ "timeStr": "2022-02-14T16:08:55Z",
+ "session": [
+ {
+ "llmqType": "llmq_devnet",
+ "quorumIndex": 0,
+ "status": {
+ "llmqType": 101,
+ "quorumHash": "0000003d2100d243f73bd65b392f21a1023f7dfecc54505511c897a5896c0c2c",
+ "quorumHeight": 6072,
+ "phase": 6,
+ "sentContributions": true,
+ "sentComplaint": false,
+ "sentJustification": false,
+ "sentPrematureCommitment": true,
+ "aborted": false,
+ "badMembers": [
+ ],
+ "weComplain": [
+ ],
+ "receivedContributions": [
+ {
+ "memberIndex": 0,
+ "proTxHash": "6503cd51fd93d0923eaee599b8f48dceb639b0f1a7e5dfd064d439c9729e1b48"
+ },
+ {
+ "memberIndex": 1,
+ "proTxHash": "f9bf9e69ef111ca5218804f004c5e31abd971699847f52364e88301559cab6f8"
+ },
+ {
+ "memberIndex": 2,
+ "proTxHash": "895cb52efac54f92ed726ad9da15fd6a8c94fcabae2f9c41ad81be0c214e0d1e"
+ },
+ {
+ "memberIndex": 3,
+ "proTxHash": "fd1fe03e178b397baa304fdcb98c7e99b6d39768029490270e17b53f4fef7aa3"
+ },
+ {
+ "memberIndex": 4,
+ "proTxHash": "ec4ca45ccce7d7f94ab824a9f4840c3a85731c8bc70ba21953992009214c7e1d"
+ },
+ {
+ "memberIndex": 5,
+ "proTxHash": "9c3173a86ef146920ad37f3b0c4f9be0f08063c1d194aaa9602d766a5de782a9"
+ },
+ {
+ "memberIndex": 6,
+ "proTxHash": "856c3dd446c0791e800aa24f6a726431a0d4df6ed3cfb3a71b1bf3951764cbf3"
+ },
+ {
+ "memberIndex": 7,
+ "proTxHash": "38e2e295b4ed4f2d93731951537fd2fa31bee87833b61443a6961117a0c970a8"
+ },
+ {
+ "memberIndex": 8,
+ "proTxHash": "e76cdb5c9e004fb9bf83bfcebf7bf59bcbe925a1d348d3e5cfb108910e45d0d1"
+ },
+ {
+ "memberIndex": 9,
+ "proTxHash": "8abb1f227473e188d0e3ff39201badd49d22f8b323f9cfdd096d109f50614b6c"
+ },
+ {
+ "memberIndex": 10,
+ "proTxHash": "8675ed9f95526868ce4cf88ffe5a26ccff90b7623516735219c6e16731e4288a"
+ },
+ {
+ "memberIndex": 11,
+ "proTxHash": "e657b9abffe8326c25236ccfb28408617d3f5c3704d703edc1271db37db62b5d"
+ }
+ ],
+ "receivedComplaints": [
+ ],
+ "receivedJustifications": [
+ ],
+ "receivedPrematureCommitments": [
+ {
+ "memberIndex": 0,
+ "proTxHash": "6503cd51fd93d0923eaee599b8f48dceb639b0f1a7e5dfd064d439c9729e1b48"
+ },
+ {
+ "memberIndex": 1,
+ "proTxHash": "f9bf9e69ef111ca5218804f004c5e31abd971699847f52364e88301559cab6f8"
+ },
+ {
+ "memberIndex": 2,
+ "proTxHash": "895cb52efac54f92ed726ad9da15fd6a8c94fcabae2f9c41ad81be0c214e0d1e"
+ },
+ {
+ "memberIndex": 3,
+ "proTxHash": "fd1fe03e178b397baa304fdcb98c7e99b6d39768029490270e17b53f4fef7aa3"
+ },
+ {
+ "memberIndex": 4,
+ "proTxHash": "ec4ca45ccce7d7f94ab824a9f4840c3a85731c8bc70ba21953992009214c7e1d"
+ },
+ {
+ "memberIndex": 5,
+ "proTxHash": "9c3173a86ef146920ad37f3b0c4f9be0f08063c1d194aaa9602d766a5de782a9"
+ },
+ {
+ "memberIndex": 6,
+ "proTxHash": "856c3dd446c0791e800aa24f6a726431a0d4df6ed3cfb3a71b1bf3951764cbf3"
+ },
+ {
+ "memberIndex": 7,
+ "proTxHash": "38e2e295b4ed4f2d93731951537fd2fa31bee87833b61443a6961117a0c970a8"
+ },
+ {
+ "memberIndex": 8,
+ "proTxHash": "e76cdb5c9e004fb9bf83bfcebf7bf59bcbe925a1d348d3e5cfb108910e45d0d1"
+ },
+ {
+ "memberIndex": 9,
+ "proTxHash": "8abb1f227473e188d0e3ff39201badd49d22f8b323f9cfdd096d109f50614b6c"
+ },
+ {
+ "memberIndex": 10,
+ "proTxHash": "8675ed9f95526868ce4cf88ffe5a26ccff90b7623516735219c6e16731e4288a"
+ },
+ {
+ "memberIndex": 11,
+ "proTxHash": "e657b9abffe8326c25236ccfb28408617d3f5c3704d703edc1271db37db62b5d"
+ }
+ ],
+ "allMembers": [
+ "6503cd51fd93d0923eaee599b8f48dceb639b0f1a7e5dfd064d439c9729e1b48",
+ "f9bf9e69ef111ca5218804f004c5e31abd971699847f52364e88301559cab6f8",
+ "895cb52efac54f92ed726ad9da15fd6a8c94fcabae2f9c41ad81be0c214e0d1e",
+ "fd1fe03e178b397baa304fdcb98c7e99b6d39768029490270e17b53f4fef7aa3",
+ "ec4ca45ccce7d7f94ab824a9f4840c3a85731c8bc70ba21953992009214c7e1d",
+ "9c3173a86ef146920ad37f3b0c4f9be0f08063c1d194aaa9602d766a5de782a9",
+ "856c3dd446c0791e800aa24f6a726431a0d4df6ed3cfb3a71b1bf3951764cbf3",
+ "38e2e295b4ed4f2d93731951537fd2fa31bee87833b61443a6961117a0c970a8",
+ "e76cdb5c9e004fb9bf83bfcebf7bf59bcbe925a1d348d3e5cfb108910e45d0d1",
+ "8abb1f227473e188d0e3ff39201badd49d22f8b323f9cfdd096d109f50614b6c",
+ "8675ed9f95526868ce4cf88ffe5a26ccff90b7623516735219c6e16731e4288a",
+ "e657b9abffe8326c25236ccfb28408617d3f5c3704d703edc1271db37db62b5d"
+ ]
+ }
+ }
+ ],
+ "quorumConnections": [
+ {
+ "llmqType": "llmq_50_60",
+ "quorumIndex": 0,
+ "pQuorumBaseBlockIndex": 6072,
+ "quorumHash": "0000003d2100d243f73bd65b392f21a1023f7dfecc54505511c897a5896c0c2c",
+ "pindexTip": 6082,
+ "quorumConnections": [
+ {
+ "proTxHash": "bfcfc61bb222d4744276a3591df2239c540da36f4638ce234a4490ac35254607",
+ "connected": true,
+ "address": "54.68.152.187:54748",
+ "outbound": false
+ },
+ {
+ "proTxHash": "e3a1bc7820e24820ab557c7dc7650b5a6ec326adac9599f42ed981e4227bdc0e",
+ "connected": true,
+ "address": "54.187.0.112:20001",
+ "outbound": true
+ },
+ ]
+ },
+ {
+ "llmqType": "llmq_100_67",
+ "quorumIndex": 0,
+ "pQuorumBaseBlockIndex": 6072,
+ "quorumHash": "0000003d2100d243f73bd65b392f21a1023f7dfecc54505511c897a5896c0c2c",
+ "pindexTip": 6082,
+ "quorumConnections": [
+ {
+ "proTxHash": "bfcfc61bb222d4744276a3591df2239c540da36f4638ce234a4490ac35254607",
+ "connected": true,
+ "address": "54.68.152.187:54748",
+ "outbound": false
+ },
+ {
+ "proTxHash": "e3a1bc7820e24820ab557c7dc7650b5a6ec326adac9599f42ed981e4227bdc0e",
+ "connected": true,
+ "address": "54.187.0.112:20001",
+ "outbound": true
+ },
+ ]
+ },
+ {
+ "llmqType": "llmq_devnet",
+ "quorumIndex": 0,
+ "pQuorumBaseBlockIndex": 6072,
+ "quorumHash": "0000003d2100d243f73bd65b392f21a1023f7dfecc54505511c897a5896c0c2c",
+ "pindexTip": 6082,
+ "quorumConnections": [
+ {
+ "proTxHash": "ec4ca45ccce7d7f94ab824a9f4840c3a85731c8bc70ba21953992009214c7e1d",
+ "connected": true,
+ "address": "34.219.73.212:49030",
+ "outbound": false
+ },
+ {
+ "proTxHash": "895cb52efac54f92ed726ad9da15fd6a8c94fcabae2f9c41ad81be0c214e0d1e",
+ "connected": true,
+ "address": "35.88.228.131:46084",
+ "outbound": false
+ },
+ ]
+ },
+ {
+ "llmqType": "llmq_devnet",
+ "quorumIndex": 1,
+ "pQuorumBaseBlockIndex": 6073,
+ "quorumHash": "000000b1823c0d77dcfbd6a11404ddbcfc259a503aec9a7aadfdfabc7602a7be",
+ "pindexTip": 6082,
+ "quorumConnections": [
+ {
+ "proTxHash": "bfcfc61bb222d4744276a3591df2239c540da36f4638ce234a4490ac35254607",
+ "connected": true,
+ "address": "54.68.152.187:54748",
+ "outbound": false
+ },
+ {
+ "proTxHash": "93b2f08a18d9ac165aad16d66d8492721f4556e53d3a2d28b045cc992ce65725",
+ "connected": true,
+ "address": "54.191.24.26:38528",
+ "outbound": false
+ },
+ ]
+ }
+ ],
+ "minableCommitments": [
+ {
+ "version": 1,
+ "llmqType": 1,
+ "quorumHash": "0000003d2100d243f73bd65b392f21a1023f7dfecc54505511c897a5896c0c2c",
+ "quorumIndex": 0,
+ "signersCount": 0,
+ "signers": "00000000000000",
+ "validMembersCount": 0,
+ "validMembers": "00000000000000",
+ "quorumPublicKey": "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "quorumVvecHash": "0000000000000000000000000000000000000000000000000000000000000000",
+ "quorumSig": "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "membersSig": "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
+ },
+ {
+ "version": 1,
+ "llmqType": 4,
+ "quorumHash": "0000003d2100d243f73bd65b392f21a1023f7dfecc54505511c897a5896c0c2c",
+ "quorumIndex": 0,
+ "signersCount": 0,
+ "signers": "00000000000000000000000000",
+ "validMembersCount": 0,
+ "validMembers": "00000000000000000000000000",
+ "quorumPublicKey": "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "quorumVvecHash": "0000000000000000000000000000000000000000000000000000000000000000",
+ "quorumSig": "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "membersSig": "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
+ }
+ ]
+}
+```
+
+### Quorum Sign
+
+The `quorum sign` RPC requests threshold-signing for a message.
+
+*Parameter #1---LLMQ Type*
+
+| Name | Type | Presence | Description |
+| ---------- | ------ | ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `llmqType` | number | Required (exactly 1) | [Type of quorum](https://github.com/dashpay/dips/blob/master/dip-0006/llmq-types.md): `1` - LLMQ_50_60 `2` - LLMQ_400_60 `3` - LLMQ_400_85 `4` - LLMQ_100_67 |
+
+*Parameter #2---id*
+
+| Name | Type | Presence | Description |
+| ---- | ------------ | ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `id` | string (hex) | Required (exactly 1) | Signing request ID. Signing request ids for ChainLocks and InstantSend are calculated as described in: \* The [ChainLocks DIP](https://github.com/dashpay/dips/blob/master/dip-0008.md#signing-attempts) \* The [LLMQ InstantSend DIP](https://github.com/dashpay/dips/blob/master/dip-0010.md#finalization-and-creation-of-islock-messages). |
+
+:::{note}
+For general signing requests, any 32 byte hex string can be provided as the request id. Note that if a quorum hash is not specified in parameter 4, a quorum will be selected automatically based in part on this value.
+:::
+
+*Parameter #3---message hash*
+
+| Name | Type | Presence | Description |
+| --------- | ------------ | ----------------------- | -------------------------------- |
+| `msgHash` | string (hex) | Required (exactly 1) | Hash of the message to be signed |
+
+*Parameter #4---quorum hash*
+
+| Name | Type | Presence | Description |
+| ------------ | ------------ | -------------------- | --------------------- |
+| `quorumHash` | string (hex) | Optional (0 or 1) | The quorum identifier |
+
+*Parameter #5---submit*
+
+| Name | Type | Presence | Description |
+| -------- | ---- | -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `submit` | bool | Optional (0 or 1) | *Added in Dash Core 0.17.0*
Submits the signature share to the network if this is `true` (default). Returns an object containing the signature share if this is `false`. |
+
+*Result---(if submit = `true`) status*
+
+| Name | Type | Presence | Description |
+| ------ | ---- | ----------------------- | ---------------------------------- |
+| result | bool | Required (exactly 1) | True or false depending on success |
+
+*Result---(if submit = `false`) signature share JSON object*
+
+| Name | Type | Presence | Description |
+| ------------------- | ------------ | ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| result | object | Required (exactly 1) | JSON object containing signature share details |
+| → `llmqType` | number | Required (exactly 1) | [Type of quorum](https://github.com/dashpay/dips/blob/master/dip-0006/llmq-types.md): `1` - LLMQ_50_60 `2` - LLMQ_400_60 `3` - LLMQ_400_85 `4` - LLMQ_100_67 |
+| → `quorumHash` | string (hex) | Required (exactly 1) | The quorum identifier |
+| → `quorumMember` | number | Required (exactly 1) | Which quorum member created this signature share |
+| → `id` | string (hex) | Required (exactly 1) | Signing request ID |
+| → `msgHash` | string (hex) | Required (exactly 1) | Hash of the message that was signed |
+| → `signHash` | string (hex) | Required (exactly 1) | Hash of `llmqType`, `quorumHash`, `id`, and `msgHash` |
+| → `signature` | string (hex) | Required (exactly 1) | Signature share |
+
+*Example from Dash Core 0.17.0*
+
+Submit signature share to network (default):
+
+```bash
+dash-cli -testnet quorum sign 1 \
+ "abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234" \
+ "51c11d287dfa85aef3eebb5420834c8e443e01d15c0b0a8e397d67e2e51aa239"
+```
+
+Result:
+
+```json
+false
+```
+
+Return signature share object:
+
+```bash
+dash-cli -testnet quorum sign 100 \
+ "0000000000000000000000000000000000000000000000000000000000000001" \
+ "0000000000000000000000000000000000000000000000000000000000000002" \
+ "53d959f609a654cf4e5e3c083fd6c47b7ec6cb73af4ac7329149688337b8ef9a" false
+```
+
+Result:
+
+```json
+{
+ "llmqType": 100,
+ "quorumHash": "53d959f609a654cf4e5e3c083fd6c47b7ec6cb73af4ac7329149688337b8ef9a",
+ "quorumMember": 2,
+ "id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "msgHash": "0000000000000000000000000000000000000000000000000000000000000002",
+ "signHash": "39458221939396a45a2e348caada646eabd52849990827d40e33eb1399097b3c",
+ "signature": "9716545a0c28ff70900a71fabbadf3c13e4ae562032122902405365f1ebf3da813c8a97d765eb8b167ff339c1638550c13822217cf06b609ba6a78f0035684ca7b4afdb7146ce74a30cfb6770f852aade8c27ffec67c79f85be31964573fb51c"
+}
+```
+
+### 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.
+
+*Parameter #1---LLMQ Type*
+
+| Name | Type | Presence | Description |
+| ---------- | ------ | ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `llmqType` | number | Required (exactly 1) | [Type of quorum](https://github.com/dashpay/dips/blob/master/dip-0006/llmq-types.md): `1` - LLMQ_50_60 `2` - LLMQ_400_60 `3` - LLMQ_400_85 `4` - LLMQ_100_67 |
+
+*Parameter #2---id*
+
+| Name | Type | Presence | Description |
+| ---- | ------------ | ----------------------- | ------------------ |
+| `id` | string (hex) | Required (exactly 1) | Signing request ID |
+
+*Parameter #3---message hash*
+
+| Name | Type | Presence | Description |
+| --------- | ------------ | ----------------------- | -------------------------------- |
+| `msgHash` | string (hex) | Required (exactly 1) | Hash of the message to be signed |
+
+*Result---recovered signature*
+
+| Name | Type | Presence | Description |
+| ----------------- | ------------ | ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| result | bool | Required (exactly 1) | Recovered signature details |
+| → `llmqType` | number | Required (exactly 1) | [Type of quorum](https://github.com/dashpay/dips/blob/master/dip-0006/llmq-types.md): `1` - LLMQ_50_60 `2` - LLMQ_400_60 `3` - LLMQ_400_85 `4` - LLMQ_100_67 |
+| → `quorumHash` | string (hex) | Required (exactly 1) | The block hash of the quorum |
+| → `id` | string (hex) | Required (exactly 1) | The signing session ID |
+| → `msgHash` | string (hex) | Required (exactly 1) | The message hash |
+| → `sig` | string (hex) | Required (exactly 1) | The recovered signature |
+| → `hash` | string (hex) | Required (exactly 1) | The hash of the recovered signature |
+
+*Example from Dash Core 0.14.0*
+
+```bash
+dash-cli -testnet quorum getrecsig 1 \
+ "e980ebf295b42f24b03321ffb255818753b2b211e8c46b61c0b6fde91242d12f" \
+ "907087d4720850e639b7b5cc41d7a6d020e5a50debb3bc3974f0cb3d7d378ea4"
+```
+
+Result:
+
+```json
+{
+ "llmqType": 1,
+ "quorumHash": "00000000008344da08e4d262773ea545472fbf625f78b3ebfe5fc067c33b1d22",
+ "id": "e980ebf295b42f24b03321ffb255818753b2b211e8c46b61c0b6fde91242d12f",
+ "msgHash": "907087d4720850e639b7b5cc41d7a6d020e5a50debb3bc3974f0cb3d7d378ea4",
+ "sig": "1365171c408d686af2ca8f5fae91cdf9cf0b5eec60b0b161b9288a1c68e2cd68f225495a787415c924c5953a6282d131178aa6baf4c2673d19549fc627740cf71d295f8a38b9970525a7f248d54a548e16da285b5c1f3ec0740ad40edbcc8615",
+ "hash": "d9b7f7904746fbb3eeaeec36fadc79b351f6a854cd22ee9e607592aee972fcb2"
+}
+```
+
+### Quorum HasRecSig
+
+The `quorum hasrecsig` RPC checks for a recovered signature for a previous threshold-signing message request.
+
+:::{note}
+Used for testing on the RegTest network only.
+:::
+
+*Parameter #1---LLMQ Type*
+
+| Name | Type | Presence | Description |
+| ---------- | ------ | ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `llmqType` | number | Required (exactly 1) | [Type of quorum](https://github.com/dashpay/dips/blob/master/dip-0006/llmq-types.md): `1` - LLMQ_50_60 `2` - LLMQ_400_60 `3` - LLMQ_400_85 `4` - LLMQ_100_67 |
+
+*Parameter #2---id*
+
+| Name | Type | Presence | Description |
+| ---- | ------------ | ----------------------- | ------------------ |
+| `id` | string (hex) | Required (exactly 1) | Signing request ID |
+
+*Parameter #3---message hash*
+
+| Name | Type | Presence | Description |
+| --------- | ------------ | ----------------------- | -------------------------------- |
+| `msgHash` | string (hex) | Required (exactly 1) | Hash of the message to be signed |
+
+*Result---status*
+
+| Name | Type | Presence | Description |
+| ------ | ---- | ----------------------- | ---------------------------------- |
+| result | bool | Required (exactly 1) | True or false depending on success |
+
+*Example from Dash Core 0.14.0*
+
+```bash
+dash-cli -testnet quorum hasrecsig 1 \
+ "e980ebf295b42f24b03321ffb255818753b2b211e8c46b61c0b6fde91242d12f" \
+ "907087d4720850e639b7b5cc41d7a6d020e5a50debb3bc3974f0cb3d7d378ea4"
+```
+
+Result:
+
+```text
+true
+```
+
+### Quorum IsConflicting
+
+The `quorum isconflicting` RPC checks if there is a conflict for a threshold-signing message request.
+
+:::{note}
+Used for testing on the RegTest network only.
+:::
+
+*Parameter #1---LLMQ Type*
+
+| Name | Type | Presence | Description |
+| ---------- | ------ | ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `llmqType` | number | Required (exactly 1) | [Type of quorum](https://github.com/dashpay/dips/blob/master/dip-0006/llmq-types.md): `1` - LLMQ_50_60 `2` - LLMQ_400_60 `3` - LLMQ_400_85 `4` - LLMQ_100_67 |
+
+*Parameter #2---id*
+
+| Name | Type | Presence | Description |
+| ---- | ------------ | ----------------------- | ------------------ |
+| `id` | string (hex) | Required (exactly 1) | Signing request ID |
+
+*Parameter #3---message hash*
+
+| Name | Type | Presence | Description |
+| --------- | ------------ | ----------------------- | -------------------------------- |
+| `msgHash` | string (hex) | Required (exactly 1) | Hash of the message to be signed |
+
+*Result---status*
+
+| Name | Type | Presence | Description |
+| ------ | ---- | ----------------------- | ---------------------------------- |
+| result | bool | Required (exactly 1) | True or false depending on success |
+
+*Example from Dash Core 0.14.0*
+
+```bash
+dash-cli -testnet quorum isconflicting 1 \
+ "e980ebf295b42f24b03321ffb255818753b2b211e8c46b61c0b6fde91242d12f" \
+ "907087d4720850e639b7b5cc41d7a6d020e5a50debb3bc3974f0cb3d7d378ea4"
+```
+
+Result:
+
+```text
+false
+```
+
+### Quorum MemberOf
+
+The [`quorum` RPC](../api/remote-procedure-calls-evo.md#quorum) checks which quorums the given masternode is a member of.
+
+*Parameter #1---proTxHash*
+
+| Name | Type | Presence | Description |
+| --------- | ------ | ----------------------- | ---------------------------- |
+| proTxHash | string | Required (exactly 1) | ProTxHash of the masternode. |
+
+*Parameter #2---scanQuorumsCount*
+
+| Name | Type | Presence | Description |
+| ---------------- | ------ | -------- | --------------------------------------------------------------------------------------------------------------- |
+| scanQuorumsCount | number | Optional | Number of quorums to scan for. If not specified, the active quorum count for each specific quorum type is used. |
+
+*Result---list of quorums the masternode is a member of*
+
+| Name | Type | Presence | Description |
+| ------------------------ | ---------------- | ----------------------- | -------------------------------------------------------------------------------------------- |
+| `result` | Array of objects | Required (exactly 1) | Array containing info for quorum's the masternode belongs to |
+| → Quorum | object | Required (0 or more) | An object describing quorum details |
+| → → `height` | number | Required (exactly 1) | Block height of the quorum |
+| → → `type` | string | Required (exactly 1) | [Type of quorum](https://github.com/dashpay/dips/blob/master/dip-0006/llmq-types.md) |
+| → → `quorumHash` | string (hex) | Required (exactly 1) | The hash of the quorum |
+| → → `minedBlock` | string (hex) | Required (exactly 1) | The hash of the block that established the quorum |
+| → → `quorumPublicKey` | string (hex) | Required (exactly 1) | Quorum public key |
+| → → `isValidMember` | bool | Required (exactly 1) | Indicates if the member is valid |
+| → → `memberIndex` | number | Required (exactly 1) | Index of the member within the quorum |
+
+*Example from Dash Core 0.15.0*
+
+```bash
+dash-cli -testnet quorum memberof 1 \
+ 39c07d2c9c6d0ead56f52726b63c15e295cb5c3ecf7fe1fefcfb23b2e3cfed1f 1
+```
+
+Result:
+
+```json
+[
+ {
+ "height": 72000,
+ "type": "llmq_400_60",
+ "quorumHash": "0000000007697fd69a799bfa26576a177e817bc0e45b9fcfbf48b362b05aeff2",
+ "minedBlock": "00000000014d910dca80944b52aa3f522d5604254043b8354d641912aace4343",
+ "quorumPublicKey": "03a3fbbe99d80a9be8fc59fd4fe43dfbeba9119b688e97493664716cdf15ae47fad70fea7cb93f20fba10d689f9e3c02",
+ "isValidMember": true,
+ "memberIndex": 80
+ }
+]
+```
+
+*See also: none*
+
+### Quorum ListExtended
+
+The `quorum listextended` RPC returns an extended list of on-chain quorums.
+
+*Parameter #1---height*
+
+| Name | Type | Presence | Description |
+| -------- | ------- | -------------------- | ------------------------------------------------------------------------------- |
+| `height` | numeric | Optional (0 or 1) | The height index. Will list active quorums at tip if "height" is not specified. |
+
+*Result---list extended*
+
+| Name | Type | Presence | Description |
+| ------------------------- | ---------------- | ----------------------- | --------------------------------------------------------------- |
+| `result` | object | Required (exactly 1) | Object containing an extended list of on-chain quorums |
+| → `quorumName` | array of objects | Required (exactly 1) | List of quorum details per some quorum type |
+| →→ `xxxx` | object | Required (exactly 1) | Quorum hash. Note: most recent quorums come first |
+| →→→ `creationHeight` | numeric | Required (exactly 1) | Block height where the DKG started |
+| →→→ `quorumIndex` | numeric | Required (exactly 1) | Quorum index (applicable only to rotated quorums) |
+| →→→ `minedBlockHash` | string | Required (exactly 1) | Blockhash where the commitment was mined. |
+| →→→ `numValidMembers` | numeric | Required (exactly 1) | The total of valid members. |
+| →→→ `healthRatio` | numeric | Required (exactly 1) | The ratio of healthy members to quorum size. Range [0.0 - 1.0]. |
+
+*Example from Dash Core 18.2.0*
+
+```bash
+dash-cli quorum listextended 1800330
+```
+
+Result:
+
+```
+{
+ "llmq_60_75": [
+ {
+ "000000000000003892d192fe4c76865c398b117e6d28f4e5978f5fea07a392a0": {
+ "quorumIndex": 0,
+ "creationHeight": 1800288,
+ "minedBlockHash": "0000000000000046e498ceae65713b6daf142db12ccb012fac488acbfd84aad5",
+ "numValidMembers": 60,
+ "healthRatio": "1.00"
+ }
+ },
+ {
+ "000000000000001e209abbe9ddf3d9d6f413ec76920de87071dd50ea90b38766": {
+ "quorumIndex": 1,
+ "creationHeight": 1800289,
+ "minedBlockHash": "0000000000000046e498ceae65713b6daf142db12ccb012fac488acbfd84aad5",
+ "numValidMembers": 60,
+ "healthRatio": "1.00"
+ }
+ },
+ {
+ "0000000000000019273ab7f86e2a4e52779141a01373909cd058c48c23849bee": {
+ "quorumIndex": 2,
+ "creationHeight": 1800290,
+ "minedBlockHash": "0000000000000046e498ceae65713b6daf142db12ccb012fac488acbfd84aad5",
+ "numValidMembers": 60,
+ "healthRatio": "1.00"
+ }
+ },
+ {
+ "0000000000000022b4e1fba61c99235ae6f233a76dded4c4ddc2919680cb54e8": {
+ "quorumIndex": 3,
+ "creationHeight": 1800291,
+ "minedBlockHash": "0000000000000046e498ceae65713b6daf142db12ccb012fac488acbfd84aad5",
+ "numValidMembers": 60,
+ "healthRatio": "1.00"
+ }
+ },
+ {
+ "0000000000000016c2fe9dc3a0f3f66325351667b42985e46ab15a87dbe64df5": {
+ "quorumIndex": 4,
+ "creationHeight": 1800292,
+ "minedBlockHash": "0000000000000046e498ceae65713b6daf142db12ccb012fac488acbfd84aad5",
+ "numValidMembers": 60,
+ "healthRatio": "1.00"
+ }
+ },
+ {
+ "000000000000002ef4d32dc86ec7cad427bd187991c868fd4cccbf62732cbbfb": {
+ "quorumIndex": 5,
+ "creationHeight": 1800293,
+ "minedBlockHash": "0000000000000046e498ceae65713b6daf142db12ccb012fac488acbfd84aad5",
+ "numValidMembers": 60,
+ "healthRatio": "1.00"
+ }
+ },
+ {
+ "000000000000000d3cdd5dce4bbe7b327112bd5b637f96cb64cf07faedf7833b": {
+ "quorumIndex": 6,
+ "creationHeight": 1800294,
+ "minedBlockHash": "0000000000000046e498ceae65713b6daf142db12ccb012fac488acbfd84aad5",
+ "numValidMembers": 60,
+ "healthRatio": "1.00"
+ }
+ },
+ {
+ "00000000000000022833d76c3ea60bb0f9cec5a9aee66012e3310561e7fff273": {
+ "quorumIndex": 7,
+ "creationHeight": 1800295,
+ "minedBlockHash": "0000000000000046e498ceae65713b6daf142db12ccb012fac488acbfd84aad5",
+ "numValidMembers": 60,
+ "healthRatio": "1.00"
+ }
+ },
+ {
+ "000000000000000da0750d6d6df6c9aff6b1b37333a485c9e2a590943bf3a300": {
+ "quorumIndex": 8,
+ "creationHeight": 1800296,
+ "minedBlockHash": "0000000000000046e498ceae65713b6daf142db12ccb012fac488acbfd84aad5",
+ "numValidMembers": 60,
+ "healthRatio": "1.00"
+ }
+ },
+ {
+ "00000000000000014d22d5fff6cc3645e3144b1831425a3fd19e376b8ae1fd14": {
+ "quorumIndex": 9,
+ "creationHeight": 1800297,
+ "minedBlockHash": "0000000000000046e498ceae65713b6daf142db12ccb012fac488acbfd84aad5",
+ "numValidMembers": 59,
+ "healthRatio": "0.98"
+ }
+ },
+ {
+ "0000000000000018193220b520572d4f9a622a6767358b2af5fd721a57dab2f0": {
+ "quorumIndex": 10,
+ "creationHeight": 1800298,
+ "minedBlockHash": "0000000000000046e498ceae65713b6daf142db12ccb012fac488acbfd84aad5",
+ "numValidMembers": 60,
+ "healthRatio": "1.00"
+ }
+ },
+ {
+ "000000000000002a94bbb787ddf45687b5982e894157884067d6c5c8ed721495": {
+ "quorumIndex": 11,
+ "creationHeight": 1800299,
+ "minedBlockHash": "0000000000000046e498ceae65713b6daf142db12ccb012fac488acbfd84aad5",
+ "numValidMembers": 60,
+ "healthRatio": "1.00"
+ }
+ },
+ {
+ "000000000000000ddc0112c3d2c625127ccac4311cb8031759a8238ed9e84d8b": {
+ "quorumIndex": 12,
+ "creationHeight": 1800300,
+ "minedBlockHash": "0000000000000046e498ceae65713b6daf142db12ccb012fac488acbfd84aad5",
+ "numValidMembers": 59,
+ "healthRatio": "0.98"
+ }
+ },
+ {
+ "000000000000002bb301832bf8d48ccf67256a7d470cb89348d3fb22bc75467d": {
+ "quorumIndex": 13,
+ "creationHeight": 1800301,
+ "minedBlockHash": "0000000000000046e498ceae65713b6daf142db12ccb012fac488acbfd84aad5",
+ "numValidMembers": 60,
+ "healthRatio": "1.00"
+ }
+ },
+ {
+ "000000000000001439d25b7cec34aabd39454956ca0ef632a33ee1923b63bcb5": {
+ "quorumIndex": 14,
+ "creationHeight": 1800302,
+ "minedBlockHash": "0000000000000046e498ceae65713b6daf142db12ccb012fac488acbfd84aad5",
+ "numValidMembers": 60,
+ "healthRatio": "1.00"
+ }
+ },
+ {
+ "0000000000000016ca53419e336df1f57c22e22e7347eb6ee185911eeb0eadbc": {
+ "quorumIndex": 15,
+ "creationHeight": 1800303,
+ "minedBlockHash": "0000000000000046e498ceae65713b6daf142db12ccb012fac488acbfd84aad5",
+ "numValidMembers": 59,
+ "healthRatio": "0.98"
+ }
+ },
+ {
+ "000000000000002f80f43d095ffd11397d69414b72dc3b22ca471ac7a18aa2d0": {
+ "quorumIndex": 16,
+ "creationHeight": 1800304,
+ "minedBlockHash": "0000000000000046e498ceae65713b6daf142db12ccb012fac488acbfd84aad5",
+ "numValidMembers": 59,
+ "healthRatio": "0.98"
+ }
+ },
+ {
+ "00000000000000207de79166196c12d914f69fa1c0895b9d51dfc66de1d670e6": {
+ "quorumIndex": 17,
+ "creationHeight": 1800305,
+ "minedBlockHash": "0000000000000046e498ceae65713b6daf142db12ccb012fac488acbfd84aad5",
+ "numValidMembers": 59,
+ "healthRatio": "0.98"
+ }
+ },
+ {
+ "0000000000000000d71b16a4160d5c9cc7751593be3c16328ddb2eee95957f13": {
+ "quorumIndex": 18,
+ "creationHeight": 1800306,
+ "minedBlockHash": "0000000000000046e498ceae65713b6daf142db12ccb012fac488acbfd84aad5",
+ "numValidMembers": 57,
+ "healthRatio": "0.95"
+ }
+ },
+ {
+ "0000000000000019530a9727b0a44d5551451a7d78608be53fdedcf3c9d8a443": {
+ "quorumIndex": 19,
+ "creationHeight": 1800307,
+ "minedBlockHash": "0000000000000046e498ceae65713b6daf142db12ccb012fac488acbfd84aad5",
+ "numValidMembers": 60,
+ "healthRatio": "1.00"
+ }
+ },
+ {
+ "0000000000000027f61ba67222e4ab8a0c7713d0d2c38344c1f7159541ae663a": {
+ "quorumIndex": 20,
+ "creationHeight": 1800308,
+ "minedBlockHash": "0000000000000046e498ceae65713b6daf142db12ccb012fac488acbfd84aad5",
+ "numValidMembers": 60,
+ "healthRatio": "1.00"
+ }
+ },
+ {
+ "00000000000000121db16ad865fa36be61404a78bba17e372df7e12597941796": {
+ "quorumIndex": 21,
+ "creationHeight": 1800309,
+ "minedBlockHash": "0000000000000046e498ceae65713b6daf142db12ccb012fac488acbfd84aad5",
+ "numValidMembers": 59,
+ "healthRatio": "0.98"
+ }
+ },
+ {
+ "000000000000002c024394c7e0fdc031d7904d538dd6e3688d765dd1dac62172": {
+ "quorumIndex": 22,
+ "creationHeight": 1800310,
+ "minedBlockHash": "0000000000000046e498ceae65713b6daf142db12ccb012fac488acbfd84aad5",
+ "numValidMembers": 60,
+ "healthRatio": "1.00"
+ }
+ },
+ {
+ "000000000000001ca51cd8d63690283d2afa9ccb69e987c146439ecd25e8b8ae": {
+ "quorumIndex": 23,
+ "creationHeight": 1800311,
+ "minedBlockHash": "0000000000000046e498ceae65713b6daf142db12ccb012fac488acbfd84aad5",
+ "numValidMembers": 60,
+ "healthRatio": "1.00"
+ }
+ },
+ {
+ "00000000000000096c70b0cd1fed28e481f1b74076c8591450357fff57a0cd1e": {
+ "quorumIndex": 24,
+ "creationHeight": 1800312,
+ "minedBlockHash": "0000000000000046e498ceae65713b6daf142db12ccb012fac488acbfd84aad5",
+ "numValidMembers": 60,
+ "healthRatio": "1.00"
+ }
+ },
+ {
+ "0000000000000028d654215c87a18e86966d25d3d57a62e02ce5bb8a16407aa9": {
+ "quorumIndex": 25,
+ "creationHeight": 1800313,
+ "minedBlockHash": "0000000000000046e498ceae65713b6daf142db12ccb012fac488acbfd84aad5",
+ "numValidMembers": 60,
+ "healthRatio": "1.00"
+ }
+ },
+ {
+ "0000000000000026116f41a22ef0c5c5442ebbd31e9226ea218ebaf2bef09e68": {
+ "quorumIndex": 26,
+ "creationHeight": 1800314,
+ "minedBlockHash": "0000000000000046e498ceae65713b6daf142db12ccb012fac488acbfd84aad5",
+ "numValidMembers": 60,
+ "healthRatio": "1.00"
+ }
+ },
+ {
+ "000000000000002aa07eb158ab1a70d27a382921de2b940eab09b1d175da58f3": {
+ "quorumIndex": 27,
+ "creationHeight": 1800315,
+ "minedBlockHash": "0000000000000046e498ceae65713b6daf142db12ccb012fac488acbfd84aad5",
+ "numValidMembers": 60,
+ "healthRatio": "1.00"
+ }
+ },
+ {
+ "0000000000000028f04886bb10557f2b62373bbeecc54e40b1306fc2960bf6fc": {
+ "quorumIndex": 28,
+ "creationHeight": 1800316,
+ "minedBlockHash": "0000000000000046e498ceae65713b6daf142db12ccb012fac488acbfd84aad5",
+ "numValidMembers": 60,
+ "healthRatio": "1.00"
+ }
+ },
+ {
+ "000000000000001f57ef24b442689b83f459291f441f63d1d152f18669759bdf": {
+ "quorumIndex": 29,
+ "creationHeight": 1800317,
+ "minedBlockHash": "0000000000000046e498ceae65713b6daf142db12ccb012fac488acbfd84aad5",
+ "numValidMembers": 59,
+ "healthRatio": "0.98"
+ }
+ },
+ {
+ "000000000000000b1243e19772259b34f29a57bc807ebb155fbb68791af37610": {
+ "quorumIndex": 30,
+ "creationHeight": 1800318,
+ "minedBlockHash": "0000000000000046e498ceae65713b6daf142db12ccb012fac488acbfd84aad5",
+ "numValidMembers": 60,
+ "healthRatio": "1.00"
+ }
+ },
+ {
+ "000000000000002c406fb450d718b989b951f3c230839062d929e1af7e3cbaee": {
+ "quorumIndex": 31,
+ "creationHeight": 1800031,
+ "minedBlockHash": "000000000000002c9242df9a454e7e0aad7f7d4bf40c84c7adacc0e99c5d9a80",
+ "numValidMembers": 60,
+ "healthRatio": "1.00"
+ }
+ }
+ ],
+ "llmq_400_60": [
+ {
+ "000000000000003892d192fe4c76865c398b117e6d28f4e5978f5fea07a392a0": {
+ "creationHeight": 1800288,
+ "minedBlockHash": "00000000000000121db16ad865fa36be61404a78bba17e372df7e12597941796",
+ "numValidMembers": 400,
+ "healthRatio": "1.00"
+ }
+ },
+ {
+ "000000000000002a19e055ca3767d6200b5b8a872e978610209721e8520c3916": {
+ "creationHeight": 1800000,
+ "minedBlockHash": "0000000000000008dcd194b9702bbf8fab74cf150ca6b2ec54377874839a0f60",
+ "numValidMembers": 400,
+ "healthRatio": "1.00"
+ }
+ },
+ {
+ "0000000000000017e56702f42874c51b1869e5225f50765cabe9f1ee0b33fa5b": {
+ "creationHeight": 1799712,
+ "minedBlockHash": "0000000000000026f22894d7d24de94e57f2683cefae3c6fdb4e043e26750711",
+ "numValidMembers": 399,
+ "healthRatio": "1.00"
+ }
+ },
+ {
+ "000000000000001f1672260b4edac3e5f278e55c09dc4d51e93b9a143f4bcc23": {
+ "creationHeight": 1799424,
+ "minedBlockHash": "000000000000002de4624c6476c3533bace5b8811a9ecf48ddeae624f94214c5",
+ "numValidMembers": 400,
+ "healthRatio": "1.00"
+ }
+ }
+ ],
+ "llmq_400_85": [
+ {
+ "000000000000002a19e055ca3767d6200b5b8a872e978610209721e8520c3916": {
+ "creationHeight": 1800000,
+ "minedBlockHash": "0000000000000008dcd194b9702bbf8fab74cf150ca6b2ec54377874839a0f60",
+ "numValidMembers": 397,
+ "healthRatio": "0.99"
+ }
+ },
+ {
+ "000000000000001f1672260b4edac3e5f278e55c09dc4d51e93b9a143f4bcc23": {
+ "creationHeight": 1799424,
+ "minedBlockHash": "000000000000002de4624c6476c3533bace5b8811a9ecf48ddeae624f94214c5",
+ "numValidMembers": 400,
+ "healthRatio": "1.00"
+ }
+ },
+ {
+ "000000000000003972108d2bd0d2e3ef5193b2709ab9f1938d91b446d52bbf1a": {
+ "creationHeight": 1798848,
+ "minedBlockHash": "00000000000000443ccd4f40d534dbc0031a505becf13ad14d8f3c15534db40d",
+ "numValidMembers": 399,
+ "healthRatio": "1.00"
+ }
+ },
+ {
+ "0000000000000021318ce8dec7d7239bc4ffb407b51e7f75f89116348ab7f63d": {
+ "creationHeight": 1798272,
+ "minedBlockHash": "0000000000000025e4189f7d4ece51b344fd50f5660352e15d2af45e2476adde",
+ "numValidMembers": 399,
+ "healthRatio": "1.00"
+ }
+ }
+ ],
+ "llmq_100_67": [
+ {
+ "00000000000000096c70b0cd1fed28e481f1b74076c8591450357fff57a0cd1e": {
+ "creationHeight": 1800312,
+ "minedBlockHash": "0000000000000017553cc929c0bcd570b444f5caa46bb1c53ac9b6b4b587a6b1",
+ "numValidMembers": 100,
+ "healthRatio": "1.00"
+ }
+ },
+ {
+ "000000000000003892d192fe4c76865c398b117e6d28f4e5978f5fea07a392a0": {
+ "creationHeight": 1800288,
+ "minedBlockHash": "000000000000000ddc0112c3d2c625127ccac4311cb8031759a8238ed9e84d8b",
+ "numValidMembers": 100,
+ "healthRatio": "1.00"
+ }
+ },
+ {
+ "0000000000000023d18e24d490138bc33061fb5d354d6a93b7e8655bb7fb5cd5": {
+ "creationHeight": 1800264,
+ "minedBlockHash": "000000000000002d698057b2a3424feaba9f5e2d2a3f8e18b0df3eda7a6d7ae1",
+ "numValidMembers": 100,
+ "healthRatio": "1.00"
+ }
+ },
+ {
+ "000000000000001410a901c3afa742d883c9fdabce4bc5ae511e5332b6ba4a2c": {
+ "creationHeight": 1800240,
+ "minedBlockHash": "000000000000001efdc8e694bd889398686a57859d2063880b9b22ff80e59992",
+ "numValidMembers": 100,
+ "healthRatio": "1.00"
+ }
+ },
+ {
+ "000000000000001e7c54a085503e8d8d50ad7255298a490db86d94d2190025b3": {
+ "creationHeight": 1800216,
+ "minedBlockHash": "000000000000002bab372f9a27d68cf1f3bf4a2c393d2228b8a60dea0d7069b0",
+ "numValidMembers": 100,
+ "healthRatio": "1.00"
+ }
+ },
+ {
+ "0000000000000012000e6134e98fdae4c5174e29fb4e92b97f72b5b31de8b22e": {
+ "creationHeight": 1800192,
+ "minedBlockHash": "00000000000000266fd7587535728e4f10a4aabdc6aeddce425166ff62498ee8",
+ "numValidMembers": 100,
+ "healthRatio": "1.00"
+ }
+ },
+ {
+ "000000000000000d7bfac2eb39c8ca7e34e406f10d34309e383bf6cd12955f33": {
+ "creationHeight": 1800168,
+ "minedBlockHash": "000000000000001ee28ea86d5682ea13ae10cfda81a5ec702def62a7190448fa",
+ "numValidMembers": 100,
+ "healthRatio": "1.00"
+ }
+ },
+ {
+ "000000000000000ec2e9281eb00e49d28794b7aa0e7bc2ca2087446f8bd950d2": {
+ "creationHeight": 1800144,
+ "minedBlockHash": "000000000000001aa3571b0b3433bf3d40e2f7065c9c62a7016cf9c6cbd1225d",
+ "numValidMembers": 100,
+ "healthRatio": "1.00"
+ }
+ },
+ {
+ "000000000000000df63557d980360d610b802fd3929444cadd2aaf052d11c80c": {
+ "creationHeight": 1800120,
+ "minedBlockHash": "000000000000000147ecaf84980dcceaee55053536c21c91906e9068641dbb8f",
+ "numValidMembers": 100,
+ "healthRatio": "1.00"
+ }
+ },
+ {
+ "0000000000000014ce6fe9b7c4c4237d21954e9f5bce96b0fa87ed6e780dea10": {
+ "creationHeight": 1800096,
+ "minedBlockHash": "00000000000000286fc19ecbb6f25c69cba2ceadc9064e5534c4efb252599ad3",
+ "numValidMembers": 100,
+ "healthRatio": "1.00"
+ }
+ },
+ {
+ "00000000000000061da2087af9502da3b7d8a443569b93dbe130e7a5e22bdab1": {
+ "creationHeight": 1800072,
+ "minedBlockHash": "0000000000000008866e1a7ee16a99c4baf59dd311a041314c9f1a6c2bd99666",
+ "numValidMembers": 100,
+ "healthRatio": "1.00"
+ }
+ },
+ {
+ "000000000000001e63afa146c3b3af04e11b103bf431b6795af6f27fa7e93b27": {
+ "creationHeight": 1800048,
+ "minedBlockHash": "0000000000000031106ea328f2aa48fd86f689dfb84376e7f3c6f9a71c5ff8e9",
+ "numValidMembers": 100,
+ "healthRatio": "1.00"
+ }
+ },
+ {
+ "0000000000000020d38f6a522b60b098a83ae65f29fc8c0ce998aad9a551117d": {
+ "creationHeight": 1800024,
+ "minedBlockHash": "0000000000000018c126af1636f8d82fc48bf2f919992d709f423a3d71cfa9ac",
+ "numValidMembers": 100,
+ "healthRatio": "1.00"
+ }
+ },
+ {
+ "000000000000002a19e055ca3767d6200b5b8a872e978610209721e8520c3916": {
+ "creationHeight": 1800000,
+ "minedBlockHash": "000000000000000de079e14e271ad9714ff33adc5636922ba943a65e21b90a8a",
+ "numValidMembers": 100,
+ "healthRatio": "1.00"
+ }
+ },
+ {
+ "000000000000000383e3d518a7249e65ab5b642ea01456bd920124ec4985c56a": {
+ "creationHeight": 1799976,
+ "minedBlockHash": "000000000000002738b4c991238340cfe94e08a5ca88144ffbc90272d0f5c853",
+ "numValidMembers": 100,
+ "healthRatio": "1.00"
+ }
+ },
+ {
+ "0000000000000038267cd98aa082c4e43521edc6feaff53af21a8f134c1ed05f": {
+ "creationHeight": 1799952,
+ "minedBlockHash": "00000000000000064636f2fc5338f6d34033928614487e055cd3a54e7933b8f9",
+ "numValidMembers": 100,
+ "healthRatio": "1.00"
+ }
+ },
+ {
+ "000000000000000acb20bef7d6a0a4b4b10a276c64d631d5c86fae05a33dfe0b": {
+ "creationHeight": 1799928,
+ "minedBlockHash": "0000000000000010fc8ee7e13fc198da76b25c598a59708327f44013e4e78aa0",
+ "numValidMembers": 100,
+ "healthRatio": "1.00"
+ }
+ },
+ {
+ "0000000000000005b452484413d52b186bf8a24174bb83ae673d03c04d9b3cc1": {
+ "creationHeight": 1799904,
+ "minedBlockHash": "000000000000000cb6c4587f83021b38cab2b1be05248ae8e06525da2078101a",
+ "numValidMembers": 100,
+ "healthRatio": "1.00"
+ }
+ },
+ {
+ "0000000000000013978d488be84a2b1a9a3fd936a1be6a250e4cdd8de0e7318e": {
+ "creationHeight": 1799880,
+ "minedBlockHash": "0000000000000021d6f2991e2c47875b7aa906a63f78457a1e7ee458962ba65d",
+ "numValidMembers": 100,
+ "healthRatio": "1.00"
+ }
+ },
+ {
+ "0000000000000008cc627164e04430716df733f61dfe01795e78b4bf60051294": {
+ "creationHeight": 1799856,
+ "minedBlockHash": "0000000000000010a8367e8d02a1774d3c54b075e2016e57ce90ef8a9426fcfa",
+ "numValidMembers": 100,
+ "healthRatio": "1.00"
+ }
+ },
+ {
+ "000000000000003497f267d65d3a29dc7d79b2925833bc92dbaf5096572427d8": {
+ "creationHeight": 1799832,
+ "minedBlockHash": "000000000000000374f39b533e45c86ad8109140412b3ac4872f88acb1505799",
+ "numValidMembers": 100,
+ "healthRatio": "1.00"
+ }
+ },
+ {
+ "0000000000000008556be7271f9942e38cbfe85ad8423b8c134fe0edbbd2c08e": {
+ "creationHeight": 1799808,
+ "minedBlockHash": "000000000000002309807a942f1e7ec628e92283df34d67db04e82c5c3907f21",
+ "numValidMembers": 100,
+ "healthRatio": "1.00"
+ }
+ },
+ {
+ "00000000000000276299f465ea5ecd680b4f6a6c1cf63a213f4ad98c5974ba4b": {
+ "creationHeight": 1799784,
+ "minedBlockHash": "00000000000000129cd44a7f7a824116156a325f61a7a69822ebd49c18457d11",
+ "numValidMembers": 100,
+ "healthRatio": "1.00"
+ }
+ },
+ {
+ "000000000000001d6f064000bf1258786d73dc87a8bd2bad3913483ea3b9f3aa": {
+ "creationHeight": 1799760,
+ "minedBlockHash": "000000000000001b7b5a5653a1ef67ad355321c4f2fccd93f2b4c56605fc2fea",
+ "numValidMembers": 99,
+ "healthRatio": "0.99"
+ }
+ }
+ ]
+}
+
+```
+
+*See also: none*
+
+### Quorum PlatformSign
+
+:::{versionadded} 21.0.0
+:::
+
+The `quorum platformsign` RPC requests threshold-signing for a message. It signs messages only for
+Platform quorums. It is equivalent to `quorum sign `.
+
+*Parameter #1---id*
+
+| Name | Type | Presence | Description |
+| ---- | ------------ | ----------------------- | ----------- |
+| `id` | string (hex) | Required (exactly 1) | Signing request ID |
+
+*Parameter #2---message hash*
+
+| Name | Type | Presence | Description |
+| --------- | ------------ | ----------------------- | -------------------------------- |
+| `msgHash` | string (hex) | Required (exactly 1) | Hash of the message to be signed |
+
+*Parameter #3---quorum hash*
+
+| Name | Type | Presence | Description |
+| ------------ | ------------ | -------------------- | --------------------- |
+| `quorumHash` | string (hex) | Optional (0 or 1) | The quorum identifier |
+
+*Parameter #4---submit*
+
+| Name | Type | Presence | Description |
+| -------- | ---- | -------------------- | ----------- |
+| `submit` | bool | Optional (0 or 1) | Submits the signature share to the network if this is `true` (default). Returns an object containing the signature share if this is `false`. |
+
+*Result---(if submit = `true`) status*
+
+| Name | Type | Presence | Description |
+| ------ | ---- | ----------------------- | ---------------------------------- |
+| result | bool | Required (exactly 1) | True or false depending on success |
+
+*Result---(if submit = `false`) signature share JSON object*
+
+| Name | Type | Presence | Description |
+| ------------------- | ------------ | ----------------------- | ----------- |
+| result | object | Required (exactly 1) | JSON object containing signature share details |
+| → `llmqType` | number | Required (exactly 1) | [Type of quorum](https://github.com/dashpay/dips/blob/master/dip-0006/llmq-types.md): `4` - LLMQ_100_67 |
+| → `quorumHash` | string (hex) | Required (exactly 1) | The quorum identifier |
+| → `quorumMember` | number | Required (exactly 1) | Which quorum member created this signature share |
+| → `id` | string (hex) | Required (exactly 1) | Signing request ID |
+| → `msgHash` | string (hex) | Required (exactly 1) | Hash of the message that was signed |
+| → `signHash` | string (hex) | Required (exactly 1) | Hash of `llmqType`, `quorumHash`, `id`, and `msgHash` |
+| → `signature` | string (hex) | Required (exactly 1) | Signature share |
+
+*Example from Dash Core 21.0.0*
+
+Submit signature share to network (default):
+
+```bash
+dash-cli -testnet quorum platformsign \
+ "abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234" \
+ "51c11d287dfa85aef3eebb5420834c8e443e01d15c0b0a8e397d67e2e51aa239"
+```
+
+Result:
+
+```json
+false
+```
+
+_See also_
+
+* [Quorum Sign](#quorum-sign): requests threshold-signing for a message.
+* [Quorum Info](#quorum-info): retrieves information about a specific quorum, including its members and the threshold required for signing.
+
+### Quorum RotationInfo
+
+The `quorum rotationinfo` RPC returns quorum rotation information. The response is a JSON representation of the data that would be returned in a [`qrinfo` message](../reference/p2p-network-data-messages.md#qrinfo).
+
+*Parameter #1---block request hash*
+
+| Name | Type | Presence | Description |
+| ------------------ | ------------ | ----------------------- | ----------------------------- |
+| `blockRequestHash` | string (hex) | Required (exactly 1) | The block hash of the request |
+
+*Parameter #2---extra share*
+
+| Name | Type | Presence | Description |
+| ------------ | ---- | -------------------- | --------------------------------------------------------------------------------------------------------------------- |
+| `extraShare` | bool | Optional (0 or 1) | Request an extra share (default: false). This extra share would support validation against the previous set of LLMQs. |
+
+*Parameter #3---base block hashes number*
+
+| Name | Type | Presence | Description |
+| ------------------ | ------------ | ----------------------- | -------------------------- |
+| `baseBlockHash...` | string (hex) | Optional (0 or more) | Block hashes (default: "") |
+
+*Result---rotation info*
+
+| Name | Type | Presence | Description |
+| ------------------------------- | ---------------- | ----------------------- | ---------------------------------------------------------------------------------------------------------- |
+| `result` | object | Required (exactly 1) | Object containing quorum rotation info |
+| → `extraShare` | bool | Required (exactly 1) | Whether or not an extra share is included |
+| → `quorumSnapshotAtHMinusC` | object | Required (exactly 1) | Quorum snapshot at `h-c` |
+| → `quorumSnapshotAtHMinus2C` | object | Required (exactly 1) | Quorum snapshot at `h-2c` |
+| → `quorumSnapshotAtHMinus3C` | object | Required (exactly 1) | Quorum snapshot at `h-3c` |
+| → `mnListDiffTip` | object | Required (exactly 1) | Masternode list diff for the tip |
+| → `mnListDiffH` | object | Required (exactly 1) | Masternode list diff for `h` |
+| → `mnListDiffAtHMinusC` | object | Required (exactly 1) | Masternode list diff for `h-c` |
+| → `mnListDiffAtHMinus2C` | object | Required (exactly 1) | Masternode list diff for `h-2c` |
+| → `mnListDiffAtHMinus3C` | object | Required (exactly 1) | Masternode list diff for `h-3c` |
+| → `blockHashList` | array | Required (exactly 1) | Array of block hashes. Returns the last successfully mined quorum per quorumIndex until `blockRequestHash` |
+| → `quorumSnapshotList` | array of objects | Required (exactly 1) | Array of quorum snapshot list objects |
+| → `mnListDiffList` | array of objects | Required (exactly 1) | Array of masternode list diff objects |
+
+*Example from Dash Core 18.0.0*
+
+```bash
+dash-cli -testnet quorum rotationinfo 000001e1ef5f2e2bbc3de3b8b3c554e756ef2b7dcd1eb7552ff48fe319caff4b
+```
+
+Result (truncated):
+
+```json
+{
+ "extraShare": false,
+ "quorumSnapshotAtHMinusC": {
+ "activeQuorumMembers": [
+ true,
+ false,
+ // Content truncated
+ ],
+ "mnSkipListMode": 1,
+ "mnSkipList": [
+ 7,
+ 1,
+ 6,
+ 7
+ ]
+ },
+ "quorumSnapshotAtHMinus2C": {
+ "activeQuorumMembers": [
+ true,
+ true,
+ // Content truncated
+ ],
+ "mnSkipListMode": 1,
+ "mnSkipList": [
+ 5,
+ 4,
+ 6,
+ 9
+ ]
+ },
+ "quorumSnapshotAtHMinus3C": {
+ "activeQuorumMembers": [
+ true,
+ true,
+ // Content truncated
+ ],
+ "mnSkipListMode": 1,
+ "mnSkipList": [
+ 4,
+ 3,
+ 7
+ ]
+ },
+ "mnListDiffTip": {
+ "baseBlockHash": "000008ca1832a4baf228eb1553c03d3a2c8e02399550dd6ea8d65cec3ef23d2e",
+ "blockHash": "000001f10408e797a2b8f5dd8a7e5835b7b54c82bf4c7d913bb60a028cb64acb",
+ "cbTxMerkleTree": "0100000001e862054f249eb3f84689d7bf5f42e89b1e540bd19feb5d656616e967c61837800101",
+ "cbTx": "03000500010000000000000000000000000000000000000000000000000000000000000000ffffffff050289070101ffffffff0200c817a8040000001976a914c0aa7affe002c1189d021ea819c2160f7100ef0288ac00ac23fc060000001976a914c0aa7affe002c1189d021ea819c2160f7100ef0288ac0000000046020089070000a0b1aca79a7d78ab800b5146a095e22033513ea6019164b0e46412e953400dd33953a26d62bed490814a65a7e9184094d0294d53676bf08272cc339f2cd41214",
+ "deletedMNs": [
+ ],
+ "mnList": [
+ {
+ "proRegTxHash": "ef99baa5848b2e2d012db5b0c17958e4ef6578c2c31a60f8cc12225168014ba1",
+ "confirmedHash": "000001d855b97191009c5ef8f915895ca2d51105c12df1671cb5faedbbb0f7ef",
+ "service": "34.220.68.124:20001",
+ "pubKeyOperator": "04bfadc894a7855412800db1941efc5284c0e19dd21512067e01bed98bfd939201e8bffd5de039177ef4ec15aa4c0bd5",
+ "votingAddress": "yMPLoqwqfnsTdQTTzcmont2HRkQyUewram",
+ "isValid": true
+ },
+ // Content truncated
+ ],
+ "deletedQuorums": [
+ ],
+ "newQuorums": [
+ {
+ "version": 2,
+ "llmqType": 101,
+ "quorumHash": "0000021a5928d86124863b0ad62585a6115b354424685c0ecc8adb00f29dd157",
+ "quorumIndex": 3,
+ "signersCount": 12,
+ "signers": "ff0f",
+ "validMembersCount": 12,
+ "validMembers": "ff0f",
+ "quorumPublicKey": "1252d661adab4e272767caa002e3fa1fa99ae95a8f2b75fa3f217801073032da15d3a21a19e6f1a3e1f09212cf87f8ae",
+ "quorumVvecHash": "a8719a7be6b82bd052c99bc89a8e1ad831a2d33b2440f5a1cfe66d4be1f6ee8e",
+ "quorumSig": "022288b10b1d94457de8312a884d520cf50058675c7f527a50629e27fd191142be594101213402b56f7a7e0736f71b70046c92bc4ad81a08cfecd7f3dbdecaf7050479f0227099c74f0be5ef302dd626701a1359075187fe799033619f6c8bf9",
+ "membersSig": "8ef10d202123e5fea80c8c0cd0ad8c4094b605cb977a1e3f9205f7f08fe1da2f1b4c2fa1dcc147ef55eee1bd24bd783513941ae485425400743edc3f2bceaa83b6424e3aa7d4578864a962a2a37066dac4c09ae4fde4569225edec3476b153eb"
+ },
+ // Content truncated
+ ],
+ "merkleRootMNList": "d30d4053e91264e4b0649101a63e513320e295a046510b80ab787d9aa7acb1a0",
+ "merkleRootQuorums": "1412d42c9f33cc7282f06b67534d29d0944018e9a7654a8190d4be626da25339"
+ },
+ "mnListDiffH": {}, // Content truncated
+ "mnListDiffAtHMinusC": {}, // Content truncated
+ "mnListDiffAtHMinus2C": {}, // Content truncated
+ "mnListDiffAtHMinus3C": {}, // Content truncated
+ "blockHashList": [
+ "000000956145f9b48231bbb2a7acd54301823f5619854df4487879dff18f2d79",
+ "0000002cc74d9300f5d8a5436cfaead69fd1aaf3d68a00e57bd89e878a76a841",
+ "0000002911d8f6c21571280953e9e581a6996822fab82adfb766c44e49d050e4",
+ "00000064edcdaea4f2962b3a7bf40bcb0aa8ee00a73da86c6bf80ef7c90af0ce"
+ ],
+ "quorumSnapshotList": [
+ {
+ "activeQuorumMembers": [
+ true,
+ true,
+ // Content truncated
+ ],
+ "mnSkipListMode": 1,
+ "mnSkipList": [
+ 9,
+ 1,
+ 3
+ ]
+ }
+ ],
+ "mnListDiffList": [
+ {
+ "baseBlockHash": "000008ca1832a4baf228eb1553c03d3a2c8e02399550dd6ea8d65cec3ef23d2e",
+ "blockHash": "000001a6c183a9ec58e1130f3c745dd7729a793974e7d97a10b2a3cb20e42a0a",
+ "cbTxMerkleTree": "010000000178e366554c6cfc0999d1991ba439d4c3b5f62b36f3f4f73c40f6d716f4a55d1a0101",
+ "cbTx": "03000500010000000000000000000000000000000000000000000000000000000000000000ffffffff0502c0060101ffffffff0200c817a8040000001976a914c0aa7affe002c1189d021ea819c2160f7100ef0288ac00ac23fc060000001976a914c0aa7affe002c1189d021ea819c2160f7100ef0288ac00000000460200c0060000a0b1aca79a7d78ab800b5146a095e22033513ea6019164b0e46412e953400dd3dc1437d53f3dcdb89ea5503743ea6ba4eba87c8fb2f47d8e12ea07acc1e39692",
+ "deletedMNs": [
+ ],
+ "mnList": [], // Content truncated
+ "deletedQuorums": [
+ ],
+ "newQuorums": [
+ {
+ "version": 2,
+ "llmqType": 101,
+ "quorumHash": "000002132c42566f37b89e90ae92277db8a89fa49bfbd1b2a638f9d10d92e219",
+ "quorumIndex": 3,
+ "signersCount": 12,
+ "signers": "ff0f",
+ "validMembersCount": 12,
+ "validMembers": "ff0f",
+ "quorumPublicKey": "920379ef7f296d9f8c5826c73ad78d026b4bb1dca97c83fb6c4bde23094482be631e375664a65eabd79138ed529e467c",
+ "quorumVvecHash": "670e3972eb4f0b42f944fd1c333808ae93d66748f9876e42e91fe503f5dab3b7",
+ "quorumSig": "151ee55b5ad68308d0a16ac47b237a6434bf205d80ffe4cbc5a0b84a70401d863cab7137c40edce2a6b92cd09f07c9ac18fd66c45a7077369f9dfc100ea2e5b5a49549e933ce4dafa8a9cbdb718de945fb805a5eb0c3f02c7159a5db6549a4e8",
+ "membersSig": "10745b04fa0c164e99b75ff8641c32282468daf928a393f8f98de58b24cffff0faab999b5ffebbb2d804aa6367ca52270ff669041175f6743af534127259b6984fbaae935bd6929e810acb1424b67e4a7af90c64bae477accc88a85ebf3d3891"
+ },
+ // Content truncated
+ ],
+ "merkleRootMNList": "d30d4053e91264e4b0649101a63e513320e295a046510b80ab787d9aa7acb1a0",
+ "merkleRootQuorums": "9296e3c1ac07ea128e7df4b28f7ca8eba46bea433750a59eb8cd3d3fd53714dc"
+ }
+ ]
+}
+```
+
+### Quorum SelectQuorum
+
+The `quorum selectquorum` RPC returns information about the quorum that would/should sign a request.
+
+*Parameter #1---LLMQ Type*
+
+| Name | Type | Presence | Description |
+| ---------- | ------ | ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `llmqType` | number | Required (exactly 1) | [Type of quorums](https://github.com/dashpay/dips/blob/master/dip-0006/llmq-types.md) to list: `1` - LLMQ_50_60 `2` - LLMQ_400_60 `3` - LLMQ_400_85 `4` - LLMQ_100_67 |
+
+*Parameter #2---request id*
+
+| Name | Type | Presence | Description |
+| ---- | ------------ | ----------------------- | -------------- |
+| `id` | string (hex) | Required (exactly 1) | The request ID |
+
+*Result---quorum hash and list of quorum members*
+
+| Name | Type | Presence | Description |
+| ----------------------- | ---------------- | ----------------------- | ------------------------------------------------------------- |
+| `result` | Array of objects | Required (exactly 1) | Array containing info for quorum's the masternode belongs to |
+| → `quorumHash` | string (hex) | Required (exactly 1) | The hash of the quorum |
+| →→ `recoveryMembers` | array | Required (exactly 1) | Array containing ProRegTx hashes |
+| →→→ ProRegTx Hash | string (hex) | Required (exactly 1) | The hash of the provider transaction as hex in RPC byte order |
+
+*Example from Dash Core 0.16.0*
+
+```bash
+dash-cli -testnet quorum selectquorum 1 \
+ b95205c3bba72e9edfbe7380ec91fe5a97e16a189e28f39b03c6822757ad1a34
+```
+
+Result:
+
+```json
+{
+ "quorumHash": "00000ba8932486c66ed0742fd6b0f4e65afc75ab1e7886c6ef84580dfb7da34f",
+ "recoveryMembers": [
+ "0130c115522681b87082db1f45c38423d1a018a8e1559c2491103931e891c220",
+ "dcd5dd71c4bd50c76d428f72b4a5731bd819720fbc656fff717548e2fe8cbd09",
+ "a25c2f4549da0135411122ee9c2d37e8375577dc97431a282a5c374b4c71463a",
+ "a1aaa653e5183d6a4525abfd0a76fc7d6a68393a1c4259117028dfce4fd215e1",
+ "4c9eb7849590cca2aa18bf9aeeb1e4196c833740de2b111a7690eb62319b0735",
+ "f38b8c5cb6c9e712aeeb150b9591cbdc70e99f9f26c1516955dd506b20dd9876",
+ "afe12673c32de351e9f5a29178cd55656f03e64357be872536eb50b059032fe0",
+ "651d56765c77b8c16b829a4a68f6d39cab40c913d0d365d7b7fd254ccc6cb2f1",
+ "f88d0e5349d0bf7e4426a7461d7931d09f54c13edb6d83306c2521d19eb0b14b",
+ "bdba1f169ab1e73c4dc96f4133b337c36907976e26a4612ffa5ae18869eba96c",
+ "94044c070f9ce6bdd05c2b655ad2383c8402a74c10e0a9a3099d759b33cb7630",
+ "515f77efd5983a765dc5740b0e0d3fae6e867917ca384467b24e31dda68c7369",
+ "d1ebecfb816f5b4b5f34c91c0aab9c1b643c8567473e6ee35e02e01c9f2304c0",
+ "2755d546b114aaec98589cf5b946e408a8996e4837234d2eee97e1da8c71e9ce",
+ "b04b5240a8fc5ae62865dfa2e2558894f4b53d82fe88771e5345407b560d59bc",
+ "53750150229202353bfbc3a2c866b993dd33a4c749d8f18ddcb1f5caf7e901ef",
+ "7a5d1e05d4772feede8b9e71e17e013f99e77c622f13897b8a96339d6d06e1fc",
+ "24f6fae5b5afd001d1046425f38e6ef523140afafc83013468bd31feb343f307",
+ "18f2e176adf88043c41b406d0c97a2dd529d5daaca8b8ac49f72e6da30334926",
+ "73191708ab5b21cc7ede9b12bc1e79de97ad5c4b9717a4fbf5de0ed1f3a5836a",
+ "b57da176c0b6deae786afd318a8e00e351bed0f47ceac28f5b6d3d502f1c68d7",
+ "161b2dcf8243162d11065eefd0948cb79d96dfa8ae869e34763a2bbd7d1d5d55",
+ "fac81f18b3a968f5f881324d8eb38983f3f892c4999c2f46809c4de620b784d2",
+ "42267d2c50a68350c880a488ec25ba0eac4e7cd436eb97c686fe0a6d035d25d3",
+ "0be00b051c77fd4b6dac46a63b939f73726dc61dd80616e4573a9465f1aafa93"
+ ]
+}
+
+```
+
+*See also: none*
+
+### Quorum Verify
+
+The `quorum verify` RPC tests if a quorum signature is valid for a request id and a message hash.
+
+*Parameter #1---LLMQ Type*
+
+| Name | Type | Presence | Description |
+| ---------- | ------ | ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `llmqType` | number | Required (exactly 1) | [Type of quorum](https://github.com/dashpay/dips/blob/master/dip-0006/llmq-types.md): `1` - LLMQ_50_60 `2` - LLMQ_400_60 `3` - LLMQ_400_85 `4` - LLMQ_100_67 |
+
+*Parameter #2---id*
+
+| Name | Type | Presence | Description |
+| ---- | ------------ | ----------------------- | ------------------ |
+| `id` | string (hex) | Required (exactly 1) | Signing request ID |
+
+*Parameter #3---message hash*
+
+| Name | Type | Presence | Description |
+| --------- | ------------ | ----------------------- | -------------------------------- |
+| `msgHash` | string (hex) | Required (exactly 1) | Hash of the message to be signed |
+
+*Parameter #4---signature*
+
+| Name | Type | Presence | Description |
+| ----------- | ------------ | ----------------------- | -------------------------- |
+| `signature` | string (hex) | Required (exactly 1) | Quorum signature to verify |
+
+*Parameter #5---quorum hash*
+
+| Name | Type | Presence | Description |
+| ------------ | ------------ | -------------------- | ------------------------------------------------------------------------------- |
+| `quorumHash` | string (hex) | Optional (0 or 1) | The quorum identifier. Set to `""` if you want to specify `signHeight` instead. |
+
+*Parameter #6---sign height*
+
+| Name | Type | Presence | Description |
+| ------------ | ------ | -------------------- | --------------------------------------------------------------------------------- |
+| `signHeight` | number | Optional (0 or 1) | The height at which the message was signed. Only works when `quorumHash` is `""`. |
+
+*Result---status*
+
+| Name | Type | Presence | Description |
+| ------ | ---- | ----------------------- | ----------------------------------------------- |
+| result | bool | Required (exactly 1) | True or false depending on verification success |
+
+*Example from Dash Core 0.17.0*
+
+Verify the provided signature was valid:
+
+```bash
+dash-cli -testnet quorum verify 1 \
+ "2ceeaa7ff20de327ef65b14de692199d15b67b9458d0ded7d68735cce98dd039" \
+ "8b5174d0e95b5642ebec23c3fe8f0bbf8f6993502f4210322871bba0e818ff3b" \
+ "99cf2a0deb08286a2d1ffdd2564b35522fd748c8802e561abed330dea20df5cb5a5dffeddbe627ea32cb36de13d5b4a516fdfaebae9886b2f7969a5d112416cf8d1983ebcbf1463a64f7522505627e08b9c76c036616fbb1649271a2773a1653" \
+ "000000583a348d1a0a5f753ef98e6a69f9bcd9b27919f10eb1a1c3edb6c79182"
+```
+
+Result:
+
+```json
+true
+```
+
+## SubmitChainlock
+
+The [`submitchainlock` RPC](../api/remote-procedure-calls-evo.md#submitchainlock) is used to submit a ChainLock signature if the node does not yet have it.
+
+*Parameters*
+
+| Name | Type | Presence | Description |
+| --------- | ------ | -------- | ----------- |
+| blockHash | string | Required | The block hash of the ChainLock |
+| signature | string | Required | The signature of the ChainLock |
+| blockHeight | numeric | Required | The height of the ChainLock |
+
+*Result---The height of the current best ChainLock*
+
+| Name | Type | Presence | Description |
+| ------ | ------- | ----------------------- | ----------- |
+| Result | numeric | Required (Exactly 1) | The height of the current best ChainLock. If an error occurs, `-1` is returned. |
+
+*Example from Dash Core 20.1.0*
+
+```bash
+dash-cli submitchainlock "000000f7e552718cf326024ba0b0110695300b730873de1942a4106b665fc034" "3045022100a59e3b0f..." 964445
+```
+
+Result:
+
+```text
+964445
+```
+
+*See also: none*
+
+## VerifyChainLock
+
+The `verifychainlock` RPC tests if a quorum signature is valid for a ChainLock.
+
+*Parameter #1---block hash*
+
+| Name | Type | Presence | Description |
+| ----------- | ------------ | ----------------------- | ------------------------------- |
+| `blockhash` | string (hex) | Required (exactly 1) | The block hash of the ChainLock |
+
+*Parameter #2---signature*
+
+| Name | Type | Presence | Description |
+| ----------- | ------------ | ----------------------- | --------------------------------- |
+| `signature` | string (hex) | Required (exactly 1) | The ChainLock signature to verify |
+
+*Parameter #3---block height*
+
+| Name | Type | Presence | Description |
+| ------------- | ------ | -------------------- | ----------------------------------------------------------------------------------------------------- |
+| `blockHeight` | number | Optional (0 or 1) | The height of the ChainLock. There will be an internal lookup of `blockHash` if this is not provided. |
+
+*Result---status*
+
+| Name | Type | Presence | Description |
+| ------ | ---- | ----------------------- | ----------------------------------------------- |
+| result | bool | Required (exactly 1) | True or false depending on verification success |
+
+*Example from Dash Core 0.17.0*
+
+Verify the provided signature was valid:
+
+```bash
+dash-cli -testnet verifychainlock \
+ "00000036d5c520be6e9a32d3829efc983a7b5e88052bf138f80a2b3988689a24" \
+ "97ec34efd1615b84af62495e54024880752f57790cf450ae974b80002440963592d96826e24f109e6c149411b70bb9a0035443752368590adae60365cf4251464e0423c1263e9c56a33eae9be9e9c79a117151b2173bcee93497008cace8d793"
+```
+
+Result:
+
+```json
+true
+```
+
+## VerifyISLock
+
+The `verifyislock` RPC tests if a quorum signature is valid for an InstantSend Lock.
+
+*Parameter #1---id*
+
+| Name | Type | Presence | Description |
+| ---- | ------------ | ----------------------- | ------------------ |
+| `id` | string (hex) | Required (exactly 1) | Signing request ID |
+
+*Parameter #2---transaction id*
+
+| Name | Type | Presence | Description |
+| ------ | ------------ | ----------------------- | ------------------------- |
+| `txid` | string (hex) | Required (exactly 1) | The transaction id (TXID) |
+
+*Parameter #3---signature*
+
+| Name | Type | Presence | Description |
+| ----------- | ------------ | ----------------------- | ---------------------------------------- |
+| `signature` | string (hex) | Required (exactly 1) | The InstantSend Lock signature to verify |
+
+*Parameter #4---maximum height*
+
+| Name | Type | Presence | Description |
+| ----------- | ------ | -------------------- | ----------------------------------------- |
+| `maxHeight` | number | Optional (0 or 1) | The maximum height to search quorums from |
+
+*Result---status*
+
+| Name | Type | Presence | Description |
+| ------ | ---- | ----------------------- | ----------------------------------------------- |
+| result | bool | Required (exactly 1) | True or false depending on verification success |
+
+*Example from Dash Core 20.0.0*
+
+Verify the provided signature was valid:
+
+```bash
+dash-cli -testnet verifyislock \
+ "e5affbbb07084f15ff86bc5043978360a22c8bbacc10a09b973da2cfc32a0115" \
+ "17e3d624ca71f06d91e35c01b0933ec7a34fd18a3700c4c3cbc947b59e91c6b2" \
+ "b36f68abbb15be1948b0b55d392420b9fcc208361037f6dbbb7552f1fda9bae50800df265b037273f8ad310f0ec3af011166ba61002ac30dececee4e46d4e28de8553515cfdfa40fd04e7e3bf4932049f8b670e908b7b9a2bb69d5c1c59dd7f4"
+```
+
+Result:
+
+```json
+true
+```
diff --git a/docs/core/api/remote-procedure-calls-generating.md b/docs/core/api/remote-procedure-calls-generating.md
new file mode 100644
index 000000000..0407acb39
--- /dev/null
+++ b/docs/core/api/remote-procedure-calls-generating.md
@@ -0,0 +1,173 @@
+```{eval-rst}
+.. meta::
+ :title: Generating RPCs
+ :description: A list of all mining-related remote procedure calls in Dash Core.
+```
+
+# Generating RPCs
+
+## GenerateBlock
+
+:::{attention}
+This RPC is not available in the official Windows/Mac binaries. The Linux binary and binaries self-compiled (with the appropriate options) support this feature.
+:::
+
+*Added in Dash Core 18.1.0*
+
+The [`generateblock` RPC](../api/remote-procedure-calls-generating.md#generateblock) mines a block with a set of ordered transactions immediately to a specified address or [descriptor](https://github.com/dashpay/dash/blob/master/doc/descriptors.md) (before the RPC call returns).
+
+*Parameter #1---an address or descriptor*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+Address/Descriptor | string | Required (exactly 1) | The address or [descriptor](https://github.com/dashpay/dash/blob/master/doc/descriptors.md) that will receive the newly generated Dash.
+
+*Parameter #2---transaction(s)*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+Transactions | array | Required (exactly 1) | An array of hex strings which are either txids or raw transactions. TXIDs must reference transactions currently in the mempool. All transactions must be valid and in valid order, otherwise the block will be rejected. Array can be empty.
+→ Raw Transaction / TXID | string | Optional (0 or more) | A raw transaction or transaction ID.
+
+*Result---the generated block hash*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`result` | object | Required (exactly 1) | A JSON object containing the block header hash of the generated block
+→ `hash` | string (hex) | Required (exactly 1) | The hash of the header of the block generated, as hex in RPC byte order
+
+*Example from Dash Core 18.1.0*
+
+```bash
+dash-cli generateblock "yacJKd6tRz2JSn8Wfp9GKgCbuowAEBivrA" '[]'
+```
+
+Result:
+
+```json
+{
+ "hash": "000000e219a3d47463fdfed6da30c999f02d7add2defb2f375549b357d3840af"
+}
+```
+
+*See also*
+
+* [GenerateToAddress](#generatetoaddress): mines blocks to a specified address.
+* [GenerateToDescriptor](#generatetodescriptor): mines blocks to a specified descriptor.
+* [GetMiningInfo](../api/remote-procedure-calls-mining.md#getmininginfo): returns various mining-related information.
+
+## GenerateToAddress
+
+:::{attention}
+This RPC is not available in the official Windows/Mac binaries. The Linux binary and binaries self-compiled (with the appropriate options) continue to support this feature. See [PR #2778](https://github.com/dashpay/dash/pull/2778) for additional details.
+:::
+
+*Added in Dash Core 0.12.3 / Bitcoin Core 0.13.0*
+
+The [`generatetoaddress` RPC](../api/remote-procedure-calls-generating.md#generatetoaddress) mines blocks immediately to a specified address.
+
+*Parameter #1---the number of blocks to generate*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+Blocks | number (int) | Required (exactly 1) | The number of blocks to generate. The RPC call will not return until all blocks have been generated or the maximum number of iterations has been reached
+
+*Parameter #2---a transaction identifier (TXID)*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+Address | string (base58) | Required (exactly 1) | The address that will receive the newly generated Dash
+
+*Parameter #3---the maximum number of iterations to try*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+Maxtries | number (int) | Optional (0 or 1) | The maximum number of iterations that are tried to create the requested number of blocks. Default is `1000000`
+
+*Result---the generated block header hashes*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`result` | array | Required (exactly 1) | An array containing the block header hashes of the generated blocks (may be empty if used with `generate 0`)
+→ Header Hashes | string (hex) | Required (1 or more) | The hashes of the headers of the blocks generated, as hex in RPC byte order
+
+*Example from Dash Core 0.12.3*
+
+Using regtest mode, generate 2 blocks with maximal 500000 iterations:
+
+```bash
+dash-cli -regtest generatetoaddress 2 "yaQzdWrDVYGncLKSKG4bHQ\
+ML9UdAe726QN" 500000
+```
+
+Result:
+
+```json
+[
+ "34726c518d1688a9c56b3399e892089d3a639b43de194517c07da2b168a3a89c",
+ "1f030abe2bb323b8895542e3a85ed8386bd92c67af9d19fe9c163a4c5f5ef149"
+]
+```
+
+*See also*
+
+* [GetMiningInfo](../api/remote-procedure-calls-mining.md#getmininginfo): returns various mining-related information.
+* [GetBlockTemplate](../api/remote-procedure-calls-mining.md#getblocktemplate): gets a block template or proposal for use with mining software.
+
+## GenerateToDescriptor
+
+:::{attention}
+This RPC is not available in the official Windows/Mac binaries. The Linux binary and binaries self-compiled (with the appropriate options) support this feature.
+:::
+
+*Added in Dash Core 18.1.0*
+
+The [`generatetodescriptor` RPC](#generatetodescriptor) mines blocks immediately to a specified [descriptor](https://github.com/dashpay/dash/blob/master/doc/descriptors.md).
+
+*Parameter #1---the number of blocks to generate*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+Blocks | number (int) | Required (exactly 1) | The number of blocks to generate. The RPC call will not return until all blocks have been generated or the maximum number of iterations has been reached
+
+*Parameter #2---a descriptor*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+Descriptor | string | Required (exactly 1) | The [descriptor](https://github.com/dashpay/dash/blob/master/doc/descriptors.md) that will receive the newly generated Dash
+
+*Parameter #3---the maximum number of iterations to try*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+Maxtries | number (int) | Optional (0 or 1) | The maximum number of iterations that are tried to create the requested number of blocks. Default is `1000000`
+
+*Result---the generated block header hashes*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`result` | array | Required (exactly 1) | An array containing the block header hashes of the generated blocks (may be empty if used with `generate 0`)
+→ Header Hashes | string (hex) | Required (1 or more) | The hashes of the headers of the blocks generated, as hex in RPC byte order
+
+*Example from Dash Core 18.1.0*
+
+Generate 1 block with maximal 500000 iterations:
+
+```bash
+dash-cli -regtest generatetodescriptor 1 "pkh([d34db33f/84h/0h/0h]0279be667ef9dcbbac55a06295Ce870b07029Bfcdb2dce28d959f2815b16f81798)" 500000
+```
+
+Result:
+
+```json
+[
+ "0000007c599cc625ff4196ca55d73b6584ba89ccdd9836f969bf67b26b4a6376"
+]
+```
+
+*See also*
+
+* [GenerateBlock](#generateblock): mines a block with a set of ordered transactions immediately to a specified address or descriptor.
+* [GenerateToAddress](#generatetoaddress): mines blocks immediately to a specified address.
+* [GetMiningInfo](../api/remote-procedure-calls-mining.md#getmininginfo): returns various mining-related information.
+* [GetBlockTemplate](../api/remote-procedure-calls-mining.md#getblocktemplate): gets a block template or proposal for use with mining software.
diff --git a/docs/core/api/remote-procedure-calls-mining.md b/docs/core/api/remote-procedure-calls-mining.md
new file mode 100644
index 000000000..2d6f65508
--- /dev/null
+++ b/docs/core/api/remote-procedure-calls-mining.md
@@ -0,0 +1,391 @@
+```{eval-rst}
+.. meta::
+ :title: Mining RPCs
+ :description: A list of remote procedure calls for mining in Dash.
+```
+
+# Mining RPCs
+
+## GetBlockTemplate
+
+The [`getblocktemplate` RPC](../api/remote-procedure-calls-mining.md#getblocktemplate) gets a block template or proposal for use with mining software. For more
+information, please see the following resources:
+
+* [Bitcoin Wiki GetBlockTemplate](https://en.bitcoin.it/wiki/Getblocktemplate)
+* [BIP22](https://github.com/bitcoin/bips/blob/master/bip-0022.mediawiki)
+* [BIP23](https://github.com/bitcoin/bips/blob/master/bip-0023.mediawiki)
+
+*Parameter #1---a JSON request object*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+Request | object | Optional (exactly 1) | A JSON request object
+→ `mode` | string | Optional (exactly 1) | This must be set to \template\" or omitted"
+→ `capabilities` | array (string) | Optional (0 or more) | A list of strings
+→ → Capability | string | Optional (exactly 1) | Client side supported feature, `longpoll`, `coinbasetxn`, `coinbasevalue`, `proposal`, `serverlist`, `workid`
+→ `rules` | array (string) | Optional (0 or more) | A list of strings
+→ → Rules | string | Optional (exactly 1) | Client side supported softfork deployment, `csv`, `dip0001`, etc.
+
+*Result---block template*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`result` | object | Required (exactly 1) | A object containing a block template
+→ `capabilities` | array (string) | Required (1 or more) | The client side supported features
+→ → Capability | string | Optional (0 or more) | A client side supported feature
+→ `version` | number (int) | Required (exactly 1) | The block version
+→ `rules` | array (string) | Required (1 or more) | The specific block rules that are to be enforced
+→ → Block Rule | string | Optional (0 or more) | A specific block rule to be enforced
+→ `vbavailable` | object | Required (exactly 1) | Contains the set of pending, supported versionbit (BIP 9) softfork deployments
+→ → Bit Number | number | Required (0 or more) | The bit number the named softfork rule
+→ `vbrequired` | number | Required (exactly 1) | The bit mask of versionbits the server requires set in submissions
+→ `previousblockhash` | string (hex) | Required (exactly 1) | The hash of current highest block
+→ `transactions` | array (objects) | Optional (0 or more) | Non-coinbase transactions to be included in the next block
+→ → Transaction | object | Optional (0 or more) | Non-coinbase transaction
+→ → → `data` | string (hex) | Optional (0 or more) | Transaction data encoded in hex (byte-for-byte)
+→ → → `txid` | string (hex) | Optional (0 or more) | Transaction ID encoded in little-endian hexadecimal |
+→ → → `hash` | string (hex) | Optional (0 or more) | The hash/id encoded in little-endian hex
+→ → → `depends` | array (numbers) | Required (0 or more) | An array holding TXIDs of unconfirmed transactions this TX depends upon (parent transactions).
+→ → → → Transaction number | number | Optional (1 or more) | Transactions before this one (by 1-based index in `transactions` list) that must be present in the final block if this one is
+→ → → `fee` | number | Required (exactly 1) | The difference in value between transaction inputs and outputs (in duffs). For coinbase transactions, this is a negative number of the total collected block fees (ie., not including the block subsidy); if key is not present, fee is unknown and clients MUST NOT assume there isn't one
+→ → → `sigops` | number | Required (exactly 1) | Total SigOps. If not present, the count is unknown (clients MUST NOT assume there aren't any)
+→ `coinbaseaux` | object | Required (exactly 1) | A object containing data that should be included in the coinbase scriptSig content
+→ `coinbasevalue` | number | Required (exactly 1) | The maximum allowable input to coinbase transaction, including the generation award and transaction fees (in duffs)
+→ `coinbasetxn` | object | Required (exactly 1) | **Removed in Dash Core 20.0.0**
+`longpollid` | string | Required (exactly 1) | An ID to include with a request to longpoll on an update to this template
+→ `target` | string | Required (exactly 1) | The hash target
+→ `mintime` | number | Required (exactly 1) | The minimum timestamp appropriate for next block time in seconds since epoch
+→ `mutable` | array (string) | Required (exactly 1) | The list of ways the block template may be changed
+→ → Value | string | Required (0 or more) | A way the block template may be changed, e.g. 'time', 'transactions', 'prevblock'
+→ `noncerange` | string | Required (exactly 1) | A range of valid nonces
+→ `sigoplimit` | number | Required (exactly 1) | The limit of sigops in blocks
+→ `sizelimit` | number | Required (exactly 1) | The limit of block size
+→ `curtime` | number | Required (exactly 1) | The current timestamp in seconds since epoch
+→ `bits` | string | Required (exactly 1) | The compressed target of next block
+→ `previousbits` | string | Required (exactly 1) | The compressed target of the current highest block
+→ `height` | number | Required (exactly 1) | The height of the next block
+→ `masternode` | array (objects) | Required (0 or more) | Required masternode payments that must be included in the next block
+→ → Masternode Payee | object | Optional (0 or more) | Object containing a masternode payee's information
+→ → → `payee` | string | Required (exactly 1) | Payee address
+→ → → `script` | string | Required (exactly 1) | Payee scriptPubKey
+→ → → `amount` | number | Required (exactly 1) | Required amount to pay
+→ `masternode_payments_started` | boolean | Required (exactly 1) | True if masternode payments started
+→ `masternode_payments_enforced` | boolean | Required (exactly 1) | True if masternode payments enforced
+→ `superblock` | array (objects) | Required (0 or more) | The superblock payees that must be included in the next block
+→ → Superblock Payee | object | Optional (0 or more) | Object containing a superblock payee's information
+→ → → `payee` | string | Required (exactly 1) | Payee address
+→ → → `script` | string | Required (exactly 1) | Payee scriptPubKey
+→ → → `amount` | number | Required (exactly 1) | Required amount to pay
+→ `superblocks_started` | boolean | Required (exactly 1) | True if superblock payments started
+→ `superblocks_enabled` | boolean | Required (exactly 1) | True if superblock payments enabled
+→ `coinbase_payload` | string (hex) | Required (exactly 1) | *Added in Dash Core 0.13.0*
Coinbase transaction payload data encoded in hexadecimal
+
+*Example from Dash Core 20.0.0*
+
+```bash
+dash-cli -testnet getblocktemplate
+```
+
+Result:
+
+```json
+{
+ "capabilities": [
+ "proposal"
+ ],
+ "version": 536870912,
+ "rules": [
+ "v20",
+ "mn_rr"
+ ],
+ "vbavailable": {
+ },
+ "vbrequired": 0,
+ "previousblockhash": "000000487e77ca7d979fcb607e8967295f2b1dd8ddb2785d813b0ed6344f149a",
+ "transactions": [
+ {
+ "data": "03000600000000000000fd49010100a3ff0d000300016b9e6f55fe33d217feaf77efdd4db8e662d323f6aa09fffd66a147e4da00000032ffffffffffff0332ffffffffffff03a99c278110c807da5a9bc9c8398a8ea7d65daa9d18c28c4c9169bd72b7711dafee8a064d78d88b6ae0cfd5c480d17253abfdad7415814e6c5fa2f61e70aa84a4ac25509eb033e578da15395eb61df03888f8ff5ec987254b59a01cf37b85097d29f1095f0f6a3c52583713e6578e8d24a93c3db9bc5deb55af5ea3e506e0beff0a4dc244dd9a0160381e79d4342489cac1603146b5e30b71f0c84ffa294e5cda75255a1a82ba2454351079a91fec876f8d4efad0f8ab1e9e7ee3302dd07717d32fdf4ab7f29e0ab8edf2d788c95d56c8790d6b4a84a13b2554ca6b1f9b0102ae178ab088189e8fa898268e135823514df4cec08ddb62032ec74b80a69b93bbe59e0624fac442ccc539083151be200384",
+ "hash": "9b9f02cb05d3d323b503561608c9ca383a45ef57fb6ebd84ae0d81a653e30003",
+ "depends": [
+ ],
+ "fee": 0,
+ "sigops": 0
+ },
+ {
+ "data": "03000600000000000000fd55010100a3ff0d000300046b9e6f55fe33d217feaf77efdd4db8e662d323f6aa09fffd66a147e4da00000064ffffffffffffffffffffffff0f64ffffffffffffffffffffffff0fa4c2c8b9a873a223fc84037d24e9d76dcf0ac8105d3cabbf84a5cd901a2f5369a7dc61cbc18085cc0c2f4c67b1805cfec4c3b4f89ea09f922fbbeb42f9a82bce64276174eacd9d20ddc0ff33931b14d291cd520a372176a2d28376381f5d36b77f48031d464897f18ff82438bdb38489986e0d5794e4da6503d13ae33115f62e19d94da430f06b44f9d7e6512d68783662295b96f72430b06e218a31d10fe9ef43e17c5840b67fe548bce240e0d6e02da3a0f718da47554ce3e364bafd16ec01544a7e5720d39202e7763ee03ade630cd9724dce36957a90ac4798180e0dec700270162bf8f5b4533ef34ef47b96494e6eb096d4d259b0df9f5572c368b805deaed36574c0d1aee286583b1dda06f1a5",
+ "hash": "3409f455c1584155833227b171d83840de662dd33e216ede9b82d933bfcc2151",
+ "depends": [
+ ],
+ "fee": 0,
+ "sigops": 0
+ },
+ {
+ "data": "03000600000000000000fd43010100a3ff0d000300066b9e6f55fe33d217feaf77efdd4db8e662d323f6aa09fffd66a147e4da00000019ffffff0119ffffff01a8c52eaf171fc29d25ecec2dd5fd3aded2f3e8c3f7721f4b9985025810fdb05444e797bed5a4cc0031f59138a14607a022179768c089b96a77e838857bbf03e7dd36002b029c7bafdce7ac4f4738d7548c23f27038f56c8795fc128b5e75059b9644047fa2c144f90388c45b998a6c19c7c0490d06c9c2e61fb24b8c609fada613b8c0de59d7d8aa355d4135b8dd64572b55cc4c9fb49a8dff515536cce91cb1a3c5dc5340e0806069ace3b5f2168af68e34a2e9cf1ffa43c00191ff5c06aa54706b64f41353efb845f251cf81c693a0db7a1996b3d42a12860ec53127f3c3a3052577467a257a4a6c0a9e60ec854648265d3de3ad57c97ad8f312d734f52789c7f48bf7d06c062a35c2def5b1d45c6a",
+ "hash": "5715b73cdc829e71688d8974338cd96273b913a37ab4d03fabb027a770c83af6",
+ "depends": [
+ ],
+ "fee": 0,
+ "sigops": 0
+ }
+ ],
+ "coinbaseaux": {
+ },
+ "coinbasevalue": 1672799096,
+ "longpollid": "000000487e77ca7d979fcb607e8967295f2b1dd8ddb2785d813b0ed6344f149a156",
+ "target": "0000012a59000000000000000000000000000000000000000000000000000000",
+ "mintime": 1696363840,
+ "mutable": [
+ "time",
+ "transactions",
+ "prevblock"
+ ],
+ "noncerange": "00000000ffffffff",
+ "sigoplimit": 40000,
+ "sizelimit": 2000000,
+ "curtime": 1696364934,
+ "bits": "1e012a59",
+ "previousbits": "1e012b17",
+ "height": 917411,
+ "masternode": [
+ {
+ "payee": "",
+ "script": "6a",
+ "amount": 376379796
+ },
+ {
+ "payee": "yeRZBWYfeNE4yVUHV4ZLs83Ppn9aMRH57A",
+ "script": "76a914c69a0bda7daaae481be8def95e5f347a1d00a4b488ac",
+ "amount": 627299661
+ }
+ ],
+ "masternode_payments_started": true,
+ "masternode_payments_enforced": true,
+ "superblock": [
+ ],
+ "superblocks_started": true,
+ "superblocks_enabled": true,
+ "coinbase_payload": "0300a3ff0d00739f69d98c43d95c201a42cae33abd9762429c6b598c5989cd4c0c0bf81a3a82c6d6e2c75f57c6d4e222461391b28cecfa399b5bfc6033613e5dc7f50e69e5f40081a244f815e87d92734728e5e0278c5b833e2ac0f6d1e5b47f83d7e8ce95f0b3da533feb1955472e29972e7f810e285519cb50648d2e9ca5ea442b56ae3da48b0fee25c99e67a9e1b63df38640a7cecfe80955f59b260aa384b64d5202feba3316298c85b8050000"
+}
+```
+
+*See also*
+
+* [GetMiningInfo](../api/remote-procedure-calls-mining.md#getmininginfo): returns various mining-related information.
+* [SubmitBlock](../api/remote-procedure-calls-mining.md#submitblock): accepts a block, verifies it is a valid addition to the block chain, and broadcasts it to the network. Extra parameters are ignored by Dash Core but may be used by mining pools or other programs.
+* [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.)
+
+## GetMiningInfo
+
+The [`getmininginfo` RPC](../api/remote-procedure-calls-mining.md#getmininginfo) returns various mining-related information.
+
+*Parameters: none*
+
+*Result---various mining-related information*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`result` | object | Required (exactly 1) | Various mining-related information
+→ `blocks` | number (int) | Required (exactly 1) | The height of the highest block on the local best block chain
+→ `currentblocksize` | number (int) | Optional (0 or 1) | If generation was enabled since the last time this node was restarted, this is the size in bytes of the last block built by this node for header hash checking.
+→ `currentblocktx` | number (int) | Optional (0 or 1) | If generation was enabled since the last time this node was restarted, this is the number of transactions in the last block built by this node for header hash checking.
+→ `difficulty` | number (real) | Required (exactly 1) | If generation was enabled since the last time this node was restarted, this is the difficulty of the highest-height block in the local best block chain. Otherwise, this is the value `0`
+→ `networkhashps` | number (int) | Required (exactly 1) | An estimate of the number of hashes per second the network is generating to maintain the current difficulty. See the [`getnetworkhashps` RPC](../api/remote-procedure-calls-mining.md#getnetworkhashps) for configurable access to this data
+→ `pooledtx` | number (int) | Required (exactly 1) | The number of transactions in the memory pool
+→ `chain` | string | Required (exactly 1) | Set to `main` for mainnet, `test` for testnet, and `regtest` for regtest
+→ `warnings` | string | Required (exactly 1) | *Added in Dash Core 0.16.0*
Any network or blockchain warnings
+→ `errors` | string | Optional (0 or 1) | **Removed in Dash Core 0.17.0**
Only shown when dashd is started with `-deprecatedrpc=getmininginfo`
+
+*Example from Dash Core 18.0.0*
+
+```bash
+dash-cli getmininginfo
+```
+
+Result:
+
+```json
+{
+ "blocks": 292979,
+ "difficulty": 0.0002441371325370145,
+ "networkhashps": 3805.856874962192,
+ "pooledtx": 0,
+ "chain": "test",
+ "warnings": "Warning: unknown new rules activated (versionbit 3)"
+}
+```
+
+*See also*
+
+* [GetMemPoolInfo](../api/remote-procedure-calls-blockchain.md#getmempoolinfo): returns information about the node's current transaction memory pool.
+* [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.
+* [GetBlockTemplate](../api/remote-procedure-calls-mining.md#getblocktemplate): gets a block template or proposal for use with mining software.
+
+## GetNetworkHashPS
+
+The [`getnetworkhashps` RPC](../api/remote-procedure-calls-mining.md#getnetworkhashps) returns the estimated network hashes per second based on the last n blocks.
+
+*Parameter #1---number of blocks to average*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`blocks` | number (int) | Optional (0 or 1) | The number of blocks to average together for calculating the estimated hashes per second. Default is `120`. Use `-1` to average all blocks produced since the last difficulty change
+
+*Parameter #2---block height*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`height` | number (int) | Optional (0 or 1) | The height of the last block to use for calculating the average. Defaults to `-1` for the highest-height block on the local best block chain. If the specified height is higher than the highest block on the local best block chain, it will be interpreted the same as `-1`
+
+*Result---estimated hashes per second*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`result` | number (int) | Required (exactly 1) | The estimated number of hashes per second based on the parameters provided. May be 0 (for Height=`0`, the genesis block) or a negative value if the highest-height block averaged has a block header time earlier than the lowest-height block averaged
+
+*Example from Dash Core 0.12.2*
+
+Get the average hashes per second for all the blocks since the last
+difficulty change before block 6000.
+
+```bash
+dash-cli -testnet getnetworkhashps -1 6000
+```
+
+Result:
+
+```text
+22214011.90821117
+```
+
+*See also*
+
+* [GetDifficulty](../api/remote-procedure-calls-blockchain.md#getdifficulty): returns the proof-of-work difficulty as a multiple of the minimum difficulty.
+* [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.
+
+## PrioritiseTransaction
+
+The [`prioritisetransaction` RPC](../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.)
+
+*Parameter #1---the TXID of the transaction to modify*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+TXID | string | Required (exactly 1) | The TXID of the transaction whose virtual priority or fee you want to modify, encoded as hex in RPC byte order
+
+*Parameter #2---the change to make to the virtual fee*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+Fee | number (int) | Required (exactly 1) | **Warning:** this value is in duffs, not Dash
If positive, the virtual fee to add to the actual fee paid by the transaction; if negative, the virtual fee to subtract from the actual fee paid by the transaction. No change is made to the actual fee paid by the transaction
+
+*Result---`true` if the priority is changed*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`result` | bool (true only) | Required (exactly 1) | Always set to `true` if all three parameters are provided. Will not return an error if the TXID is not in the memory pool. If fewer or more than three arguments are provided, or if something goes wrong, will be set to `null`
+
+*Example from Dash Core 0.14.0*
+
+```bash
+dash-cli -testnet prioritisetransaction \
+ f86c74f27fdd9c7e618d69b3606eeae1710b3f02fabede6ae8c88dd7bb756942 \
+ 456789
+```
+
+Result:
+
+```json
+true
+```
+
+*See also*
+
+* [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.
+* [GetBlockTemplate](../api/remote-procedure-calls-mining.md#getblocktemplate): gets a block template or proposal for use with mining software.
+
+## SubmitBlock
+
+The [`submitblock` RPC](../api/remote-procedure-calls-mining.md#submitblock) accepts a block, verifies it is a valid addition to the block chain, and broadcasts it to the network. Extra parameters are ignored by Dash Core but may be used by mining pools or other programs.
+
+*Parameter #1---the new block in serialized block format as hex*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+Block | string (hex) | Required (exactly 1) | The full block to submit in serialized block format as hex
+
+*Parameter #2---dummy value*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`dummy` | object | Optional (0 or 1) | A dummy value for compatibility with BIP22. This value is ignored.
+
+*Result---`null` or error string*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`result` | null/string | Required (exactly 1) | If the block submission succeeded, set to JSON `null`. If submission failed, set to one of the following strings: `duplicate`, `duplicate-invalid`, `inconclusive`, or `rejected`. The JSON-RPC `error` field will still be set to `null` if submission failed for one of these reasons
+
+*Example from Dash Core 0.15.0*
+
+Submit the following block with the a dummy value, "test".
+
+```bash
+dash-cli -testnet submitblock 0100002032e3965d5fdd7a883209d516599337eb4cb82f\
+ 7aea22ecc114942c1f00000000244388a3bd2c38a85bf337755a1a165d0df2b335e3886058\
+ 40e08a3cdf1ce1a4297ede598f6a011d027c1c300201000000010000000000000000000000\
+ 000000000000000000000000000000000000000000ffffffff1202791f0e2f5032506f6f6c\
+ 2d74444153482fffffffff044d75bb8b010000001976a914d4a5ea2641e9dd37f7a5ad5c92\
+ 9df4743518769188acac2ea68f010000001976a9148d0934de58f969df3b53a72b4f47211d\
+ 890ebf5588ac68b9ea03000000004341047559d13c3f81b1fadbd8dd03e4b5a1c73b05e2b9\
+ 80e00d467aa9440b29c7de23664dde6428d75cafed22ae4f0d302e26c5c5a5dd4d3e1b796d\
+ 7281bdc9430f35ac00000000000000002a6a28f47e935509fc85533dc78197e93e87d1c793\
+ 43bda495429d8e3680069f6a22780000000002000000000000000100000001078e0c77e3b0\
+ 4323d0834841f965543aaae2b275f684f55fbaf22e1c83bff97e010000006a473044022077\
+ 6e96d202cc4f50f79d269d7cd36712c7486282dda0cb6eae583c916c98b34c022070941efb\
+ 3201cf500cc6b879d6570fc477d4c3e6a8d91286e84465235f542c42012102dddbfc3fe06b\
+ 96e3a36f3e815222cd1cb9586b3193c4a0de030477f621956d51feffffff02a00bd1000000\
+ 00001976a914d7b47d4b40a23c389f5a17754d7f60f511c7d0ec88ac316168821300000019\
+ 76a914c9190e507834b78a624d7578f1ad3819592ca1aa88ac771f0000 \
+ "test"
+```
+
+Result (the block above was already on a local block chain):
+
+```text
+duplicate
+```
+
+*See also*
+
+* [GetBlockTemplate](../api/remote-procedure-calls-mining.md#getblocktemplate): gets a block template or proposal for use with mining software.
+
+## SubmitHeader
+
+The [`submitheader` RPC](../api/remote-procedure-calls-mining.md#submitheader) decodes the given hexdata as a header and submits it as a candidate chain tip if valid.
+If invalid, it throws.
+
+*Parameter #1---hexdata*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+hexdata | string (hex) | Required (exactly 1) | The block header data
+
+*Result---`None`*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`result` | None | Not Required | N/A
+
+*Example from Dash Core 18.0.0*
+
+```bash
+dash-cli -testnet submitheader 0000002037f7981be497c71524bb9f7454d80b1448f46b6f99c3cadfee4367f0c201000007a95ed6e4d19efa99f33c93b45ee2eab5b5a0ef230ac9c03ecc8a3b5ef8938f5b1978614745021ed6cb0000
+```
+
+Result:
+
+```text
+null
+```
+
+*See also: none*
diff --git a/docs/core/api/remote-procedure-calls-network.md b/docs/core/api/remote-procedure-calls-network.md
new file mode 100644
index 000000000..ff1d05751
--- /dev/null
+++ b/docs/core/api/remote-procedure-calls-network.md
@@ -0,0 +1,854 @@
+```{eval-rst}
+.. meta::
+ :title: Network RPCs
+ :description: A list of all network connection related remote procedure calls in Dash Core.
+```
+
+# Network RPCs
+
+## AddNode
+
+The [`addnode` RPC](../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.
+
+*Parameter #1---hostname/IP address and port of node to add or remove*
+
+| 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 |
+| --------- | ------ | ----------------------- | ----------- |
+| `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 |
+| -------- | ---- | ----------------------- | ----------- |
+| `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*
+
+Try connecting to the following node.
+
+```bash
+dash-cli -testnet addnode 192.0.2.113:19999 onetry
+```
+
+Result (no output from `dash-cli` because result is set to `null`).
+
+*See also*
+
+* [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.
+
+## 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.
+
+*Parameter #1---IP address of node to add*
+
+| Name | Type | Presence | Description |
+| ---- | ---- | -------- | ----------- |
+| `address` | string | Required (exactly 1) | The IP address of the peer |
+
+*Parameter #2---port of the node to add*
+
+| Name | Type | Presence | Description |
+| ---- | ---- | -------- | ----------- |
+| `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 |
+| ---- | ---- | -------- | ----------- |
+| `result` | object | Required (exactly 1) | An object describing if the address was successfully added |
+| → `success` | bool | Required (exactly 1) | Whether the peer address was successfully added to the address manager |
+
+*Example from Dash Core 20.0.0*
+
+Try connecting to the following node.
+
+```bash
+dash-cli addpeeraddress "1.2.3.4" 9999
+```
+
+Result:
+
+```json
+{
+ "success": true
+}
+```
+
+*See also: none*
+
+## ClearBanned
+
+*Added in Bitcoin Core 0.12.0*
+
+The [`clearbanned` RPC](../api/remote-procedure-calls-network.md#clearbanned) clears list of banned nodes.
+
+*Parameters: none*
+
+_Result---`null` on success_
+
+| Name | Type | Presence | Description |
+| -------- | ---- | ----------------------- | ------------------------------------- |
+| `result` | null | Required (exactly 1) | JSON `null` when the list was cleared |
+
+*Example from Dash Core 0.12.2*
+
+Clears the ban list.
+
+```bash
+dash-cli clearbanned
+```
+
+Result (no output from `dash-cli` because result is set to `null`).
+
+*See also*
+
+* [ListBanned](../api/remote-procedure-calls-network.md#listbanned): lists all manually banned IPs/Subnets.
+* [SetBan](../api/remote-procedure-calls-network.md#setban): attempts add or remove a IP/Subnet from the banned list.
+* [ClearDiscouraged](../api/remote-procedure-calls-network.md#cleardiscouraged): clears list of discouraged nodes.
+
+## ClearDiscouraged
+
+*Added in Dash Core 19.0.0*
+
+The [`cleardiscouraged` RPC](../api/remote-procedure-calls-network.md#cleardiscouraged) clears all discouraged nodes.
+
+*Parameters: none*
+
+_Result---`null` on success_
+
+| Name | Type | Presence | Description |
+| -------- | ---- | ----------------------- | ------------------------------------- |
+| `result` | null | Required (exactly 1) | JSON `null` when the list was cleared |
+
+*Example from Dash Core 19.0.0*
+
+Clears the ban list.
+
+```bash
+dash-cli cleardiscouraged
+```
+
+Result (no output from `dash-cli` because result is set to `null`).
+
+*See also*
+
+* [ListBanned](../api/remote-procedure-calls-network.md#listbanned): lists all manually banned IPs/Subnets.
+* [ClearBanned](../api/remote-procedure-calls-network.md#clearbanned): clears list of banned nodes.
+* [SetBan](../api/remote-procedure-calls-network.md#setban): attempts add or remove a IP/Subnet from the banned list.
+
+## DisconnectNode
+
+*Added in Bitcoin Core 0.12.0*
+
+The [`disconnectnode` RPC](../api/remote-procedure-calls-network.md#disconnectnode) immediately disconnects from a specified node.
+
+*Parameter #1---hostname/IP address and port of node to disconnect*
+
+| Name | Type | Presence | Description |
+| --------- | ------ | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------ |
+| `address` | string | Required (exactly 1) | The node you want to disconnect from as a string in the form of `:`.
*Updated in Bitcoin Core 0.14.1* |
+
+*Parameter #2---nodeid*
+
+| Name | Type | Presence | Description |
+| ------ | ------ | -------- | -------------------------------------------- |
+| nodeid | number | Optional | The node ID (see `getpeerinfo` for node IDs) |
+
+_Result---`null` on success or error on failed disconnect_
+
+| Name | Type | Presence | Description |
+| -------- | ---- | ----------------------- | ------------------------------------------ |
+| `result` | null | Required (exactly 1) | JSON `null` when the node was disconnected |
+
+*Example from Dash Core 0.15.0*
+
+Disconnects following node by address.
+
+```bash
+dash-cli -testnet disconnectnode 192.0.2.113:19999
+```
+
+Result (no output from `dash-cli` because result is set to `null`).
+
+Disconnects following node by id.
+
+```bash
+dash-cli -testnet disconnectnode "" 3
+```
+
+Result (no output from `dash-cli` because result is set to `null`).
+
+*See also*
+
+* [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.
+* [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.
+
+## GetAddedNodeInfo
+
+The [`getaddednodeinfo` RPC](../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.
+
+*Parameter #1---what node to display information about*
+
+| Name | Type | Presence | Description |
+| ------ | ------ | -------------------- | ---------------------------------- |
+| `node` | string | Optional (0 or 1) | The node to get information about in the same `:` format as the [`addnode` RPC](../api/remote-procedure-calls-network.md#addnode). If provided, return information about this specific node, otherwise all nodes are returned. |
+
+*Result---a list of added nodes*
+
+| Name | Type | Presence | Description |
+| ---------------------- | ------ | ----------------------- | ----------------------------------- |
+| `result` | array | Required (exactly 1) | An array containing objects describing each added node. If no added nodes are present, the array will be empty. Nodes added with `onetry` will not be returned |
+| → Added Node | object | Optional (0 or more) | An object containing details about a single added node |
+| → → `addednode` | string | Required (exactly 1) | An added node in the same `:` format as used in the [`addnode` RPC](../api/remote-procedure-calls-network.md#addnode). |
+| → → `connected` | bool | Optional (0 or 1) | This will be set to `true` if the node is currently connected and `false` if it is not |
+| → → `addresses` | array | Optional (0 or 1) | This will be an array of addresses belonging to the added node. Only present when `connected` is `true` |
+| → → → Address | object | Optional (0 or more) | An object describing one of this node's addresses |
+| → → → → `address` | string | Required (exactly 1) | An IP address and port number of the node. If the node was added using a DNS address, this will be the resolved IP address |
+| → → → → `connected` | string | Required (exactly 1) | Whether or not the local node is connected to this addnode using this IP address. Valid values are: • `false` for not connected • `inbound` if the addnode connected to us • `outbound` if we connected to the addnode |
+
+*Example from Dash Core 21.0.0*
+
+```bash
+dash-cli getaddednodeinfo
+```
+
+Result (real hostname and IP address replaced with [RFC5737](http://tools.ietf.org/html/rfc5737) reserved address):
+
+```json
+[
+ {
+ "addednode": "192.0.2.113:19999",
+ "connected": true,
+ "addresses": [
+ {
+ "address": "192.0.2.113:19999",
+ "connected": "outbound"
+ }
+ ]
+ }
+]
+```
+
+*See also*
+
+* [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.
+* [GetPeerInfo](../api/remote-procedure-calls-network.md#getpeerinfo): returns data about each connected network node.
+
+## GetConnectionCount
+
+The [`getconnectioncount` RPC](../api/remote-procedure-calls-network.md#getconnectioncount) returns the number of connections to other nodes.
+
+*Parameters: none*
+
+*Result---the number of connections to other nodes*
+
+| Name | Type | Presence | Description |
+| -------- | ------------ | ----------------------- | -------------------------------------------------------------------------- |
+| `result` | number (int) | Required (exactly 1) | The total number of connections to other nodes (both inbound and outbound) |
+
+*Example from Dash Core 0.12.2*
+
+```bash
+dash-cli -testnet getconnectioncount
+```
+
+Result:
+
+```text
+14
+```
+
+*See also*
+
+* [GetNetTotals](../api/remote-procedure-calls-network.md#getnettotals): returns information about network traffic, including bytes in, bytes out, and the current time.
+* [GetPeerInfo](../api/remote-procedure-calls-network.md#getpeerinfo): returns data about each connected network node.
+* [GetNetworkInfo](../api/remote-procedure-calls-network.md#getnetworkinfo): returns information about the node's connection to the network.
+
+## GetNodeAddresses
+
+The [`getnodeaddresses` RPC](../api/remote-procedure-calls-network.md#getnodeaddresses) returns the known addresses which can potentially be used to find new nodes in the network.
+
+*Parameter #1---count*
+
+| Name | Type | Presence | Description |
+| ------- | ------------ | -------------------- | -------------------------------------------------------------------------------------------------------------- |
+| `count` | number (int) | Optional (0 or 1) | The number of addresses to return. Limited to the smaller of 2500 or 23% of all known addresses (default = 1). |
+
+*Parameter #2---network*
+
+| Name | Type | Presence | Description |
+| ---------- | ------ | -------------------- | ------------------------------------------------------------- |
+| `network` | string | Optional (0 or 1) | The network (ipv4, ipv6, onion, i2p) the node connected through. |
+
+*Result---the current bytes in, bytes out, and current time*
+
+| Name | Type | Presence | Description |
+| --------------- | ------------ | ----------------------- | ---------------------------------------------------------- |
+| `result` | array | Required (exactly 1) | An array containing information about the known addresses. |
+| → `time` | number (int) | Required (exactly 1) | The epoch time of when the node was last seen (in Unix) |
+| → `services` | number (int) | Required (exactly 1) | The services offered |
+| → `address` | string | Required (exactly 1) | The address of the node |
+| → `port` | number (int) | Required (exactly 1) | The port of the node |
+| → `network` | string | Required (exactly 1) | The network (ipv4, ipv6, onion, i2p) the node connected through |
+
+*Example from Dash Core 21.0.0*
+
+```bash
+dash-cli -testnet getnodeaddresses
+```
+
+Result:
+
+```json
+[
+ {
+ "time": 1713783495,
+ "services": 3077,
+ "address": "34.214.102.160",
+ "port": 19999,
+ "network": "ipv4"
+ }
+]
+```
+
+## GetNetTotals
+
+The [`getnettotals` RPC](../api/remote-procedure-calls-network.md#getnettotals) returns information about network traffic, including bytes in, bytes out, and the current time.
+
+*Parameters: none*
+
+*Result---the current bytes in, bytes out, and current time*
+
+| Name | Type | Presence | Description |
+| -------------------------------- | ------------------- | ----------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
+| `result` | object | Required (exactly 1) | An object containing information about the node's network totals |
+| → `totalbytesrecv` | number (int) | Required (exactly 1) | The total number of bytes received since the node was last restarted |
+| → `totalbytessent` | number (int) | Required (exactly 1) | The total number of bytes sent since the node was last restarted |
+| → `timemillis` | number (int) | Required (exactly 1) | Unix epoch time in milliseconds according to the operating system's clock (not the node adjusted time) |
+| → `uploadtarget` | string : object | Required (exactly 1) | The upload target information |
+| → → `timeframe` | number (int) | Required (exactly 1) | Length of the measuring timeframe in seconds (currently set to `24` hours) |
+| → → `target` | number (int) | Required (exactly 1) | The maximum allowed outbound traffic in bytes (default is `0`). Can be changed with `-maxuploadtarget` |
+| → → `target_reached` | bool | Required (exactly 1) | Indicates if the target is reached. If the target is reached the node won't serve SPV and historical block requests anymore |
+| → → `serve_historical_blocks` | bool | Required (exactly 1) | Indicates if historical blocks are served |
+| → → `bytes_left_in_cycle` | number (int) | Required (exactly 1) | Amount of bytes left in current time cycle. `0` is displayed if no upload target is set |
+| → → `time_left_in_cycle` | number (int) | Required (exactly 1) | Seconds left in current time cycle. `0` is displayed if no upload target is set |
+
+*Example from Dash Core 0.12.2*
+
+```bash
+dash-cli getnettotals
+```
+
+Result:
+
+```json
+{
+ "totalbytesrecv": 4661588,
+ "totalbytessent": 2899423,
+ "timemillis": 1507815162756,
+ "uploadtarget": {
+ "timeframe": 86400,
+ "target": 0,
+ "target_reached": false,
+ "serve_historical_blocks": true,
+ "bytes_left_in_cycle": 0,
+ "time_left_in_cycle": 0
+ }
+}
+```
+
+*See also*
+
+* [GetNetworkInfo](../api/remote-procedure-calls-network.md#getnetworkinfo): returns information about the node's connection to the network.
+* [GetPeerInfo](../api/remote-procedure-calls-network.md#getpeerinfo): returns data about each connected network node.
+
+## GetNetworkInfo
+
+The [`getnetworkinfo` RPC](../api/remote-procedure-calls-network.md#getnetworkinfo) returns information about the node's connection to the network.
+
+*Parameters: none*
+
+*Result---information about the node's connection to the network*
+
+| Name | Type | Presence | Description |
+| -------------------------------------- | ------------- | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `result` | object | Required (exactly 1) | Information about this node's connection to the network |
+| → `version` | number | Required (exactly 1) | This node's version of Dash Core in its internal integer format. For example, Dash Core 0.12.2 has the integer version number 120200 |
+| → `buildversion` | string | Required (exactly 1) | The node's build version including RC info or commit as relevant |
+| → `subversion` | string | Required (exactly 1) | The user agent this node sends in its [`version` message](../reference/p2p-network-control-messages.md#version) |
+| → `protocolversion` | number (int) | Required (exactly 1) | The protocol version number used by this node. See the [protocol versions section](../reference/p2p-network-protocol-versions.md) for more information |
+| → `localservices` | string (hex) | Required (exactly 1) | The services supported by this node as advertised in its [`version` message](../reference/p2p-network-control-messages.md#version) |
+| → `localservicesnames` | array | Required (exactly 1) | _Added in Dash Core 18.0.0_ An array of strings describing the services offered, in human-readable form. |
+| → → SERVICE_NAME | string | Required (exactly 1) | The service name. |
+| → `localrelay` | bool | Required (exactly 1) | *Added in Bitcoin Core 0.13.0*
The services supported by this node as advertised in its [`version` message](../reference/p2p-network-control-messages.md#version) |
+| → `timeoffset` | number (int) | Required (exactly 1) | The offset of the node's clock from the computer's clock (both in UTC) in seconds. The offset may be up to 4200 seconds (70 minutes) |
+| → `networkactive` | bool | Required (exactly 1) | Set to `true` if P2P networking is enabled. Set to `false` if P2P networking is disabled. Enabling/disabling done via [SetNetworkActive](../api/remote-procedure-calls-network.md#setnetworkactive) |
+| → `connections` | number (int) | Required (exactly 1) | The total number of open connections (both outgoing and incoming) between this node and other nodes |
+| → `connections_in` | number (int) | Required (exactly 1) | _Added in Dash Core 18.0.0_
The number of inbound connections |
+| → `connections_out` | number (int) | Required (exactly 1) | _Added in Dash Core 18.0.0_
The number of outbound connections |
+| → `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) | 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` |
+| → → → `limited` | bool | Required (exactly 1) | Set to `true` if only connections to this network are allowed according to the `-onlynet` Dash Core command-line/configuration-file parameter. Otherwise set to `false` |
+| → → → `reachable` | bool | Required (exactly 1) | Set to `true` if connections can be made to or from this network. Otherwise set to `false` |
+| → → → `proxy` | string | Required (exactly 1) | The hostname and port of any proxy being used for this network. If a proxy is not in use, an empty string |
+| → → → `proxy_randomize_credentials` | bool | Required (exactly 1) | *Added in Bitcoin Core 0.11.0*
Set to `true` if randomized credentials are set for this proxy. Otherwise set to `false` |
+| → `relayfee` | number (DASH) | Required (exactly 1) | The minimum relay fee per kilobyte for transactions in order for this node to accept it into its memory pool |
+| → `incrementalfee` | number (DASH) | Required (exactly 1) | *Added in Dash Core 0.12.3*
The minimum fee increment for mempool limiting or BIP 125 replacement in DASH/kB |
+| → `localaddresses` | array | Required (exactly 1) | An array of objects each describing the local addresses this node believes it listens on |
+| → → Address | object | Optional (0 or more) | An object describing a particular address this node believes it listens on |
+| → → → `address` | string | Required (exactly 1) | An IP address or .onion address this node believes it listens on. This may be manually configured, auto detected, or based on [`version` messages](../reference/p2p-network-control-messages.md#version) this node received from its peers |
+| → → → `port` | number (int) | Required (exactly 1) | The port number this node believes it listens on for the associated `address`. This may be manually configured, auto detected, or based on [`version` messages](../reference/p2p-network-control-messages.md#version) this node received from its peers |
+| → → → `score` | number (int) | Required (exactly 1) | The number of incoming connections during the uptime of this node that have used this `address` in their [`version` message](../reference/p2p-network-control-messages.md#version) |
+| → `warnings` | string | Required (exactly 1) | *Added in Bitcoin Core 0.11.0*
A plain-text description of any network warnings. If there are no warnings, an empty string will be returned. |
+
+*Example from Dash Core 21.0.0*
+
+```bash
+dash-cli getnetworkinfo
+```
+
+Result (actual addresses have been replaced with [RFC5737](http://tools.ietf.org/html/rfc5737) reserved addresses):
+
+```json
+{
+ "version": 210100,
+ "buildversion": "v21.1.0",
+ "subversion": "/Dash Core:21.1.0/",
+ "protocolversion": 70233,
+ "localservices": "0000000000000c05",
+ "localservicesnames": [
+ "NETWORK",
+ "BLOOM",
+ "NETWORK_LIMITED",
+ "HEADERS_COMPRESSED"
+ ],
+ "localrelay": true,
+ "timeoffset": 0,
+ "networkactive": true,
+ "connections": 10,
+ "connections_in": 0,
+ "connections_out": 10,
+ "connections_mn": 6,
+ "connections_mn_in": 0,
+ "connections_mn_out": 6,
+ "socketevents": "epoll",
+ "networks": [
+ {
+ "name": "ipv4",
+ "limited": false,
+ "reachable": true,
+ "proxy": "",
+ "proxy_randomize_credentials": false
+ },
+ {
+ "name": "ipv6",
+ "limited": false,
+ "reachable": true,
+ "proxy": "",
+ "proxy_randomize_credentials": false
+ },
+ {
+ "name": "onion",
+ "limited": true,
+ "reachable": false,
+ "proxy": "",
+ "proxy_randomize_credentials": false
+ },
+ {
+ "name": "i2p",
+ "limited": true,
+ "reachable": false,
+ "proxy": "",
+ "proxy_randomize_credentials": false
+ },
+ {
+ "name": "cjdns",
+ "limited": true,
+ "reachable": false,
+ "proxy": "",
+ "proxy_randomize_credentials": false
+ }
+ ],
+ "relayfee": 0.00001000,
+ "incrementalfee": 0.00001000,
+ "localaddresses": [
+ ],
+ "warnings": "Make sure to encrypt your wallet and delete all non-encrypted backups after you have verified that the wallet works!"
+}
+```
+
+*See also*
+
+* [GetPeerInfo](../api/remote-procedure-calls-network.md#getpeerinfo): returns data about each connected network node.
+* [GetNetTotals](../api/remote-procedure-calls-network.md#getnettotals): returns information about network traffic, including bytes in, bytes out, and the current time.
+* [SetNetworkActive](../api/remote-procedure-calls-network.md#setnetworkactive): disables/enables all P2P network activity.
+
+## GetPeerInfo
+
+The [`getpeerinfo` RPC](../api/remote-procedure-calls-network.md#getpeerinfo) returns data about each connected network node.
+
+*Parameters: none*
+
+*Result---information about each currently-connected network node*
+
+| Name | Type | Presence | Description |
+| ---- | ---- | -------- | ----------- |
+| `result` | array | Required (exactly 1) | An array of objects each describing one connected node. If there are no connections, the array will be empty |
+| → Node | object | Optional (0 or more) | An object describing a particular connected node |
+| → → `id` | number (int) | Required (exactly 1) | The node's index number in the local node address database |
+| → → `addr` | string | Required (exactly 1) | The IP address and port number used for the connection to the remote node |
+| → → `addrlocal` | string | Optional (0 or 1) | Our IP address and port number according to the remote node. May be incorrect due to error or lying. Most SPV nodes set this to `127.0.0.1:9999` |
+| → → `network` | string | Optional (0 or 1) | **Added in Dash Core 20.0.0** The network being used (ipv4, ipv6, onion, i2p, not_publicly_routable) |
+| → → `mapped_as` | string | Optional (0 or 1) | _Added in Dash Core 18.0.0_ The AS in the BGP route to the peer used for diversifying peer selection |
+| → → `addrbind` | string | Optional (0 or 1) | Bind address of the connection to the peer |
+| → → `services` | string (hex) | Required (exactly 1) | The services advertised by the remote node in its [`version` message](../reference/p2p-network-control-messages.md#version) |
+| → → `servicesnames` | array | Required (exactly 1) | _Added in Dash Core 18.0.0_ An array of strings describing the services offered, in human-readable form. |
+| → → → SERVICE_NAME | string | Required (exactly 1) | The service name if it is recognised. |
+| → → `verified_proregtx_hash` | string (hex) | Optional (0 or 1) | The ProRegTx of the masternode |
+| → → `verified_pubkey_hash` | string (hex) | Optional (0 or 1) | The hashed operator public key of the masternode |
+| `relaytxes` | bool | Required (exactly 1) | Whether peer has asked us to relay transactions to it. |
+| → → `lastsend` | number (int) | Required (exactly 1) | The Unix epoch time when we last successfully sent data to the TCP socket for this node |
+| → → `lastrecv` | number (int) | Required (exactly 1) | The Unix epoch time when we last received data from this node |
+| `last_transaction` | number (int) | Required (exactly 1) | **Added in Dash Core 20.1.0** The UNIX epoch time of the last valid transaction received from this peer. |
+| `last_block` | number (int) | Required (exactly 1) | **Added in Dash Core 20.1.0** The UNIX epoch time of the last block received from this peer. |
+| → → `bytessent` | number (int) | Required (exactly 1) | The total number of bytes we've sent to this node |
+| → → `bytesrecv` | number (int) | Required (exactly 1) | The total number of bytes we've received from this node |
+| → → `conntime` | number (int) | Required (exactly 1) | The Unix epoch time when we connected to this node |
+| → → `timeoffset` | number (int) | Required (exactly 1) | *Added in Bitcoin Core 0.12.0*
The time offset in seconds |
+| → → `pingtime` | number (real) | Required (exactly 1) | The number of seconds this node took to respond to our last P2P [`ping` message](../reference/p2p-network-control-messages.md#ping) |
+| → → `minping` | number (real) | Optional (0 or 1) | *Updated in Bitcoin Core 0.13.0*
The minimum observed ping time (if any at all) |
+| → → `pingwait` | number (real) | Optional (0 or 1) | The number of seconds we've been waiting for this node to respond to a P2P [`ping` message](../reference/p2p-network-control-messages.md#ping). Only shown if there's an outstanding [`ping` message](../reference/p2p-network-control-messages.md#ping) |
+| → → `version` | number (int) | Required (exactly 1) | The protocol version number used by this node. See the [protocol versions section](../reference/p2p-network-protocol-versions.md) for more information |
+| → → `subver` | string | Required (exactly 1) | The user agent this node sends in its [`version` message](../reference/p2p-network-control-messages.md#version). This string will have been sanitized to prevent corrupting the JSON results. May be an empty string |
+| → → `inbound` | bool | Required (exactly 1) | Set to `true` if this node connected to us (inbound); set to `false` if we connected to this node (outbound) |
+| → → `bip152_hb_to` | bool | Required (exactly 1) | Whether we selected peer as (compact blocks) high-bandwidth peer |
+| → → `bip152_hb_from` | bool | Required (exactly 1) | Whether peer selected us as (compact blocks) high-bandwidth peer |
+| → → `addnode` | bool | Required (exactly 1) | **DEPRECATED, returned only if the config option -deprecatedrpc=getpeerinfo_addnode is passed** Set to `true` if this node was added via the [`addnode` RPC](../api/remote-procedure-calls-network.md#addnode). |
+| → → `masternode` | bool | Required (exactly 1) | *Added in Dash Core 0.16.0* Whether connection was due to masternode connection attempt |
+| → → `banscore` | number (int) | Required (exactly 1) | *DEPRECATED, returned only if config option -deprecatedrpc=banscore is passed* The ban score we've assigned the node based on any misbehavior it's made. By default, Dash Core disconnects when the ban score reaches `100` |
+| → → `startingheight` | number (int) | Required (exactly 1) | The height of the remote node's block chain when it connected to us as reported in its [`version` message](../reference/p2p-network-control-messages.md#version) |
+| → → `synced_headers` | number (int) | Required (exactly 1) | The highest-height header we have in common with this node based the last P2P [`headers` message](../reference/p2p-network-data-messages.md#headers) it sent us. If a [`headers` message](../reference/p2p-network-data-messages.md#headers) has not been received, this will be set to `-1` |
+| → → `synced_blocks` | number (int) | Required (exactly 1) | The highest-height block we have in common with this node based on P2P [`inv` messages](../reference/p2p-network-data-messages.md#inv) this node sent us. If no block [`inv` messages](../reference/p2p-network-data-messages.md#inv) have been received from this node, this will be set to `-1` |
+| → → `inflight` | array | Required (exactly 1) | An array of blocks which have been requested from this peer. May be empty |
+| → → → Blocks | number (int) | Optional (0 or more) | The height of a block being requested from the remote peer |
+| → → `addr_relay_enabled` | bool | Required (exactly 1) | Whether we participate in address relay with this peer. |
+| → → `addr_processed` | number (int) | Required (exactly 1) | The total number of addresses processed, excluding those dropped due to rate limiting. |
+| → → `addr_rate_limited` | number (int) | Required (exactly 1) | The total number of addresses dropped due to rate limiting. |
+| → → `whitelisted` | bool | Required (exactly 1) | **DEPRECATED, returned only if config option -deprecatedrpc=whitelisted is passed** Set to `true` if the remote peer has been whitelisted; otherwise, set to `false`. Whitelisted peers will not be banned if their ban score exceeds the maximum (100 by default). By default, peers connecting from localhost are whitelisted |
+| → → `permissions` | array | Required (exactly 1) | _Added in Dash Core 18.0.0_ Any special permissions that have been granted to this peer |
+| → → `bytessent_per_msg` | string : object | Required (exactly 1) | *Added in Bitcoin Core 0.13.0*
Information about total sent bytes aggregated by message type |
+| → → → Message Type | number (int) | Required (1 or more) | Total sent bytes aggregated by message type. One field for every used message type |
+| → → `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 22.0.0*
+
+```bash
+dash-cli -testnet getpeerinfo
+```
+
+Result (edited to show only a single entry, with IP addresses changed to
+[RFC5737](http://tools.ietf.org/html/rfc5737) reserved IP addresses):
+
+```json
+[
+ {
+ "id": 0,
+ "addr": "198.51.100.1:19999",
+ "addrbind": "192.0.2.1:34896",
+ "addrlocal": "203.0.113.1:34896",
+ "network": "ipv4",
+ "services": "0000000000000c05",
+ "servicesnames": [
+ "NETWORK",
+ "BLOOM",
+ "NETWORK_LIMITED",
+ "HEADERS_COMPRESSED"
+ ],
+ "lastsend": 1715200494,
+ "lastrecv": 1715200436,
+ "last_transaction": 0,
+ "last_block": 1715200219,
+ "bytessent": 70135,
+ "bytesrecv": 486133,
+ "conntime": 1715200196,
+ "timeoffset": 0,
+ "pingtime": 0.105995,
+ "minping": 0.095181,
+ "version": 70233,
+ "subver": "/Dash Core:21.1.0(dcg-masternode-7)/",
+ "inbound": false,
+ "bip152_hb_to": false,
+ "bip152_hb_from": false,
+ "masternode": false,
+ "startingheight": 1131692,
+ "synced_headers": 1131804,
+ "synced_blocks": 1131804,
+ "inflight": [
+ ],
+ "relaytxes": true,
+ "addr_relay_enabled": true,
+ "addr_processed": 519,
+ "addr_rate_limited": 0,
+ "permissions": [
+ ],
+ "bytessent_per_msg": {
+ "dsq": 7802,
+ "getdata": 35555,
+ "getheaders2": 1053,
+ "getsporks": 24,
+ "govsync": 25182,
+ "inv": 61,
+ "ping": 96,
+ "pong": 96,
+ "sendaddrv2": 24,
+ "sendcmpct": 33,
+ "sendheaders2": 24,
+ "verack": 24,
+ "version": 161
+ },
+ "bytesrecv_per_msg": {
+ "addrv2": 40,
+ "block": 361498,
+ "getheaders2": 1053,
+ "govobj": 916,
+ "govobjvote": 47150,
+ "headers2": 62247,
+ "inv": 9291,
+ "mnauth": 152,
+ "ping": 96,
+ "pong": 96,
+ "sendaddrv2": 24,
+ "sendcmpct": 33,
+ "senddsq": 25,
+ "sendheaders2": 24,
+ "spork": 2420,
+ "ssc": 864,
+ "verack": 24,
+ "version": 180
+ },
+ "connection_type": "outbound-full-relay",
+ "transport_protocol_type": "v1",
+ "session_id": ""
+ }
+]
+```
+
+*See also*
+
+* [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.
+* [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.
+
+## ListBanned
+
+*Added in Bitcoin Core 0.12.0*
+
+The [`listbanned` RPC](../api/remote-procedure-calls-network.md#listbanned) lists all ***manually banned*** IPs/Subnets.
+
+:::{note}
+Dash Core 18.1.0 introduced changes to how misbehaving peers are treated. As a result they are no longer included in this RPC response. See the [release notes](https://github.com/dashpay/dash/blob/v18.1.0/doc/release-notes.md#changes-regarding-misbehaving-peers) for additional details.
+:::
+
+*Parameters: none*
+
+*Result---information about each banned IP/Subnet*
+
+| Name | Type | Presence | Description |
+| ----------------------- | --------------- | --------------------------- | ----------- |
+| `result` | object | Required (exactly 1) | An array of objects each describing one entry. If there are no entries in the ban list, the array will be empty |
+| → Node | object | Optional (0 or more) | A ban list entry |
+| → → `address` | string | Required (exactly 1) | The IP/Subnet of the entry |
+| → → `banned_until` | number (int) | Required (exactly 1) | The Unix epoch time when the entry was added to the ban list |
+| → → `ban_created` | number (int) | Required (exactly 1) | The Unix epoch time until the IP/Subnet is banned |
+| `ban_duration` | number (int) | Required (exactly 1) | The ban duration, in seconds. |
+| `time_remaining` | number (int) | Required (exactly 1) | The time remaining until the ban expires, in seconds. |
+
+*Examples from Dash Core 21.1.0*
+
+```bash
+dash-cli listbanned
+```
+
+Result:
+
+```json
+[
+ {
+ "address": "192.0.2.201/32",
+ "ban_created": 1715614036,
+ "banned_until": 1715617636,
+ "ban_duration": 3600,
+ "time_remaining": 3577
+ },
+ {
+ "address": "192.0.2.101/32",
+ "ban_created": 1715614056,
+ "banned_until": 1715617656,
+ "ban_duration": 3600,
+ "time_remaining": 3597
+ }
+]
+```
+
+*See also*
+
+* [SetBan](../api/remote-procedure-calls-network.md#setban): attempts add or remove a IP/Subnet from the banned list.
+* [ClearBanned](../api/remote-procedure-calls-network.md#clearbanned): clears list of banned nodes.
+
+## Ping
+
+The [`ping` RPC](../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.
+
+*Parameters: none*
+
+_Result---`null`_
+
+| Name | Type | Presence | Description |
+| -------- | ---- | -------- | ------------------ |
+| `result` | null | Required | Always JSON `null` |
+
+*Example from Dash Core 0.12.2*
+
+```bash
+dash-cli -testnet ping
+```
+
+(Success: no result printed.)
+
+Get the results using the [`getpeerinfo` RPC](../api/remote-procedure-calls-network.md#getpeerinfo):
+
+```bash
+dash-cli -testnet getpeerinfo | grep ping
+```
+
+Results:
+
+```json
+ "pingtime" : 0.11790800,
+ "pingtime" : 0.22673400,
+ "pingtime" : 0.16451900,
+ "pingtime" : 0.12465200,
+ "pingtime" : 0.13267900,
+ "pingtime" : 0.23983300,
+ "pingtime" : 0.16764700,
+ "pingtime" : 0.11337300,
+```
+
+*See also*
+
+* [GetPeerInfo](../api/remote-procedure-calls-network.md#getpeerinfo): returns data about each connected network node.
+* [P2P Ping Message](../reference/p2p-network-control-messages.md#ping)
+
+## SetBan
+
+*Added in Bitcoin Core 0.12.0*
+
+The [`setban` RPC](../api/remote-procedure-calls-network.md#setban) attempts add or remove a IP/Subnet from the banned list.
+
+*Parameter #1---IP/Subnet of the node*
+
+| Name | Type | Presence | Description |
+| ------------ | ------ | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| IP(/Netmask) | string | Required (exactly 1) | The node to add or remove as a string in the form of ``. The IP address may be a hostname resolvable through DNS, an IPv4 address, an IPv4-as-IPv6 address, or an IPv6 address |
+
+*Parameter #2---whether to add or remove the node*
+
+| Name | Type | Presence | Description |
+| ------- | ------ | ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| Command | string | Required (exactly 1) | What to do with the IP/Subnet address above. Options are: • `add` to add a node to the addnode list • `remove` to remove a node from the list. If currently connected, this will disconnect immediately |
+
+*Parameter #3---time how long the ip is banned*
+
+| Name | Type | Presence | Description |
+| ------- | ---------------- | -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| Bantime | numeric (int) | Optional (0 or 1) | Time in seconds how long (or until when if `absolute` is set) the entry is banned. The default is 24h which can also be overwritten by the -bantime startup argument |
+
+*Parameter #4---whether a relative or absolute timestamp*
+
+| Name | Type | Presence | Description |
+| -------- | ---- | -------------------- | ---------------------------------------------------------------------------------------- |
+| Absolute | bool | Optional (0 or 1) | If set, the bantime must be a absolute timestamp in seconds since epoch (Jan 1 1970 GMT) |
+
+_Result---`null` on success_
+
+| Name | Type | Presence | Description |
+| -------- | ---- | ----------------------- | ------------------ |
+| `result` | null | Required (exactly 1) | Always JSON `null` |
+
+*Example from Dash Core 0.12.2*
+
+Ban the following node.
+
+```bash
+dash-cli -testnet setban 192.0.2.113 add 2592000
+```
+
+Result (no output from `dash-cli` because result is set to `null`).
+
+*See also*
+
+* [ListBanned](../api/remote-procedure-calls-network.md#listbanned): lists all manually banned IPs/Subnets.
+* [ClearBanned](../api/remote-procedure-calls-network.md#clearbanned): clears list of banned nodes.
+
+## SetNetworkActive
+
+*Added in Bitcoin Core 0.14.0*
+
+The [`setnetworkactive` RPC](../api/remote-procedure-calls-network.md#setnetworkactive) disables/enables all P2P network activity.
+
+*Parameter #1---whether to disable or enable all P2P network activity*
+
+| Name | Type | Presence | Description |
+| -------- | ---- | ----------------------- | ---------------------------------------------------------------------------------------------------- |
+| Activate | bool | Required (exactly 1) | Set to `true` to enable all P2P network activity. Set to `false` to disable all P2P network activity |
+
+_Result---`null` or error on failure_
+
+| Name | Type | Presence | Description |
+| -------- | ---- | ----------------------- | ------------------------------------------------------------------------------------------- |
+| `result` | null | Required (exactly 1) | JSON `null`. The JSON-RPC error field will be set only if you entered an invalid parameter |
+
+*Example from Dash Core 0.12.2*
+
+```bash
+dash-cli setnetworkactive true
+```
+
+Result (no output from `dash-cli` because result is set to `null`).
+
+*See also*
+
+* [GetNetworkInfo](../api/remote-procedure-calls-network.md#getnetworkinfo): returns information about the node's connection to the network.
diff --git a/docs/core/api/remote-procedure-calls-raw-transactions.md b/docs/core/api/remote-procedure-calls-raw-transactions.md
new file mode 100644
index 000000000..bb47bda01
--- /dev/null
+++ b/docs/core/api/remote-procedure-calls-raw-transactions.md
@@ -0,0 +1,1556 @@
+```{eval-rst}
+.. meta::
+ :title: Raw Transaction RPCs
+ :description: A list of remote procedure calls in Dash Core that are used to work with raw transactions and partially signed transactions (PSBT).
+```
+
+# Raw Transactions
+
+## AnalyzePSBT
+
+The analyzepsbt RPC analyzes and provides information about the current status of a PSBT and its inputs.
+
+_Parameter #1---psbt_
+
+| Name | Type | Presence | Description |
+| ------ | ------ | ----------------------- | ----------------------------------------------- |
+| `psbt` | string | Required (Exactly 1) | The base64-encoded partially signed transaction |
+
+_Result:_
+
+| Name | Type | Presence | Description |
+| ---------------------------- | ------- | ------------------------ | ------------------------------------------------------------------------------------------------------------------------ |
+| `result` | object | Required (exactly 1) | A JSON object |
+| → `inputs` | array | Required (exactly 1 ) | An array that contains main details about the PSBT. |
+| →→`has_utxo` | boolean | Required (exactly 1) | Whether a UTXO is provided |
+| →→`is_final` | boolean | Required (exactly 1) | Whether the input is finalized |
+| →→`missing` | object | Optional (0 or 1) | A JSON object that includes the data missing to complete the input. |
+| →→→`pubkeys` | array | Optional (0 or 1) | Array containing public key data. |
+| →→→→`hex` | string | Required (0 or more) | Public key ID, hash160 of the public key, of a public key whose BIP 32 derivation path is missing. |
+| →→→`signatures` | array | Optional (0 or 1) | Array containing public key data |
+| →→→→`hex` | string | Required (0 or more) | Public key ID, hash160 of the public key, of a public key whose signature is missing. |
+| →→→ `"redeemscript" : "hex"` | string | Optional (0 or 1) | Hash160 of the redeemScript that is missing. |
+| →→ `"next" : "str"` | string | Optional (0 or 1) | Role of the next person that this input needs to go to |
+| → `estimated_vsize` | numeric | Optional (0 or 1) | Estimated vsize of the final signed transaction |
+| → `estimated_feerate` | numeric | Optional (0 or 1) | Estimated feerate of the final signed transaction in DASH/kB. Shown only if all UTXO slots in the PSBT have been filled. |
+| → `fee` | numeric | Optional (0 or 1) | The transaction fee paid. Shown only if all UTXO slots in the PSBT have been filled. |
+| → `"next" : "str"` | string | Required (exactly 1) | Role of the next person that this psbt needs to go to |
+| → `"error" : "str"` | string | Required (exactly 1) | Error message if there is one |
+
+_Example from Dash Core 18.2.0_
+
+```bash
+dash-cli -testnet analyzepsbt cHNidP8BAHcCAAAAAWtJCIbAGYsCjGxcsUXE6zsQVaIkp6EFqt7/QbaeyR4GAQAAAAD/////AgAgX6ASAAAAGXapFEhUhUJfqZUE7BY4rEIT88/J8y7ziKzAqPm+AQAAABl2qRSBHqzBTbjrtbZEhtxDQAwCJrQopIisAAAAAAAAAAA=
+```
+
+Result:
+
+```
+{
+ "inputs": [
+ {
+ "has_utxo": false,
+ "is_final": false,
+ "next": "updater"
+ }
+ ],
+ "next": "updater"
+}
+```
+
+_See also:_
+
+* [CombinePSBT](../api/remote-procedure-calls-raw-transactions.md#combinepsbt): combines multiple partially-signed Dash transactions into one transaction.
+* [CreatePSBT](../api/remote-procedure-calls-raw-transactions.md#createpsbt): creates a transaction in the Partially Signed Transaction (PST) format.
+* [DecodePSBT](../api/remote-procedure-calls-raw-transactions.md#decodepsbt): returns a JSON object representing the serialized, base64-encoded partially signed Dash transaction.
+* [FinalizePSBT](../api/remote-procedure-calls-raw-transactions.md#finalizepsbt): finalizes the inputs of a PSBT.
+* [WalletProcessPSBT](../api/remote-procedure-calls-wallet.md#walletprocesspsbt): updates a PSBT with input information from a wallet and then allows the signing of inputs.
+
+## CombinePSBT
+
+The [`combinepsbt` RPC](../api/remote-procedure-calls-raw-transactions.md#combinepsbt) combines multiple partially-signed Dash transactions into one transaction. Implements the Combiner role. This should be used only with `createrawtransaction` and `fundrawtransaction`. `createpsbt` and `walletcreatefundedpsbt` should be used for new applications.
+
+_Parameter #1---txs_
+
+| Name | Type | Presence | Description |
+| ------------ | ------ | ----------------------- | ----------------------------------------------------------- |
+| Transactions | string | Required (exactly 1) | An array of base64 strings of partially signed transactions |
+| → psbt | string | Required (exactly 1) | A base64 string of a PSBT |
+
+_Result---psbt_
+
+| Name | Type | Presence | Description |
+| -------- | ------ | ----------------------- | ----------------------------------------------- |
+| `result` | string | Required (Exactly 1) | The base64-encoded partially signed transaction |
+
+_Example from Dash Core 18.0.0_
+
+```bash
+dash-cli -testnet combinepsbt '["cHNidP8BAFUCAAAAAQcxBA7Cdee2EvS1IyiRPzCVxbt9wFnrqry3AMUBOYvqAAAAAAD/////AQDh9QUAAAAAGXapFLBKVDBt/eE2UU3EUaAiMeuIUMC1iKwAAAAAAAEA3wIAAAAB9LcsqdmAuKwHgkt0HMpJuSx8RnBxL73+ORGz4ogdt+gBAAAAakcwRAIgJR7zIP4o/GRTAyvswKmdFDx+PBO/tB24s0ydQcRpOZECIAvm3Q2xMIpdAAhl17yQAkQjElRbZEIbcr7pGCpNbzqsASEDIcX0+C0b8ib3pvxlx809S7xOmAj0NH3i9vFe8pUTvHX+////AgBlzR0AAAAAF6kUJOSskBQ3xyDtInRjI2eW1QraJ9eHIcmaOwAAAAAZdqkUPU2zmkAo79MmS8yW1oYUjb7jz0qIrOosCQAiAgN+48COTyy1UqO7c63g5A9YEMnBIiYF+FcREEaGgxAHukcwRAIgfwcMEFPrmy81y5NWFj8M0CHUBlzzQxr4RoxSmzvmVIQCIH22f9/A/K0keQ7rKcya0E5zTlnYDnly8VJIrj2yUgflAQEER1IhA37jwI5PLLVSo7tzreDkD1gQycEiJgX4VxEQRoaDEAe6IQK1B5TV+2qTmU+/c3Pzl61bklYbfj9yg+jbdGyMoKE/vFKuAAA=", "cHNidP8BAFUCAAAAAQcxBA7Cdee2EvS1IyiRPzCVxbt9wFnrqry3AMUBOYvqAAAAAAD/////AQDh9QUAAAAAGXapFLBKVDBt/eE2UU3EUaAiMeuIUMC1iKwAAAAAAAEA3wIAAAAB9LcsqdmAuKwHgkt0HMpJuSx8RnBxL73+ORGz4ogdt+gBAAAAakcwRAIgJR7zIP4o/GRTAyvswKmdFDx+PBO/tB24s0ydQcRpOZECIAvm3Q2xMIpdAAhl17yQAkQjElRbZEIbcr7pGCpNbzqsASEDIcX0+C0b8ib3pvxlx809S7xOmAj0NH3i9vFe8pUTvHX+////AgBlzR0AAAAAF6kUJOSskBQ3xyDtInRjI2eW1QraJ9eHIcmaOwAAAAAZdqkUPU2zmkAo79MmS8yW1oYUjb7jz0qIrOosCQAiAgK1B5TV+2qTmU+/c3Pzl61bklYbfj9yg+jbdGyMoKE/vEcwRAIgP3PuTCqVSU0Cx5UDknTwmAFJ6N80sV+YiUmy392/4BUCIEB6QOZe3SJeJ3OVmBCmoEPWcHqbstIvxhCxJ2h+fkSZAQEER1IhA37jwI5PLLVSo7tzreDkD1gQycEiJgX4VxEQRoaDEAe6IQK1B5TV+2qTmU+/c3Pzl61bklYbfj9yg+jbdGyMoKE/vFKuAAA="]'
+```
+
+Result:
+
+```
+cHNidP8BAFUCAAAAAQcxBA7Cdee2EvS1IyiRPzCVxbt9wFnrqry3AMUBOYvqAAAAAAD/////AQDh9QUAAAAAGXapFLBKVDBt/eE2UU3EUaAiMeuIUMC1iKwAAAAAAAEA3wIAAAAB9LcsqdmAuKwHgkt0HMpJuSx8RnBxL73+ORGz4ogdt+gBAAAAakcwRAIgJR7zIP4o/GRTAyvswKmdFDx+PBO/tB24s0ydQcRpOZECIAvm3Q2xMIpdAAhl17yQAkQjElRbZEIbcr7pGCpNbzqsASEDIcX0+C0b8ib3pvxlx809S7xOmAj0NH3i9vFe8pUTvHX+////AgBlzR0AAAAAF6kUJOSskBQ3xyDtInRjI2eW1QraJ9eHIcmaOwAAAAAZdqkUPU2zmkAo79MmS8yW1oYUjb7jz0qIrOosCQAiAgN+48COTyy1UqO7c63g5A9YEMnBIiYF+FcREEaGgxAHukcwRAIgfwcMEFPrmy81y5NWFj8M0CHUBlzzQxr4RoxSmzvmVIQCIH22f9/A/K0keQ7rKcya0E5zTlnYDnly8VJIrj2yUgflASICArUHlNX7apOZT79zc/OXrVuSVht+P3KD6Nt0bIygoT+8RzBEAiA/c+5MKpVJTQLHlQOSdPCYAUno3zSxX5iJSbLf3b/gFQIgQHpA5l7dIl4nc5WYEKagQ9Zwepuy0i/GELEnaH5+RJkBAQRHUiEDfuPAjk8stVKju3Ot4OQPWBDJwSImBfhXERBGhoMQB7ohArUHlNX7apOZT79zc/OXrVuSVht+P3KD6Nt0bIygoT+8Uq4AAA==
+```
+
+_See also:_
+
+* [CreatePSBT](../api/remote-procedure-calls-raw-transactions.md#createpsbt): creates a transaction in the Partially Signed Transaction (PST) format.
+* [DecodePSBT](../api/remote-procedure-calls-raw-transactions.md#decodepsbt): returns a JSON object representing the serialized, base64-encoded partially signed Dash transaction.
+* [FinalizePSBT](../api/remote-procedure-calls-raw-transactions.md#finalizepsbt): finalizes the inputs of a PSBT.
+* [WalletProcessPSBT](../api/remote-procedure-calls-wallet.md#walletprocesspsbt): updates a PSBT with input information from a wallet and then allows the signing of inputs.
+
+## CombineRawTransaction
+
+The [`combinerawtransaction` RPC](../api/remote-procedure-calls-raw-transactions.md#combinerawtransaction) combine multiple partially signed transactions into one transaction.
+
+The combined transaction may be another partially signed transaction or a fully signed transaction.
+
+_Parameter #1---txs_
+
+| Name | Type | Presence | Description |
+| ---- | ------ | -------- | ------------------------------------------------------------ |
+| txs | string | Required | A json array of hex strings of partially signed transactions |
+
+_Result---hex-encoded raw transaction with signature(s)_
+
+| Name | Type | Presence | Description |
+| -------- | ------ | ----------------------- | ------------------------------------------------------------------------------ |
+| `result` | string | Required (Exactly 1) | The resulting raw transaction in serialized transaction format encoded as hex. |
+
+_Example from Dash Core 0.15.0_
+
+The following example shows a fully signed two input transaction being assembled
+by combining two partially signed transactions. The first hex-encoded string is
+the transaction with only the first input signed. The second hex-encoded string is
+the transaction with only the second input signed.
+
+```bash
+dash-cli -testnet combinerawtransaction '[
+ "0200000002fdb27b4f2b80a5fd3b96602618a6ccf7bdde504bf90989610b19ed6ecd769520010000006b483045022100f8770316327966fb1972338d14db8d38048455da8b62f6350b117c797cea459e02206c63c103cf53ce1d24a313b3e6853913fa14febafd733e683b6eb46a7beec0fa012103c67d86944315838aea7ec80d390b5d09b91b62483370d4979da5ccf7a7df77a9ffffffff0d052e9b13c53bb342d772767732ffe4fa9f1c150629d3fa79655267baa7c86a0100000000ffffffff0200ca9a3b000000001976a9144139b147b5cef5fef5bcdb02fcdf55e426f74dbb88ac00daf89a000000001976a91465f53f2095c99ce152ff3bc8a8f027d8a77cbdcb88ac00000000",
+ "0200000002fdb27b4f2b80a5fd3b96602618a6ccf7bdde504bf90989610b19ed6ecd7695200100000000ffffffff0d052e9b13c53bb342d772767732ffe4fa9f1c150629d3fa79655267baa7c86a010000006b4830450221008c3abc11ea84cc98cf674afc5b6d3d078d672768d289f2ab976ea4b2a49129fc022008470458b1b179800e7f5348196d510d2f147e69fe836c94135fc5c620312acd012102912ba98d6641f79864d04d41523167f5db267e45d1633e9243a0be7efb675719ffffffff0200ca9a3b000000001976a9144139b147b5cef5fef5bcdb02fcdf55e426f74dbb88ac00daf89a000000001976a91465f53f2095c99ce152ff3bc8a8f027d8a77cbdcb88ac00000000"
+]'
+```
+
+Result:
+
+```bash
+0200000002fdb27b4f2b80a5fd3b96602618a6ccf7bdde504bf90989610b19ed6ecd7695\
+20010000006b483045022100f8770316327966fb1972338d14db8d38048455da8b62f635\
+0b117c797cea459e02206c63c103cf53ce1d24a313b3e6853913fa14febafd733e683b6e\
+b46a7beec0fa012103c67d86944315838aea7ec80d390b5d09b91b62483370d4979da5cc\
+f7a7df77a9ffffffff0d052e9b13c53bb342d772767732ffe4fa9f1c150629d3fa796552\
+67baa7c86a010000006b4830450221008c3abc11ea84cc98cf674afc5b6d3d078d672768\
+d289f2ab976ea4b2a49129fc022008470458b1b179800e7f5348196d510d2f147e69fe83\
+6c94135fc5c620312acd012102912ba98d6641f79864d04d41523167f5db267e45d1633e\
+9243a0be7efb675719ffffffff0200ca9a3b000000001976a9144139b147b5cef5fef5bc\
+db02fcdf55e426f74dbb88ac00daf89a000000001976a91465f53f2095c99ce152ff3bc8\
+a8f027d8a77cbdcb88ac00000000
+```
+
+_See also:_
+
+* [AnalyzePSBT](../api/remote-procedure-calls-raw-transactions.md#analyzepsbt): analyzes and provides information about the current status of a PSBT and its inputs.
+* [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.
+* [DecodeRawTransaction](../api/remote-procedure-calls-raw-transactions.md#decoderawtransaction): decodes a serialized transaction hex string into a JSON object describing the transaction.
+* [SignRawTransactionWithKey](#signrawtransactionwithkey): signs inputs for a transaction in the serialized transaction format using private keys provided in the call.
+* [SendRawTransaction](../api/remote-procedure-calls-raw-transactions.md#sendrawtransaction): validates a transaction and broadcasts it to the peer-to-peer network.
+* [Serialized Transaction Format](../reference/transactions-raw-transaction-format.md)
+
+## ConvertToPSBT
+
+The [`converttopsbt` RPC](../api/remote-procedure-calls-raw-transactions.md#converttopsbt) converts a network serialized transaction to a PSBT. This should be used only with `createrawtransaction` and `fundrawtransaction`. `createpsbt` and `walletcreatefundedpsbt` should be used for new applications.
+
+_Parameter #1---hexstring_
+
+| Name | Type | Presence | Description |
+| ---- | ------ | -------- | ----------------------------------- |
+| hex | string | Required | The hex string of a raw transaction |
+
+_Parameter #2---permitsigdata_
+
+| Name | Type | Presence | Description |
+| ---- | ---- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
+| data | bool | Optional | If true, any signatures in the input will be discarded and conversion will continue. If false, RPC will fail if any signatures are present. |
+
+_Result---psbt_
+
+| Name | Type | Presence | Description |
+| -------- | ------ | ----------------------- | ------------------------------------------------- |
+| `result` | string | Required (Exactly 1) | The resulting raw transaction is a base64-encoded |
+
+_Example from Dash Core 18.0.0_
+
+```bash
+dash-cli -testnet converttopsbt 02000000016b490886c0198b028c6c5cb145c4eb3b1055a224a7a105aadeff41b69ec91e060100000000ffffffff0200205fa0120000001976a914485485425fa99504ec1638ac4213f3cfc9f32ef388acc0a8f9be010000001976a914811eacc14db8ebb5b64486dc43400c0226b428a488ac00000000
+```
+
+Result:
+
+```
+cHNidP8BAHcCAAAAAWtJCIbAGYsCjGxcsUXE6zsQVaIkp6EFqt7/QbaeyR4GAQAAAAD/////AgAgX6ASAAAAGXapFEhUhUJfqZUE7BY4rEIT88/J8y7ziKzAqPm+AQAAABl2qRSBHqzBTbjrtbZEhtxDQAwCJrQopIisAAAAAAAAAAA=
+```
+
+_See also:_
+
+* [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.
+* [CreatePSBT](../api/remote-procedure-calls-raw-transactions.md#createpsbt): creates a transaction in the Partially Signed Transaction (PST) format.
+* [CombinePSBT](../api/remote-procedure-calls-raw-transactions.md#combinepsbt): combine multiple partially-signed Dash transactions into one transaction.
+* [DecodePSBT](../api/remote-procedure-calls-raw-transactions.md#decodepsbt): returns a JSON object representing the serialized, base64-encoded partially signed Dash transaction.
+* [FinalizePSBT](../api/remote-procedure-calls-raw-transactions.md#finalizepsbt): finalizes the inputs of a PSBT.
+* [SignRawTransactionWithKey](#signrawtransactionwithkey): signs inputs for a transaction in the serialized transaction format using private keys provided in the call.
+* [Serialized Transaction Format](../reference/transactions-raw-transaction-format.md)
+* [WalletCreateFundedPSBT](../api/remote-procedure-calls-wallet.md#walletcreatefundedpsbt): creates and funds a transaction in the Partially Signed Transaction (PST) format.
+* [WalletProcessPSBT](../api/remote-procedure-calls-wallet.md#walletprocesspsbt): updates a PSBT with input information from a wallet and then allows the signing of inputs.
+
+## CreatePSBT
+
+The [`createpsbt` RPC](../api/remote-procedure-calls-raw-transactions.md#createpsbt) creates a transaction in the Partially Signed Transaction (PST) format.
+
+Implements the Creator role.
+
+_Parameter #1---Inputs_
+
+| Name | Type | Presence | Description |
+| ----------------- | ------------ | ----------------------- | ---------------------------------------------------------------------------------------------------------- |
+| Transactions | array | Required (exactly 1) | An array of objects, each one to be used as an input to the transaction |
+| → Input | object | Required (1 or more) | An object describing a particular input |
+| → → `txid` | string (hex) | Required (exactly 1) | The TXID of the outpoint to be spent encoded as hex in RPC byte order |
+| → → `vout` | number (int) | Required (exactly 1) | The output index number (vout) of the outpoint to be spent; the first output in a transaction is index `0` |
+| → → `Sequence` | number (int) | Optional (0 or 1) | The sequence number to use for the input |
+
+_Parameter #2---Outputs_
+
+| Name | Type | Presence | Description |
+| -------------- | ---------------------- | ----------------------- | --------------------------------------------------------------------------------------------------------- |
+| Outputs | array | Required (exactly 1) | A JSON array with outputs as key-value pairs |
+| → Output | object | Required (1 or more) | An object describing a particular output |
+| → → Address | string : number (Dash) | Optional (0 or 1) | A key-value pair. The key (string) is the Dash address, the value (float or string) is the amount in DASH |
+| → → Data | `data` : string (hex) | Optional (0 or 1) | A key-value pair. The key must be `data`, the value is hex encoded data |
+
+_Parameter #3---locktime_
+
+| Name | Type | Presence | Description |
+| -------- | ------------- | -------------------- | ---------------------------------------------------------------------------------------------------------------------- |
+| Locktime | numeric (int) | Optional (0 or 1) | Indicates the earliest time a transaction can be added to the block chain. Non-0 value also locktime-activates inputs. |
+
+_Result---the raw transaction in base64_
+
+| Name | Type | Presence | Description |
+| ------ | ------ | ----------------------- | ----------------------------------------------------- |
+| Result | string | Required (Exactly 1) | The resulting raw transaction (base64-encoded string) |
+
+_Example from Dash Core 18.0.0_
+
+```bash
+dash-cli -testnet createpsbt "[{\"txid\":\"2662c87e1761ed5f4e98a0640b2608114d86f282824a51bd624985d236c71178\",\"vout\":0}]" "[{\"data\":\"00010203\"}]"
+```
+
+Result:
+
+```
+cHNidP8BAEICAAAAAXgRxzbShUlivVFKgoLyhk0RCCYLZKCYTl/tYRd+yGImAAAAAAD/////AQAAAAAAAAAABmoEAAECAwAAAAAAAAA=
+```
+
+_See also:_
+
+* [CombinePSBT](../api/remote-procedure-calls-raw-transactions.md#combinepsbt): combine multiple partially-signed Dash transactions into one transaction.
+* [ConvertToPSBT](../api/remote-procedure-calls-raw-transactions.md#converttopsbt): converts a network serialized transaction to a PSBT.
+* [DecodePSBT](../api/remote-procedure-calls-raw-transactions.md#decodepsbt): returns a JSON object representing the serialized, base64-encoded partially signed Dash transaction.
+* [FinalizePSBT](../api/remote-procedure-calls-raw-transactions.md#finalizepsbt): finalizes the inputs of a PSBT.
+* [WalletCreateFundedPSBT](../api/remote-procedure-calls-wallet.md#walletcreatefundedpsbt): creates and funds a transaction in the Partially Signed Transaction (PST) format.
+* [WalletProcessPSBT](../api/remote-procedure-calls-wallet.md#walletprocesspsbt): updates a PSBT with input information from a wallet and then allows the signing of inputs.
+
+## CreateRawTransaction
+
+The [`createrawtransaction` RPC](../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.
+
+_Parameter #1---Inputs_
+
+| Name | Type | Presence | Description |
+| ----------------- | ------------ | ----------------------- | ---------------------------------------------------------------------------------------------------------- |
+| Transactions | array | Required (exactly 1) | An array of objects, each one to be used as an input to the transaction |
+| → Input | object | Required (1 or more) | An object describing a particular input |
+| → → `txid` | string (hex) | Required (exactly 1) | The TXID of the outpoint to be spent encoded as hex in RPC byte order |
+| → → `vout` | number (int) | Required (exactly 1) | The output index number (vout) of the outpoint to be spent; the first output in a transaction is index `0` |
+| → → `Sequence` | number (int) | Optional (0 or 1) | Added in Dash Core 0.12.3.0.
The sequence number to use for the input |
+
+_Parameter #2---Outputs_
+
+| Name | Type | Presence | Description |
+| -------------- | ---------------------- | ----------------------- | --------------------------------------------------------------------------------------------------------- |
+| Outputs | array | Required (exactly 1) | A JSON array with outputs as key-value pairs |
+| → Output | object | Required (1 or more) | An object describing a particular output |
+| → → Address | string : number (Dash) | Optional (0 or 1) | A key-value pair. The key (string) is the Dash address, the value (float or string) is the amount in DASH |
+| → → Data | `data` : string (hex) | Optional (0 or 1) | A key-value pair. The key must be `data`, the value is hex encoded data |
+
+_Parameter #3---locktime_
+
+| Name | Type | Presence | Description |
+| -------- | ------------- | -------------------- | ------------------------------------------------------------------------- |
+| Locktime | numeric (int) | Optional (0 or 1) | Indicates the earliest time a transaction can be added to the block chain |
+
+_Result---the unsigned raw transaction in hex_
+
+| Name | Type | Presence | Description |
+| -------- | ------ | ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `result` | string | Required (Exactly 1) | The resulting unsigned raw transaction in serialized transaction format encoded as base-64. If the transaction couldn't be generated, this will be set to JSON `null` and the JSON-RPC error field may contain an error message |
+
+_Example from Dash Core 18.0.0_
+
+```bash
+dash-cli -testnet createrawtransaction '''
+ [
+ {
+ "txid": "061ec99eb641ffdeaa05a1a724a255103bebc445b15c6c8c028b19c08608496b",
+ "vout" : 1
+ }
+ ]''' \
+ '''
+ [
+ {
+ "ySutkc49Khpz1HQN8AfWNitVBLwqtyaxvv": 800
+ },
+ {
+ "yY6AmGopsZS31wy1JLHR9P6AC6owFaXwuh": 74.99
+ }
+ ]''' \
+ 0
+```
+
+Result:
+
+```text
+02000000016b490886c0198b028c6c5cb145c4eb3b1055a224a7a105aadeff41b69ec91e06010000\
+0000ffffffff0200205fa0120000001976a914485485425fa99504ec1638ac4213f3cfc9f32ef388\
+acc0a8f9be010000001976a914811eacc14db8ebb5b64486dc43400c0226b428a488ac00000000
+```
+
+_See also:_
+
+* [CombineRawTransaction](../api/remote-procedure-calls-raw-transactions.md#combinerawtransaction): combine multiple partially signed transactions into one transaction.
+* [DecodeRawTransaction](../api/remote-procedure-calls-raw-transactions.md#decoderawtransaction): decodes a serialized transaction hex string into a JSON object describing the transaction.
+* [SignRawTransactionWithKey](#signrawtransactionwithkey): signs inputs for a transaction in the serialized transaction format using private keys provided in the call.
+* [SendRawTransaction](../api/remote-procedure-calls-raw-transactions.md#sendrawtransaction): validates a transaction and broadcasts it to the peer-to-peer network.
+* [Serialized Transaction Format](../reference/transactions-raw-transaction-format.md)
+
+## DecodePSBT
+
+The [`decodepsbt` RPC](../api/remote-procedure-calls-raw-transactions.md#decodepsbt) returns a JSON object representing the serialized, base64-encoded partially signed Dash transaction.
+
+_Parameter #1---The PSBT base64 string_
+
+| Name | Type | Presence | Description |
+| ------ | ------ | ----------------------- | ---------------------- |
+| `psbt` | string | Required (exactly 1) | The PSBT base64 string |
+
+_Result---the decoded transaction_
+
+| Name | Type | Presence | Description |
+| -------------------------------- | ------------ | ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `result` | object | Required (exactly 1) | An object describing the decoded transaction, or JSON `null` if the transaction could not be decoded |
+| → `tx` | string (hex) | Required (exactly 1) | The decoded network-serialized unsigned transaction. The layout is the same as the output of [decoderawtransaction](#decoderawtransaction). |
+| → `unknown` | object | Required (exactly 1) | The unknown global fields |
+| →→ Unknown | object | Required (0 or more) | An unknown key-value pair |
+| → `inputs` | array | Required (exactly 1) | An array of objects with each object being an input vector (vin) for this transaction |
+| → → Input | object | Required (1 or more) | An object describing one of this transaction's inputs. May be a regular input or a coinbase |
+| → → → `non_witness_utxo` | object | Optional (0 or more) | Decoded network transaction for non-witness UTXOs |
+| → → → `partial_signatures` | object | Optional (0 or more) | An object containing partial signatures |
+| → → →→ `pubkey` | string | Required (1 or more) | The public key and signature that corresponds to it |
+| → → → `sighash` | string | Optional (0 or 1) | The sighash type to be used |
+| → → → `redeem_script` | object | Optional (0 or more) | |
+| → → → → `asm` | string | Required (exactly 1) | The signature script in decoded form with non-data-pushing opcodes listed |
+| → → → → `hex` | string (hex) | Required (exactly 1) | The signature script encoded as hex |
+| → → → → `type` | string | Optional (0 or 1) | The type of script. This will be one of the following: • `pubkey` for a P2PK script • `pubkeyhash` for a P2PKH script • `scripthash` for a P2SH script • `multisig` for a bare multisig script • `nulldata` for nulldata scripts • `nonstandard` for unknown scripts |
+| → → → `bip32_derivs` | object | Optional (0 or more) | |
+| → → →→ `pubkey` | object | Optional (0 or more) | The public key with the derivation path as the value. |
+| → → →→→ `master_fingerprint` | object | Optional (0 or more) | The fingerprint of the master key |
+| → → →→→ `path` | object | Optional (0 or more) | The public key's path |
+| → → → `final_scriptsig` | object | Optional (0 or more) | |
+| → → → → `asm` | string | Required (exactly 1) | The signature script in decoded form with non-data-pushing opcodes listed |
+| → → → → `hex` | string (hex) | Required (exactly 1) | The signature script encoded as hex |
+| → → → `unknown` | object | Optional (0 or more) | The unknown global fields |
+| → → → → Unknown | object | Required (0 or more) | An unknown key-value pair |
+| → `vout` | array | Required (exactly 1) | An array of objects each describing an output vector (vout) for this transaction. Output objects will have the same order within the array as they have in the transaction, so the first output listed will be output 0 |
+| → → Output | object | Required (1 or more) | An object describing one of this transaction's outputs |
+| → → → `redeem_script` | object | Required (exactly 1) | An object describing the pubkey script |
+| → → → → `asm` | string | Required (exactly 1) | The pubkey script in decoded form with non-data-pushing opcodes listed |
+| → → → → `hex` | string (hex) | Required (exactly 1) | The pubkey script encoded as hex |
+| → → → → `type` | string | Optional (0 or 1) | The type of script. This will be one of the following: • `pubkey` for a P2PK script • `pubkeyhash` for a P2PKH script • `scripthash` for a P2SH script • `multisig` for a bare multisig script • `nulldata` for nulldata scripts • `nonstandard` for unknown scripts |
+| → → → `bip32_derivs` | array | Optional (0 or more) | Array of JSON objects |
+| → → →→ BIP32 Deriv | object | Optional (0 or more) | An object containing BIP32 derivation infomation |
+| →→ → →→ `pubkey` | object | Optional (0 or more) | The public key this path corresponds to |
+| → → → →→ `master_fingerprint` | object | Optional (0 or more) | The fingerprint of the master key |
+| → → →→→ `path` | object | Optional (0 or more) | The public key's path |
+| → `fee` | number (int) | Optional (0 or 1) | The transaction fee paid if all UTXOs slots in the PSBT have been filled |
+
+_Example from Dash Core 18.0.0_
+
+Decode a one-input, one-output transaction:
+
+```bash
+dash-cli -testnet decodepsbt cHNidP8BAEICAAAAAXgRxzbShUlivVFKgoLyhk0RCCYLZKCYTl/tYRd+yGImAAAAAAD/////AQAAAAAAAAAABmoEAAECAwAAAAAAAAA=
+```
+
+Result:
+
+```json
+{
+ "tx": {
+ "txid": "5954a007baf3f012af1484b42d24057f9b1541dd65003bababb1a53c9f7eabe4",
+ "version": 2,
+ "type": 0,
+ "size": 66,
+ "locktime": 0,
+ "vin": [
+ {
+ "txid": "2662c87e1761ed5f4e98a0640b2608114d86f282824a51bd624985d236c71178",
+ "vout": 0,
+ "scriptSig": {
+ "asm": "",
+ "hex": ""
+ },
+ "sequence": 4294967295
+ }
+ ],
+ "vout": [
+ {
+ "value": 0.00000000,
+ "valueSat": 0,
+ "n": 0,
+ "scriptPubKey": {
+ "asm": "OP_RETURN 50462976",
+ "hex": "6a0400010203",
+ "type": "nulldata"
+ }
+ }
+ ]
+ },
+ "unknown": {
+ },
+ "inputs": [
+ {
+ "non_witness_utxo": {
+ "txid": "2662c87e1761ed5f4e98a0640b2608114d86f282824a51bd624985d236c71178",
+ "version": 2,
+ "type": 0,
+ "size": 225,
+ "locktime": 542805,
+ "vin": [
+ {
+ "txid": "427c8d2f712b72150496d53b67403a984b6fb41f37f6c0a85115d12c50b78b94",
+ "vout": 1,
+ "scriptSig": {
+ "asm": "304402204fe4fc488c955f286c52c848ec7950b40ec476e1b434c6add686b474bdde09a902206222d291fd9da341408aa8a4720f5a6959997715a1ddf8187e75277b6bfcae7e[ALL] 03c67d86944315838aea7ec80d390b5d09b91b62483370d4979da5ccf7a7df77a9",
+ "hex": "47304402204fe4fc488c955f286c52c848ec7950b40ec476e1b434c6add686b474bdde09a902206222d291fd9da341408aa8a4720f5a6959997715a1ddf8187e75277b6bfcae7e012103c67d86944315838aea7ec80d390b5d09b91b62483370d4979da5ccf7a7df77a9"
+ },
+ "sequence": 4294967294
+ }
+ ],
+ "vout": [
+ {
+ "value": 1.64030388,
+ "valueSat": 164030388,
+ "n": 0,
+ "scriptPubKey": {
+ "asm": "OP_DUP OP_HASH160 cefc464904c03814c01906e197dc759a745e47ee OP_EQUALVERIFY OP_CHECKSIG",
+ "hex": "76a914cefc464904c03814c01906e197dc759a745e47ee88ac",
+ "reqSigs": 1,
+ "type": "pubkeyhash",
+ "addresses": [
+ "yfBtG4d5ZRWXWo8JQrbVcCzpKyJRhcGyYk"
+ ]
+ }
+ },
+ {
+ "value": 10.00000000,
+ "valueSat": 1000000000,
+ "n": 1,
+ "scriptPubKey": {
+ "asm": "OP_DUP OP_HASH160 3ef9bcbe92f77c8fadd0566eea7ff8d47f22bde0 OP_EQUALVERIFY OP_CHECKSIG",
+ "hex": "76a9143ef9bcbe92f77c8fadd0566eea7ff8d47f22bde088ac",
+ "reqSigs": 1,
+ "type": "pubkeyhash",
+ "addresses": [
+ "yS4Rv9VJnUvwcwggLzi88pu6jTPVya52Ba"
+ ]
+ }
+ }
+ ]
+ },
+ "final_scriptSig": {
+ "asm": "3044022005d5f8010e0d8cfd601e6136330a4122492ac3573718a1ef30c2bc3f31b760390220273a18050f61026ea3aa4d9c2c58ad51dd7f88bd64bbcc3dba769d8cd7ec09da[ALL] 0267da91139a4f14d97eaf7800ea9e7cb9ffa8fc232ece8b38a3d127891e6f71e8",
+ "hex": "473044022005d5f8010e0d8cfd601e6136330a4122492ac3573718a1ef30c2bc3f31b760390220273a18050f61026ea3aa4d9c2c58ad51dd7f88bd64bbcc3dba769d8cd7ec09da01210267da91139a4f14d97eaf7800ea9e7cb9ffa8fc232ece8b38a3d127891e6f71e8"
+ }
+ }
+ ],
+ "outputs": [
+ {
+ }
+ ],
+ "fee": 1.64030388
+}
+```
+
+## DecodeRawTransaction
+
+The [`decoderawtransaction` RPC](../api/remote-procedure-calls-raw-transactions.md#decoderawtransaction) decodes a serialized transaction hex string into a JSON object describing the transaction.
+
+_Parameter #1---serialized transaction in hex_
+
+| Name | Type | Presence | Description |
+| ---------------------- | ------------ | ----------------------- | ---------------------------------------------------------- |
+| Serialized Transaction | string (hex) | Required (exactly 1) | The transaction to decode in serialized transaction format |
+
+_Result---the decoded transaction_
+
+| Name | Type | Presence | Description |
+| ----------------------- | -------------- | ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `result` | object | Required (exactly 1) | An object describing the decoded transaction, or JSON `null` if the transaction could not be decoded |
+| → `txid` | string (hex) | Required (exactly 1) | The transaction's TXID encoded as hex in RPC byte order |
+| → `version` | number (int) | Required (exactly 1) | The transaction format version number |
+| → `type` | number (int) | Required (exactly 1) | _Added in Dash Core 0.13.0.0_
The transaction format type |
+| → `size` | number (int) | Required (exactly 1) | _Added in Bitcoin Core 0.12.0_
The serialized transaction size |
+| → `locktime` | number (int) | Required (exactly 1) | The transaction's locktime: either a Unix epoch date or block height; see the [locktime parsing rules](../guide/transactions-locktime-and-sequence-number.md#locktime-parsing-rules) |
+| → `vin` | array | Required (exactly 1) | An array of objects with each object being an input vector (vin) for this transaction. Input objects will have the same order within the array as they have in the transaction, so the first input listed will be input 0 |
+| → → Input | object | Required (1 or more) | An object describing one of this transaction's inputs. May be a regular input or a coinbase |
+| → → → `txid` | string | Optional (0 or 1) | The TXID of the outpoint being spent, encoded as hex in RPC byte order. Not present if this is a coinbase transaction |
+| → → → `vout` | number (int) | Optional (0 or 1) | The output index number (vout) of the outpoint being spent. The first output in a transaction has an index of `0`. Not present if this is a coinbase transaction |
+| → → → `scriptSig` | object | Optional (0 or 1) | An object describing the signature script of this input. Not present if this is a coinbase transaction |
+| → → → → `asm` | string | Required (exactly 1) | The signature script in decoded form with non-data-pushing opcodes listed |
+| → → → → `hex` | string (hex) | Required (exactly 1) | The signature script encoded as hex |
+| → → → `coinbase` | string (hex) | Optional (0 or 1) | The coinbase (similar to the hex field of a scriptSig) encoded as hex. Only present if this is a coinbase transaction |
+| → → → `value` | number (Dash) | Optional (exactly 1) | The number of Dash paid to this output. May be `0`.
Only present if `spentindex` enabled |
+| → → → `valueSat` | number (duffs) | Optional (exactly 1) | The number of duffs paid to this output. May be `0`.
Only present if `spentindex` enabled |
+| → → → → `addresses` | string : array | Optional (0 or 1) | The P2PKH or P2SH addresses used in this transaction, or the computed P2PKH address of any pubkeys in this transaction. This array will not be returned for `nulldata` or `nonstandard` script types.
Only present if `spentindex` enabled |
+| → → → → → Address | string | Required (1 or more) | A P2PKH or P2SH address |
+| → → → `sequence` | number (int) | Required (exactly 1) | The input sequence number |
+| → `vout` | array | Required (exactly 1) | An array of objects each describing an output vector (vout) for this transaction. Output objects will have the same order within the array as they have in the transaction, so the first output listed will be output 0 |
+| → → Output | object | Required (1 or more) | An object describing one of this transaction's outputs |
+| → → → `value` | number (Dash) | Required (exactly 1) | The number of Dash paid to this output. May be `0` |
+| → → → `valueSat` | number (duffs) | Required (exactly 1) | The number of duffs paid to this output. May be `0` |
+| → → → `n` | number (int) | Required (exactly 1) | The output index number of this output within this transaction |
+| → → → `scriptPubKey` | object | Required (exactly 1) | An object describing the pubkey script |
+| → → → → `asm` | string | Required (exactly 1) | The pubkey script in decoded form with non-data-pushing opcodes listed |
+| → → → → `hex` | string (hex) | Required (exactly 1) | The pubkey script encoded as hex |
+| → → → → `reqSigs` | number (int) | Optional (0 or 1) | **Deprecated in Dash Core 21.0.0** (returned only if config option -deprecatedrpc=addresses is passed)
The number of signatures required; this is always `1` for P2PK, P2PKH, and P2SH (including P2SH multisig because the redeem script is not available in the pubkey script). It may be greater than 1 for bare multisig. This value will not be returned for `nulldata` or `nonstandard` script types (see the `type` key below) |
+| → → → → `type` | string | Optional (0 or 1) | The type of script. This will be one of the following: • `pubkey` for a P2PK script • `pubkeyhash` for a P2PKH script • `scripthash` for a P2SH script • `multisig` for a bare multisig script • `nulldata` for nulldata scripts • `nonstandard` for unknown scripts |
+| → → → `address` | string | Optional (0 or 1) | Dash address (only if a well-defined address exists) |
+| → → → → `addresses` | string : array | Optional (0 or 1) | **Deprecated in Dash Core 21.0.0** (returned only if config option -deprecatedrpc=addresses is passed)
The P2PKH or P2SH addresses used in this transaction, or the computed P2PKH address of any pubkeys in this transaction. This array will not be returned for `nulldata` or `nonstandard` script types |
+| → → → → → Address | string | Required (1 or more) | A P2PKH or P2SH address |
+| → `extraPayloadSize` | number (int) | Optional (0 or 1) | _Added in Dash Core 0.13.0.0_
Size of the DIP2 extra payload. Only present if it's a DIP2 special transaction |
+| → `extraPayload` | string (hex) | Optional (0 or 1) | _Added in Dash Core 0.13.0.0_
Hex encoded DIP2 extra payload data. Only present if it's a DIP2 special transaction |
+
+_Example from Dash Core 21.1.0_
+
+Decode a signed one-input, two-output transaction:
+
+```bash
+dash-cli -testnet decoderawtransaction 02000000015d0b26079696875e9fc3cb480420aae3c8\
+b1da628fbb14cc718066df7fe7c5fd010000006a47304402202cfa683981898ad9adb89534\
+23a38f7185ed41e163aa195d608fbe5bc3034910022034e2376aaed1c6576c0dad79d626ee\
+27f706baaed86dabb105979c3e6f6e1cb9012103d14eb001cf0908f3a2333d171f6236497a\
+82318a6a6f649b4d7fd8e5c8922e08feffffff021e3f4b4c000000001976a914b02ae52066\
+542b4aec5cf45c7cae3183d7bd322788ac00f90295000000001976a914252c9de3a0ebd5c9\
+5886187b24969d4ccdb5576e88ac943d0000
+```
+
+Result:
+
+```json
+{
+ "txid": "f4de3be04efa18e203c9d0b7ad11bb2517f5889338918ed300a374f5bd736ed7",
+ "version": 2,
+ "type": 0,
+ "size": 225,
+ "locktime": 15764,
+ "vin": [
+ {
+ "txid": "fdc5e77fdf668071cc14bb8f62dab1c8e3aa200448cbc39f5e87969607260b5d",
+ "vout": 1,
+ "scriptSig": {
+ "asm": "304402202cfa683981898ad9adb8953423a38f7185ed41e163aa195d608fbe5bc3034910022034e2376aaed1c6576c0dad79d626ee27f706baaed86dabb105979c3e6f6e1cb9[ALL] 03d14eb001cf0908f3a2333d171f6236497a82318a6a6f649b4d7fd8e5c8922e08",
+ "hex": "47304402202cfa683981898ad9adb8953423a38f7185ed41e163aa195d608fbe5bc3034910022034e2376aaed1c6576c0dad79d626ee27f706baaed86dabb105979c3e6f6e1cb9012103d14eb001cf0908f3a2333d171f6236497a82318a6a6f649b4d7fd8e5c8922e08"
+ },
+ "sequence": 4294967294
+ }
+ ],
+ "vout": [
+ {
+ "value": 12.79999774,
+ "valueSat": 1279999774,
+ "n": 0,
+ "scriptPubKey": {
+ "asm": "OP_DUP OP_HASH160 b02ae52066542b4aec5cf45c7cae3183d7bd3227 OP_EQUALVERIFY OP_CHECKSIG",
+ "hex": "76a914b02ae52066542b4aec5cf45c7cae3183d7bd322788ac",
+ "address": "ycNwAN4DQ7Xnw5XLKg84SR4U1GE22FfLNQ",
+ "type": "pubkeyhash"
+ }
+ },
+ {
+ "value": 25.00000000,
+ "valueSat": 2500000000,
+ "n": 1,
+ "scriptPubKey": {
+ "asm": "OP_DUP OP_HASH160 252c9de3a0ebd5c95886187b24969d4ccdb5576e OP_EQUALVERIFY OP_CHECKSIG",
+ "hex": "76a914252c9de3a0ebd5c95886187b24969d4ccdb5576e88ac",
+ "address": "yPi1JKw5fn8bMFsCCtnkGagogW6GXwGktZ",
+ "type": "pubkeyhash"
+ }
+ }
+ ]
+}
+```
+
+Decode a coinbase special transaction (CbTx):
+
+```bash
+dash-cli -testnet decoderawtransaction 03000500010000000000000000000000000000000000\
+000000000000000000000000000000ffffffff2703ae50011a4d696e656420627920416e74\
+506f6f6c2021000b01201da9196f0000000007000000ffffffff02809e4730000000001976\
+a914cbd7bfcc50351180132b2c0698cb90ad74c473c788ac809e4730000000001976a91488\
+a060bc2dfe05780ae4dcb6c98b12436c35a93988ac00000000460200ae50010078e5c08b39\
+960887bf95185c381bdb719e60b6925fa12af78a8824fade927387c757acb6bac63da84f92\
+45e20cfd5d830382ac634d434725ca6349ab5db920a3
+```
+
+Result:
+
+```json
+{
+ "txid": "25632685ed0d7286901a80961c924c1ddd952e764754dbd8b40d0956413c8b56",
+ "version": 3,
+ "type": 5,
+ "size": 229,
+ "locktime": 0,
+ "vin": [
+ {
+ "coinbase": "03ae50011a4d696e656420627920416e74506f6f6c2021000b01201da9196f0000000007000000",
+ "sequence": 4294967295
+ }
+ ],
+ "vout": [
+ {
+ "value": 8.10000000,
+ "valueSat": 810000000,
+ "n": 0,
+ "scriptPubKey": {
+ "asm": "OP_DUP OP_HASH160 cbd7bfcc50351180132b2c0698cb90ad74c473c7 OP_EQUALVERIFY OP_CHECKSIG",
+ "hex": "76a914cbd7bfcc50351180132b2c0698cb90ad74c473c788ac",
+ "address": "yeuGUfPMrbEqAS2Pw1wonYgEPbM4LAA9LK",
+ "type": "pubkeyhash"
+ }
+ },
+ {
+ "value": 8.10000000,
+ "valueSat": 810000000,
+ "n": 1,
+ "scriptPubKey": {
+ "asm": "OP_DUP OP_HASH160 88a060bc2dfe05780ae4dcb6c98b12436c35a939 OP_EQUALVERIFY OP_CHECKSIG",
+ "hex": "76a91488a060bc2dfe05780ae4dcb6c98b12436c35a93988ac",
+ "address": "yYmrsYP3XYMZr1cGtha3QzmuNB1C7CfyhV",
+ "type": "pubkeyhash"
+ }
+ }
+ ],
+ "extraPayloadSize": 70,
+ "extraPayload": "0200ae50010078e5c08b39960887bf95185c381bdb719e60b6925fa12af78a8824fade927387c757acb6bac63da84f9245e20cfd5d830382ac634d434725ca6349ab5db920a3",
+ "cbTx": {
+ "version": 2,
+ "height": 86190,
+ "merkleRootMNList": "877392defa24888af72aa15f92b6609e71db1b385c1895bf870896398bc0e578",
+ "merkleRootQuorums": "a320b95dab4963ca2547434d63ac8203835dfd0ce245924fa83dc6bab6ac57c7"
+ }
+}
+```
+
+_See also:_
+
+* [CombineRawTransaction](../api/remote-procedure-calls-raw-transactions.md#combinerawtransaction): combine multiple partially signed transactions into one transaction.
+* [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.
+* [SignRawTransactionWithKey](#signrawtransactionwithkey): signs inputs for a transaction in the serialized transaction format using private keys provided in the call.
+* [SendRawTransaction](../api/remote-procedure-calls-raw-transactions.md#sendrawtransaction): validates a transaction and broadcasts it to the peer-to-peer network.
+
+## DecodeScript
+
+The [`decodescript` RPC](../api/remote-procedure-calls-raw-transactions.md#decodescript) decodes a hex-encoded P2SH redeem script.
+
+_Parameter #1---a hex-encoded redeem script_
+
+| Name | Type | Presence | Description |
+| ------------- | ------------ | ----------------------- | -------------------------------------------------------------- |
+| Redeem Script | string (hex) | Required (exactly 1) | The redeem script to decode as a hex-encoded serialized script |
+
+_Result---the decoded script_
+
+| Name | Type | Presence | Description |
+| ---------------- | ------------ | ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `result` | object | Required (exactly 1) | An object describing the decoded script, or JSON `null` if the script could not be decoded |
+| → `asm` | string | Required (exactly 1) | The redeem script in decoded form with non-data-pushing opcodes listed. May be empty |
+| → `reqSigs` | number (int) | Optional (0 or 1) | **Deprecated in Dash Core 21.0.0** (returned only if config option -deprecatedrpc=addresses is passed)
The number of signatures required; this is always `1` for P2PK or P2PKH within P2SH. It may be greater than 1 for P2SH multisig. This value will not be returned for `nonstandard` script types (see the `type` key above) |
+| → `type` | string | Optional (0 or 1) | The type of script. This will be one of the following: • `pubkey` for a P2PK script inside P2SH • `pubkeyhash` for a P2PKH script inside P2SH • `multisig` for a multisig script inside P2SH • `nonstandard` for unknown scripts |
+| → `addresses` | array | Optional (0 or 1) | **Deprecated in Dash Core 21.0.0** (returned only if config option -deprecatedrpc=addresses is passed)
A P2PKH addresses used in this script, or the computed P2PKH addresses of any pubkeys in this script. This array will not be returned for `nonstandard` script types |
+| → → Address | string | Required (1 or more) | A P2PKH address |
+| → `p2sh` | string (hex) | Required (exactly 1) | The P2SH address of this redeem script |
+
+_Example from Dash Core 21.0.0_
+
+A 2-of-3 P2SH multisig pubkey script:
+
+```bash
+dash-cli -testnet decodescript 522102eacba539d92eb88d4e73bb32\
+749d79f53f6e8d7947ac40a71bd4b26c13b6ec29210311f97539724e0de38fb1\
+ff79f5148e5202459d06ed07193ab18c730274fd0d882103251f25a5c0291446\
+d801ba6df122f67a7dd06c60a9b332b7b29cc94f3b8f57d053ae
+```
+
+Result:
+
+```json
+{
+ "asm": "2 02eacba539d92eb88d4e73bb32749d79f53f6e8d7947ac40a71bd4b26c13b6ec29 0311f97539724e0de38fb1ff79f5148e5202459d06ed07193ab18c730274fd0d88 03251f25a5c0291446d801ba6df122f67a7dd06c60a9b332b7b29cc94f3b8f57d0 3 OP_CHECKMULTISIG",
+ "type": "multisig",
+ "p2sh": "8uJLxDxk2gEMbidF5vT8XLS2UCgQmVcroW"
+}
+```
+
+_See also:_
+
+* [CreateMultiSig](../api/remote-procedure-calls-util.md#createmultisig): creates a P2SH multi-signature address.
+
+## FinalizePSBT
+
+The [`finalizepsbt` RPC](../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. This can broadcast with `sendrawtransaction`. Otherwise, a PSBT will be created which has the `final_scriptSig` fields filled for inputs that are complete.
+Implements the Finalizer and Extractor roles.
+
+_Parameter #1---psbt_
+
+| Name | Type | Presence | Description |
+| ---- | ------ | -------- | ------------------------- |
+| psbt | string | Required | A base64 string of a PSBT |
+
+_Parameter #2---extract_
+
+| Name | Type | Presence | Description |
+| ---- | ---- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
+| data | bool | Optional | If true, and the transaction is complete, extract and return the complete transaction in normal network serialization instead of the PSBT. |
+
+_Result---psbt_
+
+| Name | Type | Presence | Description |
+| -------------- | ------------ | ----------------------- | ---------------------------------------------------------------- |
+| → psbt | string | Optional (0 or 1) | The base64-encoded partially signed transaction if not extracted (present if `complete` is `false`)|
+| → hex | string (hex) | Optional (0 or 1) | The hex-encoded network transaction if extracted (present if `complete` is `true`) |
+| → complete | bool | Required (Exactly 1) | If the transaction has a complete set of signatures |
+
+_Example from Dash Core 18.0.0_
+
+```bash
+dash-cli -testnet finalizepsbt cHNidP8BAEICAAAAAXgRxzbShUlivVFKgoLyhk0RCCYLZKCYTl/tYRd+yGImAAAAAAD/////AQAAAAAAAAAABmoEAAECAwAAAAAAAQDhAgAAAAGUi7dQLNEVUajA9jcftG9LmDpAZzvVlgQVcitxL418QgEAAABqRzBEAiBP5PxIjJVfKGxSyEjseVC0DsR24bQ0xq3WhrR0vd4JqQIgYiLSkf2do0FAiqikcg9aaVmZdxWh3fgYfnUne2v8rn4BIQPGfYaUQxWDiup+yA05C10JuRtiSDNw1Jedpcz3p993qf7///8CtOfGCQAAAAAZdqkUzvxGSQTAOBTAGQbhl9x1mnReR+6IrADKmjsAAAAAGXapFD75vL6S93yPrdBWbup/+NR/Ir3giKxVSAgAAQdqRzBEAiAF1fgBDg2M/WAeYTYzCkEiSSrDVzcYoe8wwrw/MbdgOQIgJzoYBQ9hAm6jqk2cLFitUd1/iL1ku8w9unadjNfsCdoBIQJn2pETmk8U2X6veADqnny5/6j8Iy7Oizij0SeJHm9x6AAA
+```
+
+Result:
+
+```json
+{
+ "hex": "02000000017811c736d2854962bd514a8282f2864d1108260b64a0984e5fed61177ec86226000000006a473044022005d5f8010e0d8cfd601e6136330a4122492ac3573718a1ef30c2bc3f31b760390220273a18050f61026ea3aa4d9c2c58ad51dd7f88bd64bbcc3dba769d8cd7ec09da01210267da91139a4f14d97eaf7800ea9e7cb9ffa8fc232ece8b38a3d127891e6f71e8ffffffff010000000000000000066a040001020300000000",
+ "complete": true
+}
+```
+
+_See also:_
+
+* [CreatePSBT](../api/remote-procedure-calls-raw-transactions.md#createpsbt): creates a transaction in the Partially Signed Transaction (PST) format.
+* [CombinePSBT](../api/remote-procedure-calls-raw-transactions.md#combinepsbt): combine multiple partially-signed Dash transactions into one transaction.
+* [ConvertToPSBT](../api/remote-procedure-calls-raw-transactions.md#converttopsbt): converts a network serialized transaction to a PSBT.
+* [DecodePSBT](../api/remote-procedure-calls-raw-transactions.md#decodepsbt): returns a JSON object representing the serialized, base64-encoded partially signed Dash transaction.
+* [WalletCreateFundedPSBT](../api/remote-procedure-calls-wallet.md#walletcreatefundedpsbt): creates and funds a transaction in the Partially Signed Transaction (PST) format.
+* [WalletProcessPSBT](../api/remote-procedure-calls-wallet.md#walletprocesspsbt): updates a PSBT with input information from a wallet and then allows the signing of inputs.
+
+## FundRawTransaction
+
+:::{note}
+Requires [wallet](../resources/glossary.md#wallet) support (**unavailable on masternodes**).
+:::
+
+The [`fundrawtransaction` RPC](../api/remote-procedure-calls-raw-transactions.md#fundrawtransaction) adds inputs to a transaction until it has enough in value to meet its out value. This will not modify existing inputs, and will add one change output to the outputs.
+Note that inputs which were signed may need to be resigned after completion since in/outputs have been added. The inputs added will not be signed, use signrawtransaction for that.
+All existing inputs must have their previous output transaction be in the wallet.
+
+_Parameter #1---The hex string of the raw transaction_
+
+| Name | Type | Presence | Description |
+| ---------- | ------------ | ----------------------- | ------------------------------------- |
+| Hex string | string (hex) | Required (exactly 1) | The hex string of the raw transaction |
+
+_Parameter #2---Additional options_
+
+Note: For backwards compatibility, passing in a `true` instead of an object will result in `{"includeWatching": true}`.
+
+| Name | Type | Presence | Description|
+| ------------------------------ | ------------------ | ----------------------- | ---------- |
+| Options | Object | Optional (0 or 1) | Additional options. For backward compatibility: passing in a true instead of an object will result in {"includeWatching":true} |
+| → `add_inputs` | bool | Optional (0 or 1) | If inputs are specified, automatically include more if they are not enough. Defaults to `true`. |
+| → `changeAddress` | string | Optional (0 or 1) | The address to receive the change. If not set, the address is chosen from address pool |
+| → `changePosition` | nummeric (int) | Optional (0 or 1) | The index of the change output. If not set, the change position is randomly chosen |
+| `includeWatching` | bool | Optional (0 or 1) | Inputs from watch-only addresses are also considered. The default is `false` for non-watching-only wallets and `true` for watching-only wallets |
+| → `lockUnspent` | bool | Optional (0 or 1) | The selected outputs are locked after running the rpc call. The default is `false`. This applies to manually selected coins also since Dash Core 20.1.0. |
+| → `feeRate` | numeric (bitcoins) | Optional (0 or 1) | The specific feerate you are willing to pay (BTC per KB). If not set, the wallet determines the fee |
+| → `subtractFeeFromOutputs` | array | Optional (0 or 1) | A json array of integers. The fee will be equally deducted from the amount of each specified output. The outputs are specified by their zero-based index, before any change output is added. |
+| → → Output index | numeric (int) | Optional (0 or more) | A output index number (vout) from which the fee should be subtracted. If multiple vouts are provided, the total fee will be divided by the number of vouts listed and each vout will have that amount subtracted from it. |
+| → `conf_target` | numberic (int) | Optional (0 or 1) | Confirmation target (in blocks), or fee rate (for DASH/kB or duff/B estimate modes) |
+| → `estimate_mode` | string | Optional (0 or 1) | The fee estimate mode, must be one of (case insensitive): `unset` `economical` `conservative` `DASH/kB` `duff/B` |
+
+_Result---information about the created transaction_
+
+| Name | Type | Presence | Description |
+| --------------- | ------------------ | ----------------------- | -------------------------------------------------------------------------------------- |
+| `result` | object | Required (exactly 1) | An object including information about the created transaction |
+| → hex | string (hex) | Required (Exactly 1) | The resulting unsigned raw transaction in serialized transaction format encoded as hex |
+| → fee | numeric (bitcoins) | Required (Exactly 1) | Fee in BTC the resulting transaction pays |
+| → changepos | numeric (int) | Required (Exactly 1) | The position of the added change output, or `-1` if no change output was added |
+
+_Example from Dash Core 0.12.2_
+
+```bash
+dash-cli -testnet fundrawtransaction 01000000000100205fa012000000\
+1976a914485485425fa99504ec1638ac4213f3cfc9f32ef388ac00000000
+```
+
+Result:
+
+```text
+{
+ "hex": "01000000016b490886c0198b028c6c5cb145c4eb3b1055a224a7a105aadeff41b69ec91e060100000000feffffff023e1207bf010000001976a914bd652a167e7ad674f7815dc549bea9c57a7f919b88ac00205fa0120000001976a914485485425fa99504ec1638ac4213f3cfc9f32ef388ac00000000",
+ "changepos": 0,
+ "fee": 0.00000226
+}
+```
+
+_See also:_
+
+* [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.
+* [DecodeRawTransaction](../api/remote-procedure-calls-raw-transactions.md#decoderawtransaction): decodes a serialized transaction hex string into a JSON object describing the transaction.
+* [SignRawTransactionWithKey](#signrawtransactionwithkey): signs inputs for a transaction in the serialized transaction format using private keys provided in the call.
+* [SendRawTransaction](../api/remote-procedure-calls-raw-transactions.md#sendrawtransaction): validates a transaction and broadcasts it to the peer-to-peer network.
+* [Serialized Transaction Format](../reference/transactions-raw-transaction-format.md)
+
+```{eval-rst}
+.. _api-rpc-raw-transactions-getassetunlockstatuses:
+```
+
+## GetAssetUnlockStatuses
+
+The [`getassetunlockstatuses` RPC](../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.
+
+_Parameters_
+
+| Name | Type | Presence | Description |
+| ------- | ----- | -------- | ----------- |
+| Indexes | array | Required | An array of Asset Unlock indexes (no more than 100). Each element is a numeric Asset Unlock index. |
+| height | numeric | Optional (0 or 1) | The maximum block height to check. If not specified, the chain's tip is used. |
+
+_Result---Status of the Asset Unlock indexes_
+
+| Name | Type | Presence | Description |
+| ------ | ----- | ----------------------- | ----------- |
+| Result | array | Required (Exactly 1) | An array with the status of each Asset Unlock index. Each element in the array is a JSON object containing the index and its status. |
+| → Index data | object | Required (1 or more) | Details for an Asset Unlock index |
+| → → index | numeric | Required (Exactly 1) | The Asset Unlock index |
+| → → status | string | Required (Exactly 1) | Status of the Asset Unlock index. The possible outcomes per each index are: - `chainlocked`: If the Asset Unlock index is mined on a ChainLocked block or up to the given block height. - `mined`: If no ChainLock information is available for the mined Asset Unlock index. - `mempooled`: If the Asset Unlock index is in the mempool. - `unknown`: If none of the above are valid. Note: If a specific block height is passed on request, then only `chainlocked` and `unknown` outcomes are possible. |
+
+_Example from Dash Core 20.1.0_
+
+```bash
+dash-cli getassetunlockstatuses '["1", "2"]'
+```
+
+Result:
+
+```json
+[
+ {
+ "index": 1,
+ "status": "chainlocked"
+ },
+ {
+ "index": 2,
+ "status": "mempooled"
+ }
+]
+```
+
+_See also: none_
+
+```{eval-rst}
+.. _api-rpc-raw-transactions-getrawtransaction:
+```
+
+## GetRawTransaction
+
+The [`getrawtransaction` RPC](../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.
+
+Note: By default this function only works for mempool transactions. When called with a blockhash argument, getrawtransaction will return the transaction if the specified block is available and the transaction is found in that block. When called without a blockhash argument, getrawtransaction will return the transaction if it is in the mempool, or if `-txindex` is enabled and the transaction is in a block in the blockchain. Use the [`gettransaction` RPC](../api/remote-procedure-calls-wallet.md#gettransaction) for wallet transactions.
+
+As of Dash Core 18.0.0, transactions with unspent outputs will no longer be included unless `-txindex` is enabled.
+
+:::{note}
+If you begin using `txindex=1` after downloading the block chain, you must rebuild your indexes by starting Dash Core with the option `-reindex`. This may take several hours to complete, during which time your node will not process new blocks or transactions. This reindex only needs to be done once.
+:::
+
+_Parameter #1---the TXID of the transaction to get_
+
+| Name | Type | Presence | Description |
+| ---- | ------------ | ----------------------- | -------------------------------------------------------------------- |
+| TXID | string (hex) | Required (exactly 1) | The TXID of the transaction to get, encoded as hex in RPC byte order |
+
+_Parameter #2---whether to get the serialized or decoded transaction_
+
+| Name | Type | Presence | Description |
+| ------- | ---- | -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| Verbose | bool | Optional (0 or 1) | _Updated in Dash Core 0.12.3 / Bitcoin Core 0.14.0_
Set to `false` (the default) to return the serialized transaction as hex. Set to `true` to return a decoded transaction in JSON. Before 0.12.3, use `0` and `1`, respectively |
+
+_Parameter #3---hash of a block to look in for the transaction_
+
+| Name | Type | Presence | Description |
+| ---------- | ---- | -------------------- | --------------------------------------------------------------------------------------------- |
+| 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`_
+
+| Name | Type | Presence | Description |
+| -------- | ---- | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| `result` | null | Required (exactly 1) | If the transaction wasn't found, the result will be JSON `null`. This can occur because the transaction doesn't exist in the block chain or memory pool, or because it isn't part of the transaction index. See the Dash Core `-help` entry for `-txindex` |
+
+```{eval-rst}
+.. _rpc-raw-txs-getrawtx-hex:
+```
+
+_Result (if verbose=`false`)---the serialized transaction_
+
+| Name | Type | Presence | Description |
+| -------- | ------------ | ----------------------- | ------------------------------------------------------------------------------------ |
+| `result` | string (hex) | Required (exactly 1) | If the transaction was found, this will be the serialized transaction encoded as hex |
+
+```{eval-rst}
+.. _rpc-raw-txs-getrawtx-decoded:
+```
+
+_Result (if verbose=`true`)---the decoded transaction_
+
+| Name | Type | Presence | Description |
+| --------------------------- | -------------- | ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `result` | object | Required (exactly 1) | If the transaction was found, this will be an object describing it |
+| → `in_active_chain` | bool | Optional (0 or 1) | ) Whether specified block is in the active chain or not (only present with explicit `blockhash` argument) |
+| → `txid` | string (hex) | Required (exactly 1) | The transaction's TXID encoded as hex in RPC byte order |
+| → `size` | number (int) | Required (exactly 1) | _Added in Bitcoin Core 0.12.0_
The serialized transaction size |
+| → `version` | number (int) | Required (exactly 1) | The transaction format version number |
+| → `type` | number (int) | Required (exactly 1) | _Added in Dash Core 0.13.0.0_
The transaction format type |
+| → `locktime` | number (int) | Required (exactly 1) | The transaction's locktime: either a Unix epoch date or block height; see the [locktime parsing rules](../guide/transactions-locktime-and-sequence-number.md#locktime-parsing-rules) |
+| → `vin` | array | Required (exactly 1) | An array of objects with each object being an input vector (vin) for this transaction. Input objects will have the same order within the array as they have in the transaction, so the first input listed will be input 0 |
+| → → Input | object | Required (1 or more) | An object describing one of this transaction's inputs. May be a regular input or a coinbase |
+| → → → `txid` | string | Optional (0 or 1) | The TXID of the outpoint being spent, encoded as hex in RPC byte order. Not present if this is a coinbase transaction |
+| → → → `vout` | number (int) | Optional (0 or 1) | The output index number (vout) of the outpoint being spent. The first output in a transaction has an index of `0`. Not present if this is a coinbase transaction |
+| → → → `scriptSig` | object | Optional (0 or 1) | An object describing the signature script of this input. Not present if this is a coinbase transaction |
+| → → → → `asm` | string | Required (exactly 1) | The signature script in decoded form with non-data-pushing opcodes listed |
+| → → → → `hex` | string (hex) | Required (exactly 1) | The signature script encoded as hex |
+| → → → `coinbase` | string (hex) | Optional (0 or 1) | The coinbase (similar to the hex field of a scriptSig) encoded as hex. Only present if this is a coinbase transaction |
+| → → → `value` | number (Dash) | Optional (exactly 1) | The number of Dash paid to this output. May be `0`.
Only present if `spentindex` enabled |
+| → → → `valueSat` | number (duffs) | Optional (exactly 1) | The number of duffs paid to this output. May be `0`.
Only present if `spentindex` enabled |
+| → → → → `addresses` | string : array | Optional (0 or 1) | The P2PKH or P2SH addresses used in this transaction, or the computed P2PKH address of any pubkeys in this transaction. This array will not be returned for `nulldata` or `nonstandard` script types.
Only present if `spentindex` enabled |
+| → → → → → Address | string | Required (1 or more) | A P2PKH or P2SH address |
+| → → → `sequence` | number (int) | Required (exactly 1) | The input sequence number |
+| → `vout` | array | Required (exactly 1) | An array of objects each describing an output vector (vout) for this transaction. Output objects will have the same order within the array as they have in the transaction, so the first output listed will be output 0 |
+| → → Output | object | Required (1 or more) | An object describing one of this transaction's outputs |
+| → → → `value` | number (Dash) | Required (exactly 1) | The number of Dash paid to this output. May be `0` |
+| → → → `valueSat` | number (duffs) | Required (exactly 1) | The number of duffs paid to this output. May be `0` |
+| → → → `n` | number (int) | Required (exactly 1) | The output index number of this output within this transaction |
+| → → → `scriptPubKey` | object | Required (exactly 1) | An object describing the pubkey script |
+| → → → → `asm` | string | Required (exactly 1) | The pubkey script in decoded form with non-data-pushing opcodes listed |
+| → → → → `hex` | string (hex) | Required (exactly 1) | The pubkey script encoded as hex |
+| → → → → `reqSigs` | number (int) | Optional (0 or 1) | **Deprecated in Dash Core 21.0.0** (returned only if config option -deprecatedrpc=addresses is passed)
The number of signatures required; this is always `1` for P2PK, P2PKH, and P2SH (including P2SH multisig because the redeem script is not available in the pubkey script). It may be greater than 1 for bare multisig. This value will not be returned for `nulldata` or `nonstandard` script types (see the `type` key below) |
+| → → → → `type` | string | Optional (0 or 1) | The type of script. This will be one of the following: • `pubkey` for a P2PK script • `pubkeyhash` for a P2PKH script • `scripthash` for a P2SH script • `multisig` for a bare multisig script • `nulldata` for nulldata scripts • `nonstandard` for unknown scripts |
+| → → → `address` | string | Optional (0 or 1) | Dash address (only if a well-defined address exists) |
+| → → → → `addresses` | string : array | Optional (0 or 1) | **Deprecated in Dash Core 21.0.0** (returned only if config option -deprecatedrpc=addresses is passed)
The P2PKH or P2SH addresses used in this transaction, or the computed P2PKH address of any pubkeys in this transaction. This array will not be returned for `nulldata` or `nonstandard` script types |
+| → → → → → Address | string | Required (1 or more) | A P2PKH or P2SH address |
+| → `extraPayloadSize` | number (int) | Optional (0 or 1) | _Added in Dash Core 0.13.0.0_
Size of the DIP2 extra payload. Only present if it's a DIP2 special transaction |
+| → `extraPayload` | string (hex) | Optional (0 or 1) | _Added in Dash Core 0.13.0.0_
Hex encoded DIP2 extra payload data. Only present if it's a DIP2 special transaction |
+| → `hex` | string (hex) | Required (exactly 1) | The serialized, hex-encoded data for the provided `txid` |
+| → `blockhash` | string (hex) | Optional (0 or 1) | If the transaction has been included in a block on the local best block chain, this is the hash of that block encoded as hex in RPC byte order |
+| → `height` | number (int) | Optional (0 or 1) | If the transaction has been included in a block on the local best block chain, this is the block height where the transaction was mined. Otherwise, this is `-1`. Not shown for mempool transactions. |
+| → `confirmations` | number (int) | Optional (0 or 1) | If the transaction has been included in a block on the local best block chain, this is how many confirmations it has. Otherwise, this is `0`. Not shown for mempool transactions. |
+| → `time` | number (int) | Optional (0 or 1) | If the transaction has been included in a block on the local best block chain, this is the block header time of that block (may be in the future) |
+| → `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) | 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_
+
+A classical transaction in serialized transaction format:
+
+```bash
+dash-cli getrawtransaction \
+ 88a3fe6bf2ab4425dbf57d75ce761efa2e45556ec36b4fd5b6af6c00f01ebd63
+```
+
+Result (wrapped):
+
+```text
+02000000016634e15fe22fe84554833f109916fced5af30fac0849a211f17f326\
+162280f14010000006a47304402207b8f61bebe3560b6ef70de3e10b59bdc6093\
+1d09cf0626026bfe3064dcfcf1c00220048ad98398cb294fa19335110db3ce5a4\
+66b74cbbf234bf2b4855b264a03ef790121027b90f229e7027758f0c8b39d2d48\
+5b88ed5b63b34e58e0dad2a07e3e8eb03373feffffff0278f5110400000000197\
+6a9148907e625c343ac9c6b56e8180f73af1d23350d0c88acd007290e00000000\
+1976a914dd01754e43690f41feef2cc7974bc2e5101e9f2788accf880d00
+```
+
+Get the same transaction in JSON:
+
+```bash
+dash-cli getrawtransaction \
+88a3fe6bf2ab4425dbf57d75ce761efa2e45556ec36b4fd5b6af6c00f01ebd63 \
+1
+```
+
+Result:
+
+```json
+{
+ "txid": "88a3fe6bf2ab4425dbf57d75ce761efa2e45556ec36b4fd5b6af6c00f01ebd63",
+ "version": 2,
+ "type": 0,
+ "size": 225,
+ "locktime": 886991,
+ "vin": [
+ {
+ "txid": "140f286261327ff111a24908ac0ff35aedfc1699103f835445e82fe25fe13466",
+ "vout": 1,
+ "scriptSig": {
+ "asm": "304402207b8f61bebe3560b6ef70de3e10b59bdc60931d09cf0626026bfe3064dcfcf1c00220048ad98398cb294fa19335110db3ce5a466b74cbbf234bf2b4855b264a03ef79[ALL] 027b90f229e7027758f0c8b39d2d485b88ed5b63b34e58e0dad2a07e3e8eb03373",
+ "hex": "47304402207b8f61bebe3560b6ef70de3e10b59bdc60931d09cf0626026bfe3064dcfcf1c00220048ad98398cb294fa19335110db3ce5a466b74cbbf234bf2b4855b264a03ef790121027b90f229e7027758f0c8b39d2d485b88ed5b63b34e58e0dad2a07e3e8eb03373"
+ },
+ "value": 3.05867613,
+ "valueSat": 305867613,
+ "address": "yeuA2vwH1Zba2pGs3NaeJh53ZuW97h2jXJ",
+ "sequence": 4294967294
+ }
+ ],
+ "vout": [
+ {
+ "value": 0.68285816,
+ "valueSat": 68285816,
+ "n": 0,
+ "scriptPubKey": {
+ "asm": "OP_DUP OP_HASH160 8907e625c343ac9c6b56e8180f73af1d23350d0c OP_EQUALVERIFY OP_CHECKSIG",
+ "hex": "76a9148907e625c343ac9c6b56e8180f73af1d23350d0c88ac",
+ "address": "yYoztKLNFLvbNYAPMUGoa5iHz5SBtNLEK8",
+ "type": "pubkeyhash"
+ },
+ "spentTxId": "194e514c9814f7e34be3f8c696fff5871bda40bef2f87be1ff8075f691ef6e0b",
+ "spentIndex": 0,
+ "spentHeight": 887750
+ },
+ {
+ "value": 2.37570000,
+ "valueSat": 237570000,
+ "n": 1,
+ "scriptPubKey": {
+ "asm": "OP_DUP OP_HASH160 dd01754e43690f41feef2cc7974bc2e5101e9f27 OP_EQUALVERIFY OP_CHECKSIG",
+ "hex": "76a914dd01754e43690f41feef2cc7974bc2e5101e9f2788ac",
+ "address": "ygU1vv8a2fhiM2gYUF1GjQAcjxgZUKY5MD",
+ "type": "pubkeyhash"
+ },
+ "spentTxId": "b9748455ee0bc7d3142a621b7a1f41d1b03a40283922d54cd4d168c16d20102a",
+ "spentIndex": 0,
+ "spentHeight": 888363
+ }
+ ],
+ "hex": "02000000016634e15fe22fe84554833f109916fced5af30fac0849a211f17f326162280f14010000006a47304402207b8f61bebe3560b6ef70de3e10b59bdc60931d09cf0626026bfe3064dcfcf1c00220048ad98398cb294fa19335110db3ce5a466b74cbbf234bf2b4855b264a03ef790121027b90f229e7027758f0c8b39d2d485b88ed5b63b34e58e0dad2a07e3e8eb03373feffffff0278f51104000000001976a9148907e625c343ac9c6b56e8180f73af1d23350d0c88acd007290e000000001976a914dd01754e43690f41feef2cc7974bc2e5101e9f2788accf880d00",
+ "blockhash": "0000009f3480f5e2b6821af57ccbfeb064d9e18b6e9e669aad238f2b0059df1a",
+ "height": 886992,
+ "confirmations": 192439,
+ "time": 1692025132,
+ "blocktime": 1692025132,
+ "instantlock": true,
+ "instantlock_internal": false,
+ "chainlock": true
+}
+```
+
+A special transaction (CbTx) in serialized transaction format:
+
+```bash
+dash-cli getrawtransaction \
+ 25632685ed0d7286901a80961c924c1ddd952e764754dbd8b40d0956413c8b56
+```
+
+Result (wrapped):
+
+```text
+030005000100000000000000000000000000000000000000000000000000000000000\
+00000ffffffff2703ae50011a4d696e656420627920416e74506f6f6c2021000b0120\
+1da9196f0000000007000000ffffffff02809e4730000000001976a914cbd7bfcc503\
+51180132b2c0698cb90ad74c473c788ac809e4730000000001976a91488a060bc2dfe\
+05780ae4dcb6c98b12436c35a93988ac00000000460200ae50010078e5c08b3996088\
+7bf95185c381bdb719e60b6925fa12af78a8824fade927387c757acb6bac63da84f92\
+45e20cfd5d830382ac634d434725ca6349ab5db920a3
+```
+
+Get the same transaction in JSON:
+
+```bash
+dash-cli getrawtransaction \
+25632685ed0d7286901a80961c924c1ddd952e764754dbd8b40d0956413c8b56 \
+1
+```
+
+Result:
+
+```json
+{
+ "txid": "25632685ed0d7286901a80961c924c1ddd952e764754dbd8b40d0956413c8b56",
+ "version": 3,
+ "type": 5,
+ "size": 229,
+ "locktime": 0,
+ "vin": [
+ {
+ "coinbase": "03ae50011a4d696e656420627920416e74506f6f6c2021000b01201da9196f0000000007000000",
+ "sequence": 4294967295
+ }
+ ],
+ "vout": [
+ {
+ "value": 8.10000000,
+ "valueSat": 810000000,
+ "n": 0,
+ "scriptPubKey": {
+ "asm": "OP_DUP OP_HASH160 cbd7bfcc50351180132b2c0698cb90ad74c473c7 OP_EQUALVERIFY OP_CHECKSIG",
+ "hex": "76a914cbd7bfcc50351180132b2c0698cb90ad74c473c788ac",
+ "address": "yeuGUfPMrbEqAS2Pw1wonYgEPbM4LAA9LK",
+ "type": "pubkeyhash"
+ },
+ "spentTxId": "1790b286922d1a439bdc056939bc902a222f9d66ee63d8427805617eedf835bd",
+ "spentIndex": 83,
+ "spentHeight": 94680
+ },
+ {
+ "value": 8.10000000,
+ "valueSat": 810000000,
+ "n": 1,
+ "scriptPubKey": {
+ "asm": "OP_DUP OP_HASH160 88a060bc2dfe05780ae4dcb6c98b12436c35a939 OP_EQUALVERIFY OP_CHECKSIG",
+ "hex": "76a91488a060bc2dfe05780ae4dcb6c98b12436c35a93988ac",
+ "address": "yYmrsYP3XYMZr1cGtha3QzmuNB1C7CfyhV",
+ "type": "pubkeyhash"
+ }
+ }
+ ],
+ "extraPayloadSize": 70,
+ "extraPayload": "0200ae50010078e5c08b39960887bf95185c381bdb719e60b6925fa12af78a8824fade927387c757acb6bac63da84f9245e20cfd5d830382ac634d434725ca6349ab5db920a3",
+ "cbTx": {
+ "version": 2,
+ "height": 86190,
+ "merkleRootMNList": "877392defa24888af72aa15f92b6609e71db1b385c1895bf870896398bc0e578",
+ "merkleRootQuorums": "a320b95dab4963ca2547434d63ac8203835dfd0ce245924fa83dc6bab6ac57c7"
+ },
+ "hex": "03000500010000000000000000000000000000000000000000000000000000000000000000ffffffff2703ae50011a4d696e656420627920416e74506f6f6c2021000b01201da9196f0000000007000000ffffffff02809e4730000000001976a914cbd7bfcc50351180132b2c0698cb90ad74c473c788ac809e4730000000001976a91488a060bc2dfe05780ae4dcb6c98b12436c35a93988ac00000000460200ae50010078e5c08b39960887bf95185c381bdb719e60b6925fa12af78a8824fade927387c757acb6bac63da84f9245e20cfd5d830382ac634d434725ca6349ab5db920a3",
+ "blockhash": "00000000007b0fb99e36713cf08012482478ee496e6dcb4007ad2e806306e62b",
+ "height": 86190,
+ "confirmations": 993241,
+ "time": 1556114577,
+ "blocktime": 1556114577,
+ "instantlock": true,
+ "instantlock_internal": false,
+ "chainlock": true
+}
+```
+
+_See also:_
+
+* [GetRawTransactionMulti](../api/remote-procedure-calls-raw-transactions.md#getrawtransactionmulti): gets hex-encoded serialized transactions or a JSON object describing the transactions.
+* [GetSpecialTxes](../api/remote-procedure-calls-blockchain.md#getspecialtxes): returns an array of special transactions found in the specified block
+* [GetTransaction](../api/remote-procedure-calls-wallet.md#gettransaction): gets detailed information about an in-wallet transaction.
+
+## GetRawTransactionMulti
+
+The [`getrawtransactionmulti` RPC](../api/remote-procedure-calls-raw-transactions.md#getrawtransactionmulti) gets hex-encoded serialized transactions or a JSON object describing the transactions. This RPC returns the same type of information as the [`getrawtransaction` RPC](../api/remote-procedure-calls-raw-transactions.md#getrawtransaction).
+
+_Parameter #1---block hashes and transaction hash list_
+
+| Name | Type | Presence | Description |
+| ---- | ------------ | ----------------------- | ----------- |
+| Transactions | object | Required (exactly 1) | A JSON object with block hashes as keys and lists of transaction hashes as values (no more than 100 in total) |
+|→ Block Hash | array | Required (1 or more) | The block hash and the list of transaction ids to fetch. Note: if a block hash of `0` is provided, mempool transactions will be returned. |
+|→ → Transaction ID | string | Required (1 or more) | A transaction ID |
+
+_Parameter #2---whether to get the serialized or decoded transaction_
+
+| Name | Type | Presence | Description |
+| ------- | ---- | -------------------- | ----------- |
+| Verbose | bool | Optional (0 or 1) | Set to `false` (the default) to return the serialized transaction as hex. Set to `true` to return a decoded transaction in JSON. |
+
+_Result (if transactions not found)---`null`_
+
+| Name | Type | Presence | Description |
+| -------- | ---- | ----------------------- | ----------- |
+| `result` | null | Required (exactly 1) | If no transactions were found, the result will be JSON `null`. This can occur because the transactions don't exist in the block chain or memory pool, or because it isn't part of the transaction index. See the Dash Core `-help` entry for `-txindex` |
+
+_Result (if verbose=`false`)---the serialized transactions_
+
+| Name | Type | Presence | Description |
+| -------- | ------------ | ----------------------- | ----------- |
+| `result` | object | Required (exactly 1) | If the transaction was found, this will be an object containing the serialized transaction encoded as hex. |
+|→ TXID / Raw tx | string:string | Required (1 or more) | A key/value pair with the transaction ID (key) and raw transaction data (value). See the [`getrawtransaction` RPC](../api/remote-procedure-calls-raw-transactions.md#getrawtransaction) for an example of the hex transaction data. |
+
+_Result (if verbose=`true`)---the decoded transactions_
+
+| Name | Type | Presence | Description |
+| --------------------------- | -------------- | ----------------------- | ----------- |
+| `result` | object | Required (exactly 1) | If the transaction was found, this will be an object describing it |
+|→ TXID / Decoded tx | string:string | Required (1 or more) | A key/value pair with the transaction ID (key) and decoded transaction data represented in JSON (value). See the [`getrawtransaction` RPC](../api/remote-procedure-calls-raw-transactions.md#getrawtransaction) for an example of the decoded transaction data. |
+
+_Examples from Dash Core 20.1.0_
+
+Transactions in serialized transaction format:
+
+```bash
+dash-cli -testnet getrawtransactionmulti '{"0000014b04deb0fe0884d3ca81a6239016c2a4838cd4b34494858630e457c62c": ["0667ab03bebb827057fcd55285d68dc10f30ef07dd04d1468c9f25888c22333c", "5c278dd4ca54b9c14789357f0311bcbf1b6d3182bcc76d229cb15cfbe6255ed0"]}' false
+```
+
+Result:
+
+```json
+{
+ "0667ab03bebb827057fcd55285d68dc10f30ef07dd04d1468c9f25888c22333c": "03000500010000000000000000000000000000000000000000000000000000000000000000ffffffff060373ad0e0101ffffffff0283706e04000000001976a914c69a0bda7daaae481be8def95e5f347a1d00a4b488ac89514b0d000000001976a91464f2b2b84f62d68a2cd7f7f5fb2b5aa75ef716d788ac00000000af030073ad0e00c63f1ca6d2a0570754d3851f70fae6215fa7741b3d4fd1d988e35add12b22827731b17f8cc2324ca927164dc67064a73aed41a19f418b05dcd57415a627ed9b90081a911644ec88204526c31b16666ba3f514caaaef72ce5bbaa4babb19f35bdd4ef1c7adefd414879f5805526fb9b9cd01566dc35d9599ed58e679373666e938ea0214c14368673f4e5b9766686b6d147ec567c4cd004766a0fa8f2280ab5494e9eca329808000000",
+ "5c278dd4ca54b9c14789357f0311bcbf1b6d3182bcc76d229cb15cfbe6255ed0": "03000600000000000000fd4901010073ad0e00030001d0c2ab39e1fddbcdee48d2c2c2e807586603d6ff1b31189e46b95849eb00000032ffffffffffff0332ffffffffffff03a1f0b0ce837010f234e3b5906ac171adf25b46fb535e7de4831128c19dc9939a71039d227e355a9b47d7612dd0a3a3d51c588284eb43a9ba7b4f62589db5a16ae1b50305a16093fe5a7c8d9c6ab35e4e97021398ecabbf90ab1199e9c649c8abe65af1a77de449980720775ec2efda5cb1b0e23a002f32a2825f02b070c627e90220bb30a37dd4072ffebffeaa81ba5ca2335137a76da711c86b11666b7e8794846caf4170f9bb99b31f9837408f9f13a5b548cda8a6bf6c980f0351584079b5e4c710123217e7876c4bd2f935b6f098306cd75c07231780cd68e27e97283e37180372cd266ebba1e0c514bd6c304ae58c71c9b1653f4df6bc33553fa22adde4429cbc3ecb9eda76bd4d256eabbb98d4"
+}
+```
+
+_See also:_
+
+* [GetRawTransaction](../api/remote-procedure-calls-raw-transactions.md#getrawtransaction): gets a hex-encoded serialized transaction or a JSON object describing the transaction.
+* [GetSpecialTxes](../api/remote-procedure-calls-blockchain.md#getspecialtxes): returns an array of special transactions found in the specified block
+* [GetTransaction](../api/remote-procedure-calls-wallet.md#gettransaction): gets detailed information about an in-wallet transaction.
+
+## GetTxChainlocks
+
+The [`gettxchainlocks` RPC](../api/remote-procedure-calls-raw-transactions.md#gettxchainlocks) returns the block height each transaction was mined at and indicates whether it is in the mempool, ChainLocked, or neither.
+
+_Parameter #1---Transaction IDs_
+
+| Name | Type | Presence | Description |
+| ------ | ------ | ----------------------- | ----------- |
+| `txids` | array | Required (exactly 1) | A JSON array of up to 100 transaction IDs |
+| → Transaction ID | string | Required (1 to 100) | A transaction hash |
+
+_Result---transaction information_
+
+| Name | Type | Presence | Description |
+| -------------------- | ------- | ----------------------- | ----------- |
+| `result` | array | Required (exactly 1) | An array of objects providing transaction information for each transaction ID in the input array. |
+| → Transaction info | object | Optional (0 or more) | An object containting transaction details |
+| → `height` | number | Required (exactly 1) | Height of the block containing the transaction (-1 if the transaction is not in a block) |
+| → `chainlock` | bool | Required (exactly 1) | ChainLock status for the block containing the transaction |
+| → `mempool` | bool | Required (exactly 1) | **Added in Dash Core 20.1.0**
Mempool status for the transaction |
+
+_Example from Dash Core 20.1.0_
+
+```bash
+dash-cli -testnet gettxchainlocks "[\"d743b1ab2ff390bcc60b4672c293d95909989ca402fdea487f582b22da051ce8\", \"dd7a41e421c4f522353a8f91f077e15a1325518e60812d0c6c9995c1d61ab60e\"]"
+```
+
+Result:
+
+```json
+[
+ {
+ "height": 957527,
+ "chainlock": true,
+ "mempool": false
+ },
+ {
+ "height": -1,
+ "chainlock": false,
+ "mempool": true
+ }
+]
+```
+
+*See also: none*
+
+## JoinPSBTs
+
+The [`joinpsbts` RPC](../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. No input in any of the PSBTs can be in more than one of the PSBTs.
+
+_Parameter #1---Transactions_
+
+| Name | Type | Presence | Description |
+| ------ | ------ | ----------------------- | --------------------------------------------------------------- |
+| `txs` | array | Required (exactly 1) | A JSON array of base64 strings of partially signed transactions |
+| → PSBT | string | Required (1 or more) | A PSBT base64 string |
+
+_Result---the combined raw transaction in base64_
+
+| Name | Type | Presence | Description |
+| ------ | ------ | ----------------------- | ----------------------------------------------------- |
+| Result | string | Required (Exactly 1) | The resulting raw transaction (base64-encoded string) |
+
+_Example from Dash Core 18.0.0_
+
+```bash
+dash-cli -testnet joinpsbts "[\"cHNidP8BAEICAAAAAfisRhf3kqdGJdB8vKvQz81ze9cH6bh0RKZfFTMsXatUAAAAAAD/////AQAAAAAAAAAABmoEAAECAwAAAAAAAAA=\", \"cHNidP8BAEICAAAAAXgRxzbShUlivVFKgoLyhk0RCCYLZKCYTl/tYRd+yGImAAAAAAD/////AQAAAAAAAAAABmoEAAECAwAAAAAAAAA=\"]"
+```
+
+Result:
+
+```
+cHNidP8BAHoCAAAAAvisRhf3kqdGJdB8vKvQz81ze9cH6bh0RKZfFTMsXatUAAAAAAD/////eBHHNtKFSWK9UUqCgvKGTREIJgtkoJhOX+1hF37IYiYAAAAAAP////8CAAAAAAAAAAAGagQAAQIDAAAAAAAAAAAGagQAAQIDAAAAAAAAAAAA
+```
+
+_See also:_
+
+* [CombinePSBT](../api/remote-procedure-calls-raw-transactions.md#combinepsbt): combine multiple partially-signed Dash transactions into one transaction.
+* [ConvertToPSBT](../api/remote-procedure-calls-raw-transactions.md#converttopsbt): converts a network serialized transaction to a PSBT.
+* [DecodePSBT](../api/remote-procedure-calls-raw-transactions.md#decodepsbt): returns a JSON object representing the serialized, base64-encoded partially signed Dash transaction.
+* [FinalizePSBT](../api/remote-procedure-calls-raw-transactions.md#finalizepsbt): finalizes the inputs of a PSBT.
+* [WalletCreateFundedPSBT](../api/remote-procedure-calls-wallet.md#walletcreatefundedpsbt): creates and funds a transaction in the Partially Signed Transaction (PST) format.
+* [WalletProcessPSBT](../api/remote-procedure-calls-wallet.md#walletprocesspsbt): updates a PSBT with input information from a wallet and then allows the signing of inputs.
+
+## SendRawTransaction
+
+The [`sendrawtransaction` RPC](../api/remote-procedure-calls-raw-transactions.md#sendrawtransaction) validates a transaction and broadcasts it to the peer-to-peer network.
+
+_Parameter #1---a serialized transaction to broadcast_
+
+| Name | Type | Presence | Description |
+| ----------- | ------------ | ----------------------- | ------------------------------------------------------ |
+| Transaction | string (hex) | Required (exactly 1) | The serialized transaction to broadcast encoded as hex |
+
+_Parameter #2--whether to allow high fees_
+
+| Name | Type | Presence | Description |
+| ------------ | ------ | -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `maxfeerate` | number | Optional (0 or 1) | Reject transactions whose fee rate is higher than the specified value, expressed in DASH/kB. **Breaking change: parameter changed from `allowhighfees` to `maxfeerate` in Dash Core 18.0.0.** |
+
+_Parameter #3--whether to use InstantSend_
+
+| Name | Type | Presence | Description |
+| --------------- | ---- | -------------------- | ----------------------------------------------- |
+| Use InstantSend | bool | Optional (0 or 1) | _Deprecated and ignored since Dash Core 0.15.0_ |
+
+_Parameter #4--whether to bypass policy limits_
+
+| Name | Type | Presence | Description |
+| ------------- | ---- | -------------------- | -------------------------------- |
+| Bypass Limits | bool | Optional (0 or 1) | Bypass transaction policy limits |
+
+_Result---a TXID or error message_
+
+| Name | Type | Presence | Description |
+| -------- | ----------------- | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| `result` | null/string (hex) | Required (exactly 1) | If the transaction was accepted by the node for broadcast, this will be the TXID of the transaction encoded as hex in RPC byte order. If the transaction was rejected by the node, this will set to `null`, the JSON-RPC error field will be set to a code, and the JSON-RPC message field may contain an informative error message |
+
+_Examples from Dash Core 0.12.2_
+
+Broadcast a signed transaction:
+
+```bash
+dash-cli -testnet sendrawtransaction 01000000016b490886c0198b\
+028c6c5cb145c4eb3b1055a224a7a105aadeff41b69ec91e0601000000694630\
+43022033a61c56fa0867ed67b76b023204a9dc0ee6b0d63305dc5f65fe943354\
+45ff2f021f712f55399d5238fc7146497c431fc4182a1de0b96fc22716e0845f\
+561d542e012102eacba539d92eb88d4e73bb32749d79f53f6e8d7947ac40a71b\
+d4b26c13b6ec29ffffffff0200205fa0120000001976a914485485425fa99504\
+ec1638ac4213f3cfc9f32ef388acc0a8f9be010000001976a914811eacc14db8\
+ebb5b64486dc43400c0226b428a488ac00000000
+```
+
+Result:
+
+```text
+2f124cb550d9967b81914b544dea3783de23e85d67a9816f9bada665ecfe1cd5
+```
+
+_See also:_
+
+* [CombineRawTransaction](../api/remote-procedure-calls-raw-transactions.md#combinerawtransaction): combine multiple partially signed transactions into one transaction.
+* [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.
+* [DecodeRawTransaction](../api/remote-procedure-calls-raw-transactions.md#decoderawtransaction): decodes a serialized transaction hex string into a JSON object describing the transaction.
+* [SignRawTransactionWithKey](#signrawtransactionwithkey): signs inputs for a transaction in the serialized transaction format using private keys provided in the call.
+
+## SignRawTransactionWithKey
+
+The [`signrawtransactionwithkey` RPC](#signrawtransactionwithkey) signs inputs for a transaction in the serialized transaction format using private keys provided in the call.
+
+_Parameter #1---the transaction to sign_
+
+| Name | Type | Presence | Description |
+| ----------- | ------------ | ----------------------- | --------------------------------------------------- |
+| Transaction | string (hex) | Required (exactly 1) | The transaction to sign as a serialized transaction |
+
+_Parameter #2---private keys for signing_
+
+| Name | Type | Presence | Description |
+| ------------ | --------------- | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| Private Keys | array | Required (exactly 1) | An array holding private keys. If any keys are provided, only they will be used to sign the transaction (even if the wallet has other matching keys). If this array is empty or not used, and wallet support is enabled, keys from the wallet will be used |
+| → Key | string (base58) | Required (1 or more) | A private key in base58check format to use to create a signature for this transaction |
+
+_Parameter #3---unspent transaction output details_
+
+| Name | Type | Presence | Description |
+| --------------------- | ------------ | ----------------------- | ------------------------------------------------------------------------------------------------------ |
+| Dependencies | array | Optional (0 or 1) | The previous outputs being spent by this transaction |
+| → Output | object | Optional (0 or more) | An output being spent |
+| → → `txid` | string (hex) | Required (exactly 1) | The TXID of the transaction the output appeared in. The TXID must be encoded in hex in RPC byte order |
+| → → `vout` | number (int) | Required (exactly 1) | The index number of the output (vout) as it appeared in its transaction, with the first output being 0 |
+| → → `scriptPubKey` | string (hex) | Required (exactly 1) | The output's pubkey script encoded as hex |
+| → → `redeemScript` | string (hex) | Optional (0 or 1) | If the pubkey script was a script hash, this must be the corresponding redeem script |
+| → → `amount` | numeric | Required (exactly 1) | The amount of Dash spent |
+
+_Parameter #4---signature hash type_
+
+| Name | Type | Presence | Description |
+| :------ | :----- | :------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| SigHash | string | Optional (0 or 1) | The type of signature hash to use for all of the signatures performed. (You must use separate calls to the [`signrawtransaction` RPC](../api/remote-procedure-calls-raw-transactions.md#signrawtransactionwithkey) if you want to use different signature hash types for different signatures. The allowed values are: `ALL`, `NONE`, `SINGLE`, `ALL \| ANYONECANPAY`,`NONE \| ANYONECANPAY`, and `SINGLE \| ANYONECANPAY` |
+
+_Result---the transaction with any signatures made_
+
+| Name | Type | Presence | Description |
+| --------------- | ------------ | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| `result` | object | Required (exactly 1) | The results of the signature |
+| → `hex` | string (hex) | Required (exactly 1) | The resulting serialized transaction encoded as hex with any signatures made inserted. If no signatures were made, this will be the same transaction provided in parameter #1 |
+| → `complete` | bool | Required (exactly 1) | The value `true` if transaction is fully signed; the value `false` if more signatures are required. Once `true` the transaction can be sent using the [`sendrawtransaction` RPC](#sendrawtransaction). |
+
+_Example from Dash Core 0.17.0_
+
+Sign the raw transaction hex generated from the [`createrawtransaction` RPC](#createrawtransaction):
+
+```bash
+dash-cli -testnet signrawtransactionwithkey 020000000121f39228a11ddf197ac3658e\
+93bd264d0afd927f0cdfc7caeb760537e529c94a0100000000ffffffff01809698000000000019\
+76a914fe64a96d6660e30c433e1189082466a95bdf9ceb88ac00000000 \
+[\"cSxm6ji1SQ7vF1r8QhcsE1AZ42ZJqs5CEAAnD18iV18ZCQ2u3gGa\"]
+```
+
+Result:
+
+```json
+{
+ "hex": "020000000121f39228a11ddf197ac3658e93bd264d0afd927f0cdfc7caeb760537e529c94a010000006b483045022100811c5679ef097b0e5a338fc3cd05ee50e1802680ea8a172d0fd3a81da3c1fc2002204804b18a44e888ac1ee9b6a7cbadc211ecdc30f8c889938c95125206e39554220121025d81ce6581e547dd34194385352053abb17f0246768d75443b25ded5e37d594fffffffff0180969800000000001976a914fe64a96d6660e30c433e1189082466a95bdf9ceb88ac00000000",
+ "complete": true
+}
+```
+
+_See also:_
+
+* [CombineRawTransaction](../api/remote-procedure-calls-raw-transactions.md#combinerawtransaction): combine multiple partially signed transactions into one transaction.
+* [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.
+* [DecodeRawTransaction](../api/remote-procedure-calls-raw-transactions.md#decoderawtransaction): decodes a serialized transaction hex string into a JSON object describing the transaction.
+* [SendRawTransaction](../api/remote-procedure-calls-raw-transactions.md#sendrawtransaction): validates a transaction and broadcasts it to the peer-to-peer network.
+
+## TestMemPoolAccept
+
+The [`testmempoolaccept` RPC](../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.
+
+_Parameter #1---raw txs_
+
+| Name | Type | Presence | Description |
+| -------- | ----- | ----------------------- | ----------- |
+| `rawtxs` | array | Required (exactly 1) | An array of hex strings of raw transactions (the length must be one for now) |
+
+_Parameter #2---set max fee rate_
+
+| Name | Type | Presence | Description |
+| ------------ | ------ | -------------------- | ----------- |
+| `maxfeerate` | number | Optional (0 or 1) | Reject transactions whose fee rate is higher than the specified value, expressed in DASH/kB. Changed from `allowhighfees` in Dash Core 18.0.0. |
+
+_Result---mempool acceptance test results_
+
+| Name | Type | Presence | Description |
+| -------------------- | ------------ | ----------------------- | ----------- |
+| `result` | array | Required (exactly 1) | The result of the mempool acceptance test for each raw transaction in the input array. |
+| → `txid` | string (hex) | Required (exactly 1) | The TXID of the transaction the output appeared in. The TXID must be encoded in hex in RPC byte order |
+| `package-error` | string | Optional (0 or 1) | Package validation error, if any (only possible if rawtxs had more than 1 transaction). |
+| → `allowed` | bool | Required (exactly 1) | Whether this tx would be accepted to the mempool and pass client-specified maxfeerate. If not present, the tx was not fully validated due to a failure in another tx in the list. |
+| `vsize` | number (int) | Required (exactly 1) | Virtual transaction size. |
+| `fees` | object | Optional (0 or 1) | Transaction fees (only present if 'allowed' is true). |
+| → `base` | number | Required (exactly 1) | Transaction fee in DASH. |
+| → `reject-reason` | string | Optional (0 or 1) | A rejection string that is only present when 'allowed' is false. |
+
+_Example from Dash Core 18.0.0_
+
+```bash
+dash-cli -testnet testmempoolaccept [\"020000000234a2863f9781a7200330e700e684804bb2407d225c4e940c9cfb772f22fc0748000000006a47304402203b5a7899b6be2f33d30c1a71940c51f38074f4224a1ad6dee03dcc65f8646072022050d711115cd7291c2f094e3a3cfda14441721b1438e406b963b5660274ba4475012103e2fe477e31365d784d98514c7c9294283620d4a9775f01da5d3ba52f4c7286f5feffffff34a2863f9781a7200330e700e684804bb2407d225c4e940c9cfb772f22fc0748010000006a473044022018901985d2c94492111a45ed51bac88e02f1bb4a8382eacf5f474d70878c19f4022046e309e548f95a64b05e8ef70fae0ff86bf83cbed3055591580e0b5f5597c3a2012103109325a92f9e6d31d2ebd0595d471275ae8d635db2a0c42358f387e1af69c14dfeffffff020f530f00000000001976a9145799a5df43d34b05cdf03347af9102b67a6d154a88ac00e1f505000000001976a91464d51a27c8b8434458bac0193039bae55ca023c388ac151c0900\"]
+```
+
+Result:
+
+```json
+[
+ {
+ "txid": "06464b9c80413a49ab3c618f769a11647b6011f9ad15094eb423916ae5bc0c23",
+ "allowed": false,
+ "reject-reason": "18: txn-already-in-mempool"
+ }
+]
+```
+
+_See also:_
+
+* [CombineRawTransaction](../api/remote-procedure-calls-raw-transactions.md#combinerawtransaction): combine multiple partially signed transactions into one transaction.
+* [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.
+* [DecodeRawTransaction](../api/remote-procedure-calls-raw-transactions.md#decoderawtransaction): decodes a serialized transaction hex string into a JSON object describing the transaction.
+* [SendRawTransaction](../api/remote-procedure-calls-raw-transactions.md#sendrawtransaction): validates a transaction and broadcasts it to the peer-to-peer network.
+* [SignRawTransactionWithKey](#signrawtransactionwithkey): signs inputs for a transaction in the serialized transaction format using private keys provided in the call.
+
+## UTXOUpdatePSBT
+
+The [`utxoupdatepsbt` RPC](../api/remote-procedure-calls-raw-transactions.md#utxoupdatepsbt) updates a PSBT with data from output descriptors, UTXOs retrieved from the UTXO set or the mempool.
+
+_Parameter #1---psbt_
+
+| Name | Type | Presence | Description |
+| ---- | ------ | -------- | ------------------------- |
+| psbt | string | Required | A base64 string of a PSBT |
+
+_Parameter #2---descriptors_
+
+| Name | Type | Presence | Description |
+| ---------------------------------- | ---------------- | ----------------------- | ---------------------------------------------------------------------------------------- |
+| psbt | array | Optional (0 or 1) | An array of either strings or objects |
+| → Output descriptor | string | Optional (0 or 1) | An output descriptor |
+| → Output object | object | Optional (0 or 1) | An object with an output descriptor and extra information |
+| → → `desc` | string | Required (exactly 1) | An output descriptor |
+| → → `range` (`n` or `[n,n]`) | numeric or array | Optional (0 or 1) | Up to what index HD chains should be explored (either end or [begin,end]) (default=1000) |
+
+_Result---the raw transaction in base64_
+
+| Name | Type | Presence | Description |
+| ------ | ------ | ----------------------- | ----------------------------------------------------- |
+| Result | string | Required (Exactly 1) | The resulting raw transaction (base64-encoded string) |
+
+_Example from Dash Core 18.0.0_
+
+```bash
+dash-cli -testnet utxoupdatepsbt cHNidP8BAEICAAAAAXgRxzbShUlivVFKgoLyhk0RCCYLZKCYTl/tYRd+yGImAAAAAAD/////AQAAAAAAAAAABmoEAAECAwAAAAAAAAA=
+```
+
+Result:
+
+```
+cHNidP8BAEICAAAAAXgRxzbShUlivVFKgoLyhk0RCCYLZKCYTl/tYRd+yGImAAAAAAD/////AQAAAAAAAAAABmoEAAECAwAAAAAAAAA=
+```
+
+_See also:_
+
+* [CombinePSBT](../api/remote-procedure-calls-raw-transactions.md#combinepsbt): combine multiple partially-signed Dash transactions into one transaction.
+* [ConvertToPSBT](../api/remote-procedure-calls-raw-transactions.md#converttopsbt): converts a network serialized transaction to a PSBT.
+* [DecodePSBT](../api/remote-procedure-calls-raw-transactions.md#decodepsbt): returns a JSON object representing the serialized, base64-encoded partially signed Dash transaction.
+* [FinalizePSBT](../api/remote-procedure-calls-raw-transactions.md#finalizepsbt): finalizes the inputs of a PSBT.
+* [WalletCreateFundedPSBT](../api/remote-procedure-calls-wallet.md#walletcreatefundedpsbt): creates and funds a transaction in the Partially Signed Transaction (PST) format.
+* [WalletProcessPSBT](../api/remote-procedure-calls-wallet.md#walletprocesspsbt): updates a PSBT with input information from a wallet and then allows the signing of inputs.
diff --git a/docs/core/api/remote-procedure-calls-removed.md b/docs/core/api/remote-procedure-calls-removed.md
new file mode 100644
index 000000000..4ff760586
--- /dev/null
+++ b/docs/core/api/remote-procedure-calls-removed.md
@@ -0,0 +1,105 @@
+```{eval-rst}
+.. meta::
+ :title: Removed RPCs
+ :description: A list of RPCs that have recently been removed from Dash Core.
+```
+
+# Removed RPCs
+
+The following RPCs were recently removed. See the [previous version of documentation](https://docs.dash.org/projects/core/en/20.1.0/docs/api/remote-procedure-calls-removed.html) for RPCs removed longer ago.
+
+## GObject Vote-conf
+
+:::{attention}
+Removed in Dash Core 20.0.0
+:::
+
+The `gobject vote-conf` RPC votes on a governance object by masternode configured in dash.conf.
+
+*Parameter #1---governance hash*
+
+| Name | Type | Presence | Description |
+| ----------------- | ------------ | ----------------------- | ----------------------------- |
+| `governance-hash` | string (hex) | Required (exactly 1) | Hash of the governance object |
+
+*Parameter #2---vote signal*
+
+| Name | Type | Presence | Description |
+| -------- | ------ | ----------------------- | -------------------------------------------- |
+| `signal` | string | Required (exactly 1) | Vote signal: `funding`, `valid`, or `delete` |
+
+*Parameter #3---vote outcome*
+
+| Name | Type | Presence | Description |
+| --------- | ------ | ----------------------- | --------------------------------------- |
+| `outcome` | string | Required (exactly 1) | Vote outcome: `yes`, `no`, or `abstain` |
+
+*Result---votes for specified governance*
+
+| Name | Type | Presence | Description |
+| ------------------ | ------ | ----------------------- | ----------------------------------------- |
+| Result | object | Required (exactly 1) | The governance object votes |
+| → `overall` | string | Required (1 or more) | Reports number of vote successes/failures |
+| → `detail` | object | Required (exactly 1) | Vote details |
+| → → `dash.conf` | object | Required (1 or more) | |
+| → → → `result` | string | Required (exactly 1) | Vote result |
+
+*Example from Dash Core 0.12.2*
+
+``` bash
+dash-cli -testnet gobject vote-conf \
+0bf97bce78b3b642c36d4ca8e9265f8f66de8774c220221f57739c1956413e2b funding yes
+```
+
+``` json
+{
+ "overall": "Voted successfully 1 time(s) and failed 0 time(s).",
+ "detail": {
+ "dash.conf": {
+ "result": "success"
+ }
+ }
+}
+```
+
+## 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-util.md b/docs/core/api/remote-procedure-calls-util.md
new file mode 100644
index 000000000..8cb14a351
--- /dev/null
+++ b/docs/core/api/remote-procedure-calls-util.md
@@ -0,0 +1,428 @@
+```{eval-rst}
+.. meta::
+ :title: Util RPCs
+ :description: A list of utility remote procedure calls in Dash Core.
+```
+
+# Util RPCs
+
+## CreateMultiSig
+
+The [`createmultisig` RPC](../api/remote-procedure-calls-util.md#createmultisig) creates a P2SH multi-signature address.
+
+*Parameter #1---the number of signatures required*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+Required | number (int) | Required (exactly 1) | The minimum (*m*) number of signatures required to spend this m-of-n multisig script
+
+*Parameter #2---the full public keys*
+
+:::{attention}
+As of Dash Core 0.17.0, using addresses with `createmultisig` is unsupported. Clients must use [`addmultisigaddress`](../api/remote-procedure-calls-wallet.md#addmultisigaddress) to create multisig addresses.
+:::
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+Keys | array | Required (exactly 1) | An array of strings with each string being a public key
+→ Key | string | Required (1 or more) | A public key against which signatures will be checked. There must be at least as many keys as specified by the `Required` parameter, and there may be more keys
+
+*Result---P2SH address and hex-encoded redeem script*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`result` | object | Required (exactly 1) | An object describing the multisig address
+→ `address` | string (base58) | Required (exactly 1) | The P2SH address for this multisig redeem script
+→ `redeemScript` | string (hex) | Required (exactly 1) | The multisig redeem script encoded as hex
+→ `descriptor` | string (hex) | Required (exactly 1) | The descriptor for this multisig
+
+*Example from Dash Core 20.0.0*
+
+Creating a 1-of-2 P2SH multisig address by combining two full public keys:
+
+``` bash
+dash-cli -testnet createmultisig 1 '''
+ [
+ "03283a224c2c014d1d0ef82b00470b6b277d71e227c0e2394f9baade5d666e57d3",
+ "02594523b004e82849a66b3da096b1e680bf2ed5f7d03a3443c027aa5777bb6223"
+ ]
+'''
+```
+
+Result:
+
+``` json
+{
+ "address": "8jYUv8hJcbSUPbwYmzp1XMPU6SXoic3hwi",
+ "redeemScript": "512103283a224c2c014d1d0ef82b00470b6b277d71e227c0e2394f9baade5d666e57d32102594523b004e82849a66b3da096b1e680bf2ed5f7d03a3443c027aa5777bb622352ae",
+ "descriptor": "sh(multi(1,03283a224c2c014d1d0ef82b00470b6b277d71e227c0e2394f9baade5d666e57d3,02594523b004e82849a66b3da096b1e680bf2ed5f7d03a3443c027aa5777bb6223))#x7tdvpdd"
+}
+```
+
+*See also*
+
+* [AddMultiSigAddress](../api/remote-procedure-calls-wallet.md#addmultisigaddress): adds a P2SH multisig address to the wallet.
+* [DecodeScript](../api/remote-procedure-calls-raw-transactions.md#decodescript): decodes a hex-encoded P2SH redeem script.
+
+## DeriveAddresses
+
+*Added in Dash Core 18.0.0*
+
+The [`deriveaddresses` RPC](../api/remote-procedure-calls-util.md#deriveaddresses) derives one or more addresses corresponding to an output [descriptor](https://github.com/dashpay/dash/blob/master/doc/descriptors.md).
+
+Examples of output descriptors are:
+
+| Descriptor format | Description |
+| - | - |
+| `pkh()` | P2PKH outputs for the given pubkey |
+| `sh(multi(,,,...))` | P2SH-multisig outputs for the given threshold and pubkeys |
+| `raw()` | Outputs whose scriptPubKey equals the specified hex scripts |
+
+In the above, either refers to a fixed public key in hexadecimal notation, or to an xpub/xprv optionally followed by one or more path elements separated by "/", where "h" represents a hardened child key. For more information on output descriptors, see the documentation in the [doc/descriptors.md](https://github.com/dashpay/dash/blob/master/doc/descriptors.md) file.
+
+*Parameter #1---the descriptor*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`descriptor` | string | Required (exactly 1) | The [descriptor](https://github.com/dashpay/dash/blob/master/doc/descriptors.md)
+
+*Parameter #2---range*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`range` | number | Optional (0 or 1) | If a ranged descriptor is used, this specifies the end or the range (in [begin,end] notation) to derive (e.g. "[0,2]").
+
+*Result---the derived addresses*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`result` | array | Required (exactly 1) | Array of derived addresses
+→ Address | string | Required (0 or more) | The derived address(es)
+
+*Example from Dash Core 18.0.0*
+
+Analyse a descriptor:
+
+``` bash
+dash-cli deriveaddresses "pkh([8a54e0c5]0214889c34100d00aca6e7cbfe0fa72d83c28857585740bff5f3db6b37e51d9aaa)#wyvgzv2k"
+```
+
+Result:
+
+``` json
+[
+ "yYvsn6vdnkeq9VG1JbkfqKbjv3gUmFmnny"
+]
+```
+
+*See also*
+
+* [GetDescriptorInfo](#getdescriptorinfo): analyses a descriptor.
+* [ScanTxOutset](../api/remote-procedure-calls-wallet.md#scantxoutset): signs a message with the private key of an address.
+
+## EstimateSmartFee
+
+The [`estimatesmartfee` RPC](../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.
+
+*Parameter #1---how many confirmations the transaction may wait before being included*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+conf_target | number (int) | Required (exactly 1) | Confirmation target in blocks (1 - 1008)
+
+*Parameter #2---estimate mode*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+estimate_mode | string | Optional Default= `CONSERVATIVE` | The fee estimate mode. Whether to return a more conservative estimate which also satisfies a longer history. A conservative estimate potentially returns a higher feerate and is more likely to be sufficient for the desired target, but is not as responsive to short term drops in the prevailing fee market. Must be one of: `UNSET` (defaults to `CONSERVATIVE`) `ECONOMICAL` `CONSERVATIVE`
+
+*Result---the fee the transaction needs to pay per kilobyte*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`result` | object | Required (exactly 1) | JSON Object containing estimate information
+→ `feerate` | number (Dash) | Optional (0 or 1) | The estimated fee the transaction should pay in order to be included within the specified number of blocks. If the node doesn't have enough information to make an estimate, this field will not be returned
+→ `error` | JSON array (strings) | Optional (0 or 1) | Errors encountered during processing
+→ `blocks` | number | Required (exactly 1) | Block number where the estimate was found
+
+*Examples from Dash Core 0.15.0*
+
+``` bash
+dash-cli estimatesmartfee 6
+```
+
+Result:
+
+``` json
+{
+ "feerate": 0.00044345,
+ "blocks": 6
+}
+```
+
+Requesting data the node can't calculate (out of range):
+
+``` bash
+dash-cli estimatesmartfee 2
+```
+
+Result:
+
+``` json
+{
+ "errors": [
+ "Insufficient data or no feerate found"
+ ],
+ "blocks": 2
+}
+```
+
+*See also*
+
+* [SetTxFee](../api/remote-procedure-calls-wallet.md#settxfee): sets the transaction fee per kilobyte paid by transactions created by this wallet.
+
+## GetDescriptorInfo
+
+*Added in Dash Core 18.0.0*
+
+The [`getdescriptorinfo` RPC](../api/remote-procedure-calls-util.md#getdescriptorinfo) analyses a [descriptor](https://github.com/dashpay/dash/blob/master/doc/descriptors.md).
+
+*Parameter #1---the descriptor*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`descriptor` | string | Required (exactly 1) | The [descriptor](https://github.com/dashpay/dash/blob/master/doc/descriptors.md)
+
+*Result---the descriptor info*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`result` | object | Required (exactly 1) | Information about the descriptor
+→ `descriptor` | string | Required (exactly 1) | The descriptor in canonical form, without private keys
+→ `checksum` | string | Required (exactly 1) | The checksum for the input descriptor
+→ `isrange` | bool | Required (exactly 1) | Whether the descriptor is ranged
+→ `issolvable` | bool | Required (exactly 1) | Whether the descriptor is solvable
+→ `hasprivatekeys` | bool | Required (exactly 1) | Whether the input descriptor contained at least one private key
+
+*Example from Dash Core 18.0.0*
+
+Analyse a descriptor:
+
+``` bash
+dash-cli getdescriptorinfo "pkh([d34db33f/84h/0h/0h]0279be667ef9dcbbac55a06295Ce870b07029Bfcdb2dce28d959f2815b16f81798)"
+```
+
+Result:
+
+``` json
+{
+ "descriptor": "pkh([d34db33f/84'/0'/0']0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798)#9ffuvyvv",
+ "checksum": "yrc20h56",
+ "isrange": false,
+ "issolvable": true,
+ "hasprivatekeys": false
+}
+```
+
+*See also*
+
+* [ScanTxOutset](../api/remote-procedure-calls-wallet.md#scantxoutset): signs a message with the private key of an address.
+
+## GetIndexInfo
+
+*Added in Dash Core 20.0.0*
+
+The [`getindexinfo` RPC](../api/remote-procedure-calls-util.md#getindexinfo) returns the status of one or all available indices currently running in the node.
+
+*Parameter #1---the index name*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`index_name` | string | Optional (0 or 1) | Filter results for an index with a specific name
+
+*Result---the index info*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`result` | object | Required (exactly 1) | Information about the descriptor
+→ `name` | string | Required (exactly 1) | The descriptor in canonical form, without private keys
+→ → `synced` | string | Required (exactly 1) | The checksum for the input descriptor
+→ → `best_block_height` | bool | Required (exactly 1) | Whether the descriptor is ranged
+
+*Example from Dash Core 20.0.0*
+
+Get index information:
+
+``` bash
+dash-cli getindexinfo
+```
+
+Result:
+
+``` json
+{
+ "txindex": {
+ "synced": true,
+ "best_block_height": 917241
+ }
+}
+```
+
+*See also: none*
+
+## SignMessageWithPrivKey
+
+*Added in Dash Core 0.12.3 / Bitcoin Core 0.13.0*
+
+The [`signmessagewithprivkey` RPC](../api/remote-procedure-calls-util.md#signmessagewithprivkey) signs a message with a given private key.
+
+*Parameter #1---the private key to sign with*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+Private Key | string (base58) | Required (exactly 1) | The private key to sign the message with encoded in base58check using wallet import format (WIF)
+
+*Parameter #2---the message to sign*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+Message | string | Required (exactly 1) | The message to sign
+
+*Result---the message signature*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`result` | string (base64) | Required (exactly 1) | The signature of the message, encoded in base64.
+
+*Example from Dash Core 0.12.3*
+
+Sign a the message "Hello, World!" using the following private key:
+
+``` bash
+dash-cli signmessagewithprivkey cNKbZBqUCjuBRSnAJWwFWxKESJ5Lw\
+G4uxBSJ1UeBNBGVRupFKr6S "Hello, World!"
+```
+
+Result:
+
+``` text
+IBx8jxFjutPlcZcFdQPlA2n/B4yTrYhH43qYJURKRj7LWhSD0ERE/nnRLOnXi/gwULUcqfqOKqnqkSvuJjlgEvc=
+```
+
+*See also*
+
+* [SignMessage](../api/remote-procedure-calls-wallet.md#signmessage): signs a message with the private key of an address.
+* [VerifyMessage](../api/remote-procedure-calls-util.md#verifymessage): verifies a signed message.
+
+## ValidateAddress
+
+The [`validateaddress` RPC](../api/remote-procedure-calls-util.md#validateaddress) returns information about the given Dash address.
+
+*Parameter #1---a P2PKH or P2SH address*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+Address | string (base58) | Required (exactly 1) | The P2PKH or P2SH address to validate encoded in base58check format
+
+*Result---information about the address*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`result` | object | Required (exactly 1) | Information about the address
+→ `isvalid` | bool | Required (exactly 1) | Set to `true` if the address is a valid P2PKH or P2SH address; set to `false` otherwise
+→ `address` | string (base58) | Optional (0 or 1) | The Dash address given as parameter
+→ `scriptPubKey` | string (hex) | Optional (0 or 1) | The hex encoded scriptPubKey generated by the address
+→ `isscript` | bool | Optional (0 or 1) | Set to `true` if a P2SH address; otherwise set to `false`. Only returned if the address is in the wallet
+→`error` | string | Optional (0 or 1) | Error message, if any
+
+*Example from Dash Core 20.1.0*
+
+Validate the following P2PKH address from the wallet:
+
+``` bash
+dash-cli validateaddress yNpezfFDfoikDuT1f4iK75AiLp2YLPsGAb
+```
+
+Result:
+
+``` json
+{
+ "isvalid": true,
+ "address": "yNpezfFDfoikDuT1f4iK75AiLp2YLPsGAb",
+ "scriptPubKey": "76a9141b767409bd8717b56cfcb00747811432ab1aa8a788ac",
+ "isscript": false
+}
+```
+
+Validate the following P2SH multisig address from the wallet:
+
+``` bash
+dash-cli -testnet validateaddress 8uJLxDxk2gEMbidF5vT8XLS2UCgQmVcroW
+```
+
+Result:
+
+``` json
+{
+ "isvalid": true,
+ "address": "8uJLxDxk2gEMbidF5vT8XLS2UCgQmVcroW",
+ "scriptPubKey": "a914a33155e490d146e656a9bac2cbee9c625ef42f0a87",
+ "isscript": true
+}
+```
+
+*See also*
+
+* [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.
+* [GetNewAddress](../api/remote-procedure-calls-wallet.md#getnewaddress): returns a new Dash address for receiving payments. If an account is specified, payments received with the address will be credited to that account.
+* [GetAddressInfo](../api/remote-procedure-calls-wallet.md#getaddressinfo): returns information about the given Dash address.
+
+## VerifyMessage
+
+The [`verifymessage` RPC](../api/remote-procedure-calls-util.md#verifymessage) verifies a signed message.
+
+*Parameter #1---the address corresponding to the signing key*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+Address | string (base58) | Required (exactly 1) | The P2PKH address corresponding to the private key which made the signature. A P2PKH address is a hash of the public key corresponding to the private key which made the signature. When the ECDSA signature is checked, up to four possible ECDSA public keys will be reconstructed from from the signature; each key will be hashed and compared against the P2PKH address provided to see if any of them match. If there are no matches, signature validation will fail
+
+*Parameter #2---the signature*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+Signature | string (base64) | Required (exactly 1) | The signature created by the signer encoded as base-64 (the format output by the [`signmessage` RPC](../api/remote-procedure-calls-wallet.md#signmessage))
+
+*Parameter #3---the message*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+Message | string | Required (exactly 1) | The message exactly as it was signed (e.g. no extra whitespace)
+
+*Result: `true`, `false`, or an error*
+
+Name | Type | Presence | Description
+--- | --- | --- | ---
+`result` | boolean | Required (exactly 1) | Set to `true` if the message was signed by a key corresponding to the provided P2PKH address; set to `false` if it was not signed by that key; set to JSON `null` if an error occurred
+
+*Example from Dash Core 0.12.2*
+
+Check the signature on the message created in the example for
+`signmessage`:
+
+``` bash
+dash-cli -testnet verifymessage \
+ yNpezfFDfoikDuT1f4iK75AiLp2YLPsGAb \
+ H4XULzfHCf16In2ECk9Ta9QxQPq639zQto2JA3OLlo3JbUdrClvJ89+A1z+Z9POd6l8LJhn1jGpQYF8mX4jkQvE= \
+ 'Hello, World!'
+```
+
+Result:
+
+``` json
+true
+```
+
+*See also*
+
+* [SignMessage](../api/remote-procedure-calls-wallet.md#signmessage): signs a message with the private key of an address.
diff --git a/docs/core/api/remote-procedure-calls-wallet-deprecated.md b/docs/core/api/remote-procedure-calls-wallet-deprecated.md
new file mode 100644
index 000000000..cc5b32f52
--- /dev/null
+++ b/docs/core/api/remote-procedure-calls-wallet-deprecated.md
@@ -0,0 +1,13 @@
+```{eval-rst}
+.. meta::
+ :title: Wallet RPCs
+ :description: A list of deprecated Wallet RPCs.
+```
+
+# Wallet RPCs (Deprecated)
+
+:::{attention}
+RPCs that require wallet support are **not available on masternodes** for security reasons. Such RPCs are designated with a "_Requires wallet support_" message.
+:::
+
+The following RPCs were recently removed. See the [previous version of documentation](https://docs.dash.org/projects/core/en/20.1.0/docs/api/remote-procedure-calls-wallet-deprecated.html) for RPCs removed longer ago.
diff --git a/docs/core/api/remote-procedure-calls-wallet.md b/docs/core/api/remote-procedure-calls-wallet.md
new file mode 100644
index 000000000..74e207402
--- /dev/null
+++ b/docs/core/api/remote-procedure-calls-wallet.md
@@ -0,0 +1,3904 @@
+```{eval-rst}
+.. meta::
+ :title: Wallet RPCs
+ :description: A list of remote procedure calls in Dash that are used to perform wallet operations such as sending, creating and categorizing addresses, etc.
+```
+
+# Wallet RPCs
+
+:::{attention}
+RPCs that require wallet support are **not available on masternodes** for security reasons. Such RPCs are designated with a "_Requires wallet support_" message.
+:::
+
+## AbandonTransaction
+
+_Added in Bitcoin Core 0.12.0_
+
+The [`abandontransaction` RPC](../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.
+
+_Parameter #1---a transaction identifier (TXID)_
+
+| Name | Type | Presence | Description |
+| ---- | ------------ | ----------------------- | -------------------------------------------------------------------------------------------------------- |
+| TXID | string (hex) | Required (exactly 1) | The TXID of the transaction that you want to abandon. The TXID must be encoded as hex in RPC byte order |
+
+_Result---`null` on success_
+
+| Name | Type | Presence | Description |
+| -------- | ---- | ----------------------- | ------------------------------------------------------------------- |
+| `result` | null | Required (exactly 1) | JSON `null` when the transaction and all descendants were abandoned |
+
+_Example from Dash Core 0.12.2_
+
+Abandons the transaction on your node.
+
+```bash
+dash-cli abandontransaction fa3970c341c9f5de6ab13f128cbfec58d732e736a505fe32137ad551c799ecc4
+```
+
+Result (no output from `dash-cli` because result is set to `null`).
+
+_See also_
+
+* [SendRawTransaction](../api/remote-procedure-calls-raw-transactions.md#sendrawtransaction): validates a transaction and broadcasts it to the peer-to-peer network.
+
+## AbortRescan
+
+The [`abortrescan` RPC](../api/remote-procedure-calls-wallet.md#abortrescan) Stops current wallet rescan
+
+Stops current wallet rescan triggered e.g. by an [`importprivkey` RPC](../api/remote-procedure-calls-wallet.md#importprivkey) call.
+
+_Parameters: none_
+
+_Result---`true` on success_
+
+| Name | Type | Presence | Description |
+| -------- | ---- | ----------------------- | -------------------------------------------------------------------- |
+| `result` | null | Required (exactly 1) | `true` when the command was successful or `false` if not successful. |
+
+_Example from Dash Core 0.15.0_
+
+Abort the running wallet rescan
+
+```bash
+dash-cli -testnet abortrescan
+```
+
+Result:
+
+```text
+true
+```
+
+_See also: none_
+
+## AddMultiSigAddress
+
+:::{note}
+Requires [wallet](../resources/glossary.md#wallet) support (**unavailable on masternodes**).
+:::
+
+The [`addmultisigaddress` RPC](../api/remote-procedure-calls-wallet.md#addmultisigaddress) adds a P2SH multisig address to the wallet. Each key is a Dash address or hex-encoded public key. This functionality is only intended for use with non-watchonly addresses. See [`importaddress` RPC](../api/remote-procedure-calls-wallet.md#importaddress) for watchonly p2sh address support. If 'label' is specified, assign address to that label.
+
+_Parameter #1---the number of signatures required_
+
+| Name | Type | Presence | Description |
+| -------- | ------------ | ----------------------- | ------------------------------------------------------------------------------------ |
+| Required | number (int) | Required (exactly 1) | The minimum (_m_) number of signatures required to spend this m-of-n multisig script |
+
+_Parameter #2---the full public keys, or addresses for known public keys_
+
+| Name | Type | Presence | Description |
+| ------------------- | ------ | ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| Keys Or Addresses | array | Required (exactly 1) | An array of strings with each string being a public key or address |
+| → Key Or Address | string | Required (1 or more) | A public key against which signatures will be checked. Alternatively, this may be a P2PKH address belonging to the wallet---the corresponding public key will be substituted. There must be at least as many keys as specified by the Required parameter, and there may be more keys |
+
+_Parameter #3---label_
+
+| Name | Type | Presence | Description |
+| ----- | ------ | -------------------- | ----------------------------------- |
+| Label | string | Optional (0 or 1) | A label to assign the addresses to. |
+
+_Result---P2SH address and hex-encoded redeem script_
+
+| Name | Type | Presence | Description |
+| ------------------- | --------------- | ----------------------- | ------------------------------------------------ |
+| `result` | object | Required (exactly 1) | An object describing the multisig address |
+| → `address` | string (base58) | Required (exactly 1) | The P2SH address for this multisig redeem script |
+| → `redeemScript` | string (hex) | Required (exactly 1) | The multisig redeem script encoded as hex |
+
+_Example from Dash Core 20.0.0_
+
+Adding a 1-of-2 P2SH multisig address with the label "test label" by combining one P2PKH address and one full public key:
+
+```bash
+dash-cli -testnet -rpcwallet="" addmultisigaddress 1 '''
+ [
+ "ySxkBWzPwMrZLAY9ZPitMnSwf4NSUBPbiH",
+ "02594523b004e82849a66b3da096b1e680bf2ed5f7d03a3443c027aa5777bb6223"
+ ]
+''' 'test label'
+```
+
+Result:
+
+```json
+{
+ "address": "8jYUv8hJcbSUPbwYmzp1XMPU6SXoic3hwi",
+ "redeemScript": "512103283a224c2c014d1d0ef82b00470b6b277d71e227c0e2394f9baade5d666e57d32102594523b004e82849a66b3da096b1e680bf2ed5f7d03a3443c027aa5777bb622352ae",
+ "descriptor": "sh(multi(1,[48de9d39]03283a224c2c014d1d0ef82b00470b6b277d71e227c0e2394f9baade5d666e57d3,[dec361f1]02594523b004e82849a66b3da096b1e680bf2ed5f7d03a3443c027aa5777bb6223))#vtc5zmh2"
+}
+```
+
+(New P2SH multisig address also stored in wallet.)
+
+_See also_
+
+* [CreateMultiSig](../api/remote-procedure-calls-util.md#createmultisig): creates a P2SH multi-signature address.
+* [DecodeScript](../api/remote-procedure-calls-raw-transactions.md#decodescript): decodes a hex-encoded P2SH redeem script.
+
+## BackupWallet
+
+:::{note}
+Requires [wallet](../resources/glossary.md#wallet) support (**unavailable on masternodes**).
+:::
+
+The [`backupwallet` RPC](../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.
+
+_Parameter #1---destination directory or filename_
+
+| Name | Type | Presence | Description |
+| ----------- | ------ | ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| Destination | string | Required (exactly 1) | A filename or directory name. If a filename, it will be created or overwritten. If a directory name, the file `wallet.dat` will be created or overwritten within that directory |
+
+_Result---`null` or error_
+
+| Name | Type | Presence | Description |
+| -------- | ---- | ----------------------- | ------------------------------------------------------------------------------------------------------------------ |
+| `result` | null | Required (exactly 1) | Always `null` whether success or failure. The JSON-RPC error and message fields will be set if a failure occurred |
+
+_Example from Dash Core 0.12.2_
+
+```bash
+dash-cli -testnet backupwallet /tmp/backup.dat
+```
+
+_See also_
+
+* [DumpWallet](../api/remote-procedure-calls-wallet.md#dumpwallet): creates or overwrites a file with all wallet keys in a human-readable format.
+* [ImportWallet](../api/remote-procedure-calls-wallet.md#importwallet): imports private keys from a file in wallet dump file format (see the [`dumpwallet` RPC](../api/remote-procedure-calls-wallet.md#dumpwallet)). These keys will be added to the keys currently in the wallet. This call may need to rescan all or parts of the block chain for transactions affecting the newly-added keys, which may take several minutes.
+
+## CreateWallet
+
+:::{note}
+Requires [wallet](../resources/glossary.md#wallet) support (**unavailable on masternodes**).
+:::
+
+The [`createwallet` RPC](../api/remote-procedure-calls-wallet.md#createwallet) creates and loads a new wallet.
+
+_Parameter #1---wallet name_
+
+| Name | Type | Presence | Description |
+| ------------- | ------ | ----------------------- | ------------------------------------------------------------------------------------------------ |
+| `wallet_name` | string | Required (exactly 1) | The name for the new wallet. If this is a path, the wallet will be created at the path location. |
+
+_Parameter #2---disable private keys_
+
+| Name | Type | Presence | Description |
+| ---------------------- | ---- | -------------------- | ----------------------------------------------------------------------------------- |
+| `disable_private_keys` | bool | Optional (0 or 1) | Disable the possibility of private keys. Only watchonlys are possible in this mode. |
+
+_Parameter #3---blank_
+
+| Name | Type | Presence | Description |
+| ------- | ---- | -------------------- | ------------------------------------------------------------------------------------------------------------------ |
+| `blank` | bool | Optional (0 or 1) | Create a blank wallet. A blank wallet has no keys or HD seed. Use [`upgradetohd`](#upgradetohd) (mnemonic) or [`sethdseed`](#sethdseed) (WIF private key) to add an HD seed. |
+
+_Parameter #4---passphrase_
+
+| Name | Type | Presence | Description |
+| ------------ | ------ | -------------------- | ---------------------------------------- |
+| `passphrase` | string | Optional (0 or 1) | Encrypt the wallet with this passphrase. |
+
+_Parameter #5---avoid coin reuse_
+
+| Name | Type | Presence | Description |
+| ------------- | ---- | -------------------- | ---------------------------------------------------------------------------------------------------------- |
+| `avoid_reuse` | bool | Optional (0 or 1) | Keep track of coin reuse, and treat dirty and clean coins differently with privacy considerations in mind. |
+
+_Parameter #6---descriptors_
+
+| Name | Type | Presence | Description |
+| ------------- | ---- | -------------------- | -------------------------------------------------------------------------------------------------------------------------- |
+| `descriptors` | bool | Optional (0 or 1) | Create a native descriptor wallet. The wallet will use descriptors internally to handle address creation. |
+
+_Parameter #7---load on startup_
+
+| Name | Type | Presence | Description |
+| ----------------- | ---- | -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
+| `load_on_startup` | bool | Optional (0 or 1) | Save wallet name to persistent settings and load on startup. True to add wallet to startup list, false to remove, null to leave unchanged. |
+
+_Result---wallet name and any warnings_
+
+| Name | Type | Presence | Description |
+| -------------- | ------ | ----------------------- | ----------------------------------------------------------------------------------------------------------------------------- |
+| `result` | object | Required (exactly 1) | An object containing information about wallet creation |
+| → `name` | string | Required (exactly 1) | The wallet name if created successfully. If the wallet was created using a full path, the `wallet_name` will be the full path |
+| → `warning` | string | Required (exactly 1) | Warning message if wallet was not loaded cleanly. |
+
+_Example from Dash Core 0.17.0_
+
+```bash
+dash-cli -testnet createwallet new-wallet
+```
+
+Result:
+
+```json
+{
+ "name": "new-wallet",
+ "warning": ""
+}
+```
+
+:::{note}
+In the example above, a new directory named `new-wallet` was created in the current data directory (`~/.dashcore/testnet3/`). This new directory contains the wallet.dat file and other related wallet files for the new wallet.
+:::
+
+_See also_
+
+* [LoadWallet](../api/remote-procedure-calls-wallet.md#loadwallet): loads a wallet from a wallet file or directory.
+
+## DumpHDInfo
+
+The [`dumphdinfo` RPC](../api/remote-procedure-calls-wallet.md#dumphdinfo) returns an object containing sensitive private info about this HD wallet
+
+_Parameters: none_
+
+_Result---HD wallet information_
+
+| Name | Type | Presence | Description |
+| -------------------------- | ------ | ----------------------- | ----------------------------------------------------------------- |
+| Result | object | Required (exactly 1) | An object containing sensitive private info about this HD wallet. |
+| → `hdseed` | string | Required (exactly 1) | The BIP-32 HD seed (in hex) |
+| → `mnemonic` | string | Required (exactly 1) | The BIP-39 mnemonic for this HD wallet (English words) |
+| → `mnemonicpassphrase` | string | Required (exactly 1) | The BIP-39 mnemonic passphrase for this HD wallet (may be empty) |
+
+_Example from Dash Core 0.12.2_
+
+```bash
+dash-cli -testnet dumphdinfo
+```
+
+Result (truncated for security reasons):
+
+```json
+{
+ "hdseed": "20c63c3fb298ebd52de3 ...",
+ "mnemonic": "cost circle shiver ...",
+ "mnemonicpassphrase": ""
+}
+```
+
+_See also: none_
+
+## DumpPrivKey
+
+:::{note}
+Requires [wallet](../resources/glossary.md#wallet) support (**unavailable on masternodes**) and an unlocked or unencrypted wallet.
+:::
+
+The [`dumpprivkey` RPC](../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.)
+
+_Parameter #1---the address corresponding to the private key to get_
+
+| Name | Type | Presence | Description |
+| ------------- | --------------- | ----------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
+| P2PKH Address | string (base58) | Required (exactly 1) | The P2PKH address corresponding to the private key you want returned. Must be the address corresponding to a private key in this wallet |
+
+_Result---the private key_
+
+| Name | Type | Presence | Description |
+| -------- | --------------- | ----------------------- | ----------------------------------------------------------------- |
+| `result` | string (base58) | Required (exactly 1) | The private key encoded as base58check using wallet import format |
+
+_Example from Dash Core 0.12.2_
+
+```bash
+dash-cli -testnet dumpprivkey ycBuREgSskHHkWLxDa9A5WppCki6PfFycL
+```
+
+Result:
+
+```text
+cQZZ4awQvcXXyES3CmUJqSgeTobQm9t9nyUr337kvUtsWsnvvMyw
+```
+
+_See also_
+
+* [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).
+* [DumpWallet](../api/remote-procedure-calls-wallet.md#dumpwallet): creates or overwrites a file with all wallet keys in a human-readable format.
+
+## DumpWallet
+
+:::{note}
+Requires [wallet](../resources/glossary.md#wallet) support (**unavailable on masternodes**) and an unlocked or unencrypted wallet.
+:::
+
+The [`dumpwallet` RPC](../api/remote-procedure-calls-wallet.md#dumpwallet) creates or overwrites a file with all wallet keys in a human-readable format.
+
+_Parameter #1---a filename_
+
+| Name | Type | Presence | Description |
+| -------- | ------ | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| Filename | string | Required (exactly 1) | The filename with path (either absolute or relative to Dash Core) into which the wallet dump will be placed. An existing file with that name will be overwritten. |
+
+_Result---information about exported wallet_
+
+| Name | Type | Presence | Description |
+| ---------------------- | ------------ | ----------------------- | ------------------------------------------------------------------- |
+| `result` | object | Required (exactly 1) | An object describing dumped wallet file |
+| → `dashcoreversion` | string | Required (exactly 1) | Dash Core build details |
+| → `lastblockheight` | int | Required (exactly 1) | Height of the most recent block received |
+| → `lastblockhash` | string (hex) | Required (exactly 1) | Hash of the most recent block received |
+| → `lastblocktime` | string | Required (exactly 1) | Timestamp of the most recent block received |
+| → `keys` | int | Required (exactly 1) | Number of keys dumped |
+| → `filename` | string | Required (exactly 1) | Name of the file the wallet was dumped to |
+| → `warning` | string | Required (exactly 1) | Warning to not share the file due to it containing the private keys |
+
+_Example from Dash Core 0.13.0_
+
+Create a wallet dump and then print its first 10 lines.
+
+```bash
+dash-cli -testnet dumpwallet /tmp/dump.txt
+head /tmp/dump.txt
+```
+
+Results:
+
+```json
+{
+ "dashcoreversion": "v0.17.0.0",
+ "lastblockheight": 250186,
+ "lastblockhash": "0000000000a82fb1890de5da4740d0671910a436fe6fc4503a3e553adef073b4",
+ "lastblocktime": "2018-10-23T12:50:44Z",
+ "keys": 8135,
+ "file": "/tmp/dump.txt",
+ "warning": "/tmp/dump.txt file contains all private keys from this wallet. Do not share it with anyone!"
+}
+```
+
+Results (the first 10 lines of the file):
+
+```bash
+>>>>>>>># Wallet dump created by Dash Core v0.13.0.0
+>>>>>>>># * Created on 2020-12-09T18:40:52Z
+>>>>>>>># * Best block at time of backup was 405635 (000000b2304f57eefd42cdd943e7736d479468beb08049b8f88d11ebc7cf6f02),
+>>>>>>>># mined on 2020-12-09T18:40:23Z
+
+cQZZ4awQvcXXyES3CmUJqSgeTobQm9t9nyUr337kvUtsWsnvvMyw 2018-12-14T17:24:37Z change=1 # addr=ycBuREgSskHHkWLxDa9A5WppCki6PfFycL
+cTBRPnJoPjEMh67v1zes437v8Po5bFLDWKgEudTJMhVaLs1ZVGJe 2018-12-14T17:24:37Z change=1 # addr=yNsWkgPLN1u7p5dfWYnasYdgirU2J3tjUj
+cRkkwrFnQUrih3QiT87sNy1AxyfjzqVYSyVYuL3qnJcSiQfE4QJa 2018-12-14T17:24:37Z change=1 # addr=yRkHzRbRKn8gBp5826mbaBvxLuBBNDVQg3
+cQM7KoqQjHCCTrDhnfBEY1vpW9W65zRvaQeTb41UbFb6WX8Q8UkQ 2018-12-14T17:24:37Z change=1 # addr=yVEdefApUYiDLHApvvWCK5afTtJeQada8Y
+cTGSKYaQTQabnjNSwCqpjYXiucVujTXiwp9dzmJV9cNAiayAJusi 2018-12-14T17:24:37Z change=1 # addr=ybQYgp21ZyZK8JuMLb2CVwG4TaWrXVXD5M
+```
+
+_See also_
+
+* [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.
+* [ImportWallet](../api/remote-procedure-calls-wallet.md#importwallet): imports private keys from a file in wallet dump file format (see the [`dumpwallet` RPC](../api/remote-procedure-calls-wallet.md#dumpwallet)). These keys will be added to the keys currently in the wallet. This call may need to rescan all or parts of the block chain for transactions affecting the newly-added keys, which may take several minutes.
+
+## EncryptWallet
+
+:::{note}
+Requires [wallet](../resources/glossary.md#wallet) support (**unavailable on masternodes**).
+:::
+
+The [`encryptwallet` RPC](../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.
+
+:::{warning}
+If using this RPC on the command line, remember that your shell probably saves your command lines (including the value of the passphrase parameter). In addition, there is no RPC to completely disable encryption. If you want to return to an unencrypted wallet, you must create a new wallet and restore your data from a backup made with the [`dumpwallet` RPC](../api/remote-procedure-calls-wallet.md#dumpwallet).
+:::
+
+_Parameter #1---a passphrase_
+
+| Name | Type | Presence | Description |
+| ---------- | ------ | ----------------------- | ------------------------------------------------------------------------------- |
+| Passphrase | string | Required (exactly 1) | The passphrase to use for the encrypted wallet. Must be at least one character |
+
+_Result---a notice (with program shutdown)_
+
+| Name | Type | Presence | Description |
+| -------- | ------ | ----------------------- | --------------------------------------------------------------------------------------------------------- |
+| `result` | string | Required (exactly 1) | A notice that the server is stopping and that you need to make a new backup. The wallet is now encrypted |
+
+_Example from Dash Core 0.12.2_
+
+```bash
+dash-cli -testnet encryptwallet "test"
+```
+
+Result:
+
+```text
+Wallet encrypted; Dash Core server stopping, restart to run with encrypted wallet.
+The keypool has been flushed and a new HD seed was generated (if you are using
+HD). You need to make a new backup.
+
+```
+
+_See also_
+
+* [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.
+* [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.
+* [WalletPassphraseChange](../api/remote-procedure-calls-wallet.md#walletpassphrasechange): changes the wallet passphrase from 'old passphrase' to 'new passphrase'.
+
+## GetAddressInfo
+
+*Added in Dash Core 0.17.0*
+
+:::{note}
+Requires [wallet](../resources/glossary.md#wallet) support (**unavailable on masternodes**).
+:::
+
+The [`getaddressinfo` RPC](../api/remote-procedure-calls-wallet.md#getaddressinfo) returns information about the given Dash address. Note: Some information requires the address to be in the wallet.
+
+_Parameter #1---a P2PKH or P2SH address_
+
+| Name | Type | Presence | Description |
+| ------- | --------------- | ----------------------- | ----------- |
+| Address | string (base58) | Required (exactly 1) | The P2PKH or P2SH address encoded in base58check format |
+
+_Result---returns information about the address_
+
+| Name | Type | Presence | Description |
+| -------------------------- | ---------------- | ----------------------- | ----------- |
+| `result` | object | Required (exactly 1) | Information about the address |
+| → `address` | string (base58) | Required (exactly 1) | The Dash address given as parameter |
+| → `scriptPubKey` | string (hex) | Required (exactly 1) | The hex encoded scriptPubKey generated by the address |
+| → `ismine` | bool | Required (exactly 1) | Set to `true` if the address belongs to the wallet; set to false if it does not. Only returned if wallet support enabled |
+| → `iswatchonly` | bool | Required (exactly 1) | Set to `true` if the address is watch-only. Otherwise set to `false`. Only returned if address is in the wallet |
+| → `solvable` | bool | Required (exactly 1) | Whether we know how to spend coins sent to this address, ignoring the possible lack of private keys |
+| → `desc` | string | Optional (0 or 1) | A descriptor for spending coins sent to this address (only present when `solvable` is `true`) |
+| → `parent_desc` | string | Optional (0 or 1) | The descriptor used to derive this address if this is a descriptor wallet. |
+| → `isscript` | bool | Required (exactly 1) | Set to `true` if a P2SH address; otherwise set to `false`. Only returned if the address is in the wallet |
+| → `ischange` | bool | Required (exactly 1) | Set to `true` if the address was used for change output. |
+| → `script` | string | Optional (0 or 1) | The output script type. Possible types include: `nonstandard`, `pubkey`, `pubkeyhash`, `scripthash`, `multisig`, `nulldata`. Only returned if `isscript` is true and the redeemscript is known. |
+| → `script` | string | Optional (0 or 1) | Only returned for P2SH addresses belonging to this wallet. This is the type of script: • `pubkey` for a P2PK script inside P2SH • `pubkeyhash` for a P2PKH script inside P2SH • `multisig` for a multisig script inside P2SH • `nonstandard` for unknown scripts |
+| → `hex` | string (hex) | Optional (0 or 1) | Only returned for P2SH addresses belonging to this wallet. This is the redeem script encoded as hex |
+| → `pubkeys` | array | Optional (0 or 1) | Array of pubkeys associated with the known redeemscript (only if `script` is "multisig") |
+| → → Pubkey | string | Optional (0 or more) | A public key |
+| → `addresses` | array | Optional (0 or 1) | Array of addresses associated with the known redeemscript (only if "script" is "multisig"). |
+| → → Address | string | Optional (0 or more) | An address. |
+| → `sigsrequired` | number (int) | Optional (0 or 1) | Only returned for multisig P2SH addresses belonging to the wallet. The number of signatures required by this script |
+| → `pubkey` | string (hex) | Optional (0 or 1) | The public key corresponding to this address. Only returned if the address is a P2PKH address in the wallet |
+| → `iscompressed` | bool | Optional (0 or 1) | Set to `true` if a compressed public key or set to `false` if an uncompressed public key. Only returned if the address is a P2PKH address in the wallet |
+| → `timestamp` | number (int) | Optional (0 or 1) | The creation time of the key if available in seconds since epoch (Jan 1 1970 GMT) |
+| → `hdchainid` | string (hash160) | Optional (0 or 1) | The ID of the HD chain |
+| → `hdkeypath` | string | Optional (0 or 1) | The HD keypath if the key is HD and available |
+| → `hdseedid` | string (hex) | Optional (0 or 1) | The Hash160 of the HD seed. |
+| → `hdmasterfingerprint` | string | Optional (0 or 1) | The fingerprint of the master key |
+| → `labels` | array | Optional (0 or 1) | **Updated in Dash Core 21.0.0** An array of labels associated with the address. Currently limited to one label but returned as an array to keep the API stable if multiple labels are enabled in the future. |
+
+_Example from Dash Core 21.0.0_
+
+Get info for the following P2PKH address from the wallet:
+
+```bash
+dash-cli getaddressinfo "yZ9fa6vzAS5yz3QjA8etgA4ka1GD2X9ouq"
+```
+
+Result:
+
+```json
+{
+ "address": "yZ9fa6vzAS5yz3QjA8etgA4ka1GD2X9ouq",
+ "scriptPubKey": "76a9148cc018804bcca348bae6c8cdf8c0890b09cc42ca88ac",
+ "ismine": true,
+ "solvable": true,
+ "desc": "pkh([2849fa86/44'/1'/0'/0/1]03ad075b0b163e9cd17a24143f8914c51abc697e0706c7a0d54594b3487f0ff15c)#k2juu6h5",
+ "iswatchonly": false,
+ "isscript": false,
+ "pubkey": "03ad075b0b163e9cd17a24143f8914c51abc697e0706c7a0d54594b3487f0ff15c",
+ "iscompressed": true,
+ "ischange": false,
+ "timestamp": 1692213593,
+ "hdchainid": "51cbaf0337e7f59ae8ad81360b20ebbb68019bab8d9d2d84ce39e20dc635b940",
+ "hdkeypath": "m/44'/1'/0'/0/1",
+ "hdmasterfingerprint": "2849fa86",
+ "labels": [
+ ""
+ ]
+}
+```
+
+Get info for the following P2SH multisig address from the wallet:
+
+```bash
+dash-cli -testnet getaddressinfo 8uJLxDxk2gEMbidF5vT8XLS2UCgQmVcroW
+```
+
+Result:
+
+```json
+{
+ "address": "8uJLxDxk2gEMbidF5vT8XLS2UCgQmVcroW",
+ "scriptPubKey": "a914a33155e490d146e656a9bac2cbee9c625ef42f0a87",
+ "ismine": false,
+ "solvable": false,
+ "iswatchonly": false,
+ "isscript": true,
+ "ischange": false,
+ "labels": [
+ ""
+ ]
+}
+```
+
+_See also_
+
+* [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.
+* [GetNewAddress](../api/remote-procedure-calls-wallet.md#getnewaddress): returns a new Dash address for receiving payments. If an account is specified, payments received with the address will be credited to that account.
+* [ValidateAddress](../api/remote-procedure-calls-util.md#validateaddress): returns information about the given Dash address.
+
+## GetAddressesByLabel
+
+:::{note}
+Requires [wallet](../resources/glossary.md#wallet) support (**unavailable on masternodes**).
+:::
+
+The [`getaddressesbylabel` RPC](../api/remote-procedure-calls-wallet.md#getaddressesbylabel) returns a list of every address assigned to a particular label.
+
+_Parameter #1---the label name_
+
+| Name | Type | Presence | Description |
+| ----- | ------ | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
+| Label | string | Required (exactly 1) | The name of the label associated with the addresses to get. To get addresses from the default account, pass an empty string (`""`). |
+
+_Result---a list of addresses_
+
+| Name | Type | Presence | Description |
+| ----------- | ------ | ----------------------- | ----------------------------------------------------------------------------------- |
+| `result` | object | Required (exactly 1) | A JSON object containing all addresses belonging to the specified label as keys. |
+| →Address | object | Optional (1 or more) | A JSON object with information about a P2PKH or P2SH address belonging to the label |
+| →→`purpose` | string | Optional (1 or more) | Purpose of address (`send` for sending address, `receive` for receiving address) |
+
+_Example from Dash Core 0.17.0_
+
+Get the addresses assigned to the label "doc test":
+
+```bash
+dash-cli -testnet getaddressesbylabel "doc test"
+```
+
+Result:
+
+```json
+{
+ "yacJKd6tRz2JSn8Wfp9GKgCbuowAEBivrA": {
+ "purpose": "receive"
+ }
+}
+```
+
+_See also_
+
+* [GetBalance](../api/remote-procedure-calls-wallet.md#getbalance): gets the balance in decimal dash across all accounts or for a particular account.
+
+## GetBalance
+
+:::{note}
+Requires [wallet](../resources/glossary.md#wallet) support (**unavailable on masternodes**).
+:::
+
+The [`getbalance` RPC](../api/remote-procedure-calls-wallet.md#getbalance) gets the total _available balance_ in Dash. The _available balance_ is what the wallet considers currently spendable, and is thus affected by options which limit spendability such as `-spendzeroconfchange`.
+
+_Parameter #1---unused parameter_
+
+| Name | Type | Presence | Description |
+| ------ | ------ | -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| Unused | string | Optional (0 or 1) | **Deprecated: (previously account) will be removed in a later version of Dash Core**
Remains for backward compatibility. Must be excluded or set to `"*"`. |
+
+_Parameter #2---the minimum number of confirmations_
+
+| Name | Type | Presence | Description |
+| ------------- | ------------ | -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| Confirmations | number (int) | Optional (0 or 1) | The minimum number of confirmations an externally-generated transaction must have before it is counted towards the balance. Transactions generated by this node are counted immediately. Typically, externally-generated transactions are payments to this wallet and transactions generated by this node are payments to other wallets. Use `0` to count unconfirmed transactions. Default is `1` |
+
+_Parameter #3---whether to add the balance from transactions locked via InstantSend_
+
+| Name | Type | Presence | Description |
+| --------- | ---- | ----------------------- | ---------------------------------------------------- |
+| addlocked | bool | Optional (exactly 1) | Add the balance from InstantSend locked transactions |
+
+_Parameter #4---whether to include watch-only addresses_
+
+| Name | Type | Presence | Description |
+| ------------------ | ---- | -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| Include Watch-Only | bool | Optional (0 or 1) | If set to `true`, include watch-only addresses in details and calculations as if they were regular addresses belonging to the wallet. If set to `false` (the default for non-watching only wallets), treat watch-only addresses as if they didn't belong to this wallet. As of Dash Core 18.1, `true` is used as the default for watching-only wallets. |
+
+_Parameter #5---avoids partial respends_
+
+| Name | Type | Presence | Description |
+| ----------- | ---- | -------------------- | --------------------------------------------------------------------------------------------------------------------------- |
+| avoid_reuse | bool | Optional (0 or 1) | Do not include balance in dirty outputs; addresses are considered dirty if they have previously been used in a transaction. |
+
+_Result---the balance in Dash_
+
+| Name | Type | Presence | Description |
+| -------- | ------------- | ----------------------- | ---------------------------------------------------- |
+| `result` | number (dash) | Required (exactly 1) | The balance of the account (or all accounts) in dash |
+
+_Examples from Dash Core 0.17.0_
+
+Get the balance, including transactions with at least three confirmations and those spent to watch-only addresses. Do not include InstantSend locked transactions.
+
+```bash
+dash-cli -testnet getbalance "*" 3 false true
+```
+
+Result:
+
+```json
+0.00000000
+```
+
+Get the balance, including transactions with at least three confirmations and those spent to watch-only addresses. Include the balance from InstantSend locked transactions.
+
+```bash
+dash-cli -testnet getbalance "" 3 true true
+```
+
+Result:
+
+```json
+1.00000000
+```
+
+_See also_
+
+* [GetBalances](../api/remote-procedure-calls-wallet.md#getbalances): returns an object with all balances denominated in DASH.
+* [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.
+
+## GetBalances
+
+The `getbalances` RPC returns an object with all available balances denominated in DASH.
+
+_Result---balances in Dash_
+
+| Name | Type | Presence | Description |
+| --------------------- | ------- | --------------------------------------------- | ---------------------------------------------------------------------------------------------------- |
+| `result` | object | Required (exactly 1) | A JSON object returns an object with all balances in DASH. |
+| → `mine` | object | Optional (1 or more) | A JSON object that has balances from outputs that the wallet can sign. |
+| →→`trusted` | numeric | Optional (1 or more) | Trusted balance (outputs created by the wallet or confirmed outputs) |
+| →→`untrusted_pending` | numeric | Optional (1 or more) | Untrusted pending balance (outputs created by others that are in the mempool) |
+| →→`immature` | numeric | Optional (1 or more) | Balance from immature coinbase outputs |
+| →→`used` | numeric | Only present if avoid_reuse is set | Balance from coins sent to addresses that were previously spent from (potentially privacy violating) |
+| →→`coinjoin` | numeric | Optional (1 or more) | CoinJoin balance (outputs with enough rounds created by the wallet via mixing). |
+| →`watchonly` | object | not present if wallet does not watch anything | Watchonly balances. |
+| →→`trusted` | numeric | Optional (1 or more) | Trusted balance (outputs created by the wallet or confirmed outputs). |
+| →→`untrusted_pending` | numeric | Optional (1 or more) | Untrusted pending balance (outputs created by others that are in the mempool). |
+| →→`immature` | numeric | Optional (1 or more) | Balance from immature coinbase outputs. |
+
+_Example from Dash Core 18.2.0_
+
+```bash
+dash-cli getbalances
+```
+
+Result:
+
+```
+"mine": {
+ "trusted": 0.00000000,
+ "untrusted_pending": 0.00000000,
+ "immature": 0.00000000,
+ "used": 0.00000000,
+ "coinjoin": 0.00000000
+ }
+
+```
+
+_See also_
+
+* [GetBalance](../api/remote-procedure-calls-wallet.md#getbalance): gets the balance in decimal dash across all accounts or for a particular account.
+* [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.
+
+## GetNewAddress
+
+:::{note}
+Requires [wallet](../resources/glossary.md#wallet) support (**unavailable on masternodes**).
+:::
+
+The [`getnewaddress` RPC](../api/remote-procedure-calls-wallet.md#getnewaddress) returns a new Dash address for receiving payments. If `label` is specified, the address is added to the address book so payments received with the address will be associated with `label`.
+
+_Parameter #1---an account name_
+
+| Name | Type | Presence | Description |
+| ------- | ------ | -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `label` | string | Optional (0 or 1) | The label name for the address to be linked to. If not provided, the default label `""` is used. It can also be set to the empty string `""` to represent the default label. The label does not need to exist, it will be created if there is no label by the given name. |
+
+_Result---a dash address never previously returned_
+
+| Name | Type | Presence | Description |
+| -------- | --------------- | ----------------------- | --------------------- |
+| `result` | string (base58) | Required (exactly 1) | The new Dash address. |
+
+_Example from Dash Core 0.17.0_
+
+Create a new address in the "doc test" account:
+
+```bash
+dash-cli -testnet getnewaddress "doc test"
+```
+
+Result:
+
+```text
+yPuNTqCGzXtU3eEV5jHvhhJkzEPyJLmVkb
+```
+
+_See also_
+
+* [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.
+* [GetBalance](../api/remote-procedure-calls-wallet.md#getbalance): gets the balance in decimal dash across all accounts or for a particular account.
+
+## GetRawChangeAddress
+
+:::{note}
+Requires [wallet](../resources/glossary.md#wallet) support (**unavailable on masternodes**).
+:::
+
+The [`getrawchangeaddress` RPC](../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.
+
+_Parameters: none_
+
+_Result---a P2PKH address which can be used in raw transactions_
+
+| Name | Type | Presence | Description |
+| -------- | --------------- | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| `result` | string (base58) | Required (exactly 1) | A P2PKH address which has not previously been returned by this RPC. The address will be removed from the keypool but not marked as a receiving address, so RPCs such as the [`dumpwallet` RPC](../api/remote-procedure-calls-wallet.md#dumpwallet) will show it as a change address. The address may already have been part of the keypool, so other RPCs such as the [`dumpwallet` RPC](../api/remote-procedure-calls-wallet.md#dumpwallet) may have disclosed it previously. If the wallet is unlocked, its keypool will also be filled to its max (by default, 100 unused keys). If the wallet is locked and its keypool is empty, this RPC will fail |
+
+_Example from Dash Core 0.12.2_
+
+```bash
+dash-cli -testnet getrawchangeaddress
+```
+
+Result:
+
+```text
+yXBr9BiJmugTzHPgByDmvjJMAkvhTmXVJ8
+```
+
+_See also_
+
+* [GetNewAddress](../api/remote-procedure-calls-wallet.md#getnewaddress): returns a new Dash address for receiving payments. If an account is specified, payments received with the address will be credited to that account.
+
+## GetReceivedByAddress
+
+:::{note}
+Requires [wallet](../resources/glossary.md#wallet) support (**unavailable on masternodes**).
+:::
+
+![Warning icon](https://raw.githubusercontent.com/dashpay/docs-core/main/img/icons/icon_warning.svg) Note: This RPC only returns a balance for addresses contained in the local wallet.
+
+The [`getreceivedbyaddress` RPC](../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.
+
+_Parameter #1---the address_
+
+| Name | Type | Presence | Description |
+| ------- | ------ | ----------------------- | ------------------------------------------------------------------------------------------------------------------ |
+| Address | string | Required (exactly 1) | **Only works for addresses contained in the local wallet**
The address whose transactions should be tallied |
+
+_Parameter #2---the minimum number of confirmations_
+
+| Name | Type | Presence | Description |
+| ------------- | ------------ | -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| Confirmations | number (int) | Optional (0 or 1) | The minimum number of confirmations an externally-generated transaction must have before it is counted towards the balance. Transactions generated by this node are counted immediately. Typically, externally-generated transactions are payments to this wallet and transactions generated by this node are payments to other wallets. Use `0` to count unconfirmed transactions. Default is `1` |
+
+_Parameter #3---whether to include transactions locked via InstantSend_
+
+| Name | Type | Presence | Description |
+| --------- | ---- | ----------------------- | ---------------------------------------------------- |
+| addlocked | bool | Optional (exactly 1) | Add the balance from InstantSend locked transactions |
+
+_Result---the amount of dash received_
+
+| Name | Type | Presence | Description |
+| -------- | ------------- | ----------------------- | ---------------------------------------------------------------------------------------- |
+| `result` | number (dash) | Required (exactly 1) | The amount of dash received by the address, excluding coinbase transactions. May be `0` |
+
+_Example from Dash Core 0.13.0_
+
+Get the dash received for a particular address, only counting
+transactions with six or more confirmations (ignore InstantSend locked transactions):
+
+```bash
+dash-cli -testnet getreceivedbyaddress yYoCWcjbykWsQJ7MVJrTMeQd8TZe5N4Q7g 6
+```
+
+Result:
+
+```json
+0.00000000
+```
+
+Get the dash received for a particular address, only counting
+transactions with six or more confirmations (include InstantSend locked transactions):
+
+```bash
+dash-cli -testnet getreceivedbyaddress yYoCWcjbykWsQJ7MVJrTMeQd8TZe5N4Q7g 6 true
+```
+
+Result:
+
+```json
+0.30000000
+```
+
+_See also: none_
+
+## GetReceivedByLabel
+
+:::{note}
+Requires [wallet](../resources/glossary.md#wallet) support (**unavailable on masternodes**).
+:::
+
+The [`getreceivedbylabel` RPC](../api/remote-procedure-calls-wallet.md#getreceivedbylabel) returns the total amount received by addresses with