mirror of
https://github.com/seigler/dash-docs
synced 2025-07-28 10:16:15 +00:00
Guide - Add Quorum description
This commit is contained in:
parent
033827eee7
commit
130fbf03ac
1 changed files with 35 additions and 17 deletions
|
@ -651,35 +651,40 @@ to update the masternode info and prevent it from entering a `MASTERNODE_WATCHDO
|
||||||
{% endautocrossref %}
|
{% endautocrossref %}
|
||||||
|
|
||||||
|
|
||||||
### Quorum Selection
|
|
||||||
{% include helpers/subhead-links.md %}
|
|
||||||
|
|
||||||
{% autocrossref %}
|
|
||||||
|
|
||||||
Dash quorums are used to facilitate the operation of masternode provided
|
|
||||||
features in a decentralized, deterministic way.
|
|
||||||
|
|
||||||
| Quorum Type | Members | Consensus | Description |
|
|
||||||
| ----------- | ------- | --------- | ----------- |
|
|
||||||
| InstantSend | 10 | Majority | A set of 10 masternodes are selected for _each_ input of the InstantSend transaction. A majority (6+) of them must agree to lock the input. If all inputs in the transaction can be locked, it becomes a successful InstantSend.
|
|
||||||
| MN Payments | 10 | Majority | A set of 10 masternodes are selected for each block. A majority (6+) of them must agree on the masternode payee for the next block.
|
|
||||||
| MN Broadcast | 10 | Majority | If a majority (6+) of nodes agree, a new `mnb` message is not required.
|
|
||||||
|
|
||||||
{% endautocrossref %}
|
|
||||||
|
|
||||||
|
|
||||||
### Masternode Quorums
|
### Masternode Quorums
|
||||||
{% include helpers/subhead-links.md %}
|
{% include helpers/subhead-links.md %}
|
||||||
|
|
||||||
|
Dash's masternode quorums are used to facilitate the operation of masternode provided
|
||||||
|
features in a decentralized, deterministic way. The original quorums (used
|
||||||
|
largely for InstantSend and masternode payments) were ephemeral and used for a
|
||||||
|
single purpose (e.g. voting on one specific InstantSend transaction).
|
||||||
|
|
||||||
|
Dash Core 0.14 (protocol version 70214) introduced the Long Living Masternode
|
||||||
|
Quorums (LLMQ) that are described in detail by [DIP6](https://github.com/dashpay/dips/blob/master/dip-0006.md).
|
||||||
|
These LLMQs are deterministic subsets of the global deterministic masternode
|
||||||
|
list that are formed via a distributed key generation (DKG) protocol and remain
|
||||||
|
active for a long periods of time (e.g. hours to days).
|
||||||
|
|
||||||
|
The main task of LLMQs is to perform threshold signing of consensus-related
|
||||||
|
messages (e.g. ChainLocks).
|
||||||
|
|
||||||
##### LLMQ Creation (DKG)
|
##### LLMQ Creation (DKG)
|
||||||
<!-- no subhead-links here -->
|
<!-- no subhead-links here -->
|
||||||
|
|
||||||
{% autocrossref %}
|
{% autocrossref %}
|
||||||
|
|
||||||
|
The following table details the data flow of P2P messages exchanged during
|
||||||
|
the distributed key generation (DKG) protocol used to establish an LLMQ.
|
||||||
|
|
||||||
|
NOTE: With the exception of the final step (`qfcommit` message broadcast), the message
|
||||||
|
exchanges happen only between masternodes participating in the DKG process via
|
||||||
|
the Intra-Quorum communication process described in the DIP.
|
||||||
|
|
||||||
*Quorum DKG Data Flow*
|
*Quorum DKG Data Flow*
|
||||||
|
|
||||||
| **Masternode** | **Direction** | **Peers** | **Description** |
|
| **Masternode** | **Direction** | **Peers** | **Description** |
|
||||||
| **[Initialization Phase](https://github.com/dashpay/dips/blob/master/dip-0006.md#1-initialization-phase)**| | | **Deterministically evaluate if quorum participation necessary** |
|
| **[Initialization Phase](https://github.com/dashpay/dips/blob/master/dip-0006.md#1-initialization-phase)**| | | **Deterministically evaluate if quorum participation necessary** |
|
||||||
|
| | | | Each quorum participant establishes connections to a set of quorum participants [as described in DIP6](https://github.com/dashpay/dips/blob/master/dip-0006.md#building-the-set-of-deterministic-connections) |
|
||||||
| **[Contribution Phase](https://github.com/dashpay/dips/blob/master/dip-0006.md#2-contribution-phase)** | | | **Send quorum contributions (intra-quorum communication)** |
|
| **[Contribution Phase](https://github.com/dashpay/dips/blob/master/dip-0006.md#2-contribution-phase)** | | | **Send quorum contributions (intra-quorum communication)** |
|
||||||
|`inv` message (qcontrib) | → | | Masternode sends inventory for its quorum contribution _to other masternodes in the quorum_
|
|`inv` message (qcontrib) | → | | Masternode sends inventory for its quorum contribution _to other masternodes in the quorum_
|
||||||
| | ← | `getdata` message (qcontrib) | Peer(s) respond with request for quorum contribution
|
| | ← | `getdata` message (qcontrib) | Peer(s) respond with request for quorum contribution
|
||||||
|
@ -702,3 +707,16 @@ features in a decentralized, deterministic way.
|
||||||
| `qfcommit` message | → | | Masternode sends the requested final commitment
|
| `qfcommit` message | → | | Masternode sends the requested final commitment
|
||||||
|
|
||||||
{% endautocrossref %}
|
{% endautocrossref %}
|
||||||
|
|
||||||
|
#### Quorum Selection
|
||||||
|
{% include helpers/subhead-links.md %}
|
||||||
|
|
||||||
|
{% autocrossref %}
|
||||||
|
|
||||||
|
| Quorum Type | Members | Consensus | Description |
|
||||||
|
| ----------- | ------- | --------- | ----------- |
|
||||||
|
| InstantSend | 10 | Majority | A set of 10 masternodes are selected for _each_ input of the InstantSend transaction. A majority (6+) of them must agree to lock the input. If all inputs in the transaction can be locked, it becomes a successful InstantSend.
|
||||||
|
| MN Payments | 10 | Majority | A set of 10 masternodes are selected for each block. A majority (6+) of them must agree on the masternode payee for the next block.
|
||||||
|
| MN Broadcast | 10 | Majority | _Deprecated by DIP3 (deterministic masternode list) in Dash Core 0.13._<br><br>If a majority (6+) of nodes agree, a new `mnb` message is not required.
|
||||||
|
|
||||||
|
{% endautocrossref %}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue