Skip to content

Conversation

@blockchaindevsh
Copy link

This PR merges op-es with https://github.com/ethereum-optimism/optimism/releases/tag/op-node%2Fv1.16.5, all our e2e tests are passing.

The conflicts in .circleci/config.yml are left to @syntrust .

geoknee and others added 30 commits December 4, 2025 09:52
…thereum-optimism#18498)

Updates docker-bake.yaml reference to include fix that prevents bash
history expansion issues when build metadata contains special characters
like '!'.

Ref: ethereum-optimism/factory#8
…#18454)

* feat: break out OPCMv2 utils into helper contracts

Breaks out the OPCMv2 utils into a separate Utils contract that
reduces the code size of OPCMv2 significantly.

* fix: go ci issues

* fix: more ci issues

* fix: forge lint

* fix: go verify artifacts

* feat: add tests for OPCMUtils

* fix: broken tests

* fix: more test tweaks

* fix: mark functions as external

* feat: add tests for implementations and blueprints
… flaky test (ethereum-optimism#18360)

* test(contracts): add comprehensive coverage for AddressAliasHelper functions

- Add ApplyL1ToL2Alias_Test contract with fuzz test for applyL1ToL2Alias
- Add UndoL1ToL2Alias_Test contract with fuzz test for undoL1ToL2Alias
- Both tests verify correct offset arithmetic with unchecked overflow handling
- Ensures all public functions have individual test coverage

* fix(test): disable known features before fuzzing unset feature test

Fixes flaky test testFuzz_isFeatureEnabled_unsetFeature_succeeds by
disabling all known features (CUSTOM_GAS_TOKEN, ETH_LOCKBOX) before
checking that arbitrary features are disabled. This prevents
environment-dependent state from causing test failures in CI.

* fix(test): use runtime guard instead of disabling ETH_LOCKBOX

Improves the fix for testFuzz_isFeatureEnabled_unsetFeature_succeeds by:
- Removing ETH_LOCKBOX disabling code (causes revert in upgrade envs)
- Adding runtime guard to skip features that are currently enabled
- Only normalizing CUSTOM_GAS_TOKEN to fix the original flake

This approach avoids SystemConfig_InvalidFeatureState reverts when
ETH_LOCKBOX is enabled with a configured lockbox address in mainnet
upgrade test environments.

* fix(test): remove early exit from isFeatureEnabled fuzz test

Per maintainer feedback, removes the early exit that was skipping some
fuzz cases. The test now always runs the assertion for all fuzz inputs.

The CUSTOM_GAS_TOKEN normalization is kept to fix the original flake
in the CUSTOM_GAS_TOKEN CI environment.

---------

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
…eum-optimism#18488)

* feat(op-deployer): use op-deployer build for publish-artifacts

* fix(op-deployer): restore bucket name

* fix(op-deployer): add COMMIT file

* fix(op-deployer): verify cli test
…esis (ethereum-optimism#18490)

* fix: remove todo and update fees depositor address on mainnet (ethereum-optimism#704)

* chore: set genesis min withdrawal threshold from ten to two eth (ethereum-optimism#723)

* fix: remove unused errors (ethereum-optimism#726)
* test: add tests for OPCMv2.deploy

* test: add OPCMV2+interop portal CI run

* fix: slight test tweak

* fix: no vcs stamping

* fix: bug in pulling artifacts
…g to legacy (ethereum-optimism#18453)

Introduce a new rollup-boost healthcheck that parses JSON responses from
the /healthz endpoint. The existing HTTP status code-based healthcheck
is renamed to "legacy" and remains available for backward compatibility.

The two healthcheck modes are mutually exclusive.
* jovian: remove feature toggles

scope is now fixed

* Updated op-geth to v1.101604.0-synctest.0.0.20251120150812-e50f80a16afc

* lint

* just update-op-geth f48f382

* Use Jovian in test error message

* just update-op-geth ba6bdcfef42341fe2b5ce124c31ff2d6b264e9e4
…mism#18462)

* feat: have OPCM upgrade allowances be upgrade specific

Updates the OPCMv2 check for allowed extra instructions to be
specific to releases. When release versions are bumped, the
allowances become automatically invalid and would reveal
anywhere in the codebase where the allowance is being used.

* fix: semver lock

* fix: emit instruction key in error

* fix: better semantics

* docs: proper OPCM versioning policy

* fix: final version tweaks
…ism#18547)

* feat: have SystemConfig store a ref to last used OPCM

* fix: system config test flake
* fix: fuzz failure in system config test

* fix: proper skip
…optimism#17924)

* op-batcher: thread CLI lifecycle context cancel function to driver

and wire up to fatal error condition for throttling loop

* simplify wiring and abstract shutdownOnCriticalError method

* introduce isCriticalThrottlingRPCError(err) helper

* simplify impl

* lint

* pass handler for closeApp in test environments

* add TestBatchSubmitter_CriticalError

* slight improvement to test

* extend TestBatchSubmitter_ThrottlingEndpoint to cover MethodNotFound case

* Embed closeApp in DriverSetup and BatcherService

Store closeApp in BatcherService and propagate it through DriverSetup so
the driver can access it without a separate parameter. Update
BatcherServiceFromCLIConfig/initFromCLIConfig signatures (closeApp moved
earlier), remove closeApp arg from NewBatchSubmitter, and guard
shutdownOnCriticalError against nil. Update call sites accordingly.

* Propagate cancel cause to BatcherService

Use context.WithCancelCause and pass its cancel function when creating
the batcher so the service can be stopped with a cancel cause. Also
expose closeApp in DriverSetup and simplify a test by importing slices
and replacing manual loops with slices.Contains. Propagate cancel cause
to BatcherService

* Use context.WithCancelCause for batcher

* Update op-batcher/batcher/driver.go

Co-authored-by: almanax-ai[bot] <174396398+almanax-ai[bot]@users.noreply.github.com>

* Use cancelable context and failure hook for batcher

Replace context.WithCancelCause with context.WithCancel and add a
closeAppFn that calls p.FailNow with the cause and cancels the batcher
context. Pass closeAppFn into BatcherServiceFromCLIConfig and import fmt
so tests fail immediately on critical batcher errors. Use cancelable
context and failure hook for batcher

Log the failure cause and cancel the batcher context on critical errors

* Use cancellable context for batcher

* Log shutdown error and warn if closeApp missing

---------

Co-authored-by: almanax-ai[bot] <174396398+almanax-ai[bot]@users.noreply.github.com>
…hereum-optimism#18557)

- query GitHub API with commit SHA to find PR number for external PRs
- fall back to extracting PR number from CIRCLE_PULL_REQUEST URL for internal PRs
* feat: fast check runner for contracts

* feat: further script improvements

* fix: lint

* fix: comments

* feat: add fast checks to ci

* fix: add missing checks

* fix: corrected caching logic

* fix: handle interface check bugs
* feat: add audit report

* chore: update report with audit fixes commit hash

* chore: update release tag

* feat: add superchain ops upgrader audit report

* chore: rename upgrader audit report

* fix: proper report naming

* fix: rev sharing item order
…thereum-optimism#18566)

* Add tests for future/unknown SystemConfig events

* Return typed errors for SystemConfig events

Add ErrUnknownEventVersion and ErrUnknownEventType and return wrapped
typed errors (%w) when encountering unknown event versions or types.
Replace NewCriticalError for ErrParsingSystemConfig with a plain error.
Update tests to assert errors with require.ErrorIs and adjust event
topics/data accordingly.

* Fix error text for unknown event type
…ptimism#18564)

* op-acceptance-tests: batcher: add pending nonce busy wait

* comment

* better name
…optimism#18456)

* op-interop-filter: Service skeleton with flags and metrics

* feat(op-interop-filter): add service skeleton

Add op-interop-filter service scaffolding:

**Core structure:**
- flags/flags.go: CLI flag definitions with L2 RPC parsing
- flags/flags_test.go: Unit tests for flag parsing
- filter/config.go: Configuration struct and parsing
- filter/service.go: Service lifecycle management
- filter/frontend.go: RPC handlers (supervisor and admin)
- filter/backend.go: Stub backend (returns ErrUninitialized)
- metrics/metrics.go: Prometheus metrics interface and implementation
- cmd/main.go: Application entry point

**Build infrastructure:**
- justfile and Makefile for building
- docker-bake.hcl target
- Dockerfile builder and target stages
- Dockerfile.dockerignore allowlist entry

The service compiles and starts but CheckAccessList returns
ErrUninitialized until the actual implementation is added.

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

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

* refactor(op-interop-filter): align with op-faucet and op-interop-mon patterns

- Change --l2-rpcs to StringSliceFlag (query chain ID from RPC)
- Remove custom ParseL2RPCs parsing and tests
- Add doc subcommand for metrics documentation
- Add Document() method to metrics
- Fix NewMetrics() to take procName parameter
- Remove Required: true from flag (use CheckRequired only)
- Use "message" key in log.Crit for consistency

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

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

* fix(op-interop-filter): use v0.0.0 version to match other services

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

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

---------

Co-authored-by: opsuperchain <opsuperchain@slop.bot>
Co-authored-by: Claude <noreply@anthropic.com>

* fix(op-interop-filter): use procName for metrics namespace

* op-interop-filter: Address PR review comments, add Rewind stub, and fix JWT auth

* op-interop-filter: Address PR review comments

- Remove comment from .gitignore
- Remove 'op-geth' from app description to be client-agnostic
- Simplify CheckAccessList error handling to match op-supervisor
- Update SetFailsafeEnabled to indicate pending implementation
- Add JWT secret flag and wire up authentication for admin RPC

* op-interop-filter: Add Rewind admin RPC stub

Adds Rewind method to AdminFrontend as a stub for future implementation.
This will allow operators to recover from reorg-induced stuck states
via manual intervention.

* op-interop-filter: Wire up JWT secret

- Fix ObtainJWTSecret to always generate if file is empty (use true)

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

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

* op-interop-filter: Require JWT when admin RPC is enabled

Add validation in Config.Check() to ensure a JWT secret path is
configured when the admin RPC is enabled. This prevents exposing
admin functionality without proper authentication.

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

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

* op-interop-filter: Remove gitignore

---------

Co-authored-by: opsuperchain <opsuperchain@proton.me>
Co-authored-by: opsuperchain <opsuperchain@slop.bot>
Co-authored-by: Claude <noreply@anthropic.com>
devin-ai-integration bot and others added 21 commits January 7, 2026 20:40
…thereum-optimism#18707)

* refactor(test): rename fuzz tests to use testFuzz_ prefix in OptimismMintableERC20Factory

- Rename test_createStandardL2Token_succeeds to testFuzz_createStandardL2Token_validParams_succeeds
- Rename test_createStandardL2TokenWithDecimals_succeeds to testFuzz_createOptimismMintableERC20WithDecimals_validParams_succeeds
- Rename test_createStandardL2Token_sameTwice_reverts to testFuzz_createStandardL2Token_sameTwice_reverts
- Rename test_createStandardL2TokenWithDecimals_sameTwice_reverts to testFuzz_createOptimismMintableERC20WithDecimals_sameTwice_reverts
- Rename test_createStandardL2Token_remoteIsZero_reverts to testFuzz_createStandardL2Token_remoteIsZero_reverts
- Rename test_createStandardL2TokenWithDecimals_remoteIsZero_reverts to testFuzz_createOptimismMintableERC20WithDecimals_remoteIsZero_reverts

Tests that use fuzz parameters should follow the testFuzz_ naming convention.
Also corrects function names in test names to match actual functions being tested.

* test(contracts): add tests for createOptimismMintableERC20 and version functions

- Add OptimismMintableERC20Factory_CreateOptimismMintableERC20_Test contract
  - testFuzz_createOptimismMintableERC20_validParams_succeeds
  - testFuzz_createOptimismMintableERC20_remoteIsZero_reverts
- Add OptimismMintableERC20Factory_Version_Test contract
  - test_version_validFormat_succeeds using SemverComp.parse()

These public functions were not directly tested before.

---------

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
* asterisc: Remove asterisc scripts.

* Remove more CI config

* Remove more asterisc references.
…thereum-optimism#18485)

* fix loop in batcher with shadow compressor+brotli

* Iterate over all compression algorithms in tests

* Make test RNG seed deterministic

* Improve ChannelManager test assertions and checks

* godoc improvements

* Close test function in channel_manager_test.go

---------

Co-authored-by: geoknee <georgeknee@googlemail.com>
…sm#18711)

* op-service: Implement supernode client.

* op-challenger: Integrate super node trace provider (toggled off)

* Make super rpc CLI generic.
Add a config option to switch to super node.

* op-challenger: Actually return super node client

* Fix spelling.

* op-challenger: Avoid interfaces when nil checks are required.

Interface values are only nil if the type and value are nil - in our case the type is always non-nil so superNodeProvider == nil is always false causing panics.

* Remove test panic

* op-challenger: Fix package

* op-challenger: Rename --super-rpc to --supernode-rpc

* op-dispute-mon: Use supernode instead of supervisor.

* op-dispute-mon: Consistent capitalisation of SuperNode. It's two words.
…timism#18660)

* feat: initial add-game-type-v2 command (ethereum-optimism#770)

* WIP: opcmv2 upgrade op chain (ethereum-optimism#752)

* feat: upgrade op chain wip

* feat: add deployv2 wip

* fix: deployerv2 wip

* refactor: remove additional V2 version of scripts

* refactor: adds OPCM v2 support for UpgradeOPChain.s.sol

* refactor: adds OPCM v2 support for UpgradeSuperchainConfig.s.sol

* fix: uses correct json key for upgradeInput

* fix: uses correct feature flag for OPCM v2 in devfeatures.go

* chore: add json tag to ExtraInstruction

---------

Co-authored-by: Flux <175354924+0xiamflux@users.noreply.github.com>

* feat: adds intermediary struct for op-deployer upgrade (ethereum-optimism#759)

* feat: adds intermediary struct for op-deployer upgrade

* chore: moved upgrade scripts to v6_0_0

* chore: remove v2 go scripts

* refactor: make v2_0_0 upgrade path to support both OPCM v1 and v2

* feat: add support for both OPCM v1 and v2 on embedded upgrade

* refactor: make v6_0_0 fall back to v2_0_0

* refactor: add extra instructions for upgrade superchain input

* test: fix op-deployer tests

* chore: remove deploy OP chain test step

* test: use systemconfig proxy address

* fix: remove the unneeded proxyadmin in OPChainConfig in op-deployer

* refactor: revert v2_0_0 changes in favor of a new v6_0_0 that supports OPCMv2

* feat: add v6_0_0 upgrade

* fix: check for 0 len OPChainConfigs

* chore: pre-pr ready

* Merge pull request ethereum-optimism#764 from defi-wonderland/fix/opcm2-upgradeopchain-comments

fix: opcm2 upgradeopchain comments

* refactor: remove enshrined v7_0_0 upgrade in op-deployer (ethereum-optimism#766)

* test: use correct game type and pass correct extra instruction to UpgradeOPChain (ethereum-optimism#768)

* test: add missing extra instructions for OPCM v2 input

* fix: add correct game type for cannon kona

* feat: initial add-game-type-v2 command

* test: add tests for ShouldAllowV1 flag

* refactor: remove shouldAllowV1 flag

* chore: remove unused private key flag from the add game type v2 command

* chore: remove skipping upgrade test

* chore: name changes and comments

* chore: update usage description add-game-type-v2

* test: update add-game-type-opcm-v2 tests

---------

Co-authored-by: niha <205694301+0xniha@users.noreply.github.com>

* chore: opcm2 addgametypev2 comments (ethereum-optimism#780)

* chore: move ABI types to lib file

* chore: move hardcoded values to constants file

* refactor: make abi_types use MustType

* test: deploys OPCM v2 for use during CLI testing (ethereum-optimism#784)

* test: deploys OPCM v2 for use during CLI testing

* chore: reference a github issue for TODO

* test: add assertions on the output of add game type command

* test: update cli tests (ethereum-optimism#792)

* chore: Address review comments (ethereum-optimism#793)

* refactor: remove re-declared flags from add-game-type v2

* chore: remove irrelevant TODO

* refactor: rename "add-game-type-opcm-v2" command to "add-game-type-v2"

* test: add cache dir check for add-game-type-v2

* test: removes cache dir files check on e2e test (ethereum-optimism#794)

---------

Co-authored-by: niha <205694301+0xniha@users.noreply.github.com>
…timism#18638)

* op-node: validate EIP-1559 params in derivation pipeline

Add redundant validation for zero elasticity multiplier in EIP-1559
parameters during derivation, providing defense-in-depth against
contract-level checks being accidentally removed.

The SystemConfig contract already enforces denominator >= 1 and
elasticity >= 1, but this adds the same check in the derivation
pipeline for redundancy.

Closes ethereum-optimism#18625

Co-Authored-By: Kelvin Fichter <kelvinfichter@gmail.com>

* op-node: use ValidateHolocene1559Params for EIP-1559 validation

- Move validation from ProcessSystemConfigUpdateLogEvent into parseSystemConfigUpdateEIP1559Params
- Use eip1559.ValidateHolocene1559Params instead of manual checks
- Update op-geth dependency to include elasticity validation (PR ethereum-optimism#743)

Co-Authored-By: Kelvin Fichter <kelvinfichter@gmail.com>

* op-node: fix test to use valid EIP-1559 params

The createMismatchedEIP1559Params test was creating invalid params
(denominator=1, elasticity=0) which now triggers validation error from
op-geth PR ethereum-optimism#743. Fix by using valid but mismatched params (999, 999).

Co-Authored-By: Kelvin Fichter <kelvinfichter@gmail.com>

* update go.mod

* fix test

* update go.mod (after merging op-geth PR)

---------

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: Kelvin Fichter <kelvinfichter@gmail.com>
Co-authored-by: Sebastian Stammler <seb@oplabs.co>
…st (ethereum-optimism#18739)

* sysgo: allow OS to assign ports for opreth and rbuilder

* sysgo: allow OS to assign ports for rollup-boost

* make lint-go
* op-challenger: Use wrapped RPC client with multicaller.

Ensures that timeouts are applied to requests.

* op-challenger: Convert preimage fetcher to use L1Source.

Adds timeouts on requests and more efficient receipt fetching.

* op-challenger: Switch generic player to use L1Client to fetch L1Head number

* op-challenger: Add flag to set RPC Kind

* op-challenger: Add timeout when fetching L2 block headers
…timism#18724)

* Add EL eth_simulate acceptance test and init

* Strengthen eth_simulate test assertions

Add ReturnFullTransactions to simulation params and require the RPC call
to succeed. Assert exactly one block and one transaction are returned
and verify the transaction is a dynamic fee tx (type 0x2).

* Assert blobGasUsed nonzero in eth_simulate test

Decode blobGasUsed with hexutil and assert it's nonzero to ensure
eth_simulateV1 can estimate DA size. Also fix a comment typo (bock ->
block).

* Assert eth_simulateV1 errors on genesis block

Call eth_simulateV1 with block "0x0" (genesis) and require an error to
ensure the method cannot be used on the genesis block move test under
"base" directory

* tidy

* just update-op-geth e4826126d22171e97a31a05c7405b46143384ab7

* Fix spacing in commented replace in go.mod
…hereum-optimism#18624)

* Remove go 1.24 feature flag, leaving SysGetRandom syscall enabled

* contracts: Remove go 1.24 feature flag, leaving SysGetRandom syscall enabled

* Update semver-lock.json

* Remove commented-out Features struct and function
* Add timeout to vm-runner

* Remove special handling and metric for vm timeout

* Handle VM timeout errors differently from other errors in the runner

* Don't treat errors in traceProviderCreator as VM timeouts

* Combine VM failure metrics and add a reason label

* Re-add "_current" to metric name
…coverage (ethereum-optimism#18744)

* test(contracts): convert MintManager tests to fuzz tests for broader coverage

* docs(contracts): add natspec explaining first mint is uncapped

---------

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
…8634)

* feat: have upgrade test blocks update every week

* fix: performance enhancements

* fix: corrected pinned block number statement

* fix: correct trigger name

* feat: simplify and use cast find block

* fix: pass rpc to fork block write step

* fix: errant comments
….16.5

 Conflicts:
	.circleci/config.yml
	.gitmodules
	go.mod
	go.sum
	mise.toml
	op-node/node/node.go
	op-node/p2p/gossip.go
@syntrust
Copy link

Circleci config merged.

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.