Skip to content

update#6

Open
JustXxx wants to merge 8732 commits intoJustXxx:develop_4aryfrom
ethereum-optimism:develop
Open

update#6
JustXxx wants to merge 8732 commits intoJustXxx:develop_4aryfrom
ethereum-optimism:develop

Conversation

@JustXxx
Copy link
Owner

@JustXxx JustXxx commented Apr 16, 2024

No description provided.

ajsutton and others added 30 commits January 8, 2026 00:23
* asterisc: Remove asterisc scripts.

* Remove more CI config

* Remove more asterisc references.
…a#3197)

## Description

Add support for input DNS(es) for p2p listener ips. Useful for docker
context
…3146)

## Summary
- Added `shutdown_signal()` function to listen for SIGTERM and SIGINT
- Spawned a task in `RollupNode::start()` that triggers the existing
`CancellationToken` when OS signals are received
- All actors already support graceful shutdown via CancellationToken,
this just adds the missing OS signal handling

## Changes
- Modified `crates/node/service/src/service/node.rs`
- Cross-platform support: SIGTERM on Unix, Ctrl+C (SIGINT) on all
platforms

Closes #3091
…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>
* 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.
…xyz/reth#20843)

Co-authored-by: Josh_dfG <126518346+JoshdfG@users.noreply.github.com>
Signed-off-by: Yashvardhan Kukreja <yashvardhan@oplabs.co>

The help suggested to provide a path but in runtime, it expected a
direct value of the jwt secret itself.

The env var called KONA_NODE_L2_ENGINE_JWT_PATH is seeking a plain-text
value and KONA_NODE_L2_ENGINE_AUTH is seeking a path, whereas it should
be the other way around from my pov


For eg:, `KONA_NODE_L2_ENGINE_JWT_PATH=/etc/kona-node/jwt-secret.txt`,
doesn't work but `KONA_NODE_L2_ENGINE_JWT_PATH=sdakd123891u2390sbs` does
work.

Error received
```
error: invalid value '/etc/kona-node/jwt-secret.txt' for '--l2-engine-jwt-encoded <L2_ENGINE_JWT_ENCODED>': JWT key is expected to have a length of 64 digits. 29 digits key provided
```

This PR fixes that.

---------

Signed-off-by: Yashvardhan Kukreja <yashvardhan@oplabs.co>
op-rs/kona#3147)

Closes #3127
Previously, batch validation failures could only be diagnosed by parsing
log messages, which is fragile and not programmatically testable. This
change enables:
- Precise programmatic testing of batch validation logic
- Better error messages with structured drop reasons
- Improved debugging experience for node operators

## Changes

- `BatchDropReason` enum with variants for all drop scenarios:
- Timestamp related: `FutureTimestampHolocene`,
`PastTimestampPreHolocene`
- Parent/origin: `ParentHashMismatch`, `IncludedTooLate`, `EpochTooOld`,
`EpochTooFarInFuture`, `EpochHashMismatch`
- Sequencer drift: `TimestampBeforeL1Origin`, `SequencerDriftOverflow`,
`SequencerDriftExceeded`, `SequencerDriftNotAdoptedNextOrigin`
- Transaction validation: `EmptyTransaction`, `DepositTransaction`,
`Eip7702PreIsthmus`, `NonEmptyTransitionBlock`
- Span batch specific: `SpanBatchPreDelta`,
`SpanBatchNoNewBlocksPreHolocene`, `SpanBatchMisalignedTimestamp`,
`SpanBatchNotOverlappedExactly`
- Overlap validation: `L1OriginBeforeSafeHead`, `MissingL1Origin`,
`OverlappedTxCountMismatch`, `OverlappedTxMismatch`,
`L2BlockInfoExtractionFailed`, `OverlappedL1OriginMismatch`
…ow (op-rs/kona#3189)

Removes unnecessary intermediate `Vec` allocation in the peer banning
logic.
Fixed a copy-paste error in the OpStackEnr decoder where the error
message for version decoding incorrectly said "could not decode chain
id" instead of "could not decode version". Small fix but makes debugging
easier when ENR parsing fails.
…p-rs/kona#3206)

This PR consolidates the `EngineActor` inbound channels into a single
channel. See [this design
doc](https://github.com/ethereum-optimism/design-docs/blob/main/protocol/kona-node-actor-simplification.md#3-and-4-actor-dependencies-are-unclear)
for more info on motivation.

This PR also:
- Creates clients for all callers of `EngineActor` making interactions
simple, more generic, safe (e.g. DerivationActor's engine client does
not expose functions to perform block building), and mockable
- Makes dependent actors generic over their engine client to decouple
implementation and make mocking easy

Closes #3220
Closes #3221
… notifications (paradigmxyz/reth#20333)

Co-authored-by: Brian Picciano <me@mediocregopher.com>
* feat: initial add-game-type-v2 command (#770)

* WIP: opcmv2 upgrade op chain (#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 (#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 #764 from defi-wonderland/fix/opcm2-upgradeopchain-comments

fix: opcm2 upgradeopchain comments

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

* test: use correct game type and pass correct extra instruction to UpgradeOPChain (#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 (#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 (#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 (#792)

* chore: Address review comments (#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 (#794)

---------

Co-authored-by: niha <205694301+0xniha@users.noreply.github.com>
# Summary 
This pull request improves the reliability and observability of the
secret key loading and generation logic in
`crates/utilities/cli/src/secrets.rs`. The main changes add more robust
error handling and logging, making it easier to diagnose problems
related to secret key files.

# Motivation
When running kona-node in Kubernetes, users may encounter a new peer ID
on every pod restart without any indication of what went wrong. This
typically happens when:
The secret key file contains trailing \r\n or whitespace (common with
ConfigMaps)
No --p2p.priv.path or --p2p.priv.raw is configured
Previously, these failures were silently swallowed and an ephemeral
keypair was generated. Users had no way to know their configuration was
broke

# Key improvements:
**Error handling and diagnostics:**
* Added detailed error logging when decoding a secret key from file
fails, including the file path, error details, and content length. This
helps identify issues like trailing whitespace or invalid characters in
the secret key file.
* Added error logging when failing to access the secret key file,
capturing the file path and error message for easier troubleshooting.

**Success logging and observability:**
* Added info-level logs when a P2P keypair is successfully loaded from a
file or generated and saved, including the file path and peer ID. This
provides visibility into key management operations.
[[1]](diffhunk://#diff-dd17c74f0a1e7da8e226ddac381785c824cdc251539708daa0247fa699471fa4L29-R47)
[[2]](diffhunk://#diff-dd17c74f0a1e7da8e226ddac381785c824cdc251539708daa0247fa699471fa4L39-R78)

**Minor code improvements:**
* Trimmed whitespace from secret key file contents before decoding to
prevent common user errors.
* Minor refactor to ensure consistent use of references and variable
names.


### Previous Behavior with mounting a key-pair
```
╭─ ~/workspace/ethereum-optimism/k8s master *10 !15 ?1                                                                                                                                                                                                  32s ○ oplabs-dev-client-secondary/op-mainnet-kona-geth-a-rpc-1 16:14:47
╰─❯ k logs kona-node-0 | head -n 300 | grep local_peer
2026-01-08T21:14:49.296588Z  INFO libp2p_swarm: local_peer_id=16Uiu2HAmBRR5NXam4nhJt7jCuadCs7E1UMhNhfGvBbanwdYkQ63d

╭─ ~/workspace/ethereum-optimism/k8s master *10 !15 ?1                                                                                                                                                                                                      ○ oplabs-dev-client-secondary/op-mainnet-kona-geth-a-rpc-1 16:15:36
╰─❯ k delete pod kona-node-0
pod "kona-node-0" deleted

╭─ ~/workspace/ethereum-optimism/k8s master *10 !15 ?1                                                                                                                                                                                                      ○ oplabs-dev-client-secondary/op-mainnet-kona-geth-a-rpc-1 16:16:17
╰─❯ k logs kona-node-0 | head -n 300 | grep local_peer
2026-01-08T21:16:14.397652Z  INFO libp2p_swarm: local_peer_id=16Uiu2HAmJvtkQMZBce6bY4KPr4akERUYtiB8ExaKWyktPosBPi9v

╭─ ~/workspace/ethereum-optimism/k8s master *10 !15 ?1                                                                                                                                                                                           ✔ PIPE|0|0 ○ oplabs-dev-client-secondary/op-mainnet-kona-geth-a-rpc-1 16:16:30
╰─❯ k delete pod kona-node-0
pod "kona-node-0" deleted
			%                                                                                                                                                                                                                                                                                                       
╭─ ~/workspace/ethereum-optimism/k8s master *10 !15 ?1                                                                                                                                                                                                  32s ○ oplabs-dev-client-secondary/op-mainnet-kona-geth-a-rpc-1 16:19:40
╰─❯ k logs kona-node-0 | head -n 300 | grep local_peer
2026-01-08T21:19:41.859204Z  INFO libp2p_swarm: local_peer_id=16Uiu2HAmUPnaVBKxFAJLVFYDzvRWzb5J8nKTsqzdRW69tBNwsPVY
```

### New Behavior
```
╭─ ~/workspace/ethereum-optimism/k8s master *10 !15 ?1                                                                                                                                                                                                      ○ oplabs-dev-client-secondary/op-mainnet-kona-geth-a-rpc-1 16:24:12
╰─❯ k logs kona-node-0 | head -n 300 | grep -e local_peer -e p2p
2026-01-08T21:23:14.165638Z  INFO p2p::secrets: Successfully loaded P2P keypair from file path=/etc/kona-node/p2p-node-key.txt peer_id=16Uiu2HAmDmgXXZZxhPgJXDYtrSHXa4a72gzXyocymdW2Th6fHPuS
2026-01-08T21:23:14.303887Z  INFO libp2p_swarm: local_peer_id=16Uiu2HAmDmgXXZZxhPgJXDYtrSHXa4a72gzXyocymdW2Th6fHPuS

╭─ ~/workspace/ethereum-optimism/k8s master *10 !15 ?1                                                                                                                                                                                           ✔ PIPE|0|0 ○ oplabs-dev-client-secondary/op-mainnet-kona-geth-a-rpc-1 16:24:14
╰─❯ k delete pod kona-node-0
pod "kona-node-0" deleted

╭─ ~/workspace/ethereum-optimism/k8s master *10 !15 ?1                                                                                                                                                                                                  31s ○ oplabs-dev-client-secondary/op-mainnet-kona-geth-a-rpc-1 16:26:24
╰─❯ k logs kona-node-0 | head -n 300 | grep -e local_peer -e p2p
2026-01-08T21:26:25.965885Z  INFO p2p::secrets: Successfully loaded P2P keypair from file path=/etc/kona-node/p2p-node-key.txt peer_id=16Uiu2HAmDmgXXZZxhPgJXDYtrSHXa4a72gzXyocymdW2Th6fHPuS
2026-01-08T21:26:26.091000Z  INFO libp2p_swarm: local_peer_id=16Uiu2HAmDmgXXZZxhPgJXDYtrSHXa4a72gzXyocymdW2Th6fHPuS
```
* 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 #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 #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 #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 (#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
* 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
…8624)

* 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
## Description

Fixes cargo deny checks in CI
…idates only necessary blobs, and does not fallback to sidecars endpoint (op-rs/kona#3211)

Closes #3136

---------

Co-authored-by: theo <80177219+theochap@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
sebastianst and others added 30 commits February 6, 2026 17:45
Add descriptions for the `ai/` and `handbook/` directories in the docs README. Refine the CODEOWNERS pattern for security-reviews to be more specific, and fix the trailing slash formatting for consistency.

Co-authored-by: Claude Haiku 4.5 <noreply@anthropic.com>
* Update RewindFinalizedHeadBackward test to expect panic

* Fix rewind test finalized block reference

* Use error handling instead of panic
* mise: upgrade semgrep from 1.90.0 to 1.131.0

Semgrep 1.90.0 has a transitive dependency on opentelemetry-instrumentation
which imports pkg_resources from setuptools. Python 3.12 does not include
setuptools by default in venvs, so when the mise cache is invalidated (by
any change to mise.toml), a fresh pipx install of semgrep 1.90.0 fails with:

  ModuleNotFoundError: No module named 'pkg_resources'

This was reported as semgrep/semgrep#11069 and fixed in later versions.
Upgrading to 1.131.0 resolves the issue.

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

* mise: upgrade semgrep from 1.131.0 to 1.137.0

v1.137.0 is the first version that actually bumps the opentelemetry
packages (PR semgrep/semgrep#11180), fixing the pkg_resources
ModuleNotFoundError on Python 3.12 without setuptools.

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

---------

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: Kelvin Fichter <kelvinfichter@gmail.com>
* chore(rust): merge all the rust workspaces

* chore(ci): formatting, fixing dockerfile and ci

* chore: more ci fixes

* Update .circleci/continue/rust-ci.yml

Co-authored-by: Sebastian Stammler <seb@oplabs.co>

* Update .circleci/continue/rust-e2e.yml

Co-authored-by: Sebastian Stammler <seb@oplabs.co>

* Update .circleci/continue/rust-e2e.yml

Co-authored-by: Sebastian Stammler <seb@oplabs.co>

* chore: pr comments

* nit: fix kona path in op-challenger

* chore: fix prestate artifacts path

---------

Co-authored-by: Sebastian Stammler <seb@oplabs.co>
#18866)

* fix: alt da: handle no commitments case when finalized head is updated

* add tests

* update fix
…block (#19114)

* Update L1 genesis handling for genesis L2 block

Clarify that for the genesis L2 block, we always return L1 block 0
without relying on the original configuration's L1 genesis. This allows
for more flexibility in dispute game scenarios involving earlier L1
blocks.

* empty commit to trigger CI checks
)

* op-acceptance: Add test for next super root not being available.

* Move fpp tests to their own package so they can run in parallel with other challenger tests.  Restart the sequencer after the test.
…19136)

The rust workspace unification moved op-alloy under rust/, but the
semgrepignore pattern was not updated, causing semgrep to flag the
mdbook theme's JavaScript try/catch blocks as Solidity violations.

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: Kelvin Fichter <kelvinfichter@gmail.com>
The [alias] section in mise.toml has been deprecated in favor of
[tool_alias]. This fixes the deprecation warning on mise startup.
* Merge main and acceptance-test workflows.

Avoids performing duplicate work.

* Switch where anchor references are defined.
* op-acceptor: Update to 3.8.3

* chore(op-acceptor): update to 3.8.3

---------

Co-authored-by: Stefano Charissis <stefano@oplabs.co>
Erroneous spacing lead to Error: bad file '.circleci/continue/rust-ci.yml': yaml: line 8: mapping values are not allowed in this context
…bled (#19138)

* Add metrics recording before sending to throttling loop

This means we can still track the metric when throttling is disabled.

* Remove unnecessary conditional for throttling threshold

if we can't send on the channel, we drop the update anyway

* Add test for disabled throttling in op-batcher

This commit adds a test case to verify the behavior of the batch
submitter when throttling is disabled (LowerThreshold = 0). The test
ensures that:

- The throttling loop does not start
- No throttle updates are sent to the endpoint
- Unsafe data availability bytes metric is still recorded
- The driver can process blocks and update metrics without running the
  throttling loop

* Add test helper method to simulate block loading

* dedupe test cases

* Add comment explaining channel send behavior in sendToThrottlingLoop
Rename all pipeline parameters in CircleCI continuation configs
(main.yml, rust-ci.yml, rust-e2e.yml) to use a `c-` prefix, eliminating
naming overlap with the setup config (config.yml). This fixes the
"Conflicting pipeline parameters" error that occurs when API-triggered
pipelines (e.g. from opgitgovernance bot) pass non-default parameter
values.

The path-filtering mapping in config.yml bridges between the setup
parameter names (used by API triggers) and the new continuation
parameter names.
* op-supernode: Add block invalidation and deny list to chain container

- Add DenyList using bbolt for persistent storage of invalid block hashes
- Add InvalidateBlock method to ChainContainer interface
- InvalidateBlock adds hash to denylist and triggers rewind if current block matches
- Add IsDenied helper to check if a block is on the deny list
- Add acceptance test skeleton for block replacement flow

* op-supernode: Add unit tests for block invalidation

- Add table-driven tests for DenyList (Add, Contains, Persistence, GetDeniedHashes)
- Add tests for InvalidateBlock (rewind triggers, no-rewind cases, timestamp calculation)
- Add tests for IsDenied helper
- Fix OpenDenyList to create parent directories
- Add InvalidateBlock/IsDenied stubs to mock ChainContainers in existing tests

* Wire up block invalidation from interop activity to chain container

When the interop activity detects an invalid executing message, it now calls
InvalidateBlock on the chain container. This:
1. Adds the block to the chain's denylist (persisted via bbolt)
2. Checks if the chain is currently using that block
3. Triggers a rewind to the prior timestamp if so

The acceptance test is renamed to TestSupernodeInteropInvalidMessageReset and
temporarily skipped due to pre-existing logsDB consistency issues blocking
interop progression.

* Fix block invalidation: use eth.Unsafe label and improve test resilience

- Use eth.Unsafe label in BlockAtTimestamp call (was using empty string)
- Make acceptance test resilient to block not existing after rewind
- Test now passes: detects reset when block 8 is rewound away

* op-node: add SuperAuthority interface for payload denial

Introduce SuperAuthority interface that allows external authority (like
op-supernode) to deny payloads before they are inserted into the engine.

- Define SuperAuthority interface in op-node/node/node.go with IsDenied method
- Add SuperAuthority to InitializationOverrides for injection
- Wire SuperAuthority through Driver to EngineController
- Check IsDenied before NewPayload in payload_process.go
- If denied during Holocene derivation, request deposits-only replacement
- Update tests and op-program to pass nil for SuperAuthority

* op-supernode: add ResetOn method to Activity interface

Add ResetOn(chainID, timestamp) to Activity interface so activities can
clean up cached state when a chain container rewinds.

- Activity.ResetOn called by Supernode when any chain resets
- Supernode.onChainReset distributes reset to all activities
- Heartbeat and Superroot implement no-op ResetOn (no cached state)
- Update test mocks to implement ResetOn

* op-supernode: add SetResetCallback to ChainContainer

Add reset callback mechanism to ChainContainer so it can notify the
supernode when a chain rewinds due to block invalidation.

- Add ResetCallback type and onReset field to simpleChainContainer
- Add SetResetCallback to ChainContainer interface
- Call onReset after successful RewindEngine in InvalidateBlock
- Update test mocks to implement SetResetCallback

* op-supernode: implement ResetOn in Interop activity

When a chain rewinds, the Interop activity must clean up its cached state:
- Rewind logsDB for the chain to before the reset timestamp
- Rewind verifiedDB to remove entries at or after reset timestamp
- Log error if verified results were deleted (unexpected)

Also adds:
- Rewind/Clear methods to LogsDB interface
- RewindTo method to VerifiedDB
- noopInvalidator for calling logsDB.Rewind
- Update test mocks for new interface methods

* op-acceptance-tests: add replacement block assertions

Add assertions to verify block replacement behavior:
- Replacement block hash differs from invalid block hash
- Invalid transaction is NOT present in replacement block

These checks confirm the deposits-only replacement mechanism works
correctly after an invalid executing message is detected.

* fill in missing unit tests

Add comprehensive unit tests for block invalidation sub-features:

- TestDenyList_ConcurrentAccess: Verify concurrent Add/Contains operations
- TestInvalidateBlock: Test invalidateBlock wiring from Interop to ChainContainer
- TestResetOn: Test Interop activity reset behavior on chain rewind
- TestVerifiedDB_RewindTo: Test VerifiedDB rewind functionality
- TestSuperAuthority_*: Test payload denial in op-node engine controller

Also includes BlockInvalidation_Feature.md diary documenting all sub-features.

* address review feedback: genesis block guard and docs

- Add guard check rejecting InvalidateBlock for height=0 (genesis block)
- Document SetResetCallback must only be called during initialization
- Add test case for genesis block invalidation error

* op-acceptance-tests: rename halt package to reorg, consolidate tests

- Rename halt/ package to reorg/ (reflects actual behavior)
- Move invalid_message_replacement_test.go into reorg package
- Delete obsolete invalid_message_halt_test.go (superseded by reorg test)

The halt test tested old behavior where invalid messages caused the chain
to halt. With block invalidation, the chain now rewinds and replaces
the invalid block with a deposits-only block.

* sub-feature 6: interop test control (PauseInterop/ResumeInterop)

Add test-only control methods for the interop activity to support
precise timing control in acceptance tests.

Specification:
- PauseInterop(ts): When called, interop activity returns early when
  it would process the given timestamp, without making progress
- ResumeInterop(): Clears the pause, allowing normal processing
- Zero value indicates 'not paused' (always process all values)
- Atomic read/write for concurrent safety

Implementation layers:
- Interop: pauseAtTimestamp atomic.Uint64 field + check in progressInterop()
- Supernode: delegates to interop activity by type assertion
- sysgo.SuperNode: exposes methods, delegates to supernode.Supernode
- stack.InteropTestControl: interface defining the test control contract
- Orchestrator: InteropTestControl(id) method to get control for a supernode
- DSL Supernode: NewSupernodeWithTestControl() + wrapper methods
- Preset: wires up test control in NewTwoL2SupernodeInterop()

This enables acceptance tests to:
  sys.Supernode.PauseInterop(targetTimestamp + 1)
  // ... perform test setup ...
  sys.Supernode.ResumeInterop()

* Updates from Self Review

- Consolidate SuperAuthority interface to op-node/rollup/iface.go
  (remove duplicate definitions from node.go, engine_controller.go, resources/)
- Move onReset callback invocation from InvalidateBlock to RewindEngine
  (fires on any engine reset, not just block invalidation)
- Move helper methods (SetResetCallback, blockNumberToTimestamp, IsDenied)
  from invalidation.go to chain_container.go
- Delete unused op-supernode/supernode/resources/super_authority.go

* lint

* datadir for unit tests

* Add functions to DSL

* PR comments: Rename Functions ; Remove non-holocene replacement logic

* refactor: cleanup DSL, tests, and interop activity

DSL changes:
- Add TimestampForBlockNum helper to L2Network
- Simplify SendInvalidExecMessage to just increment log index

Test changes:
- invalid_message_reorg_test: use TimestampForBlockNum, check eth.NotFound
- Move SuperAuthority tests to super_authority_deny_test.go
- Fix denied payload test to expect DepositsOnlyPayloadAttributesRequestEvent
- Make denyBlock private in test mock

Interop activity:
- Extract resetLogsDB and resetVerifiedDB helper functions

* Refacor Tests to Test Cases

* Delete AI Diary

* Final PR Comments

* More tests to sub-cases
)

The split preimage uploader previously chose the “large preimage proposal”
path purely by preimage size. That path is keccak-only on-chain
(it finalizes by writing a 0x02-prefixed key), so routing large
sha256/blob/precompile preimages there could never satisfy the
requested oracle key/offset.

To fix this we update routing to only use the large uploader for
non-local Keccak256KeyType preimages.

Co-authored-by: inphi <mlaw2501@gmail.com>
#19173)

* flaky test: add TestUnsafeChainNotStalling_DisabledReqRespSync to flake-shake

* circleci: set DEBUG log.level for flake-shake
…nned tag (#19183)

Now that kona lives in the monorepo, the prestate build no longer needs
to clone the optimism repo at a pinned commit to build cannon. Instead,
cannon is built from the local monorepo source via a Docker named build
context, removing the cannon_tag config file and simplifying the build.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* proofs: port TestInteropFaultProofs action test to devstack

* fix(kona/client): produce InvalidTransition when derivation falls short of target block

* Update Makefile

Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>

* fix makefile indent

* revert Makefile changes

* revert rust/kona/justfile changes

---------

Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
* chore(rust): move docs to unified rust/docs/ directory

* chore(rust): update repo links from alloy-rs/paradigmxyz to
  ethereum-optimism
* DSL: Coordinate Interop Activity Pause for Acceptance Testing

* Refactor EnsureInteropPaused to simplify timestamp selection

---------

Co-authored-by: geoknee <georgeknee@googlemail.com>
* feat: add ConditionalDeployer (#687)

* feat: refactor l2cm conditional deployer predeploy and add L2CM dev flag  (#836)

* refactor: replace create2 deployer for arachnid

* feat: add ConditionalDeployer as predeploy and add L2CM dev flag

* fix: add pre-pr fix

* fix: remove unnecessary auth in conditional deployer

* feat: add custom error for deployment revert

* test: add l2cm e2e apply test case

* fix: conditional deployer tests and match style guide

* fix: remove fork test

* feat: add common test to cond deployer test

* fix: follow constant style guide

* fix: comments and add msg.value to ConditionalDeployer

* fix: conditional deployer comment in apply test

* fix: arachnid reference comment

* fix: add msg.value to conditional deployer

* fix: deterministic deployment proxy comment

* fix: add code length check after deploy

* fix: add code length check after deploy

* fix: pre pr fix

* refactor: remove useL2CM bool initialization

* fix: make deploy non payable and add tests

* fix: make deploy non payable

* test: add missing getters test

* fix: add missing natspec

* feat: add todo issue for devfeatures cyclic import

* chore: pre pr run

* refactor: add returned address check in deploy

* fix: use encodePacked for return address test

* fix: unify getters in a single test contract

* fix: variables naming and mutability

* fix: remove underscore from local variable

* fix: remove address payable from deterministicDeploymentProxy

* refactor: rename dummy storage variable in test and add internal getExpectedImplementation helper

---------

Co-authored-by: niha <205694301+0xniha@users.noreply.github.com>
Co-authored-by: OneTony <onetony@defi.sucks>
Co-authored-by: 0xOneTony <112496816+0xOneTony@users.noreply.github.com>
- Add tag classification to distinguish Rust crate groups from Docker-only groups
- Add publish-crates CI job for crates.io publishing with dependency-ordered releases
- Add op-reth Docker bake target and compute-git-versions entry
- Add cargo-release configuration for alloy-op-hardforks and op-reth
- Add .dockerignore for rust/ build context
- Fix op-reth DockerfileOp manifest paths
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.