feat: Add support for Interop Migration using OPCM v2#18738
Merged
smartcontracts merged 12 commits intoethereum-optimism:developfrom Jan 23, 2026
Merged
Conversation
* feat: support interop migration in OPCMv2 * fix: merge conflicts * fix: proper interface usage * feat: update VerifyOPCM for migrator * chore: lint * fix: pr tweaks * fix: update go side * fix: simplify game data decoding logic * test: add test for invalid starting game type * fix: pr review * feat: add interop migration support for op-deployer * feat: add opcm v2 input for interop migration * feat: refactor interop migration to use ABI encoding and semver detection Replace JSON marshaling with proper ABI encoding using w3 library for migrate inputs. Change OPCM version detection from isDevFeatureEnabled to semantic version comparison. Restructure MigrateInputV1 to use nested GameParameters and Proposal structs. Update DisputeGameConfig.GameArgs from Hash to bytes for correct ABI encoding. Add isVersionAtLeast helper for version comparison (OPCM v2 starts at 7.0.0). Update tests and contracts to use version() method instead of feature flags. * docs: add description comments to migrate.go * feat: add opcmv2 migrate support to WithSuperRoots * fix: game parameters uint64 types * refactor: move IsVersionAtLeast helper to utils and add tests * fix: uint64 to big int conversion in EncodedMigrateInputV1 * test: interop migration v2 * test: interop migration v2 (not working) * test: updates migration test to migrate to OptimismPortalInterop * fix: test comments * test: add migrate input v1 encoding test * test: add interop migration v1 test * test: merge TestInteropMigration v1 and v2 tests --------- Co-authored-by: Flux <175354924+0xiamflux@users.noreply.github.com> * refactor: separate migrate from migrate-v2 cli command --------- Co-authored-by: Kelvin Fichter <kelvinfichter@gmail.com> Co-authored-by: niha <205694301+0xniha@users.noreply.github.com>
0xniha
reviewed
Jan 12, 2026
0xniha
reviewed
Jan 12, 2026
packages/contracts-bedrock/scripts/deploy/InteropMigration.s.sol
Outdated
Show resolved
Hide resolved
* feat: add migrate cli command tests * poc: e2e cli migrate tests * fix: replace stdout with app writer * refactor: replace default value for StartingRespectedGameTypeFlag * fix: migrate cli v1 and v2 e2e tests --------- Co-authored-by: niha <205694301+0xniha@users.noreply.github.com>
Contributor
|
/ci authorize 873b6e8 |
* fix: remove address 0 condition to use opcmv2 & refactor useOPCMV2 internal variable in InteropMigration script * test: add interop migration run revert cases * fix: restore migrate cli flag order * fix: migrateInput V2 json field
Contributor
|
/ci authorize 2f43806 |
* chore: remove unused imports * chore: fix tests naming
Contributor
|
/ci authorize 44dd749 |
Conflicts: - packages/contracts-bedrock/scripts/deploy/InteropMigration.s.sol
chore: opcm2 sync
Contributor
|
/ci authorize b59accd |
* test: fix struct property names * fix: use correct exported function name * chore: removes unused import
Contributor
|
/ci authorize 374f5bc |
maurelian
approved these changes
Jan 16, 2026
* chore: remove unused flags * chore: close rpc client in migrate * chore: add sanity check when encoding migrate input * refactor: reutilizes isVersionAtLeast to check if using OPCM v2 * refactor: unify migrate v1 and v2 flows in the same CLI * refactor: check for common required flags, reduce repeated code between migrate v1 and v2 paths * chore: rename Migrate exclusive vars to indicate they are supposed to be used during migration only * chore: remove unused OPChainProxyAdminFlag flag * chore: close underlying client in migrate path * chore: add overflow uint check * chore: rename variable deployer to deployerAddr * chore: add overflow check for starting respected game type in migrate flow * fix: encode gameArgs as abi encoded bytes32 * chore: rename starting Respected game type related vars on migrate flow * chore: remove repeated required flags tests
Contributor
|
/ci authorize 665215e |
smartcontracts
approved these changes
Jan 23, 2026
github-merge-queue bot
pushed a commit
that referenced
this pull request
Jan 23, 2026
* feat: opcm2 interop migrate (#796) * feat: support interop migration in OPCMv2 * fix: merge conflicts * fix: proper interface usage * feat: update VerifyOPCM for migrator * chore: lint * fix: pr tweaks * fix: update go side * fix: simplify game data decoding logic * test: add test for invalid starting game type * fix: pr review * feat: add interop migration support for op-deployer * feat: add opcm v2 input for interop migration * feat: refactor interop migration to use ABI encoding and semver detection Replace JSON marshaling with proper ABI encoding using w3 library for migrate inputs. Change OPCM version detection from isDevFeatureEnabled to semantic version comparison. Restructure MigrateInputV1 to use nested GameParameters and Proposal structs. Update DisputeGameConfig.GameArgs from Hash to bytes for correct ABI encoding. Add isVersionAtLeast helper for version comparison (OPCM v2 starts at 7.0.0). Update tests and contracts to use version() method instead of feature flags. * docs: add description comments to migrate.go * feat: add opcmv2 migrate support to WithSuperRoots * fix: game parameters uint64 types * refactor: move IsVersionAtLeast helper to utils and add tests * fix: uint64 to big int conversion in EncodedMigrateInputV1 * test: interop migration v2 * test: interop migration v2 (not working) * test: updates migration test to migrate to OptimismPortalInterop * fix: test comments * test: add migrate input v1 encoding test * test: add interop migration v1 test * test: merge TestInteropMigration v1 and v2 tests --------- Co-authored-by: Flux <175354924+0xiamflux@users.noreply.github.com> * refactor: separate migrate from migrate-v2 cli command --------- Co-authored-by: Kelvin Fichter <kelvinfichter@gmail.com> Co-authored-by: niha <205694301+0xniha@users.noreply.github.com> * test: opcm2 migrate cli test (#798) * feat: add migrate cli command tests * poc: e2e cli migrate tests * fix: replace stdout with app writer * refactor: replace default value for StartingRespectedGameTypeFlag * fix: migrate cli v1 and v2 e2e tests --------- Co-authored-by: niha <205694301+0xniha@users.noreply.github.com> * fix: interop migration fixes * fix: remove address 0 condition to use opcmv2 & refactor useOPCMV2 internal variable in InteropMigration script * test: add interop migration run revert cases * fix: restore migrate cli flag order * fix: migrateInput V2 json field * chore: opcm2 pr (#799) * chore: remove unused imports * chore: fix tests naming * fix: add uint32 input range validation in migrate v2 * fix: opcm2 misc (#802) * test: fix struct property names * fix: use correct exported function name * chore: removes unused import * fix: opcm2 review comments (#808) * chore: remove unused flags * chore: close rpc client in migrate * chore: add sanity check when encoding migrate input * refactor: reutilizes isVersionAtLeast to check if using OPCM v2 * refactor: unify migrate v1 and v2 flows in the same CLI * refactor: check for common required flags, reduce repeated code between migrate v1 and v2 paths * chore: rename Migrate exclusive vars to indicate they are supposed to be used during migration only * chore: remove unused OPChainProxyAdminFlag flag * chore: close underlying client in migrate path * chore: add overflow uint check * chore: rename variable deployer to deployerAddr * chore: add overflow check for starting respected game type in migrate flow * fix: encode gameArgs as abi encoded bytes32 * chore: rename starting Respected game type related vars on migrate flow * chore: remove repeated required flags tests --------- Co-authored-by: Kelvin Fichter <kelvinfichter@gmail.com> Co-authored-by: niha <205694301+0xniha@users.noreply.github.com> Co-authored-by: 0xOneTony <112496816+0xOneTony@users.noreply.github.com>
…ore/opcm2-sync-migrate
chore: opcm2 sync migrate
Contributor
|
/ci authorize 5d0c754 |
Contributor
|
/ci authorize 71c252e |
Merged
via the queue into
ethereum-optimism:develop
with commit Jan 23, 2026
15e3bc3
259 of 262 checks passed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Add Interop Migration Support for OPCM v2
Implements Interop Migration functionality to work with OP Contracts Manager v2.
Changes
version() >= 7.0.0) instead of feature flagsMigrateInputV1with nestedGameParametersandProposalstructsDisputeGameConfig.GameArgsfromHashtobytesfor correct ABI encodingmigrateandmigrate-v2into separate commandsTesting