mirror of
https://github.com/seigler/dash-docs
synced 2025-07-27 09:46:12 +00:00
V0.14.0 P2P/RPC updates (#123)
* P2P - LLMQ debug messages - Move below DKG and signing - Don't show qdebugstatus * P2P - Update qbsigs and qsigsinv * Content - add details related to some Dash Core constants * RPC - Add DKG phases to quorum status * P2P - Update version msg with mnauth challenge * P2P - Update version hexdump - Include mn auth challenge * Content - Minor updates - Fix filterload cross ref url - Add note about special tx bloom filter support * Content - update RPC examples based on added CbTx quorum merkle field
This commit is contained in:
parent
aa254c489c
commit
6ee3f06b32
10 changed files with 264 additions and 254 deletions
|
@ -1459,6 +1459,9 @@ example, TXIDs will be in internal byte order).
|
|||
if the `BLOOM_UPDATE_P2PUBKEY_ONLY` flag was set. See the subsection
|
||||
below for details.)
|
||||
|
||||
As of Dash Core 0.14.0, elements in the extra payload section of DIP2-based
|
||||
special transactions are also compared against bloom filters.
|
||||
|
||||
The following annotated hexdump of a transaction is from the [raw
|
||||
transaction format section][raw transaction format]; the elements which
|
||||
would be checked by the filter are emphasized in bold. Note that this
|
||||
|
@ -1887,6 +1890,11 @@ If a `version` message is accepted, the receiving node should send a
|
|||
before initializing its half of the connection by first sending a
|
||||
`version` message.
|
||||
|
||||
Protocol version 70214 added a masternode authentication (challenge/response)
|
||||
system. Following the `verack` message, masternodes should send a `mnauth` message
|
||||
that signs the `mnauth_challenge` with their BLS operator key.
|
||||
|
||||
|
||||
| Bytes | Name | Data Type | Required/Optional | Description
|
||||
|----------|-----------------------|------------------|------------------------------------------|-------------
|
||||
| 4 | version | int32_t | Required | The highest protocol version understood by the transmitting node. See the [protocol version section][section protocol versions].
|
||||
|
@ -1903,6 +1911,7 @@ before initializing its half of the connection by first sending a
|
|||
| *Varies* | user_agent | string | Required if user_agent bytes > 0 | *Renamed in protocol version 60000.* <br><br>User agent as defined by BIP14. Previously called subVer.<br><br>Dash Core limits the length to 256 characters.
|
||||
| 4 | start_height | int32_t | Required | The height of the transmitting node's best block chain or, in the case of an SPV client, best block header chain.
|
||||
| 1 | relay | bool | Optional | *Added in protocol version 70001 as described by BIP37.* <br><br>Transaction relay flag. If 0x00, no `inv` messages or `tx` messages announcing new transactions should be sent to this client until it sends a `filterload` message or `filterclear` message. If the relay field is not present or is set to 0x01, this node wants `inv` messages and `tx` messages announcing new transactions.
|
||||
| 32 | mnauth_challenge | uint256 | Optional | *Added in protocol version 70214* <br><br>A challenge to be signed by the receiving masternode. The response is returned via a `mnauth` message following the `verack` message.
|
||||
|
||||
|
||||
The following service identifiers have been assigned.
|
||||
|
@ -1919,9 +1928,9 @@ message header has been omitted and the actual IP addresses have been
|
|||
replaced with [RFC5737][] reserved IP addresses.)
|
||||
|
||||
{% highlight text %}
|
||||
3e120100 .................................... Protocol version: 70206
|
||||
46120100 .................................... Protocol version: 70214
|
||||
0500000000000000 ............................ Services: NODE_NETWORK (1) + NODE_BLOOM (4)
|
||||
bc8f5e5400000000 ............................ Epoch time: 1415483324
|
||||
9c10ad5c00000000 ............................ Epoch time: 1554845852
|
||||
|
||||
0100000000000000 ............................ Receiving node's services
|
||||
00000000000000000000ffffc61b6409 ............ Receiving node's IPv6 address
|
||||
|
@ -1933,11 +1942,14 @@ bc8f5e5400000000 ............................ Epoch time: 1415483324
|
|||
|
||||
128035cbc97953f8 ............................ Nonce
|
||||
|
||||
14 .......................................... Bytes in user agent string: 20
|
||||
2f4461736820436f72653a302e31322e312e352f..... User agent: /Satoshi:0.9.2.1/
|
||||
12 .......................................... Bytes in user agent string: 18
|
||||
2f4461736820436f72653a302e31322e312e352f..... User agent: /Dash Core:0.14.0/
|
||||
|
||||
851f0b00 .................................... Start height: 728965
|
||||
851f0b00 .................................... Start height: 76944
|
||||
01 .......................................... Relay flag: true
|
||||
|
||||
5dbb5d1baade6a9afa34db708f72c0dd
|
||||
b5bd82b3656493484556689640a91357 ............ Masternode Auth. Challenge
|
||||
{% endhighlight %}
|
||||
|
||||
{% endautocrossref %}
|
||||
|
@ -2873,75 +2885,6 @@ features built in to Dash.
|
|||
{% endautocrossref %}
|
||||
|
||||
|
||||
#### Debugging
|
||||
{% include helpers/subhead-links.md %}
|
||||
|
||||
|
||||
##### qdebugstatus
|
||||
{% include helpers/subhead-links.md %}
|
||||
|
||||
{% autocrossref %}
|
||||
|
||||
*Added in protocol version 70214 of Dash Core*
|
||||
|
||||
The `qdebugstatus` message is used to...
|
||||
|
||||
| Bytes | Name | Data type | Description |
|
||||
| --- | --- | --- | --- |
|
||||
| 32 | proTxHash | uint256 | The ProRegTx hash
|
||||
| 8 | nTime | int64_t |
|
||||
| 1-9 | sessionsSize | compactSize uint |
|
||||
| `sessionsSize` * <> | sessions | <uint8_t, CDKGDebugSessionStatus> |
|
||||
| 96 | sig | byte[] | BLS signature
|
||||
|
||||
`CDKGDebugSessionStatus`:
|
||||
|
||||
| Bytes | Name | Data type | Description |
|
||||
| --- | --- | --- | --- |
|
||||
| 1 | llmqType | uint8_t | The type of LLMQ
|
||||
| 32 | quorumHash | uint256 | The quorum identifier
|
||||
| 4 | quorumHeight | uint32_t | The quorum height
|
||||
| 1 | phase | uint8_t | The DKG phase of the quorum
|
||||
| 1-9 | membersSize | compactSize uint |
|
||||
| `membersSize` * <> | members | CDKGDebugMemberStatus |
|
||||
|
||||
`CDKGDebugMemberStatus`:
|
||||
|
||||
| Bytes | Name | Data type | Description |
|
||||
| --- | --- | --- | --- |
|
||||
| 1 | statusBitset | uint8_t |
|
||||
| 32 * <> | complaintsFromMembers | uint16_t |
|
||||
|
||||
|
||||
<!--
|
||||
The following annotated hexdump shows a `qdebugstatus` message. (The
|
||||
message header has been omitted.)
|
||||
|
||||
{% highlight text %}
|
||||
|
||||
{% endhighlight %}
|
||||
|
||||
-->
|
||||
{% endautocrossref %}
|
||||
|
||||
|
||||
##### qwatch
|
||||
{% include helpers/subhead-links.md %}
|
||||
|
||||
{% autocrossref %}
|
||||
|
||||
*Added in protocol version 70214 of Dash Core*
|
||||
|
||||
The `qwatch` message tells the receiving peer to relay LLMQ messages
|
||||
(`qcontrib` messages, `qcomplaint` messages, `qjustify` messages, and
|
||||
`qpcommit` messages).
|
||||
|
||||
There is no payload in a `qwatch` message. See the [message header
|
||||
section][section message header] for an example of a message without a payload.
|
||||
|
||||
{% endautocrossref %}
|
||||
|
||||
|
||||
#### Distributed Key Generation
|
||||
{% include helpers/subhead-links.md %}
|
||||
|
||||
|
@ -3353,7 +3296,7 @@ The `qbsigs` message is used to send batched signature shares in response to a
|
|||
`qgetsigs` message.
|
||||
|
||||
Note: The number of messages that can be sent in a batch is limited to 400
|
||||
(as defined by `MAX_MSGS_TOTAL_BATCHED_SIGS`).
|
||||
(as defined by `MAX_MSGS_TOTAL_BATCHED_SIGS` in Dash Core).
|
||||
|
||||
| Bytes | Name | Data type | Description |
|
||||
| --- | --- | --- | --- |
|
||||
|
@ -3428,13 +3371,14 @@ The `qgetsigs` message is used to request signature shares. The response to a
|
|||
`qgetsigs` message is a `qbsigs` message.
|
||||
|
||||
Note: The number of inventories in a `qgetsigs` message is limited to 200
|
||||
(as defined by `MAX_MSGS_CNT_QGETSIGSHARES`).
|
||||
(as defined by `MAX_MSGS_CNT_QGETSIGSHARES` in Dash Core).
|
||||
|
||||
| Bytes | Name | Data type | Description |
|
||||
| --- | --- | --- | --- |
|
||||
| Varies | count | compactSize uint | Number of signature shares requested |
|
||||
| Varies | sessionId | varint | Signing session ID
|
||||
| Varies | inv | | Quorum signature inventory |
|
||||
| Varies | invSize | compactSize uint | Inventory size
|
||||
| Varies | inv | CAutoBitSet | Quorum signature inventory |
|
||||
|
||||
The following annotated hexdump shows a `qgetsigs` message. (The
|
||||
message header has been omitted.)
|
||||
|
@ -3448,11 +3392,13 @@ message header has been omitted.)
|
|||
|
||||
Signature share request 1
|
||||
| 80db21 ................................... Session ID
|
||||
| 32012900 ................................. Inventory
|
||||
| 32 ....................................... Inventory size: 50
|
||||
| 012900 ................................... Inventory
|
||||
|
||||
Signature share request 2
|
||||
| 80db22 ................................... Session ID
|
||||
| 32012900 ................................. Inventory
|
||||
| 32 ....................................... Inventory Size: 50
|
||||
| 012900 ................................... Inventory
|
||||
{% endhighlight %}
|
||||
|
||||
{% endautocrossref %}
|
||||
|
@ -3553,7 +3499,7 @@ session. The sessionId will be used for all P2P messages related to that
|
|||
session.
|
||||
|
||||
Note: The maximum number of announcements in a `qsigsesann` message is limited to
|
||||
100 (as defined by `MAX_MSGS_CNT_QSIGSESANN`).
|
||||
100 (as defined by `MAX_MSGS_CNT_QSIGSESANN` in Dash Core).
|
||||
|
||||
| Bytes | Name | Data type | Description |
|
||||
| --- | --- | --- | --- |
|
||||
|
@ -3622,7 +3568,7 @@ The `qsigsinv` message (quorum signature inventory) announces one or more quorum
|
|||
signature share inventories known by the transmitting peer.
|
||||
|
||||
Note: The maximum number of inventories in a `qsigsinv` message is limited to
|
||||
200 (as defined by `MAX_MSGS_CNT_QSIGSHARESINV`).
|
||||
200 (as defined by `MAX_MSGS_CNT_QSIGSHARESINV` in Dash Core).
|
||||
|
||||
<!-- See quorum_signing_shares.h (CSigSharesInv) -->
|
||||
|
||||
|
@ -3630,7 +3576,8 @@ Note: The maximum number of inventories in a `qsigsinv` message is limited to
|
|||
| --- | --- | --- | --- |
|
||||
| Varies | count | compactSize uint | Number of session announcements |
|
||||
| Varies | sessionId | varint | Signing session ID (must be less than the maximum uint32_t value) |
|
||||
| Varies | inv | | Quorum signature inventory |
|
||||
| Varies | invSize | compactSize uint | Inventory size
|
||||
| Varies | inv | CAutoBitSet | Quorum signature inventory |
|
||||
|
||||
The following annotated hexdump shows a `qsigsinv` message. (The
|
||||
message header has been omitted.)
|
||||
|
@ -3644,15 +3591,86 @@ Match qbsigs and qsigsesann
|
|||
02 ......................................... Count: 2
|
||||
|
||||
84d844 ..................................... Session ID
|
||||
32011a040200 ............................... Inventory
|
||||
32 ......................................... Inventory size: 50
|
||||
011a040200 ................................. Inventory
|
||||
|
||||
84d843 ..................................... Session ID
|
||||
32011a0700 ................................. Inventory
|
||||
32 ......................................... Inventory size: 50
|
||||
011a0700 ................................... Inventory
|
||||
{% endhighlight %}
|
||||
|
||||
{% endautocrossref %}
|
||||
|
||||
|
||||
#### Debugging
|
||||
{% include helpers/subhead-links.md %}
|
||||
|
||||
<!-- qdebugstatus is generally not used. Leaving undocumented per discussion with codablock
|
||||
|
||||
##### qdebugstatus
|
||||
{% include helpers/subhead-links.md %}
|
||||
|
||||
{% autocrossref %}
|
||||
{% endautocrossref %}
|
||||
|
||||
*Added in protocol version 70214 of Dash Core*
|
||||
|
||||
The `qdebugstatus` message is used to...
|
||||
|
||||
| Bytes | Name | Data type | Description |
|
||||
| --- | --- | --- | --- |
|
||||
| 32 | proTxHash | uint256 | The ProRegTx hash
|
||||
| 8 | nTime | int64_t |
|
||||
| 1-9 | sessionsSize | compactSize uint |
|
||||
| `sessionsSize` * <> | sessions | <uint8_t, CDKGDebugSessionStatus> |
|
||||
| 96 | sig | byte[] | BLS signature
|
||||
|
||||
`CDKGDebugSessionStatus`:
|
||||
|
||||
| Bytes | Name | Data type | Description |
|
||||
| --- | --- | --- | --- |
|
||||
| 1 | llmqType | uint8_t | The type of LLMQ
|
||||
| 32 | quorumHash | uint256 | The quorum identifier
|
||||
| 4 | quorumHeight | uint32_t | The quorum height
|
||||
| 1 | phase | uint8_t | The DKG phase of the quorum
|
||||
| 1-9 | membersSize | compactSize uint |
|
||||
| `membersSize` * <> | members | CDKGDebugMemberStatus |
|
||||
|
||||
`CDKGDebugMemberStatus`:
|
||||
|
||||
| Bytes | Name | Data type | Description |
|
||||
| --- | --- | --- | --- |
|
||||
| 1 | statusBitset | uint8_t |
|
||||
| 32 * <> | complaintsFromMembers | uint16_t |
|
||||
|
||||
The following annotated hexdump shows a `qdebugstatus` message. (The
|
||||
message header has been omitted.)
|
||||
|
||||
{% highlight text %}
|
||||
|
||||
{% endhighlight %}
|
||||
|
||||
{% autocrossref %}
|
||||
{% endautocrossref %}
|
||||
-->
|
||||
|
||||
##### qwatch
|
||||
{% include helpers/subhead-links.md %}
|
||||
|
||||
{% autocrossref %}
|
||||
|
||||
*Added in protocol version 70214 of Dash Core*
|
||||
|
||||
The `qwatch` message tells the receiving peer to relay LLMQ messages
|
||||
(`qcontrib` messages, `qcomplaint` messages, `qjustify` messages, and
|
||||
`qpcommit` messages).
|
||||
|
||||
There is no payload in a `qwatch` message. See the [message header
|
||||
section][section message header] for an example of a message without a payload.
|
||||
|
||||
{% endautocrossref %}
|
||||
|
||||
|
||||
### Governance Messages
|
||||
{% include helpers/subhead-links.md %}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue