reth icon indicating copy to clipboard operation
reth copied to clipboard

Feat: ExEx op-proposer

Open 0xKitsune opened this issue 9 months ago • 1 comments

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 avatar May 09 '24 04:05 0xKitsune

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.

0xOsiris avatar May 09 '24 18:05 0xOsiris

This issue is stale because it has been open for 21 days with no activity.

github-actions[bot] avatar May 31 '24 01:05 github-actions[bot]

This issue is stale because it has been open for 21 days with no activity.

github-actions[bot] avatar Jul 07 '24 01:07 github-actions[bot]

This issue was closed because it has been inactive for 7 days since being marked as stale.

github-actions[bot] avatar Jul 14 '24 01:07 github-actions[bot]