ethereum-optimism / optimism

Optimism is Ethereum, scaled.
https://optimism.io
MIT License
5.22k stars 2.99k forks source link

Interop: handle deposit-tx invalid executing message (post-3074) #10870

Open protolambda opened 1 month ago

protolambda commented 1 month ago

With the changes for 3074 executing messages are now log-events. This prevents us from filtering the deposit-txs upfront during derivation, and instead the execution-engine has to filter/handle the transactions.

Deposit-txs may only consume initiating messages that are older than the sequencer-window, to guarantee the inclusion of the initiating message side synchronously (sequencer cannot censor deposit txs).

With a filtering approach of deposits, the message-consolidation will also mismatch. Instead we may want to change the deposit-tx to "failed" status, to revert the changes but retain the tx, such that block-consolidation can stay the same. And no assumptions around L1 bridge to L2 deposit-tx lookups will break.

protolambda commented 1 month ago

If we change the deposit-tx failure state based on interop, then we also have to be able to replicate this during tx-tracing and block re-processing (reorgs, historical state queries on full nodes, etc.)

tynes commented 1 month ago

A solution for this is proposed in https://github.com/ethereum-optimism/design-docs/pull/13 but it needs to be improved to remove the requirement of requiring an archive node for historical sync. This is definitely possible, more thought needs to be put into it.

The scope of allowing executing messages to be triggered from deposits is cut from the scope of the devnet. The devnet will simply ban deposits that trigger executing messages for simplicity

tynes commented 1 month ago

Moving this to the testnet milestone as now we have a smaller scope devnet solution