P2P - Add qfcommit message (no hexdump example)

DIP6 quorum final commitment (dashpay/dash#2477)
This commit is contained in:
thephez 2018-12-17 16:41:30 -05:00
parent b652fe17d3
commit 0fbaf409c0
No known key found for this signature in database
GPG key ID: BBC8A06DBE236099
4 changed files with 49 additions and 0 deletions

View file

@ -170,6 +170,9 @@ protocol version 70012: section protocol versions
protocol version 70013: section protocol versions
protocol version 70014: section protocol versions
public key infrastructure: pki
'Quorum Commitment': quorum commitment special tx
'`qfcommit` message': qfcommit message
'`qfcommit` messages': qfcommit message
'`r`': r
receipt: DO NOT AUTOCROSSREF
recurrent rebilling:

View file

@ -572,6 +572,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

@ -3057,6 +3057,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 Quorum Commitment
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 | Version of the final commitment message
| 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

@ -251,6 +251,7 @@ http://opensource.org/licenses/MIT.
[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 +459,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#quorum-commitment
[Satoshi Nakamoto]: https://en.bitcoin.it/wiki/Satoshi_Nakamoto
[setup tor]: https://www.torproject.org/
[SHA256]: https://en.wikipedia.org/wiki/SHA-2