Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

interop: Supervisor Derivation Control #13322

Open
axelKingsley opened this issue Dec 9, 2024 · 2 comments
Open

interop: Supervisor Derivation Control #13322

axelKingsley opened this issue Dec 9, 2024 · 2 comments
Assignees
Labels
A-op-supervisor Area: op-supervisor H-interop Hardfork: change planned for interop upgrade

Comments

@axelKingsley
Copy link
Contributor

axelKingsley commented Dec 9, 2024

From this document: https://github.com/ethereum-optimism/design-docs/pull/171/files

Decomposed into: https://www.notion.so/oplabs/tasks-to-make-150f153ee162809e981ac7d30c0bfae2?showMoveTo=true&saveParent=true

What

The Supervisor should tell the "sync nodes" when to take on new L1 data, and when to process derivation. The Supervisor should also be positioned to tell the sync nodes to reset to a specific point.

The two parents of this feature request are tracked here:

Now, we need to join these two sides of work by using the L1 data we are sourcing to control the sync nodes.

Why

In service of having the Supervisor control its own internal consistency by using "Sync Nodes" as controlled derivation pipelines, the Supervisor should leverage new functionalities to drive the sync nodes derivation processes.

How

  • Add a new resource to the Supervisor representing the sync nodes and attach it to the backend, or expand an existing resource (like chain processors) to become representations of sync-nodes.
  • Have the L1 Processor trigger a process or otherwise direct the sync nodes to synchronize against a new L1
    • The L1 head should be passed down as part of a TryDeriveNext call (new API for Sync Nodes)
    • The TryDeriveNext return should be whatever new L2 block is derived, if any
    • If the derivation yielded an L2 block, repeat derivation again with the same L1
    • As new L2s come back, record them in the derivation databases

Also to implement:

  • Reset (prestate): directs the Sync Node to reset back to a specified prestate, which skips all the L1 traversal work the node does today.
  • NewSafetyLevels: which just directly informs the Sync Nodes of the latest safety levels, to be propagated through its derivers system.

If implementing these APIs are helpful to the core task of driving derivation, then they should be included. But if the scope of this task is large enough just with TryDeriveNext, these other APIs can be split out into parallel work.

@protolambda
Copy link
Contributor

FYI, I opened an issue to track the op-node side of this: #13336
This GH issue can then focus on the op-supervisor part of the managed-mode syncing.

@axelKingsley
Copy link
Contributor Author

#13344

Here's the start of the Node Controller code

@protolambda protolambda moved this from TO-DO to In progress in Interoperability Dec 16, 2024
@protolambda protolambda added A-interop A-op-supervisor Area: op-supervisor labels Dec 16, 2024
@emhane emhane added H-interop Hardfork: change planned for interop upgrade and removed A-interop labels Jan 15, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-op-supervisor Area: op-supervisor H-interop Hardfork: change planned for interop upgrade
Projects
Status: In progress
Development

No branches or pull requests

3 participants