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

Feat: ExEx op-proposer #8174

Open
0xKitsune opened this issue May 9, 2024 · 1 comment
Open

Feat: ExEx op-proposer #8174

0xKitsune opened this issue May 9, 2024 · 1 comment
Labels
A-exex Execution Extensions C-enhancement New feature or request

Comments

@0xKitsune
Copy link
Contributor

0xKitsune commented May 9, 2024

Describe the feature

The eth_getProof endpoint currently lacks support for storage proofs at historical blocks. The op-proposer must retrieve proofs from historical blocks for the L2ToL1MessagePasser account in order to submit WithdrawalProofs and facilitate withdrawals from L2 -> L1 for the OP stack.

Instead of unwinding the state to the specified block and calculating the storage proof, we can implement the op-proposer logic as an ExEx, getting a storage proof every n blocks or at some specified interval. The ExEx would then create a transaction that would post the proof to the L2OutputOracle on L1.

We can get started working on this now.

Additional context

No response

@0xKitsune 0xKitsune added C-enhancement New feature or request S-needs-triage This issue needs to be labelled labels May 9, 2024
@DaniPopes DaniPopes added A-exex Execution Extensions and removed S-needs-triage This issue needs to be labelled labels May 9, 2024
@0xOsiris
Copy link

0xOsiris commented May 9, 2024

We are thinking through an approach and our current design for the ExEx to act as the proposer & submit withdrawal proofs every SUBMISSION_INTERVAL specified via the config. In the event that a transaction is not included on L1 due to congestion, out of funds, etc. and a proof is needed from a historical block we are thinking that the proofs could be stored in some persistent storage (Postgres db for example).

There still exists a risk where reading/writing to the db could fail. Since withdraws depend on proofs being submitted, it might be valuable to have a fallback for edge cases where the historical proof is recomputed in memory by unwinding the db. We could also rely on an fallback endpoint that could fetch the historical proof (geth client for example).

Ideally there is a mechanism that can guarantee that historical proofs are able to be fetched in edge cases resulting from transaction failure. Let me know if you have any thoughts on this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-exex Execution Extensions C-enhancement New feature or request
Projects
Status: Todo
Development

No branches or pull requests

3 participants