diff --git a/README.md b/README.md index 4213e47e..8e4bfa9c 100644 --- a/README.md +++ b/README.md @@ -36,7 +36,7 @@ Number | Layer | Title | Owner | Type | Status [20](dip-0020.md) | Consensus | Dash Opcode Updates | Mart Mangus | Standard | Final [21](dip-0021.md) | Consensus | LLMQ DKG Data Sharing | dustinface | Standard | Final [22](dip-0022.md) | Consensus | Making InstantSend Deterministic using Quorum Cycles | Samuel Westrich, UdjinM6 | Standard | Final -[23](dip-0023.md) | Consensus | Enhanced Hard Fork Mechanism | Pasta | Standard | Proposed +[23](dip-0023.md) | Consensus | Enhanced Hard Fork Mechanism | Pasta | Standard | Final [24](dip-0024.md) | Consensus | Long-Living Masternode Quorum Distribution and Rotation | Samuel Westrich & Virgile Bartolo | Standard | Final [25](dip-0025.md) | Peer Services | Compressed Block Headers | gabriel-bjg, Thephez, UdjinM6 | Standard | Proposed [26](dip-0026.md) | Consensus | Multi-Party Payout | Timothy Munsell, UdjinM6 | Standard | Proposed diff --git a/dip-0023.md b/dip-0023.md index c2a6919c..1eecfba3 100644 --- a/dip-0023.md +++ b/dip-0023.md @@ -2,9 +2,9 @@ DIP: 0023 Title: Enhanced Hard Fork Mechanism Author(s): Pasta - Special-Thanks: + Special-Thanks: Konstantin Akimov Comments-Summary: No comments yet. - Status: Proposed + Status: Final Type: Standard Created: 2021-07-29 License: MIT License @@ -47,8 +47,8 @@ setting the start timestamp to a month or two after the release. ## New System -**Stage 0:** Miners signal without any effect on consensus. It is impossible to lock-in at this -point. The purpose of this signalling is to enable monitoring of which miners have upgraded their +**Stage 0:** Miners signal without any effect on consensus. It is impossible to move beyond the `defined` +state at this point. The purpose of this signalling is to enable monitoring of which miners have upgraded their software and get an idea of the adoption rate. Additionally, it is important to note that this signalling does not take up any space, and as such there is no incentive to minimize the time where signalling is done. @@ -75,26 +75,17 @@ The payload of the Masternode Hard Fork Signalling Transaction (the new special | version | uint_8 | 1 | Commitment special transaction version number. Currently set to 1. Please note that this is not the same as the version field of the `mnhfsignal` message | | commitment | mnhfsignal | 129 | This equals the payload of the `mnhfsignal` P2P message -**Stage 2:** Once this `mnhfsignal` message has been mined, two parameters are set: -`masternode_activation_height` and `min_activation_height`. The cycle beginning at -`masternode_activation_height` is the first cycle where miner signalling matters. Its starting -height is calculated based on the `mnhfsignal` message height as shown here: +**Stage 2:** Once this `mnhfsignal` message has been mined, the `masternode_activation_height` parameter +is set. The cycle beginning at `masternode_activation_height` is the first cycle where miner +signalling matters. Its starting height is calculated based on the `mnhfsignal` message height as shown here: masternode_activation_height = mined_height - (mined_height % 4032) + 4032 This cycle’s threshold is `nThresholdStart` (the maximum threshold value). Each subsequent cycle will see its threshold decreased until it reaches `nThresholdMin` (the minimum threshold value). -Regardless of miner signalling, activation only occurs once the height defined by the -`min_activation_height` parameter is met. This is set to be 6 signalling windows (~6 weeks) after -the `masternode_activation_height`. It is calculated as shown here: - - min_activation_height = masternode_activation_height + 4032 * 6 - -If the threshold is met at the end of a cycle, `activation_height` is calculated by each node as -shown here: - - activation_height = max((height + 4032), min_activation_height) +Once a new cycle starts after `masternode_activation_height`, activation depends only on miner signalling. +The status may now move beyond `defined` and proceed to `started`, `locked_in` and `active` if miner signalling occurs. ## Timeout