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

@ -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 %}