Skip to content

[Protocol Versioning Epic] Version Execution Stack via Dynamic Protocol State #6999

Open
5 of 13 issues completed
Open

Description

@AlexHentschel

DACI

Role Assigned
Driver Technical: @fxamacker , EM: @j1010001
Approver @AlexHentschel
Consulted @vishalchangrani, @jordanschalm, @janezpodhostnik
Informed Flow Protocol engineering

This is an epic for bundling all tasks related to version the Execution Stack via Dynamic Protocol State.

Motivation and importance of this work

The Dynamic Protocol State includes a framework that has been developed based on the learnings of the existing HCU mechanism. It provides us with the ability to perform general purpose upgrades of the the flow protocol and is much more generally applicable and robust compared to the initial HCU mechanism (only applicable for upgrading the Execution Stack).

  • We are starting to use the Dynamic Protocol State for coordinating upgrades of other parts of the protocol.
    We want to utilize the same framework as for execution stack upgrades, to reduce code and intellectual complexity that would
    otherwise result from using significantly different approaches.
  • Midterm goal: upgrades of the execution stack are by far the most frequent. By utilizing the Dynamic Protocol State for those upgrades, we want to generate learnings on where the new framework should be improved. Specifically, we want to avoid extending the old HCU mechanism in a way that is incompatible with the Dynamic Protocol State and needing to be rewritten later.
  • Longer-term goal: Access Nodes [ANs] can decide on whose blocks’ execution states they can run scripts for across different version of the execution stack.

For more details on the advantages of the new Protocol-State-mediated upgrade framework, please see FLIP 296.

High-level breakdown of work

Milestone 1:

Milestone 2:
Once the previous issue #7000 is done, we can store the Execution Stack Version (and other protocol parameters controlling the execution) in the Dynamic protocol state. Now we need to add functionality for updating these parameters in the Protocol State:

Milestone 3:

In this milestone, we will focus on the Governance Transactions and Governance Smart Contracts. The system smart contracts will need to be updated and extended with the functionality to emit Service Events, which direct the Protocol state to update the Execution Stack parameters.

Milestone 4:

In a nutshell, this milestone is for changing the Execution Node to listen to the new triggers from the Protocol State, directing it to stop execution when it reaches the threshold view for the new behaviour.

End-to-End Testing Deployment:
Ideally both, but at least one of the following:

Deployment:

Visualization of resulting versioning flow (implementation milestones highlighted)

Image

Low-hanging fruit to help with sporks

Add an HCU-style stopping logic for the ENs, so they don't execute past a governance-specified view threshold. This is helpful for progressively shutting down the network in preparation of a spork.

Further Reading

Activity

  1. self-assigned this
    on Feb 7, 2025
  2. changed the title [-]Version Execution Stack via Dynamic Protocol State[/-] [+][Protocol Versioning Epic] Version Execution Stack via Dynamic Protocol State[/+] on Mar 10, 2025
  3. added
    PreserveStale Bot repellent
    and removed
    StaleLabel used when marking an issue stale.
    on Sep 17, 2025
  4. deleted a comment from github-actions on Oct 1, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

EpicExecutionCadence Execution TeamPreserveStale Bot repellentProtocolTeam: Issues assigned to the Protocol Pillar.

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions