DEPRECATED

See FP PR: https://github.com/ethereum-optimism/specs/pull/31

SuperRoot

When claiming state on L1, a user aggregates the output-roots of individual L2 superchain state, aligned to a global timestamp.

Timestamp alignment here means the latest L2 block per chain is pulled in, such that block.timestamp <= timestamp, and the next L2 block is past timestamp.

This is the proposal commitment to L1, from which other L2 activity can be proven.

Or, in a future where we fault-proof individual withdrawal messages, the proof towards one of those messages can be a post-processing inclusion-proof, extending a common part that proves all of the superchain.

Output root type 1

We adapt the output-root that commits to the state of an individual L2 like in Type 0, but now extend it with a messages_root, which commits to accumulators of the initiating messages and executing messages.

payload = state_root || withdrawal_storage_root || latest_block_hash || messages_root
version_byte = bytes32(1)  # name is spec legacy, it is 32 bytes long
output_root = keccak256(version_byte || payload)

Pending states

Computing output-root of single-chain. Executed messages may not miss actual initiating messages.

SuperRoot confirmation

  1. Iterate transaction lists of each L2 block:
  2. For each statically declared executing message, verify that the initiating message exists in the pending state or prior state history.

Bisection