ethereum-optimism / ethereum-optimism/optimism

Interop activation hardfork plan

Open
#20,402 0 comments 1 reaction 0 assignees View on GitHub
H-interop
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.