This document details the plan and necessary order of operations for deploying Spork-less Epoch Fallback Recovery Design II: Epoch Extensions, using a Protocol HCU. (As this will be the first Protocol HCU, deployment of parts of the Protocol HCU system itself are also covered by this plan.)
FlowEpoch
FlowClusterQC
FlowDKG
NodeVersionBeacon
EpochCommit.dkgIdMapping
field - new field addedEpochCommit.dkgGroupKey
field - new field addedEpochCommit.dkgPubKeys
field - existing field, semantics changed to omit group keyProtocolStateVersionUpgrade
service eventEpochCommit.DKGIndexMap
field - field currently exists but is empty since beginning of current spork, post-upgrade will be populated and meaningfulEpochRecover
service event, recovery logicChunkBody.ServiceEventCount
field - new field addedBelow we describe upgrade processes for General Service Event Validation and EFM Recovery separately. In practice, we can and plan to combine them (see Combined Upgrade Process).
This feature being deployed is necessary to validate extra-system-chunk service events. The Protocol HCU trigger is implemented by an extra-system-chunk service event. Because of this, we will make use of sealing configurations to seal the first ProtocolStateVersionUpgrade
without requiring verification.
ServiceEventCount
https://github.com/onflow/flow-go/issues/6777; PR https://github.com/onflow/flow-go/pull/6796