-
Notifications
You must be signed in to change notification settings - Fork 825
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
feat(exex): OP Proposer ExEx #8206
base: main
Are you sure you want to change the base?
Conversation
…h into 0xkitsune/op-proposer-exex
Initial exex logic
0x osiris/sol types
feat: l2 output proposals
feat: l2 safe head
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this is great, only have a few suggestions and nits
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
* update async logic * comments
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I've pushed a few dep changes
I'd like to see a few more docs and debug impls for the structs like OpProposer and txManager
// Spawn the OpProposer and TxManager, proposing L2 outputs to L1 | ||
let op_proposer_fut = async move { | ||
tokio::select! { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this does not spawn but runs the jobs concurrently
maybe those should be actually spawned?
) -> eyre::Result<()> { | ||
let l2_provider = ctx.provider().clone(); | ||
let rollup_provider = Arc::new(ProviderBuilder::new().with_recommended_fillers().on_http( | ||
self.rollup_provider.parse().expect("Could not parse rollup provider endpoint"), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this should return an error
No problem I can update this later today! I am also planning to update the PR to be compatible with the upcoming fault proof updates. |
This PR implements the OP Proposer inside an ExEx, addressing #8174 . We are opening this draft for initial feedback.
Within the core logic, upon each
ExecutionNotification
the nextBlockNumber is fetched from theL2OutputOracle
and compared against the current L2 block. If thetarget_block
is equal to the current block, theL2Output
is constructed and submitted to L1. Since Reth does not currently deliver historical storage proofs, we store theL2Output
in persistent storage.If the current L2 block is within the safe head, then we submit the latest
L2Output
transaction, otherwise we wait to submit until the latest L2 block is safe.