Interop Network Upgrade

Table of Contents

The interop network upgrade timestamp defines the timestamp at which all functionality in this document is considered the consensus rules for an OP Stack based network. On the interop network upgrade block, a set of deposit transaction based upgrade transactions are deterministically generated by the derivation pipeline in the following order:

  • L1 Attributes Transaction calling setL1BlockValuesEcotone
  • User deposits from L1
  • Network Upgrade Transactions
    • L1Block deployment
    • CrossL2Inbox deployment
    • L2ToL2CrossDomainMessenger deployment
    • OptimismSuperchainERC20Factory deployment
    • BeaconContract deployment
    • Update L1Block Proxy ERC-1967 Implementation Slot
    • Update CrossL2Inbox Proxy ERC-1967 Implementation Slot
    • Update L2ToL2CrossDomainMessenger Proxy ERC-1967 Implementation Slot
    • Update the L2StandardBridge
    • Update the OptimismMintableERC20Factory

The execution payload MUST set noTxPool to true for this block.

The exact definitions for these upgrade transactions are still to be defined.

L1 Attributes

On the Interop activation block, and if Interop is not activated at Genesis, the L1 Attributes Transaction includes a call to setL1BlockValuesEcotone.

Every subsequent L1 Attributes transaction should include a call to the new setL1BlockValuesIsthmus function. The input args and encoding of setL1BlockValuesIsthmus are identical to setL1BlockValuesEcotone.

L1 Attributes Predeployed Contract

The L1 Attributes predeploy adds a new storage state in addition to the existing ones contained in the pre-Interop L1 Attributes predeploy:

  • isDeposit (bool) - Set to true iff the current execution occurs in a deposit context.

setL1BlockValuesIsthmus extends the behavior of setL1BlockValuesEcotone by additionally setting the isDeposit state storage to true.

Interop L1Block upgrade

The L1 Attributes Predeployed contract, L1Block.sol, is upgraded as part of the Interop upgrade. The version is incremented to 1.3.0 to contain the new isDeposit storage slot.

The function called by the L1 attributes transaction depends on the network upgrade:

  • Before the Interop activation:
    • setL1BlockValuesEcotone is called, following the pre-Interop L1 attributes rules.
  • At the Interop activation block:
    • setL1BlockValuesEcotone function MUST be called, except if activated at genesis. The contract is upgraded later in this block, to support setL1BlockValuesIsthmus.
  • After the Interop activation:
    • setL1BlockValuesEcotone function is deprecated and MUST never be called.
    • setL1BlockValuesIsthmus MUST be called.

The setL1BlockValuesIsthmus input parameters are identical to setL1BlockValuesEcotone as described in L1 Attributes Deposited Transaction Calldata.

Security Considerations

TODO