Evo RPCs#

BLS#

Added in Dash Core 0.13.0

The bls RPC provides a set of commands to execute BLS-related actions.

Note

Updated in Dash Core 24.0.0

Boolean arguments must be passed as JSON true or false. See Request Format for details.

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=false)

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

dash-cli -testnet bls fromsecret 32c017a69fb03e0b8c1be270974570a350b043a685e9acbdc6493dbd9f8a7f1a

Result:

{
  "secret": "32c017a69fb03e0b8c1be270974570a350b043a685e9acbdc6493dbd9f8a7f1a",
  "public": "90b75db03beab716159c3d80a448954a0ff2a10e25d260934c29839abe68abc546f53a0ec83e8201b22eb48e8e61eb4e",
  "scheme": "basic"
}

See also

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)

DEPRECATED in Dash Core 23.0.0: Can be set if -deprecatedrpc=legacy_mn is passed
Use the legacy BLS scheme (default=false)

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)

dash-cli -testnet bls generate

Result:

{
  "secret": "32c017a69fb03e0b8c1be270974570a350b043a685e9acbdc6493dbd9f8a7f1a",
  "public": "90b75db03beab716159c3d80a448954a0ff2a10e25d260934c29839abe68abc546f53a0ec83e8201b22eb48e8e61eb4e",
  "scheme": "basic"
}

See also

GetChainLockByHeight#

Added in version 24.0.0.

The getchainlockbyheight RPC reads a historical ChainLock from the coinbase transactions on disk. Each CbTx carries the best ChainLock known to the miner, so the RPC searches the active chain for the coinbase that embeds a ChainLock for the requested height.

Only ChainLocks that have been embedded in a later block’s coinbase on the active chain can be returned. The current best ChainLock is unavailable until it has been embedded; use getbestchainlock to read it. Heights skipped by coinbase ChainLocks cannot be returned, even if they are ChainLocked. A completed lookup with no matching embedded ChainLock returns Chainlock not found for height. Coinbase ChainLocks only exist from v20 activation onward. Blocks are read on demand, so a pruned node may fail if a required block is no longer available.

Parameter #1—block height

Name

Type

Presence

Description

height

number (int)

Required
(exactly 1)

Block height. Must be non-negative

Result—ChainLock information

Name

Type

Presence

Description

result

object

Required
(exactly 1)

ChainLock information

→
height

number (int)

Required
(exactly 1)

ChainLocked height

→
blockhash

string (hex)

Required
(exactly 1)

Hash of the ChainLocked block

→
signature

string (hex)

Required
(exactly 1)

BLS signature of the ChainLock

→
cbtx_height

number (int)

Required
(exactly 1)

Height of the block whose coinbase embedded the ChainLock

Example from Dash Core 24.0.0

dash-cli -testnet getchainlockbyheight 1571700

Result:

{
  "height": 1571700,
  "blockhash": "0000008e99ca26052e53ce5ece4f3533b5df28dce57a44fb2eae553ad164aefa",
  "signature": "81d6e32edfb4d7a3b7d3f11ca52c37b3976abeae7d190fda8c809d79d4155d25bcadf0012b85046ee09ba43f8aae4e2b01377b753985897753c79eb021c37a38c4a98f8ba83c179a93d964a79b9f4b0aae892c2527d3c487443c3f1d17f1aac3",
  "cbtx_height": 1571701
}

See also

GetQuorumProofChain#

Added in version 24.0.0.

The getquorumproofchain RPC generates a compact DASHNC02 mining-transaction proof that links a trusted checkpoint block to a later ChainLocked target block. Optionally, it also returns authenticated openings of a Platform quorum commitment and EvoNode masternode list entries at the target. The proof can be checked with the verifyquorumproofchain RPC.

The RPC reads required historical blocks on demand, without an additional index or startup scan, and keeps what it reads in bounded in-memory caches (up to about 50 MiB). The node must retain the required historical blocks to generate proofs. Generating a proof can take some time, so consider using no RPC timeout (dash-cli -rpcclienttimeout=0).

Parameter #1—checkpoint hash

Name

Type

Presence

Description

checkpoint_hash

string (hex)

Required
(exactly 1)

Release checkpoint block hash. The block must be on the active chain

Parameter #2—minimum height

Name

Type

Presence

Description

height

number (int)

Optional
(0 or 1)

Minimum certified target height. 0 selects the latest available ChainLock. Default: 0

Parameter #3—quorum hash

Name

Type

Presence

Description

quorum_hash

string (hex)

Optional
(0 or 1)

Platform quorum hash to open. The quorum must be active at the target. Default: ""

Parameter #4—LLMQ type

Name

Type

Presence

Description

llmq_type

number (int)

Optional
(0 or 1)

The quorum type. Required with quorum_hash and must be 0 without it. Default: 0

Parameter #5—node count

Name

Type

Presence

Description

node_count

number (int)

Optional
(0 or 1)

Number of eligible EvoNode records to open (0 to 15). Default: 0

Result—proof data

Name

Type

Presence

Description

result

object

Required
(exactly 1)

Proof data

→
proof_hex

string (hex)

Required
(exactly 1)

DASHNC02 proof bytes

→
bootstrap_hex

string (hex)

Required
(exactly 1)

Proof and record openings. Empty when no records are requested (quorum_hash and node_count not set)

→
target

object

Required
(exactly 1)

Authenticated target state

→ →
network

number (int)

Required
(exactly 1)

0 for mainnet, 1 for testnet

→ →
height

number (int)

Required
(exactly 1)

Height of the target block

→ →
block_hash

string (hex)

Required
(exactly 1)

Hash of the target block

→ →
masternode_root

string (hex)

Required
(exactly 1)

Masternode list merkle root at the target block

→ →
quorum_root

string (hex)

Required
(exactly 1)

Quorum merkle root at the target block

Example from Dash Core 24.0.0

Generate a proof from the latest testnet checkpoint (block 1380000) to the latest ChainLock:

dash-cli -testnet -rpcclienttimeout=0 getquorumproofchain \
  000000a98084beaf77ed26a905a7d59979009e23367a55b5d634962d7d65a1f9

Result (proof_hex truncated):

{
  "proof_hex": "444153484e43303201a00e1500f9a1657d2d9634d6b5557a36239e007999d5a705a926ed77afbe8480a9000000ca6719a8db64766de7d82fa701fa0176e4d66564d1dc8fa15e697e79bb11a65f...",
  "bootstrap_hex": "",
  "target": {
    "network": 1,
    "height": 1571714,
    "block_hash": "0000006daabb2da6ded3fa872b2940d7916d5dc5dab63937487c2be759a02c4c",
    "masternode_root": "97f6eb2dff6ad2795dd20aabc454a21a5dbf37e88861dad5fbafe73487cc33e4",
    "quorum_root": "6044d1854baea0623ab1999022ccd53326ac154d567751b38e2bd70891ba9027"
  }
}

See also

ProTx#

Added in Dash Core 0.13.0

The protx RPC provides a set of commands to execute ProTx related actions.

Note

Updated in Dash Core 24.0.0

Boolean arguments must be passed as JSON true or false, and numeric arguments as JSON numbers, except the baseBlock and block arguments of protx diff and protx listdiff (which still accept a block height as a string) and the operatorReward and bare-port Platform arguments of the registration RPCs (which accept a number or a string). See Request Format for details.

ProTx Diff#

The protx diff RPC calculates a diff and a proof between two masternode list.

Parameter #1—start block

Name

Type

Presence

Description

baseBlock

string (hex) or number (int)

Required
(Exactly 1)

The starting block hash or height

Parameter #2—end block

Name

Type

Presence

Description

block

string (hex) or number (int)

Required
(Exactly 1)

The ending block hash or 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
3 - Basic BLS scheme with extended addresses and payouts (available after v24 activation)

→ →
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

Optional
(0 or 1)

DEPRECATED in Dash Core 23.0.0 - Use addresses['core_p2p'][0] instead
The IP address/Port of the masternode. Returned only if config option -deprecatedrpc=service is passed since Dash Core 24.0.0.

→ →
addresses

object

Required
(exactly 1)

Added in Dash Core 23.0.0
Masternode network addresses object

→ → →
core_p2p

array

Required
(exactly 1)

Array of core P2P address strings in ADDR:PORT format

→ → →
platform_p2p

array

Optional
(0 or 1)

Array of platform P2P address strings in ADDR:PORT format (evonodes only)

→ → →
platform_https

array

Optional
(0 or 1)

Array of platform HTTPS address strings in ADDR:PORT format (evonodes only)

→ →
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)

DEPRECATED in Dash Core 23.0.0 - Use addresses['platform_https'][0] instead
TCP port of Platform HTTP/API interface (evonodes only). Returned only if config option -deprecatedrpc=service is passed since Dash Core 24.0.0.

→ →
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
Updated in Dash Core 24.0.0
The owner’s payout address. Only included if the extended parameter is set to true. Not included for version 3 (extended address) entries, which return payouts instead.

→ →
payouts

array

Optional
(0 or 1)

Added in Dash Core 24.0.0
Owner masternode reward payout shares. Only included if the extended parameter is set to true.

→ → →
Payout share

object

Required
(1 or more)

A payout share

→ → → →
address

string

Required
(exactly 1)

Dash address used for this owner payout

→ → → →
script

string (hex)

Required
(exactly 1)

Owner payout scriptPubKey

→ → → →
reward

number (int)

Required
(exactly 1)

Owner payout share in basis points

→ →
shares

array

Optional
(0 or 1)

Added in Dash Core 24.0.0
Collateral shares of a shared masternode. Only included if the extended parameter is set to true.

→ → →
Share

object

Required
(1 or more)

A collateral share

→ → → →
amount

number (int)

Required
(exactly 1)

Collateral contribution in duffs

→ → → →
refundAddress

string

Required
(exactly 1)

Dash address the principal is refunded to at dissolution

→ → → →
refundScript

string (hex)

Required
(exactly 1)

Refund scriptPubKey

→ → → →
rewardAddress

string

Required
(exactly 1)

Dash address this share’s owner rewards are paid to

→ → → →
rewardScript

string (hex)

Required
(exactly 1)

Reward scriptPubKey

→ → → →
ownerAddress

string

Required
(exactly 1)

Dash address of the share owner key

→ →
operatorPayoutAddress

string

Optional
(0 or 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

Required
(exactly 1)

Added in Coinbase Transaction version 3 (Dash Core 20.0.0)
An array of objects containing ChainLock signature details. Empty before 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 23.0.0

dash-cli -testnet protx diff 100000 100500 true

Result (truncated):

{
  "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",
      "addresses": {
        "core_p2p": [
          "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",
      "addresses": {
        "core_p2p": [
          "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": [
  ]
}

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.
Updated in Dash Core 24.0.0
The block must be on the active chain; otherwise the RPC fails with Block is not in main chain.

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

Optional
(0 or 1)

The collateral address. Only included if -txindex is enabled

→
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

Optional
(0 or 1)

DEPRECATED in Dash Core 23.0.0 - Use addresses['core_p2p'][0] instead
The masternode’s IP:Port. Returned only if config option -deprecatedrpc=service is passed since Dash Core 24.0.0.

→ →
addresses

object

Required
(exactly 1)

Added in Dash Core 23.0.0
Masternode network addresses object

→ → →
core_p2p

array

Required
(exactly 1)

Array of core P2P address strings in ADDR:PORT format

→ → →
platform_p2p

array

Optional
(0 or 1)

Array of platform P2P address strings in ADDR:PORT format (evonodes only)

→ → →
platform_https

array

Optional
(0 or 1)

Array of platform HTTPS address strings in ADDR:PORT format (evonodes only)

→ →
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

Optional
(0 or 1)

Updated in Dash Core 24.0.0
The owner address. Not included for shared masternodes.

→ →
votingAddress

string

Required
(exactly 1)

The voting address

→ →
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)

→ →
platformP2PPort

number (int)

Optional
(0 or 1)

DEPRECATED in Dash Core 23.0.0 - Use addresses['platform_p2p'][0] instead
TCP port of Platform P2P (evonodes only). Returned only if config option -deprecatedrpc=service is passed since Dash Core 24.0.0.

→ →
platformHTTPPort

number (int)

Optional
(0 or 1)

DEPRECATED in Dash Core 23.0.0 - Use addresses['platform_https'][0] instead
TCP port of Platform HTTP/API interface (evonodes only). Returned only if config option -deprecatedrpc=service is passed since Dash Core 24.0.0.

→ →
payoutAddress

string

Optional
(0 or 1)

Updated in Dash Core 24.0.0
The owner’s payout address. Not included for version 3 (extended address) masternodes, which return payouts instead, or for shared masternodes.

→ →
payouts

array

Optional
(0 or 1)

Added in Dash Core 24.0.0
Owner masternode reward payout shares

→ → →
Payout share

object

Required
(1 or more)

A payout share

→ → → →
address

string

Required
(exactly 1)

Dash address used for this owner payout

→ → → →
script

string (hex)

Required
(exactly 1)

Owner payout scriptPubKey

→ → → →
reward

number (int)

Required
(exactly 1)

Owner payout share in basis points

→ →
shares

array

Optional
(0 or 1)

Added in Dash Core 24.0.0
Collateral shares of a shared masternode

→ → →
Share

object

Required
(1 or more)

A collateral share

→ → → →
amount

number (int)

Required
(exactly 1)

Collateral contribution in duffs

→ → → →
refundAddress

string

Required
(exactly 1)

Dash address the principal is refunded to at dissolution

→ → → →
refundScript

string (hex)

Required
(exactly 1)

Refund scriptPubKey

→ → → →
rewardAddress

string

Required
(exactly 1)

Dash address this share’s owner rewards are paid to

→ → → →
rewardScript

string (hex)

Required
(exactly 1)

Reward scriptPubKey

→ → → →
ownerAddress

string

Required
(exactly 1)

Dash address of the share owner key

→ →
earlyPeriodBlocks

number (int)

Optional
(0 or 1)

Added in Dash Core 24.0.0
Length in blocks of the early period during which unilateral dissolution is penalized (shared masternodes only)

→ →
earlyPenalty

number (int)

Optional
(0 or 1)

Added in Dash Core 24.0.0
Penalty in duffs for unilateral dissolution during the early period (shared masternodes only)

→ →
pubKeyOperator

string (hex)

Required
(exactly 1)

The operator public key

→ →
operatorPayoutAddress

string

Optional
(0 or 1)

The operator’s payout address

→
confirmations

number (int)

Required
(exactly 1)

The number of confirmations this ProTx has

→
wallet

object

Optional
(0 or 1)

An object containing a wallet details related to this ProTx. Only included if a wallet is available

→ →
hasOwnerKey

bool

Required
(exactly 1)

Updated in Dash Core 24.0.0
The owner key (for shared masternodes, any share owner key) is present in this wallet

→ →
hasOperatorKey

bool

Required
(exactly 1)

Always false: operator BLS keys are not stored in the 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)

Updated in Dash Core 24.0.0
Any owner payout script (for shared masternodes, any share reward 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

number (int)

Required
(exactly 1)

The value of this node’s CoinJoin queue (dsq) counter when it last accepted a new queue from this masternode. 0 if none has been accepted

→ →
mixingTxCount

number (int)

Required
(exactly 1)

Number of CoinJoin mixing transactions (dstx) received from this masternode since that queue

→ →
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

→ →
is_platform_banned

bool

Required
(exactly 1)

Added in Dash Core 23.0.0
Platform ban status

→ →
platform_ban_height_updated

integer

Required
(exactly 1)

Added in Dash Core 23.0.0
Height when the Platform ban was updated

Example from Dash Core 23.10.0

dash-cli -testnet protx info\
 b43dadbd485e4d1e1d202ea5180f0ad4e8e7f05e97a7e566a764ed714356bd1f

Result:

{
  "type": "Regular",
  "proTxHash": "b43dadbd485e4d1e1d202ea5180f0ad4e8e7f05e97a7e566a764ed714356bd1f",
  "collateralHash": "acc1127471fb4417e2ca6420948143c82dfdd3595d5cb4336e19356df4e5715c",
  "collateralIndex": 1,
  "collateralAddress": "yMitd7GcJRUF8AeWhT7nWB9bDoruWM7tRb",
  "operatorReward": 0,
  "state": {
    "version": 1,
    "service": "47.111.181.207:20001",
    "addresses": {
      "core_p2p": [
        "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,
    "is_platform_banned": false,
    "platform_ban_height_updated": 0
  }
}

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
Updated in Dash Core 24.0.0: wallet also matches masternodes where the wallet holds a share owner key, a share refund or reward address, or any owner payout address

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

Optional
(0 or 1)

The collateral address. Only included if -txindex is enabled

→
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

Optional
(0 or 1)

DEPRECATED in Dash Core 23.0.0 - Use addresses['core_p2p'][0] instead
The masternode’s IP:Port. Returned only if config option -deprecatedrpc=service is passed since Dash Core 24.0.0.

→ →
addresses

object

Required
(exactly 1)

Added in Dash Core 23.0.0
Masternode network addresses object

→ → →
core_p2p

array

Required
(exactly 1)

Array of core P2P address strings in ADDR:PORT format

→ → →
platform_p2p

array

Optional
(0 or 1)

Array of platform P2P address strings in ADDR:PORT format (evonodes only)

→ → →
platform_https

array

Optional
(0 or 1)

Array of platform HTTPS address strings in ADDR:PORT format (evonodes only)

→ →
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

Optional
(0 or 1)

Updated in Dash Core 24.0.0
The owner address. Not included for shared masternodes.

→ →
votingAddress

string

Required
(exactly 1)

The voting address

→ →
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)

→ →
platformP2PPort

number (int)

Optional
(0 or 1)

DEPRECATED in Dash Core 23.0.0 - Use addresses['platform_p2p'][0] instead
TCP port of Platform P2P (evonodes only). Returned only if config option -deprecatedrpc=service is passed since Dash Core 24.0.0.

→ →
platformHTTPPort

number (int)

Optional
(0 or 1)

DEPRECATED in Dash Core 23.0.0 - Use addresses['platform_https'][0] instead
TCP port of Platform HTTP/API interface (evonodes only). Returned only if config option -deprecatedrpc=service is passed since Dash Core 24.0.0.

→ →
payoutAddress

string

Optional
(0 or 1)

Updated in Dash Core 24.0.0
The owner’s payout address. Not included for version 3 (extended address) masternodes, which return payouts instead, or for shared masternodes.

→ →
payouts

array

Optional
(0 or 1)

Added in Dash Core 24.0.0
Owner masternode reward payout shares

→ → →
Payout share

object

Required
(1 or more)

A payout share

→ → → →
address

string

Required
(exactly 1)

Dash address used for this owner payout

→ → → →
script

string (hex)

Required
(exactly 1)

Owner payout scriptPubKey

→ → → →
reward

number (int)

Required
(exactly 1)

Owner payout share in basis points

→ →
shares

array

Optional
(0 or 1)

Added in Dash Core 24.0.0
Collateral shares of a shared masternode

→ → →
Share

object

Required
(1 or more)

A collateral share

→ → → →
amount

number (int)

Required
(exactly 1)

Collateral contribution in duffs

→ → → →
refundAddress

string

Required
(exactly 1)

Dash address the principal is refunded to at dissolution

→ → → →
refundScript

string (hex)

Required
(exactly 1)

Refund scriptPubKey

→ → → →
rewardAddress

string

Required
(exactly 1)

Dash address this share’s owner rewards are paid to

→ → → →
rewardScript

string (hex)

Required
(exactly 1)

Reward scriptPubKey

→ → → →
ownerAddress

string

Required
(exactly 1)

Dash address of the share owner key

→ →
earlyPeriodBlocks

number (int)

Optional
(0 or 1)

Added in Dash Core 24.0.0
Length in blocks of the early period during which unilateral dissolution is penalized (shared masternodes only)

→ →
earlyPenalty

number (int)

Optional
(0 or 1)

Added in Dash Core 24.0.0
Penalty in duffs for unilateral dissolution during the early period (shared masternodes only)

→ →
pubKeyOperator

string (hex)

Required
(exactly 1)

The operator public key

→ →
operatorPayoutAddress

string

Optional
(0 or 1)

The operator’s payout address

→
confirmations

number (int)

Required
(exactly 1)

The number of confirmations this ProTx has

→
wallet

object

Optional
(0 or 1)

An object containing a wallet details related to this ProTx. Only included if a wallet is available

→ →
hasOwnerKey

bool

Required
(exactly 1)

Updated in Dash Core 24.0.0
The owner key (for shared masternodes, any share owner key) is present in this wallet

→ →
hasOperatorKey

bool

Required
(exactly 1)

Always false: operator BLS keys are not stored in the 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)

Updated in Dash Core 24.0.0
Any owner payout script (for shared masternodes, any share reward 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

number (int)

Required
(exactly 1)

The value of this node’s CoinJoin queue (dsq) counter when it last accepted a new queue from this masternode. 0 if none has been accepted

→ →
mixingTxCount

number (int)

Required
(exactly 1)

Number of CoinJoin mixing transactions (dstx) received from this masternode since that queue

→ →
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

→ →
is_platform_banned

bool

Required
(exactly 1)

Added in Dash Core 23.0.0
Platform ban status

→ →
platform_ban_height_updated

integer

Required
(exactly 1)

Added in Dash Core 23.0.0
Height when the Platform ban was updated

Example from Dash Core 23.0.0

dash-cli -testnet protx list

Result:

[
  "2b4a07a9b04dc42a0c19b85edb60954a27acaadfe3ee21d0171385778f34e1c2",
  "61e6d780178d353940c4cb9b3073ac0c50792bbcf0b15c1750d2028b71e34929",
  "ca193751f3cbed2aa4f1b33b0acc48c7ed8b9a3679858d69cf23157a4f545176",
  "ba1b3330e16a0876b7a186e7ceb689f03ec646e611e91d7139de021bbf13afdd"
]

List of ProTxs which are active/valid at the given chain height.

dash-cli -testnet protx list valid false 7090

Result:

[
  "c48a44a9493eae641bea36992bc8c27eaaa33adb1884960f55cd259608d26d2f"
]

Detailed list of ProTxs which are active/valid at the given chain height.

dash-cli -testnet protx list valid true 7090

Result:

[
  {
    "type": "Regular",
    "proTxHash": "c48a44a9493eae641bea36992bc8c27eaaa33adb1884960f55cd259608d26d2f",
    "collateralHash": "e3270ff48c4b802d56ee58d3d53777f7f9c289964e4df0842518075fc81345b1",
    "collateralIndex": 3,
    "collateralAddress": "yYpzTXjVx7A5uohsmW8sRy7TJp4tihVuZg",
    "operatorReward": 0,
    "state": {
      "version": 1,
      "addresses": {
        "core_p2p": [
          "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,
      "is_platform_banned": false,
      "platform_ban_height_updated": 0
    }
  }
]

ProTx List Diff#

The protx listdiff RPC calculates a full MN list diff between two masternode lists.

Note

Updated in Dash Core 24.0.0

Both blocks must be on the active chain; otherwise the RPC fails with Block is not in main chain.

Parameter #1—baseBlock

Name

Type

Presence

Description

baseBlock

string (hex) or number (int)

Required
(exactly 1)

The starting block hash or height

Parameter #2—block

Name

Type

Presence

Description

block

string (hex) or number (int)

Required
(exactly 1)

The ending block hash or height

Result—the masternode list diff

Name

Type

Presence

Description

result

object

Required
(exactly 1)

An object containing the masternode list diff

→
baseHeight

number (int)

Required
(exactly 1)

Height of base (starting) block

→
blockHeight

number (int)

Required
(exactly 1)

Height of target (ending) block

→
addedMNs

array

Required
(exactly 1)

Added masternodes

→ →
Masternode

object

Optional
(0 or more)

The masternode’s details

→ → →
type

string

Required
(exactly 1)

The type of masternode

→ → →
proTxHash

string (hex)

Required
(exactly 1)

Hash of the masternode’s initial ProRegTx

→ → →
collateralHash

string (hex)

Required
(exactly 1)

Collateral transaction hash

→ → →
collateralIndex

number (int)

Required
(exactly 1)

Collateral transaction output index

→ → →
collateralAddress

string

Optional
(0 or 1)

Dash address used for collateral

→ → →
operatorReward

number

Required
(exactly 1)

The operator reward %, between 0.00 and 100.00

→ → →
state

object

Required
(exactly 1)

The masternode state

→ → → →
version

number

Required
(exactly 1)

Version of the masternode state

→ → → →
service

string

Optional
(0 or 1)

DEPRECATED in Dash Core 23.0.0 - Use addresses['core_p2p'][0] instead
The IP address/Port of the masternode. Returned only if config option -deprecatedrpc=service is passed since Dash Core 24.0.0.

→ → → →
addresses

object

Required
(exactly 1)

Added in Dash Core 23.0.0
Masternode network addresses object

→ → → → →
core_p2p

array

Optional
(0 or 1)

Array of core P2P address strings in ADDR:PORT format

→ → → → →
platform_p2p

array

Optional
(0 or 1)

Array of platform P2P address strings in ADDR:PORT format (evonodes only)

→ → → → →
platform_https

array

Optional
(0 or 1)

Array of platform HTTPS address strings in ADDR:PORT format (evonodes only)

→ → → →
registeredHeight

number (int)

Required
(exactly 1)

Height masternode was registered

→ → → →
lastPaidHeight

number (int)

Required
(exactly 1)

Height masternode was last paid

→ → → →
consecutivePayments

number (int)

Required
(exactly 1)

Consecutive payments the masternode has received in the payment cycle

→ → → →
PoSePenalty

number (int)

Required
(exactly 1)

Proof of Service penalty score

→ → → →
PoSeRevivedHeight

number (int)

Required
(exactly 1)

Height masternode recovered from Proof of Service violations

→ → → →
PoSeBanHeight

number (int)

Required
(exactly 1)

Height masternode was banned for Proof of Service violations

→ → → →
revocationReason

number (int)

Required
(exactly 1)

Reason for ProUpRegTx revocation

→ → → →
ownerAddress

string

Optional
(0 or 1)

Updated in Dash Core 24.0.0
Dash address used for payee updates and proposal voting. Not included for shared masternodes.

→ → → →
votingAddress

string

Required
(exactly 1)

Dash address used for voting

→ → → →
platformNodeID

string (hex)

Optional
(0 or 1)

Node ID derived from P2P public key for Platform P2P (evonodes only)

→ → → →
platformP2PPort

number (int)

Optional
(0 or 1)

DEPRECATED in Dash Core 23.0.0 - Use addresses['platform_p2p'][0] instead
TCP port of Platform P2P (evonodes only). Returned only if config option -deprecatedrpc=service is passed since Dash Core 24.0.0.

→ → → →
platformHTTPPort

number (int)

Optional
(0 or 1)

DEPRECATED in Dash Core 23.0.0 - Use addresses['platform_https'][0] instead
TCP port of Platform HTTP/API interface (evonodes only). Returned only if config option -deprecatedrpc=service is passed since Dash Core 24.0.0.

→ → → →
payoutAddress

string

Optional
(0 or 1)

Updated in Dash Core 24.0.0
Dash address used for masternode reward payments. Not included for version 3 (extended address) masternodes, which return payouts instead, or for shared masternodes.

→ → → →
payouts

array

Optional
(0 or 1)

Added in Dash Core 24.0.0
Owner masternode reward payout shares

→ → → → →
Payout share

object

Required
(1 or more)

A payout share

→ → → → → →
address

string

Required
(exactly 1)

Dash address used for this owner payout

→ → → → → →
script

string (hex)

Required
(exactly 1)

Owner payout scriptPubKey

→ → → → → →
reward

number (int)

Required
(exactly 1)

Owner payout share in basis points

→ → → →
shares

array

Optional
(0 or 1)

Added in Dash Core 24.0.0
Collateral shares of a shared masternode

→ → → → →
Share

object

Required
(1 or more)

A collateral share

→ → → → → →
amount

number (int)

Required
(exactly 1)

Collateral contribution in duffs

→ → → → → →
refundAddress

string

Required
(exactly 1)

Dash address the principal is refunded to at dissolution

→ → → → → →
refundScript

string (hex)

Required
(exactly 1)

Refund scriptPubKey

→ → → → → →
rewardAddress

string

Required
(exactly 1)

Dash address this share’s owner rewards are paid to

→ → → → → →
rewardScript

string (hex)

Required
(exactly 1)

Reward scriptPubKey

→ → → → → →
ownerAddress

string

Required
(exactly 1)

Dash address of the share owner key

→ → → →
earlyPeriodBlocks

number (int)

Optional
(0 or 1)

Added in Dash Core 24.0.0
Length in blocks of the early period during which unilateral dissolution is penalized (shared masternodes only)

→ → → →
earlyPenalty

number (int)

Optional
(0 or 1)

Added in Dash Core 24.0.0
Penalty in duffs for unilateral dissolution during the early period (shared masternodes only)

→ → → →
pubKeyOperator

string

Required
(exactly 1)

BLS public key used for operator signing

→ → → →
operatorPayoutAddress

string

Optional
(0 or 1)

Dash address used for operator reward payments

→
removedMNs

array

Required
(exactly 1)

An array of ProTx hashes of removed masternodes

→
updatedMNs

array

Required
(exactly 1)

Updated masternodes

→ →
ProTx hash

object

Optional
(0 or more)

Key: the masternode’s ProTx hash
Value: the masternode state diff (only the changed fields are included)

→ → →
version

number

Optional
(0 or 1)

Version of the masternode state diff

→ → →
service

string

Optional
(0 or 1)

DEPRECATED in Dash Core 23.0.0 - Use addresses['core_p2p'][0] instead
The IP address/Port of the masternode. Returned only if config option -deprecatedrpc=service is passed since Dash Core 24.0.0.

→ → →
addresses

object

Optional
(0 or 1)

Added in Dash Core 23.0.0
Masternode network addresses object. For an EvoNode on legacy (pre-extended) addresses, a diff that changes only the Platform ports pairs them with the placeholder address 255.255.255.255.
Updated in Dash Core 24.0.0
When the core P2P address of an EvoNode on legacy addresses changes, the complete object is returned, including platform_p2p and platform_https

→ → →
…other state fields

Optional
(0 or 1)

Any other changed field from the masternode state object above, including payouts, shares, earlyPeriodBlocks, earlyPenalty, and the deprecated platformP2PPort and platformHTTPPort (returned only if config option -deprecatedrpc=service is passed)

Example from Dash Core

dash-cli -testnet protx listdiff 7100 7135

Result:

{
  "baseHeight": 7100,
  "blockHeight": 7135,
  "addedMNs": [
    {
      "type": "Regular",
      "proTxHash": "682b3e58e283081c51f2e8e7a7de5c7312a2e8074affaf389fafcc39c4805404",
      "collateralHash": "4955dcb8f9f56705b2ce480369c8a0e50b05c3dd1770160c4ddd47515a87e290",
      "collateralIndex": 1,
      "collateralAddress": "ySbK2DePJxPzkeHD2ccnMmsJjvBK5tJSPU",
      "operatorReward": 0,
      "state": {
        "version": 1,
        "addresses": {
          "core_p2p": [
            "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

number (int)

Required
(exactly 1)

The collateral transaction output index

Parameter #3—Core P2P addresses

Name

Type

Presence

Description

coreP2PAddrs

string/array

Required
(exactly 1)

Updated in Dash Core 23.0.0 (previously ipAndPort)
Core P2P address(es) in the form ADDR:PORT. Can be a single string or an array of strings.
Must be unique on the network.
A legacy ProTx can only store a single entry; storing multiple entries requires upgrading to a version 3 ProTx.
Updated in Dash Core 24.0.0
For a version 3 ProTx, where masternodes require IPv4 (mainnet and, by default, regtest), the first entry must be IPv4, and on mainnet it must use port 9999. A legacy ProTx always requires a single IPv4 address, which must use port 9999 on mainnet and a different port on other networks.
Can be set to an empty string, 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/array

Required
(exactly 1)

Updated in Dash Core 24.0.0
The Dash address to use for masternode reward payments, or after v24 activation, an array of payout shares. Not compatible with legacy bls operator key.
An array must contain 1 to 8 payout shares. Each reward must be at least 100 and all reward values must total 10000.

→
Payout share

object

Required
(1 to 8)

A payout share

→ →
address

string

Required
(exactly 1)

The Dash payout address.

→ →
reward

number (int)

Required
(exactly 1)

The payout share in basis points.

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

dash-cli -testnet protx register\
 8b2eab3413abb6e04d17d1defe2b71039ba6b6f72ea1e5dab29bb10e7b745948 1\
 2.3.4.5:2345 yNLuVTXJbjbxgrQX5LSMi7hV19We8hT2d6\
 88d719278eef605d9c19037366910b59bc28d437de4a8db4d76fda6d6985dbdf10404fb9bb5cd0e8c22f4a914a6c5566\
 yNLuVTXJbjbxgrQX5LSMi7hV19We8hT2d6 5 yjJJLkYDUN6X8gWjXbCoKEXoiLeKxxMMRt

Result:

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

dash-cli -testnet protx register \
  b16e6f6ac71d16a8be46a78491bbdba20910287f59471a46514b88d7203bac6b 1 2.3.4.5:2345 \
  yNLuVTXJbjbxgrQX5LSMi7hV19We8hT2d6 \
  8ae227ffcbd4cbdc7ae2fe3e63264701ef6af1de71e6cade51867ecb7ed58b63862568522bab933987d0d043fa5590e1 \
  yNLuVTXJbjbxgrQX5LSMi7hV19We8hT2d6 5 yjJJLkYDUN6X8gWjXbCoKEXoiLeKxxMMRt \
  yUYTxqjpCfAAK4vgxXtBPywRBtZqsxN7Vy false

Result:

0300010001fe1caa50e5b8181be868fbd9fbd93affeb6c4a91a3c73373a6b25d548c7e6d41010000\
006b48304502210081d206a8332d5b8715ca831155ef5c7e339d33cde2b0b27310b95aafc8c560f9\
02204029d00d2b5515565321ec1fd6748fa0544b7356d9a389e4d1ce6ab4bb64d364012103c67d86\
944315838aea7ec80d390b5d09b91b62483370d4979da5ccf7a7df77a9feffffff01a6f0433e0000\
00001976a9145a375814e9caf5b8575a8221be246457e5c5c28d88ac00000000fd12010100000000\
006bac3b20d7884b51461a47597f281009a2dbbb9184a746bea8161dc76a6f6eb101000000000000\
00000000000000ffff0203040509291636e84d02310b0b458f3eb51d8ea8b2e684b7ce8ae227ffcb\
d4cbdc7ae2fe3e63264701ef6af1de71e6cade51867ecb7ed58b63862568522bab933987d0d043fa\
5590e11636e84d02310b0b458f3eb51d8ea8b2e684b7cef4011976a914fc136008111fcc7a05be6c\
ec66f97568727a9e5188acb3ccf680086ae11217236efcccd67b0b72e83c79a043d6c6d064378fdd\
5f21204120fac89c76d3f116d95a675e112ddbdbb7a78f957506299fe592662acd44b46f262d1c4d\
47d9401e0a569a5488728e09542d0545ab56f8249a4b21e03445fa411e

ProTx Register Legacy#

Warning

DEPRECATED in Dash Core 23.0.0: This RPC can be re-enabled with -deprecatedrpc=legacy_mn. No new legacy scheme masternode registrations will be permitted after the v24 fork.

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 registerRPC should be used instead. Legacy scheme BLS keys are created if a legacy key is explicitly generated using the bls generate legacy RPC.

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

number (int)

Required
(exactly 1)

The collateral transaction output index

Parameter #3—Core P2P addresses

Name

Type

Presence

Description

coreP2PAddrs

string/array

Required
(exactly 1)

Updated in Dash Core 23.0.0 (previously ipAndPort)
Core P2P address(es) in the form ADDR:PORT. Can be a single string or an array of strings.
Must be unique on the network.
A legacy ProTx can only store a single entry; storing multiple entries requires upgrading to a version 3 ProTx.
Must be an IPv4 address. On mainnet, the port must be 9999; on other networks, it must not be 9999.
Can be set to an empty string, 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 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

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

string

Required
(exactly 1)

The Dash address to use for masternode reward payments.
An array of payout shares is not accepted: this variant builds a legacy BLS scheme ProTx, which cannot carry a payout list.

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

dash-cli -testnet protx register_legacy \
  8b2eab3413abb6e04d17d1defe2b71039ba6b6f72ea1e5dab29bb10e7b745948 1 \
  2.3.4.5:2345 yNLuVTXJbjbxgrQX5LSMi7hV19We8hT2d6 \
  88d719278eef605d9c19037366910b59bc28d437de4a8db4d76fda6d6985dbdf10404fb9bb5cd0e8c22f4a914a6c5566 \
  yNLuVTXJbjbxgrQX5LSMi7hV19We8hT2d6 5 yjJJLkYDUN6X8gWjXbCoKEXoiLeKxxMMRt

Result:

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

dash-cli -testnet protx register_legacy \
  8b2eab3413abb6e04d17d1defe2b71039ba6b6f72ea1e5dab29bb10e7b745948 1 \
  2.3.4.5:2345 yNLuVTXJbjbxgrQX5LSMi7hV19We8hT2d6 \
  88d719278eef605d9c19037366910b59bc28d437de4a8db4d76fda6d6985dbdf10404fb9bb5cd0e8c22f4a914a6c5566 \
  yNLuVTXJbjbxgrQX5LSMi7hV19We8hT2d6 5 yjJJLkYDUN6X8gWjXbCoKEXoiLeKxxMMRt \
  yjJJLkYDUN6X8gWjXbCoKEXoiLeKxxMMRt false

Result:

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—Core P2P addresses

Name

Type

Presence

Description

coreP2PAddrs

string/array

Required
(exactly 1)

Updated in Dash Core 23.0.0 (previously ipAndPort)
Core P2P address(es) in the form ADDR:PORT. Can be a single string or an array of strings.
Must be unique on the network.
A legacy ProTx can only store a single entry; storing multiple entries requires upgrading to a version 3 ProTx.
Updated in Dash Core 24.0.0
For a version 3 ProTx, where masternodes require IPv4 (mainnet and, by default, regtest), the first entry must be IPv4, and on mainnet it must use port 9999. A legacy ProTx always requires a single IPv4 address, which must use port 9999 on mainnet and a different port on other networks.
Can be set to an empty string, 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/array

Required
(exactly 1)

Updated in Dash Core 24.0.0
The Dash address to use for masternode reward payments, or after v24 activation, an array of payout shares. Not compatible with legacy bls operator key.
An array must contain 1 to 8 payout shares. Each reward must be at least 100 and all reward values must total 10000.

→
Payout share

object

Required
(1 to 8)

A payout share

→ →
address

string

Required
(exactly 1)

The Dash payout address.

→ →
reward

number (int)

Required
(exactly 1)

The payout share in basis points.

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

dash-cli -testnet protx register_fund yakx4mMRptKhgfjedNzX5FGQq7kSSBF2e7\
 3.4.5.6:3456 yX2cDS4kcJ4LK4uq9Hd4TG7kURV3sGLZrw\
 0e02146e9c34cfbcb3f3037574a1abb35525e2ca0c3c6901dbf82ac591e30218d1711223b7ca956edf39f3d984d06d51\
 yX2cDS4kcJ4LK4uq9Hd4TG7kURV3sGLZrw 5 yakx4mMRptKhgfjedNzX5FGQq7kSSBF2e7

Result:

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

dash-cli -testnet protx register_fund yNLuVTXJbjbxgrQX5LSMi7hV19We8hT2d6 \
  3.4.5.6:3456 yURczr3qY31xkQZfFu8eZvKz19eAEPQxsd \
  0e02146e9c34cfbcb3f3037574a1abb35525e2ca0c3c6901dbf82ac591e30218d1711223b7ca956edf39f3d984d06d51 \
  yURczr3qY31xkQZfFu8eZvKz19eAEPQxsd 5 yUYTxqjpCfAAK4vgxXtBPywRBtZqsxN7Vy \
  yRMFHxcJ2aS2vfo5whhE2Gg73dfQVm8LAF false

Result:

030001000156701575e76bca5720fa364ea6efc4b713279710dd1b8906797d18bd7048b71a010000\
006b4830450221009178a387b3d82e3606e6484373508ef1ed4c1d7d98f8a0ca0851687c59edacaa\
02204d245d20689b5be1100536faaadbb1781e3a67a55e9ecc613adb2a34f419c3cd012103109325\
a92f9e6d31d2ebd0595d471275ae8d635db2a0c42358f387e1af69c14dfeffffff0200e876481700\
00001976a9141636e84d02310b0b458f3eb51d8ea8b2e684b7ce88ac8c7a918b300000001976a914\
372fd07f715c33ce88873a8e758d890e017cf02588ac00000000d101000000000000000000000000\
000000000000000000000000000000000000000000000000000000000000000000000000000000ff\
ff030405060d8058ebf95961c207ebd525793ccb43f60ce34a5cd50e02146e9c34cfbcb3f3037574\
a1abb35525e2ca0c3c6901dbf82ac591e30218d1711223b7ca956edf39f3d984d06d5158ebf95961\
c207ebd525793ccb43f60ce34a5cd5f4011976a9145a375814e9caf5b8575a8221be246457e5c5c2\
8d88ac45084a0f63d6f06767c941ffd5af4ed17ea0e28afa481e46b2bdbadbd8446c8c00\

ProTx Register Fund Legacy#

Warning

DEPRECATED in Dash Core 23.0.0: This RPC can be re-enabled with -deprecatedrpc=legacy_mn. No new legacy scheme masternode registrations will be permitted after the v24 fork.

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 should be used instead. Legacy scheme BLS keys are created if a legacy key is explicitly generated using the bls generate legacy RPC.

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—Core P2P addresses

Name

Type

Presence

Description

coreP2PAddrs

string/array

Required
(exactly 1)

Updated in Dash Core 23.0.0 (previously ipAndPort)
Core P2P address(es) in the form ADDR:PORT. Can be a single string or an array of strings.
Must be unique on the network.
A legacy ProTx can only store a single entry; storing multiple entries requires upgrading to a version 3 ProTx.
Must be an IPv4 address. On mainnet, the port must be 9999; on other networks, it must not be 9999.
Can be set to an empty string, 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 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

string

Required
(exactly 1)

The Dash address to use for masternode reward payments.
An array of payout shares is not accepted: this variant builds a legacy BLS scheme ProTx, which cannot carry a payout list.

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

dash-cli -testnet protx register_fund_legacy yakx4mMRptKhgfjedNzX5FGQq7kSSBF2e7\
 3.4.5.6:3456 yX2cDS4kcJ4LK4uq9Hd4TG7kURV3sGLZrw\
 0e02146e9c34cfbcb3f3037574a1abb35525e2ca0c3c6901dbf82ac591e30218d1711223b7ca956edf39f3d984d06d51\
 yX2cDS4kcJ4LK4uq9Hd4TG7kURV3sGLZrw 5 yakx4mMRptKhgfjedNzX5FGQq7kSSBF2e7

Result:

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

dash-cli -testnet protx register_fund_legacy yNLuVTXJbjbxgrQX5LSMi7hV19We8hT2d6 \
  3.4.5.6:3456 yURczr3qY31xkQZfFu8eZvKz19eAEPQxsd \
  0e02146e9c34cfbcb3f3037574a1abb35525e2ca0c3c6901dbf82ac591e30218d1711223b7ca956edf39f3d984d06d51 \
  yURczr3qY31xkQZfFu8eZvKz19eAEPQxsd 5 yUYTxqjpCfAAK4vgxXtBPywRBtZqsxN7Vy \
  yRMFHxcJ2aS2vfo5whhE2Gg73dfQVm8LAF false

Result:

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.

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

number (int)

Required
(exactly 1)

The collateral transaction output index

Parameter #3—Core P2P addresses

Name

Type

Presence

Description

coreP2PAddrs

string/array

Required
(exactly 1)

Updated in Dash Core 23.0.0 (previously ipAndPort)
Core P2P address(es) in the form ADDR:PORT. Can be a single string or an array of strings.
Must be unique on the network.
A legacy ProTx can only store a single entry; storing multiple entries requires upgrading to a version 3 ProTx.
Updated in Dash Core 24.0.0
For a version 3 ProTx, where masternodes require IPv4 (mainnet and, by default, regtest), the first entry must be IPv4, and on mainnet it must use port 9999. A legacy ProTx always requires a single IPv4 address, which must use port 9999 on mainnet and a different port on other networks.
Can be set to an empty string, 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/array

Required
(exactly 1)

Updated in Dash Core 24.0.0
The Dash address to use for masternode reward payments, or after v24 activation, an array of payout shares. Not compatible with legacy bls operator key.
An array must contain 1 to 8 payout shares. Each reward must be at least 100 and all reward values must total 10000.

→
Payout share

object

Required
(1 to 8)

A payout share

→ →
address

string

Required
(exactly 1)

The Dash payout address.

→ →
reward

number (int)

Required
(exactly 1)

The payout share in basis points.

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

dash-cli -testnet protx register_prepare\
 df41e398bb245e973340d434d386f431dbd69735a575721b0b6833856e7d31ec 1 \
 9.8.7.6:9876 yemjhGQ99V5ayJMjoyGGPtxteahii6G1Jz\
 06849865d01e4f73a6d5a025117e48f50b897e14235800501c8bfb8a6365cc8dbf5ddb67a3635d0f1dcc7d46a7ee280c\
 yemjhGQ99V5ayJMjoyGGPtxteahii6G1Jz 1.2 yjJJLkYDUN6X8gWjXbCoKEXoiLeKxxMMRt

Result:

{
  "tx": "0300010001912b88876fee2f8e43e23b5e81276c163cf23d867bad4148170cb106ef9023700000000000feffffff0125623ba40b0000001976a914736e155c1039a269d4019c66219d2a18f0fee27588ac00000000d1010000000000ec317d6e8533680b1b7275a53597d6db31f486d334d44033975e24bb98e341df0100000000000000000000000000ffff090807062694ca6b243168b30461d1f19e2bb89a965a5bac067e06849865d01e4f73a6d5a025117e48f50b897e14235800501c8bfb8a6365cc8dbf5ddb67a3635d0f1dcc7d46a7ee280cca6b243168b30461d1f19e2bb89a965a5bac067e78001976a914fc136008111fcc7a05be6cec66f97568727a9e5188ace5f6b70ac55411727e25178bd417b9b03f837ad7155d90ad286f3a427203fb9f00",
  "collateralAddress": "yWuKWhDzGQqZL8rw6kGxGrfe6P8bUC2S4f",
  "signMessage": "yjJJLkYDUN6X8gWjXbCoKEXoiLeKxxMMRt|120|yemjhGQ99V5ayJMjoyGGPtxteahii6G1Jz|yemjhGQ99V5ayJMjoyGGPtxteahii6G1Jz|69a49e18c1253b90d39322f7e2f7af74524401bc33a27645e697e74a214e3e1e"
}

ProTx Register Prepare Legacy#

Warning

DEPRECATED in Dash Core 23.0.0: This RPC can be re-enabled with -deprecatedrpc=legacy_mn. No new legacy scheme masternode registrations will be permitted after the v24 fork.

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 should be used instead. Legacy scheme BLS keys are created if a legacy key is explicitly generated using the bls generate legacy RPC.

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

number (int)

Required
(exactly 1)

The collateral transaction output index

Parameter #3—Core P2P addresses

Name

Type

Presence

Description

coreP2PAddrs

string/array

Required
(exactly 1)

Updated in Dash Core 23.0.0 (previously ipAndPort)
Core P2P address(es) in the form ADDR:PORT. Can be a single string or an array of strings.
Must be unique on the network.
A legacy ProTx can only store a single entry; storing multiple entries requires upgrading to a version 3 ProTx.
Must be an IPv4 address. On mainnet, the port must be 9999; on other networks, it must not be 9999.
Can be set to an empty string, 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.
An array of payout shares is not accepted: this variant builds a legacy BLS scheme ProTx, which cannot carry a payout list.

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

dash-cli -testnet protx register_prepare_legacy \
  df41e398bb245e973340d434d386f431dbd69735a575721b0b6833856e7d31ec 1 9.8.7.6:9876 \
  yemjhGQ99V5ayJMjoyGGPtxteahii6G1Jz \
  06849865d01e4f73a6d5a025117e48f50b897e14235800501c8bfb8a6365cc8dbf5ddb67a3635d0f1dcc7d46a7ee280c \
  yemjhGQ99V5ayJMjoyGGPtxteahii6G1Jz 1.2 yjJJLkYDUN6X8gWjXbCoKEXoiLeKxxMMRt

Result:

{
  "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 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

number (int)

Required
(exactly 1)

The collateral transaction output index

Parameter #3—Core P2P Addresses

Name

Type

Presence

Description

coreP2PAddrs

string/array

Required
(exactly 1)

Updated in Dash Core 23.0.0 (previously ipAndPort)
Core P2P address(es) in the form ADDR:PORT. Can be a single string or an array of strings.
Must be unique on the network.
A legacy ProTx can only store a single entry; storing multiple entries requires upgrading to a version 3 ProTx.
Updated in Dash Core 24.0.0
For a version 3 ProTx, where masternodes require IPv4 (mainnet and, by default, regtest), the first entry must be IPv4, and on mainnet it must use port 9999. A legacy ProTx always requires a single IPv4 address, which must use port 9999 on mainnet and a different port on other networks.
Can be set to an empty string, 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/array

Required
(exactly 1)

Updated in Dash Core 24.0.0
The Dash address to use for masternode reward payments, or after v24 activation, an array of payout shares. Not compatible with legacy bls operator key.
An array must contain 1 to 8 payout shares. Each reward must be at least 100 and all reward values must total 10000.
An evonode can only use more than one payout share after the evo_shares deployment is active.

→
Payout share

object

Required
(1 to 8)

A payout share

→ →
address

string

Required
(exactly 1)

The Dash payout address.

→ →
reward

number (int)

Required
(exactly 1)

The payout share in basis points.

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 addresses

Name

Type

Presence

Description

platformP2PAddrs

number/string/array

Required
(exactly 1)

Updated in Dash Core 23.0.0 (previously platformP2PPort)
Array of addresses in the form ADDR:PORT used by Platform for peer-to-peer connection.
For a legacy ProTx, pass a bare port number instead (e.g. 26656); the ADDR:PORT / address-array form requires upgrading to a version 3 ProTx.
Updated in Dash Core 24.0.0
For a version 3 ProTx, where masternodes require IPv4 (mainnet and, by default, regtest), the first entry must use the first coreP2PAddrs address, and on mainnet it must use port 26656.
Must be unique on the network. Can be set to an empty string, which will require a ProUpServTx afterwards.

Parameter #11—platform HTTPS addresses

Name

Type

Presence

Description

platformHTTPSAddrs

number/string/array

Required
(exactly 1)

Updated in Dash Core 23.0.0 (previously platformHTTPPort)
Array of addresses in the form ADDR:PORT used by Platform for their HTTPS API.
For a legacy ProTx, pass a bare port number instead (e.g. 443); the ADDR:PORT / address-array form requires upgrading to a version 3 ProTx.
Updated in Dash Core 24.0.0
For a version 3 ProTx, where masternodes require IPv4 (mainnet and, by default, regtest), the first entry must use the first coreP2PAddrs address, and on mainnet it must use port 443.
Must be unique on the network. Can be set to an empty string, which will require a ProUpServTx afterwards.

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

dash-cli -testnet protx register_evo \
  8b2eab3413abb6e04d17d1defe2b71039ba6b6f72ea1e5dab29bb10e7b745948 1 2.3.4.5:2345 \
  yNLuVTXJbjbxgrQX5LSMi7hV19We8hT2d6 \
  88d719278eef605d9c19037366910b59bc28d437de4a8db4d76fda6d6985dbdf10404fb9bb5cd0e8c22f4a914a6c5566 \
  yNLuVTXJbjbxgrQX5LSMi7hV19We8hT2d6 5 yjJJLkYDUN6X8gWjXbCoKEXoiLeKxxMMRt \
  f2dbd9b0a1f541a7c44d34a58674d0262f5feca5 22821 22822

Result:

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

dash-cli -testnet protx register_evo \
  8b2eab3413abb6e04d17d1defe2b71039ba6b6f72ea1e5dab29bb10e7b745948 1 \
  2.3.4.5:2345 yNLuVTXJbjbxgrQX5LSMi7hV19We8hT2d6 \
  88d719278eef605d9c19037366910b59bc28d437de4a8db4d76fda6d6985dbdf10404fb9bb5cd0e8c22f4a914a6c5566 \
  yNLuVTXJbjbxgrQX5LSMi7hV19We8hT2d6 5 yjJJLkYDUN6X8gWjXbCoKEXoiLeKxxMMRt \
  f2dbd9b0a1f541a7c44d34a58674d0262f5feca5 22821 22822 yjJJLkYDUN6X8gWjXbCoKEXoiLeKxxMMRt false

Result:

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 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—Core P2P addresses

Name

Type

Presence

Description

coreP2PAddrs

string/array

Required
(exactly 1)

Updated in Dash Core 23.0.0 (previously ipAndPort)
Core P2P address(es) in the form ADDR:PORT. Can be a single string or an array of strings.
Must be unique on the network.
A legacy ProTx can only store a single entry; storing multiple entries requires upgrading to a version 3 ProTx.
Updated in Dash Core 24.0.0
For a version 3 ProTx, where masternodes require IPv4 (mainnet and, by default, regtest), the first entry must be IPv4, and on mainnet it must use port 9999. A legacy ProTx always requires a single IPv4 address, which must use port 9999 on mainnet and a different port on other networks.
Can be set to an empty string, 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

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

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

string/array

Required
(exactly 1)

Updated in Dash Core 24.0.0
The Dash address to use for masternode reward payments, or after v24 activation, an array of payout shares. Not compatible with legacy bls operator key.
An array must contain 1 to 8 payout shares. Each reward must be at least 100 and all reward values must total 10000.
An evonode can only use more than one payout share after the evo_shares deployment is active.

→
Payout share

object

Required
(1 to 8)

A payout share

→ →
address

string

Required
(exactly 1)

The Dash payout address.

→ →
reward

number (int)

Required
(exactly 1)

The payout share in basis points.

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 addresses

Name

Type

Presence

Description

platformP2PAddrs

number/string/array

Required
(exactly 1)

Updated in Dash Core 23.0.0 (previously platformP2PPort)
Array of addresses in the form ADDR:PORT used by Platform for peer-to-peer connection.
For a legacy ProTx, pass a bare port number instead (e.g. 26656); the ADDR:PORT / address-array form requires upgrading to a version 3 ProTx.
Updated in Dash Core 24.0.0
For a version 3 ProTx, where masternodes require IPv4 (mainnet and, by default, regtest), the first entry must use the first coreP2PAddrs address, and on mainnet it must use port 26656.
Must be unique on the network. Can be set to an empty string, which will require a ProUpServTx afterwards.

Parameter #10—platform HTTPS addresses

Name

Type

Presence

Description

platformHTTPSAddrs

number/string/array

Required
(exactly 1)

Updated in Dash Core 23.0.0 (previously platformHTTPPort)
Array of addresses in the form ADDR:PORT used by Platform for their HTTPS API.
For a legacy ProTx, pass a bare port number instead (e.g. 443); the ADDR:PORT / address-array form requires upgrading to a version 3 ProTx.
Updated in Dash Core 24.0.0
For a version 3 ProTx, where masternodes require IPv4 (mainnet and, by default, regtest), the first entry must use the first coreP2PAddrs address, and on mainnet it must use port 443.
Must be unique on the network. Can be set to an empty string, which will require a ProUpServTx afterwards.

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

dash-cli -testnet protx register_fund_evo yakx4mMRptKhgfjedNzX5FGQq7kSSBF2e7 \
  3.4.5.6:3456 yX2cDS4kcJ4LK4uq9Hd4TG7kURV3sGLZrw \
  0e02146e9c34cfbcb3f3037574a1abb35525e2ca0c3c6901dbf82ac591e30218d1711223b7ca956edf39f3d984d06d51 \
  yX2cDS4kcJ4LK4uq9Hd4TG7kURV3sGLZrw 5 yakx4mMRptKhgfjedNzX5FGQq7kSSBF2e7 \
  f2dbd9b0a1f541a7c44d34a58674d0262f5feca5 22821 22822

Result:

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

dash-cli -testnet protx register_fund_evo yakx4mMRptKhgfjedNzX5FGQq7kSSBF2e7 \
  3.4.5.6:3456 yX2cDS4kcJ4LK4uq9Hd4TG7kURV3sGLZrw \
  0e02146e9c34cfbcb3f3037574a1abb35525e2ca0c3c6901dbf82ac591e30218d1711223b7ca956edf39f3d984d06d51 \
  yX2cDS4kcJ4LK4uq9Hd4TG7kURV3sGLZrw 5 yakx4mMRptKhgfjedNzX5FGQq7kSSBF2e7 \
  f2dbd9b0a1f541a7c44d34a58674d0262f5feca5 22821 22822 yakx4mMRptKhgfjedNzX5FGQq7kSSBF2e7 false

Result:

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

number (int)

Required
(exactly 1)

The collateral transaction output index

Parameter #3—Core P2P addresses

Name

Type

Presence

Description

coreP2PAddrs

string/array

Required
(exactly 1)

Updated in Dash Core 23.0.0 (previously ipAndPort)
Core P2P address(es) in the form ADDR:PORT. Can be a single string or an array of strings.
Must be unique on the network.
A legacy ProTx can only store a single entry; storing multiple entries requires upgrading to a version 3 ProTx.
Updated in Dash Core 24.0.0
For a version 3 ProTx, where masternodes require IPv4 (mainnet and, by default, regtest), the first entry must be IPv4, and on mainnet it must use port 9999. A legacy ProTx always requires a single IPv4 address, which must use port 9999 on mainnet and a different port on other networks.
Can be set to an empty string, 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

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

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

string/array

Required
(exactly 1)

Updated in Dash Core 24.0.0
The Dash address to use for masternode reward payments, or after v24 activation, an array of payout shares. Not compatible with legacy bls operator key.
An array must contain 1 to 8 payout shares. Each reward must be at least 100 and all reward values must total 10000.
An evonode can only use more than one payout share after the evo_shares deployment is active.

→
Payout share

object

Required
(1 to 8)

A payout share

→ →
address

string

Required
(exactly 1)

The Dash payout address.

→ →
reward

number (int)

Required
(exactly 1)

The payout share in basis points.

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 addresses

Name

Type

Presence

Description

platformP2PAddrs

number/string/array

Required
(exactly 1)

Updated in Dash Core 23.0.0 (previously platformP2PPort)
Array of addresses in the form ADDR:PORT used by Platform for peer-to-peer connection.
For a legacy ProTx, pass a bare port number instead (e.g. 26656); the ADDR:PORT / address-array form requires upgrading to a version 3 ProTx.
Updated in Dash Core 24.0.0
For a version 3 ProTx, where masternodes require IPv4 (mainnet and, by default, regtest), the first entry must use the first coreP2PAddrs address, and on mainnet it must use port 26656.
Must be unique on the network. Can be set to an empty string, which will require a ProUpServTx afterwards.

Parameter #11—platform HTTPS addresses

Name

Type

Presence

Description

platformHTTPSAddrs

number/string/array

Required
(exactly 1)

Updated in Dash Core 23.0.0 (previously platformHTTPPort)
Array of addresses in the form ADDR:PORT used by Platform for their HTTPS API.
For a legacy ProTx, pass a bare port number instead (e.g. 443); the ADDR:PORT / address-array form requires upgrading to a version 3 ProTx.
Updated in Dash Core 24.0.0
For a version 3 ProTx, where masternodes require IPv4 (mainnet and, by default, regtest), the first entry must use the first coreP2PAddrs address, and on mainnet it must use port 443.
Must be unique on the network. Can be set to an empty string, which will require a ProUpServTx afterwards.

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

dash-cli -testnet protx register_prepare_evo \
  df41e398bb245e973340d434d386f431dbd69735a575721b0b6833856e7d31ec \
  1 9.8.7.6:9876 yemjhGQ99V5ayJMjoyGGPtxteahii6G1Jz \
  06849865d01e4f73a6d5a025117e48f50b897e14235800501c8bfb8a6365cc8dbf5ddb67a3635d0f1dcc7d46a7ee280c \
  yemjhGQ99V5ayJMjoyGGPtxteahii6G1Jz 1.2 yjJJLkYDUN6X8gWjXbCoKEXoiLeKxxMMRt \
  f2dbd9b0a1f541a7c44d34a58674d0262f5feca5 22821 22822

Result:

{
  "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—Core P2P Addresses

Name

Type

Presence

Description

coreP2PAddrs

string/array

Required
(exactly 1)

Updated in Dash Core 23.0.0 (previously ipAndPort)
Core P2P address(es) in the form ADDR:PORT. Can be a single string or an array of strings.
Must be unique on the network.
A legacy ProTx can only store a single entry; storing multiple entries requires upgrading to a version 3 ProTx.
Updated in Dash Core 24.0.0
For a version 3 ProTx, where masternodes require IPv4 (mainnet and, by default, regtest), the first entry must be IPv4, and on mainnet it must use port 9999. A legacy ProTx always requires a single IPv4 address, which must use port 9999 on mainnet and a different port on other networks.

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 addresses

Name

Type

Presence

Description

platformP2PAddrs

number/string/array

Required
(exactly 1)

Updated in Dash Core 23.0.0 (previously platformP2PPort)
Array of addresses in the form ADDR:PORT used by Platform for peer-to-peer connection.
For a legacy ProTx, pass a bare port number instead (e.g. 26656); the ADDR:PORT / address-array form requires upgrading to a version 3 ProTx.
Updated in Dash Core 24.0.0
For a version 3 ProTx, where masternodes require IPv4 (mainnet and, by default, regtest), the first entry must use the first coreP2PAddrs address, and on mainnet it must use port 26656.
Must be unique on the network.

Parameter #6—platform HTTPS addresses

Name

Type

Presence

Description

platformHTTPSAddrs

number/string/array

Required
(exactly 1)

Updated in Dash Core 23.0.0 (previously platformHTTPPort)
Array of addresses in the form ADDR:PORT used by Platform for their HTTPS API.
For a legacy ProTx, pass a bare port number instead (e.g. 443); the ADDR:PORT / address-array form requires upgrading to a version 3 ProTx.
Updated in Dash Core 24.0.0
For a version 3 ProTx, where masternodes require IPv4 (mainnet and, by default, regtest), the first entry must use the first coreP2PAddrs address, and on mainnet it must use port 443.
Must be unique on the network.

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.

Parameter #9—whether to submit to the network or not

Name

Type

Presence

Description

submit

bool

Optional
(0 or 1)

Added in Dash Core 23.0.0
If true (default), the resulting transaction is sent to the network.

Result if submit is not set or set to true—provider update service transaction hash

Name

Type

Presence

Description

result

string (hex)

Required
(exactly 1)

Provider update service transaction (ProUpServTx) hash

Result if submit is set to false—serialized transaction

Name

Type

Presence

Description

result

string (hex)

Required
(exactly 1)

The serialized signed ProUpServTx in hex format

Example from Dash Core 20.0.0

dash-cli -testnet protx update_service_evo \
  ba1b3330e16a0876b7a186e7ceb689f03ec646e611e91d7139de021bbf13afdd \
  4.3.2.1:4321 \
  4da7e1ea30fb9e55c73ad23df0b9d3d34342acb24facf4b19420e1a26ae272d1 \
  f2dbd9b0a1f541a7c44d34a58674d0262f5feca5 22821 22822

Result:

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 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

dash-cli -testnet protx register_submit\
 03000100012d988526d5d1efd32320023c92eff09c2963dcb021b0de9761\
 17e5e37dc7a7870000000000feffffff015f603ba40b0000001976a9140c\
 37e07eb5c608961769e6506c23c11e9f9fe00988ac00000000d101000000\
 00002d988526d5d1efd32320023c92eff09c2963dcb021b0de976117e5e3\
 7dc7a7870100000000000000000000000000ffff05060708162e243dd366\
 bf4a329968d77eac9fb63481a600938d125e1b7cba03ca2a097e402185e6\
 160232ea53e6d62898a3be8617b06ff347d967543228bd9b605547c3d478\
 b0a838ca243dd366bf4a329968d77eac9fb63481a600938dc4091976a914\
 e9bf4e6f26fecf1dfc1e04dde43472df378628b888ac6a048e7f645e8adc\
 305ccfd8652066046a0702596af13b8ac97803ade256da2900\
 \
 H90IvqVtFjZkwLJb08yMEgGixs0/FpcdvwImBcir4cYLJhD3pdX+lKD2GsPl6KNxghVXNk5/HpOdBoWAHo9u++Y=

Result:

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.

Parameter #5—whether to submit to the network or not

Name

Type

Presence

Description

submit

bool

Optional
(0 or 1)

Added in Dash Core 23.0.0
If true (default), the resulting transaction is sent to the network.

Result if submit is not set or set to true—provider update revoke transaction hash

Name

Type

Presence

Description

result

string (hex)

Required
(exactly 1)

Provider update revoke transaction (ProUpRevTx) hash

Result if submit is set to false—serialized transaction

Name

Type

Presence

Description

result

string (hex)

Required
(exactly 1)

The serialized signed ProUpRevTx in hex format

Example from Dash Core 0.13.0

dash-cli -testnet protx revoke\
 "ba1b3330e16a0876b7a186e7ceb689f03ec646e611e91d7139de021bbf13afdd"\
 "4da7e1ea30fb9e55c73ad23df0b9d3d34342acb24facf4b19420e1a26ae272d1"

Result:

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 unless they have already updated to a basic scheme BLS key.

Updated in Dash Core 24.0.0: After the v24 hard fork activates, protx update_registrar can also be used for a legacy scheme masternode. It migrates the masternode to the basic BLS scheme in place, keeping the same operator key, and the masternode is not PoSe-banned by the change. protx update_service performs the same migration. The _legacy variants keep the masternode on the legacy scheme.

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/array

Required
(exactly 1)

Updated in Dash Core 24.0.0
The Dash address to use for masternode reward payments, or after v24 activation, an array of payout shares. Not compatible with legacy bls operator key.
If set to an empty string, the currently active payout address is reused.
An array must contain 1 to 8 payout shares. Each reward must be at least 100 and all reward values must total 10000.
An evonode can only use more than one payout share after the evo_shares deployment is active.

→
Payout share

object

Required
(1 to 8)

A payout share

→ →
address

string

Required
(exactly 1)

The Dash payout address.

→ →
reward

number (int)

Required
(exactly 1)

The payout share in basis points.

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.

Parameter #6—whether to submit to the network or not

Name

Type

Presence

Description

submit

bool

Optional
(0 or 1)

Added in Dash Core 23.0.0
If true (default), the resulting transaction is sent to the network.

Result if submit is not set or set to true—provider update registrar transaction hash

Name

Type

Presence

Description

result

string (hex)

Required
(exactly 1)

Provider update registrar transaction (ProUpRegTx) hash

Result if submit is set to false—serialized transaction

Name

Type

Presence

Description

result

string (hex)

Required
(exactly 1)

The serialized signed ProUpRegTx in hex format

Example from Dash Core 0.13.0

dash-cli -testnet protx update_registrar\
 "ba1b3330e16a0876b7a186e7ceb689f03ec646e611e91d7139de021bbf13afdd"\
 "0e02146e9c34cfbcb3f3037574a1abb35525e2ca0c3c6901dbf82ac591e30218d1711223b7ca956edf39f3d984d06d51"\
 "yX2cDS4kcJ4LK4uq9Hd4TG7kURV3sGLZrw" "yakx4mMRptKhgfjedNzX5FGQq7kSSBF2e7"

Result:

702390ef06b10c174841ad7b863df23c166c27815e3be2438e2fee6f87882b91

ProTx Update Registrar Legacy#

Warning

DEPRECATED in Dash Core 23.0.0: This RPC can be re-enabled with -deprecatedrpc=legacy_mn. Basic scheme masternodes cannot downgrade to legacy scheme after the v24 fork deployment.

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 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

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 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

string

Required
(exactly 1)

The Dash address to use for masternode reward payments.
If set to an empty string, the currently active payout address is reused.
An array of payout shares is not accepted: this variant builds a legacy BLS scheme ProTx, which cannot carry a payout list.

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.

Parameter #6—whether to submit to the network or not

Name

Type

Presence

Description

submit

bool

Optional
(0 or 1)

Added in Dash Core 23.0.0
If true (default), the resulting transaction is sent to the network.

Result if submit is not set or set to true—provider update registrar transaction hash

Name

Type

Presence

Description

result

string (hex)

Required
(exactly 1)

Provider update registrar transaction (ProUpRegTx) hash

Result if submit is set to false—serialized transaction

Name

Type

Presence

Description

result

string (hex)

Required
(exactly 1)

The serialized signed ProUpRegTx in hex format

Example from Dash Core 19.0.0

dash-cli -testnet protx update_registrar_legacy\
 "ba1b3330e16a0876b7a186e7ceb689f03ec646e611e91d7139de021bbf13afdd"\
 "0e02146e9c34cfbcb3f3037574a1abb35525e2ca0c3c6901dbf82ac591e30218d1711223b7ca956edf39f3d984d06d51"\
 "yX2cDS4kcJ4LK4uq9Hd4TG7kURV3sGLZrw" "yakx4mMRptKhgfjedNzX5FGQq7kSSBF2e7"

Result:

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—Core P2P Addresses

Name

Type

Presence

Description

coreP2PAddrs

string/array

Required
(exactly 1)

Updated in Dash Core 23.0.0 (previously ipAndPort)
Core P2P address(es) in the form ADDR:PORT. Can be a single string or an array of strings.
Must be unique on the network.
A legacy ProTx can only store a single entry; storing multiple entries requires upgrading to a version 3 ProTx.
Updated in Dash Core 24.0.0
For a version 3 ProTx, where masternodes require IPv4 (mainnet and, by default, regtest), the first entry must be IPv4, and on mainnet it must use port 9999. A legacy ProTx always requires a single IPv4 address, which must use port 9999 on mainnet and a different port on other networks.

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.

Parameter #6—whether to submit to the network or not

Name

Type

Presence

Description

submit

bool

Optional
(0 or 1)

Added in Dash Core 23.0.0
If true (default), the resulting transaction is sent to the network.

Result if submit is not set or set to true—provider update service transaction hash

Name

Type

Presence

Description

result

string (hex)

Required
(exactly 1)

Provider update service transaction (ProUpServTx) hash

Result if submit is set to false—serialized transaction

Name

Type

Presence

Description

result

string (hex)

Required
(exactly 1)

The serialized signed ProUpServTx in hex format

Example from Dash Core 0.13.0

dash-cli -testnet protx update_service\
 ba1b3330e16a0876b7a186e7ceb689f03ec646e611e91d7139de021bbf13afdd\
 "4.3.2.1:4321"\
 4da7e1ea30fb9e55c73ad23df0b9d3d34342acb24facf4b19420e1a26ae272d1

Result:

5b6cfa1bdd3c8b7e0b9550b9c4e809381f81a410bc7f241d3879dd736fd51270

ProTx Shared Combine#

Added in version 24.0.0.

The protx shared_combine RPC combines share owner signatures produced by protx shared_sign into a shared masternode transaction.

  • Shared ProRegTx: the completed transaction hex is returned. Its funding inputs still have to be signed (for example, by passing the result around signrawtransactionwithwallet), so submit is not available. A signature from every share is required.

  • Unanimous ProDisTx: the transaction can be submitted directly. A signature from every share is required.

  • ProUpSharedRegTx: the transaction can be submitted directly, but only from the wallet that ran protx shared_update_registrar_prepare. A signature from every share is required. Combining re-signs its fee inputs, and is refused unless they are unlocked coins of a single address of this wallet, any change returns to that address, and the fee is within -maxtxfee. With submit set to false, the fully signed transaction hex is returned. Requires wallet passphrase to be set with walletpassphrase call if wallet is encrypted.

Parameter #1—transaction

Name

Type

Presence

Description

tx

string (hex)

Required
(exactly 1)

The serialized transaction in hex format

Parameter #2—signatures

Name

Type

Presence

Description

signatures

array

Required
(exactly 1)

Signature entries collected from protx shared_sign

→
Signature

object

Required
(1 or more)

A share signature. Each shareIndex may only appear once

→ →
shareIndex

number (int)

Required
(exactly 1)

Index into the share table

→ →
signature

string (base64)

Required
(exactly 1)

Base64-encoded signature

Parameter #3—submit

Name

Type

Presence

Description

submit

bool

Optional
(0 or 1)

Submit the transaction to the network. Not available for registrations, whose funding inputs still need signing. Default: false

Result—transaction

Name

Type

Presence

Description

result

string (hex)

Required
(exactly 1)

The transaction ID if submitted, otherwise the combined transaction hex

Example from Dash Core 24.0.0

dash-cli -testnet protx shared_combine "<tx>" \
  '[{"shareIndex":0,"signature":"<signature 0>"},{"shareIndex":1,"signature":"<signature 1>"}]'

ProTx Shared Dissolve#

Added in version 24.0.0.

The protx shared_dissolve RPC creates, signs, and optionally submits a unilateral ProDisTx that dissolves a shared masternode, refunding every participant’s principal to its immutable refund script. During the early period, a unilateral dissolution pays the configured penalty, which is redistributed pro-rata to the other shares. The wallet must hold the actor share’s owner key.

With submit set to false, the signed transaction hex is returned instead. It can be stored offline as a standby dissolution: ProDisTx validity is monotone, so a transaction that is valid now stays valid forever.

For a penalty-free dissolution agreed by every participant, use protx shared_dissolve_prepare instead.

Requires wallet passphrase to be set with walletpassphrase call if wallet is encrypted.

Parameter #1—initial provider registration transaction hash

Name

Type

Presence

Description

proTxHash

string (hex)

Required
(exactly 1)

The hash of the initial ProRegTx

Parameter #2—actor index

Name

Type

Presence

Description

actorIndex

number (int)

Required
(exactly 1)

Index into the share table of the dissolving participant

Parameter #3—fee

Name

Type

Presence

Description

fee

number (int)

Optional
(0 or 1)

Transaction fee in duffs, paid from the actor’s share. At most 1000000 duffs (consensus ceiling). Default: 100000

Parameter #4—submit

Name

Type

Presence

Description

submit

bool

Optional
(0 or 1)

Submit the transaction to the network. Default: true

Parameter #5—pay penalty

Name

Type

Presence

Description

payPenalty

bool

Optional
(0 or 1)

Pay the early-period penalty. Pass true to build a standby valid at any height, or false for one valid only after the early period ends. Default: determined by the current height

Result—transaction

Name

Type

Presence

Description

result

string (hex)

Required
(exactly 1)

The transaction ID if submitted, otherwise the signed transaction hex

Example from Dash Core 24.0.0

Create a zero-penalty standby dissolution for share 0 without submitting it:

dash-cli -testnet protx shared_dissolve "<proTxHash>" 0 100000 false false

ProTx Shared Dissolve Prepare#

Added in version 24.0.0.

The protx shared_dissolve_prepare RPC creates an unsigned unanimous ProDisTx that dissolves a shared masternode without penalty at any height. Every share owner must sign it with protx shared_sign. Then combine and submit the result with protx shared_combine. For a unilateral dissolution, use protx shared_dissolve instead.

Parameter #1—initial provider registration transaction hash

Name

Type

Presence

Description

proTxHash

string (hex)

Required
(exactly 1)

The hash of the initial ProRegTx

Parameter #2—actor index

Name

Type

Presence

Description

actorIndex

number (int)

Required
(exactly 1)

Index into the share table of the participant paying the transaction fee

Parameter #3—fee

Name

Type

Presence

Description

fee

number (int)

Optional
(0 or 1)

Transaction fee in duffs, paid from the actor’s share. At most 1000000 duffs (consensus ceiling). Default: 100000

Result—unsigned dissolution

Name

Type

Presence

Description

result

object

Required
(exactly 1)

The unsigned dissolution

→
tx

string (hex)

Required
(exactly 1)

The serialized unsigned ProDisTx

→
signHash

string (hex)

Required
(exactly 1)

The digest every share owner must sign

Example from Dash Core 24.0.0

dash-cli -testnet protx shared_dissolve_prepare "<proTxHash>" 0

ProTx Shared Register Prepare#

Added in version 24.0.0.

The protx shared_register_prepare RPC creates an unsigned shared masternode registration: a version 3 ProRegTx with a collateral share table, where 2 to 8 participants fund the masternode collateral together. It appends the shared-collateral output and payload to a caller-supplied funding transaction. The funding transaction must already contain every participant’s contribution inputs and any change outputs. The consent digest binds all of them.

Shared masternodes require the v24 hard fork to be active. The shared protx commands are only available if Dash Core was built with wallet support.

The registration flow is:

  1. Create the unsigned registration with protx shared_register_prepare.

  2. Every share owner signs the returned consent hash with protx shared_sign.

  3. Combine the signatures with protx shared_combine.

  4. Have the funding inputs signed (for example, with signrawtransactionwithwallet) and broadcast the transaction with sendrawtransaction.

Important

Consent is required from each share in the table, not from each funding input. An input is not tied to any share. Before signing its funding inputs, each participant should check the share table (proRegTx in decoderawtransaction, or terms from protx shared_sign) for its own share, with its own amount and addresses. Signing inputs into a table without that share gives the contribution to the other shares.

Important

Once the registration confirms, every participant should create a zero-penalty standby dissolution (protx shared_dissolve <proTxHash> <shareIndex> <fee> false false) and store the returned hex with their refund-key backup, separately from the share owner key. It becomes valid when the early period ends (or immediately when no early period applies), then never expires. Broadcasting it after that point recovers the participant’s principal without cooperation. See protx shared_dissolve.

Parameter #1—funding transaction

Name

Type

Presence

Description

fundingTx

string (hex)

Required
(exactly 1)

The serialized funding transaction with all participants’ inputs and change outputs

Parameter #2—share table

Name

Type

Presence

Description

shares

array

Required
(exactly 1)

The collateral share table, in consensus-significant order. Must contain 2 to 8 shares. Amounts must sum to the collateral

→
Share

object

Required
(2 to 8)

A collateral share

→ →
amount

number (int)

Required
(exactly 1)

Collateral contribution in duffs (at least 100 DASH)

→ →
refundAddress

string

Required
(exactly 1)

Immutable address the principal is refunded to at dissolution

→ →
rewardAddress

string

Optional
(0 or 1)

Address this share’s owner rewards are paid to. Default: the refund address

→ →
ownerAddress

string

Required
(exactly 1)

P2PKH address of the immutable share owner key

Parameter #3—Core P2P addresses

Name

Type

Presence

Description

coreP2PAddrs

string

Required
(exactly 1)

IP address and port of the masternode. Leave empty to set it later with a ProUpServTx.
Where masternodes require IPv4 (mainnet and, by default, regtest), the first entry must be IPv4. On mainnet, the first entry must use port 9999

Parameter #4—operator public key

Name

Type

Presence

Description

operatorPubKey

string (hex)

Required
(exactly 1)

The operator BLS public key

Parameter #5—voting address

Name

Type

Presence

Description

votingAddress

string

Required
(exactly 1)

The voting key address (P2PKH)

Parameter #6—operator reward

Name

Type

Presence

Description

operatorReward

string

Required
(exactly 1)

The fraction in % to share with the operator.
The value must be between 0.00 and 100.00

Parameter #7—early period

Name

Type

Presence

Description

earlyPeriodBlocks

number (int)

Required
(exactly 1)

Length in blocks of the early period during which unilateral dissolution is penalized (up to 420480, approximately two years)

Parameter #8—early penalty

Name

Type

Presence

Description

earlyPenalty

number (int)

Required
(exactly 1)

Penalty in duffs for unilateral dissolution during the early period. Must be below the smallest share, and zero when earlyPeriodBlocks is zero

Result—unsigned shared registration

Name

Type

Presence

Description

result

object

Required
(exactly 1)

The unsigned shared registration

→
tx

string (hex)

Required
(exactly 1)

The serialized unsigned shared ProRegTx

→
collateralIndex

number (int)

Required
(exactly 1)

Output index of the shared collateral

→
consentHash

string (hex)

Required
(exactly 1)

The consent digest every share owner must sign

→
terms

object

Required
(exactly 1)

The masternode registration special transaction payload

→ →
version

number (int)

Required
(exactly 1)

Special transaction version

→ →
type

number (int)

Required
(exactly 1)

Masternode type

→ →
collateralHash

string (hex)

Required
(exactly 1)

Collateral transaction hash

→ →
collateralIndex

number (int)

Required
(exactly 1)

Collateral transaction output index

→ →
service

string

Optional
(0 or 1)

IP address and port of the masternode. Deprecated, returned only if config option -deprecatedrpc=service is passed

→ →
addresses

object

Required
(exactly 1)

Network addresses of the masternode

→ → →
core_p2p

array

Optional
(0 or 1)

Addresses used for protocol P2P

→ → → →
Address

string

Optional
(0 or more)

An address in the form ADDR:PORT

→ → →
platform_p2p

array

Optional
(0 or 1)

Addresses used for Platform P2P

→ → → →
Address

string

Optional
(0 or more)

An address in the form ADDR:PORT

→ → →
platform_https

array

Optional
(0 or 1)

Addresses used for Platform HTTPS API

→ → → →
Address

string

Optional
(0 or more)

An address in the form ADDR:PORT

→ →
ownerAddress

string

Optional
(0 or 1)

Dash address used for payee updates and proposal voting. Not returned for shared masternodes; each participant’s owner address is in shares

→ →
votingAddress

string

Required
(exactly 1)

Dash address used for voting

→ →
payoutAddress

string

Optional
(0 or 1)

Dash address used for masternode reward payments

→ →
payouts

array

Optional
(0 or 1)

Owner masternode reward payout shares

→ → →
Payout

object

Optional
(0 or more)

An owner payout share

→ → → →
address

string

Required
(exactly 1)

Dash address used for this owner payout

→ → → →
script

string (hex)

Required
(exactly 1)

Owner payout scriptPubKey

→ → → →
reward

number (int)

Required
(exactly 1)

Owner payout share in basis points

→ →
shares

array

Optional
(0 or 1)

Collateral shares of a shared masternode

→ → →
Share

object

Optional
(0 or more)

A collateral share

→ → → →
amount

number (int)

Required
(exactly 1)

Collateral contribution in duffs

→ → → →
refundAddress

string

Required
(exactly 1)

Dash address the principal is refunded to at dissolution

→ → → →
refundScript

string (hex)

Required
(exactly 1)

Refund scriptPubKey

→ → → →
rewardAddress

string

Required
(exactly 1)

Dash address this share’s owner rewards are paid to

→ → → →
rewardScript

string (hex)

Required
(exactly 1)

Reward scriptPubKey

→ → → →
ownerAddress

string

Required
(exactly 1)

Dash address of the share owner key

→ →
earlyPeriodBlocks

number (int)

Optional
(0 or 1)

Length in blocks of the early period during which unilateral dissolution is penalized

→ →
earlyPenalty

number (int)

Optional
(0 or 1)

Penalty in duffs for unilateral dissolution during the early period

→ →
pubKeyOperator

string (hex)

Required
(exactly 1)

BLS public key used for operator signing

→ →
operatorReward

number

Required
(exactly 1)

The operator reward %, between 0.00 and 100.00

→ →
platformNodeID

string (hex)

Optional
(0 or 1)

Node ID derived from P2P public key for Platform P2P (EvoNodes only)

→ →
platformP2PPort

number (int)

Optional
(0 or 1)

TCP port of Platform P2P. Deprecated, returned only if config option -deprecatedrpc=service is passed

→ →
platformHTTPPort

number (int)

Optional
(0 or 1)

TCP port of Platform HTTP API. Deprecated, returned only if config option -deprecatedrpc=service is passed

→ →
inputsHash

string (hex)

Required
(exactly 1)

Hash of all the outpoints of the transaction inputs

→
warning

string

Optional
(0 or 1)

Present when earlyPenalty is zero: any participant can force an early exit at no cost beyond the transaction fee

Example from Dash Core 24.0.0

Create a two-share registration with an early period of 10000 blocks and a 50 DASH early penalty:

dash-cli -testnet protx shared_register_prepare "<fundingTx>" \
  '[{"amount":50000000000,"refundAddress":"yLwEGznVudZKyDbCLXWEAX2wXUAoAZ2fh4","ownerAddress":"yM972VxwBD46FW6xQQBFAHx2HCV4HUEEHL"},{"amount":50000000000,"refundAddress":"yMT8Du3R47PFrLBxA1a9GZ4zu8Ht9B3bfH","rewardAddress":"yZ9fa6vzAS5yz3QjA8etgA4ka1GD2X9ouq","ownerAddress":"yaghgYP39G8JwLSr5aEhdUtMiiP7imyMtj"}]' \
  "1.2.3.4:19999" \
  b344d36f4c02cf56b7a975b4ba37edd83835a42586161f42632f09ff6a6100c7cb162c294c90fc25cceee58e088fce14 \
  yM972VxwBD46FW6xQQBFAHx2HCV4HUEEHL 0 10000 5000000000

ProTx Shared Register Prepare Evo#

Added in version 24.0.0.

The protx shared_register_prepare_evo RPC is the same as protx shared_register_prepare, but for an EvoNode. It takes the same parameters followed by platformNodeID, platformP2PAddrs, and platformHTTPSAddrs.

EvoNodes can only register with shared collateral once the evo_shares deployment is active. Until then, the RPC fails. The consent digest that share owners sign for a shared EvoNode registration also covers the EvoNode’s platformNodeID.

Parameters #1 to #8

The same as protx shared_register_prepare parameters #1 to #8.

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 addresses

Name

Type

Presence

Description

platformP2PAddrs

array

Required
(exactly 1)

Array of addresses in the form ADDR:PORT used by Platform for peer-to-peer connection.
Where masternodes require IPv4 (mainnet and, by default, regtest), the first entry must use the first coreP2PAddrs address. On mainnet, the first entry must use port 26656.
Must be unique on the network. Can be set to an empty string, which will require a ProUpServTx afterwards

→
Address

string

Required
(1 or more)

An address in the form ADDR:PORT

Parameter #11—Platform HTTPS addresses

Name

Type

Presence

Description

platformHTTPSAddrs

array

Required
(exactly 1)

Array of addresses in the form ADDR:PORT used by Platform for their HTTPS API.
Where masternodes require IPv4 (mainnet and, by default, regtest), the first entry must use the first coreP2PAddrs address. On mainnet, the first entry must use port 443.
Must be unique on the network. Can be set to an empty string, which will require a ProUpServTx afterwards

→
Address

string

Required
(1 or more)

An address in the form ADDR:PORT

Result—unsigned shared registration

The same as the protx shared_register_prepare result.

Example from Dash Core 24.0.0

dash-cli -testnet protx shared_register_prepare_evo "<fundingTx>" "<shares>" \
  "1.2.3.4:19999" \
  b344d36f4c02cf56b7a975b4ba37edd83835a42586161f42632f09ff6a6100c7cb162c294c90fc25cceee58e088fce14 \
  yM972VxwBD46FW6xQQBFAHx2HCV4HUEEHL 0 10000 5000000000 \
  f2dbd9b0a1f541a7c44d34a58674d0262f5feca5 '["1.2.3.4:22821"]' '["1.2.3.4:22822"]'

ProTx Shared Sign#

Added in version 24.0.0.

The protx shared_sign RPC signs a shared masternode transaction (shared ProRegTx, unanimous ProDisTx, or ProUpSharedRegTx) with every share owner key this wallet holds and returns the produced signatures. The transaction itself is not modified. Pass the signatures to protx shared_combine.

Only the multi-party flows use this RPC. A unilateral dissolution is built, signed, and submitted in one step by protx shared_dissolve. A dissolution is signed only when it returns every share’s principal to its refund address, less the fee from the actor’s share, as protx shared_dissolve_prepare builds it.

For a registrar update, the signature covers the payload, including inputsHash (the input outpoints), but not the transaction outputs. protx shared_combine checks the outputs on the funding wallet before re-signing the fee inputs.

Requires wallet passphrase to be set with walletpassphrase call if wallet is encrypted.

Parameter #1—transaction

Name

Type

Presence

Description

tx

string (hex)

Required
(exactly 1)

The serialized transaction in hex format

Parameter #2—allow time locks

Name

Type

Presence

Description

allowTimeLocks

bool

Optional
(0 or 1)

Sign a registration or dissolution carrying an unsatisfied lock time or a relative (BIP68) input lock. The signed digest commits to these fields, so a lock a co-signer failed to notice delays when the transaction can confirm. Default: false

Result—signatures

Name

Type

Presence

Description

result

object

Required
(exactly 1)

The terms being signed and the produced signatures

→
type

string

Required
(exactly 1)

What is being signed: registration, dissolution, or registrarUpdate

→
terms

object

Required
(exactly 1)

The decoded payload being consented to, so a co-signer can review what the signature commits to:
• registration: the ProRegTx payload (see the protx shared_register_prepare terms result)
• dissolution: the ProDisTx payload (version, proTxHash, actorIndex, sigCount) plus an outputs array of address/amount objects, since the signed digest covers the outputs directly
• registrarUpdate: the ProUpSharedRegTx payload (version, proTxHash, votingAddress, pubKeyOperator, inputsHash, sigCount)

→
warning

string

Optional
(0 or 1)

Present for a registration whose earlyPenalty is zero: any participant can force an early exit at no cost beyond the transaction fee

→
signatures

array

Required
(exactly 1)

One entry per share owner key this wallet holds

→ →
Signature

object

Optional
(0 or more)

A share signature

→ → →
shareIndex

number (int)

Required
(exactly 1)

Index into the share table

→ → →
signature

string (base64)

Required
(exactly 1)

Base64-encoded signature by this share’s owner key

Example from Dash Core 24.0.0

dash-cli -testnet protx shared_sign "<tx>"

ProTx Shared Update Registrar Prepare#

Added in version 24.0.0.

The protx shared_update_registrar_prepare RPC creates an unsigned ProUpSharedRegTx updating a shared masternode’s operator key and/or voting key. A plain ProUpRegTx is invalid for shared masternodes. Fee inputs from this wallet are added and signed.

Every share owner must then sign the returned transaction with protx shared_sign. Combine the signatures with protx shared_combine on this same wallet, since combining invalidates the fee-input signatures, which only this wallet can re-sign.

Requires wallet passphrase to be set with walletpassphrase call if wallet is encrypted.

Parameter #1—initial provider registration transaction hash

Name

Type

Presence

Description

proTxHash

string (hex)

Required
(exactly 1)

The hash of the initial ProRegTx

Parameter #2—operator public key

Name

Type

Presence

Description

operatorPubKey

string (hex)

Required
(exactly 1)

The new operator BLS public key, or an empty string to keep the current key

Parameter #3—voting address

Name

Type

Presence

Description

votingAddress

string

Required
(exactly 1)

The new voting address, or an empty string to keep the current address

Parameter #4—fee source address

Name

Type

Presence

Description

feeSourceAddress

string

Required
(exactly 1)

Wallet address to pay the transaction fee from

Result—unsigned registrar update

Name

Type

Presence

Description

result

object

Required
(exactly 1)

The unsigned registrar update

→
tx

string (hex)

Required
(exactly 1)

The serialized unsigned ProUpSharedRegTx

→
signHash

string (hex)

Required
(exactly 1)

The payload hash every share owner must sign

Example from Dash Core 24.0.0

Change the operator key and keep the current voting address:

dash-cli -testnet protx shared_update_registrar_prepare "<proTxHash>" \
  b344d36f4c02cf56b7a975b4ba37edd83835a42586161f42632f09ff6a6100c7cb162c294c90fc25cceee58e088fce14 \
  "" ydW7V4e5KZioLKdQkukxt2g4a2t9EnL8hN

ProTx Shared Update Share#

Added in version 24.0.0.

The protx shared_update_share RPC creates and sends a ProUpShareTx updating one collateral share’s reward address. Only the share’s owner key (which this wallet must hold) can update it. All other share fields are immutable.

Requires wallet passphrase to be set with walletpassphrase call if wallet is encrypted.

Parameter #1—initial provider registration transaction hash

Name

Type

Presence

Description

proTxHash

string (hex)

Required
(exactly 1)

The hash of the initial ProRegTx

Parameter #2—share index

Name

Type

Presence

Description

shareIndex

number (int)

Required
(exactly 1)

Index into the share table of the share to update

Parameter #3—reward address

Name

Type

Presence

Description

rewardAddress

string

Required
(exactly 1)

The new reward address. To reset rewards to the share’s refund address, provide that address explicitly

Parameter #4—fee source address

Name

Type

Presence

Description

feeSourceAddress

string

Required
(exactly 1)

Wallet address to pay the transaction fee from

Parameter #5—submit

Name

Type

Presence

Description

submit

bool

Optional
(0 or 1)

Submit the transaction to the network. Default: true

Result if submit is not set or set to true—transaction ID

Name

Type

Presence

Description

result

string (hex)

Required
(exactly 1)

The transaction ID

Result if submit is set to false—serialized transaction

Name

Type

Presence

Description

result

string (hex)

Required
(exactly 1)

The serialized signed ProUpShareTx in hex format

Example from Dash Core 24.0.0

dash-cli -testnet protx shared_update_share "<proTxHash>" 0 \
  yZ9fa6vzAS5yz3QjA8etgA4ka1GD2X9ouq ydW7V4e5KZioLKdQkukxt2g4a2t9EnL8hN

Quorum#

Added in Dash Core 0.14.0

The quorum RPC provides a set of commands for quorums (LLMQs).

Note

Updated in Dash Core 24.0.0

Boolean arguments must be passed as JSON true or false, and numeric arguments as JSON numbers. See Request Format for details.

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

dash-cli -testnet quorum list

Result:

{
  "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 to list:
1 - LLMQ_50_60
2 - LLMQ_400_60
3 - LLMQ_400_85
4 - LLMQ_100_67
5 - LLMQ_60_75
6 - LLMQ_25_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

Optional
(0 or 1)

DEPRECATED in Dash Core 23.0.0 - Use addresses['core_p2p'][0] instead
The masternode’s IP:Port. Returned only if config option -deprecatedrpc=service is passed since Dash Core 24.0.0.

→ → →
addresses

object

Required
(exactly 1)

Added in Dash Core 23.0.0
Masternode network addresses object

→ → → →
core_p2p

array

Required
(exactly 1)

Array of core P2P address strings in ADDR:PORT format

→ → → →
platform_p2p

array

Optional
(0 or 1)

Array of platform P2P address strings in ADDR:PORT format (evonodes only)

→ → → →
platform_https

array

Optional
(0 or 1)

Array of platform HTTPS address strings in ADDR:PORT format (evonodes only)

→ → →
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 23.0.0

dash-cli -testnet quorum info 1 \
  0000004eec0606768f8d46e756182255853c4b92dc1224e58c39f9f803c9eea7 true

Result (truncated):

{
  "height": 1359096,
  "type": "llmq_50_60",
  "quorumHash": "0000004eec0606768f8d46e756182255853c4b92dc1224e58c39f9f803c9eea7",
  "quorumIndex": 0,
  "minedBlock": "00000099ed91a72b28b2272853b50a7dc2afe38a4b31066d66204c3824ca6408",
  "members": [
    {
      "proTxHash": "9fcf7b15b9c7ce71c11b7577e05edd1ea922125b9ee8fed7d0d8ff21d530a33b",
      "service": "18.237.170.32:19999",
      "addresses": {
        "core_p2p": [
          "18.237.170.32:19999"
        ]
      },
      "pubKeyOperator": "0b04bcb5cf6d2d6df5979234611da42854a5e69374a29e0c85128caedb53d9c818042613d2f30f3ef782ed37bd8ce161",
      "valid": true
    },
    {
      "proTxHash": "8917bb546318f3410d1a7901c7b846a73446311b5164b45a03f0e613f208f234",
      "service": "52.13.132.146:19999",
      "addresses": {
        "core_p2p": [
          "52.13.132.146:19999"
        ],
        "platform_https": [
          "52.13.132.146:1443"
        ],
        "platform_p2p": [
          "52.13.132.146:36656"
        ]
      },
      "pubKeyOperator": "87d25769002af2a4f050127c73fff03a24935e48f34fecaacd69410787d0e6384b345c78e81b1cb397b43dcd635568b6",
      "valid": true
    },
    {"Truncated data":"..."},
    {
      "proTxHash": "85f15a31d3838293a9c1d72a1a0fa21e66110ce20878bd4c1024c4ae1d5be824",
      "service": "54.201.32.131:19999",
      "addresses": {
        "core_p2p": [
          "54.201.32.131:19999"
        ],
        "platform_https": [
          "54.201.32.131:1443"
        ],
        "platform_p2p": [
          "54.201.32.131:36656"
        ]
      },
      "pubKeyOperator": "ac3026b3e3023db1db9ec8e3b7678761820a2a6e96e7a5d9a39b1894170f9cea7765d3d131d60fa9d17492ba560fb1f9",
      "valid": true
    }
  ],
  "quorumPublicKey": "a44ba808f2a571cfe0cbf33f3d6ed2b635c15e7ceae2a6a339081446802d22e6422271b686e536c732e9019ff13c3375"
}

Quorum DKGInfo#

Added in version 20.1.0.

The quorum dkginfo RPC returns information about active and upcoming DKG sessions. It is only available in masternode or watch-only mode.

Parameter #1—ProTx hash

Name

Type

Presence

Description

proTxHash

string (hex)

Optional
(0 or 1)

Added in Dash Core 24.0.0
The proTxHash of the masternode to report upcoming DKG participation for. Empty string is treated as the default.
Default: the local active masternode proTxHash, if any

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

→
proTxHash

string (hex)

Optional
(0 or 1)

Added in Dash Core 24.0.0
Hash of the masternode’s initial ProRegTx

→
upcoming_dkgs

array

Optional
(0 or 1)

Added in Dash Core 24.0.0
Upcoming DKG sessions for the given proTxHash whose work block is already mined. For rotated quorums all indices in a cycle share the cycle base work block

→ →
DKG session

object

Optional
(0 or more)

An upcoming DKG session

→ → →
llmqType

number

Required
(exactly 1)

Quorum type

→ → →
quorumIndex

number

Required
(exactly 1)

Quorum index. Relevant for rotation quorums only, 0 for non-rotating quorums

→ → →
quorumHeight

number

Required
(exactly 1)

The height at which the quorum session starts

→ → →
blocksUntilStart

number

Required
(exactly 1)

The number of blocks until the quorum session starts

→ → →
known

bool

Required
(exactly 1)

Whether participation could be determined

→ → →
reason

string

Optional
(0 or 1)

Why participation could not be determined

→ → →
isMember

bool

Optional
(0 or 1)

Whether the masternode is a member of the upcoming quorum

→ → →
workBlockHeight

number

Optional
(0 or 1)

The height of the work block used to compute membership

→ → →
workBlockHash

string (hex)

Optional
(0 or 1)

The hash of the work block used to compute membership

Example from Dash Core 20.1.0

dash-cli -testnet quorum dkginfo

Result (truncated):

{
  "active_dkgs": 0,
  "next_dkg": 10
}

Quorum DKGStatus#

The quorum dkgstatus 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

→ → →
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:
1 - LLMQ_50_60
2 - LLMQ_400_60
3 - LLMQ_400_85
4 - LLMQ_100_67
5 - LLMQ_60_75
6 - LLMQ_25_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)

Latest DKG phase whose messages this node has already sent
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

→ → →
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

Address

→ → → →→
outbound

boolean

Required
(exactly 1)

Added in Dash Core 0.16.0

Whether or not this is an outbound connection

→
minableCommitments

array

Required
(exactly 1)

Array of objects containing commitments the next block would include

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

dash-cli -testnet quorum dkgstatus

Result (truncated):

{
  "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)

dash-cli -testnet quorum dkgstatus 1

Result (truncated):

{
  "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)

dash-cli -testnet quorum dkgstatus 2

Result (truncated):

{
  "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:
1 - LLMQ_50_60
2 - LLMQ_400_60
3 - LLMQ_400_85
4 - LLMQ_100_67
5 - LLMQ_60_75
6 - LLMQ_25_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
* The LLMQ InstantSend DIP.

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:
1 - LLMQ_50_60
2 - LLMQ_400_60
3 - LLMQ_400_85
4 - LLMQ_100_67
5 - LLMQ_60_75
6 - LLMQ_25_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):

dash-cli -testnet quorum sign 1 \
  "abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234" \
  "51c11d287dfa85aef3eebb5420834c8e443e01d15c0b0a8e397d67e2e51aa239"

Result:

false

Return signature share object:

dash-cli -testnet quorum sign 100 \
  "0000000000000000000000000000000000000000000000000000000000000001" \
  "0000000000000000000000000000000000000000000000000000000000000002" \
  "53d959f609a654cf4e5e3c083fd6c47b7ec6cb73af4ac7329149688337b8ef9a" false

Result:

{
  "llmqType": 100,
  "quorumHash": "53d959f609a654cf4e5e3c083fd6c47b7ec6cb73af4ac7329149688337b8ef9a",
  "quorumMember": 2,
  "id": "0000000000000000000000000000000000000000000000000000000000000001",
  "msgHash": "0000000000000000000000000000000000000000000000000000000000000002",
  "signHash": "39458221939396a45a2e348caada646eabd52849990827d40e33eb1399097b3c",
  "signature": "9716545a0c28ff70900a71fabbadf3c13e4ae562032122902405365f1ebf3da813c8a97d765eb8b167ff339c1638550c13822217cf06b609ba6a78f0035684ca7b4afdb7146ce74a30cfb6770f852aade8c27ffec67c79f85be31964573fb51c"
}

Quorum GetData#

The quorum getdata RPC sends a qgetdata message 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:

dash-cli quorum getdata 1 2 "000000822d2b1b311af360750b6448917f10d8b92d2ea2a7bbae221e859354f9" 1

Result:

true

See also

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:
1 - LLMQ_50_60
2 - LLMQ_400_60
3 - LLMQ_400_85
4 - LLMQ_100_67
5 - LLMQ_60_75
6 - LLMQ_25_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

object

Required
(exactly 1)

Recovered signature details

→
llmqType

number

Required
(exactly 1)

Type of quorum:
1 - LLMQ_50_60
2 - LLMQ_400_60
3 - LLMQ_400_85
4 - LLMQ_100_67
5 - LLMQ_60_75
6 - LLMQ_25_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

dash-cli -testnet quorum getrecsig 1 \
  "e980ebf295b42f24b03321ffb255818753b2b211e8c46b61c0b6fde91242d12f" \
  "907087d4720850e639b7b5cc41d7a6d020e5a50debb3bc3974f0cb3d7d378ea4"

Result:

{
  "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:
1 - LLMQ_50_60
2 - LLMQ_400_60
3 - LLMQ_400_85
4 - LLMQ_100_67
5 - LLMQ_60_75
6 - LLMQ_25_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

dash-cli -testnet quorum hasrecsig 1 \
  "e980ebf295b42f24b03321ffb255818753b2b211e8c46b61c0b6fde91242d12f" \
  "907087d4720850e639b7b5cc41d7a6d020e5a50debb3bc3974f0cb3d7d378ea4"

Result:

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:
1 - LLMQ_50_60
2 - LLMQ_400_60
3 - LLMQ_400_85
4 - LLMQ_100_67
5 - LLMQ_60_75
6 - LLMQ_25_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

dash-cli -testnet quorum isconflicting 1 \
  "e980ebf295b42f24b03321ffb255818753b2b211e8c46b61c0b6fde91242d12f" \
  "907087d4720850e639b7b5cc41d7a6d020e5a50debb3bc3974f0cb3d7d378ea4"

Result:

false

Quorum MemberOf#

The quorum memberOf RPC 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

→ →
quorumHash

string (hex)

Required
(exactly 1)

The hash of the quorum

→ →
quorumIndex

number

Required
(exactly 1)

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)

The number of previous consecutive DKG failures for the corresponding quorumIndex before the currently active one. Only present for rotating quorums

→ →
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

dash-cli -testnet quorum memberof \
  39c07d2c9c6d0ead56f52726b63c15e295cb5c3ecf7fe1fefcfb23b2e3cfed1f 1

Result:

[
  {
    "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

→→
Quorum

object

Optional
(0 or more)

Object with the quorum hash as key. Note: most recent quorums come first

→→→
xxxx

object

Required
(exactly 1)

Key: quorum hash
Value: quorum details

→→→→
quorumIndex

numeric

Optional
(0 or 1)

Quorum index (applicable only to rotated quorums)

→→→→
creationHeight

numeric

Required
(exactly 1)

Block height where the DKG started

→→→→
minedBlockHash

string

Required
(exactly 1)

Blockhash where the commitment was mined.

→→→→
numValidMembers

numeric

Required
(exactly 1)

The total of valid members.

→→→→
healthRatio

string

Required
(exactly 1)

The ratio of healthy members to quorum size. Range [0.0 - 1.0].

Example from Dash Core 18.2.0

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#

Added in version 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 <platform LLMQ type>.

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:
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):

dash-cli -testnet quorum platformsign \
  "abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234" \
  "51c11d287dfa85aef3eebb5420834c8e443e01d15c0b0a8e397d67e2e51aa239"

Result:

false

See also

  • Quorum Sign: requests threshold-signing for a message.

  • 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.

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

Name

Type

Presence

Description

baseBlockHashes

array

Optional
(0 or 1)

Updated in Dash Core 23.0.0 (previously baseBlockHash...)
Array of block hashes (default: empty array)

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

→
quorumSnapshotAtHMinus4C

object

Optional
(0 or 1)

Quorum snapshot at h-4c. Only returned if extraShare is true

→
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

→
mnListDiffAtHMinus4C

object

Optional
(0 or 1)

Masternode list diff for h-4c. Only returned if extraShare is true

→
lastCommitmentPerIndex

array

Required
(exactly 1)

The most recent final commitment for each quorumIndex

→
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

dash-cli -testnet quorum rotationinfo 000001e1ef5f2e2bbc3de3b8b3c554e756ef2b7dcd1eb7552ff48fe319caff4b

Result (truncated):

{
  "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
  "lastCommitmentPerIndex": [], // Content truncated
  "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 to list:
1 - LLMQ_50_60
2 - LLMQ_400_60
3 - LLMQ_400_85
4 - LLMQ_100_67
5 - LLMQ_60_75
6 - LLMQ_25_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

dash-cli -testnet quorum selectquorum 1 \
  b95205c3bba72e9edfbe7380ec91fe5a97e16a189e28f39b03c6822757ad1a34

Result:

{
  "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:
1 - LLMQ_50_60
2 - LLMQ_400_60
3 - LLMQ_400_85
4 - LLMQ_100_67
5 - LLMQ_60_75
6 - LLMQ_25_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:

dash-cli -testnet quorum verify 1 \
  "2ceeaa7ff20de327ef65b14de692199d15b67b9458d0ded7d68735cce98dd039" \
  "8b5174d0e95b5642ebec23c3fe8f0bbf8f6993502f4210322871bba0e818ff3b" \
  "99cf2a0deb08286a2d1ffdd2564b35522fd748c8802e561abed330dea20df5cb5a5dffeddbe627ea32cb36de13d5b4a516fdfaebae9886b2f7969a5d112416cf8d1983ebcbf1463a64f7522505627e08b9c76c036616fbb1649271a2773a1653" \
  "000000583a348d1a0a5f753ef98e6a69f9bcd9b27919f10eb1a1c3edb6c79182"

Result:

true

SubmitChainlock#

The submitchainlock RPC 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

dash-cli submitchainlock "000000f7e552718cf326024ba0b0110695300b730873de1942a4106b665fc034" "3045022100a59e3b0f..." 964445

Result:

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:

dash-cli -testnet verifychainlock \
  "00000036d5c520be6e9a32d3829efc983a7b5e88052bf138f80a2b3988689a24" \
  "97ec34efd1615b84af62495e54024880752f57790cf450ae974b80002440963592d96826e24f109e6c149411b70bb9a0035443752368590adae60365cf4251464e0423c1263e9c56a33eae9be9e9c79a117151b2173bcee93497008cace8d793"

Result:

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:

dash-cli -testnet verifyislock \
  "e5affbbb07084f15ff86bc5043978360a22c8bbacc10a09b973da2cfc32a0115" \
  "17e3d624ca71f06d91e35c01b0933ec7a34fd18a3700c4c3cbc947b59e91c6b2" \
  "b36f68abbb15be1948b0b55d392420b9fcc208361037f6dbbb7552f1fda9bae50800df265b037273f8ad310f0ec3af011166ba61002ac30dececee4e46d4e28de8553515cfdfa40fd04e7e3bf4932049f8b670e908b7b9a2bb69d5c1c59dd7f4"

Result:

true

VerifyQuorumProofChain#

Added in version 24.0.0.

The verifyquorumproofchain RPC verifies a DASHNC02 proof (as returned by the getquorumproofchain RPC) against an independently trusted full snapshot. It never obtains trust roots from the proof data. The snapshot’s masternode_root and quorum_root are the merkleRootMNList and merkleRootQuorums values from the trusted block’s CbTx.

Verification failures are reported in the result (valid is false with an error) rather than as an RPC error. Malformed parameters still return an RPC error.

Parameter #1—trusted checkpoint

Name

Type

Presence

Description

checkpoint

object

Required
(exactly 1)

Trusted snapshot

→
network

number (int)

Required
(exactly 1)

0 for mainnet, 1 for testnet

→
height

number (int)

Required
(exactly 1)

Snapshot height

→
block_hash

string (hex)

Required
(exactly 1)

Snapshot block hash

→
masternode_root

string (hex)

Required
(exactly 1)

Masternode list merkle root at the snapshot block

→
quorum_root

string (hex)

Required
(exactly 1)

Quorum merkle root at the snapshot block

Parameter #2—proof

Name

Type

Presence

Description

proof_hex

string (hex)

Required
(exactly 1)

DASHNC02 proof

Parameter #3—minimum height

Name

Type

Presence

Description

minimum_height

number (int)

Optional
(0 or 1)

Caller freshness policy. Verification fails with Stale proof target if the proven target is below this height. Default: 0

Result—verification result

Name

Type

Presence

Description

result

object

Required
(exactly 1)

Verification result

→
valid

bool

Required
(exactly 1)

Whether verification succeeded

→
target

object

Optional
(0 or 1)

Authenticated target. Only returned if verification succeeded

→ →
network

number (int)

Required
(exactly 1)

0 for mainnet, 1 for testnet

→ →
height

number (int)

Required
(exactly 1)

Height of the target block

→ →
block_hash

string (hex)

Required
(exactly 1)

Hash of the target block

→ →
masternode_root

string (hex)

Required
(exactly 1)

Masternode list merkle root at the target block

→ →
quorum_root

string (hex)

Required
(exactly 1)

Quorum merkle root at the target block

→
error

string

Optional
(0 or 1)

Verification error. Only returned if verification failed

Example from Dash Core 24.0.0

Verify the proof generated in the getquorumproofchain example, using testnet checkpoint block 1380000 as the trusted snapshot:

dash-cli -testnet verifyquorumproofchain \
  '{"network":1,"height":1380000,"block_hash":"000000a98084beaf77ed26a905a7d59979009e23367a55b5d634962d7d65a1f9","masternode_root":"5fa611bb797e695ea18fdcd16465d6e47601fa01a72fd8e76d7664dba81967ca","quorum_root":"9273f3eb92ea058fd196bc45d302c9f5395b5df03cc3535697e8272ba33fd1f2"}' \
  "444153484e43303201a00e1500f9a1657d2d9634d6b5557a36239e007999d5a705a926ed77afbe8480a9000000ca6719a8db64766de7d82fa701fa0176e4d66564d1dc8fa15e697e79bb11a65f..."

Result:

{
  "valid": true,
  "target": {
    "network": 1,
    "height": 1571714,
    "block_hash": "0000006daabb2da6ded3fa872b2940d7916d5dc5dab63937487c2be759a02c4c",
    "masternode_root": "97f6eb2dff6ad2795dd20aabc454a21a5dbf37e88861dad5fbafe73487cc33e4",
    "quorum_root": "6044d1854baea0623ab1999022ccd53326ac154d567751b38e2bd70891ba9027"
  }
}

Verify the same proof with a minimum_height above the proven target:

dash-cli -testnet verifyquorumproofchain '{"network":1,"height":1380000,...}' "4441...a65f..." 1600000

Result:

{
  "valid": false,
  "error": "Stale proof target"
}

See also