Skip to content

feat(op-interop-filter): add sysgo integration and preset [3/4]#10

Open
opsuperchain wants to merge 2 commits intofeat/interop-filter-logicfrom
feat/interop-filter-sysgo-preset
Open

feat(op-interop-filter): add sysgo integration and preset [3/4]#10
opsuperchain wants to merge 2 commits intofeat/interop-filter-logicfrom
feat/interop-filter-sysgo-preset

Conversation

@opsuperchain
Copy link
Copy Markdown
Collaborator

Summary

This is PR 3 of 4 for the op-interop-filter service.

This PR adds op-devstack/sysgo integration:

  • API interfaces: InteropFilterAPI, InteropFilterAdminAPI, InteropFilterQueryAPI
  • RPC client: InteropFilterClient for RPC communication
  • Stack types: InteropFilterID and InteropFilter interface
  • Shim implementation: RPC-based interop filter shim
  • Sysgo integration: WithInteropFilter function for orchestrator
  • DSL wrapper: InteropFilter DSL for test convenience
  • Preset: MinimalWithInteropFilter preset for testing
  • Matcher: FirstInteropFilter matcher

This enables op-interop-filter to be used in sysgo-based integration tests.

Stack

This PR is part of a stacked PR series:

  • [1/4] Skeleton & flags
  • [2/4] Core logic and unit tests
  • [3/4] Sysgo integration and preset ← this PR
  • [4/4] Sysgo e2e tests

Test plan

  • go build ./op-devstack/...
  • go test ./op-devstack/stack/...

🤖 Generated with Claude Code

@opsuperchain opsuperchain force-pushed the feat/interop-filter-logic branch from 6f6b9ec to 60b0a5f Compare November 27, 2025 00:51
@opsuperchain opsuperchain force-pushed the feat/interop-filter-sysgo-preset branch from 4863aa1 to e5cdf5b Compare November 27, 2025 00:52
@opsuperchain opsuperchain force-pushed the feat/interop-filter-logic branch from 60b0a5f to 7f93ad9 Compare November 27, 2025 06:24
@opsuperchain opsuperchain force-pushed the feat/interop-filter-sysgo-preset branch from e5cdf5b to bd3795e Compare November 27, 2025 06:25
opsuperchain and others added 2 commits December 1, 2025 15:01
This PR adds the full implementation of op-interop-filter:

- Backend with ChainIngester management, failsafe handling, and CheckAccessList
- ChainIngester for block polling, LogsDB management, backfill, and reorg detection
- Unit tests for Backend (failsafe, ready state, unknown chain handling)
- Dashboard tool for viewing filter and spammer metrics
- Spammer tool for validation testing with real chain data
- Overnight test script for multi-chain testing

The filter is now fully functional and can be used with op-geth for
transaction filtering.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This PR adds op-devstack/sysgo integration for op-interop-filter:

- `op-service/apis/interop_filter.go`: InteropFilter API interfaces
- `op-service/sources/interop_filter_client.go`: RPC client for interop filter
- `op-devstack/stack/interop_filter.go`: InteropFilterID and InteropFilter interface
- `op-devstack/shim/interop_filter.go`: Shim implementation
- `op-devstack/sysgo/interop_filter.go`: WithInteropFilter function
- `op-devstack/dsl/interop_filter.go`: DSL wrapper
- `op-devstack/presets/minimal_with_interop_filter.go`: Preset for tests
- Updated system interface to include InteropFilter methods
- Added FirstInteropFilter matcher

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
@opsuperchain opsuperchain force-pushed the feat/interop-filter-sysgo-preset branch from bd3795e to 99ed03d Compare December 1, 2025 15:01
karlfloersch pushed a commit that referenced this pull request Mar 5, 2026
…thereum-optimism#19272)

* contracts: implement audit code fixes and add tests

Add onlyDelegateCall enforcement to upgradeSuperchain, upgrade, and
migrate functions (#17). Include msg.sender in deploy salt to prevent
cross-caller CREATE2 collisions (#17). Add duplicate instruction key
detection in upgrade validation (#9). Validate startingRespectedGameType
against enabled game configs (#10). Add code-existence check in
loadBytes (#18). Add setUp guard to VerifyOPCM.runSingle (#4). Remove
unused _findChar function (#5). Pass real AddressManager in migrator
proxy deploy args (#11). Add tests covering all audit fix behaviors.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* contracts: regenerate semver-lock.json for OPContractsManagerV2

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* contracts: bump OPContractsManagerV2 version to 7.0.10

Semver-diff requires a patch version bump when bytecode changes.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
karlfloersch pushed a commit that referenced this pull request Mar 17, 2026
* docs(staking): document pause bypass behavior in setAllowedStaker

* fix(staking): only reset lastUpdate on full unstake in _decreasePeData

Cantina audit finding #7: _decreasePeData unconditionally reset
lastUpdate on every decrease, penalizing partial unstakers by
resetting their staking weight. Now lastUpdate is only reset when
effectiveStake reaches zero.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat(staking): implement two-step ownership transfer

Cantina audit finding #8: transferOwnership now nominates a pending
owner who must call acceptOwnership() to finalize the transfer,
preventing irrevocable ownership loss from incorrect addresses.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs(staking): document lastUpdate reset trust assumption in setAllowedStaker

Cantina audit finding #10: when a beneficiary removes a staker from
their allowlist, the staker's lastUpdate is reset via _increasePeData,
losing accumulated staking weight. Document this as an inherent trust
assumption of the delegation model.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* chore: undo version change

* chore: upgrade natspec

* chore: update event emission order

* fix: wrong event args

* chore: add interface comments

* fix: pre-pr

* refactor: make ownable private functions public

* fix: pre-pr

* feat(ownable): reset pending owner on zeroaddress ownership transfer

* refactor: inherit OZ's ownable and use helper contract for mapping storage slot

* fix: ci

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant