-
Unverified contracts:
- Contracts whose source code has not been verified on Etherscan (Kovan, Optimistic Ethereum) will be wiped out along with their storage.
-
Contracts whose source code has been verified will be recompiled with the standard Solidity compiler. As a result of this:
- The
EXTCODEHASH
andCODESIZE
of every contract will change. - The address generated by
CREATE2
may be different (it depends on Any hardcoded values will break. the constructor code). - Code size will no longer be increased during compilation. Any custom OVM work that required reducing code size could now be reverted.
- Uniswap:
- pools will be moved to their L1-equivalent addresses corresponding to
CREATE2
with the new bytecode. - ERC20 tokens will be migrated to their new CREATE2'ed addresses.
- pools will be moved to their L1-equivalent addresses corresponding to
- The
-
ETH will no longer be ERC20 compatible.
- If you need wrapped ETH we deployed a standard
WETH9 contract
at
0x4200000000000000000000000000000000000006
. - To withdraw ETH you call the
withdraw
function ofL2StandardBridge
with an L2 token address of0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000
.
- If you need wrapped ETH we deployed a standard
WETH9 contract
at
-
EOAs will no longer be contract wallets
- make no assumptions around EOAs having code or additional OVM-specific functionality.
-
Gas usage
- will decrease to be the same as on L1 Ethereum.
-
Certain opcodes will have updated functionality:
-
NUMBER
-block.number
in L2 will now correspond to the L2 block number, not “Last finalized L1 block number” like it used to. Any project urrently usingblock.number
must check that this will not break their mplementation. The L1 Block number will be made accessible via a new predeployed ontract. -
COINBASE
is set by the sequencer. For the near-term future, it will return theOVM_SequencerFeeVault
address (currently 0x4200000000000000000000000000000000000011`) -
DIFFICULTY
will return 0 -
BLOCKHASH
will return the L2 block hash. Note that this value can be manipulated by the sequencer and is not a safe source of randomness. -
SELFDESTRUCT
will now work just as it currently works in the EVM. -
GASPRICE
will now return the l2GasPrice -
BASEFEE
will be unsupported - execution will revert if it is used. -
ORIGIN
will be supported normally. - (
TIMESTAMP
will function the same as before)
-
-
OVM System contracts
- Do not depend on OVM system contracts. We will remove:
OVM_ExecutionManager
OVM_SequencerEntrypoint
OVM_StateManager
OVM_StateManagerFactory
OVM_SafetyChecker
OVM_ECDSAContractAccount
OVM_ExecutionManagerWrapper
Lib_AddressManager
- (All other OVM predeploys will remain at the same addresses as before the regenesis)
- Do not depend on OVM system contracts. We will remove:
-
History
- all historical transactions and logs will be inaccessible from the new chain, and the new chain will start from Block #0. The old chain data will not be accessible except under extreme circumstances. Applications like Dune Analytics, Tenderly, Etherscan, and the Graph will not support access to transactions or logs from before the regenesis.
- Until OVM 2.0 is officially released, the OVM 2.0 packages are tagged as
canary
, here is an examplepackage.json
file. - Contract names no longer start with
OVM_
and their directory location changed. - Because we no longer have an address manager on L2, the way to get the address of
L1CrossDomainMessenger
is to start from theL2CrossDomainMessenger
contract: - There is no longer an
artifacts-ovm
directory. The OVM 2.0 artifacts are the same as the artifacts you use for L1.