2024-07-optimism
Science Score: 26.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (7.2%) to scientific vocabulary
Repository
Basic Info
- Host: GitHub
- Owner: code-423n4
- License: mit
- Language: Go
- Default Branch: main
- Size: 24.1 MB
Statistics
- Stars: 6
- Watchers: 2
- Forks: 8
- Open Issues: 0
- Releases: 0
Metadata Files
README.md
Optimism Superchain audit details
- Total Prize Pool: 200,000 $OP + $80,000 in USDC
- Open Competition Pool: 200,000 $OP
- HM awards: 194,700 $OP*
- QA awards: 5,000 $OP
- Scout awards: 300 $OP
- Pro League Side Pool: $80,000 in USDC
- Join C4 Discord to register
- Submit findings using the C4 form
- Read our guidelines for more details
- Starts July 15, 2024 20:00 UTC
- Ends July 29, 2024 20:00 UTC
**Breakdown for HM awards:* - 5% Hunter bonus (10,000 $OP) - 5% Gatherer bonus (10,000 $OP) - 10% Dark Horse bonus (20,000 $OP) - HM awards (154,700 $OP)
Dark Horse bonus: - Everyone competes against Pro League teams in order to win a Dark Horse bonus (ranking by HM award algorithm). - The Dark Horse bonus is distributed from the HM pool. - 10% of the total awards (20,000) are split amongst everyone who beats or ties one Pro League team. (If no one beats or ties a Pro League team, no Dark Horse bonus is awarded.)
Pro League side pool: - Pro League side pool is split 60/40 among Pro League teams based on their Gatherer score. - Pro League teams also compete for a portion of HM awards but are not eligible for Hunter/Gatherer/Dark Horse bonuses.
Note: The judge/validator is performing their role for $0 in order to maximize the awards pool.
Automated Findings / Publicly Known Issues
All issues from the Spearbit Coinbase audit and the Sherlock Fault Proof Safeguards audit (including this list of out of scope issues that focused on the Fault Dispute Game) are considered known, including:
loadPrecompilePreimagePart()can be called with too little gas so that the precompile reverts and the result overwrites valid data, which can be used to prove an invalid execution trace.If the contract is configured so that
SPLIT_DEPTH + 1 = MAX_DEPTHand the last game step is a defend action, ancestor lookup can misbehave and lead to an out of bounds array access.If an attacker has more funds than the honest defender, they can continually open more subgames until the defender runs out of money and the challenger takes all their bonds (aka proof of whale).
If a defender is going to lose the game, they can call
challengeRootL2Block()on themselves, and they will get priority and take their own top level bond payout, instead of paying them to the real challenger.The Go program cannot garbage collect on the MIPS VM, with garbage collection symbols explicitly patched out. Theoretically this could allow for overflowing the heap.
The 4naly3er report can be found here.
Note for C4 wardens: Anything included in this Automated Findings / Publicly Known Issues section is considered a publicly known issue and is ineligible for awards.
Overview
Welcome to the Fault Dispute Game competitive audit!
Optimism deployed its Fault Dispute Game on Mainnet last month, with many carefully audited safeguards surrounding the game to protect the protocol in the event of a exploit. As they move towards confidence in removing those safeguards, one of the key pieces is a competitive audit with the ecosystem's top talent.
This is where you come in.
What Is A Fault Dispute Game?
At a high level, the Fault Dispute Game is a contract that allows anyone to post an ETH bond along with a claim about an output root that represents the state of L2.
If nobody challenges the claim for a period of time, it is accepted, and the root is considered valid. This means that users can withdraw ETH through the bridge based on the state represented by that root.
If someone does challenge the claim, the game enters a dispute phase. The challenger and the defender play a "bisection game" to determine which L2 block the disagree on (continually adding more bonds as they go), and then play a further game to get down to the individual trace instruction in the block executed in a MIPS VM that caused the disagreement. From there, the Solidity contract can execute that instruction to determine who was right.
The winner gets the bonds and, if the winner is the defender, their claim is considered valid.
What Are The Current Safeguards?
Currently, there are two safeguards in place around this game:
1) After a game is settled, there is a time period during which withdrawals against that output root are not allowed. This gives the Optimism team time to respond and reject the claim if an exploit has occurred in the game.
2) Similarly, after a game is settled, all the ETH that should be paid out is held in a DelayedWETH contract. It can similarly be reassigned by the Optimism team in the event of an exploit.
What Is The Goal of This Audit?
For the sake of this audit, you should pretend the safeguards don't exist.
We aren't looking for ways to get around the safeguards, or bugs in the Optimism Portal (although those would both be eligible through Optimism's bug bounty program).
Instead, we are looking for any flaws in the game and MIPS VM logic.
In other words: - Can a dishonest actor ever prove a false claim? - Can an honest actor ever fail to prove a true claim? - Does the game misbehave in any other ways that could cause problems if there were no safeguards?
How Does Optimism Work?
To understand the context for how Optimism works (and where this Fault Dispute Game fits in), please see the following resources:
1) Norswap's Bedrock Whitepaper: While this is slightly outdated (it's from before the Fault Dispute Game and before EIP4844 enabled blobs), it's the most understandable overview of the full Optimism protocol from end to end.
2) Optimism Specs: These specs are the most precise definition of how each part of the Optimism protocol workss. The Fault Proof section of the specs will be particularly relevant for this audit.
3) Code Walkthrough (11:30am ET on 7/15): A video walkthrough of the Fault Dispute Game code by Clabby (one of the core developers of the fault game), explaining how the contracts were and how they fit into the larger system.
A Note on POCs
Because many issues submitted in this audit will be about complex interactions between the Attacker and Challenger, it is important that POCs accurately demonstrate this logic.
To that end, please use the E2E Cannon Tests as a starting point for all POCs that involve interactions between various actors. See Running tests for more detailed instructions.
Forge tests are acceptable for any POCs that only need to demonstrate small or isolated properties, but the smart contract test suite is not configured with the full honest challenger behavior nor does it use the actual fault proof VM as the step function. POCs that try to prove complex behavior with Forge tests will not be accepted.
Links
- Previous audits: There was a Sherlock contest on the safeguards around the Fault Dispute Game. Some issues in the game itself were submitted, despite being out of scope. There was also a Spearbit Coinbase audit.
- Documentation: https://specs.optimism.io/fault-proof/stage-one/fault-dispute-game.html
- Website: https://optimism.io/
- X/Twitter: https://twitter.com/Optimism
- Discord: https://discord.com/invite/optimism
Scope
Files in scope
| Contract | SLOC | |--------------------------------------|----------| | src/dispute/FaultDisputeGame.sol | 469 | | src/dispute/DisputeGameFactory.sol | 125 | | src/cannon/MIPS.sol | 690 | | src/cannon/PreimageOracle.sol | 470 | | src/cannon/PreimageKeyLib.sol | 26 | | src/cannon/libraries/CannonTypes.sol | 67 | | TOTAL | 1847 |
Note the current version of the contracts are deployed on Mainnet to:
| Contract | Address | |-------------------------------------|--------------------------------------------| | DisputeGameFactory (proxy) | 0xe5965Ab5962eDc7477C8520243A95517CD252fA9 | | DisputeGameFactory (implementation) | 0xc641a33cab81c559f2bd4b21ea34c290e2440c2b | | FaultDisputeGame (implementation) | 0x4146DF64D83acB0DcB0c1a4884a16f090165e122 | | MIPS | 0x0f8EdFbDdD3c0256A80AD8C0F2560B1807873C9c | | PreimageOracle | 0xD326E10B8186e90F4E2adc5c13a2d0C137ee8b34 |
(All other Optimism contract addresses can be found here: https://docs.optimism.io/chain/addresses)
Files out of scope
Any file not listed in the table above is out of scope for this audit.
While the rest of the repo may be useful to look at for context, and for implications of how bugs in the Fault Dispute Game might be exploited, this audit is focused only on issues from the in scope contracts themselves.
If other issues are found, Optimism has an active bug bounty program where they can be submitted.
Scoping Q & A
General questions
| Question | Answer | | --------------------------------------- | ---------------------------- | | ERC20 used by the protocol | None | | Test coverage | - | | ERC721 used by the protocol | None | | ERC777 used by the protocol | None | | ERC1155 used by the protocol | None | | Chains the protocol will be deployed on | Ethereum |
External integrations (e.g., Uniswap) behavior in scope:
| Question | Answer | | --------------------------------------------------------- | ------ | | Enabling/disabling fees (e.g. Blur disables/enables fees) | No | | Pausability (e.g. Uniswap pool gets paused) | No | | Upgradeability (e.g. Uniswap gets upgraded) | No |
EIP compliance checklist
N/A
Additional context
Main invariants
1) Honest actors should always be able to win the Fault Dispute Game. 2) Dishonest actors should never be able to win the Fault Dispute Game.
Attack ideas (where to focus for bugs)
1) The Fault Dispute Game logic is complex. Is there any way to get it to misbehave such that an invalid claim is accepted, or a valid claim is rejected? 2) The Fault Dispute Game relies heavily on the game clock. Is there a way to trick the game clock such that an honest actor can be forced to time out? 3) The on chain MIPS processor must reflect the execution trace created by the offchain op-program. Is it always accurate? 4) The Preimage Oracle is trusted to only provide accurate data. Is there a way to get invalid data added and use it to prove an invalid execution trace?
All trusted roles in the protocol
There are trusted roles in the protocol (for example, enforcing the safeguards on the in scope contracts), but they aren't relevant for the scope of this audit, which focuses exclusively on whether the game can be made to resolve incorrectly.
Describe any novel or unique curve logic or mathematical models implemented in the contracts:
N/A
Running tests
Dependencies: 1. Golang compiler (v1.21.1) 2. Rust compiler (>= 1.75.0) 3. pnpm (any version) 4. foundry suite (version = 63fff3510408b552f11efb8196f48cfe6c1da664)
bash
git clone https://github.com/code-423n4/2024-07-optimism
cd 2024-07-optimism/packages/contracts-bedrock
To run Foundry tests: ``` forge install pnpm build:go-ffi
running tests for the entire bedrock contracts would take a while, the following command
would filter only to the dispute tests
forge test --mp "dispute" ```
To run e2e tests: ```
from the root of the project
make install-geth make cannon-prestate make devnet-allocs
from the op-e2e folder
make test-cannon ```
If tests are failing for an unknown reason:
- ensure you have the latest version of foundry installed: pnpm update:foundry (requires jq to be installed)
- try deleting the packages/contracts-bedrock/forge-artifacts directory
- if the above step doesn't fix the error, try pnpm clean
Miscellaneous
Employees of Optimism and employees' family members are ineligible to participate in this audit.
Owner
- Name: Code4rena
- Login: code-423n4
- Kind: organization
- Website: https://code4rena.com/
- Twitter: code4rena
- Repositories: 631
- Profile: https://github.com/code-423n4
GitHub Events
Total
- Watch event: 1
- Fork event: 1
Last Year
- Watch event: 1
- Fork event: 1
Dependencies
- 442 dependencies
- alloy-rlp 0.3.4 development
- anyhow 1.0.80
- serde 1.0.197
- serde_json 1.0.114
- alpine 3.18 build
- golang 1.21.1-alpine3.18 build
- grafana/grafana latest
- postgres 14.1
- prom/prometheus latest
- $OP_STACK_GO_BUILDER latest build
- alpine 3.18 build
- $OP_STACK_GO_BUILDER latest build
- alpine 3.18 build
- base-builder latest build
- debian bullseye-slim build
- docker latest build
- $TARGET_BASE_IMAGE latest build
- builder latest build
- golang 1.21.3-alpine3.18 build
- nginx 1.25-alpine
- quarry/sentinel latest
- us-docker.pkg.dev/oplabs-tools-artifacts/images/da-server devnet
- us-docker.pkg.dev/oplabs-tools-artifacts/images/op-batcher devnet
- us-docker.pkg.dev/oplabs-tools-artifacts/images/op-challenger devnet
- us-docker.pkg.dev/oplabs-tools-artifacts/images/op-node devnet
- us-docker.pkg.dev/oplabs-tools-artifacts/images/op-proposer devnet
- alpine 3.18 build
- golang 1.21.3-alpine3.18 build
- ../../.. *
- golang.org/x/crypto v0.23.0
- golang.org/x/sys v0.20.0
- github.com/davecgh/go-spew v1.1.1
- github.com/pmezard/go-difflib v1.0.0
- github.com/stretchr/testify v1.9.0
- golang.org/x/crypto v0.23.0
- golang.org/x/sys v0.20.0
- gopkg.in/yaml.v3 v3.0.1
- github.com/BurntSushi/toml v1.3.2
- github.com/DataDog/zstd v1.5.2
- github.com/Microsoft/go-winio v0.6.1
- github.com/VictoriaMetrics/fastcache v1.12.1
- github.com/allegro/bigcache v1.2.1
- github.com/andybalholm/brotli v1.1.0
- github.com/armon/go-metrics v0.4.1
- github.com/benbjohnson/clock v1.3.5
- github.com/beorn7/perks v1.0.1
- github.com/bits-and-blooms/bitset v1.10.0
- github.com/boltdb/bolt v1.3.1
- github.com/btcsuite/btcd v0.24.0
- github.com/btcsuite/btcd/btcec/v2 v2.2.0
- github.com/btcsuite/btcd/btcutil v1.1.5
- github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0
- github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f
- github.com/cespare/xxhash/v2 v2.2.0
- github.com/cockroachdb/errors v1.11.1
- github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b
- github.com/cockroachdb/pebble v0.0.0-20231018212520-f6cde3fc2fa4
- github.com/cockroachdb/redact v1.1.5
- github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06
- github.com/consensys/bavard v0.1.13
- github.com/consensys/gnark-crypto v0.12.1
- github.com/containerd/cgroups v1.1.0
- github.com/coreos/go-systemd/v22 v22.5.0
- github.com/cpuguy83/go-md2man/v2 v2.0.2
- github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233
- github.com/crate-crypto/go-kzg-4844 v0.7.0
- github.com/davecgh/go-spew v1.1.1
- github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c
- github.com/deckarep/golang-set/v2 v2.1.0
- github.com/decred/dcrd/crypto/blake256 v1.0.1
- github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0
- github.com/deepmap/oapi-codegen v1.8.2
- github.com/dgraph-io/ristretto v0.0.3-0.20200630154024-f66de99634de
- github.com/dlclark/regexp2 v1.7.0
- github.com/docker/go-units v0.5.0
- github.com/dop251/goja v0.0.0-20230806174421-c933cf95e127
- github.com/dustin/go-humanize v1.0.1
- github.com/elastic/gosigar v0.14.2
- github.com/ethereum-optimism/go-ethereum-hdwallet v0.1.3
- github.com/ethereum-optimism/op-geth v1.101315.2-rc.1
- github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240603085035-9c8f6081266e
- github.com/ethereum/c-kzg-4844 v0.4.0
- github.com/fatih/color v1.15.0
- github.com/felixge/fgprof v0.9.3
- github.com/ferranbt/fastssz v0.1.2
- github.com/fjl/memsize v0.0.2
- github.com/flynn/noise v1.1.0
- github.com/francoispqt/gojay v1.2.13
- github.com/fsnotify/fsnotify v1.7.0
- github.com/gballet/go-libpcsclite v0.0.0-20191108122812-4678299bea08
- github.com/gballet/go-verkle v0.1.1-0.20231031103413-a67434b50f46
- github.com/getsentry/sentry-go v0.18.0
- github.com/go-chi/chi/v5 v5.0.12
- github.com/go-chi/docgen v1.2.0
- github.com/go-ole/go-ole v1.3.0
- github.com/go-sourcemap/sourcemap v2.1.3+incompatible
- github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572
- github.com/goccy/go-json v0.10.2
- github.com/godbus/dbus/v5 v5.1.0
- github.com/gofrs/flock v0.8.1
- github.com/gogo/protobuf v1.3.2
- github.com/golang-jwt/jwt/v4 v4.5.0
- github.com/golang/protobuf v1.5.3
- github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb
- github.com/google/go-cmp v0.6.0
- github.com/google/gofuzz v1.2.1-0.20220503160820-4a35382e8fc8
- github.com/google/gopacket v1.1.19
- github.com/google/pprof v0.0.0-20240207164012-fb44976bdcd5
- github.com/google/uuid v1.6.0
- github.com/gorilla/websocket v1.5.1
- github.com/graph-gophers/graphql-go v1.3.0
- github.com/hashicorp/errwrap v1.1.0
- github.com/hashicorp/go-bexpr v0.1.11
- github.com/hashicorp/go-hclog v1.6.2
- github.com/hashicorp/go-immutable-radix v1.0.0
- github.com/hashicorp/go-msgpack v0.5.5
- github.com/hashicorp/go-msgpack/v2 v2.1.1
- github.com/hashicorp/go-multierror v1.1.1
- github.com/hashicorp/golang-lru v0.5.0
- github.com/hashicorp/golang-lru/arc/v2 v2.0.7
- github.com/hashicorp/golang-lru/v2 v2.0.7
- github.com/hashicorp/raft v1.6.1
- github.com/hashicorp/raft-boltdb v0.0.0-20231211162105-6c830fa4535e
- github.com/holiman/billy v0.0.0-20240216141850-2abb0c79d3c4
- github.com/holiman/bloomfilter/v2 v2.0.3
- github.com/holiman/uint256 v1.2.4
- github.com/huin/goupnp v1.3.0
- github.com/influxdata/influxdb-client-go/v2 v2.4.0
- github.com/influxdata/influxdb1-client v0.0.0-20220302092344-a9ab5670611c
- github.com/influxdata/line-protocol v0.0.0-20210311194329-9aa0e372d097
- github.com/ipfs/go-cid v0.4.1
- github.com/ipfs/go-datastore v0.6.0
- github.com/ipfs/go-ds-leveldb v0.5.0
- github.com/ipfs/go-log/v2 v2.5.1
- github.com/jackc/pgio v1.0.0
- github.com/jackc/pgpassfile v1.0.0
- github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a
- github.com/jackc/pgtype v1.14.3
- github.com/jackc/pgx/v5 v5.6.0
- github.com/jackc/puddle/v2 v2.2.1
- github.com/jackpal/go-nat-pmp v1.0.2
- github.com/jbenet/go-temp-err-catcher v0.1.0
- github.com/jbenet/goprocess v0.1.4
- github.com/jedisct1/go-minisign v0.0.0-20230811132847-661be99b8267
- github.com/jinzhu/inflection v1.0.0
- github.com/jinzhu/now v1.1.5
- github.com/karalabe/usb v0.0.3-0.20230711191512-61db3e06439c
- github.com/klauspost/compress v1.17.8
- github.com/klauspost/cpuid/v2 v2.2.7
- github.com/koron/go-ssdp v0.0.4
- github.com/kr/pretty v0.3.1
- github.com/kr/text v0.2.0
- github.com/lib/pq v1.10.9
- github.com/libp2p/go-buffer-pool v0.1.0
- github.com/libp2p/go-flow-metrics v0.1.0
- github.com/libp2p/go-libp2p v0.35.0
- github.com/libp2p/go-libp2p-asn-util v0.4.1
- github.com/libp2p/go-libp2p-mplex v0.9.0
- github.com/libp2p/go-libp2p-pubsub v0.11.0
- github.com/libp2p/go-libp2p-testing v0.12.0
- github.com/libp2p/go-mplex v0.7.0
- github.com/libp2p/go-msgio v0.3.0
- github.com/libp2p/go-nat v0.2.0
- github.com/libp2p/go-netroute v0.2.1
- github.com/libp2p/go-reuseport v0.4.0
- github.com/libp2p/go-yamux/v4 v4.0.1
- github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd
- github.com/mattn/go-colorable v0.1.13
- github.com/mattn/go-isatty v0.0.20
- github.com/mattn/go-runewidth v0.0.14
- github.com/miekg/dns v1.1.58
- github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b
- github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc
- github.com/minio/md5-simd v1.1.2
- github.com/minio/minio-go/v7 v7.0.70
- github.com/minio/sha256-simd v1.0.1
- github.com/mitchellh/mapstructure v1.5.0
- github.com/mitchellh/pointerstructure v1.2.1
- github.com/mmcloughlin/addchain v0.4.0
- github.com/mr-tron/base58 v1.2.0
- github.com/multiformats/go-base32 v0.1.0
- github.com/multiformats/go-base36 v0.2.0
- github.com/multiformats/go-multiaddr v0.12.4
- github.com/multiformats/go-multiaddr-dns v0.3.1
- github.com/multiformats/go-multiaddr-fmt v0.1.0
- github.com/multiformats/go-multibase v0.2.0
- github.com/multiformats/go-multicodec v0.9.0
- github.com/multiformats/go-multihash v0.2.3
- github.com/multiformats/go-multistream v0.5.0
- github.com/multiformats/go-varint v0.0.7
- github.com/naoina/go-stringutil v0.1.0
- github.com/naoina/toml v0.1.2-0.20170918210437-9fafd6967416
- github.com/olekukonko/tablewriter v0.0.5
- github.com/onsi/ginkgo/v2 v2.15.0
- github.com/onsi/gomega v1.31.1
- github.com/opencontainers/runtime-spec v1.2.0
- github.com/opentracing/opentracing-go v1.2.0
- github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58
- github.com/peterh/liner v1.1.1-0.20190123174540-a2c9a5303de7
- github.com/pion/datachannel v1.5.6
- github.com/pion/dtls/v2 v2.2.11
- github.com/pion/ice/v2 v2.3.24
- github.com/pion/interceptor v0.1.29
- github.com/pion/logging v0.2.2
- github.com/pion/mdns v0.0.12
- github.com/pion/randutil v0.1.0
- github.com/pion/rtcp v1.2.14
- github.com/pion/rtp v1.8.6
- github.com/pion/sctp v1.8.16
- github.com/pion/sdp/v3 v3.0.9
- github.com/pion/srtp/v2 v2.0.18
- github.com/pion/stun v0.6.1
- github.com/pion/transport/v2 v2.2.5
- github.com/pion/turn/v2 v2.1.6
- github.com/pion/webrtc/v3 v3.2.40
- github.com/pkg/errors v0.9.1
- github.com/pkg/profile v1.7.0
- github.com/pmezard/go-difflib v1.0.0
- github.com/prometheus/client_golang v1.19.1
- github.com/prometheus/client_model v0.6.1
- github.com/prometheus/common v0.48.0
- github.com/prometheus/procfs v0.12.0
- github.com/quic-go/qpack v0.4.0
- github.com/quic-go/quic-go v0.44.0
- github.com/quic-go/webtransport-go v0.8.0
- github.com/raulk/go-watchdog v1.3.0
- github.com/rivo/uniseg v0.4.3
- github.com/rogpeppe/go-internal v1.10.0
- github.com/rs/cors v1.9.0
- github.com/rs/xid v1.5.0
- github.com/russross/blackfriday/v2 v2.1.0
- github.com/shirou/gopsutil v3.21.11+incompatible
- github.com/spaolacci/murmur3 v1.1.0
- github.com/status-im/keycard-go v0.2.0
- github.com/stretchr/objx v0.5.2
- github.com/stretchr/testify v1.9.0
- github.com/supranational/blst v0.3.11
- github.com/syndtr/goleveldb v1.0.1-0.20220614013038-64ee5596c38a
- github.com/tklauser/go-sysconf v0.3.12
- github.com/tklauser/numcpus v0.6.1
- github.com/tyler-smith/go-bip39 v1.1.0
- github.com/urfave/cli/v2 v2.27.1
- github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673
- github.com/yusufpapurcu/wmi v1.2.3
- go.uber.org/automaxprocs v1.5.2
- go.uber.org/dig v1.17.1
- go.uber.org/fx v1.21.1
- go.uber.org/mock v0.4.0
- go.uber.org/multierr v1.11.0
- go.uber.org/zap v1.27.0
- golang.org/x/crypto v0.23.0
- golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842
- golang.org/x/mod v0.17.0
- golang.org/x/net v0.25.0
- golang.org/x/sync v0.7.0
- golang.org/x/sys v0.20.0
- golang.org/x/term v0.20.0
- golang.org/x/text v0.15.0
- golang.org/x/time v0.5.0
- golang.org/x/tools v0.21.0
- google.golang.org/protobuf v1.34.1
- gopkg.in/ini.v1 v1.67.0
- gopkg.in/natefinch/lumberjack.v2 v2.0.0
- gopkg.in/yaml.v2 v2.4.0
- gopkg.in/yaml.v3 v3.0.1
- gorm.io/driver/postgres v1.5.7
- gorm.io/gorm v1.25.10
- lukechampine.com/blake3 v1.2.1
- rsc.io/tmplfunc v0.0.3
- 923 dependencies
- github.com/BurntSushi/toml v1.3.2
- github.com/DataDog/zstd v1.5.5
- github.com/Microsoft/go-winio v0.6.1
- github.com/VictoriaMetrics/fastcache v1.12.1
- github.com/alicebob/gopher-json v0.0.0-20230218143504-906a9b012302
- github.com/alicebob/miniredis v2.5.0+incompatible
- github.com/beorn7/perks v1.0.1
- github.com/bits-and-blooms/bitset v1.10.0
- github.com/btcsuite/btcd/btcec/v2 v2.3.2
- github.com/cespare/xxhash/v2 v2.2.0
- github.com/cockroachdb/errors v1.11.1
- github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b
- github.com/cockroachdb/pebble v0.0.0-20231020221949-babd592d2360
- github.com/cockroachdb/redact v1.1.5
- github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06
- github.com/consensys/bavard v0.1.13
- github.com/consensys/gnark-crypto v0.12.1
- github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233
- github.com/crate-crypto/go-kzg-4844 v0.7.0
- github.com/davecgh/go-spew v1.1.1
- github.com/deckarep/golang-set/v2 v2.3.1
- github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0
- github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f
- github.com/emirpasic/gods v1.18.1
- github.com/ethereum/c-kzg-4844 v0.4.0
- github.com/ethereum/go-ethereum v1.13.15
- github.com/gballet/go-verkle v0.1.1-0.20231031103413-a67434b50f46
- github.com/getsentry/sentry-go v0.25.0
- github.com/go-ole/go-ole v1.3.0
- github.com/go-redsync/redsync/v4 v4.10.0
- github.com/gofrs/flock v0.8.1
- github.com/gogo/protobuf v1.3.2
- github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb
- github.com/gomodule/redigo v1.8.9
- github.com/gorilla/mux v1.8.0
- github.com/gorilla/websocket v1.5.0
- github.com/hashicorp/errwrap v1.1.0
- github.com/hashicorp/go-multierror v1.1.1
- github.com/hashicorp/golang-lru v1.0.2
- github.com/holiman/bloomfilter/v2 v2.0.3
- github.com/holiman/uint256 v1.2.4
- github.com/klauspost/compress v1.17.1
- github.com/kr/pretty v0.3.1
- github.com/kr/text v0.2.0
- github.com/mattn/go-runewidth v0.0.15
- github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0
- github.com/mmcloughlin/addchain v0.4.0
- github.com/olekukonko/tablewriter v0.0.5
- github.com/pkg/errors v0.9.1
- github.com/pmezard/go-difflib v1.0.0
- github.com/prometheus/client_golang v1.17.0
- github.com/prometheus/client_model v0.5.0
- github.com/prometheus/common v0.45.0
- github.com/prometheus/procfs v0.12.0
- github.com/redis/go-redis/v9 v9.2.1
- github.com/rivo/uniseg v0.4.4
- github.com/rogpeppe/go-internal v1.11.0
- github.com/rs/cors v1.10.1
- github.com/shirou/gopsutil v3.21.11+incompatible
- github.com/stretchr/testify v1.8.4
- github.com/supranational/blst v0.3.11
- github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7
- github.com/tklauser/go-sysconf v0.3.12
- github.com/tklauser/numcpus v0.6.1
- github.com/xaionaro-go/weightedshuffle v0.0.0-20211213010739-6a74fbc7d24a
- github.com/yuin/gopher-lua v1.1.0
- github.com/yusufpapurcu/wmi v1.2.3
- golang.org/x/crypto v0.17.0
- golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa
- golang.org/x/mod v0.14.0
- golang.org/x/sync v0.5.0
- golang.org/x/sys v0.16.0
- golang.org/x/text v0.14.0
- golang.org/x/tools v0.15.0
- google.golang.org/protobuf v1.33.0
- gopkg.in/yaml.v3 v3.0.1
- rsc.io/tmplfunc v0.0.3
- 188 dependencies
- tsup ^8.0.1 development
- vitest ^1.2.2 development
- @babel/eslint-parser ^7.23.10 development
- @changesets/changelog-github ^0.4.8 development
- @types/chai ^4.3.11 development
- @types/chai-as-promised ^7.1.8 development
- @types/mocha ^10.0.6 development
- @types/node ^20.11.17 development
- @typescript-eslint/eslint-plugin ^6.21.0 development
- @typescript-eslint/parser ^6.21.0 development
- chai ^4.3.10 development
- depcheck ^1.4.7 development
- doctoc ^2.2.0 development
- eslint ^8.56.0 development
- eslint-config-prettier ^9.1.0 development
- eslint-config-standard ^16.0.3 development
- eslint-plugin-import ^2.29.1 development
- eslint-plugin-jsdoc ^48.0.6 development
- eslint-plugin-node ^11.1.0 development
- eslint-plugin-prefer-arrow ^1.2.3 development
- eslint-plugin-prettier ^4.0.0 development
- eslint-plugin-promise ^5.1.0 development
- eslint-plugin-react ^7.24.0 development
- eslint-plugin-unicorn ^50.0.1 development
- husky ^9.0.10 development
- lint-staged 15.2.0 development
- mocha ^10.2.0 development
- nx 18.2.2 development
- nx-cloud latest development
- nyc ^15.1.0 development
- prettier ^2.8.0 development
- rimraf ^5.0.5 development
- ts-mocha ^10.0.0 development
- typescript ^5.4.5 development
- wait-on ^7.2.0 development
- @changesets/cli ^2.27.1
- @ethersproject/abstract-provider ^5.7.0 development
- @nomiclabs/hardhat-ethers ^2.2.3 development
- @nomiclabs/hardhat-waffle ^2.0.6 development
- hardhat ^2.20.1 development
- ts-node ^10.9.2 development
- tsx ^4.7.0 development
- @eth-optimism/common-ts ^0.8.9
- @eth-optimism/contracts-bedrock workspace:*
- @eth-optimism/contracts-periphery 1.0.8
- @eth-optimism/core-utils ^0.13.2
- @eth-optimism/sdk ^3.3.1
- @types/dateformat ^5.0.0
- chai-as-promised ^7.1.1
- dateformat ^4.5.1
- dotenv ^16.4.5
- ethers ^5.7.2
- @typescript-eslint/eslint-plugin ^6.21.0 development
- @typescript-eslint/parser ^6.21.0 development
- tsx ^4.7.0 development
- typescript ^5.4.5 development
- @ethersproject/abstract-provider ^5.7.0 development
- @ethersproject/abstract-signer ^5.7.0 development
- @ethersproject/transactions ^5.7.0 development
- @nomiclabs/hardhat-ethers ^2.2.3 development
- @nomiclabs/hardhat-waffle ^2.0.1 development
- @types/chai ^4.3.11 development
- @types/chai-as-promised ^7.1.8 development
- @types/mocha ^10.0.6 development
- @types/node ^20.11.17 development
- @types/semver ^7.5.7 development
- chai-as-promised ^7.1.1 development
- ethereum-waffle ^4.0.10 development
- ethers ^5.7.2 development
- hardhat ^2.20.1 development
- hardhat-deploy ^0.12.2 development
- isomorphic-fetch ^3.0.0 development
- mocha ^10.2.0 development
- nyc ^15.1.0 development
- ts-node ^10.9.2 development
- typedoc ^0.25.7 development
- typescript ^5.4.5 development
- viem ^2.8.13 development
- vitest ^1.2.2 development
- zod ^3.22.4 development
- @eth-optimism/contracts 0.6.0
- @eth-optimism/core-utils ^0.13.2
- lodash ^4.17.21
- merkletreejs ^0.3.11
- rlp ^2.2.7
- semver ^7.6.0
- 353 dependencies
- Deprecated ==1.2.13
- PyGithub ==1.57
- PyJWT ==2.6.0
- PyNaCl ==1.5.0
- certifi ==2023.7.22
- cffi ==1.15.1
- charset-normalizer ==2.1.1
- idna ==3.7
- pycparser ==2.21
- requests ==2.32.0
- urllib3 ==1.26.18
- wrapt ==1.14.1
- click ==8.1.3
- semver ==3.0.0