-
Notifications
You must be signed in to change notification settings - Fork 2.3k
Description
Finality verification is done using (simplified) eth_getBlockByNumber(<block_hash>, "finalized") – i.e. validators check w/ the RPC node node whether <block_hash> is finalized. The definition of finalized changes depending on what the EVM node is. We're planning on deploying a bridge w/ Base and for base finalized means finalized by the sequencer. This is not as strong as finalization of an L1 batch (ethereum) in which the L2 block was checkpointed.
Consider alternative, stronger, definitions:
Option A — add delay window
Require blocks to be older than N blocks:
block_number <= finalized_number - 20
This reduces risk from short sequencer reorgs.
Option C — verify L1 settlement (strongest)
Track the L2 output root posted to Ethereum and verify the block belongs to a finalized output.
This is how canonical OP bridges work, but it is much more complex.