diff --git a/Periodically-Syncing-HyperChains.md b/Periodically-Syncing-HyperChains.md index 26a3561..abba679 100644 --- a/Periodically-Syncing-HyperChains.md +++ b/Periodically-Syncing-HyperChains.md @@ -544,10 +544,10 @@ We are concerned about the following: This leads to a design with of a staking cycle that consists of four distinct phases: 1. **Staking epoch**: Participants register and adjust their stakes. - In the staking phase, we collect all stakes posted in the ongoing child epoch. The result at the Nth child epoch CEn is refered to as sn. The initial stake as configured for the child chain is s0. + In the staking phase, we collect all stakes posted in the ongoing child epoch. The result at the Nth child epoch CEn is refered to as sn. The initial stake as configured for the child chain is s0. 2. **Leader Election epoch**: The system uses the state of the parent chain and the stakes recorded to generate a schedule for selecting leaders. - In the leader election phase we retrieve the last hash of a parent chain epoch to be used as a seed later on. For CEn we store the last blockhash of PEn-1 as seed for later schedule computation. + In the leader election phase we retrieve the last hash of a parent chain epoch to be used as a seed later on. For CEn we store the last blockhash of PEn-2 as seed for later schedule computation. Note that effectively at this moment we know the schedule for block production 2 epochs ahead. Among others, future stakers now can be more attentive. 3. **Block Production epoch**: Only validators meeting the minimum staking requirements are eligible to produce blocks. The schedule for CEn block production is based upon the stake set sn-5 produced in CEn-5 and the seed from the last block of PEn-4 @@ -569,39 +569,40 @@ The risk of re-using the schedule for the first 4 epochs is at most that one of The start of the chain looks as follows (wait until parent start height is final): + epoch 1 (CE1): - **Staking epoch** use the configured stake -- **Leader Election Epoch** use `parent_start_height` for entropy -- **Block Producer Epoch** use the schedule based upon configured stake s0and `parent_start_height` for entropy +- **Leader Election Epoch** ensure finality of `parent_start_height` +- **Block Producer Epoch** use the schedule based upon configured stake s0 and `parent_start_height` for entropy - **Payout Epoch** no actions epoch 2 (CE2): - **Staking epoch** staking distribution s1 from staking during block producing epoch CE1 -- **Leader Election Epoch** use `parent_start_height` for entropy +- **Leader Election Epoch** ensure finality of `parent_start_height` - **Block Producer Epoch** use the schedule based upon configured stake s0 and `parent_start_height` for entropy - **Payout Epoch** use results of CE1 block production epoch epoch 3 (CE3): - **Staking epoch** staking distribution s2 from staking during block producing CE2 -- **Leader Election Epoch** use **last hash of PE1** for entropy +- **Leader Election Epoch** ensure finality of **last hash of PE1** - **Block Producer Epoch** use the schedule based upon configured stake s0 and `parent_start_height` for entropy - **Payout Epoch** use results of CE2* block production epoch epoch 4 (CE4): - **Staking epoch** staking distribution s3 from staking during block producing epoch CE3 -- **Leader Election Epoch** use **last block of PE2*** for entropy +- **Leader Election Epoch** ensure finality of **last block of PE2*** - **Block Producer Epoch** use the schedule based upon configured stake s0 and `parent_start_height` for entropy - **Payout Epoch** use results of CE3 block production epoch epoch 5 (CE5): - **Staking epoch** staking distribution s4 from staking during block producing CE4 -- **Leader Election Epoch** use **last block of PE3*** for entropy +- **Leader Election Epoch** ensure finality of **last block of PE3*** - **Block Producer Epoch** use the schedule based upon configured stake s0 and **last block of PE1** for entropy - **Payout Epoch** use results of CE4 block production epoch epoch 6 (CE6): - **Staking epoch** staking distribution s5 from staking during block producing CE5 -- **Leader Election Epoch** use **last block of PE4*** for entropy +- **Leader Election Epoch** ensure finality of **last block of PE4*** - **Block Producer Epoch** use the schedule based upon **s1** and **last block of PE2** for entropy - **Payout Epoch** use results of epoch 5 block production epoch @@ -609,7 +610,7 @@ and for the Nth epoch: epoch N (CEn): - **Staking epoch** staking distribution sn-1 from staking during block producing CEn-1 -- **Leader Election Epoch** use **last block of PEn-2*** for entropy +- **Leader Election Epoch** ensure finality of **last block of PEn-2*** - **Block Producer Epoch** use the schedule based upon **sn-5** and **last block of PEn-4** for entropy - **Payout Epoch** use results of epoch n-1 block production epoch