Skip to content

challenger: Load ABIs from the snapshots dir#10225

Merged
tynes merged 5 commits intodevelopfrom
aj/abi-loader
Apr 19, 2024
Merged

challenger: Load ABIs from the snapshots dir#10225
tynes merged 5 commits intodevelopfrom
aj/abi-loader

Conversation

@ajsutton
Copy link
Contributor

@ajsutton ajsutton commented Apr 19, 2024

Description

Removes dependency on generated bindings by introducing a slightly evil little bit of go code into the contracts-bedrock/snapshots dir. The go loader can use go:embed to load the ABIs and make them available to any other package that requires them without needing to use the generated bindings. go:embed does not allow access to files outside the go package though, hence the need for this go code to be in the snapshots dir.

This is an alternative to #10221

Removes dependency on generated bindings
@codecov
Copy link

codecov bot commented Apr 19, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 29.22%. Comparing base (4a3d3fb) to head (9c386aa).

Additional details and impacted files
@@             Coverage Diff              @@
##           develop   #10225       +/-   ##
============================================
- Coverage    42.40%   29.22%   -13.18%     
============================================
  Files           73       31       -42     
  Lines         4830     2898     -1932     
  Branches       766      614      -152     
============================================
- Hits          2048      847     -1201     
+ Misses        2676     1976      -700     
+ Partials       106       75       -31     
Flag Coverage Δ
cannon-go-tests ?
chain-mon-tests 27.14% <ø> (ø)
common-ts-tests ?
contracts-ts-tests 12.25% <ø> (ø)
core-utils-tests ?
sdk-tests 40.27% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

see 42 files with indirect coverage changes

@ajsutton ajsutton marked this pull request as ready for review April 19, 2024 04:43
@ajsutton ajsutton requested review from a team as code owners April 19, 2024 04:43
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Apr 19, 2024

Walkthrough

Walkthrough

The recent updates focus on transitioning ABI loading mechanisms from using the bindings package to the snapshots package across various contracts and tests in the op-challenger project. This change enhances the management and loading of Ethereum contract ABIs. Additionally, the Docker configuration and scripting enhancements support better deployment and version tracking.

Changes

Files Change Summary
.../delayed_weth.go, .../faultdisputegame.go, .../gamefactory.go, .../oracle.go, .../vm.go Replaced ABI loading from bindings to snapshots package. Adjusted imports and function signatures as necessary.
.../delayed_weth_test.go, .../faultdisputegame_test.go, .../gamefactory_test.go, .../oracle_test.go, .../vm_test.go Updated ABI loading in tests to use snapshots package. Modified struct references and test setups.
ops/docker/op-stack-go/Dockerfile.dockerignore Added exclusion for /packages/contracts-bedrock/snapshots to Docker ignore file.
ops/scripts/find-version.sh Added a script to extract version number from Git tags matching specific release names.
packages/contracts-bedrock/snapshots/abi_loader.go, .../abi_loader_test.go Introduced functions and tests for loading Ethereum contract ABIs using embedded files.

Recent Review Details

Configuration used: .coderabbit.yml

Commits Files that changed from the base of the PR and between 4a3d3fb and 9c386aa.
Files selected for processing (14)
  • op-challenger/game/fault/contracts/delayed_weth.go (2 hunks)
  • op-challenger/game/fault/contracts/delayed_weth_test.go (2 hunks)
  • op-challenger/game/fault/contracts/faultdisputegame.go (2 hunks)
  • op-challenger/game/fault/contracts/faultdisputegame_test.go (2 hunks)
  • op-challenger/game/fault/contracts/gamefactory.go (2 hunks)
  • op-challenger/game/fault/contracts/gamefactory_test.go (2 hunks)
  • op-challenger/game/fault/contracts/oracle.go (4 hunks)
  • op-challenger/game/fault/contracts/oracle_test.go (5 hunks)
  • op-challenger/game/fault/contracts/vm.go (2 hunks)
  • op-challenger/game/fault/contracts/vm_test.go (1 hunks)
  • ops/docker/op-stack-go/Dockerfile.dockerignore (1 hunks)
  • ops/scripts/find-version.sh (1 hunks)
  • packages/contracts-bedrock/snapshots/abi_loader.go (1 hunks)
  • packages/contracts-bedrock/snapshots/abi_loader_test.go (1 hunks)
Files skipped from review due to trivial changes (1)
  • ops/docker/op-stack-go/Dockerfile.dockerignore
Additional comments not posted (22)
ops/scripts/find-version.sh (1)

6-6: Validate the output of git describe command.

Consider adding error handling for the git describe command to ensure it does not fail silently. You might want to check if the output is empty and handle such cases appropriately.

packages/contracts-bedrock/snapshots/abi_loader_test.go (1)

10-28: Ensure comprehensive testing of ABI loading functionality.

The structured approach to testing each ABI loading function separately is good practice. It ensures that each function is independently verified, which is crucial for maintaining the integrity of the ABI loading process.

packages/contracts-bedrock/snapshots/abi_loader.go (1)

11-12: Correct use of go:embed to manage ABI files.

The use of the go:embed directive to embed ABI files within the binary is a modern and efficient way to handle static files in Go. This approach ensures that ABI files are packaged with the binary, reducing runtime dependencies.

op-challenger/game/fault/contracts/vm.go (1)

24-24: Proper integration of new ABI loading method in VM contract initialization.

The integration of snapshots.LoadMIPSABI() in the NewVMContract function is correctly implemented. This change aligns with the PR's objective to replace the old ABI loading method with a more streamlined approach using the snapshots package.

op-challenger/game/fault/contracts/vm_test.go (1)

18-18: Correct update of ABI loading in VM contract test.

The update to use snapshots.LoadMIPSABI() in the TestVMContract_Oracle function is correctly implemented. This ensures that the test is aligned with the new method of ABI loading, maintaining consistency across the codebase.

op-challenger/game/fault/contracts/delayed_weth.go (1)

31-31: Proper integration of new ABI loading method in Delayed WETH contract initialization.

The integration of snapshots.LoadDelayedWETHABI() in the NewDelayedWETHContract function is correctly implemented. This change aligns with the PR's objective to replace the old ABI loading method with a more streamlined approach using the snapshots package.

op-challenger/game/fault/contracts/delayed_weth_test.go (1)

45-45: Correct update of ABI loading in Delayed WETH contract test setup.

The update to use snapshots.LoadDelayedWETHABI() in the setupDelayedWethTest function is correctly implemented. This ensures that the test is aligned with the new method of ABI loading, maintaining consistency across the codebase.

op-challenger/game/fault/contracts/gamefactory.go (1)

33-33: Proper integration of new ABI loading method in Dispute Game Factory contract initialization.

The integration of snapshots.LoadDisputeGameFactoryABI() in the NewDisputeGameFactoryContract function is correctly implemented. This change aligns with the PR's objective to replace the old ABI loading method with a more streamlined approach using the snapshots package.

op-challenger/game/fault/contracts/gamefactory_test.go (1)

227-227: Change to use snapshots.LoadDisputeGameFactoryABI() for ABI loading aligns with PR objectives and is correctly implemented.

op-challenger/game/fault/contracts/oracle.go (4)

19-19: Import of snapshots is necessary for the new ABI loading method and is correctly added.


51-62: Addition of struct definitions preimageOracleLeaf and libKeccakStateMatrix aligns with the needs of contract interaction methods.


77-79: Function toPreimageOracleLeaf correctly converts data to the contract format using the new struct.


87-87: Change to use snapshots.LoadPreimageOracleABI() in NewPreimageOracleContract is correctly implemented and aligns with PR objectives.

op-challenger/game/fault/contracts/faultdisputegame_test.go (3)

459-459: Change to use snapshots.LoadFaultDisputeGameABI() for ABI loading in FaultDisputeGame is correctly implemented.


462-462: Update to use snapshots.LoadMIPSABI() for ABI loading in MIPS contract aligns with PR objectives.


464-464: Update to use snapshots.LoadPreimageOracleABI() for ABI loading in PreimageOracle is correctly implemented.

op-challenger/game/fault/contracts/faultdisputegame.go (1)

17-17: Import of snapshots package aligns with the new approach to load ABIs directly from the snapshots directory.

op-challenger/game/fault/contracts/oracle_test.go (5)

19-19: Import of snapshots package in test file to support the new ABI loading method.


596-596: Update to use preimageOracleLeaf struct in the TestChallenge_First function.


634-634: Update to use libKeccakStateMatrix struct in the TestChallenge_NotFirst function.


635-635: Update to use preimageOracleLeaf struct in the TestChallenge_NotFirst function.


641-641: Continued use of preimageOracleLeaf struct in the TestChallenge_NotFirst function.


Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

Share
Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai generate interesting stats about this repository and render them as a table.
    • @coderabbitai show all the console.log statements in this repository.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (invoked as PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger a review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai help to get help.

Additionally, you can add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.

CodeRabbit Configration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

Copy link
Member

@sebastianst sebastianst left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, one questions about the find-vesion script.

Copy link
Contributor

@Inphi Inphi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is much nicer!

@tynes tynes enabled auto-merge April 19, 2024 17:56
@tynes tynes added this pull request to the merge queue Apr 19, 2024
Merged via the queue into develop with commit d2263b1 Apr 19, 2024
@tynes tynes deleted the aj/abi-loader branch April 19, 2024 18:16
tynes added a commit that referenced this pull request Apr 24, 2024
Removes `cannon` deps on `op-bindings` package following
a pattern similar to #10225.
Includes test coverage of the new functions and is the minimal diff to
get things working.

Ideally there was a canonical forge artifact type that is used but for
now we don't worry about it. This unblocks further work on removing the
bindings from the monorepo, greatly improving devex.
github-merge-queue bot pushed a commit that referenced this pull request Apr 24, 2024
* contracts-bedrock: remove cannon deps on bindings

Removes `cannon` deps on `op-bindings` package following
a pattern similar to #10225.
Includes test coverage of the new functions and is the minimal diff to
get things working.

Ideally there was a canonical forge artifact type that is used but for
now we don't worry about it. This unblocks further work on removing the
bindings from the monorepo, greatly improving devex.

* cannon: cleanup, new approach

* ci: attempt fix

* ci: attempt fix

* ci: fixup
InoMurko added a commit to ConstellationCrypto/celestia-bedrock that referenced this pull request Jun 13, 2024
* op-e2e: Enable Fjord / RIP-7212 Test (#10260)

* Enable Fjord in e2e tests / test for RIP-7212

* switch to tagged op-geth

* ci: Add daily job to check reproducibility of cannon prestate (#10244)

* ci: Add scheduled job to check reproducibility of op-program preimages.

* ci: Add slack notification on failure.

* op-e2e: Avoid panics on conductor startup failure (#10247)

* Fix tag script (#10261)

* op-e2e: Refactor for asterisc e2e  (#10214)

* op-e2e: Expose fields for asterisc e2e

* op-e2e: Add Helper Initializer methods

* op-e2e: Apply initializer methods and exposed fields

* op-e2e: Expose methods for asterisc e2e

* contracts-bedrock: remove cannon deps on bindings (#10280)

* contracts-bedrock: remove cannon deps on bindings

Removes `cannon` deps on `op-bindings` package following
a pattern similar to https://github.com/ethereum-optimism/optimism/pull/10225.
Includes test coverage of the new functions and is the minimal diff to
get things working.

Ideally there was a canonical forge artifact type that is used but for
now we don't worry about it. This unblocks further work on removing the
bindings from the monorepo, greatly improving devex.

* cannon: cleanup, new approach

* ci: attempt fix

* ci: attempt fix

* ci: fixup

* op-bindings: delete `more` files (#10272)

* op-bindings: delete `more` files

The `op-bindings` more files existed to add
extra information to the bindings that were
helpful in particular for the L2 genesis generation
process. This commit deletes all more files as well
as the code for generating them. It also deletes
the top level `registry.go` file that used an `init`
function to populate public getters for accessing
the data in more files.

Now that the L2 genesis doesn't happen in Go, this
is all dead code. Removing this will greatly reduce
diff when smart contract code changes.

* cleanup: more dead code

* cleanup: decouple dead code

* `Position.TraceIndex`: panic when `maxDepth < p.depth` happens (#10007)

* ensure "maxDepth < p.depth" never happens

* add more log

* op-plamsa: use local bindings (#10286)

Migrates the `op-plasma` service away from using `op-bindings`. Part of
deprecating `op-bindings` as part of smart contract dev. Services
are responsible for maintaining their own bindings now.

* contracts-bedrock: remove bindings requirement (#10285)

* contracts-bedrock: remove bindings requirement

Previously, CI enforced that bindings were kept up to date with
any changes to the smart contracts. This resulted in a lot of
churn with CI, created large diffs when opening PRs and also
took a long time to recompile and generate bindings.

Now that no major services depend on `op-bindings`, we can remove
the need to enforce they are kept up to date. The rest of the bindings
themselves can be removed in a separate PR. Merging this gives a sigh
of relief for all smart contract devs working on the optimism codebase.

* op-bindings-e2e: delete

* `chain-mon` restructuring  (#10246)

* chore: `chain-mon` restructuring + fix some paths (exclude contracts for
now)

* chore: Fix the path of the docker with the new restructuring.

* chore: Change the `CODEOWNERS` for the `balance-mon`

* da-server: Switch back to minio (#10281)

* remove duplicate imports (#10284)

* feat(ctb): Log preimage oracle calldata (#10278)

* feat(ctb): Log preimage oracle calldata

* Add log tests

x

more binding

* op-challenger: Support multiple prestates (#10282)

* op-challenger: Implement prestate sources

* op-challenger: Add canon-prestates-url flag to configure a source for prestates based on hash

* run-kontrol.sh: fix typo to not execute test with 10-element array (#10292)

* op-challenger: Read created game address from receipt (#10277)

Extracts the game creation logic into reusable code.

* feat(ct): update max bond gas to 300m (#10275)

* feat(ct): update max bond gas to 300m

Updates the maximum bond gas to 300m up from 200m. Corresponds to
the increase in the cost of publishing a large preimage as a
result of emitting the data as part of a log.

* update kontrol

x

---------

Co-authored-by: clabby <ben@clab.by>

* op-challenger: Fix list-claims command (#10042)

* Create Context-Aware Transient Storage Library (#10259)

* contracts-bedrock: create TransientContext.sol

* contracts-bedrock: create test for Transient.sol

* contracts-bedrock: add documentation for Transient library

* contracts-bedrock: fix transient test

* contracts-bedrock: minor improvements to Transient lib tests

* contracts-bedrock: minor improvements to documentation for tests of Transient

* contracts-bedrock: minor improvements to documentation for tests of Transient

* contracts-bedrock: refactor Transient lib

* contracts-bedrock: add missing documentation in Transient lib

* contracts-bedrock: set correct CALL_DEPTH_SLOT in Transient lib

* contracts-bedrock: refactor Transient lib into TransientContext lib

* contracts-bedrock: improve labeling of vars in TransientContext

* contracts-bedrock: create tests for TransientContext

* contracts-bedrock: change var type of CALL_DEPTH_SLOT

* contracts-bedrock: refactor tests for TransientContext

* contracts-bedrock: refactor tests for TransientContext

* contracts-bedrock: add testFuzz_increment_fromMax_reverts

* contracts-bedrock: create test_increment_overflow_succeeds

* contracts-bedrock: drop underflow check in TransientContext

* contracts-bedrock: add additional tests for TransientContext

* contracts-bedrock: add documentation for TransientContext

* contracts-bedrock: add documentation for TransientContext

* contracts-bedrock: use suffix for return vars in TransientContext

* contracts-bedrock: use inline hash for callDepthSlot in TransienttContext tests

* contracts-bedrock: reintroduce transient-storage ignored error code to foundry.toml

* contracts-bedrock: remove unnecessary tests for TransientContext

* contracts-bedrock: create snapshots

* op-chain-ops: delete dead code (#10298)

Now that genesis generation is in solidity, delete
dead code. This code serialized solidity types suitable
for storage. Very similar to abi encoding but not always
the same, big difference was dynamic types, this library
only supported dynamic types <= 31 bytes to not handle the
chunking. This impacted the sorts of types that could
be in the genesis storage.

* op-challenger: Rename `--l2-rpc` to `--l2-eth-rpc` and log warning for deprecated `--cannon-l2` (#10257)

* op-challenger: Log a warning when deprecated --cannon-l2 option is used.

* op-challenger: Rename --l2-rpc to --l2-eth-rpc for consistency with --l1-eth-rpc

* op-challenger: Share providers across different game instances (#10305)

Avoids loading the full state to extract the commitment for each individual game.

* op-program: Add reproducibility check for op-program 0.3.0 (#10304)

* op-bindings: remove bindgen (#10301)

Removes the bindgen cli tool from the repo since it is not owned
by anybody and also not used to generate bindings anymore since
we are moving away from auto generated bindings.

* op-bindings: delete ast package (#10299)

This package canonicalized the ast ids that were placed
in the bindings `more` files because any change in the
smart contracts would cause a massive diff in the storage
layout for all storage layouts as they used the ast ids
to represent types. We needed to canonicalize them to have
deterministic bindings generation, otherwise CI would generate
the bindings in a non deterministic way. As we adopted new
solidity features, it would find edge cases in our ast canonicalize
algo, breaking CI. This code helped us for a long time but
now it is no longer used and can be retired.

* op-bindings: delete hardhat package (#10300)

This package was helpful when we still relied on hardhat
for the compiler toolchain. Now that we use foundry, this
is no longer used anywhere. Deleting to reduce dead code
in the repo.

* op-challenger, op-dispute-mon: Support both old and new versions of the dispute game contracts (#10302)

* op-challenger, op-dispute-mon: Support both old and new versions of the dispute game contracts.

* op-challenger: Update fault dispute game contract tests to cover multiple versions.

* op-challenger: Support multiple asterisc prestates (#10313)

* op-challenger: Apply multiple prestates for asterisc

* op-challenger: Add asterisc-prestates-url flag to configure a source for prestates based on hash

* op-challenger: Share providers across different asterisc game instances  (#10314)

* op-challenger: Share providers across different asterisc game instances

Avoids loading the full state to extract the commitment for each individual game.

* Fix flag error

* op-challenger: fix a bug in TestMonitorGames (#10307)

* op-challenger: fix a bug in TestMonitorGames

* just return instead of break loop

* remove blank lines

* feat(ctb): `SystemConfig` updates for FPs (#10315)

Updates the system config with a major version bump for a
`DisputeGameFactory` in lieu of the deprecated `L2OutputOracle`.

* dependabot(gomod): bump gorm.io/gorm from 1.25.9 to 1.25.10 (#10324)

Bumps [gorm.io/gorm](https://github.com/go-gorm/gorm) from 1.25.9 to 1.25.10.
- [Release notes](https://github.com/go-gorm/gorm/releases)
- [Commits](https://github.com/go-gorm/gorm/compare/v1.25.9...v1.25.10)

---
updated-dependencies:
- dependency-name: gorm.io/gorm
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* dependabot(gomod): bump github.com/minio/minio-go/v7 (#10323)

Bumps [github.com/minio/minio-go/v7](https://github.com/minio/minio-go) from 7.0.69 to 7.0.70.
- [Release notes](https://github.com/minio/minio-go/releases)
- [Commits](https://github.com/minio/minio-go/compare/v7.0.69...v7.0.70)

---
updated-dependencies:
- dependency-name: github.com/minio/minio-go/v7
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* fix: typo in the code comments (#10229)

* fix: typo in the code comments

* fix: correct the syntax error in the code comment

* feat/CrossL2Inbox: create (#10296)

* contracts-bedrock: create CrossL2Inbox

* contracts-bedrock: create ICrossL2Inbox

* contracts-bedrock: create tests for CrossL2Inbox

* contracts-bedrock: update CrossL2Inbox sol version to ^0.8.24

* contracts-bedrock: rename test to .t.sol ext

* contracts-bedrock: make snapshots

* contracts-bedrock: update semver-lock

* contracts-bedrock: drop snapshots for CrossL2InboxTest

* contracts-bedrock: update license for tests CrossL2Inbox

* contracts-bedrock: add CrossL2Inbox to predeploys

* contracts-bedrock: pin sol version of CrossL2Inbox to 0.8.25

* contracts-bedrock: update semver-lock for CrossL2Inbox

* contracts-bedrock: add CROSS_L2_INBOX to predeploys

* contracts-bedrock: make slots internal in CrossL2Inbox

* contracts-bedrock: add custom errors to CrossL2Inbox

* contracts-bedrock: refactor tests for CrossL2Inbox

* contracts-bedrock: use TransientContext in CrossL2Inbox

* contracts-bedrock: fix L2Genesis test

* contracts-bedrock: minor tweaks to documentation in tests for CrossL2Inbox

* contracts-bedrock: relabel BLOCKNUMBER_SLOT to BLOCK_NUMBER_SLOT in CrossL2Inbox

* contracts-bedrock: update snapshots for CrossL2Inbox

* contracts-bedrock: update semver-lock for CrossL2Inbox

* contracts-bedrock: improve documentation for CrossL2Inbox

* contracts-bedrock: update semver-lock for CrossL2Inbox

* contracts-bedrock: fix tests for CrossL2Inbox

* contracts-bedrock: update modifier in CrossL2Inbox

* contracts-bedrock: drop arguments in custom errors for CrossL2Inbox

* contracts-bedrock: update snapshots for CrossL2Inbox

* contracts-bedrock: update semver-lock for CrossL2Inbox

* contracts-bedrock: fix tests for CrossL2Inbox

* contracts-bedrock: remove redundant lines in CrossL2Inbox

* contracts-bedrock: add tests for CrossL2Inbox

* contracts-bedrock: update semver-lock for CrossL2Inbox

* contracts-bedrock: minor improvements to tests for CrossL2Inbox

* contracts-bedrock: remove ENTERED_SLOT in CrossL2Inbox

* contracts-bedrock: remove CrossL2Inbox from isSupportedPredeploy

* contracts-bedrock: update semver-lock for CrossL2Inbox

* contracts-bedrock: update CrossL2Inbox with eip3074 specs

* contracts-bedrock: update tests for CrossL2Inbox with eip3074 specs

* contracts-bedrock: improve doc in tests for CrossL2Inbox

* contracts-bedrock: update snapshots for CrossL2Inbox

* contracts-bedrock: update semver-lock for CrossL2Inbox

* Add op-dispute-mon to images to build in golang-docker target (#10335)

* make: fix build (#10327)

Fixes the `make build` command to ensure that it
works. Previously it checked if the env var was set
for the nvm dir, but that doesn't guarantee there is
a file there. Run the nvm file if it exists after
checking that it exists. Can confirm that the
build command works for me now locally.

* op-bindings: more cleanup (#10328)

* op-bindings: more cleanup

Deletes the preview more file + registry and also
moves some `op-bindings` packages to `op-chain-ops`.
We have some duplicate types defined in `op-chain-ops`
that we can consolidate into the `foundry` and `solc`
packages in subsequent commits.

* build: fix

* op-bindings: delete more dead code (#10338)

* op-bindings: delete more dead code

Remove more dead code from the `op-bindings` package.
The only thing left are the generated bindings themselves
which can be moved to the packages that depend on them.
`op-e2e` may be the only remaining package that depends
on bindings.

The predeploy addresses still exist, there is a question
as to where they should live. Perhaps in `op-node` since
they are consensus critical parameters.

The etherscan client was moved into `op-chain-ops` because
it could be useful in the future but it should also be deleted
if it ends up not being used at all.

* indexer: fix build

* op-challenger: Apply game window to list-games (#10336)

Avoids it getting increasingly slower over time.

* op-dispute-mon: Add option to ignore games (#10334)

When a game is ignored because of this option it logs a warning and reports a count of ignored games via a new metric.

* op-challenger: Include resolution status in list-claims output (#10333)

* op-dispute-mon: Report valid and invalid claims and bonds by honest actors (#10316)

* op-dispute-mon: Report valid and invalid claims by honest actors

* op-dispute-mon: Report won, lost and pending bonds for honest actors

* op-dispute-mon: Exclude refunded bonds from winnings

* add missing FaultDisputeGame interface (#10306)

* maint(ct): clean up periphery deploy script (#10276)

Cleans up the deploy script for periphery contracts. Script was
a bit messy and we need a cleaned up version so that we can
safely deploy and manage Drippie for the Challenger.

* contracts-bedrock: small fix to cleanup L2 genesis (#10326)

* contracts-bedrock: small fix to cleanup L2 genesis

Adds a `run()` function to the L2 genesis generation script
so that its possible to run the command without the `--sig`
argument. Also resolve some linting isssues, semgrep has
a rule that prefers `@notice` over `@dev` for natspec comments.
Also use a foundry cheatcode to set the chainid during execution
to ensure that the correct chainid is set to remove the need to
set it as a cli flag.

* devnet: remove extra flag to foundry script

* contracts-bedrock: fix test

* contracts-bedrock: update config

Turns on funding of genesis accounts

* contracts-bedrock: fix broken test

* contracts-bedrock: cleanup

* Update Silent Patch Policy Broken Link (#10329)

* [op-conductor] make safe check interval optional (#10321)

* [op-conductor] make health check more robust (#10325)

* fpac: reserve spacer slot in OptimismPortal2 (#10279)

* fpac: reserve spacer slot in OptimismPortal2

Allows for merging of `OptimismPortal` that supports
custom gas token and also `OptimismPortal2` that has
a modified storage layout. The `OptimismPortal` has
spacers to account for the storage layout changes in
`OptimismPortal2` and it adds its new storage slot
at the location that the spacer is added in.

This faciliates the ability to merge the portal
codebases in the future.

* tests: fixup

* semver-lock: update

* genesis: fix permit2 panic (#10332)

* genesis: fix permit2 panic

Its possible that permit2 isn't in the genesis allocs even
though it should be, it removes the flexibility to define the
genesis spec arbitrarily if we implicitly enforce it being present.
We need a better way to check that the chain id during genesis
allocation matches the chain id in the genesis spec.
An attempt at this is done in https://github.com/ethereum-optimism/optimism/pull/10326.

Fixes https://github.com/ethereum-optimism/optimism/issues/10309

* op-chain-ops: better check

* cleanup: fix build

* build: fix

* feat/L2ToL2CrossDomainMessenger: create (#10297)

* contracts-bedrock: create CrossL2Inbox

* contracts-bedrock: create ICrossL2Inbox

* contracts-bedrock: create tests for CrossL2Inbox

* contracts-bedrock: update CrossL2Inbox sol version to ^0.8.24

* contracts-bedrock: rename test to .t.sol ext

* contracts-bedrock: make snapshots

* contracts-bedrock: update semver-lock

* contracts-bedrock: drop snapshots for CrossL2InboxTest

* contracts-bedrock: update license for tests CrossL2Inbox

* contracts-bedrock: add CrossL2Inbox to predeploys

* contracts-bedrock: pin sol version of CrossL2Inbox to 0.8.25

* contracts-bedrock: update semver-lock for CrossL2Inbox

* contracts-bedrock: add CROSS_L2_INBOX to predeploys

* contracts-bedrock: make slots internal in CrossL2Inbox

* contracts-bedrock: add custom errors to CrossL2Inbox

* contracts-bedrock: refactor tests for CrossL2Inbox

* contracts-bedrock: use TransientContext in CrossL2Inbox

* contracts-bedrock: fix L2Genesis test

* contracts-bedrock: minor tweaks to documentation in tests for CrossL2Inbox

* contracts-bedrock: relabel BLOCKNUMBER_SLOT to BLOCK_NUMBER_SLOT in CrossL2Inbox

* contracts-bedrock: update snapshots for CrossL2Inbox

* contracts-bedrock: update semver-lock for CrossL2Inbox

* contracts-bedrock: improve documentation for CrossL2Inbox

* contracts-bedrock: update semver-lock for CrossL2Inbox

* contracts-bedrock: fix tests for CrossL2Inbox

* contracts-bedrock: update modifier in CrossL2Inbox

* contracts-bedrock: drop arguments in custom errors for CrossL2Inbox

* contracts-bedrock: update snapshots for CrossL2Inbox

* contracts-bedrock: update semver-lock for CrossL2Inbox

* contracts-bedrock: fix tests for CrossL2Inbox

* contracts-bedrock: remove redundant lines in CrossL2Inbox

* contracts-bedrock: add tests for CrossL2Inbox

* contracts-bedrock: update semver-lock for CrossL2Inbox

* contracts-bedrock: minor improvements to tests for CrossL2Inbox

* contracts-bedrock: remove ENTERED_SLOT in CrossL2Inbox

* contracts-bedrock: remove CrossL2Inbox from isSupportedPredeploy

* contracts-bedrock: update semver-lock for CrossL2Inbox

* contracts-bedrock: update CrossL2Inbox with eip3074 specs

* contracts-bedrock: update tests for CrossL2Inbox with eip3074 specs

* contracts-bedrock: improve doc in tests for CrossL2Inbox

* contracts-bedrock: update snapshots for CrossL2Inbox

* contracts-bedrock: update semver-lock for CrossL2Inbox

* contracts-bedrock: create L2ToL2CrossDomainMessenger

* contracts-bedrock: create IL2ToL2CrossDomainMessenger

* contracts-bedrock: create tests for L2ToL2CrossDomainMessenger

* contracts-bedrock: make snapshots for L2ToL2CrossDomainMessenger

* contracts-bedrock: add semver-lock for L2ToL2CrossDomainMessenger

* contracts-bedrock: add L2ToL2CrossDomainMessenger to predeploys

* contracts-bedrock: make slots in L2ToL2CrossDomainMessenger internal

* contracts-bedrock: add reentrancy protection to L2ToL2CrossDomainMessenger

* contracts-bedrock: pin sol version of L2ToL2CrossDomainMessenger to 0.8.25

* contracts-bedrock: add custom errors to L2ToL2CrossDomainMessenger

* contracts-bedrock: add missing documentation in L2ToL2CrossDomainMessenger

* contracts-bedrock: reorder imports for L2ToL2CrossDomainMessenger

* contracts-bedrock: rename errors for L2ToL2CrossDomainMessenger

* contracts-bedrock: reorder vars in L2ToL2CrossDomainMessenger

* contracts-bedrock: refactor tests for L2ToL2CrossDomainMessenger

* contracts-bedrock: add L2_TO_L2_CROSS_DOMAIN_MESSENGER to predeploys

* contracts-bedrock: fix tests for L2ToL2CrossDomainMessenger

* contracts-bedrock: make snapshots for L2ToL2CrossDomainMessenger

* contracts-bedrock: update semver-lock for L2ToL2CrossDomainMessenger

* contracts-bedrock: reorder functions in L2ToL2CrossDomainMessenger

* contracts-bedrock: mock calls to target contract for L2ToL2CrossDomainMessenger tests

* contracts-bedrock: add additional checks to sendMessage in L2ToL2CrossDomainMessenger

* contracts-bedrock: update semver-lock for L2ToL2CrossDomainMessenger

* contracts-bedrock: minor tweaks to tests for L2ToL2CrossDomainMessenger

* contracts-bedrock: add TransientContext to L2ToL2CrossDomainMessenger

* contracts-bedrock: add reentrancy test for L2ToL2CrossDomainMessenger

* contracts-bedrock: improve tests for L2ToL2CrossDomainMessenger

* contracts-bedrock: improve documentation of tests for L2ToL2CrossDomainMessenger

* contracts-bedrock: fix L2Genesis test

* contracts-bedrock: update snapshots for L2ToL2CrossDomainMessenger

* contracts-bedrock: update semver-lock for L2ToL2CrossDomainMessenger

* contracts-bedrock: improve documentation for L2ToL2CrossDomainMessenger

* contracts-bedrock: fix test for L2ToL2CrossDomainMessenger

* contracts-bedrock: update snapshots for L2ToL2CrossDomainMessenger

* contracts-bedrock: update semver-lock for L2ToL2CrossDomainMessenger

* contracts-bedrock: fix tests for L2ToL2CrossDomainMessenger

* contracts-bedrock: update modifier in L2ToL2CrossDomainMessenger

* contracts-bedrock: remove legacy line in L2ToL2CrossDomainMessenger

* contracts-bedrock: add additional tests for L2ToL2CrossDomainMessenger

* contracts-bedrock: add assumePayable in tests for L2ToL2CrossDomainMessenger

* contracts-bedrock: fix test for L2ToL2CrossDomainMessenger

* contracts-bedrock: remove args from custom errors in L2ToL2CrossDomainMessenger

* contracts-bedrock: update snapshots for L2ToL2CrossDomainMessenger

* contracts-bedrock: update semver-lock for L2ToL2CrossDomainMessenger

* contracts-bedrock: remove ENTERED_SLOT in L2ToL2CrossDomainMessenger

* contracts-bedrock: remove L2ToL2CrossDomainMessenger from isSupportedPredeploy

* contracts-bedrock: update semver-lock for L2ToL2CrossDomainMessenger

* contracts-bedrock: update L2ToL2CrossDomainMessenger with eip3074 specs

* contracts-bedrock: add tests for 3074 changes on L2ToL2CrossDomainMessenger

* contracts-bedrock: add missing checks for L2ToL2CrossDomainMessenger

* contracts-bedrock: update semver-lock for L2ToL2CrossDomainMessenger

* contracts-bedrock: make SentMessage anonymous in L2ToL2CrossDomainMessenger

* contracts-bedrock: update semver-lock for L2ToL2CrossDomainMessenger

* contracts-bedrock: update snapshots for L2ToL2CrossDomainMessenger

* contracts-bedrock: fix title for TransientContext

* contracts-bedrock: use messageVersion instead of MESSAGE_VERSION in L2ToL2CrossDomainMessenger

* contracts-bedrock: reintroduce ReentrancyGuard to L2ToL2CrossDomainMessenger

* contracts-bedrock: update snapshots for L2ToL2CrossDomainMessenger

* contracts-bedrock: update semver-lock for contracts-bedrock: update snapshots for L2ToL2CrossDomainMessenger

* contracts-bedrock: remove TransientContext from L2ToL2CrossDomainMessenger

* contracts-bedrock: update snapshots for L2ToL2CrossDomainMessenger

* contracts-bedrock: update semver-lock for L2ToL2CrossDomainMessenger

* contracts-bedrock: fix tests for L2ToL2CrossDomainMessenger

* contracts-bedrock: update semver-lock for L2ToL2CrossDomainMessenger

* contracts-bedrock: fix tstore in L2ToL2CrossDomainMessenger

* contracts-bedrock: improve logic in L2ToL2CrossDomainMessenger

* contracts-bedrock: update snapshots for L2ToL2CrossDomainMessenger

* contracts-bedrock: update semver-lock L2ToL2CrossDomainMessenger

* contracts-bedrock: improve logic for L2ToL2CrossDomainMessenger

* contracts-bedrock: update snapshots for L2ToL2CrossDomainMessenger

* contracts-bedrock: update semver-lock for L2ToL2CrossDomainMessenger

* contracts-bedrock: simplify vars in tests for L2ToL2CrossDomainMessenger

* chore(op-service): reduce allocations (#10331)

* refactor: improve perf

* improve perf

* rollback

* rollback

---------

Co-authored-by: Khanh Hoa <khanhoait.bka@gmail.com>

* feat: Add extension event to `OptimismPortal2` (#10350)

* feat: Add extension event to `OptimismPortal2`

Adds an extension event to the `OptimismPortal2` that allows for easier
indexing of proven withdrawals by off-chain monitoring services.
Previously, in order to look up a proof for a withdrawal when syncing an
indexer, archival state access was required.

* semver lock

* contracts-bedrock: deployer as msg.sender (#10343)

* contracts-bedrock: deployer as msg.sender

Use a special deployer account for the execution of the L2 genesis
script. This should remove the need to set the sender as part
of the devnet.

* devnet: simplify

* contracts-bedrock: fix deployer

* contracts-bedrock: fix build

* build: fix

* contracts-bedrock: more generic prank

* contracts-bedrock: attempt fixup

* contracts-bedrock: set deployer nonce to 0

* contracts-bedrock: prank in genesis

* contracts-bedrock: fix build

* contracts-bedrock: fixup

* contracts-bedrock: fixup

* contracts-bedrock: fixup

* ensure conductor services are closed (#10347)

* docs: fix typo in `initializeOptimismMintableERC20Factory()` notice (#10354)

* op-service/eth: Optimize ssz decoding (#10362)

* Adds op-conductor to tag-tool (#10361)

* Adds op-conductor to actions tag-service.yaml (#10363)

* contracts-bedrock: L1Block interop (#10344)

* contracts-bedrock: L1Block interop

Ports the `L1Block` contract from the `feat/interop` branch to
develop using a pattern where we can extend the contracts.
This sort of pattern may not always work but is an experiment
in reducing feature branches.

* contracts-bedrock: reorder params for func in L1BlockInterop

* contracts-bedrock: add missing test for L1Block

* contracts-bedrock: refactor tests for L1BlockInterop

* contracts-bedrock: add L1BlockInterop to differential-testing.go

* contracts-bedrock: add test for testDiff_encodeSetL1BlockValuesInterop_succeeds in Encoding tests

* op-node: add L1BlockInterop to derive l1_block_info

* op-node: add FuzzL1InfoInteropRoundTrip

* op-node: add tests for L1Block to l1_block_info

* contracts-bedrock: update snapshots for L1Block, L1BlockInterop

* contracts-bedrock: update semver-lock for L1Block, L1BlockInterop

* Revert "op-node: add tests for L1Block to l1_block_info"

This reverts commit d2e599e43b774cf9a5de474db1f5aa744885ce91.

* Revert "op-node: add FuzzL1InfoInteropRoundTrip"

This reverts commit e14007c0fb7dd723bcd66235696da19e378fa974.

* Revert "op-node: add L1BlockInterop to derive l1_block_info"

This reverts commit 4bb279bb4a504227ca05de38818bfbddbdae3c98.

* Revert "contracts-bedrock: add test for testDiff_encodeSetL1BlockValuesInterop_succeeds in Encoding tests"

This reverts commit 12f9a07cd71d504b1ea57a753d95b8e6439caa57.

* Revert "contracts-bedrock: add L1BlockInterop to differential-testing.go"

This reverts commit 209669de69d35b456494602cb64ffc435689602d.

* contracts-bedrock: drop redundant test in tests for L1BlockInterop

* contracts-bedrock: fix order of function args in L1Block

* contracts-bedrock: update semver-lock for L1Block

---------

Co-authored-by: Diego <105765223+0xfuturistic@users.noreply.github.com>

* ctb: Enable setting custom names in deploySafe() (#10364)

* ctb: Enable setting custom names in deploySafe()

* Fix formatting

* ctb: fix spacing on deploySafe log

* feat: Squash libraries in dispute contracts (#10351)

* feat: Squash libraries in dispute contracts

Reorganizes the libraries in the dispute contracts to remove circular
dependencies. The existing dependency structure resolves within the
monorepo's environment, but not when the monorepo's contracts are
imported as a forge project dependency. This unblocks our ability to use
these contracts for post-checks in `superchain-ops`.

* Remove `IDisputeGame` dep in `LibUDT`

* semver lock

* fix(op-dispute-mon): Remove Delays Calculator (#10372)

* fix(op-dispute-mon): remove the delays calculator

* fix(op-challenger): resolution import

* feat(op-dispute-mon): Log Lost Bond Amount (#10371)

* feat: log bond amount in dispute mon honest actor loss

* Update op-dispute-mon/mon/claims.go

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* contracts-bedrock: log the commit hash in deploy script (#10369)

Ensures that the commit hash is logged as part of
the deploy script's execution so its easier to help
debug issues with it.

* chore(ctb): Fully remove `L2_OUTPUT_ORACLE_SLOT` (#10377)

Fully removes the legacy `L2_OUTPUT_ORACLE_SLOT`. Upon upgrade, this
slot will be cleared.

Co-authored-by: clabby <ben@clab.by>

* deps: update go libp2p (#10378)

Update deps

* contracts-bedrock: small logging cleanup (#10370)

Cleans up the logs in the L2 genesis generation script.
Very small fix just to clean things up. Also moves to
using `prank` of `start/stop` `prank` to catch hanging
calls to `prank` as if a prank is active you cannot call
`prank` but you can call `startPrank`. This ensures that
we know if a prank is active or not instead of one being
silently active.

* feat: custom gas token (#10143)

* contracts-bedrock: custom gas token L1 contracts

Implement the L1 contract diff of the custom gas token spec

Co-authored-by: Diego <105765223+0xfuturistic@users.noreply.github.com>

* contracts-bedrock: custom gas token L2 contracts

Implement the L2 contract diff of the custom gas token spec

Co-authored-by: Diego <105765223+0xfuturistic@users.noreply.github.com>

* contracts-bedrock: custom gas token contracts

Libraries and universal contracts in the custom gas token spec

Co-authored-by: Diego <105765223+0xfuturistic@users.noreply.github.com>

* contracts-bedrock: custom gas token scripts

Implement the scripts for the custom gas token spec

Co-authored-by: Diego <105765223+0xfuturistic@users.noreply.github.com>

* contracts-bedrock: custom gas token tests

Implement tests for the custom gas token spec

Co-authored-by: Diego <105765223+0xfuturistic@users.noreply.github.com>

* op-bindings: update with custom gas token

Co-authored-by: Diego <105765223+0xfuturistic@users.noreply.github.com>

* op-chain-ops: fixup tests

Co-authored-by: Diego <105765223+0xfuturistic@users.noreply.github.com>

* contracts-bedrock: snapshots

Update snapshots

Co-authored-by: Diego <105765223+0xfuturistic@users.noreply.github.com>

* cleanup: get tests passing

* contracts-bedrock: cleanup tests

* contracts-bedrock: cleanup custom gas token

* op-bindings: regenerate

* codesize: fix

* contracts-bedrock: custom gas token cleanup

Co-authored-by: Diego <105765223+0xfuturistic@users.noreply.github.com>

* build: fix

* custom-gas-token: fix build

* custom-gas-token: cleanup, final spec nits

* gas-snapshot: fix

* contracts-bedrock: cleanup

* contracts-bedrock: semver lock

* invariant-docs: fixup

* storage-layout: address

* bindings: remove preview

* bindings: add back bindingspreview

* weth: remove weth9

Migrate to WETH based on weth98

* contracts-bedrock: cleanup

* custom-gas-token: more cleanup

Fix abi

* contracts-bedrock: test case

* custom-gas-token: cleanup, tests

* lint: fix

* custom-gas-token: address review comments

* snapshots: regenerate

* lint: fix

* contracts-bedrock: clean up semantics of cgt

Custom gas token semantics are strengthened and
cleaned up to ensure invariants in spec are held
true.

* snapshots: regenerate

* snapshots: gas snapshot

* semver-lock: regenerate

* comments: address

* semver: calculate

* ctb: revert in test

* tests: fix flake

* portal: better comment

* test: fixup

* lint: fix

* snapshot: gas

---------

Co-authored-by: Diego <105765223+0xfuturistic@users.noreply.github.com>

* geth: update to v1.13.15 (#10353)

* point at op-geth v1.13.13

* update triedb import path

* update deprecated core structs to types package

* Update op-geth with tx pool fix.

* point at v1.13.14

* point at geth v1.13.15

* fix NewStackTrie call

* remove pin

* use op-geth v1.101315.0-rc.1

---------

Co-authored-by: Adrian Sutton <adrian@oplabs.co>

* Revert "feat: custom gas token (#10143)" (#10384)

This reverts commit a6074a7df33c6144a686c8881ec170c79d6b9125.

* contracts-bedrock: delete dead code (#10359)

* contracts-bedrock: simplify L1 state dump

Removes the need to specify the L1 chainid via CLI.
Follows similar patterns to L2 genesis generation that
were done recently.

Follow up PRs can potentially use the same sort of deployer pattern
as in https://github.com/ethereum-optimism/optimism/pull/10343
for when doing the L1 genesis dump to remove the need to specify the
private key.

* contracts-bedrock: explicit deploy config

Remove the concept of implicit deploy config for explicit deploy config.
This removes confusing implicit behavior as well as makes it much
more straight forward for deploying multiple superchain targets
to the same L1. This is a breaking change but the error message
makes it very obvious and the docs are being updated in a way
that should include this information.

* contracts-bedrock: fix possible error

* config: cleanup

* deploy-config: fixup

* contracts-bedrock: delete name function

The `name()` function existed due to legacy
purposes when dealing with hardhat artifacts
and no longer is necessary. This commit removes
it in favor of a simpler approach of just using
the chainid instead of the name. The files that
are written are not committed into the repo.

* contracts: delete dead code

* lint: fix

* kontrol: fixup

* contracts-bedrock: prevent error

* kontrol: fixup

* kontrol: fix script

* gitignore: update

* devnet: simplify

* Update packages/contracts-bedrock/scripts/Config.sol

Co-authored-by: Matt Solomon <matt@mattsolomon.dev>

---------

Co-authored-by: Matt Solomon <matt@mattsolomon.dev>

* op-chain-ops: unwrap l1 and l2 allocs (#10387)

* feat: annotate assembly as memory safe (#10386)

* op-e2e: Fix flaky fault proof tests (#10389)

Custom config options were being applied before the defaults, causing them to be overwritten.
In particular this meant there was a small sequencer window and safe head progressed rapidly.

* �Deploy Security Council Safe and Liveness Extensions (#10120)

* ctb: Add deploySecurityCouncilSafe

* ctb: Allow _callViaSafe to use an arbitrary safe address

* ctb: Refactor Security Council deploy

Adds console.log calls

Uses the new _callViaSafe to reduce a lot of boilerplate

* ctb: Add livenessModuleInterval to deploy config

* ctb: Add livenessModuleThresholdPercentage to deploy config

* ctb: Add LivenessModuleMinOwners to deploy config

* ctb: Add council safe config and satisfy liveness module constructor

* ctb: Make liveness deploy funcs public

* Add DeployOwnership.sol

* Use deploySafe(name) to deploy SC and Foundation

* ctb: just use addr_ on all named returns

* ctb: Fix create2 collision in deploySafe

* ctb: Add example foundation config

* ctb: Add example council config and set it up

* ctb: Remove unused imports

* ctb: Address feedback on deploy ownership

* Add override for deploySafe with custom owners and threshold

ctb: Use the deploySafe override where applicable

* ctb: cleanup keepDeployer logic

* fixup! Add override for deploySafe with custom owners and threshold

* snapshots

* op-chain-ops: allocs validation (#10388)

Skip check for codesize on gov token address if governance is
not enabled.

* ci: Move sdk-next-test to run on develop only (#10390)

It requires env vars that aren't set for external PRs.

* feat(ctb): Promote FP contracts to first major version (#10382)

Promotes the fault proof contracts that are semantically versioned to
`1.0.0`, in preparation for the upcoming deployment.

* cannon: Adjust initial heap (#10376)

* cannon: Adjust initial heap start

This gives the program more memory to work with; minimizing the chance
of heap/stack corruption.

* Update cannon/mipsevm/patch.go

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

---------

Co-authored-by: clabby <ben@clab.by>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* op-dispute-mon: Add metric to report timestamp of last invalid proposal (#10373)

* ctb: Add deployDeputyGuardian (#10207)

* ctb: Deploy DeputyGuardianModule

WIP: need to fix superchainconfig address issue

* ctb: Expand security council config

* op-chain-ops: Add unclaimed game credits script (#10367)

* op-chain-ops: Add unclaimed game credits script

`unclaimed-credits` computes the unclaimed credits across all games and
who is eligible to claim them.

Useful for superchain-ops actions.

* account for step creditors

* dispute-mon: Set claim statuses that no longer have games back to 0 (#10391)

* Reapply "feat: custom gas token (#10143)" (#10384) (#10395)

Now that the fault proof contracts release has happened, we
can merge in the custom gas token changes.

This reverts commit 2b1c99b39744579cc226077d356ae9e5f162db4a.

* contracts-bedrock: fix commit hash serialization (#10383)

Previous implementation didn't correctly serialize as string
so it came out as unreadable, now we make sure to abi encode
and decode correctly. Enables us to know which commit the code
runs on to help with debugging.

* op-program: Add v1.0.0 to set of reproducibility checks (#10403)

* chore: Remove the logs from `stderr` and `stdout`. (#10352)

* deps: bump slither to 0.10.2 (#10411)

slither is currently erroring in CI with a strange error.
This bumps `slither` to the latest release in an attempt to
fix that issue.

The issue is described here: https://github.com/ethereum-optimism/optimism/pull/10410

The release can be found here: https://github.com/crytic/slither/releases

This needs a release of `ci-builder` followed up to get the new version
of slither running in CI.

* op-conductor: fixes proposer outputAtBlock rpc arg compatability (#10393)

* build(deps): bump github.com/ethereum/go-ethereum in /proxyd (#10413)

Bumps [github.com/ethereum/go-ethereum](https://github.com/ethereum/go-ethereum) from 1.13.14 to 1.13.15.
- [Release notes](https://github.com/ethereum/go-ethereum/releases)
- [Commits](https://github.com/ethereum/go-ethereum/compare/v1.13.14...v1.13.15)

---
updated-dependencies:
- dependency-name: github.com/ethereum/go-ethereum
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* call ec.Close() (#10412)

* chore(ctb): Update sepolia devnet 0 deploy config (#10396)

## Overview

Updates the sepola devnet 0 deploy config's absolute prestate value to
match that of `op-program/v1.0.0`'s tag.

### Verification

1. `git checkout op-program/v1.0.0`
1. In the monorepo root, run `make reproducible-prestsate`
1. Compare the resulting prestate hash with the one in this PR.

* remove outOfData variable (#10405)

* ci: `ci-builder:0.49.0` (#10414)

* ci: `ci-builder:0.49.0`

Includes a bump of slither

https://github.com/ethereum-optimism/optimism/pull/10411

* ci: slither github action bump version

* op-chain-ops: delete memdb (#10404)

* op-chain-ops: delete memdb

The simple in memory statedb implementation that was
backed by a genesis has served us well but is no longer
required since we build the genesis files using foundry.
This was originally used to enable simple execution to
deploy contracts and then dump into a `genesis.json`.
Keeping this memdb around will only bloat PRs that update
the geth version as they may change the interface to the
statedb. Instead of using the memdb interface, the genesis
is modified directly.

* lint: fix

* style: way better

Co-authored-by: protolambda <proto@protolambda.com>

* build: fix

* build: fix

---------

Co-authored-by: protolambda <proto@protolambda.com>

* Docker-targets v2 (#10346)

* Revert "Revert "Merge pull request #8242 from ethereum-optimism/go-docker-targets""

This reverts commit d972c46010b507a0a3ab5b1d3f9032422e028339.

It also fixes up some conflicts / inconsistencies,
 since op-conductor was added after the original revert.

* ops: experimental cross-build fixes

* Retrieve git tag in Circle CI and use to set op version within docker image

* Update dispute-mon and da-server to use new docker build flow

* Fix GIT_VERSION script in Circle CI config.yml

* Update ops-bedrock docker-compose to use new docker build flow

* Load pre-built op-challenger image in devnet tests

* Save op-challenger.tar to avoid docker rebuild in devnet tests

* Add Circle CI job for check-cross-platform

* Allow env var to override VERSION in Makefiles

* Pass version to op-program components except op-program-client

* Wrap all docker-bake variable names in quotes

---------

Co-authored-by: protolambda <proto@protolambda.com>

* slither: bump ci versions (#10410)

Since slither seems to be failing consistently in CI, try bumping the
versions of the tooling.

Bumps to latest slither github action release: https://github.com/crytic/slither-action/releases/tag/v0.4.0

Meant to fix the slither issue seen in https://github.com/ethereum-optimism/optimism/pull/10408

```
[-] SARIF output enabled, writing to results.sarif.
[-] Slither config provided: packages/contracts-bedrock/slither.config.json
[-] SLITHERARGS provided. Running slither with extra arguments
'forge clean' running (wd: /github/workspace/packages/contracts-bedrock)
'forge config --json' running
'forge build --build-info --skip */test/** */scripts/** --force' running (wd: /github/workspace/packages/contracts-bedrock)
Traceback (most recent call last):
  File "/opt/slither/bin/slither", line 8, in <module>
    sys.exit(main())
  File "/opt/slither/lib/python3.9/site-packages/slither/__main__.py", line 753, in main
    main_impl(all_detector_classes=detectors, all_printer_classes=printers)
  File "/opt/slither/lib/python3.9/site-packages/slither/__main__.py", line 859, in main_impl
    ) = process_all(filename, args, detector_classes, printer_classes)
  File "/opt/slither/lib/python3.9/site-packages/slither/__main__.py", line 107, in process_all
    ) = process_single(compilation, args, detector_classes, printer_classes)
  File "/opt/slither/lib/python3.9/site-packages/slither/__main__.py", line 80, in process_single
    slither = Slither(target, ast_format=ast, **vars(args))
  File "/opt/slither/lib/python3.9/site-packages/slither/slither.py", line 156, in __init__
    sol_parser.parse_top_level_items(ast, path)
  File "/opt/slither/lib/python3.9/site-packages/slither/solc_parsing/slither_compilation_unit_solc.py", line 326, in parse_top_level_items
    get_imported_scope = self.compilation_unit.get_scope(import_directive.filename)
  File "/opt/slither/lib/python3.9/site-packages/slither/core/compilation_unit.py", line 282, in get_scope
    filename = self._crytic_compile_compilation_unit.crytic_compile.filename_lookup(
  File "/opt/slither/lib/python3.9/site-packages/crytic_compile/crytic_compile.py", line 283, in filename_lookup
    raise ValueError(f"{filename} does not exist")
ValueError: lib/openzeppelin-contracts/contracts/utils/Context.sol does not exist
```

* fix(op-dispute-mon): Claim ID and Clock Logging (#10415)

* fix(op-dispute-mon): log the claim id to validate the claim during investigation

* fix(op-dispute-mon): log the clock value as well

* Dispute game compatible wd mon (#10375)

* adding  fault-wd-mon

* adding faultproof wd-mon

* adding faultproof wd-mon

* fixing docker file

* fixing how we get disputegame given a withdrawal log

* code review fix

* fix type

* only FundDevAccounts when DeployConfig.FundDevAccounts is true (#10432)

* contracts-bedrock: add useInterop flag (#10433)

* bedrock-devnet: add useInterop flag

* op-chain-ops: add useInterop flag

* op-node: add useInterop flag to config

* contracts-bedrock: add useInterop flag to DeployConfig

* contracts-bedrock: add useInterop flag to Predeploy's getName

* contracts-bedrock: add useInterop flag to L2Genesis

* contracts-bedrock: add useInterop flag to Predeploy's test

* contracts-bedrock: add useInterop flag to CommonTest

* contracts-bedrock: add useInterop flag to Setup

* Revert "op-chain-ops: add useInterop flag"

This reverts commit 83c63cc63bcccf15c8f2e7d7c4f74d0316abcdae.

* Revert "op-node: add useInterop flag to config"

This reverts commit c3617f9fd8ae4777cf4f13dd399167f0718cd9d1.

* Revert "bedrock-devnet: add useInterop flag"

This reverts commit 858257c8666af70586e6f40a510b2a0ff3056bcb.

* contracts-bedrock: use L1Block in Predeploys for L1BlockInterop

* contracts-bedrock: update gas-snapshot

* op-chain-ops: add UseInterop flag to genesis DeployConfig

* contracts-bedrock: remove useInterop argument in Predeploys

* op-chain-ops: make UseInterop flag optional

Co-Authored-By: protolambda <proto@protolambda.com>

---------

Co-authored-by: protolambda <proto@protolambda.com>

* fix(op-dispute-mon): Unresolved Claim Logging (#10394)

* fix(op-dispute-mon): unresolved claim logging

* fix(op-dispute-mon): lints

* fix(op-dispute-mon): unresolved claim logging

* fix(op-dispute-mon): move resolution response buffer to a constant

* op-node: Implement fjord RLP & Channel Bank Size limit Increases (#10357)

* op-node: Increase MaxChannelBankSize with Fjord

This also creates a ChainSpec object which is responsible for returning protocol
parameters. We use a different object than the rollup.Config because the config
is primarily a disk representation & does not concern itself with protocol constants.

* op-node: Increase MaxRLPBytesPerChannel with Fjord

* fix(op-dispute-mon): Improve Resolution Status Granularity (#10419)

* stash resolution status

* fix(op-dispute-mon): resolution status metric

* fix(op-dispute-mon): add logs for resolvable games

* cannon: remove final dep on bindings (#10408)

* cannon: remove final dep on bindings

Removes the last dependency that cannon has on `op-bindings/bindings`.
This is done my creating reusable code for reading foundry artifacts
from disk. This code should be reusable between any service that wants
to read the foundry artifacts from disk. This includes roundtrip
tests for JSON serialization of the foundry artifacts.

* op-chain-ops: address semgrep

https://github.com/golang/go/issues/22967

* chore(ctb): Update sepolia deploy config (#10418)

* fix(op-dispute-mon): export forecast to keep exporting consistent (#10430)

* Challenger: Pull large preimage proposals from tx logs (#10416)

* challenger: Pull large preimages from tx logs

* challenger: Add a few more fetcher unit tests

* challenger: Implement review fixes related to slice handling, types

* challenger: Clean up fetcher changes

* op-challenger: Make l2-eth-rpc and rollup-rpc required (#10445)

* op-challenger: Make l2-eth-rpc required for all trace types.

Add rollupEndpoint to NewConfig signature since it was already always required.

* op-e2e: Remove rollup and l2-eth-rpc params from WithCannon and WithAlphabet

* op-challenger: Integrate challenging L2 block numbers (#10446)

* op-challenger: Make l2-eth-rpc required for all trace types.

Add rollupEndpoint to NewConfig signature since it was already always required.

* op-e2e: Remove rollup and l2-eth-rpc params from WithCannon and WithAlphabet

* op-challenger: Integrate challenging L2 block numbers

* add to L2Genesis Interop contracts (CrossL2Inbox, L2ToL2CrossDomainMessenger) (#10417)

* bedrock-devnet: add useInterop flag

* op-chain-ops: add useInterop flag

* op-node: add useInterop flag to config

* contracts-bedrock: add useInterop flag to Predeploy's getName

* contracts-bedrock: add useInterop flag to L2Genesis

* contracts-bedrock: add useInterop flag to Predeploy's test

* contracts-bedrock: add useInterop flag to Setup

* Revert "op-chain-ops: add useInterop flag"

This reverts commit 83c63cc63bcccf15c8f2e7d7c4f74d0316abcdae.

* Revert "op-node: add useInterop flag to config"

This reverts commit c3617f9fd8ae4777cf4f13dd399167f0718cd9d1.

* Revert "bedrock-devnet: add useInterop flag"

This reverts commit 858257c8666af70586e6f40a510b2a0ff3056bcb.

* contracts-bedrock: use L1Block in Predeploys for L1BlockInterop

* contracts-bedrock: remove useInterop argument in Predeploys

* op-chain-ops: fix TestConfigDataMarshalUnmarshal

* contracts-bedrock: add CrossL2Inbox, L2ToL2CrossDomainMessenger to L2Genesis script

* contracts-bedrock: add tests for interop branch of L2Genesis

* Revert "op-chain-ops: fix TestConfigDataMarshalUnmarshal"

This reverts commit fbc60c1fed796d03837dd674406b3aa63445deeb.

* proxyd: remove unused error (#10444)

* contracts-bedrock: fix deposit gas limit (#10449)

* contracts-bedrock: fix deposit gas limit

Ensures that the gas limit is high enough for the system
deposit to go through. The previous gas limit was slightly
too small. This ups it so that we are sure the system deposit
goes through.

* contracts-bedrock: fix test

* feat(ctb): Extra monitoring events in `OptimismPortal2` (#10423)

Adds extra monitoring events into the `OptimismPortal2` for a dispute
game being blacklisted and the resepected game type being set.

* fix(op-challenger): use op challenger env var prefix (#10442)

* feat(op-challenger): sort the games listing subcommand (#10454)

* feat(op-dispute-mon): Contract Creation Failure Metric (#10447)

* feat(op-dispute-mon): contract creation failure metric

* fix(op-dispute-mon): log the game address for easier investigation

* feat(ctb): Add new move type to FDG for OR counters (#10438)

* feat(ctb): Add new move type to FDG for OR counters

Adds a potential new move type to the `FaultDisputeGame` that allows for
a participant to reveal the preimage of the claimed output root to
display to the dispute game that the claimed L2 block number does not
match up with the block number that the block header within the output
root commits to.

The root output can be challenged with the new special move type iff:
1. The passed `OutputRootProof` hashes to equal the claimed output root.
1. The passed Header RLP hashes to equal the block hash within the
`OutputRootProof` above.
1. The claimed block number in the dispute game does not equal the block
number that the output root commits to.

If there is a successful challenge with the new move type, that claim
itself is inserted as a special case counter. In `resolveClaim`, the
contract will always consider the creator of the L2 block challenge the
winner of the bond. Notably, this only applies for the root claim
subgame.

* feat(ctb): Transition `RLPReader` to 4byte errors (#10439)

* feat(ctb): Transition `RLPReader` to 4byte errors

* semver

* update summary

* portal semver

* extra checks

* contracts-bedrock: deprecate `finalizeDeposit` (#10459)

The [finalizeDeposit](https://github.com/ethereum-optimism/optimism/blob/b9eb669aa5dfc36204ce2167da2e5ab8bbde61de/packages/contracts-bedrock/src/L2/L2StandardBridge.sol#L147)
function is left over from the legacy OVM style standard bridge.
It is impossible to be called as the bridge has moved to the modern interface which is based on `finalizeBridgeETH` or `finalizeBridgeERC20`.

Methods actually used in bridge:

- [finalizeBridgeETH](https://github.com/ethereum-optimism/optimism/blob/b9eb669aa5dfc36204ce2167da2e5ab8bbde61de/packages/contracts-bedrock/src/universal/StandardBridge.sol#L333)
- [finalizeBridgeERC20](https://github.com/ethereum-optimism/optimism/blob/b9eb669aa5dfc36204ce2167da2e5ab8bbde61de/packages/contracts-bedrock/src/universal/StandardBridge.sol#L379)

Proof that finalizeDeposit is not used anywhere. Its defined in the L2StandardBridge and otherwise only in tests.

```
git grep -rin finalizeDeposit
snapshots/abi/L2StandardBridge.json:272:    "name": "finalizeDeposit",
src/L2/L2StandardBridge.sol:147:    function finalizeDeposit(
test/L2/L2StandardBridge.t.sol:523:    /// @dev Tests that `finalizeDeposit` succeeds. It should:
test/L2/L2StandardBridge.t.sol:527:    function test_finalizeDeposit_depositingERC20_succeeds() external {
test/L2/L2StandardBridge.t.sol:544:        l2StandardBridge.finalizeDeposit(address(L1Token), address(L2Token), alice, alice, 100, hex"");
test/L2/L2StandardBridge.t.sol:547:    /// @dev Tests that `finalizeDeposit` succeeds when depositing ERC20 with custom gas token.
test/L2/L2StandardBridge.t.sol:548:    function test_finalizeDeposit_depositingERC20_customGasToken_reverts() external {
test/L2/L2StandardBridge.t.sol:559:        l2StandardBridge.finalizeDeposit(address(L1Token), address(L2Token), alice, alice, 100, hex"");
test/L2/L2StandardBridge.t.sol:562:    /// @dev Tests that `finalizeDeposit` succeeds when depositing ETH.
test/L2/L2StandardBridge.t.sol:563:    function test_finalizeDeposit_depositingETH_succeeds() external {
test/L2/L2StandardBridge.t.sol:579:        l2StandardBridge.finalizeDeposit{ value: 100 }(
test/L2/L2StandardBridge.t.sol:584:    /// @dev Tests that `finalizeDeposit` reverts when depositing ETH with custom gas token.
test/L2/L2StandardBridge.t.sol:585:    function test_finalizeDeposit_depositingETH_customGasToken_reverts() external {
test/L2/L2StandardBridge.t.sol:594:        l2StandardBridge.finalizeDeposit(address(0), Predeploys.LEGACY_ERC20_ETH, alice, alice, 100, hex"");
test/L2/L2StandardBridge.t.sol:597:    /// @dev Tests that `finalizeDeposit` reverts if the amounts do not match.
test/L2/L2StandardBridge.t.sol:610:    /// @dev Tests that `finalizeDeposit` reverts if the receipient is the other bridge.
test/L2/L2StandardBridge.t.sol:623:    /// @dev Tests that `finalizeDeposit` reverts if the receipient is the messenger.
```

There cannot be third party integrations since it is `onlyBridge`,
meaning only the `L1StandardBridge` can call it.

This commit removes the tests and the function from the
`L2StandardBridge`. This is part of refactoring as we go,
ensuring that the code stays clean. Tend the garden.

* feat(ctb): Expose `l2BlockNumberChallenger` (#10463)

## Overview

Exposes the `l2BlockNumberChallenger` in the fault dispute game.

* op-dispute-mon: Enrich games in parallel (#10461)

* op-dispute-mon: Enrich games in parallel

Reports any failure to retrieve data in the failed metric since it results in the game being skipped.

* op-dispute-mon: Make max concurrency configurable

Simplify the code a bit.

* op-dispute-mon: Add numbers to log

* op-dispute-mon: Reduce default max concurrency

* op-dispute-mon: Add metric for monitor duration

* op-challenger: Implement block number challenge calls in contract bindings (#10462)

* custom-gas-token: add e2e test (#10440)

* add tests for activating custom gas token and bridging tokens to l2

* update test following concurrent change in SystemConfig ABI

* update systemconfig bindings

steps to reproduce:

git checkout  v1.7.3 -- op-bindings

remove WETH9 from artifacts.json

cd op-bindings

make bindgen-generate-local

select this one file discard the others

* use require.NoError instead of require.Nil

* build: fix

* refactor using setup + subtests

* add assertions for WETH name and symbol getters

* minor changes in response to review

* devnet-allocs: use sender with known private key

some e2e tests require the ability to transact as the system owner safe owner, so we can't use the foundry default sender (private key unknown)

This uses the same address as "Deployer"

* use deployer as Safe owner

* WIP refactor test

* add most of the remaining test assertions

* rename file

* flatten out subtests

we want to specify a strict ordering of operations

* complete checkWithdrawal step

* reorder test steps

* check both ETH and token balances on l1 during withdraw

* simplify callViaSafe helper

* factor out expectations

* add some extra boilerplate to track TransactionDeposited event

and GasPayingTokenSet event on L2

* remove comments

* remove wayward line

* flatten out sub test

* add comment to devnet forge script command

* remove version check on systemConfig

* update systemconfig bindings

steps to reproduce:

git checkout  v1.7.3 -- op-bindings

remove WETH9 from artifacts.json

cd op-bindings

make bindgen-generate-local

select this one file discard the others

* skip TestCustomGasToken when UseFPAC is true

* use differente helper to skip test

* harmonize use of context.Background{}

* tidy up and add comments

* remove cfg.DeployConfig.FinalizationPeriodSeconds = 2

* remove log lines

* use decimal instead of hex

---------

Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com>

* op-dispute-mon: Fetch output root agreement in extract stage (#10464)

* op-dispute-mon: Enrich games in parallel

Reports any failure to retrieve data in the failed metric since it results in the game being skipped.

* op-dispute-mon: Make max concurrency configurable

Simplify the code a bit.

* op-dispute-mon: Add numbers to log

* op-dispute-mon: Reduce default max concurrency

* op-dispute-mon: Add metric for monitor duration

* op-dispute-mon: Fetch output root agreement in extract stage

Removes the last HTTP call from the transform stage and allows the calls to be done in parallel.

* op-node: Start EL sync even when the genesis is finalized (#10457)

* dependabot(gomod): bump golang.org/x/crypto from 0.21.0 to 0.23.0 (#10420)

* dependabot(gomod): bump golang.org/x/crypto from 0.21.0 to 0.23.0

Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.21.0 to 0.23.0.
- [Commits](https://github.com/golang/crypto/compare/v0.21.0...v0.23.0)

---
updated-dependencies:
- dependency-name: golang.org/x/crypto
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* deps: update

* deps: update

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com>

* op-challenger: Add a metric for number of l2 block numbers challenged. (#10482)

* op-chain-ops: decouple from bindings (#10466)

* op-chain-ops: decouple from bindings

Another commit that removes bindings from `op-chain-ops`.
The entire repo is very close to being completely decoupled
from having a global set of bindings. This does have a little
bit of code duplication, but it generally results in a more
simple layout.

Both the `crossdomain` and `upgrades` package end up with their
own `bindings` package. The `crossdomain` package is mostly
legacy but the `indexer` still depends on it. The `indexer`
is in maintenance mode, after reth exex it makes a lot of sense
to build indexers directly into reth. The `crossdomain` package
uses the bindings to migrate and serialize L1 to L2 cross domain
messages. These bindings never need to be updated.

The `upgrades` package has a justfile added that can be used to
regenerate the bindings. This makes it easier to generate bindings
based on a specific release. Previously the `upgrades` bindings
were coupled in a strange way and backwards compatibility
hacks needed to exist. Now the team working on upgrades can update
the bindings however they want so the proper upgrade can easily
be generated.

* upgrades: error case

Since the AddressList doesn't have the `DisputeGameFactory`
yet, it cannot be pulled into the upgrade scripts. Instead
return an error so that we MUST update it.

https://github.com/ethereum-optimism/superchain-registry/blob/110e744c97b4873384ad2da365c281639fc0668e/superchain/superchain.go#L194

* Fix makefile fuzz targets on osx (#10476)

* op-dispute-mon: Ensure a zero value is set for sufficient/insufficient labels (#10481)

If the collateral for a DelayedWETH contract is sufficient and then becomes insufficient, we need to zero out the metric with the sufficient label and set the values on the insufficient labelled version.

* op-challenger: Fix highest_acted_l1_block metric (#10485)

Completed games weren't updating their latest acted block because they don't get scheduled which meant the metric always reported 0.

* op-proposer: update test to use local bindings (#10473)

Updates a single import to use the `op-proposer` bindings
instead of the global monorepo bindings. The big consumer
of the bindings after this are `op-e2e` and some tests
in `op-service`.

* op-service: decouple from `op-bindings` (#10491)

This moves the ERC20 bindings that the `op-service` tests
depend on into the `test` package that already exists.
This ensures that these bindings can always exist safely and
be used as part of the tests.

* op-chain-ops: update bindings import (#10490)

Updates another import to reference local bindings
rather than global bindings. This test isn't
going to need to worry about having its bindings be
updated.

* Update conf_depth.go (#10487)

Don't apply the conf depth if l1Head is empty (as it is during the startup case before the l1State is initialized)

* cannon: fix a typo in fuzz test (#10488)

* Test setup results of DeployOwnership script (#10397)

* ctb: Test ownership setup scripts

* ctb: Add nested config of modules

* Add guard and module checks

* Update packages/contracts-bedrock/scripts/DeployOwnership.s.sol

Co-authored-by: Matt Solomon <matt@mattsolomon.dev>

---------

Co-authored-by: Matt Solomon <matt@mattsolomon.dev>

* contracts-bedrock: portal opaque data test (#10443)

* contracts-bedrock: add deposit event coverage

Adds deposit event differential coverage for the two
different places where the deposit tx event exists.
This ensures that a valid event ends up getting emitted.
Also modularizes the code for serializing the event so that
there are not footguns when computing the "opaque data".

* contracts-bedrock: revert diff to portal

Removes the diff to the portal, perhaps we want it
but test still passes without it

* contracts-bedrock: lint

* test: improve

* tests: update

* tests: fixup

* semver: fix

* lint: fix

* Fjord: Implement max sequencer drift change to a constant (#10465)

* op-node/rollup: Add MaxSequencerDrift to ChainSpec

* op-node/rollup,op-e2e: Use spec max seq drift instead of config

* op-node/rollup: Showcase feature/fork separation pattern with seq drift change

* op-node/driver: add origin selector Fjord test

* op-node/rollup: refactor batch validation test

prepare to allow for general modification of rollup config

* op-node/rollup: add batch validation test

* Update op-node/rollup/types.go

Co-authored-by: Joshua Gutow <jgutow@oplabs.co>

* op-node/rollup/derive: add Fjord span batch validation test

---------

Co-authored-…
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.

4 participants