From d7d691b08b8b718f733f8411fa45081a24fb2e6c Mon Sep 17 00:00:00 2001 From: Jordan Schalm Date: Tue, 7 Nov 2023 10:19:26 -0800 Subject: [PATCH] Update FLIP 204 (#218) Add more detailed deployment plan, based on timing of Mainnet24 spork. Add link to GitHub epic. --- ...e-account-specified-epoch-switchover.md.md | 24 +++++++------------ 1 file changed, 9 insertions(+), 15 deletions(-) diff --git a/protocol/20231003-service-account-specified-epoch-switchover.md.md b/protocol/20231003-service-account-specified-epoch-switchover.md.md index 531ebee5..70776b63 100644 --- a/protocol/20231003-service-account-specified-epoch-switchover.md.md +++ b/protocol/20231003-service-account-specified-epoch-switchover.md.md @@ -131,6 +131,7 @@ pub fun getTargetEndTimeForEpoch( ### Implementation Plan +See also [ZenHub epic](https://github.com/onflow/flow-go/issues/4948). #### Smart Contract @@ -162,21 +163,14 @@ pub fun getTargetEndTimeForEpoch( - Default value for deploying `FlowEpoch` ### Deployment Plan +#### Mainnet24 (Nov 8 2023) +1. Prepare patch which makes `EpochSetup` parsing forward-compatible (accept events with the extra `TargetEndTime` field, but discard it). +2. Rolling upgrade **all nodes** to this patch version. +3. Upgrade `FlowEpoch` contract. -As usual, deploy to Canary → Testnet → Mainnet - -1. Upgrade `FlowEpoch` - - - -2. Upgrade Consensus Nodes - - *Comment: Since we are modifying the EpochSetup model, this will likely require a spork.* - - +#### Mainnet25 (Q1-Q2 2024) +- Deploy `flow-go` version implementing FLIP 204. +- Since we have already upgraded the contract, no backward-compatibility in `flow-go` code is required (besides the patch above, which will remain on the `mainnet24` branch) ### Drawbacks @@ -239,4 +233,4 @@ In **Option 1.1** and **2**, the timing of a particular epoch transition does no #### Why do we set `TargetEndTime` rather than `TargetStartTime`? -The time information is specified in the `EpochSetup` event, which occurs partway through the current epoch. If we specified a `TargetStartTime`, then the PID Controller’s Process Variable would have an undefined value for part of the epoch, and the Cruise Control system would be unable to function. On Mainnet, this corresponds to about 90% of the duration of an epoch. \ No newline at end of file +The time information is specified in the `EpochSetup` event, which occurs partway through the current epoch. If we specified a `TargetStartTime`, then the PID Controller’s Process Variable would have an undefined value for part of the epoch, and the Cruise Control system would be unable to function. On Mainnet, this corresponds to about 90% of the duration of an epoch.