-
Notifications
You must be signed in to change notification settings - Fork 197
Description
Objective - Proof of Concept for supporting full spork history across Height Coordinated Upgrade version boundaries
Product relevance and impact
When Flow performs Height Coordinated Updates (HCU), the current design of Access Nodes mandates that previous history cannot be served from prior to that version because of the risk of returning different results for older blocks. More specifically, scripts cannot be executed on blocks that came before the height at which the HCU was executed since the Cadence version might have been updated during the HCU. This limiter to previous spork history is a major issue for EVM users/builders who expect full fidelity access to the spork history regardless of any HCUs.
Please see the comment on product relevance and impact below for more details.
Problem definition
EVM builders and users cannot tolerate segmented or missing blockchain history and our EVM equivalence credentials require us to hide Flow specific version details from the EVM experience.
How will we measure success
- Access node can serve script execution on blocks going as far back as the spork start all the while ensuring that script execution results are consistent with the Cadence version at that block height.
- EVM GW history support works as builders expect
Breakdown
This work can be split into to chunks with very limited overlap. We are focusing on a PoC for now - after that is done, we'll have a better understanding of required to productionize this approach (productionizing is not part of this OKR)
KR1: AN supports script execution across breaking HCU version boundaries
Here, we would be using the "old version beacon" (currently still used for mainnet) or some simple stop gap-solution in case KR2 wasn't ready yet.
DACI
Driver | Approver | Consulted | Informed |
---|---|---|---|
KROK team | @peterargue | Flow Team | Dete, Vishal, Bastian |
KR2: Design versioning mechanics for dynamic protocol state
We want to specify the new versioning information for the Execution Stack, so it is compatible with the dynamic protocol state. (See issue #6887 for specifics and Flip 298 for general context).
This work is important to decouple the work necessary on the dynamic protocol state from the work required on the EN and AN.
DACI*
Driver | Approver | Consulted | Informed |
---|---|---|---|
Janez | Alex | Alex, Jordan | Vishal, Bastian, Peter |
โน Work beyond Q1 2025 ๐
KR3: Evolve Versioning of Execution Stack to use dynamic protocol state
The current mechanism to signal a change in the node software to all nodes has several limitations. There is a plan to improve and update this mechanism detailed in Flip 298. Access nodes can use this new mechanism to more robustly serve full spork history across HCU version boundaries and achieve the objective of this OKR.
This is hopefully a lighter-weight engineering task (๐ issue #6788), though it requires broader alignment across the protocol team (this work would be one puzzle piece of the much broader vision Flip 298 and we need to make sure the refactored EN version beacon fits into the longer-term vision outlined in the Flip).
DACI
Driver | Approver | Consulted | Informed |
---|---|---|---|
Jordan, Yurii, SCE, Janez | Alex, Peter | Dete | Vishal |
### Task breakdown
- [ ] https://github.com/onflow/flow-go/issues/6541
- [ ] Implement short/medium term stopgap solution
- [ ] https://github.com/onflow/flow-go/issues/6542
- [ ] https://github.com/onflow/flow-go/issues/6543
- [ ] Update system smart contracts [SCE]
- [ ] Re-work HCU mechanism on execution, verification and ANs to utilize dynamic protocol state [Leo, Janez]
- [ ] https://github.com/onflow/flow-go/issues/6788
- [ ] https://github.com/onflow/flow-go/issues/6887