This repository was archived by the owner on Dec 5, 2021. It is now read-only.
[pull] develop from ethereum-optimism:develop#573
Open
pull[bot] wants to merge 10000 commits intoomgnetwork:developfrom
Open
[pull] develop from ethereum-optimism:develop#573pull[bot] wants to merge 10000 commits intoomgnetwork:developfrom
pull[bot] wants to merge 10000 commits intoomgnetwork:developfrom
Conversation
* 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
…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
…tions (#19165) * feat(op-node): add NUT bundle parser for JSON-defined upgrade transactions Enable defining network upgrade transactions (NUTs) as JSON files instead of requiring hardcoded Go files per hardfork. * feat(op-node): add intent-based source hash derivation to NUT bundles Source hashes are derived from a qualified intent string that combines the fork name, transaction index, and per-tx intent field. * refactor(op-node): rename NUTTransaction to NetworkUpgradeTransaction * refactor(op-node): remove Value field from NetworkUpgradeTransaction NUTs should never need to send ether. Value is always zero. * refactor(op-node): use forks.Name for NUT bundle fork identifier * refactor(op-node): accept io.Reader in ReadNUTBundle instead of []byte Allows streaming directly from files or embedded FS without an intermediate []byte allocation. * fix(op-node): linting
* op-challenger: Add logging to Stop method * op-devstack: Dump all stack traces if challenger stop takes too long. * op-challenger: Remove extra logging.
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 subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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.
See Commits and Changes for more details.
Created by
pull[bot]
Can you help keep this open source service alive? 💖 Please sponsor : )