Skip to content

Conversation

@blockchaindevsh
Copy link
Collaborator

Fixes QuarkChain#130.

Refer here for reasoning .

mdehoog and others added 30 commits October 2, 2025 14:00
* Replace go-bip39 dependency

* Bump go-ethereum-hdwallet dep
…um-optimism#17568)

* op-node: add optional flag to load L1ChainConfig

And wire up to BlockInfo.BlobBaseFee() getter, which now accepts the config.

Flag need not be provided as long as the chain has a known l1 chain id (Mainnet, Sepolia).

* use test l1 chain config in many tests

* more wiring

* WIP: get op-program to compile

I don't expect this to work, yet

* sysgo: wire up op-node constructor with L1ChainConfig

* op-program host wiring

* op-e2e/actions wiring

* wire up boot info

* op-program looks up chain config for l1 mainnet and l1 sepolia

* wire up l1 chain config in op-e2e/system

* fix tests by passing sepolia chan config from op-geth

* add L1ChainConfig to e2esys.System struct

* handle err

* op-program/interop fixes

* add l1ChainConfig to supersystem_l2.go

* op-program: wire up l1chainconfigs to host flags and config

* fix mockInteropBootstrapOracle

* feat(l1): add custom l1 configs to kona proof

* op-program/chaincfg: split loading of l1 and l2 chain configs

* op-program/boot-interop: us a single l1 chain config

* fix tests

* lint

* wiring in op-challenger

* expose L1Genesis on SuperDisputeSystem

* lint

* fix test

* fixes

* add case to switch statement

* fix op-challenger error handling

* op-program: one chain config for interop, multiple otherwise

* op-program/host: always return a single l1 chain config

* fix chain Id comparisons

also add error for nil blob schedule

* op-node/service: add unit tests for NewL1ChainConfig

* op-program/host: use a single L1ChainConfig

* op-program can fallback to mainnet / sepolia L1s automatically

* lint

* add check

* sysgo/l2_Cl_opnode: replicate op-node fallback to known l1 chain configs

* single l1 genesis in challenger and vm executor

* simplify

* typo

* more harmony around single l1 chain config

* tweaks

* remove whoopsie

* wire up l1ChainConfig in test sequencer

* deprecate calcBlobFeeDefault

* reinstate method

* lint

* feat(devstack/kona): fix devstack commands for kona

* Add TestCannonNetworkorL1GenesisPathRequired and TestAsteriscNetworkorL1GenesisPathRequired

* move --l1-config-path into required args slice

* use single l1ChainConfig in RunKonaNative

* remove caldBlobFeeDefault

* refactor tests with validConfigWithNoNetworks

* NewL1ChainConfig warns when config is ignored

* add assertion for --l1-config-path in TestKonaFillHostCommand

* Implement validation for L1GenesisPath in OracleCommand and update tests to reflect changes

* fail on multiple l1 networks

* move lookup of l1 chain config out of core sysgo constructors and into system_synctester_ext.go

* remove duplicate test

* op-program/chaincfg: checkConfigFilenames permits 0 or 1 l1 genesis files

Adds test for not supplying a custom l1 genesis config.

* add test case for multiple l1 genesis files

* op-program/boot-info: add test for missing l1 chain config

* op-program/client/boot: panic if custom chain l1 config does not match rollup config l1 chain id

* specify l1/l2 in err msg

* typo

* fix test

* use single l1 chain config in interop_test.go

* validate l1 chain id matches when loading config from file

* reorder arguments for derive.L1InfoDeposit

* reorder action helper verifier/sequencer constructor arguments

* add comment

* reordering

* assert chain is consistency

* reorder

* change to path flag

* dedupe and fix test

* remove magic code from WithKonaNode sysgo helper

* DRY out, centralize, dedupe and unit test L1ChainConfigByChainID

* undo ff09017

* Update op-devstack/sysgo/l2_challenger.go

Co-authored-by: mbaxter <meredith@oplabs.co>

* fix

* mockInteropBootstrapOracle embeds a single l1ChainCfg and tests assert

* challenger should not require l1 genesis path to be configured

* make l1 genesis config optional for kona

* allow for multiple l1 configs in custom chain fs

* add l1 genesis flag to op-challenger

* fix

* fix lints and tests

* fix op-program config tests

* fix op-program cmd tests

* remove failing tests that shouldnt exist

* add comment

* Add TestCalcBlobFeeAcrossForksWithFixedExcess

* improve test

it will now fail if any fork is rescheduled

* fix test

* fix system/proofs tests

* Add warning to CalcBlobFeeCancun

* lint

---------

Co-authored-by: theochap <theodore.chap@gmail.com>
Co-authored-by: mbaxter <meredith@oplabs.co>
Co-authored-by: Josh Klopfenstein <joshklop@oplabs.co>
* add Fusaka activation test

* updated the test to add L1 blob base fee assertions

* fixes

* wire up Fusaka on L1 and improve test

* give test teeth

* improve prague fork test

* activate prague at genesis and osaka after

* updated op-geth to v1.101603.0-synctest.0.0.20250930110811-5eee1eab50e6

pairs with ethereum-optimism/op-geth#690

* extend test to cover BPO forks

* typo fix

* typo fix

* dedupe tests

* rename file

* respond to review

---------

Co-authored-by: Dense <DenseDenise12@proton.me>
* feat(test-validation): add library support

- extract functions from AST for libraries (internal functions not in ABI)
- add test coverage for library validation helpers
- update exclusions for library-specific test patterns
- add success message when all validations pass

* fix(test): fix DevFeatures test contract naming
…ereum-optimism#17707)

* test resolution of l1 chain config by chain ID in op-program

* add sanity check
Ensure we only show tests for the target branch
…c is disabled (ethereum-optimism#17696)

* op-acceptance-tests: test that unsafe chain is stalled when ReqResSync is disabled

* address comments
* feat: implement configureTimelockGuard function

- Add configureTimelockGuard function to allow Safes to set timelock delays
- Validate timelock delay between 1 second and 1 year
- Check that guard is properly enabled on calling Safe using getStorageAt()
- Store configuration per Safe with GuardConfigured event emission
- Add comprehensive test suite covering all spec requirements
- Implement IGuard interface for Safe compatibility

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

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

* feat: implement clearTimelockGuard function

- Add clearTimelockGuard function to allow Safes to clear timelock configuration
- Validate that guard is disabled before allowing configuration clearing
- Check that Safe was previously configured before clearing
- Delete configuration data and emit GuardCleared event
- Add comprehensive test suite covering all spec requirements
- Add new errors: TimelockGuard_GuardNotConfigured, TimelockGuard_GuardStillEnabled

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

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

* refactor: extract guard checking logic to internal helper function

- Add internal _getGuard() helper to centralize guard address retrieval
- Update configureTimelockGuard and clearTimelockGuard to use helper
- Reduces code duplication and improves maintainability

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

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

* feat: implement cancellationThreshold function

- Add cancellationThreshold function to return current threshold for a Safe
- Return 0 if guard not enabled or not configured
- Initialize to 1 when Safe configures guard
- Clear threshold when Safe clears guard configuration
- Add comprehensive test suite covering all spec requirements
- Function never reverts as per spec requirements

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

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

* feat: add placeholder functions for remaining TimelockGuard functionality

- Add scheduleTransaction placeholder (Function 4)
- Add checkPendingTransactions placeholder (Function 6)
- Add rejectTransaction placeholder (Function 7)
- Add rejectTransactionWithSignature placeholder (Function 8)
- Add cancelTransaction placeholder (Function 9)
- Update checkTransaction placeholder (Function 5)
- All placeholders have proper signatures and documentation

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

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

* Self review fixes

* Fix warnings on unimplemented functions

* Fix names of test functions

* Satisfy semgrep by removing revert with string

* Remove arg names from unimplemented functions

* Snapshots

* Add interface

* Simplify cancellationThreshold() getter

* Replace _getGuard with isGuardEnabled

* Allow a timelock delay of zero

* TimelockGuard: Add scheduleTransaction()

* Add todo note

* Pseudocode draft of a non-nested timelock

Simpler code

Add cancelTransaction function relying on the Safe's internal logic

undo type change

Add note explaining getScheduledTransactions

* Remove signatures field from ExecTransactionParams

* Refactor tests with improve utils (_getDummyTx, _getSignaturesForTx)

* Test for TransactionCancelled event

* Further improve util functions

* Add approve hash test case

* fix warnings

* Use correct typing for Safe addresses

This is applied to function inputs/outputs as well as mappings and
events

* Add additional scheduleTransaction tests

* Enable specifying which safeInstance in utility functions

* Change cancelTransaction to accept a tx hash

* Add increaseCancellationThreshold to cancelTransaction

* Add configured boolean to guard config

* Fix signature reuse vulnerability in cancelTransaction

Include transaction hash in cancellation signature data to prevent
signatures from being reused across different transactions with the
same nonce. Updates both contract implementation and tests.

* Move signature verification before existence check in scheduleTransaction

* Remove unused console.logs

* Fix increaseCancellationThreshold inputs

* Separate cancellation threshold events from transaction cancellation

Add CancellationThresholdUpdated event and emit it from threshold
modification functions. Remove threshold parameter from TransactionCancelled
event for cleaner separation of concerns.

* Remove unused _txHash argument from resetCancellation function

* Update ITimelockGuard to match implementation

* Use configured flag instead of timelockDelay check in clearTimelockGuard

* Add configuration check to scheduleTransaction and fix test names

* Implement checkTransaction

* Add itest placeholder contract

* Add comment to checkAfterExecution body

* pre-pr checks

* Remove GuardConfig.configured boolean field

We can simply use `timelock > 0` as an indicator of configuration

* Remove clearTimelockGuard

The right way to do this is now just to set timelockDelay to zero.

* Refactor: Add TransactionBuilder library

This library significantly reduces the amount of boilerplace required to
setup a Safe transaction, then schedule, cancel, or execute it.

* Add unreachable AlreadyExecuted error

* Add integration tests

* Add getPendingTransactions function and tests

* Add tests for getScheduledTransaction

* Add _ prefix in front of internal mappings

* Rename viewTimelockGuard to timelockSafeConfigurationper specs

* Add maxCancellationThreshold

* Improve names on getter functions

* Remove @dev tags with invariants

Avoids duplicating logic between specs and implementation

* Update configureTimelockGuard to accept and validate signatures outside of the Safe

* Refactor: use a single struct to store all state for a given Safe

* Do not unnecessarily reset cancellation threshold when config set to 0

* Revert "Update configureTimelockGuard to accept and validate signatures outside of the Safe"

This reverts commit daad53b.

* Move timelockDelay out of unnecessary struct

* Add top level detail natspec, reorder functions by vis and mutability

* Remove test that does not conform to spec

* Add cancelTransactionOnSafe to interface as reverting function

* Add many more comments

* Apply suggestions from code review

Co-authored-by: Alberto Cuesta Cañada <38806121+alcueca@users.noreply.github.com>

* Fix ITimelockGuard iface to match impl

* Rename arguments for consistency

* Add/fixup @param on events

* Small fixes

* Fix ITimelockGuard declaration

* Improve names on getter functions

* Move ExecTransactionParams into TimelockGuard.sol

* Address comment nits

* Add TimelockGuard_MaxCancellationThreshold_Test and _deploySafe helper

* Fix up iface and comment typos

* Fix storage lookup in test

* Add enum Transaction state and remove cancelled/executed booleans

* add /// @Custom:field on ScheduledTransaction struct

* add /// @Custom:field on ExecTransactionParams struct

* Add SemverComp to enforce minimum Safe version

* Rename empty function to signCancellationForSafe

* Fix location of external view functions

* Add some more comments where helpful.

* Further expand on the maxCancellationThreshold rationale

* Clarify blocking threshold

* iFace fixes

* Fix iface

* Move update of tx state, event emission and cancellationThreshold into checkAfterExection

* Simplified comment

* remove unclear comments

* fix semgrep sol-style-use-abi-encodecall

* snapshots

* Add course of actions table

* Remove unnecessary address arg from signCancellation

* Fix test names

* Fix test name validation

* Remove enabled guard check from configureTimelockGuard

* Allow <ContractName>_Integration_Test in tests

* Add isExcludedTest in checkContractNameFilePath()

* Update semver-lock

* Fix typo

* fix typo in tests

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: alcueca <alberto@yield.is>
Co-authored-by: Alberto Cuesta Cañada <38806121+alcueca@users.noreply.github.com>
…#17512)

* opcm: Support cannon+kona games in updatePrestates

* fmt; and check devfeatures flag at updatePrestate

* update semver and snapshots

* remove duplicate import

* bump semver after rebase

* fix addGameType for SUPER_CANNON_KONA; add more cannon-kona tests

* remove proxyAdmin from UpdatePrestateInput

* update IOPCM interface

* update semver

* check all topics in expectEmit

* add updatePrestate helper function for testing

* lint test

* fix semgrep issues

---------

Co-authored-by: inphi <mlaw2501@gmail.com>
…d via `l1.beacon.skip-blob-verification` flag (ethereum-optimism#17713)

* op-service/L1BeaconClient: allow blob proof verification to be skipped via CLI flag

* assign parameter correctly

* add test at the L1BeaconClient level

* move skip boolean into existing config struct

* tweak flag description
…hereum-optimism#17718)

* op-program: Add skip-blob-verification flag

* op-challenger: add flag to skip blob verification

* Soften warning message for skip blob verification
…ereum-optimism#17633)

* feat(op-conductor): rollup-boost partial unhealthiness tolerance

Signed-off-by: Yashvardhan Kukreja <yashvardhan@oplabs.co>

* rlock protection to currentValue function

Signed-off-by: Yashvardhan Kukreja <yashvardhan@oplabs.co>

* timeboundcounter separate file and unit tests

Signed-off-by: Yashvardhan Kukreja <yashvardhan@oplabs.co>

* comment about the concurrent access bad path testing

Signed-off-by: Yashvardhan Kukreja <yashvardhan@oplabs.co>

* nit

Signed-off-by: Yashvardhan Kukreja <yashvardhan@oplabs.co>

* shift the max value logic to health monitor

Signed-off-by: Yashvardhan Kukreja <yashvardhan@oplabs.co>

* nit

Signed-off-by: Yashvardhan Kukreja <yashvardhan@oplabs.co>

---------

Signed-off-by: Yashvardhan Kukreja <yashvardhan@oplabs.co>
…thereum-optimism#17725)

* recompute blob proof if skipBlobVerification

* use even simpler verification

* replace verification logic

* refactor to make verification more direct

This approach does not use any additional data from the beacon endpoint, aside from the blob itself, so anticipates future API changes where this will be the only data provided.

* tweak comments

* rename to verifyBlob

* tweak test comments

* Revert "op-service/L1BeaconClient: allow blob proof verification to be skipped via `l1.beacon.skip-blob-verification` flag (ethereum-optimism#17713)"

This reverts commit 05ba528.

* Revert "Add `skip-blob-verification` flag to op-program and op-challenger  (ethereum-optimism#17718)"

This reverts commit 3ee883b.

* add an extra unit test
* op-service/txplan: support blob txs

* op-service/txinclude: handle future nonce gaps

This can happen when we get mempool errors like "nonce too high", which
itself can occur when we hit "account limit exceeded" errors in the blob
pool.

* sysgo: add Osaka activation test

* sysext: infer L1 config when possible
…m#17722)

* op-challenger: convert l1 genesis flag to VMFlag

* Disallow l1-genesis flag use with the network flag

* typo

* another typo

---------

Co-authored-by: geoknee <georgeknee@googlemail.com>
…7714)

* op-service: Engine APIs

* op-devstack: L2EL Engine API support: op-geth

* Handle Read Only ELs

* Move to different dir

* op-devstack: DSL for ref by hash and FCU

* op-acceptance-tests: Manual Verifier Sync

* op-acceptance-tests: Manual Verifier Sync: Harden

* op-devstack: godoc and better var naming
* upgrade controller removed from OPCM

* renamed upgradeController to l1PAO in DeployImplementations.Input

* Update semver

* Remove upgradeController from the docs

* Fix VerifyOPCM

* Did quite the find and replace here

* The OPCM constructor only takes 24 slots now

* Some straggler renamings

* Fix: semver-lock

* Doh

* Snapshots?

* lint

* Fixed the last of the lint with the power of regex

* fixed linting

* L1PAO == SuperchainProxyAdminOwner

* We shouldn't need to pass the upgrade controller to op-deployer to deploy opcm anymore

* L1PAO != SuperchainPAO

* Let's accept both the backwards compatible UPGRADE_CONTROLLER and the new L!_PROXY_ADMIN_OWNER

* Maybe I'll need to drop UPGRADE_CONTROLLER

* addressed comments from @bitwiseguy

* Needed the three dots, it seems

* Shortened form of L1PAO not used in code anymore

* update semver-lock and opcm bytecode

* *sigh*
ethereum-optimism#17730)

* build(ci): add manual workflow for AI contracts test maintenance system

- add ai_contracts_test_dispatch parameter for manual pipeline triggering
- add ai-contracts-test job that runs just ai-contracts-test command
- add ai-contracts-test-workflow with manual dispatch only
- use devin-api context for Devin API credentials
- set 60 minute timeout for AI contract test execution

* build(ci): store log artifact in AI contracts test workflow

- add store_artifacts step to save log.jsonl from test runs

* fix: handle socket timeouts in devin API client

- add TimeoutError exception handling in _make_request function
- update version to 0.3.2

* docs(ci): add runbook reference to AI contracts test job
…mism#17692)

Adds semi-automated promotions to our FlakeShake system, by:
- Reviewing the flake-shake results for promotion candidates
- Creating a PR for the promotion-ready tests
- Notifying us of this on Slack
…m#17736)

* beacon client: use new fusaka endpoint to get blobs

Fallback to old endpoint on error.

* unexport method

* tests: rename clientWithValidation -> client

* remove comments

* Update op-service/sources/l1_beacon_client.go

---------

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

* op-devstack: engine: FCU retry helper

* op-devstack: Helper for L2EL p2p removal

* op-acceptance-tests: ELP2P for EL Syncing for unsafe gap

* op-acceptance-tests: ELP2P newPayload not retained automatically

* op-acceptance-tests: Better comments
…rough env vars. (ethereum-optimism#17746)

Previously, the enabled case was tested by explicitly enabling the dev flag but CI has been updated to run all tests with and without the flag enabled.
The explicit enabling gets in the way of testing creator pattern changes.
syntrust and others added 24 commits November 3, 2025 13:52
…sm#18109)

The latest mise (installed by brew) errors if tools don't have a known install source even if they're disabled. While we control the version of mise used in CI, local development depends on an existing mise to bootstrap and there isn't a good way to ensure it is using a specific version.
* remove DeployProxy

* fixes
…imism#18129)

* fix: bump mips version from 7 to 8

* fix: don't require building binary to use justfile with correct op-deployer version

* fix: remove mips version arg
* feat(ci): run upgrade tests with dev flags

Updates CI to run upgrade tests with dev flags enabled. Only OP
will run with dev flags enabled for now, this should be sufficient
and will avoid dramatically increasing CI impact.

* fix: correct cannon kona prestate in validator tests
…mism#18078)

* Update opcm.migrate to set super-cannonKona

* Validate cannonKona prestates during migrate

* Update OCPM migrate tests

* Cleanup: add helper to construct gameType expectations

* Fix game validation test logic

* Fix shadowed var warning

* Rework op-deployer migrate CLI args for absolute prestate

* Read cannonKona prestate in GenerateOPCMMigrateCalldata

* Don't create SuperCannonKona game if prestate is zero

* Update migration gameType helper

* Clean up test logic, perform stricter checks on empty games

* Add error messages

* Clear game args when game impl removed

* Add test with empty cannonKona prestate

* Enforce non-empty cannon prestate

* Bump contract version

* Run just pre-pr

* Cleanup and add another test

* Fix test documentation

* Add new prestate flags to the migrate CLI command

* Update script comment with updated sample input

* Add check for consistent permissionless weth contracts post-migrate

* Bump opcm version again

* Run semver-lock
…-optimism#18131)

* all: update op-geth to pull in fusaka timestamps

* update for scr changes

* point go.mod at op-geth rc

* address comment
* fix  interfaces-check-no-build

* fix comment

* Revert "fix comment"

This reverts commit f529d28.
* fix snapshots-check-no-build

* fix  interfaces-check-no-build

* fix comment

* Revert "fix comment"

This reverts commit f529d28.
 Conflicts:
	.circleci/config.yml
	go.mod
	go.sum
	mise.toml
	op-node/node/node.go
	op-node/p2p/gossip.go
	packages/contracts-bedrock/snapshots/semver-lock.json
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.

Local go test failure: Test_ProgramAction_OperatorFeeConsistency/JunkClaim-StateRefund-jovian