ethereum-optimism / ethereum-optimism/optimism
op-deployer manage: `migrate` and `set-interop-dispute-games` neither broadcast nor dump calldata
- Dominant language
- Go
- Stars
- 6.5k
- Forks
- 4k
- Avg merge
- 2d 38m
- Merged PRs (30d)
- 164
Description
### Problem
Two `op-deployer manage` subcommands set up a `KeyedBroadcaster` (via `env.DefaultForkedScriptHost`) but never actually broadcast the resulting transaction, nor do they dump the calldata for a multisig/Safe to execute:
- `op-deployer manage migrate` — `op-deployer/pkg/deployer/manage/migrate.go` (broadcaster at `migrate.go:261`, `DefaultForkedScriptHost` at `migrate.go:272`)
- `op-deployer manage set-interop-dispute-games` — `op-deployer/pkg/deployer/manage/set_interop_dispute_games.go` (broadcaster at `set_interop_dispute_games.go:267`, `DefaultForkedScriptHost` at `set_interop_dispute_games.go:278`)
This is fine for the current forked-simulation/testing use, but neither command is production-ready: these operations are executed by the L1 ProxyAdmin owner (governance multisig), so the real flow needs the **calldata** emitted for signing/execution, not a discarded simulated broadcast.
### Desired outcome
Give both commands a uniform way to produce their governance transaction output — preferably dump the target-address + calldata (the delegatecall payload into OPCM) so it can be handed to a Safe/multisig. Handle both commands the same way to keep `manage` subcommands consistent.
### Context
Surfaced during review of #21518 [here](https://github.com/ethereum-optimism/optimism/pull/21518#discussion_r3586239585). Both commands intentionally mirror each other's structure (`DummyCaller` etches the governance caller in the Solidity script), so a shared approach applies to both.
### Related issues
#20447
Contributor guide
Research direction
Start with op-deployer/pkg/deployer/manage/migrate.go and set_interop_dispute_games.go, focusing on the KeyedBroadcaster and env.DefaultForkedScriptHost locations identified in the issue. Compare their mirrored DummyCaller structures and the discussion in #21518, then define a shared governance-output approach. Done means both commands consistently produce the target address and calldata for Safe or multisig execution.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go, solidity
- Domain
- blockchain
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100