diff --git a/_autocrossref.yaml b/_autocrossref.yaml index e8d501d3..22751ece 100644 --- a/_autocrossref.yaml +++ b/_autocrossref.yaml @@ -516,6 +516,8 @@ DIP1: '`privatesend` RPC': rpc privatesend '`pruneblockchain`': rpc pruneblockchain '`pruneblockchain` RPC': rpc pruneblockchain +'`quorum`': rpc quorum +'`quorum` RPC': rpc quorum '`removeprunedfunds`': rpc removeprunedfunds '`removeprunedfunds` RPC': rpc removeprunedfunds '`sendfrom`': rpc sendfrom diff --git a/_config.yml b/_config.yml index c2692a4f..58cf2ff6 100644 --- a/_config.yml +++ b/_config.yml @@ -294,6 +294,7 @@ devsearches: - 'PrioritiseTransaction': "/en/developer-reference#prioritisetransaction" - 'PrivateSend': "/en/developer-reference#privatesend" - 'PruneBlockChain': "/en/developer-reference#pruneblockchain" + - 'Quorum': "/en/developer-reference#quorum" - 'RemovePrunedFunds': "/en/developer-reference#removeprunedfunds" - 'SendFrom': "/en/developer-reference#sendfrom" - 'SendMany': "/en/developer-reference#sendmany" diff --git a/_includes/devdoc/dash-core/rpcs/quick-reference.md b/_includes/devdoc/dash-core/rpcs/quick-reference.md index b02d730f..6bcee4c2 100644 --- a/_includes/devdoc/dash-core/rpcs/quick-reference.md +++ b/_includes/devdoc/dash-core/rpcs/quick-reference.md @@ -162,7 +162,7 @@ These RPCs are all Dash-specific and not found in Bitcoin Core * [GetGovernanceInfo][rpc getgovernanceinfo]: {{summary_getGovernanceInfo}} {{DASH_UPDATED0_14_0}} * [GetPoolInfo][rpc getpoolinfo]: {{summary_getPoolInfo}} * [GetSuperblockBudget][rpc getsuperblockbudget]: {{summary_getSuperblockBudget}} -* [GObject][rpc gobject]: {{summary_gObject}} {{DASH_UPDATED0_13_0}} +* [GObject][rpc gobject]: {{summary_gObject}} {{DASH_UPDATED0_14_0}} * [Masternode][rpc masternode]: {{summary_masternode}} {{DASH_UPDATED0_14_0}} * [MasternodeList][rpc masternodelist]: {{summary_masternodeList}} {{DASH_UPDATED0_14_0}} * [MnSync][rpc mnsync]: {{summary_mnSync}} {{DASH_UPDATED0_14_0}} @@ -178,8 +178,9 @@ These RPCs are all Dash-specific and not found in Bitcoin Core {% autocrossref %} -* [BLS][rpc bls]: {{summary_bls}} {{DASH_NEW0_13_0}} -* [ProTx][rpc protx]: {{summary_proTx}} {{DASH_UPDATED0_13_2}} +* [BLS][rpc bls]: {{summary_bls}} {{DASH_UPDATED0_14_0}} +* [ProTx][rpc protx]: {{summary_proTx}} {{DASH_UPDATED0_14_0}} +* [Quorum][rpc quorum]: {{summary_quorum}} {{DASH_NEW0_14_0}} {% endautocrossref %} @@ -307,7 +308,7 @@ default. * [ListReceivedByAddress][rpc listreceivedbyaddress]: {{summary_listReceivedByAddress}} {{DASH_UPDATED0_13_0}} * [ListSinceBlock][rpc listsinceblock]: {{summary_listSinceBlock}} {{DASH_UPDATED0_14_0}} * [ListTransactions][rpc listtransactions]: {{summary_listTransactions}} {{DASH_UPDATED0_14_0}} -* [ListUnspent][rpc listunspent]: {{summary_listUnspent}} {{DASH_UPDATED0_12_3}} {{UPDATED0_13_0}} +* [ListUnspent][rpc listunspent]: {{summary_listUnspent}} {{DASH_UPDATED0_14_0}} * [LockUnspent][rpc lockunspent]: {{summary_lockUnspent}} * [Move][rpc move]: {{summary_move}} {{DEPRECATED}} * [RemovePrunedFunds][rpc removeprunedfunds]: {{summary_removePrunedFunds}} {{DASH_NEW0_12_3}} {{NEW0_13_0}} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/bls.md b/_includes/devdoc/dash-core/rpcs/rpcs/bls.md index 8adaa609..09294ff4 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/bls.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/bls.md @@ -61,6 +61,57 @@ Result: } {% endhighlight %} +{% endautocrossref %} + +###### BLS FromSecret + + +{% autocrossref %} + +The `bls fromsecret` RPC parses a BLS secret key and returns the secret/public key pair. + +*Parameter #1---secret key* + +{% itemplate ntpd1 %} +- n: "`secret`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "The BLS secret key" +{% enditemplate %} + +*Result---the secret/public key pair* + +{% itemplate ntpd1 %} +- n: "`result`" + t: "object" + p: "Required
(exactly 1)" + d: "BLS key pair" + +- n: "→
`secret`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "A BLS secret key" + +- n: "→
`public`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "A BLS public key" +{% enditemplate %} + +*Example from Dash Core 0.14.0* + +{% highlight bash %} +dash-cli -testnet bls fromsecret 52f35cd3d977a505485f2474e7e71ef3f60f859603d72ad6b0fa7f7bd163e144 +{% endhighlight %} + +Result: +{% highlight json %} +{ + "secret": "52f35cd3d977a505485f2474e7e71ef3f60f859603d72ad6b0fa7f7bd163e144", + "public": "885d01d746c3e4d2093b0975de2d8c1f3e5a2c3e8fdaaed929f86fc9fbb278a095248163c101a2456650b415776b7990" +} +{% endhighlight %} + *See also: none* {% endautocrossref %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/gobject.md b/_includes/devdoc/dash-core/rpcs/rpcs/gobject.md index c56b0b05..393fbb04 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/gobject.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/gobject.md @@ -801,52 +801,7 @@ Result (wrapped): -The `gobject getvotes` RPC gets all votes for a governance object hash (including old votes). - -*Parameter #1---object hash* - -{% itemplate ntpd1 %} -- n: "`governance-hash`" - t: "string (hex)" - p: "Required
(exactly 1)" - d: "The hash of a governance object" - -{% enditemplate %} - -*Result---votes for specified governance* - -{% itemplate ntpd1 %} -- n: "Result" - t: "object" - p: "Required
(exactly 1)" - d: "The governance object votes" - -- n: "→
Vote Info" - t: "string" - p: "Required
(1 or more)" - d: "Key: vote-hash

Value: Masternode's unspent outpoint, time, outcome, and signal of the vote" - -{% enditemplate %} - -*Example from Dash Core 0.12.2* - -{% highlight bash %} -dash-cli -testnet gobject getvotes 78941af577f639ac94440e4855a1ed8f\ - 696f1506d1c0bed4f4b68f05be26d3ca -{% endhighlight %} - -Result (truncated): -{% highlight json %} -{ - "174aaba65982d25a23f437e2a66ec3836146ba7b7ce5b3fe2d5476907f7079d9": "2eab488e3a7b030303de0d18e357ce17a9fc6b8876705d61076bbe923b2e5fc8-1:1509354047:YES:DELETE", - "216cbc42addec1a6b83e1f2b0b3779594bd879f5671dd76a9826cc690c68286d": "b0320c1eff10ccb5e26086017a09e77dacb30fdcafccb3d98db3e5b610b9f1bd-1:1509117256:YES:DELETE", - "aa4dc9d3b9e74e8c1ffc725b737d07f8a32e43c64907e4bea19e64a86135f08a": "af9f5646ace92f76b3a01b0abe08716a0a7ded64074c2d2e712c93174b9013d1-1:1508866932:YES:FUNDING", - "73dd135ea7bece0f2047de75d8ca04f2985daebed9568d28ee58a60a12a2a082": "8e3fee7f668fed7019588be616225c6c4762ee632470878b2dc8eae3f0b3f67d-1:1508866932:YES:FUNDING", - "d13b9c5c28bbc8684a7291961a1023abbbe65b534804d0629fb44166cc1a6148": "08b2dbffd61d927bc12c20f6853513f41fbf7737446632b13c7ca0df8c6da282-1:1508866932:YES:FUNDING", - "8a4283d457d8635b43c6fa6cbf865813a80d965c777e8ba07364eb6468200ae1": "76c40abd280441b75577e99e9e4f253f9281a7deb4feebff83860f9cede7a09b-1:1508866932:YES:FUNDING", - "313e19607813cb0db3b3fb477982b4d3418f13f8511295419df8fe1f7ff6668f": "0fd502f28b9a9a256d9ba29a047c375fe2823b6e76e4853af16e079a709ab72a-1:1508866932:YES:FUNDING" -} -{% endhighlight %} +{{WARNING}} **_Removed in Dash Core 0.14.0._** {% endautocrossref %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/listunspent.md b/_includes/devdoc/dash-core/rpcs/rpcs/listunspent.md index 11a5ce3d..8b89dbb3 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/listunspent.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/listunspent.md @@ -60,7 +60,7 @@ the *spendable* field in the results described below. - n: "Include Unsafe" t: "bool" p: "Optional
(false or true)" - d: "Include outputs that are not safe to spend because they come from unconfirmed untrusted transactions or unconfirmed replacement transactions (cases where we are less sure that a conflicting transaction won't be mined). Default is `true`" + d: "Include outputs that are not safe to spend . See description of `safe` attribute below. Default is `true`" {% enditemplate %} @@ -133,9 +133,14 @@ the *spendable* field in the results described below. p: "Required
(exactly 1)" d: "The number of PrivateSend rounds" +- n: "→ →
`safe`" + t: "bool" + p: "Required
(exactly 1)" + d: "*Added in Bitcoin Core 0.15.0*

Whether this output is considered safe to spend. Unconfirmed transactions from outside keys and unconfirmed replacement transactions are considered unsafe and are not eligible for spending by `fundrawtransaction` and `sendtoaddress`." + {% enditemplate %} -*Example from Dash Core 0.12.3* +*Example from Dash Core 0.14.0* Get all outputs confirmed at least 6 times for a particular address: @@ -143,7 +148,7 @@ address: {% highlight bash %} dash-cli -testnet listunspent 6 99999999 ''' [ - "yXGNabkdQ3JZ7LZ9RCnFe5dqhtBA3hVmU8" + "yLki4jbxX28JB3TThm1DTgRfbKVhhiMx3d" ] ''' {% endhighlight %} @@ -153,15 +158,16 @@ Result: {% highlight json %} [ { - "txid": "0e86f58c56648175362443c1ef28e473acb4c4adc1b3f7983deaddfa3a61a4d7", - "vout": 4, - "address": "yXGNabkdQ3JZ7LZ9RCnFe5dqhtBA3hVmU8", - "scriptPubKey": "76a91478149277b5d820b04e60cbf96ff81fd1ccc6533388ac", - "amount": 0.01000010, - "confirmations": 609, + "txid": "534fe12e360773dddf8aa125a4027d2d8c0073e13ff2f04fd733202b85dbdcf1", + "vout": 0, + "address": "yLki4jbxX28JB3TThm1DTgRfbKVhhiMx3d", + "scriptPubKey": "76a91404c719ccf48d39d3e6253ac98edaf2b5d24f0c0588ac", + "amount": 1.00001000, + "confirmations": 85, "spendable": true, "solvable": true, - "ps_rounds": 5 + "safe": true, + "ps_rounds": 13 } ] {% endhighlight %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/masternode.md b/_includes/devdoc/dash-core/rpcs/rpcs/masternode.md index 555ad474..69d21357 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/masternode.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/masternode.md @@ -144,14 +144,14 @@ The `masternode current` RPC prints info on current masternode winne p: "Required
(exactly 1)" d: "The IP address/port of the masternode" -- n: "→
`protocol`" - t: "number (int)" +- n: "→
`proTxHash`" + t: "string" p: "Required
(exactly 1)" - d: "The protocol version number used by this node. See the [protocol versions section][section protocol versions] for more information" + d: "The masternode's Provider Registration transaction hash" - n: "→
`outpoint`" t: "string" - p: "Required
(1 or more)" + p: "Required
(exactly 1)" d: "The masternode's outpoint" - n: "→
`payee`" @@ -159,19 +159,9 @@ The `masternode current` RPC prints info on current masternode winne p: "Required
(exactly 1)" d: "Payee address" -- n: "→
`lastseen`" - t: "number (int)" - p: "Required
(exactly 1)" - d: "The Unix epoch time when the masternode was last seen" - -- n: "→
`activeseconds`" - t: "number (int)" - p: "Required
(exactly 1)" - d: "The number of seconds the masternode has been active" - {% enditemplate %} -*Example from Dash Core 0.12.2* +*Example from Dash Core 0.14.0* {% highlight bash %} dash-cli -testnet masternode current @@ -180,13 +170,11 @@ dash-cli -testnet masternode current Result: {% highlight json %} { - "height": 37375, - "IP:port": "108.61.192.47:19999", - "protocol": 70208, - "outpoint": "3df7fb192e21c34da99bdd10c34e58ecaf3f3c37d6b2289f0ffedba5050188cc-1", - "payee": "ydGgePy4a3zza37Zm4D44B99czyo6TftU1", - "lastseen": 1512482630, - "activeseconds": 3170434 + "height": 76179, + "IP:port": "34.242.53.163:26155", + "proTxHash": "9de76b8291d00026ab0af86306023c7b90f8e9229dc04916fe1335bf5e11f15d", + "outpoint": "9de76b8291d00026ab0af86306023c7b90f8e9229dc04916fe1335bf5e11f15d-1", + "payee": "yZnU7YJJgGQKvKPQFqXJ4k4DGSsRMhgLXx" } {% endhighlight %} @@ -432,14 +420,14 @@ The `masternode winner` RPC prints info on the next masternode winne p: "Required
(exactly 1)" d: "The IP address/port of the masternode" -- n: "→
`protocol`" - t: "number (int)" +- n: "→
`proTxHash`" + t: "string" p: "Required
(exactly 1)" - d: "The protocol version number used by this node. See the [protocol versions section][section protocol versions] for more information" + d: "The masternode's Provider Registration transaction hash" - n: "→
`outpoint`" t: "string" - p: "Required
(1 or more)" + p: "Required
(exactly 1)" d: "The masternode's outpoint" - n: "→
`payee`" @@ -447,19 +435,9 @@ The `masternode winner` RPC prints info on the next masternode winne p: "Required
(exactly 1)" d: "Payee address" -- n: "→
`lastseen`" - t: "number (int)" - p: "Required
(exactly 1)" - d: "The Unix epoch time when the masternode was last seen" - -- n: "→
`activeseconds`" - t: "number (int)" - p: "Required
(exactly 1)" - d: "The number of seconds the masternode has been active" - {% enditemplate %} -*Example from Dash Core 0.12.2* +*Example from Dash Core 0.14.0* {% highlight bash %} dash-cli -testnet masternode winner @@ -468,13 +446,11 @@ dash-cli -testnet masternode winner Result: {% highlight json %} { - "height": 37384, - "IP:port": "145.239.235.17:29999", - "protocol": 70208, - "outpoint": "66eddd00e5927d0a03437d5b8a2f15367c978ef7951c80ae1608a45b1bf64318-1", - "payee": "yY3q6wqRe1y7xzHbGE88YfRg4t97GU7BJ6", - "lastseen": 1512482474, - "activeseconds": 1180019 + "height": 76191, + "IP:port": "34.242.53.163:26173", + "proTxHash": "024608d03beb6a6065f14a29a837c68ae449ac1e17056819366ca0b72b6dd81f", + "outpoint": "024608d03beb6a6065f14a29a837c68ae449ac1e17056819366ca0b72b6dd81f-1", + "payee": "yhp182AnF7gUAyHiWgSbDrKqHKt2dzhoyW" } {% endhighlight %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/protx.md b/_includes/devdoc/dash-core/rpcs/rpcs/protx.md index 202f8bec..b8995b2c 100644 --- a/_includes/devdoc/dash-core/rpcs/rpcs/protx.md +++ b/_includes/devdoc/dash-core/rpcs/rpcs/protx.md @@ -53,10 +53,10 @@ The `protx register` RPC creates a ProRegTx referencing an existing d: "IP and port in the form 'IP:PORT'.
Must be unique on the network.
Can be set to '0', which will require a ProUpServTx afterwards." {% enditemplate %} -*Parameter #4---owner key address* +*Parameter #4---owner address* {% itemplate ntpd1 %} -- n: "`ownerKeyAddr`" +- n: "`ownerAddress`" t: "string (hex)" p: "Required
(exactly 1)" d: "The owner key used for payee updates and proposal voting. The private key belonging to this address be known in your wallet. The address must be unused and must differ from the `collateralAddress`." @@ -71,13 +71,13 @@ The `protx register` RPC creates a ProRegTx referencing an existing d: " 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." {% enditemplate %} -*Parameter #6---voting key address* +*Parameter #6---voting address* {% itemplate ntpd1 %} -- n: "`votingKeyAddr`" +- n: "`votingAddress`" t: "string (hex)" p: "Required
(exactly 1)" - d: "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 '0' or an empty string, `ownerAddr` will be used." + d: "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." {% enditemplate %} *Parameter #7---operator reward* @@ -158,10 +158,10 @@ The `protx register_fund` RPC creates and funds a ProRegTx with the d: "IP and port in the form 'IP:PORT'.
Must be unique on the network.
Can be set to '0', which will require a ProUpServTx afterwards." {% enditemplate %} -*Parameter #3---owner key address* +*Parameter #3---owner address* {% itemplate ntpd1 %} -- n: "`ownerKeyAddr`" +- n: "`ownerAddress`" t: "string (hex)" p: "Required
(exactly 1)" d: "The owner key used for payee updates and proposal voting. The private key belonging to this address be known in your wallet. The address must be unused and must differ from the `collateralAddress`." @@ -176,13 +176,13 @@ The `protx register_fund` RPC creates and funds a ProRegTx with the d: " 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." {% enditemplate %} -*Parameter #5---voting key address* +*Parameter #5---voting address* {% itemplate ntpd1 %} -- n: "`votingKeyAddr`" +- n: "`votingAddress`" t: "string (hex)" p: "Required
(exactly 1)" - d: "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 '0' or an empty string, `ownerAddr` will be used." + d: "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." {% enditemplate %} *Parameter #6---operator reward* @@ -274,10 +274,10 @@ and outputs to cover fees. d: "IP and port in the form 'IP:PORT'.
Must be unique on the network.
Can be set to '0', which will require a ProUpServTx afterwards." {% enditemplate %} -*Parameter #4---owner key address* +*Parameter #4---owner address* {% itemplate ntpd1 %} -- n: "`ownerKeyAddr`" +- n: "`ownerAddress`" t: "string (hex)" p: "Required
(exactly 1)" d: "The owner key used for payee updates and proposal voting. The private key belonging to this address be known in your wallet. The address must be unused and must differ from the `collateralAddress`." @@ -292,13 +292,13 @@ and outputs to cover fees. d: " 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." {% enditemplate %} -*Parameter #6---voting key address* +*Parameter #6---voting address* {% itemplate ntpd1 %} -- n: "`votingKeyAddr`" +- n: "`votingAddress`" t: "string (hex)" p: "Required
(exactly 1)" - d: "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 '0' or an empty string, `ownerAddr` will be used." + d: "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." {% enditemplate %} *Parameter #7---operator reward* @@ -671,7 +671,7 @@ The `protx update_service` RPC creates and sends a ProUpServTx to th - n: "`operatorPayoutAddress`" t: "string (hex)" p: "Optional
(0 or 1)" - d: "The Dash address used for operator reward payments. Only allowed when the ProRegTx had a non-zero `operatorReward` value." + d: "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." {% enditemplate %} *Parameter #5---fee source address* @@ -730,16 +730,16 @@ The `protx update_registrar` RPC creates and sends a ProUpRegTx to t - n: "`operatorPubKey`" t: "string (hex)" p: "Required
(exactly 1)" - d: " 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." + d: " 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 last on-chain operator key of the masternode will be used." {% enditemplate %} -*Parameter #3---voting key address* +*Parameter #3---voting address* {% itemplate ntpd1 %} -- n: "`votingKeyAddr`" +- n: "`votingAddress`" t: "string (hex)" p: "Required
(exactly 1)" - d: "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 '0' or an empty string, the last on-chain voting key of the masternode will be used." + d: "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." {% enditemplate %} *Parameter #4---operator payout address* @@ -748,7 +748,7 @@ The `protx update_registrar` RPC creates and sends a ProUpRegTx to t - n: "`payoutAddress`" t: "string (hex)" p: "Optional
(0 or 1)" - d: "The Dash address to use for masternode reward payments. If set to '0' or an empty string, the last on-chain payout address of the masternode will be used." + d: "The Dash address to use for masternode reward payments. If set to an empty string, the last on-chain payout address of the masternode will be used." {% enditemplate %} *Parameter #5---fee source address* @@ -948,63 +948,161 @@ The `protx diff` RPC calculates a diff and a proof between two maste p: "Required
(exactly 1)" d: "Set to `true` if masternode is valid" +- n: "→
`deletedQuorums`" + t: "array" + p: "Required
(exactly 1)" + d: "An array of deleted quorums" + +- n: "→ →
`llmqType`" + t: "number" + p: "Required
(exactly 1)" + d: "The quorum type" + +- n: "→ →
`quorumHash`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "The hash of the quorum" + +- n: "→
`newQuorums`" + t: "array" + p: "Required
(exactly 1)" + d: "An array of new quorums" + +- n: "→ →
`version`" + t: "number" + p: "Required
(exactly 1)" + d: "The quorum version" + +- n: "→ →
`llmqType`" + t: "number" + p: "Required
(exactly 1)" + d: "The quorum type" + +- n: "→ →
`quorumHash`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "The hash of the quorum" + +- n: "→ →
`signersCount`" + t: "number" + p: "Required
(exactly 1)" + d: "The number of signers for the quorum" + +- n: "→ →
`validMembersCount`" + t: "number" + p: "Required
(exactly 1)" + d: "The number of valid members in the quorum" + +- n: "→ →
`quorumPublicKey`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "The public key of the quorum" + - n: "→
`merkleRootMNList`" t: "string (hex)" p: "Required
(exactly 1)" d: "Merkle root of the masternode list" + +- n: "→
`merkleRootQuorums`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "*Added in Coinbase Transaction version 2 (Dash Core 0.14.0)*

Merkle root of the masternode list" {% enditemplate %} *Example from Dash Core 0.14.0* {% highlight bash %} -dash-cli -testnet protx diff 600 700 +dash-cli -testnet protx diff 75000 76000 {% endhighlight %} -Result: +Result (truncated): {% highlight json %} { - "baseBlockHash": "0000002b88258091c9f343e124040fb7b2e0d88afe4a99d213c046792c183a49", - "blockHash": "0000051bbea86db62be46c0beae2cb34110e928ace42683ab189e8db9874308f", - "cbTxMerkleTree": "0200000002a4eaaaaaf7e260b90b1a7987eb269da110559343be5746ac5ef7f39b79c1228e4f7e074272c7e3814f630ce4f2f52f80c0b814fb1ce0e4d954b7b583a55ff0a50103", - "cbTx": "03000500010000000000000000000000000000000000000000000000000000000000000000ffffffff060369fe000102ffffffff0340230e43000000001976a914323a8b6425ea6f8dafd411db13bc303219a9e4f088ac44aab141000000001976a914870ca3662658f261952cbfa56969283ad1e84dc588acfc785c01000000001976a91487da2642cf967c493f126137d4f15e9de36b976888ac0000000026010069fe000068cadec8342737e3f2dddc713b3a206390996c8b806fb5a8a2ccc71240cf7a97", + "baseBlockHash": "0000000003deb00bba101ee581cdc4e1cbd1243ec5cd190472ae93eff07c8881", + "blockHash": "0000000000c0279636003ed0042c9a454b4c39e9a6c49bb92d420e0bf4e0f49b", + "cbTxMerkleTree": "01000000015ef8245e2a381174f5e2cc701d5d067d9f16945179380a3ce54415114426eb510101", + "cbTx": "03000500010000000000000000000000000000000000000000000000000000000000000000ffffffff4c03e02801043619ab5c08fabe6d6d736170747365743a7265737574736574d6e48c2ebd4e147373617074736574730100000000000000380000ae250000000d2f6e6f64655374726174756d2f000000000340230e43000000001976a914cb594917ad4e5849688ec63f29a0f7f3badb5da688ac4cfe1c3e000000001976a91470da282ad16926e127064b7d3d787d7f3793014788acf424f104000000001976a914312d9ccd4e73f2e66006e45701bce17125ba681e88ac00000000260100e0280100d26df127ba2765c8f098ab71199c82c59509418efe26cdf02f7c92ce738e2247", "deletedMNs": [ - "285d7da8e94b2348689aca4a63bc6cbbeeb8e912c2088fb9a01e295e3eeeb2ff" ], "mnList": [ { - "proRegTxHash": "39a1339d9bf26de701345beecc5de75a690bc9533741a3dbe90f2fd88b8ed461", - "confirmedHash": "0000030c37a946836029eeca338604c652e3c6cd368eb54bdfa8553213954f74", - "service": "198.199.74.241:19999", - "pubKeyOperator": "0efda51589f86e30cc2305e7388c01ce0309c19a182cf37bced97c7da72236f660c0a395e765e6e06962ecff5a69d7de", - "votingAddress": "yRCunhZVjbMxDr1C6fD6Pf37sTwH6wG7Uu", + "proRegTxHash": "fef106ff6420f9c6638c9676988a8fc655750caafb506c98cb5ff3d4fea99a41", + "confirmedHash": "0000000005d5635228f113b50fb5ad66995a7476ed20374e6e159f1f9e62347b", + "service": "45.48.177.222:19999", + "pubKeyOperator": "842476e8d82327adfb9b617a7ac3f62868946c0c4b6b0e365747cfb8825b8b79ba0eb1fa62e8583ae7102f59bf70c7c7", + "votingAddress": "yf7QHemCfbmKEncwZxroTj8JtShXsC28V6", "isValid": true }, { - "proRegTxHash": "3dbb7de94e219e8f7eaea4f3c01cf97d77372e10152734c1959f17302369aa49", - "confirmedHash": "0000043c0d46d3e6b84c1b420b77b65e962207fb6427361f74d243b9b1fd51cb", - "service": "52.36.64.148:19999", - "pubKeyOperator": "139b654f0b1c031e1cf2b934c2d895178875cfe7c6a4f6758f02bc66eea7fc292d0040701acbe31f5e14a911cb061a2f", - "votingAddress": "yWEZQmGADmdSk6xCai7TPcmiSZuY65hBmo", + "proRegTxHash": "7d56a2cf814b344f54ac4b6485a7a5b2b5a439ea796defff67f2a5872c9df5c3", + "confirmedHash": "00000c66555eea6272e5c7bcdb2648e1a63fd5b23a6d1d4c3f9dc5df43c6a5a8", + "service": "178.151.192.107:19999", + "pubKeyOperator": "8631b1ba19ed23fdab61db7a81c9aa1356eaf37d0a29a14cc493e2f863080bf909b4d3e23d536be1d18e4c842566ed67", + "votingAddress": "yP2LXCZTVVjBFQiN2bhghQvNwdUQG8NMX8", "isValid": true }, { - "proRegTxHash": "851a17fa224374b52b1626f4fb6b5158f2a6add3061e65ef03e1ff13c610c550", - "confirmedHash": "000009a21e82163268330855c9ef13f938a802e46db0fc8a6b1f97161e9d60d8", - "service": "104.196.245.194:19999", - "pubKeyOperator": "0a6bd57731d85539e62c4b46ec150343a0faba9f08af509309634a6e7e016e26b5e809f0e4cc68252c3c46e3a4b35e57", - "votingAddress": "ycppuGB8m2zn5xRfXyJV8U1nNgT7bFs7u5", - "isValid": true - }, - { - "proRegTxHash": "9e9f7a6d63358ff6e7633d4bb5a3c9eaaebaf29437d5917565ed73f5bcc03dbf", - "confirmedHash": "00000020b973dddd9dfd392f118d0094adc86bd8bfe9bee67d08705155bc7aaf", - "service": "207.246.101.212:19999", - "pubKeyOperator": "02a37189354135fed49de66a43d59590824579ccfa7e9512f50aeaff641e1b78cc5c798c5ae4a35b11958fd153f0a0e3", - "votingAddress": "yRH7EYkGQgdKvmfdskcMRphdDumLdP6fq1", - "isValid": true + "proRegTxHash": "be32ec53dbbfb64e5ba29e25e3716f6f4024291914ce4c858cd69f0b4e371dda", + "confirmedHash": "0000000015717296254a7c6139a50c34ad481dc8fdf7b0ea4c8320dc3fff2759", + "service": "173.61.30.231:19025", + "pubKeyOperator": "86ce02e551a46f1ca9a734104b4e387984d733ba99930eb677aae126fa142f201049842422ab2f105e3c9805f1bd54e8", + "votingAddress": "ySBU7oXuuTSJqtmUArMRFsKefJPtEDkESG", + "isValid": false } ], - "merkleRootMNList": "977acf4012c7cca2a8b56f808b6c999063203a3b71dcddf2e3372734c8deca68" + "deletedQuorums": [ + { + "llmqType": 1, + "quorumHash": "00000000052b95b036c87f82d19878f69bf940e6acf9f03cd818bd07a5686d0e" + }, + { + "llmqType": 1, + "quorumHash": "0000000000e8b557ea26921f4bb143e961dd35209cf8c1c7b73397322c1a5018" + }, + { + "llmqType": 1, + "quorumHash": "000000000b259f422fe3b647b8f1553b846d95dc8c79699d60e48a81dcf14747" + }, + { + "llmqType": 1, + "quorumHash": "00000000143365adb3c3de6a35ae247120df8ca53a61afd82cd6fd4126ca8a4d" + } + ], + "newQuorums": [ + { + "version": 1, + "llmqType": 1, + "quorumHash": "0000000001427858db64213ed3ef32ffb2546ca7f2a096adbefc197437b90612", + "signersCount": 50, + "validMembersCount": 50, + "quorumPublicKey": "922e3683358f09a2619efb9e8329f90d5a8a608a18e26db212613ef7f95818eb6f68372fb313edbf96fdd2cdee20a66d" + }, + { + "version": 1, + "llmqType": 1, + "quorumHash": "000000000148a6fced08763f3f31dd68a3d88d2d4f2d48eef44eb9311de66129", + "signersCount": 50, + "validMembersCount": 50, + "quorumPublicKey": "814973fcf54892fa4edbf9e732341ff1227e2a89bf59cb22b52082e940f7c3ac8a7c25163cb375b3cfe3654e86eaa65d" + }, + { + "version": 1, + "llmqType": 1, + "quorumHash": "0000000009931a8a6dcdf21a869739356e7715eb155c1a18a58c8bf13382ac33", + "signersCount": 50, + "validMembersCount": 50, + "quorumPublicKey": "0694b46d8581423f2f68196dcc2d06be0b6b365a4100b54e351ab42f5828d09fd03941f8a1255363753a53d32b43f63b" + }, + { + "version": 1, + "llmqType": 1, + "quorumHash": "0000000006097e9d08a4ca9bedbe4a97bb9bf3fe8d09372d18d2398f185cff5d", + "signersCount": 50, + "validMembersCount": 50, + "quorumPublicKey": "10d0488558afd929508cd2d11bda7564333a904aa23c8b4a1ed57d86b217e3181497469e7220e9421e14f645a00940fc" + } + ], + "merkleRootMNList": "47228e73ce927c2ff0cd26fe8e410995c5829c1971ab98f0c86527ba27f16dd2" } {% endhighlight %} diff --git a/_includes/devdoc/dash-core/rpcs/rpcs/quorum.md b/_includes/devdoc/dash-core/rpcs/rpcs/quorum.md new file mode 100644 index 00000000..eab7f3cd --- /dev/null +++ b/_includes/devdoc/dash-core/rpcs/rpcs/quorum.md @@ -0,0 +1,966 @@ +{% comment %} +This file is licensed under the MIT License (MIT) available on +http://opensource.org/licenses/MIT. +{% endcomment %} +{% assign filename="_includes/devdoc/dash-core/rpcs/rpcs/quorum.md" %} + +##### Quorum +{% include helpers/subhead-links.md %} + + + +{% assign summary_quorum="provides a set of commands for quorums (LLMQs)." %} + +{% autocrossref %} + +*Added in Dash Core 0.14.0* + +The `quorum` RPC {{summary_quorum}} + +{% endautocrossref %} + +###### Quorum List + + +{% autocrossref %} + +The `quorum list` RPC displays a list of on-chain quorums. + +*Parameter #1---quorum count* + +{% itemplate ntpd1 %} +- n: "`count`" + t: "number" + p: "Optional
(0 or 1)" + d: "Number of quorums to list (default: 10)" +{% enditemplate %} + +*Result---a list of quorums* + +{% itemplate ntpd1 %} +- n: "`result`" + t: "object" + p: "Required
(exactly 1)" + d: "Quorum list" + +- n: "→
Quorum" + t: "array" + p: "Required
(1 or more)" + d: "Array of quorum details" + +- n: "→ →
Quorum Hash" + t: "string (hex)" + p: "Optional
(0 or more)" + d: "A quorum hash" +{% enditemplate %} + +*Example from Dash Core 0.14.0* + +{% highlight bash %} +dash-cli -testnet quorum list +{% endhighlight %} + +Result: +{% highlight json %} +{ + "llmq_50_60": [ + "00000000023cc6dde69bed898c83fe2328ef38b1ea9da14a599efa14caef0b7d", + "000000002b968fb3b2fc2ff18d6e89611e366b4d38a6d0437e99bd7c37f2fd83", + "000000000301054c038b07b5b51493d5efc3f078e3aede6eb603c47943d1cc78", + "000000000e901278c00c896754a06f8d45d0268c6aff6e72ffb3007d07c10e73", + "000000001bc592f2a8676203835bc6ad442abeadb9c22b8d6a2999db07354b01", + "000000000896c37ef8a32318ee871589394f1578473b8825275b610690e47db0", + "00000000133b192b2319a0716ad18e5788981fff51856f61205af5d6a634ba41", + "0000000004946f3f9f82a298985f73080d62627d51f6f4ba77f3cd8c6788b3d0", + "0000000005cb014d3df9bac0ba379f1d5b8b75f0e6d7c408d43ac1db330ec641", + "0000000006c1653c7ee747f140dd7daa1da23a541e67a0fc0dc88db3482ec4d5" + ], + "llmq_400_60": [ + "0000000007697fd69a799bfa26576a177e817bc0e45b9fcfbf48b362b05aeff2" + ], + "llmq_400_85": [ + ] +} +{% endhighlight %} + +{% endautocrossref %} + +###### Quorum Info + + +{% autocrossref %} + +The `quorum info` RPC returns information about a specific quorums. + +*Parameter #1---LLMQ Type* + +{% itemplate ntpd1 %} +- n: "`llmqType`" + t: "number" + p: "Required
(exactly 1)" + d: "[Type of quorums](https://github.com/dashpay/dips/blob/master/dip-0006.md#current-llmq-types) to list:
`1` - LLMQ_50_60
`2` - LLMQ_400_60
`3` - LLMQ_400_85" +{% enditemplate %} + +*Parameter #2---quorum hash* + +{% itemplate ntpd1 %} +- n: "`quorumHash`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "The block hash of the quorum" +{% enditemplate %} + +*Parameter #3---secret key share* + +{% itemplate ntpd1 %} +- n: "`includeSkShare`" + t: "bool" + p: "Optional
(0 or 1)" + d: "Include the secret key share (default: `false`)" +{% enditemplate %} + +*Result---information about a quorum* + +{% itemplate ntpd1 %} +- n: "`result`" + t: "object" + p: "Required
(exactly 1)" + d: "Quorum list" + +- n: "→
`height`" + t: "number" + p: "Required
(exactly 1)" + d: "Block height of the quorum" + +- n: "→
`quorumHash`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "The hash of the quorum" + +- n: "→
`minedBlock`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "The hash of the block that established the quorum" + +- n: "→
`members`" + t: "array" + p: "Required
(exactly 1)" + d: "An array containing quorum member details" + +- n: "→ →
Member" + t: "object" + p: "Required
(1 or more)" + d: "An object describing a particular member" + +- n: "→ → →
`proTxHash`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "The masternode's Provider Registration transaction hash" + +- n: "→ → →
`valid`" + t: "bool" + p: "Required
(exactly 1)" + d: "Indicates if the member is valid" + +- n: "→ → →
`pubKeyShare`" + t: "string" + p: "Optional
(0 or 1)" + d: "Member public key share" + +- n: "→
`quorumPublicKey`" + t: "string" + p: "Required
(exactly 1)" + d: "Quorum public key" + +- n: "→
`secretKeyShare`" + t: "string" + p: "Optional
(exactly 1)" + d: "Quorum secret key share" +{% enditemplate %} + +*Example from Dash Core 0.14.0* + +{% highlight bash %} +dash-cli -testnet quorum info 1 \ + 0000000003284177404622ea79491cb19855254627751cfbbb0035a62d17ab6a true +{% endhighlight %} + +Result (truncated): +{% highlight json %} +{ + "height": 76728, + "quorumHash": "0000000003284177404622ea79491cb19855254627751cfbbb0035a62d17ab6a", + "minedBlock": "0000000009d8c183650d12e9ff952967ecfde58404e80db1bf5a7d1a31ccd4ee", + "members": [ + { + "proTxHash": "5eccc0b9a1a2b8a9c3511cae98a664c377e8493c35cdd120e0d71f0b6b0f62c5", + "valid": true, + "pubKeyShare": "04a4ae5cb7f598d1bcc6fa49162fe8c19f6ad763ce3959f5afdc3c00e19d8261af37729ae8a707860ecdea067029d3e9" + }, + { + "proTxHash": "1e17ddf8748ed5e6696255da61922bd3985fd15a33fcb2d051cf84242e89f121", + "valid": true, + "pubKeyShare": "8239b67aff5368e710a8ebe5f1f3e9087e8f9c52ed165293779f40b0e764a20972f2ade9367f41cd4f64a3516ad8c90c" + }, + { + "proTxHash": "f1eb4ac02ab1acbace0a01328e204c4fd7dec5e53a72cccac7729c5802dbeaf4", + "valid": true, + "pubKeyShare": "969655b04484de85b3f1ecce5a9745ec7fd0a34533e13fcf285e15ed034578a604e0e2af98cd12cf89d1cfcc167c978d" + }, + { + "proTxHash": "a288f5de676eb63dee13a618d39bd6b07ad73e9ae40148202fc5b5f32e1b0bfb", + "valid": true, + "pubKeyShare": "047bee41fdce58f8d87ba6820c784f2a096d85d1ceec62520013c7c3ef9de9203b82eadc910b197a906be2cd5fd21c53" + }, + { + "proTxHash": "57795a35a3a127e817704b6b8ce64ac7f6afc49f0d0172c1e4125987c31dd1d7", + "valid": true, + "pubKeyShare": "168b9cb406bc44348b5de18c9017817f4e1b15c304ab8d365ba3828712ab1f64c1e4715715d61a96c5923fbe8c470788" + }, + { + "proTxHash": "04d06d16b3eca2f104ef9749d0c1c17d183eb1b4fe3a16808fd70464f03bcd63", + "valid": true, + "pubKeyShare": "93a85894c04dbc06e9a598126aa8ba9983427a089710c4ff37b9b9f12980780e988f89192b5feaa25f907b8db9efb930" + } + ], + "quorumPublicKey": "18772a3ca86f47795f4e9fa40babe89c7be6bc15bb4e4c8a137715a814a4118516a63b89c5c415b9dfe956f2d6a4fde3", + "secretKeyShare": "3da0d8f532309660f7f44aa0ed42c1569773b39c70f5771ce5604be77e50759e" +} +{% endhighlight %} + +{% endautocrossref %} + + +###### Quorum DKGStatus + + +{% autocrossref %} + +The `quorum list` RPC displays a list of on-chain quorums. + +*Parameter #1---provider registration hash* + +{% itemplate ntpd1 %} +- n: "`proTxHash`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "The Provider Registration transaction hash of the masternode to show status for. If set to an empty string, the local status is shown." +{% enditemplate %} + +*Parameter #2---detail level* + +{% itemplate ntpd1 %} +- n: "`detail_level`" + t: "number" + p: "Required
(exactly 1)" + d: "Detail level of output:
`0` - Only show counts (_default_)
`1` - Show member indexes
`2` - Show member's ProTxHashes" +{% enditemplate %} + +*Result (if detail level was 0 or omitted)---JSON DKG details* + +{% itemplate ntpd1 %} +- n: "`result`" + t: "array" + p: "Required
(exactly 1)" + d: "An array of objects each containing a provider transaction, or JSON `null` if an error occurred" + +- n: "→
`proTxHash`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "The hash of the initial provider registration transaction as hex in RPC byte order" + +- n: "→
`time`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "The Unix epoch time" + +- n: "→
`timeStr`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "The UTC time as a string" + +- n: "→
`session`" + t: "object" + p: "Required
(exactly 1)" + d: "Object containing DKG Session information" + +- n: "→ →
LLMQ Type" + t: "object" + p: "Required
(exactly 1)" + d: "Object" + +- n: "→ → →
`llmqType`" + t: "number" + p: "Required
(exactly 1)" + d: "[Type of quorum](https://github.com/dashpay/dips/blob/master/dip-0006.md#current-llmq-types):
`1` - LLMQ_50_60
`2` - LLMQ_400_60
`3` - LLMQ_400_85" + +- n: "→ → →
`quorumHash`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "The block hash of the quorum" + +- n: "→ → →
`quorumHeight`" + t: "number" + p: "Required
(exactly 1)" + d: "The block height of the quorum" + +- n: "→ → →
`phase`" + t: "number" + p: "Required
(exactly 1)" + d: "The active DKG phase" + +- n: "→ → →
`sentContributions`" + t: "bool" + p: "Required
(exactly 1)" + d: "True when contributions have been sent" + +- n: "→ → →
`sentComplaint`" + t: "bool" + p: "Required
(exactly 1)" + d: "True when complaints have been sent" + +- n: "→ → →
`sentJustification`" + t: "bool" + p: "Required
(exactly 1)" + d: "True when justifications have been sent" + +- n: "→ → →
`sentPrematureCommitment`" + t: "bool" + p: "Required
(exactly 1)" + d: "True when premature commitments have been sent" + +- n: "→ → →
`aborted`" + t: "bool" + p: "Required
(exactly 1)" + d: "True if the DKG session has been aborted" + +- n: "→ → →
`badMembers`" + t: "number" + p: "Required
(exactly 1)" + d: "Number of bad members" + +- n: "→ → →
`weComplain`" + t: "number" + p: "Required
(exactly 1)" + d: "Number of complaints sent" + +- n: "→ → →
`receivedContributions`" + t: "number" + p: "Required
(exactly 1)" + d: "Number of contributions received" + +- n: "→ → →
`receivedComplaints`" + t: "number" + p: "Required
(exactly 1)" + d: "Number of complaints received" + +- n: "→ → →
`receivedJustifications`" + t: "number" + p: "Required
(exactly 1)" + d: "Number of justifications received" + +- n: "→ → →
`receivedPrematureCommitments`" + t: "number" + p: "Required
(exactly 1)" + d: "Number of premature commitments received" + +- n: "→
`minableCommitments`" + t: "object" + p: "Required
(exactly 1)" + d: "Object containing minable commitments" +{% enditemplate %} + +*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. + +{% itemplate ntpd1 %} +- n: "→ → →
`badMembers`" + t: "array" + p: "Required
(exactly 1)" + d: "Array containing the member index for each bad member" + +- n: "→ → →
`weComplain`" + t: "array" + p: "Required
(exactly 1)" + d: "Array containing the member index for each complaint sent" + +- n: "→ → →
`receivedContributions`" + t: "array" + p: "Required
(exactly 1)" + d: "Array containing the member index for each contribution received" + +- n: "→ → →
`receivedComplaints`" + t: "array" + p: "Required
(exactly 1)" + d: "Array containing the member index for each complaint received" + +- n: "→ → →
`receivedJustifications`" + t: "array" + p: "Required
(exactly 1)" + d: "Array containing the member index for each justification received" + +- n: "→ → →
`receivedPrematureCommitments`" + t: "array" + p: "Required
(exactly 1)" + d: "Array containing the member index for each commitment received" +{% enditemplate %} + +*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. + +{% itemplate ntpd1 %} +- n: "→ → →
`badMembers`" + t: "array" + p: "Required
(exactly 1)" + d: "An array of objects with each object containing the member index and ProTx hash for a bad member" + +- n: "→ → → →
Member" + t: "object" + p: "Required
(0 or more)" + d: "An object describing quorum member details" + +- n: "→ → → → →
`memberIndex`" + t: "number" + p: "Required
(exactly 1)" + d: "The quorum member's index" + +- n: "→ → → → →
`proTxHash`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "The hash of the quorum member's provider registration transaction as hex in RPC byte order" + +- n: "→ → →
`weComplain`" + t: "object" + p: "Required
(exactly 1)" + d: "An array of objects with each object containing the member index and ProTx hash for a member being complained about" + +- n: "→ → → →
Member" + t: "object" + p: "Required
(0 or more)" + d: "An object describing quorum member details" + +- n: "→ → → → →
`memberIndex`" + t: "number" + p: "Required
(exactly 1)" + d: "The quorum member's index" + +- n: "→ → → → →
`proTxHash`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "The hash of the quorum member's provider registration transaction as hex in RPC byte order" + +- n: "→ → →
`receivedContributions`" + t: "object" + p: "Required
(exactly 1)" + d: "An array of objects with each object containing the member index and ProTx hash for a member a contribution was received from" + +- n: "→ → → →
Member" + t: "object" + p: "Required
(0 or more)" + d: "An object describing quorum member details" + +- n: "→ → → → →
`memberIndex`" + t: "number" + p: "Required
(exactly 1)" + d: "The quorum member's index" + +- n: "→ → → → →
`proTxHash`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "The hash of the quorum member's provider registration transaction as hex in RPC byte order" + +- n: "→ → →
`receivedComplaints`" + t: "object" + p: "Required
(exactly 1)" + d: "An array of objects with each object containing the member index and ProTx hash for a member a complaint was received from" + +- n: "→ → → →
Member" + t: "object" + p: "Required
(0 or more)" + d: "An object describing quorum member details" + +- n: "→ → → → →
`memberIndex`" + t: "number" + p: "Required
(exactly 1)" + d: "The quorum member's index" + +- n: "→ → → → →
`proTxHash`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "The hash of the quorum member's provider registration transaction as hex in RPC byte order" + +- n: "→ → →
`receivedJustifications`" + t: "object" + p: "Required
(exactly 1)" + d: "An array of objects with each object containing the member index and ProTx hash for a member a justification was received from" + +- n: "→ → → →
Member" + t: "object" + p: "Required
(0 or more)" + d: "An object describing quorum member details" + +- n: "→ → → → →
`memberIndex`" + t: "number" + p: "Required
(exactly 1)" + d: "The quorum member's index" + +- n: "→ → → → →
`proTxHash`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "The hash of the quorum member's provider registration transaction as hex in RPC byte order" + +- n: "→ → →
`receivedPrematureCommitments`" + t: "object" + p: "Required
(exactly 1)" + d: "An array of objects with each object containing the member index and ProTx hash for a member a premature commitment was received from" + +- n: "→ → → →
Member" + t: "object" + p: "Required
(0 or more)" + d: "An object describing quorum member details" + +- n: "→ → → → →
`memberIndex`" + t: "number" + p: "Required
(exactly 1)" + d: "The quorum member's index" + +- n: "→ → → → →
`proTxHash`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "The hash of the quorum member's provider registration transaction as hex in RPC byte order" + +- n: "→ → →
`allMembers`" + t: "array" + p: "Required
(exactly 1)" + d: "Array containing the provider registration transaction hash for all quorum members" +{% enditemplate %} + +*Example from Dash Core 0.14.0* + +{% highlight bash %} +dash-cli -testnet quorum dkgstatus +{% endhighlight %} + +Result: +{% highlight json %} +{ + "proTxHash": "04d06d16b3eca2f104ef9749d0c1c17d183eb1b4fe3a16808fd70464f03bcd63", + "time": 1554817777, + "timeStr": "2019-04-09 13:49:37", + "session": { + "llmq_50_60": { + "llmqType": 1, + "quorumHash": "0000000003284177404622ea79491cb19855254627751cfbbb0035a62d17ab6a", + "quorumHeight": 76728, + "phase": 6, + "sentContributions": true, + "sentComplaint": true, + "sentJustification": false, + "sentPrematureCommitment": true, + "aborted": false, + "badMembers": 1, + "weComplain": 0, + "receivedContributions": 49, + "receivedComplaints": 50, + "receivedJustifications": 0, + "receivedPrematureCommitments": 49 + } + }, + "minableCommitments": { + } +} +{% endhighlight %} + +{% endautocrossref %} + +*Example from Dash Core 0.14.0 (detail_level: 1)* + +{% highlight bash %} +dash-cli -testnet quorum dkgstatus "" 1 +{% endhighlight %} + +Result (truncated): +{% highlight json %} +{ + "proTxHash": "04d06d16b3eca2f104ef9749d0c1c17d183eb1b4fe3a16808fd70464f03bcd63", + "time": 1554817777, + "timeStr": "2019-04-09 13:49:37", + "session": { + "llmq_50_60": { + "llmqType": 1, + "quorumHash": "0000000003284177404622ea79491cb19855254627751cfbbb0035a62d17ab6a", + "quorumHeight": 76728, + "phase": 6, + "sentContributions": true, + "sentComplaint": true, + "sentJustification": false, + "sentPrematureCommitment": true, + "aborted": false, + "badMembers": [ + 25 + ], + "weComplain": [ + ], + "receivedContributions": [ + 0, + 1, + 2, + 3, + 47, + 48, + 49 + ], + "receivedComplaints": [ + 0, + 1, + 2, + 3, + 47, + 48, + 49 + ], + "receivedJustifications": [ + ], + "receivedPrematureCommitments": [ + 0, + 1, + 2, + 3, + 47, + 48, + 49 + ] + } + }, + "minableCommitments": { + } +} +{% endhighlight %} + +*Example from Dash Core 0.14.0 (detail_level: 2)* + +{% highlight bash %} +dash-cli -testnet quorum dkgstatus "" 2 +{% endhighlight %} + +Result (truncated): +{% highlight json %} +{ + "proTxHash": "04d06d16b3eca2f104ef9749d0c1c17d183eb1b4fe3a16808fd70464f03bcd63", + "time": 1554817777, + "timeStr": "2019-04-09 13:49:37", + "session": { + "llmq_50_60": { + "llmqType": 1, + "quorumHash": "0000000003284177404622ea79491cb19855254627751cfbbb0035a62d17ab6a", + "quorumHeight": 76728, + "phase": 6, + "sentContributions": true, + "sentComplaint": true, + "sentJustification": false, + "sentPrematureCommitment": true, + "aborted": false, + "badMembers": [ + { + "memberIndex": 25, + "proTxHash": "ebf4b6337e25b975eb23ba6d113f94882196d7259749acaad952acf48025f590" + } + ], + "weComplain": [ + ], + "receivedContributions": [ + { + "memberIndex": 0, + "proTxHash": "5eccc0b9a1a2b8a9c3511cae98a664c377e8493c35cdd120e0d71f0b6b0f62c5" + }, + { + "memberIndex": 1, + "proTxHash": "1e17ddf8748ed5e6696255da61922bd3985fd15a33fcb2d051cf84242e89f121" + }, + { + "memberIndex": 2, + "proTxHash": "f1eb4ac02ab1acbace0a01328e204c4fd7dec5e53a72cccac7729c5802dbeaf4" + }, + { + "memberIndex": 3, + "proTxHash": "a288f5de676eb63dee13a618d39bd6b07ad73e9ae40148202fc5b5f32e1b0bfb" + }, + { + "memberIndex": 47, + "proTxHash": "1c3618f7228fc4b5e5694dd1be72b633e179b1c17e57d7380992ecb1af6e5fc1" + }, + { + "memberIndex": 48, + "proTxHash": "8390acf4e1db828c53804b7cb2db81db0732239c0da51a7a923e4e1e073c2cb2" + }, + { + "memberIndex": 49, + "proTxHash": "51c11d287dfa85aef3eebb5420834c8e443e01d15c0b0a8e397d67e2e51aa239" + } + ], + "receivedComplaints": [ + { + "memberIndex": 0, + "proTxHash": "5eccc0b9a1a2b8a9c3511cae98a664c377e8493c35cdd120e0d71f0b6b0f62c5" + }, + { + "memberIndex": 1, + "proTxHash": "1e17ddf8748ed5e6696255da61922bd3985fd15a33fcb2d051cf84242e89f121" + }, + { + "memberIndex": 2, + "proTxHash": "f1eb4ac02ab1acbace0a01328e204c4fd7dec5e53a72cccac7729c5802dbeaf4" + }, + { + "memberIndex": 3, + "proTxHash": "a288f5de676eb63dee13a618d39bd6b07ad73e9ae40148202fc5b5f32e1b0bfb" + }, + { + "memberIndex": 47, + "proTxHash": "1c3618f7228fc4b5e5694dd1be72b633e179b1c17e57d7380992ecb1af6e5fc1" + }, + { + "memberIndex": 48, + "proTxHash": "8390acf4e1db828c53804b7cb2db81db0732239c0da51a7a923e4e1e073c2cb2" + }, + { + "memberIndex": 49, + "proTxHash": "51c11d287dfa85aef3eebb5420834c8e443e01d15c0b0a8e397d67e2e51aa239" + } + ], + "receivedJustifications": [ + ], + "receivedPrematureCommitments": [ + { + "memberIndex": 0, + "proTxHash": "5eccc0b9a1a2b8a9c3511cae98a664c377e8493c35cdd120e0d71f0b6b0f62c5" + }, + { + "memberIndex": 1, + "proTxHash": "1e17ddf8748ed5e6696255da61922bd3985fd15a33fcb2d051cf84242e89f121" + }, + { + "memberIndex": 2, + "proTxHash": "f1eb4ac02ab1acbace0a01328e204c4fd7dec5e53a72cccac7729c5802dbeaf4" + }, + { + "memberIndex": 3, + "proTxHash": "a288f5de676eb63dee13a618d39bd6b07ad73e9ae40148202fc5b5f32e1b0bfb" + }, + { + "memberIndex": 47, + "proTxHash": "1c3618f7228fc4b5e5694dd1be72b633e179b1c17e57d7380992ecb1af6e5fc1" + }, + { + "memberIndex": 48, + "proTxHash": "8390acf4e1db828c53804b7cb2db81db0732239c0da51a7a923e4e1e073c2cb2" + }, + { + "memberIndex": 49, + "proTxHash": "51c11d287dfa85aef3eebb5420834c8e443e01d15c0b0a8e397d67e2e51aa239" + } + ], + "allMembers": [ + "5eccc0b9a1a2b8a9c3511cae98a664c377e8493c35cdd120e0d71f0b6b0f62c5", + "1e17ddf8748ed5e6696255da61922bd3985fd15a33fcb2d051cf84242e89f121", + "f1eb4ac02ab1acbace0a01328e204c4fd7dec5e53a72cccac7729c5802dbeaf4", + "a288f5de676eb63dee13a618d39bd6b07ad73e9ae40148202fc5b5f32e1b0bfb", + "...", + "1c3618f7228fc4b5e5694dd1be72b633e179b1c17e57d7380992ecb1af6e5fc1", + "8390acf4e1db828c53804b7cb2db81db0732239c0da51a7a923e4e1e073c2cb2", + "51c11d287dfa85aef3eebb5420834c8e443e01d15c0b0a8e397d67e2e51aa239" + ] + } + }, + "minableCommitments": { + } +} +{% endhighlight %} + +###### Quorum Sign + + +{% autocrossref %} + +The `quorum sign` RPC requests threshold-signing for a message. + +![Warning icon](/img/icons/icon_warning.svg) Note: Used for RegTest testing only. + +*Parameter #1---LLMQ Type* + +{% itemplate ntpd1 %} +- n: "`llmqType`" + t: "number" + p: "Required
(exactly 1)" + d: "[Type of quorum](https://github.com/dashpay/dips/blob/master/dip-0006.md#current-llmq-types):
`1` - LLMQ_50_60
`2` - LLMQ_400_60
`3` - LLMQ_400_85" +{% enditemplate %} + +*Parameter #2---id* + +{% itemplate ntpd1 %} +- n: "`id`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "Signing request ID" +{% enditemplate %} + +*Parameter #3---message hash* + +{% itemplate ntpd1 %} +- n: "`msgHash`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "Hash of the message to be signed" +{% enditemplate %} + +*Result---status* + +{% itemplate ntpd1 %} +- n: "result" + t: "bool" + p: "Required
(exactly 1)" + d: "True or false depending on success" + +{% enditemplate %} + +*Example from Dash Core 0.14.0* + +{% highlight bash %} +dash-cli -testnet quorum sign 1 \ + "abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234" "51c11d287dfa85aef3eebb5420834c8e443e01d15c0b0a8e397d67e2e51aa239" +{% endhighlight %} + +Result: +{% highlight json %} +false +{% endhighlight %} + +{% endautocrossref %} + +###### Quorum HasRecSig + + +{% autocrossref %} + +The `quorum hasrecsig` RPC checks for a recovered signature for a previous threshold-signing message request. + +![Warning icon](/img/icons/icon_warning.svg) Note: Used for RegTest testing only. + +*Parameter #1---LLMQ Type* + +{% itemplate ntpd1 %} +- n: "`llmqType`" + t: "number" + p: "Required
(exactly 1)" + d: "[Type of quorum](https://github.com/dashpay/dips/blob/master/dip-0006.md#current-llmq-types):
`1` - LLMQ_50_60
`2` - LLMQ_400_60
`3` - LLMQ_400_85" +{% enditemplate %} + +*Parameter #2---id* + +{% itemplate ntpd1 %} +- n: "`id`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "Signing request ID" +{% enditemplate %} + +*Parameter #3---message hash* + +{% itemplate ntpd1 %} +- n: "`msgHash`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "Hash of the message to be signed" +{% enditemplate %} + +*Result---status* + +{% itemplate ntpd1 %} +- n: "result" + t: "bool" + p: "Required
(exactly 1)" + d: "True or false depending on success" + +{% enditemplate %} + +*Example from Dash Core 0.14.0* + +{% highlight bash %} +dash-cli -testnet quorum hasrecsig 1 \ + "1746e9e82fde8bbda5407551f22b63794894cef0f761ba43f58fd9a9654ff205" "1746e9e82fde8bbda5407551f22b63794894cef0f761ba43f58fd9a9654ff205" +{% endhighlight %} + +Result: +{% highlight json %} +false +{% endhighlight %} + +{% endautocrossref %} + +###### Quorum IsConflicting + + +{% autocrossref %} + +The `quorum isconflicting` RPC checks if there is a conflict for a threshold-signing message request. + +![Warning icon](/img/icons/icon_warning.svg) Note: Used for RegTest testing only. + +*Parameter #1---LLMQ Type* + +{% itemplate ntpd1 %} +- n: "`llmqType`" + t: "number" + p: "Required
(exactly 1)" + d: "[Type of quorum](https://github.com/dashpay/dips/blob/master/dip-0006.md#current-llmq-types):
`1` - LLMQ_50_60
`2` - LLMQ_400_60
`3` - LLMQ_400_85" +{% enditemplate %} + +*Parameter #2---id* + +{% itemplate ntpd1 %} +- n: "`id`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "Signing request ID" +{% enditemplate %} + +*Parameter #3---message hash* + +{% itemplate ntpd1 %} +- n: "`msgHash`" + t: "string (hex)" + p: "Required
(exactly 1)" + d: "Hash of the message to be signed" +{% enditemplate %} + +*Result---status* + +{% itemplate ntpd1 %} +- n: "result" + t: "bool" + p: "Required
(exactly 1)" + d: "True or false depending on success" + +{% enditemplate %} + +*Example from Dash Core 0.14.0* + +{% highlight bash %} +dash-cli -testnet quorum isconflicting 1 \ + "1746e9e82fde8bbda5407551f22b63794894cef0f761ba43f58fd9a9654ff205" "1746e9e82fde8bbda5407551f22b63794894cef0f761ba43f58fd9a9654ff205" +{% endhighlight %} + +Result: +{% highlight json %} +false +{% endhighlight %} + +{% endautocrossref %} + +{% autocrossref %} + +*See also: none* + +{% endautocrossref %} diff --git a/_includes/helpers/summaries.md b/_includes/helpers/summaries.md index e7e0ed55..f09fbb1a 100644 --- a/_includes/helpers/summaries.md +++ b/_includes/helpers/summaries.md @@ -112,6 +112,7 @@ This file is licensed under the terms of its source texts{%endcomment%} {% assign summary_privateSend="controls the mixing process." %} {% assign summary_proTx="provides a set of commands to execute ProTx related actions." %} {% assign summary_pruneBlockChain="prunes the blockchain up to a specified height or timestamp." %} +{% assign summary_quorum="provides a set of commands for quorums (LLMQs)." %} {% assign summary_removePrunedFunds="deletes the specified transaction from the wallet. Meant for use with pruned wallets and as a companion to importprunedfunds." %} {% assign summary_restGetBlock-noTxDetails="gets a block with a particular header hash from the local block database either as a JSON object or as a serialized block. The JSON object includes TXIDs for transactions within the block rather than the complete transactions [GET block][rest get block] returns." %} {% assign summary_restGetBlock="gets a block with a particular header hash from the local block database either as a JSON object or as a serialized block." %} diff --git a/_includes/layout/base/rpc-table.html b/_includes/layout/base/rpc-table.html index 383c7f34..9625857f 100644 --- a/_includes/layout/base/rpc-table.html +++ b/_includes/layout/base/rpc-table.html @@ -251,7 +251,7 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Dash GObject Y - Updated in 0.13.0.0 + Updated in 0.14.0 Dash @@ -305,13 +305,19 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Evolution BLS Y - Added in 0.13.0 + Updated in 0.14.0 Evolution ProTx Y - Updated in 0.13.2 + Updated in 0.14.0 + + + Evolution + Quorum + Y + Added in 0.14.0 Generating @@ -779,7 +785,7 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header:: Wallet ListUnspent Y - Updated in 0.12.3.0 + Updated in 0.14.0 Wallet diff --git a/_includes/references.md b/_includes/references.md index 55ca041c..83022c0a 100644 --- a/_includes/references.md +++ b/_includes/references.md @@ -180,6 +180,7 @@ http://opensource.org/licenses/MIT. [rpc pruneblockchain]: /en/developer-reference#pruneblockchain [rpc prioritisetransaction]: /en/developer-reference#prioritisetransaction [rpc privatesend]: /en/developer-reference#privatesend +[rpc quorum]: /en/developer-reference#quorum [rpc removeprunedfunds]: /en/developer-reference#removeprunedfunds [rpc sendfrom]: /en/developer-reference#sendfrom [rpc sendmany]: /en/developer-reference#sendmany diff --git a/en/developer-reference.md b/en/developer-reference.md index 4ed0585e..3fb85fb0 100644 --- a/en/developer-reference.md +++ b/en/developer-reference.md @@ -294,6 +294,8 @@ untrusted source. {% include devdoc/dash-core/rpcs/rpcs/pruneblockchain.md %} +{% include devdoc/dash-core/rpcs/rpcs/quorum.md %} + {% include devdoc/dash-core/rpcs/rpcs/removeprunedfunds.md %} {% include devdoc/dash-core/rpcs/rpcs/sendfrom.md %}