ethereum-optimism / ethereum-optimism/optimism
dispute-games: retire non-super-root dispute games
- 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
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