Network upgrade automation transactions
The Isthmus hardfork activation block contains the following transactions, in this order:- L1 Attributes Transaction
- User deposits from L1
- Network Upgrade Transactions
- L1Block deployment
- GasPriceOracle deployment
- Operator Fee vault deployment
- Update L1Block Proxy ERC-1967 Implementation
- Update GasPriceOracle Proxy ERC-1967 Implementation
- Update Operator Fee vault Proxy ERC-1967 Implementation
- GasPriceOracle Enable Isthmus
- EIP-2935 Contract Deployment
noTxPool: true.
L1Block deployment
TheL1Block contract is upgraded to support the Isthmus operator fee feature.
A deposit transaction is derived with the following attributes:
from:0x4210000000000000000000000000000000000003to:nullmint:0value:0gasLimit:425,000data:0x60806040523480156100105...(full bytecode)sourceHash:0x3b2d0821ca2411ad5cd3595804d1213d15737188ae4cbd58aa19c821a6c211bf, computed with the “Upgrade-deposited” type, with `intent = “Isthmus: L1 Block Deployment”
0xFf256497D61dcd71a9e9Ff43967C13fdE1F72D12, to verify:
sourceHash:
data:
0x8e3fe7a416d3e5f3b7be74ddd4e7e58e516fa3f80b67c6d930e3cd7297da4a4b.
To verify the code hash:
GasPriceOracle deployment
TheGasPriceOracle contract is also upgraded to support the Isthmus operator fee feature.
A deposit transaction is derived with the following attributes:
from:0x4210000000000000000000000000000000000004to:nullmint:0value:0gasLimit:1,625,000data:0x60806040523480156100105...(full bytecode)sourceHash:0xfc70b48424763fa3fab9844253b4f8d508f91eb1f7cb11a247c9baec0afb8035, computed with the “Upgrade-deposited” type, with `intent = “Isthmus: Gas Price Oracle Deployment”
0x93e57A196454CB919193fa9946f14943cf733845, to verify:
sourceHash:
data:
0x4d195a9d7caf9fb6d4beaf80de252c626c853afd5868c4f4f8d19c9d301c2679.
To verify the code hash:
Operator fee vault deployment
A newOperatorFeeVault contract has been created to receive the operator fees. The contract is created
with the following arguments:
- Recipient address: The base fee vault
- Min withdrawal amount: 0
- Withdrawal network: L2
from:0x4210000000000000000000000000000000000005to:nullmint:0value:0gasLimit:500,000data:0x60806040523480156100105...(full bytecode)sourceHash:0x107a570d3db75e6110817eb024f09f3172657e920634111ce9875d08a16daa96, computed with the “Upgrade-deposited” type, with `intent = “Isthmus: Operator Fee Vault Deployment”
0x4fa2Be8cd41504037F1838BcE3bCC93bC68Ff537, to verify:
sourceHash:
data:
0x57dc55c9c09ca456fa728f253fe7b895d3e6aae0706104935fe87c7721001971.
To verify the code hash:
OperatorFeeVault
inherits the FeeVault contract which contains immutables. So the deployment bytecode has to be
executed on an EVM to get the actual deployed contract bytecode. But it sets all immutables to fixed
constants, so the resulting code hash is constant.
L1Block Proxy Update
This transaction updates the L1Block Proxy ERC-1967 implementation slot to point to the new L1Block deployment. A deposit transaction is derived with the following attributes:from:0x0000000000000000000000000000000000000000to:0x4200000000000000000000000000000000000015(L1Block Proxy)mint:0value:0gasLimit:50,000data:0x3659cfe6000000000000000000000000ff256497d61dcd71a9e9ff43967c13fde1f72d12sourceHash:0xebe8b5cb10ca47e0d8bda8f5355f2d66711a54ddeb0ef1d30e29418c9bf17a0ecomputed with the “Upgrade-deposited” type, with `intent = “Isthmus: L1 Block Proxy Update”
sourceHash:
GasPriceOracle Proxy Update
This transaction updates the GasPriceOracle Proxy ERC-1967 implementation slot to point to the new GasPriceOracle deployment. A deposit transaction is derived with the following attributes:from:0x0000000000000000000000000000000000000000to:0x420000000000000000000000000000000000000F(Gas Price Oracle Proxy)mint:0value:0gasLimit:50,000data:0x3659cfe600000000000000000000000093e57a196454cb919193fa9946f14943cf733845sourceHash:0xecf2d9161d26c54eda6b7bfdd9142719b1e1199a6e5641468d1bf705bc531ab0computed with the “Upgrade-deposited” type, withintent = "Isthmus: Gas Price Oracle Proxy Update"
sourceHash:
OperatorFeeVault Proxy Update
This transaction updates the GasPriceOracle Proxy ERC-1967 implementation slot to point to the new GasPriceOracle deployment. A deposit transaction is derived with the following attributes:from:0x0000000000000000000000000000000000000000to:0x420000000000000000000000000000000000001B(Operator Fee Vault Proxy)mint:0value:0gasLimit:50,000data:0x3659cfe60000000000000000000000004fa2be8cd41504037f1838bce3bcc93bc68ff537sourceHash:0xad74e1adb877ccbe176b8fa1cc559388a16e090ddbe8b512f5b37d07d887a927computed with the “Upgrade-deposited” type, withintent = "Isthmus: Operator Fee Vault Proxy Update"
sourceHash:
GasPriceOracle Enable Isthmus
This transaction informs the GasPriceOracle to start using the Isthmus gas calculation formula. A deposit transaction is derived with the following attributes:from:0xDeaDDEaDDeAdDeAdDEAdDEaddeAddEAdDEAd0001(Depositer Account)to:0x420000000000000000000000000000000000000F(Gas Price Oracle Proxy)mint:0value:0gasLimit:90,000data:0x291b0383sourceHash:0x3ddf4b1302548dd92939826e970f260ba36167f4c25f18390a5e8b194b295319, computed with the “Upgrade-deposited” type, with `intent = “Isthmus: Gas Price Oracle Set Isthmus”
sourceHash:
EIP-2935 Contract Deployment
EIP-2935 requires a contract to be deployed. To deploy this contract, a deposit transaction is created with attributes matching the EIP:from:0x3462413Af4609098e1E27A490f554f260213D685to:nullmint:0value:0gasLimit:250,000data:0x60538060095f395ff33373fffffffffffffffffffffffffffffffffffffffe14604657602036036042575f35600143038111604257611fff81430311604257611fff9006545f5260205ff35b5f5ffd5b5f35611fff60014303065500sourceHash:0xbfb734dae514c5974ddf803e54c1bc43d5cdb4a48ae27e1d9b875a5a150b553acomputed with the “Upgrade-deposited” type, with `intent = “Isthmus: EIP-2935 Contract Deployment”
0x0000F90827F1C53a10cb7A02335B175320002935, to verify:
sourceHash:
0x6e49e66782037c0555897870e29fa5e552daf4719552131a0abce779daec0a5d.
Span Batch Updates
Span batches are a span of consecutive L2 blocks than are batched submitted. Span batches contain the L1 transactions and transaction types that are posted containing the span of L2 blocks. Since EIP-7702 introduces a new transaction type, the Span Batch must be updated to support the EIP-7702 transaction. This corresponds with a new RLP-encoding of thetx_datas list as specified in
the Delta span batch spec, adding a new transaction type:
Transaction type 4 (EIP-7702 SetCode):
0x04 ++ rlp_encode(value, max_priority_fee_per_gas, max_fee_per_gas, data, access_list, authorization_list)
The EIP-7702 transaction extends EIP-1559 to include a new authorization_list field.
authorization_list is an RLP-encoded list of authorization tuples.
The EIP-7702 transaction format is as follows.
value: The transaction value as au256.max_priority_fee_per_gas: The maximum priority fee per gas allowed as au256.max_fee_per_gas: The maximum fee per gas as au256.data: The transaction data bytes.access_list: The EIP-2930 access list.authorization_list: The EIP-7702 signed authorization list.
Activation
Singular batches with transactions of type4 must only be accepted if Isthmus is active at the
timestamp of the batch. If a singular batch contains a transaction of type 4 before Isthmus is
active, this batch must be dropped. Note that if Holocene is active, this will also
lead to the remaining span batch, and channel that contained it, to get dropped.
Also note that this check must happen at the level of individual batches that are derived from span
batches, not to span batches as a whole. In particular, it is allowed for a span batch to span the
Isthmus activation timestamp and contain SetCode transactions in singular batches that have a
timestamp at or after the Isthmus activation time, even if the timestamp of the span batch is before
the Isthmus activation time.