See FP PR: https://github.com/ethereum-optimism/specs/pull/31
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.
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)
Computing output-root of single-chain. Executed messages may not miss actual initiating messages.