Documentation Index
Fetch the complete documentation index at: https://docs.optimism.io/llms.txt
Use this file to discover all available pages before exploring further.
OP Stack interop is in active development. Some features may be experimental.
Block safety levels
In the diagram above, solid arrows show derivation of a block from the previous block in the chain. Dotted arrows go from a block with an initiating message (source) to a block with the matching executing message (destination). Throughout this page, blocks are colored by safety level: finalized (grey), safe (green), or unsafe (red). Blockchain A has only published block A100 to L1. Block A101 is still unsafe, and so is every block that depends on it — directly (A102 and B302) or indirectly (A103 and B303). Even if blocks B302 and B303 have themselves been written to L1, they cannot become safe until A101 does, because a block is only treated as safe once every initiating message it references is also at least safe. When A101 eventually lands on L1, the chain of dependent blocks can promote in turn. The message between A101 and B302 can be an asset moving across the bridge. In that case, the initiating message (A101) burnsn tokens on the source chain (A), and the executing message (B302) mints n tokens on the destination chain (B).
How the dependency check is enforced
The dependency rule above — a block is only safe once every initiating message it references is also safe — is enforced by op-supernode, the component that hosts the consensus layer of every chain in a dependency set together. For each L2 timestamp, op-supernode’s interop activity decides between wait, advance, invalidate, and rewind. The decision is persisted to a write-ahead log before being applied, so the supernode picks up after a restart in the same state it was in before. Each chain’s CL stays the single source of truth for safety on its own chain. The supernode influences advancement through interfaces the chain itself controls, never by reaching into the CL or the execution layer. The rest of this page describes the situations that drive each decision.L1 reorg
L1 reorgs typically happen at the unsafe head — only the most recent L1 blocks, before they have enough confirmations to be considered safe. Each chain’s CL already filters L1 derivation through L1 safe and finalized labels, so almost all L1 reorgs never reach the L2 derivation pipeline at all. When an L1 reorg does affect L2, one of two things happens:- The replacement L1 block carries the same batch data as the original. Derivation is deterministic, so the L2 chain it produces is identical, and the reorg is a no-op from the L2 perspective.
- The replacement L1 block does not carry that batch data. The sequencer notices and reposts the affected batch in a later L1 block. As long as the batch lands again before the sequencer window elapses (3600 L1 blocks ≈ 12 hours on standard chains like OP Mainnet and Unichain), derivation reproduces the same L2 chain. If the window does elapse without the batch reappearing, the affected L2 blocks are replaced with deposit-only blocks (see Invalid block below).
Equivocation
Sequencers inform the rest of the OP Stack chains about a new block in two ways:- The gossip protocol, which is typically used as soon as the block is created. The problem is that the gossip protocol does not create a commitment.
- Posting to L1, which typically happens a few minutes after the block is created. The reason is cost; it is much cheaper if compression and L1 posting are done in large batches rather than for each individual block.
'-marked blocks, which derive from A’101. Anything previously labeled safe or finalized is untouched.
Invalid block
A block can also be canonically invalidated outright. If verifiers determine that an L2 block cannot be reproduced from L1 — for example because the batch claims an initiating message that does not exist on the source chain — the canonical chain replaces it with a deposit-only block: a block that contains only the deposit transactions forced through L1, with all sequencer transactions stripped out. For interop-specific failures like that example, op-supernode is the verifier that makes the call. Functionally this is equivalent to equivocation, and the dependency rules above handle it the same way: only unsafe blocks (and any chain of blocks depending on them transitively) are reshaped, and any block that had already reached the safe label is untouched.Next steps
- Read the interop explainer for the rest of the architecture.
- Read about op-supernode, the component that derives every chain in the dependency set together and enforces the safety levels described above.
- Read the cross-chain security measures for safe interoperability.
- View more interop guides and tutorials.