ethereum-optimism / ethereum-optimism/optimism
Interop activation hardfork plan
- Dominant language
- Go
- Stars
- 6.5k
- Forks
- 4k
- Avg merge
- 2d 15h
- Merged PRs (30d)
- 145
Description
The interop hardfork will work in the following way:
- it will occur at a specific block height
- all chains will have the interop hardfork, though it will behave differently depending on the length of the dependency set as outlined below:
**For chains with a dependency set of 1 or less:**
All non-interop contracts will be upgraded by executing the interop fork nut-bundle.
**For chains with a dependency set of 2 or more:**
1. Prior to the execution of the nut bundle, a call will be made to `L1Block.setFeature("INTEROP")`.
2. The nut bundle will be execute. Due to the previous call it will also activate the [4 interop specific contracts](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts-bedrock/src/L2/L2ContractsManager.sol#L422-L429).
3. A final transaction will be executed to fund the ETH Liquidity contract with the max uint128 value.
**Motivation and Rationale**
It is considered safer not to setup these contracts on chains that do not need them.
This pattern can be referred to as All-or-Nothing (where ALL refers to which interop contracts are activated). Other designs had proposed to deploy the L2ToL2CrossDomainMessenger, ETHLiquidity, and SuperchainETHBridge to all chains, but only deploy the CrossL2Inbox to interop chains).
The design also preserves the invariant that every chain follows the same fork schedule and derivation rules.
The future mechanism for adding chains to dependency sets is important, but explicitly deferred until after interop v1 ships.
Contributor guide
Research direction
Start with the linked packages/contracts-bedrock/src/L2/L2ContractsManager.sol entry point and the L1Block.setFeature("INTEROP") call described in the issue. Determine which activation and fork-scheduling files and tests implement the stated dependency-set behavior; done means the plan is translated into a reviewed implementation with coverage for both dependency-set cases and the final ETH Liquidity funding transaction.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- solidity
- Domain
- blockchain
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100