feat: shared dispute game migration for interop#19840
Merged
stevennevins merged 41 commits intodevelopfrom Apr 8, 2026
Merged
Conversation
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## develop #19840 +/- ##
==========================================
+ Coverage 74.8% 77.9% +3.0%
==========================================
Files 194 139 -55
Lines 10852 6843 -4009
==========================================
- Hits 8120 5331 -2789
+ Misses 2588 1512 -1076
+ Partials 144 0 -144
Flags with carried forward coverage won't be shown. Click here to find out more.
🚀 New features to boost your workflow:
|
6f4c1bd to
10808b1
Compare
0bb90ac to
025ffda
Compare
digorithm
reviewed
Apr 6, 2026
wwared
approved these changes
Apr 6, 2026
Contributor
wwared
left a comment
There was a problem hiding this comment.
Looks good to me, I'm approving but better to wait for more approvals from others since this touches a lot of surface area
CI seems to be failing due to semver-lock.json changing for src/L1/OptimismPortal2.sol but the version not being updated
digorithm
reviewed
Apr 6, 2026
7 tasks
e0c0886 to
b041770
Compare
…lInterop when OPCM_V2 and Interop feature flags enabled
…e portal migration functions
Update _isUsingInterop() to require both INTEROP and ETH_LOCKBOX features, preventing migrate* functions from executing if lockbox is misconfigured at runtime. Bump OptimismPortal2 5.5.0 -> 5.6.0 Bump OptimismPortalInterop 5.4.1+interop -> 5.5.1+interop
b041770 to
a228e67
Compare
maurelian
approved these changes
Apr 8, 2026
maurelian
approved these changes
Apr 8, 2026
Contributor
maurelian
left a comment
There was a problem hiding this comment.
I reviewed this with @stevennevins on a call. It LGTM.
InoMurko
pushed a commit
to ConstellationCrypto/optimism
that referenced
this pull request
Apr 12, 2026
) * feat: integrate SysFeature for Interop * feat: add interop migration functions and eth lockbox to portal2 * chore: rename function to migrateToSharedDisputeGame * chore: bump snapshots * fix: use Portal2 in OPCM migrator * fix: semver bumps from interface change * fix: only overwrite the lock box when passing non-zero value * chore: update comments to refer to OptimismPortal2 instead of OptimismPortalInterop * fix: mismatched names * fix: enable INTEROP feature flag in v1 OPCM deploy path * fix: remove casting to OptimismPortalInterop * chore: remove OptimismPortalInterop dead code * chore: update comment to remove OptimismPortalInterop * chore: remove OptimismPortalInterop specific tests since we now test OptimismPortal2 via the feature flag * fix: restore superRootsActive flag in super-roots withdrawal proof tests * fix: test name camelCase * chore: remove OptimismPortalInterop from Initializable tests and remove interface from OPCM_V2 * fix: normalize INTEROP feature in SystemConfig fuzz test * chore: add references for OptimismPortalInterop removal issue * chore: remove stale comment about superRootsActive * fix(portal): bump OptimismPortal2 version and fix OPCM_V2 interop upgrade ordering Bump OptimismPortal2.version() from 5.4.0 to 5.5.0 so OPCM_V2 can upgrade from OptimismPortalInterop (5.4.1+interop) without triggering the DowngradeNotAllowed check. In OPContractsManagerV2._apply(), set the ETH_LOCKBOX feature on SystemConfig before upgrading the portal. Unlike OptimismPortalInterop which blindly sets the ethLockbox, OptimismPortal2.initialize() calls _assertValidLockboxState() which requires the ETH_LOCKBOX feature flag and ethLockbox address to be consistent. Update superRootsActive tests to support both OPCM_V2 (gameType mock) and legacy (slot 63 manipulation) paths via _enableSuperRootBehavior helper. * chore: update checks for superRootActie to be for the INTEROP feature flag * fix: standard validator assertions to be for Portal2 instead of PortalInterop when OPCM_V2 and Interop feature flags enabled * fix: change event params back to non-indexed versions * chore: clean up branching logic for portal/opcm feature flags * chore: refactor the checks in assertValidPortal * chore: organize functions by visibility * fix: implement the _assertValidInteropState helper and add to initalize * fix: update assert for INTEROP flag instead of superroots active * chore: add clarification to the comment about the prerequisites to the portal migration functions * chore: add TODO issue tracking for follow up removal * fix: add missing OptimismPortal_InvalidInteropState error to IOptimismPortal2 * fix: assertions for the forked upgrade scenario * refactor: remove OPCM_V2 feature flag, make V2 canonical * Fix: docs * Fix: some more doc-related issues * fix: check ETH_LOCKBOX in _isUsingInterop and bump semver Update _isUsingInterop() to require both INTEROP and ETH_LOCKBOX features, preventing migrate* functions from executing if lockbox is misconfigured at runtime. Bump OptimismPortal2 5.5.0 -> 5.6.0 Bump OptimismPortalInterop 5.4.1+interop -> 5.5.1+interop * fix: use assertTrue/assertFalse instead of vm.assertTrue/vm.assertFalse * chore: forge fmt and snapshots bump * fix: update check for using superroots in the dsl * ci: retrigger workflow --------- Co-authored-by: Rodrigo Araujo <rod.dearaujo@gmail.com>
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.
Description
Move migrateToSuperRoots(), migrateLiquidity(), and 3 param initialize() from OptimismPortalInterop to OptimismPortal2.
And unify OPCM_V2 to target OptimismPortal2 for the Interop migration codepath
Tests
Tests the superchain system features are properly configured
Tests that migration succeeds with the system feature is enabled
Additional context
Part of #19699
Associated design doc: https://github.com/ethereum-optimism/design-docs/blob/main/protocol/proofs/shared-dispute-game-migration.md
Metadata
Closes #19708
Closes #19710
Closes #19011