ethereum-optimism / ethereum-optimism/optimism

dispute-games: retire non-super-root dispute games

Open
#22,571 0 comments 0 reactions 0 assignees View on GitHub
M-needs-triage
Dominant language
Go
Stars
6.5k
Forks
4k
Avg merge
2d 38m
Merged PRs (30d)
164

Description

## Context

Super-root games are the default for new deployments. This issue retires the output-root games as it stops offering it to new chains once U20 ships and has been widely used. Chains already running legacy games keep working.

U19 disabled the legacy `CANNON` slot on initial deploy, `SUPER_ROOT_GAMES_MIGRATION` is the default already in develop, and `OPContractsManagerV2` already rejects an enabled legacy game config. What remains is the scaffolding that still treats an output-root game as a valid choice for a new chain.

## Scope

Game types in scope: `CANNON`, `PERMISSIONED_CANNON`, `CANNON_KONA`. `op-challenger`, `op-dispute-mon`, `op-proposer` and `OptimismPortal2` keep every legacy read and play path, so live chains and withdrawals keep working.

The OPCM dispute-game-config array keeps its 6 entries in their fixed order, with legacy entries present and disabled.

### contracts-bedrock

- [ ] `DeployOPChain.s.sol`: hard-disable the remaining legacy slots, the way the `CANNON` slot already is.
- [ ] `Deploy.s.sol`: collapse the legacy deploy input path into the super-root one.
- [ ] `DeployConfig.s.sol`: Fix the default used as an unset `respectedGameType` means `CANNON`.
- [ ] `ForkL1Live.s.sol`: update the legacy branch of the fork fixture.

### op-deployer

- [ ] `opchain`: retire `ValidateInitialGameTypeSet`, which exists only to reject a `CANNON_KONA` / `SUPER_CANNON_KONA` mix , along with the legacy branches of `ResolveInitialDeployRequirements`.
- [ ] Make super anchors unconditional in the `output_root` stage, dropping `setOutputRootAnchors`. Every new deployment then carries a dependency set and a shared genesis timestamp, single-chain included.
- [ ] Drop `ReadSuperRootEnabled` and the hardcoded flag in `op-core/devfeatures`.

### Services

- [ ] `op-challenger`: flip the `--game-types` and `create_game` defaults to super-root.

### Test harnesses

- [ ] Flip which entries of the 6-slot arrays are enabled in `op-devstack`, `op-e2e` and the op-deployer fixtures, and move the proposer and challenger defaults to super-root.
- [ ] Restore the two `continue_verify` cases that the forced-on dev flag makes unconstructible.

## Related issues

- **#21662** retires the `SUPER_ROOT_GAMES_MIGRATION` dev flag, there is some overlap with this issue.
- **#19816** removes the legacy `rootClaim()` path in `OptimismPortal2`.
- **#21529**
- **#21861**

Contributor guide

Open the contributing guide

Research direction

Start with the listed contracts-bedrock scripts, then follow the op-deployer output_root stage and the op-challenger defaults. Review the related fixtures in op-devstack, op-e2e, and op-deployer, including the continue_verify cases. Done means new deployments use super-root defaults while legacy read and play paths remain available and the affected harnesses pass.

Written by the indexing model from the issue text.

Assessment

Tech stack
go, solidity
Domain
backend, blockchain, testing
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.