flow-go
flow-go copied to clipboard
[EFM] Dynamic Protocol State maintains EFM by injecting EpochExtensions
Context
After an initial EpochExtension is added Subsequent EpochExtension
s are added to the Protocol State according to the following algorithm:
Suppose we are in EFM and are processing block B.
- Let $\hat{V}$ be the final view of the current epoch, taking into account prior
EpochExtension
s.
We will add a new EpochExtension
to the protocol state in block B iff both are true:
If we add a new EpochExtension, it will have the following form:

This issue is for adding EpochExtension
s on an ongoing basis (maintaining EFM). https://github.com/onflow/flow-go/issues/5724 is for injecting the first EpochExtension
(entering EFM).
Definition of Done
Update Dynamic Protocol State Mutator to maintain EFM by periodically adding new EpochExtensions.
Further Reading
see https://github.com/onflow/flow-go/issues/5631 for more details
related issues:
- https://github.com/onflow/flow-go/issues/5724 is for injecting the first
EpochExtension
(entering EFM). - https://github.com/onflow/flow-go/issues/5726 is for adding
EpochExtension
s on an ongoing basis (maintaining EFM). - https://github.com/onflow/flow-go/issues/5731 is for the detailed logic to avoid changing already committed leader selections.
Partially implemented in https://github.com/onflow/flow-go/pull/5773
Remaining logic implemented in https://github.com/onflow/flow-go/pull/5898