V0.13.0 RC updates (#95)

* Content - RPC - Update quick reference

* RPC - Update getblockchaininfo to show BIP-9 progress

Related to dashpay/dash#2435

* RPC - Update gobject prepare with new params

Use-IS (dashpay/dash#2452)
Use specific UTXO for fee (dashpay/dash#2482)

* RPC - Update mode name

* RPC - Update protx default mode

dashpay/dash#2513

* Content - Add spork 17

* Content - Special transactions

Add info for Quorum commitment
Remove messages not in 13.0 (SubTx)

* P2P - Add new txlvote fields

masternodeProTxHash (dashpay/dash#2484)
quorumModifierHash (dashpay/dash#2505)

* RPC - Update protx list

Make all options follow the same parameter format (dashpay/dash#2559)

* Content - version bump

0.13.0.0 bumped to 70213 (dashpay/dash#2557)

* Guide - PrivateSend dstx message limit

Up to 5 simultaneous dstxs per MN allowed (dashpay/dash#2552)

* RPC - Update getblock

Add missing versionHex field (dashpay/dash@e7d9ffa)
Change to use verbosity syntax (dashpay/dash#2506 and
bitcoin/bitcoin#8704)

* P2P - Add qfcommit message (no hexdump example)

DIP6 quorum final commitment (dashpay/dash#2477)

* P2P - qfcommit typo

Change description of llmqType field

* P2P - Special tx payload size clarification

* Guide - Update MN payment description

Related to dashpay/dash#2258

* Guide - fix broken link

* Guide - Update some example txs

Change to hashes on the chain following the 12.3.4 reset

* P2P - Add QcTx hexdump

* P2P - DIP4 message updates

Add SML entry
Update hexdump to include new fields
Add getmnlistd and mnlistdiff to cross ref

* P2P - minor DIP3-related comments
This commit is contained in:
thephez 2018-12-26 11:05:10 -05:00 committed by GitHub
parent be84b44e9b
commit 28514b62d7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
13 changed files with 549 additions and 146 deletions

View file

@ -69,6 +69,8 @@ fiat:
'`getheaders` messages': getheaders message
'`getaddr` message': getaddr message
'`getaddr` messages': getaddr message
'`getmnlistd` message': getmnlistd message
'`getmnlistd` messages': getmnlistd message
'`getsporks` message': getsporks message
'`getsporks` messages': getsporks message
'`govobj` message': govobj message
@ -114,6 +116,8 @@ micropayment channels: micropayment channel
'`mnb` messages': mnb message
'`mnget` message': mnget message
'`mnget` messages': mnget message
'`mnlistdiff` message': mnlistdiff message
'`mnlistdiff` messages': mnlistdiff message
'`mnp` message': mnp message
'`mnp` messages': mnp message
'`mnv` message': mnv message
@ -170,6 +174,9 @@ protocol version 70012: section protocol versions
protocol version 70013: section protocol versions
protocol version 70014: section protocol versions
public key infrastructure: pki
'QcTx': quorum commitment special tx
'`qfcommit` message': qfcommit message
'`qfcommit` messages': qfcommit message
'`r`': r
receipt: DO NOT AUTOCROSSREF
recurrent rebilling:

View file

@ -514,7 +514,7 @@ devsearches:
- "DIP4: Simplified Verification of Deterministic Masternode Lists": "https://github.com/dashpay/dips/blob/master/dip-0004.md"
- "DIP5: Blockchain Users": "https://github.com/dashpay/dips/blob/master/dip-0005.md"
- "DIP6: Long-Living Masternode Quorums": "https://github.com/dashpay/dips/blob/master/dip-0006.md"
- "DIP7: LLMQ Signing Requests / Sessions": "https://github.com/dashpay/dips/blob/master/dip-0007.md"
- "DIP7: LLMQ Signing Requests / Sessions": "https://github.com/dashpay/dips/blob/master/dip-0007.md"
## Bitcoin P2P Protocol messages documented on Bitcoin.org
"P2P Messages":
@ -532,10 +532,12 @@ devsearches:
- "getblocktxn": "/en/developer-reference#getblocktxn"
- "getdata": "/en/developer-reference#getdata"
- "getheaders": "/en/developer-reference#getheaders"
- "getmnlistd": "/en/developer-reference#getmnlistd"
- "headers": "/en/developer-reference#headers"
- "inv": "/en/developer-reference#inv"
- "mempool": "/en/developer-reference#mempool"
- "merkleblock": "/en/developer-reference#merkleblock"
- "mnlistdiff": "/en/developer-reference#mnlistdiff"
- "notfound": "/en/developer-reference#notfound"
- "ping": "/en/developer-reference#ping"
- "pong": "/en/developer-reference#pong"
@ -572,6 +574,7 @@ devsearches:
- "mnw": "/en/developer-reference#mnw"
- "mnwb": "/en/developer-reference#mnwb"
- "ssc": "/en/developer-reference#ssc"
- "qfcommit": "/en/developer-reference#qfcommit"
# Dash - governance
- "govobj": "/en/developer-reference#govobj"

View file

@ -101,8 +101,8 @@ These RPCs are all Dash-specific and not found in Bitcoin Core
{% autocrossref %}
* [GetBestBlockHash][rpc getbestblockhash]: {{summary_getBestBlockHash}}
* [GetBlock][rpc getblock]: {{summary_getBlock}} {{UPDATED0_13_0}}
* [GetBlockChainInfo][rpc getblockchaininfo]: {{summary_getBlockChainInfo}} {{DASH_UPDATED0_12_3}} {{UPDATED0_12_1}}
* [GetBlock][rpc getblock]: {{summary_getBlock}} {{DASH_UPDATED0_13_0}}
* [GetBlockChainInfo][rpc getblockchaininfo]: {{summary_getBlockChainInfo}} {{DASH_UPDATED0_13_0}} {{UPDATED0_12_1}}
* [GetBlockCount][rpc getblockcount]: {{summary_getBlockCount}}
* [GetBlockHash][rpc getblockhash]: {{summary_getBlockHash}}
* [GetBlockHashes][rpc getblockhashes]: {{summary_getBlockHashes}} {{DASH_NEW0_12_1}}
@ -146,11 +146,11 @@ These RPCs are all Dash-specific and not found in Bitcoin Core
{% autocrossref %}
* [GetGovernanceInfo][rpc getgovernanceinfo]: {{summary_getGovernanceInfo}} {{DASH_UPDATED0_12_3}}
* [GetGovernanceInfo][rpc getgovernanceinfo]: {{summary_getGovernanceInfo}} {{DASH_UPDATED0_13_0}}
* [GetPoolInfo][rpc getpoolinfo]: {{summary_getPoolInfo}}
* [GetSuperblockBudget][rpc getsuperblockbudget]: {{summary_getSuperblockBudget}}
* [GObject][rpc gobject]: {{summary_gObject}} {{DASH_UPDATED0_12_3}}
* [Masternode][rpc masternode]: {{summary_masternode}} {{DASH_UPDATED0_12_3}}
* [GObject][rpc gobject]: {{summary_gObject}} {{DASH_UPDATED0_13_0}}
* [Masternode][rpc masternode]: {{summary_masternode}} {{DASH_UPDATED0_13_0}}
* [MasternodeBroadcast][rpc masternodebroadcast]: {{summary_masternodeBroadcast}}
* [MasternodeList][rpc masternodelist]: {{summary_masternodeList}} {{DASH_UPDATED0_12_3}}
* [MnSync][rpc mnsync]: {{summary_mnSync}}
@ -189,7 +189,7 @@ These RPCs are all Dash-specific and not found in Bitcoin Core
{% autocrossref %}
* [GetBlockTemplate][rpc getblocktemplate]: {{summary_getBlockTemplate}} {{DASH_UPDATED0_12_3}}
* [GetBlockTemplate][rpc getblocktemplate]: {{summary_getBlockTemplate}} {{DASH_UPDATED0_13_0}}
* [GetMiningInfo][rpc getmininginfo]: {{summary_getMiningInfo}} {{UPDATED0_14_0}}
* [GetNetworkHashPS][rpc getnetworkhashps]: {{summary_getNetworkHashPS}}
* [PrioritiseTransaction][rpc prioritisetransaction]: {{summary_prioritiseTransaction}}
@ -228,7 +228,7 @@ These RPCs are all Dash-specific and not found in Bitcoin Core
* [DecodeRawTransaction][rpc decoderawtransaction]: {{summary_decodeRawTransaction}} {{UPDATED0_13_0}}
* [DecodeScript][rpc decodescript]: {{summary_decodeScript}}
* [FundRawTransaction][rpc fundrawtransaction]: {{summary_fundRawTransaction}} {{DASH_UPDATED0_12_3}} {{UPDATED0_14_0}}
* [GetRawTransaction][rpc getrawtransaction]: {{summary_getRawTransaction}} {{DASH_UPDATED0_12_3}} {{UPDATED0_14_0}}
* [GetRawTransaction][rpc getrawtransaction]: {{summary_getRawTransaction}} {{DASH_UPDATED0_13_0}} {{UPDATED0_14_0}}
* [SendRawTransaction][rpc sendrawtransaction]: {{summary_sendRawTransaction}}
* [SignRawTransaction][rpc signrawtransaction]: {{summary_signRawTransaction}}
@ -267,16 +267,16 @@ default.
* [BackupWallet][rpc backupwallet]: {{summary_backupWallet}}
* [DumpHDInfo][rpc dumphdinfo]: {{summary_dumpHDInfo}} {{DASH_NEW0_12_2}}
* [DumpPrivKey][rpc dumpprivkey]: {{summary_dumpPrivKey}}
* [DumpWallet][rpc dumpwallet]: {{summary_dumpWallet}}
* [DumpWallet][rpc dumpwallet]: {{summary_dumpWallet}} {{DASH_UPDATED0_13_0}}
* [EncryptWallet][rpc encryptwallet]: {{summary_encryptWallet}}
* [GetAccount][rpc getaccount]: {{summary_getAccount}} {{DEPRECATED}}
* [GetAccountAddress][rpc getaccountaddress]: {{summary_getAccountAddress}} {{DEPRECATED}}
* [GetAddressesByAccount][rpc getaddressesbyaccount]: {{summary_getAddressesByAccount}} {{DEPRECATED}}
* [GetBalance][rpc getbalance]: {{summary_getBalance}}
* [GetBalance][rpc getbalance]: {{summary_getBalance}} {{DASH_UPDATED0_13_0}}
* [GetNewAddress][rpc getnewaddress]: {{summary_getNewAddress}}
* [GetRawChangeAddress][rpc getrawchangeaddress]: {{summary_getRawChangeAddress}}
* [GetReceivedByAccount][rpc getreceivedbyaccount]: {{summary_getReceivedByAccount}} {{DEPRECATED}}
* [GetReceivedByAddress][rpc getreceivedbyaddress]: {{summary_getReceivedByAddress}}
* [GetReceivedByAccount][rpc getreceivedbyaccount]: {{summary_getReceivedByAccount}} {{DASH_UPDATED0_13_0}} {{DEPRECATED}}
* [GetReceivedByAddress][rpc getreceivedbyaddress]: {{summary_getReceivedByAddress}} {{DASH_UPDATED0_13_0}}
* [GetTransaction][rpc gettransaction]: {{summary_getTransaction}} {{UPDATED0_12_0}}
* [GetUnconfirmedBalance][rpc getunconfirmedbalance]: {{summary_getUnconfirmedBalance}}
* [GetWalletInfo][rpc getwalletinfo]: {{summary_getWalletInfo}} {{DASH_UPDATED0_12_3}}
@ -290,20 +290,20 @@ default.
* [InstantSendToAddress][rpc instantsendtoaddress]: {{summary_instantSendToAddress}}
* [KeePass][rpc keepass]: {{summary_keepass}} {{DARKCOIN_NEW0_11_0}}
* [KeyPoolRefill][rpc keypoolrefill]: {{summary_keyPoolRefill}}
* [ListAccounts][rpc listaccounts]: {{summary_listAccounts}} {{DEPRECATED}}
* [ListAccounts][rpc listaccounts]: {{summary_listAccounts}} {{DASH_UPDATED0_13_0}} {{DEPRECATED}}
* [ListAddressBalances][rpc listaddressbalances]: {{summary_listAddressBalances}} {{DASH_NEW0_12_3}}
* [ListAddressGroupings][rpc listaddressgroupings]: {{summary_listAddressGroupings}}
* [ListLockUnspent][rpc listlockunspent]: {{summary_listLockUnspent}}
* [ListReceivedByAccount][rpc listreceivedbyaccount]: {{summary_listReceivedByAccount}} {{DEPRECATED}}
* [ListReceivedByAddress][rpc listreceivedbyaddress]: {{summary_listReceivedByAddress}}
* [ListReceivedByAccount][rpc listreceivedbyaccount]: {{summary_listReceivedByAccount}} {{DASH_UPDATED0_13_0}} {{DEPRECATED}}
* [ListReceivedByAddress][rpc listreceivedbyaddress]: {{summary_listReceivedByAddress}} {{DASH_UPDATED0_13_0}}
* [ListSinceBlock][rpc listsinceblock]: {{summary_listSinceBlock}}
* [ListTransactions][rpc listtransactions]: {{summary_listTransactions}} {{UPDATED0_12_1}}
* [ListUnspent][rpc listunspent]: {{summary_listUnspent}} {{DASH_UPDATED0_12_3}} {{UPDATED0_13_0}}
* [LockUnspent][rpc lockunspent]: {{summary_lockUnspent}}
* [Move][rpc move]: {{summary_move}} {{DEPRECATED}}
* [RemovePrunedFunds][rpc removeprunedfunds]: {{summary_removePrunedFunds}} {{DASH_NEW0_12_3}} {{NEW0_13_0}}
* [SendFrom][rpc sendfrom]: {{summary_sendFrom}} {{DEPRECATED}}
* [SendMany][rpc sendmany]: {{summary_sendMany}}
* [SendFrom][rpc sendfrom]: {{summary_sendFrom}} {{DASH_UPDATED0_13_0}} {{DEPRECATED}}
* [SendMany][rpc sendmany]: {{summary_sendMany}} {{DASH_UPDATED0_13_0}}
* [SendToAddress][rpc sendtoaddress]: {{summary_sendToAddress}}
* [SetAccount][rpc setaccount]: {{summary_setAccount}} {{DEPRECATED}}
* [SetPrivateSendAmount][rpc setprivatesendamount]: {{summary_setPrivateSendAmount}}

View file

@ -13,10 +13,10 @@ http://opensource.org/licenses/MIT.
The `getblock` RPC {{summary_getBlock}}
*Parameter #1---header hash*
*Parameter #1---block hash*
{% itemplate ntpd1 %}
- n: "Header Hash"
- n: "Block Hash"
t: "string (hex)"
p: "Required<br>(exactly 1)"
d: "The hash of the header of the block to get, encoded as hex in RPC byte order"
@ -26,14 +26,14 @@ The `getblock` RPC {{summary_getBlock}}
*Parameter #2---whether to get JSON or hex output*
{% itemplate ntpd1 %}
- n: "Format"
t: "boolean"
p: "Optional<br>(true or false)"
d: "Set to `false` to get the block in serialized block format; set to `true` (the default) to get the decoded block as a JSON object"
- n: "Verbosity"
t: "number (int)"
p: "Optional<br>(0 or 1)"
d: "Set to one of the following verbosity levels:<br>`0` - Get the block in serialized block format;<br>`1` - Get the decoded block as a JSON object (default)<br>`2` - Get the decoded block as a JSON object with transaction details"
{% enditemplate %}
*Result (if format was `false`)---a serialized block*
*Result (if verbosity was `0`)---a serialized block*
{% itemplate ntpd1 %}
- n: "`result`"
@ -43,7 +43,7 @@ The `getblock` RPC {{summary_getBlock}}
{% enditemplate %}
*Result (if format was `true` or omitted)---a JSON block*
*Result (if verbosity was `1` or omitted)---a JSON block with transaction hashes*
{% itemplate ntpd1 %}
- n: "`result`"
@ -76,6 +76,11 @@ The `getblock` RPC {{summary_getBlock}}
p: "Required<br>(exactly 1)"
d: "This block's version number. See [block version numbers][section block versions]"
- n: "→<br>`versionHex`"
t: "string (hex)"
p: "Required<br>(exactly 1)"
d: "_Added in Bitcoin Core 0.13.0_<br><br>The block version formatted in hexadecimal"
- n: "→<br>`merkleroot`"
t: "string (hex)"
p: "Required<br>(exactly 1)"
@ -133,63 +138,253 @@ The `getblock` RPC {{summary_getBlock}}
{% enditemplate %}
*Example from Dash Core 0.12.2*
*Result (if verbosity was `2`---a JSON block with full transaction details*
{% assign DEPTH="→" %}
{% include helpers/vars.md %}
{% itemplate ntpd1 %}
- n: "`result`"
t: "object/null"
p: "Required<br>(exactly 1)"
d: "An object containing the requested block, or JSON `null` if an error occurred"
- n: "→<br>`hash`"
t: "string (hex)"
p: "Required<br>(exactly 1)"
d: "The hash of this block's block header encoded as hex in RPC byte order. This is the same as the hash provided in parameter #1"
- n: "→<br>`confirmations`"
t: "number (int)"
p: "Required<br>(exactly 1)"
d: "The number of confirmations the transactions in this block have, starting at 1 when this block is at the tip of the best block chain. This score will be -1 if the the block is not part of the best block chain"
- n: "→<br>`size`"
t: "number (int)"
p: "Required<br>(exactly 1)"
d: "The size of this block in serialized block format, counted in bytes"
- n: "→<br>`height`"
t: "number (int)"
p: "Required<br>(exactly 1)"
d: "The height of this block on its block chain"
- n: "→<br>`version`"
t: "number (int)"
p: "Required<br>(exactly 1)"
d: "This block's version number. See [block version numbers][section block versions]"
- n: "→<br>`versionHex`"
t: "string (hex)"
p: "Required<br>(exactly 1)"
d: "_Added in Bitcoin Core 0.13.0_<br><br>The block version formatted in hexadecimal"
- n: "→<br>`merkleroot`"
t: "string (hex)"
p: "Required<br>(exactly 1)"
d: "The merkle root for this block, encoded as hex in RPC byte order"
- n: "→<br>`tx`"
t: "array"
p: "Required<br>(exactly 1)"
d: "An array containing the TXIDs of all transactions in this block. The transactions appear in the array in the same order they appear in the serialized block"
{{INCLUDE_DECODE_RAW_TRANSACTION}}
- n: "→<br>`time`"
t: "number (int)"
p: "Required<br>(exactly 1)"
d: "The value of the *time* field in the block header, indicating approximately when the block was created"
- n: "→<br>`mediantime`"
t: "number (int)"
p: "Required<br>(exactly 1)"
d: "*Added in Bitcoin Core 0.12.0*<br><br>The median block time in Unix epoch time"
- n: "→<br>`nonce`"
t: "number (int)"
p: "Required<br>(exactly 1)"
d: "The nonce which was successful at turning this particular block into one that could be added to the best block chain"
- n: "→<br>`bits`"
t: "string (hex)"
p: "Required<br>(exactly 1)"
d: "The value of the *nBits* field in the block header, indicating the target threshold this block's header had to pass"
- n: "→<br>`difficulty`"
t: "number (real)"
p: "Required<br>(exactly 1)"
d: "The estimated amount of work done to find this block relative to the estimated amount of work done to find block 0"
- n: "→<br>`chainwork`"
t: "string (hex)"
p: "Required<br>(exactly 1)"
d: "The estimated number of block header hashes miners had to check from the genesis block to this block, encoded as big-endian hex"
- n: "→<br>`previousblockhash`"
t: "string (hex)"
p: "Optional<br>(0 or 1)"
d: "The hash of the header of the previous block, encoded as hex in RPC byte order. Not returned for genesis block"
- n: "→<br>`nextblockhash`"
t: "string (hex)"
p: "Optional<br>(0 or 1)"
d: "The hash of the next block on the best block chain, if known, encoded as hex in RPC byte order"
{% enditemplate %}
*Example from Dash Core 0.13.0*
Get a block in raw hex:
{% highlight bash %}
dash-cli -testnet getblock \
0000000037955fcc39af8b1ae75914ffb422313c0fca7eba96a1ac99c2e57f84 \
false
00000012e877c56af0b33d79aae888b5cb40b47809b4bee764e8fea7a9033994 \
0
{% endhighlight %}
Result (wrapped):
{% highlight text %}
0100002011f5719a0a0c4881ff98b4a68c1c828dc3b10f5b51033f5f93d48dbf\
000000004b8e38f197d6ee878e160d2bae3ce05ab898a6252458ec67ce770140\
260397c4dd2ed659a1dd001d00636b5601010000000100000000000000000000\
00000000000000000000000000000000000000000000ffffffff4b02041204dd\
2ed65908fabe6d6d7445746d63506b62572d2d35584853467a765a6748696972\
30657a3a6f6d656e010000000000000017fffff9020000000d2f6e6f64655374\
726174756d2f00000000058028bb13010000001976a914bad55652dffb1af943\
41015c94feea79793442fd88ac40e553b1020000001976a9142b7856de53d4c1\
823090c98f8ad79862842c09b588ac4094dd89000000001976a914c2c29ebc78\
7954ef99d01c5f79115abf7012fb8e88ac4094dd89000000001976a914d7b47d\
4b40a23c389f5a17754d7f60f511c7d0ec88ac4094dd89000000001976a914dc\
3e0793134b081145ec0c67a9c72a7b297df27c88ac00000000
01000020d2fb795188566bd52deaa8e62de6f59c2833e842f9f6a48cea026689\
04000000c7274c45e043e5953f2d62a1938818b513d8fd4c9f99c2c1541d1449\
7f368602c2d8175c417b4d1d0007a96501010000000100000000000000000000\
00000000000000000000000000000000000000000000ffffffff1202a91a0e2f\
5032506f6f6c2d74444153482fffffffff0404e65a96010000001976a9144f79\
c383bc5d3e9d4d81b98f87337cedfa78953688ac40c3609a010000001976a914\
f627e64c0453f74d879f6e6a37709189af0298da88ac3cdd0504000000001976\
a914badadfdebaa6d015a0299f23fbc1fcbdd72ba96f88ac0000000000000000\
2a6a285fb560df18bc5145faa0860841df9daf30dc544c7b0cdb52ff28c06fa3\
b33924000000000100000000000000
{% endhighlight %}
Get the same block in JSON:
{% highlight bash %}
dash-cli -testnet getblock \
0000000037955fcc39af8b1ae75914ffb422313c0fca7eba96a1ac99c2e57f84
00000012e877c56af0b33d79aae888b5cb40b47809b4bee764e8fea7a9033994
{% endhighlight %}
Result:
{% highlight json %}
{
"hash": "0000000037955fcc39af8b1ae75914ffb422313c0fca7eba96a1ac99c2e57f84",
"confirmations": 3,
"size": 377,
"height": 4612,
"hash": "00000012e877c56af0b33d79aae888b5cb40b47809b4bee764e8fea7a9033994",
"confirmations": 1,
"size": 303,
"height": 6825,
"version": 536870913,
"merkleroot": "c4970326400177ce67ec582425a698b85ae03cae2b0d168e87eed697f1388e4b",
"versionHex": "20000001",
"merkleroot": "0286367f49141d54c1c2999f4cfdd813b5188893a1622d3f95e543e0454c27c7",
"tx": [
"c4970326400177ce67ec582425a698b85ae03cae2b0d168e87eed697f1388e4b"
"0286367f49141d54c1c2999f4cfdd813b5188893a1622d3f95e543e0454c27c7"
],
"time": 1507208925,
"mediantime": 1507208645,
"nonce": 1449878272,
"bits": "1d00dda1",
"difficulty": 1.155066358813473,
"chainwork": "000000000000000000000000000000000000000000000000000001c3e86f0f04",
"previousblockhash": "00000000bf8dd4935f3f03515b0fb1c38d821c8ca6b498ff81480c0a9a71f511",
"nextblockhash": "0000000028817c7fce55d802f3647640600535a983d00e16076f284ec6cb001b"
"time": 1545066690,
"mediantime": 1545065992,
"nonce": 1705576192,
"bits": "1d4d7b41",
"difficulty": 0.01290611629979371,
"chainwork": "00000000000000000000000000000000000000000000000000000647104aa574",
"previousblockhash": "00000004896602ea8ca4f6f942e833289cf5e62de6a8ea2dd56b56885179fbd2"
}
{% endhighlight %}
Get the same block in JSON with transaction details:
{% highlight bash %}
dash-cli -testnet getblock \
00000012e877c56af0b33d79aae888b5cb40b47809b4bee764e8fea7a9033994 2
{% endhighlight %}
Result:
{% highlight json %}
{
"hash": "00000012e877c56af0b33d79aae888b5cb40b47809b4bee764e8fea7a9033994",
"confirmations": 1,
"size": 303,
"height": 6825,
"version": 536870913,
"versionHex": "20000001",
"merkleroot": "0286367f49141d54c1c2999f4cfdd813b5188893a1622d3f95e543e0454c27c7",
"tx": [
{
"txid": "0286367f49141d54c1c2999f4cfdd813b5188893a1622d3f95e543e0454c27c7",
"size": 222,
"version": 1,
"type": 0,
"locktime": 0,
"vin": [
{
"coinbase": "02a91a0e2f5032506f6f6c2d74444153482f",
"sequence": 4294967295
}
],
"vout": [
{
"value": 68.17506820,
"valueSat": 6817506820,
"n": 0,
"scriptPubKey": {
"asm": "OP_DUP OP_HASH160 4f79c383bc5d3e9d4d81b98f87337cedfa789536 OP_EQUALVERIFY OP_CHECKSIG",
"hex": "76a9144f79c383bc5d3e9d4d81b98f87337cedfa78953688ac",
"reqSigs": 1,
"type": "pubkeyhash",
"addresses": [
"yTZg6eePKxbJZyoaC93bVrTUq5vjhFrbst"
]
}
},
{
"value": 68.85000000,
"valueSat": 6885000000,
"n": 1,
"scriptPubKey": {
"asm": "OP_DUP OP_HASH160 f627e64c0453f74d879f6e6a37709189af0298da OP_EQUALVERIFY OP_CHECKSIG",
"hex": "76a914f627e64c0453f74d879f6e6a37709189af0298da88ac",
"reqSigs": 1,
"type": "pubkeyhash",
"addresses": [
"yikzsfaaQ2eZ1RpVUpf1EvedzgGdJD17dC"
]
}
},
{
"value": 0.67493180,
"valueSat": 67493180,
"n": 2,
"scriptPubKey": {
"asm": "OP_DUP OP_HASH160 badadfdebaa6d015a0299f23fbc1fcbdd72ba96f OP_EQUALVERIFY OP_CHECKSIG",
"hex": "76a914badadfdebaa6d015a0299f23fbc1fcbdd72ba96f88ac",
"reqSigs": 1,
"type": "pubkeyhash",
"addresses": [
"ydMSjYqwv4xTossPJ1xndTxwS1Hho9DmuM"
]
}
},
{
"value": 0.00000000,
"valueSat": 0,
"n": 3,
"scriptPubKey": {
"asm": "OP_RETURN 5fb560df18bc5145faa0860841df9daf30dc544c7b0cdb52ff28c06fa3b339240000000001000000",
"hex": "6a285fb560df18bc5145faa0860841df9daf30dc544c7b0cdb52ff28c06fa3b339240000000001000000",
"type": "nulldata"
}
}
],
"instantlock": false
}
],
"time": 1545066690,
"mediantime": 1545065992,
"nonce": 1705576192,
"bits": "1d4d7b41",
"difficulty": 0.01290611629979371,
"chainwork": "00000000000000000000000000000000000000000000000000000647104aa574",
"previousblockhash": "00000004896602ea8ca4f6f942e833289cf5e62de6a8ea2dd56b56885179fbd2"
}
{% endhighlight %}
*See also*

View file

@ -165,6 +165,31 @@ The `getblockchaininfo` RPC {{summary_getBlockChainInfo}}
p: "Optional<br>(0 or 1)"
d: "The bit (0-28) in the block version field used to signal this softfork. Field is only shown when status is `started`"
- n: "→ → →<br>`period`"
t: "numeric<br>(int)"
p: "Optional<br>(0 or 1)"
d: "*Added in Dash Core 0.13.0*<br><br>The window size/period for this softfork. Field is only shown when status is `started`"
- n: "→ → →<br>`threshold`"
t: "numeric<br>(int)"
p: "Optional<br>(0 or 1)"
d: "*Added in Dash Core 0.13.0*<br><br>The threshold for this softfork. Field is only shown when status is `started`"
- n: "→ → →<br>`windowStart`"
t: "numeric<br>(int)"
p: "Optional<br>(0 or 1)"
d: "*Added in Dash Core 0.13.0*<br><br>The starting block height of the current window. Field is only shown when status is `started`"
- n: "→ → →<br>`windowBlocks`"
t: "numeric<br>(int)"
p: "Optional<br>(0 or 1)"
d: "*Added in Dash Core 0.13.0*<br><br>The number of blocks in the current window that had the version bit set for this softfork. Field is only shown when status is `started`"
- n: "→ → →<br>`windowProgress`"
t: "numeric<br>(int)"
p: "Optional<br>(0 or 1)"
d: "*Added in Dash Core 0.13.0*<br><br>The progress (between 0 and 1) for activation of this softfork. Field is only shown when status is `started`"
- n: "→ → →<br>`startTime`"
t: "numeric<br>(int)"
p: "Required<br>(exactly 1)"

View file

@ -116,6 +116,37 @@ The `gobject prepare` RPC prepares a governance object by signing and creating a
{% enditemplate %}
*Parameter #5---use-IS*
{% itemplate ntpd1 %}
- n: "`use-IS`"
t: "boolean"
p: "Optional<br>(0 or 1)"
d: "*Added in Dash Core 0.13.0*<br><br>InstantSend lock the collateral, only requiring one chain confirmation"
{% enditemplate %}
*Parameter #6---outputHash*
{% itemplate ntpd1 %}
- n: "`outputHash`"
t: "string (hex)"
p: "Optional<br>(0 or 1)"
d: "*Added in Dash Core 0.13.0*<br><br>The single output to submit the proposal fee from"
{% enditemplate %}
*Parameter #7---outputIndex*
{% itemplate ntpd1 %}
- n: "`outputIndex`"
t: "numeric"
p: "Optional<br>(0 or 1)"
d: "*Added in Dash Core 0.13.0*<br><br>The output index (required if the `outputHash` parameter is provided)"
{% enditemplate %}
*Result---collateral transaction ID*
{% itemplate ntpd1 %}

View file

@ -40,7 +40,7 @@ Mode | Description
`lastseen` | Print timestamp of when a masternode was last seen on the network
`payee` | Print Dash address associated with a masternode (can be additionally filtered, partial match)
`protocol` | Print protocol of a masternode (can be additionally filtered, exact match)
`pubkey` | Print the masternode (not collateral) public key
`keyid` | Print the masternode (not collateral) key id
`rank` | Print rank of a masternode based on current block
`sentinel` | Print sentinel version of a masternode (can be additionally filtered, exact match)
`status` | Print masternode status: PRE_ENABLED / ENABLED / EXPIRED / SENTINEL_PING_EXPIRED / NEW_START_REQUIRED / UPDATE_REQUIRED / POSE_BAN / OUTPOINT_SPENT (can be additionally filtered, partial match)

View file

@ -415,7 +415,7 @@ Result:
The `protx<!--noref--> 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 `wallet`. All types have the optional
`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.
@ -428,29 +428,6 @@ returned. If set to `false`, only the hashes of the ProTx will be returned.
d: "The type of ProTxs to list:<br>`registered` - all ProTxs registered at height<br>`valid` - all active/valid ProTxs at height<br>`wallet` - all ProTxs found in the current wallet<br><br>Height defaults to current chain-tip if one is not provided"
{% enditemplate %}
**List Type - `registered` or `valid`**
*Parameter #2---height*
{% itemplate ntpd1 %}
- n: "`height`"
t: "bool"
p: "Optional<br>(0 or 1)"
d: "List ProTxs from this height."
{% enditemplate %}
*Parameter #3---detailed*
{% itemplate ntpd1 %}
- n: "`detailed`"
t: "bool"
p: "Optional<br>(0 or 1)"
d: "If set to `false` (default), only ProTx hashes are returned. If set to `true`, a detailed list of ProTx details is returned."
{% enditemplate %}
**List Type - `wallet`**
*Parameter #2---detailed*
{% itemplate ntpd1 %}
@ -460,6 +437,14 @@ returned. If set to `false`, only the hashes of the ProTx will be returned.
d: "If set to `false` (default), only ProTx hashes are returned. If set to `true`, a detailed list of ProTx details is returned."
{% enditemplate %}
*Parameter #3---height*
{% itemplate ntpd1 %}
- n: "`height`"
t: "bool"
p: "Optional<br>(0 or 1)"
d: "List ProTxs from this height (default: current chain tip)."
{% enditemplate %}
*Result (if `detailed` was `false`)---provider registration transaction hash*
@ -505,7 +490,7 @@ Result:
List of ProTxs which are active/valid at the given chain height.
{% highlight bash %}
dash-cli -testnet protx list valid 700
dash-cli -testnet protx list valid false 700
{% endhighlight %}
Result:
@ -518,7 +503,7 @@ Result:
Detailed list of ProTxs which are active/valid at the given chain height.
{% highlight bash %}
dash-cli -testnet protx list valid 700 true
dash-cli -testnet protx list valid true 700
{% endhighlight %}
Result:

View file

@ -154,7 +154,7 @@ integer value used in P2P messages, and the actual Dash value.
| 3 | 8 | 00.0100001 |
| 4 | 16 | 00.00100001 |
Protocol version 70212 added a 5th denomination (0.001 DASH).
Protocol version 70213 added a 5th denomination (0.001 DASH).
The denominations are structured to allow converting between denominations
directly without requiring additional inputs or creating change (for example,
@ -162,14 +162,14 @@ directly without requiring additional inputs or creating change (for example,
{% endautocrossref %}
[Example Testnet denomination creation transaction](https://testnet-insight.dashevo.org/insight/tx/702e77d19dcb0fbfe7d7daa5543bcfeacec0f552c49e398b27fb8141ae52d3e2)
[Example Testnet denomination creation transaction](https://testnet-insight.dashevo.org/insight/tx/f0174fc87d68a18617c2990df4d9455c0459c601d2d6473934357a66f9b8b70a)
{% autocrossref %}
**Creating Collaterals**
PrivateSend collaterals are used to pay mixing fees, but are kept separate from
the denominations to maximize privacy. Since protocol version 70212, the minimum
the denominations to maximize privacy. Since protocol version 70213, the minimum
collateral fee is 1/10 of the smallest denomination for all mixing sessions
regardless of denomination.
In Dash Core, collaterals are created with enough value to pay 4 collateral fees
@ -182,9 +182,9 @@ input from 1x the minimum collateral amount to the maximum collateral amount.
{% endautocrossref %}
[Example Testnet collateral creation transaction](https://testnet-insight.dashevo.org/insight/tx/c2fc4af6a9940bf33446f3dddf6892c3dac4351fd0add89157666ca1019454ca)
[Example Testnet collateral creation transaction](https://testnet-insight.dashevo.org/insight/tx/8f9b15973983876f7ce4eb2c32b09690dfb0432d2caf6c6df516196a8d17689f)
[Example Testnet collateral payment transaction](https://testnet-insight.dashevo.org/insight/tx/70404808f1871e600cc8d30ad1eaf2bab63906dd1f3ae4a799b7182e1689721b)
[Example Testnet collateral payment transaction](https://testnet-insight.dashevo.org/insight/tx/de51e6f7c5ef75aad0dbb0a808ef4873d7ef6d67b25f3a658d5a241db4f3eeeb)
#### PrivateSend Mixing
@ -251,6 +251,13 @@ mixing pool.
* Inputs/outputs are ordered deterministically as defined by [BIP-69](https://github.com/quantumexplorer/bips/blob/master/bip-0069.mediawiki#Abstract) to avoid leaking any data ([Dash Core Reference](https://github.com/dashpay/dash/blob/e596762ca22d703a79c6880a9d3edb1c7c972fd3/src/privatesend<!--noref-->-server.cpp#L321-#L322))
* Clients must sign their inputs to the Final Transaction within 15 seconds or risk forfeiting the collateral they provided in the `dsi` message (Step 4) ([Dash Core Reference](https://github.com/dashpay/dash/blob/e596762ca22d703a79c6880a9d3edb1c7c972fd3/src/privatesend<!--noref-->.h#L23))
_**Step 10 - Final Transaction broadcast**_
* Prior to protocol version 70213, masternodes could only send a single
un-mined `dstx` message at a time. As of protocol version 70213, up to 5
(`MASTERNODE_MAX_MIXING_TXES`) un-mined `dstx` messages per masternode are
allowed.
_**General**_
With the exception of the `dsq` message and the `dstx` message (which need
@ -295,6 +302,20 @@ value of only 0.00000546 DASH as shown by the calculation below.
{% autocrossref %}
Since DIP3 (introduced in Dash Core 0.13.0), masternode reward payments are based
on the deterministic masternode list information found on-chain in each block.
This results in a transparent, deterministic process that operates using the
[algorithm described in DIP3](https://github.com/dashpay/dips/blob/master/dip-0003.md#masternode<!--noref-->-rewards).
On-chain masternode lists reduce the complexity of reward payments, make
payments much more predictable, and also allow masternode payments to be
enforced for all blocks (enforcement for superblocks was not possible in the
previous system).
**Historical Note**
Prior to DIP3, the masternode payment process operated as described below.
Masternode payment uses a verifiable process to determine which masternode is
paid in each block. When a new block is processed, a quorum of
`MNPAYMENTS_SIGNATURES_TOTAL` (10) masternodes vote on the next masternode

View file

@ -66,7 +66,7 @@ with the most recent versions listed first. (If you know of a protocol
version that implemented a major change but which is not listed here,
please [open an issue][docs issue].)
As of Dash Core 0.13.0.0, the most recent protocol version is 70212.
As of Dash Core 0.13.0.0, the most recent protocol version is 70213.
| Version | Initial Release | Major Changes
|---------|------------------------------------|--------------
@ -174,6 +174,7 @@ The currently-available type identifiers are:
| 18 | [`MSG_GOVERNANCE_OBJECT_VOTE`][msg_governance_object_vote]{:#term-msg_governance_object_vote}{:.term} | The hash is a Governance Object Vote.
| 19 | [`MSG_MASTERNODE_VERIFY`][msg_masternode_verify]{:#term-msg_masternode_verify}{:.term} | The hash is a Masternode Verify.
| 20 | [`MSG_CMPCT_BLOCK`][msg_cmpct_block]{:#term-msg_cmpct_block}{:.term} | The hash is of a block header; identical to `MSG_BLOCK`. When used in a `getdata` message, this indicates the response should be a `cmpctblock` message. **Only for use in `getdata` messages.**
| 21 | [`MSG_QUORUM_FINAL_COMMITMENT`][msg_quorum_final_commitment]{:#term-msg_quorum_final_commitment}{:.term} | The hash is a long-living masternode quorum final commitment.
Type identifier zero and type identifiers greater than twenty are reserved
for future implementations. Dash Core ignores all inventories with
@ -547,10 +548,12 @@ to the `getheaders` message will include as many as 2,000 block headers.
{% autocrossref %}
*Added in protocol version 70212*
*Added in protocol version 70213*
The `getmnlistd` message is sent to request a full masternode list or an
update to a previously requested masternode list.
The `getmnlistd` message requests a `mnlistdiff` message that provides either:
1. A full masternode list (if `baseBlockHash` is all-zero)
2. An update to a previously requested masternode list
| Bytes | Name | Data type | Required | Description |
| ---------- | ----------- | --------- | -------- | -------- |
@ -882,7 +885,7 @@ template near the beginning of this subsection.
{% autocrossref %}
*Added in protocol version 70212*
*Added in protocol version 70213*
The `mnlistdiff` message is a reply to a `getmnlistd` message which
requested either a full masternode list or a diff for a range of blocks.
@ -898,7 +901,19 @@ requested either a full masternode list or a diff for a range of blocks.
| variable | merkleFlags | vector<uint8_t> | Required | Merkle flag bits, packed per 8 in a byte, least significant bit first
| variable | cbTx | CTransaction | Required | The fully serialized coinbase transaction of `blockHash`
| variable | deletedMNs | vector | Required | A list of ProRegTx hashes for masternode which were deleted after `baseBlockHash`
| variable | mnList | vector | Required | The list of SML entries which were added or updated since `baseBlockHash`
| variable | mnList | vector | Required | The list of Simplified Masternode List (SML) entries which were added or updated since `baseBlockHash`
Simplified Masternode List (SML) Entry
| Bytes | Name | Data type | Description |
| ---------- | ----------- | -------- | -------- |
| 32 | proRegTxHash | uint256 | The hash of the ProRegTx that identifies the masternode
| 32 | confirmedHash | uint256 | The hash of the block at which the masternode got confirmed
| 16 | ipAddress | byte[] | IPv6 address in network byte order. Only IPv4 mapped addresses are allowed (to be extended in the future)
| 2 | port | uint_16 | Port (network byte order)
| 48 | pubKeyOperator | BLSPubKey | The operators public key
| 20 |keyIDVoting | CKeyID | The public key hash used for voting.
| 1 | isValid | bool | True if a masternode is not PoSe-banned
The following annotated hexdump shows a `mnlistdiff` message. (The
message header has been omitted.)
@ -936,6 +951,10 @@ Masternode List
| Masternode 1
| | 01040eb32f760490054543356cff4638
| | 65633439dd073cffa570305eb086f70e ....... ProRegTx hash
| |
| | 000001ee5108348a2c59396da29dc576
| | 9b2a9bb303d7577aee9cd95136c49b9b ....... Confirmed block hash
| |
| | 00000000000000000000000000000000 ....... IP Address: ::ffff:0.0.0.0
| | 0000 ................................... Port: 0
| |
@ -943,10 +962,16 @@ Masternode List
| | 0000000000000000000000000000000000000000
| | 0000000000000000 ....................... Operator public key (BLS)
| | c2ae01fb4084cbc3bc31e7f59b36be228a320404 Voting pubkey hash (ECDSA)
| |
| | 0 ...................................... Valid (0 - No)
|
| Masternode 2
| | f7737beb39779971e9bc59632243e13f
| | c5fc9ada93b69bf48c2d4c463296cd5a ....... ProRegTx hash
| |
| | 0000030f51f12e7069a7aa5f1bc9085d
| | db3fe368976296fd3b6d73fdaf898cc0 ....... Confirmed block hash
| |
| | 000000000000000000000000cf9af40d ....... IP Address: ::ffff:207.154.244.13
| | 4e1f ................................... Port: 19999
| |
@ -954,6 +979,8 @@ Masternode List
| | de4a8db4d76fda6d6985dbdf10404fb9bb5cd0e8
| | c22f4a914a6c5566 ....................... Operator public key (BLS)
| | 43ce12751c4ba45dcdfe2c16cefd61461e17a54d Voting pubkey hash (ECDSA)
| |
| | 1 ...................................... Valid (1 - Yes)
{% endhighlight %}
{% endautocrossref %}
@ -1742,6 +1769,7 @@ Sporks (per [`src/spork.h`][spork.h])
| 10013 | 14 | `REQUIRE_SENTINEL_FLAG` | Only masternode's running sentinel will be paid
| 10014 | 15 | `DETERMINISTIC_MNS_ENABLED` | Deterministic masternode lists are enabled
| 10015 | 16 | `INSTANTSEND_AUTOLOCKS` | Automatic InstantSend for transactions with <=4 inputs (also eliminates the special InstantSend fee requirement for these transactions)
| 10016 | 17 | `SPORK_17_QUORUM_DKG_ENABLED` | Enable long-living masternode quorum (LLMQ) distributed key generation (DKG). When enabled, simple PoSe scoring and banning is active as well.
| | | |
| | | **Removed Sporks** |
| _10012_ | _13_ | _`OLD_SUPERBLOCK_FLAG`_ | _Removed in Dash Core 0.12.3. No network function since block 614820_
@ -1904,32 +1932,41 @@ is sent by masternodes to indicate approval of a transaction lock request
| 32 | txHash | uint256 | Required | TXID of the transaction to lock
| 36 | outPoint | outpoint | Required | The unspent outpoint to lock in this transaction
| 36 | outpointMasternode | outpoint | Required | The outpoint of the masternode which is signing the vote
| 66* | vchMasternodeSignature | char[] | Required | 66 bytes in most cases. Length (1 byte) + Signature (65 bytes)
| 32 | quorumModifierHash | uint256 | Required | *Added in protocol version 70213. Only present when Spork 15 is active.*<br><br>
| 32 | masternodeProTxHash | uint256 | Required | *Added in protocol version 70213. Only present when Spork 15 is active.*<br><br>The proTxHash of the DIP3 masternode which is signing the vote
| 96 | vchMasternodeSignature | char[] | Required | Masternode BLS signature
The following annotated hexdump shows a `txlvote` message. (The
message header has been omitted.)
{% highlight text %}
3c121fb4a12b2f715e2f70a9fa282115
be197dde14073959fb2a2b8e95a7418f ..... TXID
84a27bb879f316482598fe65b0b51544
e85490d85fc36af1c293e186da373c02 ..... TXID
Outpoint to lock
| bb607995757c6a6efd6429215dcb3688
| b252d34d835c81fed310fd905f487020 ... Outpoint TXID
| 01000000 ........................... Outpoint index number: 1
Masternode Outpoint
| de9029c7e9b7eb7cd11f27ba670b2349
| 0c3f0717b86ed949c316874589405cd2 ... Outpoint TXID
| 4c1e6318bab4f9284d3bc0e49ec7fe76
| 1e9c914b8ea0bcac4563005daa451221 ... Outpoint TXID
| 00000000 ........................... Outpoint index number: 0
41 ................................... Signature length: 65
Masternode Outpoint
| 5d02f07c7318411e41fdd4be9f1e5ece
| 16d680cfe318306087edc8fb205e507b ... Outpoint TXID
| 01000000 ........................... Outpoint index number: 1
1ccc39ffb9c62111a8c82823d3ce61d2
380db4e8f76ec238d568908f37558a90
4e79566a53663de12ec2be1183c87d61
250e8ebd57be171be1d4b5e89b69c263
88 ................................... Masternode Signature
b62cb5007704d2db8595d5b31cfb7cb0
8d7e530c16a7597e1db4430a00000000 ..... Quorum Modifier hash
569abbea4ab45f36dd059c44f1dc0804
f3f13071379c2f418d3637fb548c4159 ..... Masternode ProRegTx hash
60 ................................... Signature length: 96
0b0b97ec14fbc1f12566c3a90ed113e4
e9c5ee6cdcf2fe2171e4b5f387286146
a0632a250d64ea507ce5e1d1f1983aae
0b70e568ad2856a0cc13008001c6d0f3
5bdeb380f6aba0c54663a3b5e2d86d44
305c2e5d855c72588ffb0e8e2a36482c ..... Masternode BLS Signature
{% endhighlight %}
{% endautocrossref %}
@ -2831,6 +2868,9 @@ ecd50100 ................................... Dashd Deamon Version (12.3.0)
{% autocrossref %}
![Warning icon](/img/icons/icon_warning.svg) NOTE: This message will be deprecated
following activation of DIP3 which implements deterministic masternode lists.
The `mnv` message is used by masternodes to verify each other. Several `mnv`
messages are exchanged in the process. This results in the IP address of
masternode 1 being validated as of the provided block height.
@ -3031,8 +3071,8 @@ Sync Item IDs
| ID | Description | Response To
|------|--------------|---------------
| 2 | MASTERNODE_SYNC_LIST | `dseg` message
| 3 | MASTERNODE_SYNC_MNW | `mnget` message
| 2 | MASTERNODE_SYNC_LIST | _Deprecated following activation of DIP3 in Dash Core 0.13.0_<br><br>`dseg` message
| 3 | MASTERNODE_SYNC_MNW | _Deprecated following activation of DIP3 in Dash Core 0.13.0_<br><br>`mnget` message
| 10 | MASTERNODE_SYNC_GOVOBJ | `govsync` message
| 11 | MASTERNODE_SYNC_GOVOBJ_VOTE | `govsync` message with non-zero hash
@ -3046,6 +3086,49 @@ bf110000 ................................... Count: 4543
{% endautocrossref %}
#### qfcommit
{% include helpers/subhead-links.md %}
{% autocrossref %}
The `qfcommit` message is used to finalize a long-living masternode quorum setup
by aggregating the information necessary to mine the on-chain QcTx
special transaction. The message contains all the necessary information required
to validate the long-living masternode quorum's signing results.
It is possible to receive multiple valide final commitments for the same DKG
session. These should only differ in the number of signers, which can be ignored
as long as there are at least `quorumThreshold` number of signers. The set of
valid members for these final commitments should always be the same, as each
member only creates a single premature commitment. This means that only one set
of valid members (and thus only one quorum verification vector and quorum public
key) can gain a majority. If the threshold is not reached, there will be no
valid final commitment.
| Bytes | Name | Data type | Description |
| --- | --- | --- | --- |
| 2 | version | uint16_t | Version of the final commitment message
| 1 | llmqType | uint8_t | The type of LLMQ
| 32 | quorumHash | uint256 | The quorum identifier
| 1-9 | signersSize | compactSize uint | Bit size of the signers bitvector
| (bitSize + 7) / 8 | signers | byte[] | Bitset representing the aggregated signers of this final commitment
| 1-9 | validMembersSize | compactSize uint | Bit size of the `validMembers` bitvector
| (bitSize + 7) / 8 | validMembers | byte[] | Bitset of valid members in this commitment
| 48 | quorumPublicKey | BLSPubKey | The quorum public key
| 32 | quorumVvecHash | uint256 | The hash of the quorum verification vector
| 96 | quorumSig | BLSSig | Recovered threshold signature
| 96 | sig | BLSSig | Aggregated BLS signatures from all included commitments
<!--
The following annotated hexdump shows a `qfcommit` message. (The
message header has been omitted.)
{% highlight text %}
{% endhighlight %}
-->
{% endautocrossref %}
### Governance Messages
{% include helpers/subhead-links.md %}

View file

@ -414,7 +414,9 @@ flexibility to expand beyond the financial uses of classical transactions. DIP2
transactions modified classical transactions by:
1. Splitting the 32 bit `version` field into two 16 bit fields (`version` and `type`)
2. Adding support for a generic extra payload following the `lock_time` field
2. Adding support for a generic extra payload following the `lock_time` field. The
maximum allowed size for a transaction version 3 extra payload is 10000 bytes
(`MAX_TX_EXTRA_PAYLOAD`).
Classical (financial) transactions have a `type` of 0 while special transactions
have a `type` defined in the DIP describing them. A list of current special
@ -427,7 +429,7 @@ transaction types is maintained in the [DIP repository](https://github.com/dashp
{% autocrossref %}
*Added in protocol version 70212 of Dash Core as described by DIP3*
*Added in protocol version 70213 of Dash Core as described by DIP3*
The Masternode Registration (ProRegTx) special transaction is used to join the
masternode list by proving ownership of the 1000 DASH necessary to create a
@ -585,7 +587,7 @@ ProRegTx Payload
{% autocrossref %}
*Added in protocol version 70212 of Dash Core as described by DIP3*
*Added in protocol version 70213 of Dash Core as described by DIP3*
The Masternode Provider Update Service (ProUpServTx) special transaction is used
to update the IP Address and port of a masternode. If a non-zero operatorReward
@ -658,7 +660,7 @@ ProUpServTx Payload
{% autocrossref %}
*Added in protocol version 70212 of Dash Core as described by DIP3*
*Added in protocol version 70213 of Dash Core as described by DIP3*
The Masternode Provider Update Registrar (ProUpRegTx) special transaction is used
by a masternode owner to update masternode metadata (e.g. operator/voting key
@ -739,7 +741,7 @@ ProRegTx Payload
{% autocrossref %}
*Added in protocol version 70212 of Dash Core as described by DIP3*
*Added in protocol version 70213 of Dash Core as described by DIP3*
The Masternode Operator Revocation (ProUpRevTx) special transaction allows an
operator to revoke their key in case of compromise or if they wish to terminate
@ -801,7 +803,7 @@ ProUpRevTx Payload
{% autocrossref %}
*Added in protocol version 70212 of Dash Core as described by DIP4*
*Added in protocol version 70213 of Dash Core as described by DIP4*
The Coinbase (CbTx) special transaction adds information to the blocks coinbase
transaction that enables verification of the deterministic masternode list without
@ -867,48 +869,95 @@ Coinbase Transaction Payload
{% endautocrossref %}
#### Quorum Commitment
#### QcTx
{% include helpers/subhead-links.md %}
{% autocrossref %}
Quorum Commitment
*Added in protocol version 70213 of Dash Core as described by DIP6*
{% endautocrossref %}
The Quorum Commitment (QcTx) special transaction adds the best final commitment from a
Long-Living Masternode Quorum (LLMQ) Distributed Key Generation (DKG) session to
the chain. This special transaction has no inputs and no outputs and thus also
pays no fee.
#### SubTxRegister
{% include helpers/subhead-links.md %}
Since this special transaction pays no fees, it is mandatory by consensus rules
to ensure that miners include it. Exactly one quorum commitment transaction MUST
be included in every block while in the mining phase of the LLMQ process until a
valid commitment is present in a block.
{% autocrossref %}
If a DKG failed or a miner did not receive a final commitment in-time, a null
commitment has to be included in the special transaction payload. A null
commitment must have the `signers` and `validMembers` bitsets set to the
`quorumSize` and all bits set to zero. All other fields must be set to the null
representation of the fields types.
Register Blockchain User
The special transaction type used for Quorum Commitment Transactions is 6 and
the extra payload consists of the following data:
{% endautocrossref %}
| Bytes | Name | Data type | Description |
| ---------- | ----------- | -------- | -------- |
| 2 | version | uint_16 | Quorum Commitment version number. Currently set to 1.
| 4 | height | uint32_t | Height of the block
| Variable | commitment | qfcommit | The payload of the `qfcommit` message
#### SubTxTopup
{% include helpers/subhead-links.md %}
The following annotated hexdump shows a QcTx transaction.
{% autocrossref %}
<!--getrawtransaction f218f2d5b8003bc530016dc510b3d982a5cf43ff76313b991ac5aa90a91065b7 true-->
Topup Blockchain User Credit
An itemized quorum commitment transaction:
{% endautocrossref %}
{% highlight text %}
0300 ....................................... Version (3)
0600 ....................................... Type (6 - Quorum Commitment)
#### SubTxResetKey
{% include helpers/subhead-links.md %}
00 ......................................... Number of inputs
00 ......................................... Number of outputs
{% autocrossref %}
00000000 ................................... Locktime
Change Blockchain User Public Key
fd4901 ..................................... Extra payload size (329)
{% endautocrossref %}
#### SubTxCloseAccount
{% include helpers/subhead-links.md %}
{% autocrossref %}
Close Blockchain User Account
Quorum Commitment Transaction Payload
| 0100 ..................................... Version (1)
|
| 921d0000 ................................. Block height: 7570
|
| Payload from the qfcommit message
| | 01 ..................................... LLMQ Type (1)
| |
| | 8d80561839648b844ade10b6e81069fa
| | 6c4bde6166dd59242be3487a00000000 ....... Quorum hash
| |
| | 32 ..................................... Number of signers (50)
| | ff7effffbebe02 ......................... Aggregrated signers bitvector
| |
| | 32 ..................................... Number of valid members (50)
| | ff7effffbebe02 ......................... Valid members bitvector
| |
| | 81d0717b893b557f54daacbd060bcffa
| | 2dc341175d0b89c7974dc57ef482ae27
| | e10fb273eda534596993999950817cd4 ....... Quorum public key (BLS)
| |
| | ed93bc215d15350bd7030be811cf1df2
| | c114f6b34df9bd4095161af93608ed90 ....... Quorum verification vector hash
| |
| | Quorum threshold signature (BLS)
| | 8d2bbb0b9c5b8626eb852ea0ff4f2509
| | 19becc2d24653910fb8e11cf5573062f
| | 9f64c03a5031f1d462163ce98e8bf78a
| | 1470f7074a8e6fe23ccb53d73635ecd5
| | ad71b26a938fc21638bcae7d272af9fa
| | 919f296a17e77191e3d4c708bc6e1b9a ....... BLS Signatures (96 bytes)
| |
| | Aggregated signatures from all commitments (BLS)
| | 19e702ff84ff851312cceba1de528ee7
| | ffe33647ae28ef895b35558512901394
| | b430c804c7c42494a3312545606b5598
| | 0480985494fa2c49f50c65d47570380f
| | 13c2851ce33d8584b64e8b659146d732
| | 67d821c78d09ba7caea3d03641f78c7a ....... BLS Signature (96 bytes)
{% endhighlight %}
{% endautocrossref %}

View file

@ -71,13 +71,13 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header::
<td class="tg-b7b8">Blockchain</td>
<td class="tg-b7b8"><a href="#getblock">GetBlock</a></td>
<td class="tg-dzk6">Y</td>
<td class="tg-dzk6"></td>
<td class="tg-dzk6">Updated in 0.13.0.0</td>
</tr>
<tr>
<td class="tg-yw4l">Blockchain</td>
<td class="tg-yw4l"><a href="#getblockchaininfo">GetBlockChainInfo</a></td>
<td class="tg-baqh">Y</td>
<td class="tg-baqh">Updated in 0.12.3.0</td>
<td class="tg-baqh">Updated in 0.13.0.0</td>
</tr>
<tr>
<td class="tg-b7b8">Blockchain</td>
@ -245,7 +245,7 @@ th.tg-sort-header::-moz-selection { background:transparent; }th.tg-sort-header::
<td class="tg-yw4l">Dash</td>
<td class="tg-yw4l"><a href="#gobject">GObject</a></td>
<td class="tg-baqh">Y</td>
<td class="tg-baqh">Updated in 0.12.3.0</td>
<td class="tg-baqh">Updated in 0.13.0.0</td>
</tr>
<tr>
<td class="tg-b7b8">Dash</td>

View file

@ -33,7 +33,7 @@ http://opensource.org/licenses/MIT.
[msg_governance_object_vote]: /en/developer-reference#term-msg_governance_object_vote "Governance object vote data type identifier of an inventory on the P2P network"
[msg_masternode_verify]: /en/developer-reference#term-msg_masternode_verify "Masternode Verify data type identifier of an inventory on the P2P network"
[msg_cmpct_block]: /en/developer-reference#term-msg_cmpct_block "An alternative to the block header hash data type identifier of an inventory on the P2P network used to request a compact block"
[msg_quorum_final_commitment]: /en/developer-reference#term-msg_quorum_final_commitment "The Long-Living Masternode Quorum Final Commitment data type identifier of an inventory on the P2P network"
[network]: /en/developer-guide#term-network "The Dash P2P network which broadcasts transactions and blocks"
[op_checkmultisig]: /en/developer-reference#term-op-checkmultisig "Opcode which returns true if one or more provided signatures (m) sign the correct parts of a transaction and match one or more provided public keys (n)"
[op_checksig]: /en/developer-reference#term-op-checksig "Opcode which returns true if a signature signs the correct parts of a transaction and matches a provided public key"
@ -234,6 +234,7 @@ http://opensource.org/licenses/MIT.
[getblocktxn message]: /en/developer-reference#getblocktxn "A P2P protocol message used to request transactions from a compact block"
[getdata message]: /en/developer-reference#getdata "A P2P protocol message used to request one or more transactions, blocks, or merkle blocks"
[getheaders message]: /en/developer-reference#getheaders "A P2P protocol message used to request a range of block headers"
[getmnlistd message]: /en/developer-reference#getmnlistd "A P2P protool message used to request a simplified masternode list"
[getsporks message]: /en/developer-reference#getsporks "A P2P network message used to request the status of sporks"
[govobj message]: /en/developer-reference#govobj "A P2P network message used to send governance objects (proposals, etc.)"
[govobjvote message]: /en/developer-reference#govobjvote "A P2P network message used to send governance object votes"
@ -245,12 +246,14 @@ http://opensource.org/licenses/MIT.
[merkleblock message]: /en/developer-reference#merkleblock "A P2P protocol message used to request a filtered block useful for SPV proofs"
[mnb message]: /en/developer-reference#mnb "A P2P protocol message used to describe the masternode entry and how to validate messages from it"
[mnget message]: /en/developer-reference#mnget "A P2P protocol message that requests masternode payment sync"
[mnlistdiff message]: /en/developer-reference#mnlistdiff "A P2P protocol message used to send a diff of simplified masternode list entries between two blocks"
[mnp message]: /en/developer-reference#mnp "A P2P protocol message sent by masternodes every few minutes to ping the network with a message that propagates across the whole network"
[mnv message]: /en/developer-reference#mnv "A P2P protocol message used by masternodes to verify other masternode's IP Addresses."
[mnw message]: /en/developer-reference#mnw "A P2P protocol message used to pick the next winning masternode (payee)"
[notfound message]: /en/developer-reference#notfound "A P2P protocol message sent to indicate that the requested data was not available"
[ping message]: /en/developer-reference#ping "A P2P network message used to see if the remote host is still connected"
[pong message]: /en/developer-reference#pong "A P2P network message used to reply to a P2P network ping message"
[qfcommit message]: /en/developer-reference#qfcommit "A P2P network message used to finalize the members of a long-living masternode quorum (LLMQ)"
[reject message]: /en/developer-reference#reject "A P2P network message used to indicate a previously-received message was rejected for some reason"
[sendcmpct message]: /en/developer-reference#sendcmpct "A P2P network message used to request new blocks be announced as compact blocks"
[sendheaders message]: /en/developer-reference#sendheaders "A P2P network message used to request new blocks be announced through headers messages rather than inv messages"
@ -458,6 +461,7 @@ http://opensource.org/licenses/MIT.
[proupservtx special tx]: /en/developer-reference#proupservtx
[python-bitcoinlib]: https://github.com/petertodd/python-bitcoinlib
[python-blkmaker]: https://gitorious.org/bitcoin/python-blkmaker
[quorum commitment special tx]: /en/developer-reference#qctx
[Satoshi Nakamoto]: https://en.bitcoin.it/wiki/Satoshi_Nakamoto
[setup tor]: https://www.torproject.org/
[SHA256]: https://en.wikipedia.org/wiki/SHA-2