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 totrue
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 supportsetL1BlockValuesIsthmus
.
- 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