diff --git a/.circleci/config.yml b/.circleci/config.yml index a1eafd47fed6f..18cb8772c215c 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -62,19 +62,10 @@ parameters: ai_contracts_test_dispatch: type: boolean default: false - kona_dispatch: + rust_ci_dispatch: type: boolean default: false - op_alloy_dispatch: - type: boolean - default: false - alloy_op_hardforks_dispatch: - type: boolean - default: false - alloy_op_evm_dispatch: - type: boolean - default: false - op_reth_dispatch: + rust_e2e_dispatch: type: boolean default: false github-event-type: @@ -140,30 +131,14 @@ workflows: .* flake-shake-workers << pipeline.parameters.flake-shake-workers >> .circleci/continue/main.yml .* go-cache-version << pipeline.parameters.go-cache-version >> .circleci/continue/main.yml - kona/.* kona_dispatch << pipeline.parameters.kona_dispatch >> .circleci/continue/kona.yml - kona/.* default_docker_image << pipeline.parameters.default_docker_image >> .circleci/continue/kona.yml - kona/.* base_image << pipeline.parameters.base_image >> .circleci/continue/kona.yml - kona/.* go-cache-version << pipeline.parameters.go-cache-version >> .circleci/continue/kona.yml - kona/.* default_docker_image << pipeline.parameters.default_docker_image >> .circleci/continue/rust-ci.yml - - op-alloy/.* op_alloy_dispatch << pipeline.parameters.op_alloy_dispatch >> .circleci/continue/op-alloy.yml - op-alloy/.* default_docker_image << pipeline.parameters.default_docker_image >> .circleci/continue/op-alloy.yml - op-alloy/.* default_docker_image << pipeline.parameters.default_docker_image >> .circleci/continue/rust-ci.yml - - alloy-op-hardforks/.* alloy_op_hardforks_dispatch << pipeline.parameters.alloy_op_hardforks_dispatch >> .circleci/continue/alloy-op-hardforks.yml - alloy-op-hardforks/.* default_docker_image << pipeline.parameters.default_docker_image >> .circleci/continue/alloy-op-hardforks.yml - alloy-op-hardforks/.* default_docker_image << pipeline.parameters.default_docker_image >> .circleci/continue/rust-ci.yml - - alloy-op-evm/.* alloy_op_evm_dispatch << pipeline.parameters.alloy_op_evm_dispatch >> .circleci/continue/alloy-op-evm.yml - alloy-op-evm/.* default_docker_image << pipeline.parameters.default_docker_image >> .circleci/continue/alloy-op-evm.yml - alloy-op-evm/.* base_image << pipeline.parameters.base_image >> .circleci/continue/alloy-op-evm.yml - alloy-op-evm/.* default_docker_image << pipeline.parameters.default_docker_image >> .circleci/continue/rust-ci.yml + rust/.* rust_ci_dispatch << pipeline.parameters.rust_ci_dispatch >> .circleci/continue/rust-ci.yml + rust/.* default_docker_image << pipeline.parameters.default_docker_image >> .circleci/continue/rust-ci.yml + rust/.* base_image << pipeline.parameters.base_image >> .circleci/continue/rust-ci.yml + rust/.* go-cache-version << pipeline.parameters.go-cache-version >> .circleci/continue/rust-ci.yml - op-reth/.* op_reth_dispatch << pipeline.parameters.op_reth_dispatch >> .circleci/continue/op-reth.yml - op-reth/.* default_docker_image << pipeline.parameters.default_docker_image >> .circleci/continue/op-reth.yml - op-reth/.* base_image << pipeline.parameters.base_image >> .circleci/continue/op-reth.yml - op-reth/.* go-cache-version << pipeline.parameters.go-cache-version >> .circleci/continue/op-reth.yml - op-reth/.* default_docker_image << pipeline.parameters.default_docker_image >> .circleci/continue/rust-ci.yml + rust/.* rust_e2e_dispatch << pipeline.parameters.rust_e2e_dispatch >> .circleci/continue/rust-e2e.yml + rust/.* default_docker_image << pipeline.parameters.default_docker_image >> .circleci/continue/rust-e2e.yml + rust/.* go-cache-version << pipeline.parameters.go-cache-version >> .circleci/continue/rust-e2e.yml setup-tag: when: diff --git a/.circleci/continue/alloy-op-evm.yml b/.circleci/continue/alloy-op-evm.yml deleted file mode 100644 index 131d7a0c51769..0000000000000 --- a/.circleci/continue/alloy-op-evm.yml +++ /dev/null @@ -1,118 +0,0 @@ -version: 2.1 - -# Alloy-op-evm CI Continuation Configuration -# This file contains ONLY alloy-op-evm-specific jobs and workflows. -# It is merged with main.yml and rust-ci.yml when alloy-op-evm/** changes are detected. -# Shared orbs, commands, and jobs come from main.yml and rust-ci.yml during merge. - - -parameters: - # Required parameters (also in main.yml, merged during continuation) - alloy_op_evm_dispatch: - type: boolean - default: false - -# ============================================================================ -# ALLOY-OP-EVM WORKFLOWS -# ============================================================================ -workflows: - # Alloy-op-evm main CI workflow (runs on push to main, pull_request) - # Only runs when changes are detected in the alloy-op-evm folder - alloy-op-evm-ci: - when: - or: - - equal: ["webhook", << pipeline.trigger_source >>] - - and: - - equal: [true, <>] - - equal: ["api", << pipeline.trigger_source >>] - jobs: - # Build (shared job from main.yml) - - rust-build-binary: - name: alloy-op-evm-build - directory: alloy-op-evm - context: &alloy-op-evm-job-context - - circleci-repo-readonly-authenticated-github-token - - # Test jobs (shared) - - rust-ci-cargo-tests: - context: *alloy-op-evm-job-context - name: alloy-op-evm-test-no-default-features - directory: alloy-op-evm - flags: "--no-default-features" - - rust-ci-cargo-tests: - context: *alloy-op-evm-job-context - name: alloy-op-evm-test-default - directory: alloy-op-evm - - rust-ci-cargo-tests: - context: *alloy-op-evm-job-context - name: alloy-op-evm-test-all-features - directory: alloy-op-evm - flags: "--all-features" - - # Doc tests (shared job) - - rust-ci-doctest: - name: alloy-op-evm-doctest - directory: alloy-op-evm - command: | - cargo test --workspace --doc - cargo test --all-features --workspace --doc - context: *alloy-op-evm-job-context - - # WASM builds (shared job) - - rust-ci-cargo-hack-build: - name: alloy-op-evm-wasm-unknown - directory: alloy-op-evm - target: wasm32-unknown-unknown - flags: "--workspace --ignore-unknown-features --features ws --no-default-features" - context: *alloy-op-evm-job-context - - rust-ci-cargo-hack-build: - name: alloy-op-evm-wasm-wasi - directory: alloy-op-evm - target: wasm32-wasip1 - context: *alloy-op-evm-job-context - - # Feature checks (shared job) - - rust-ci-cargo-hack: - name: alloy-op-evm-feature-checks - directory: alloy-op-evm - flags: "--feature-powerset --depth 1" - context: *alloy-op-evm-job-context - - # no_std check (shared job) - - rust-ci-check-no-std: - name: alloy-op-evm-check-no-std - directory: alloy-op-evm - context: *alloy-op-evm-job-context - - # Linting (shared job) - - rust-ci-clippy: - name: alloy-op-evm-clippy - directory: alloy-op-evm - toolchain: nightly - command: "cargo +nightly clippy --workspace --all-targets --all-features" - context: *alloy-op-evm-job-context - - # Documentation (shared job) - - rust-ci-docs: - name: alloy-op-evm-docs - directory: alloy-op-evm - context: *alloy-op-evm-job-context - - # Formatting (shared job) - - rust-ci-fmt: - name: alloy-op-evm-fmt - directory: alloy-op-evm - command: "cargo fmt --all --check" - context: *alloy-op-evm-job-context - - # Dependencies check (shared job) - - rust-ci-deny: - name: alloy-op-evm-deny - directory: alloy-op-evm - context: *alloy-op-evm-job-context - - # Feature propagation check (shared job) - - rust-ci-zepter: - name: alloy-op-evm-zepter - directory: alloy-op-evm - context: *alloy-op-evm-job-context diff --git a/.circleci/continue/alloy-op-hardforks.yml b/.circleci/continue/alloy-op-hardforks.yml deleted file mode 100644 index aa6b93cc3c4f6..0000000000000 --- a/.circleci/continue/alloy-op-hardforks.yml +++ /dev/null @@ -1,78 +0,0 @@ -version: 2.1 - -# alloy-op-hardforks CI Continuation Configuration -# This file contains ONLY alloy-op-hardforks-specific jobs and workflows. -# It is merged with main.yml and rust-ci.yml when alloy-op-hardforks/** changes are detected. -# Shared orbs, commands, and jobs come from main.yml and rust-ci.yml during merge. - -parameters: - # Required parameters (also in main.yml, merged during continuation) - alloy_op_hardforks_dispatch: - type: boolean - default: false - -workflows: - # ============================================================================ - # alloy-op-hardforks Workflows (migrated from alloy-op-hardforks/.github/workflows/ci.yml) - # ============================================================================ - - # alloy-op-hardforks main CI workflow (runs on webhooks and API triggers) - # Only runs when changes are detected in the alloy-op-hardforks folder - alloy-op-hardforks-ci: - when: - or: - - equal: ["webhook", << pipeline.trigger_source >>] - - and: - - equal: [true, <>] - - equal: ["api", << pipeline.trigger_source >>] - jobs: - # Build (shared job from main.yml) - - rust-build-binary: - name: alloy-op-hardforks-build - directory: alloy-op-hardforks - context: &alloy-op-hardforks-context - - circleci-repo-readonly-authenticated-github-token - - # Test matrix: Rust versions x feature flags (shared job) - - rust-ci-cargo-tests: - context: *alloy-op-hardforks-context - name: alloy-op-hardforks-test-<>-<> - directory: alloy-op-hardforks - matrix: - parameters: - rust_version: ["stable", "beta", "nightly", "1.85"] - flags: ["--no-default-features", "", "--all-features"] - # Check no_std compatibility (shared job) - - rust-ci-check-no-std: - name: alloy-op-hardforks-check-no-std - directory: alloy-op-hardforks - context: *alloy-op-hardforks-context - # Feature powerset checks with cargo-hack (shared job) - - rust-ci-cargo-hack: - name: alloy-op-hardforks-cargo-hack - directory: alloy-op-hardforks - flags: "--feature-powerset --depth 2" - context: *alloy-op-hardforks-context - # Clippy lints (shared job) - - rust-ci-clippy: - name: alloy-op-hardforks-clippy - directory: alloy-op-hardforks - context: *alloy-op-hardforks-context - # Documentation build (shared job) - - rust-ci-docs: - name: alloy-op-hardforks-docs - directory: alloy-op-hardforks - command: "cargo doc --workspace --all-features --no-deps --document-private-items" - rustdocflags: "--cfg docsrs -D warnings -Zunstable-options --show-type-layout --generate-link-to-definition" - context: *alloy-op-hardforks-context - # Format check (shared job) - - rust-ci-fmt: - name: alloy-op-hardforks-fmt - directory: alloy-op-hardforks - command: "cargo fmt --all --check" - context: *alloy-op-hardforks-context - # Cargo deny (shared job) - - rust-ci-deny: - name: alloy-op-hardforks-cargo-deny - directory: alloy-op-hardforks - context: *alloy-op-hardforks-context diff --git a/.circleci/continue/kona.yml b/.circleci/continue/kona.yml deleted file mode 100644 index 566630cef20a9..0000000000000 --- a/.circleci/continue/kona.yml +++ /dev/null @@ -1,759 +0,0 @@ -version: 2.1 - -# Kona CI Continuation Configuration -# This file contains ONLY Kona-specific jobs and workflows. -# It is merged with main.yml when kona/** changes are detected. -# Shared orbs, commands, and jobs come from main.yml during merge. - -parameters: - # Required parameters (also in main.yml, merged during continuation) - default_docker_image: - type: string - default: cimg/base:2024.01 - base_image: - type: string - default: default - kona_dispatch: - type: boolean - default: false - go-cache-version: - type: string - default: "v0.0" - -# Commands used only by Kona-specific jobs (shared Rust commands are in rust-ci.yml) -commands: - install-zstd: - description: "Install zstd compression utility" - steps: - - run: - name: Install zstd - command: sudo apt-get update && sudo apt-get install -y zstd=1.4.8* - - go-restore-cache: - parameters: - module: - type: string - default: . - namespace: - type: string - version: - type: string - default: <> - steps: - - restore_cache: - name: Restore go cache for <> (<>/go.mod) - keys: - - go-<>-<>-<>-{{ checksum "<>/go.mod" }}-{{ checksum "<>/go.sum" }} - - go-<>-<>-<>-{{ checksum "<>/go.mod" }}- - - go-<>-<>-<>- - - go-save-cache: - parameters: - module: - type: string - default: . - namespace: - type: string - version: - type: string - default: <> - steps: - - save_cache: - name: Save go cache for <> (<>/go.mod) - paths: - - ~/.cache/go-build - - ~/go/pkg/mod - key: go-<>-<>-<>-{{ checksum "<>/go.mod" }}-{{ checksum "<>/go.sum" }} - - gcp-oidc-authenticate: - description: "Authenticate with GCP using a CircleCI OIDC token." - parameters: - project_id: - type: env_var_name - default: GCP_PROJECT_ID - workload_identity_pool_id: - type: env_var_name - default: GCP_WIP_ID - workload_identity_pool_provider_id: - type: env_var_name - default: GCP_WIP_PROVIDER_ID - service_account_email: - type: env_var_name - default: GCP_SERVICE_ACCOUNT_EMAIL - gcp_cred_config_file_path: - type: string - default: /home/circleci/gcp_cred_config.json - oidc_token_file_path: - type: string - default: /home/circleci/oidc_token.json - steps: - - run: - name: "Create OIDC credential configuration" - command: | - echo $CIRCLE_OIDC_TOKEN > << parameters.oidc_token_file_path >> - gcloud iam workload-identity-pools create-cred-config \ - "projects/${<< parameters.project_id >>}/locations/global/workloadIdentityPools/${<< parameters.workload_identity_pool_id >>}/providers/${<< parameters.workload_identity_pool_provider_id >>}"\ - --output-file="<< parameters.gcp_cred_config_file_path >>" \ - --service-account="${<< parameters.service_account_email >>}" \ - --credential-source-file=<< parameters.oidc_token_file_path >> - - run: - name: "Authenticate with GCP using OIDC" - command: | - gcloud auth login --brief --cred-file "<< parameters.gcp_cred_config_file_path >>" - echo "export GOOGLE_APPLICATION_CREDENTIALS='<< parameters.gcp_cred_config_file_path >>'" | tee -a "$BASH_ENV" - -# ============================================================================ -# KONA JOBS -# ============================================================================ -jobs: - # Kona Node E2E Sysgo Tests (from node_e2e_sysgo_tests.yaml) - kona-node-e2e-sysgo-tests: - parameters: - devnet_config: - description: The devnet configuration to test - type: string - reorg_tests: - description: Whether to run reorg tests - type: boolean - default: false - docker: - - image: <> - resource_class: xlarge - steps: - - utils/checkout-with-mise: - checkout-method: blobless - - attach_workspace: - at: . - - go-restore-cache: - namespace: kona-ci - - rust-build: &kona-rust-build-release - directory: kona - profile: release - binary: "kona-node" - - run: - name: Run common tests for node with sysgo orchestrator - no_output_timeout: 60m - command: | - WD=$(pwd) - echo "Running tests..." - export OP_RETH_EXEC_PATH="$WD/.circleci-cache/rust-binaries/op-reth" - export RUST_BINARY_PATH_KONA_NODE="$WD/kona/target/release/kona-node" - cd kona && just test-e2e-sysgo-run node node/common "<>" - - when: - condition: - equal: [true, <>] - steps: - - run: - name: Run reorg tests for node with sysgo orchestrator - no_output_timeout: 60m - command: | - WD=$(pwd) - echo "Running tests..." - export OP_RETH_EXEC_PATH="$WD/.circleci-cache/rust-binaries/op-reth" - export RUST_BINARY_PATH_KONA_NODE="$WD/kona/target/release/kona-node" - cd kona && just test-e2e-sysgo-run node node/reorgs "<>" - - go-save-cache: - namespace: kona-ci - - # Kona Node Restart Tests (from node_e2e_sysgo_tests.yaml) - kona-node-restart-sysgo-tests: - docker: - - image: <> - resource_class: xlarge - steps: - - utils/checkout-with-mise: - checkout-method: blobless - - attach_workspace: - at: . - - go-restore-cache: - namespace: kona-ci - - rust-build: *kona-rust-build-release - - run: - name: Run restart tests for node with sysgo orchestrator - no_output_timeout: 60m - command: | - echo "Running tests..." - WD=$(pwd) - export RUST_BINARY_PATH_KONA_NODE="$WD/kona/target/release/kona-node" - cd kona && just test-e2e-sysgo node node/restart - - go-save-cache: - namespace: kona-ci - - # Kona Proof Action Tests (from proof.yaml) - kona-proof-action-tests: - parameters: - kind: - description: The kind of action test (single or interop) - type: string - docker: - - image: <> - resource_class: xlarge - parallelism: 4 - steps: - - utils/checkout-with-mise: - checkout-method: blobless - - attach_workspace: - at: . - - go-restore-cache: - namespace: kona-ci - - rust-build: - <<: *kona-rust-build-release - binary: "kona-host" - - run: - name: Build kona and run action tests - working_directory: kona - no_output_timeout: 90m - command: | - echo "Running action tests" - export KONA_HOST_PATH=$(pwd)/target/release/kona-host - just action-tests-<>-run - - go-save-cache: - namespace: kona-ci - - # Kona Host Client Offline Runs (from proof.yaml) - kona-host-client-offline: - parameters: - target: - description: The target platform (native, asterisc, cannon) - type: string - machine: - image: <> - docker_layer_caching: true - resource_class: xlarge - steps: - - utils/checkout-with-mise: - checkout-method: blobless - - install-zstd - - rust-prepare - - install-cargo-binstall - - run: - name: Install cargo-llvm-cov - command: | - command -v cargo-llvm-cov >/dev/null || cargo binstall --no-confirm cargo-llvm-cov - - when: - condition: - equal: [asterisc, <>] - steps: - - run: - name: Clone and build asterisc - command: | - git clone --no-checkout --depth 1 https://github.com/ethereum-optimism/asterisc.git - cd asterisc && git fetch --depth 1 origin v1.3.0 && git checkout v1.3.0 - make build-rvgo - sudo mv ./rvgo/bin/asterisc /usr/local/bin/ - - when: - condition: - equal: [cannon, <>] - steps: - - run: - name: Build cannon - command: | - cd cannon && make - sudo mv ./bin/cannon /usr/local/bin/ - - run: - name: Set run environment - command: | - echo 'export BLOCK_NUMBER=26215604' >> $BASH_ENV - echo 'export L2_CLAIM=0x7415d942f80a34f77d344e4bccb7050f14e593f5ea33669d27ea01dce273d72d' >> $BASH_ENV - echo 'export L2_OUTPUT_ROOT=0xaa34b62993bd888d7a2ad8541935374e39948576fce12aa8179a0aa5b5bc787b' >> $BASH_ENV - echo 'export L2_HEAD=0xf4adf5790bad1ffc9eee315dc163df9102473c5726a2743da27a8a10dc16b473' >> $BASH_ENV - echo 'export L1_HEAD=0x010cfdb22eaa13e8cdfbf66403f8de2a026475e96a6635d53c31f853a0e3ae25' >> $BASH_ENV - echo 'export L2_CHAIN_ID=11155420' >> $BASH_ENV - echo 'export WITNESS_TAR_NAME=holocene-op-sepolia-26215604-witness.tar.zst' >> $BASH_ENV - - run: - name: Decompress witness data - working_directory: kona - command: | - tar --zstd -xvf ./bin/client/testdata/$WITNESS_TAR_NAME -C . - - run: - name: Run host + client offline - working_directory: kona/bin/client - no_output_timeout: 40m - command: | - source <(cargo llvm-cov show-env --export-prefix) - mkdir -p ../../target - just run-client-<>-offline \ - $BLOCK_NUMBER \ - $L2_CLAIM \ - $L2_OUTPUT_ROOT \ - $L2_HEAD \ - $L1_HEAD \ - $L2_CHAIN_ID - cargo llvm-cov report --lcov --output-path client_host_cov.lcov - - # Kona Rust CI - Lint (from rust_ci.yaml) - kona-cargo-lint: - parameters: - target: - description: The lint target (native, cannon, asterisc) - type: string - machine: - image: <> - docker_layer_caching: true - resource_class: xlarge - steps: - - utils/checkout-with-mise: - checkout-method: blobless - - rust-prepare-and-restore-cache: - directory: kona - features: "all" - - rust-install-toolchain: - components: rustfmt - - run: - name: Run fmt + lint for <> - working_directory: kona - no_output_timeout: 40m - command: | - just lint-<> - - kona-build-fpvm: - parameters: - target: - description: The build target (cannon-client, asterisc-client) - type: string - machine: - image: <> - docker_layer_caching: true - resource_class: xlarge - steps: - - utils/checkout-with-mise: - checkout-method: blobless - - rust-prepare - - run: - name: Build <> - working_directory: kona - no_output_timeout: 40m - command: | - just build-<> - - # Kona Rust CI - Build Benchmarks (from rust_ci.yaml) - kona-cargo-build-benches: - docker: - - image: <> - resource_class: xlarge - steps: - - utils/checkout-with-mise: - checkout-method: blobless - - rust-prepare-and-restore-cache: &kona-benches-cache - directory: kona - prefix: kona-benches - - run: - name: Build benchmarks - working_directory: kona - no_output_timeout: 40m - command: | - just benches - - rust-save-build-cache: *kona-benches-cache - - # Kona Rust CI - Coverage (from rust_ci.yaml) - kona-coverage: - docker: - - image: <> - resource_class: xlarge - steps: - - utils/checkout-with-mise: - checkout-method: blobless - - rust-prepare-and-restore-cache: &kona-coverage-cache - directory: kona - prefix: kona-coverage - version: "1" - - rust-install-toolchain: - components: llvm-tools-preview - - install-cargo-binstall - - run: - name: Install cargo-llvm-cov and nextest - command: | - command -v cargo-llvm-cov >/dev/null || cargo binstall --no-confirm cargo-llvm-cov - command -v cargo-nextest >/dev/null || cargo binstall --no-confirm cargo-nextest - - run: - name: Generate lockfile if needed - working_directory: kona - command: | - [ -f Cargo.lock ] || cargo generate-lockfile - - run: - name: Run coverage - working_directory: kona - no_output_timeout: 40m - command: | - just llvm-cov-tests && mv ./target/nextest/ci/junit.xml ./junit.xml - - codecov/upload: - disable_search: true - files: kona/lcov.info - flags: unit - - store_test_results: - path: kona/junit.xml - - rust-save-build-cache: *kona-coverage-cache - - # Kona Docs Build (from docs.yaml) - kona-docs-build: - docker: - - image: <> - resource_class: xlarge - steps: - - utils/checkout-with-mise: - checkout-method: blobless - - rust-prepare - - run: - name: Install Node.js and Bun - command: | - curl -fsSL https://deb.nodesource.com/setup_24.x | sudo -E bash - - sudo apt-get install -y nodejs - curl -fsSL https://bun.sh/install | bash - echo 'export BUN_INSTALL="$HOME/.bun"' >> $BASH_ENV - echo 'export PATH="$BUN_INSTALL/bin:$PATH"' >> $BASH_ENV - - run: - name: Install dependencies and Playwright browsers - working_directory: kona/docs - command: | - bun i - npx playwright install --with-deps chromium - - run: - name: Build Vocs documentation - working_directory: kona/docs - no_output_timeout: 60m - command: | - bun run build - echo "Vocs Build Complete" - - store_artifacts: - path: kona/docs/docs/dist - destination: kona-docs - - # Kona Link Checker (from lychee.yaml) - kona-link-checker: - docker: - - image: <> - resource_class: medium - steps: - - utils/checkout-with-mise: - checkout-method: blobless - - run: - name: Install lychee - command: | - curl -sSfL https://github.com/lycheeverse/lychee/releases/download/v0.15.1/lychee-v0.15.1-x86_64-unknown-linux-gnu.tar.gz | tar xz - sudo mv lychee /usr/local/bin/ - - run: - name: Check links - working_directory: kona - command: | - lychee --config ./lychee.toml --cache-exclude-status 429 '**/README.md' './docs/**/*.md' './docs/**/*.mdx' './docs/**/*.html' './docs/**/*.json' || true - - # Kona Supervisor E2E Tests (from supervisor_e2e_sysgo.yaml) - kona-supervisor-e2e-tests: - parameters: - test_pkg: - description: The test package to run - type: string - docker: - - image: <> - resource_class: xlarge - steps: - - utils/checkout-with-mise: - checkout-method: blobless - - rust-build: - <<: *kona-rust-build-release - binary: "kona-supervisor" - - run: - name: Run supervisor tests for <> - working_directory: kona - no_output_timeout: 40m - command: | - just test-e2e-sysgo supervisor "/supervisor/<>" - - # Kona Publish Prestate Artifacts (from publish_artifacts.yaml) - kona-publish-prestate-artifacts: - parameters: - kind: - description: The kind of prestate (cannon) - type: string - default: "cannon" - version: - description: The version to build (kona-client, kona-client-int) - type: string - machine: - image: <> - docker_layer_caching: true # we rely on this for faster builds, and actively warm it up for builds with common stages - resource_class: xlarge - steps: - - utils/checkout-with-mise: - checkout-method: blobless - - rust-install-toolchain: - components: llvm-tools-preview - - rust-prepare-and-restore-cache: - directory: kona - needs_clang: true - profile: release - - gcp-cli/install - - gcp-oidc-authenticate: - gcp_cred_config_file_path: /tmp/gcp_cred_config.json - oidc_token_file_path: /tmp/oidc_token.json - - run: - name: Generate prestate artifacts - working_directory: kona - no_output_timeout: 60m - command: | - CANNON_TAG="$(cat .config/cannon_tag)" - cd docker/fpvm-prestates - just "<>" "<>" "$CANNON_TAG" - - run: - name: Upload prestates to GCS - command: | - PRESTATE_HASH=$(jq -r .pre ./prestate-artifacts-<>/prestate-proof.json) - BRANCH_NAME=$(echo "<< pipeline.git.branch >>" | tr '/' '-') - echo "Publishing ${PRESTATE_HASH} as ${BRANCH_NAME}" - if [ -n "<< pipeline.git.branch >>" ]; then - echo "Publishing commit hash data" - INFO_FILE=$(mktemp) - (echo "Commit=<< pipeline.git.revision >>" && echo "Prestate: ${PRESTATE_HASH}") > "${INFO_FILE}" - gsutil cp "${INFO_FILE}" "gs://oplabs-network-data/proofs/kona/<>/${BRANCH_NAME}-<>-prestate.bin.gz.txt" - rm "${INFO_FILE}" - PRESTATE_HASH="${BRANCH_NAME}-<>" - fi - gsutil cp ./prestate-artifacts-<>/prestate.bin.gz "gs://oplabs-network-data/proofs/kona/<>/${PRESTATE_HASH}.bin.gz" - echo "Successfully published prestates artifacts to GCS" - -# ============================================================================ -# KONA WORKFLOWS -# ============================================================================ -workflows: - # Kona main CI workflow (runs on push to main, merge_group, pull_request) - kona-ci: - when: - or: - - equal: ["webhook", << pipeline.trigger_source >>] - - and: - - equal: [true, <>] - - equal: ["api", << pipeline.trigger_source >>] - jobs: - # Dependencies from main config (contracts-bedrock-build, cannon-prestate-quick) - # These jobs exist in main.yml and are available after merge - - contracts-bedrock-build: - build_args: --skip test - context: - - circleci-repo-readonly-authenticated-github-token - - cannon-prestate-quick: &kona-job-base - context: - - circleci-repo-readonly-authenticated-github-token - - cannon-kona-prestate: - <<: *kona-job-base - - rust-build-binary: &cannon-kona-host - name: cannon-kona-host - directory: kona - profile: release - binary: "kona-host" - context: - - circleci-repo-readonly-authenticated-github-token - # Rust CI jobs (from rust_ci.yaml) - - rust-build-binary: &kona-build-release - name: kona-build-release - directory: kona - profile: release - context: - - circleci-repo-readonly-authenticated-github-token - - rust-build-binary: - <<: *kona-job-base - name: kona-build-debug - directory: kona - profile: "debug" - features: "default" - save_cache: true - - rust-build-binary: - <<: *kona-job-base - name: kona-build-all-features - directory: kona - profile: "debug" - features: "all" - save_cache: true - - kona-build-fpvm: - <<: *kona-job-base - name: kona-build-fpvm-<> - matrix: - parameters: - target: ["cannon-client", "asterisc-client"] - - rust-ci-cargo-tests: - <<: *kona-job-base - name: kona-cargo-tests - directory: kona - - kona-cargo-lint: - <<: *kona-job-base - name: kona-lint-<> - matrix: - parameters: - target: ["cannon", "asterisc"] - - rust-ci-fmt: - <<: *kona-job-base - name: kona-fmt - directory: kona - - rust-ci-clippy: - <<: *kona-job-base - name: kona-clippy - directory: kona - - kona-cargo-build-benches: - <<: *kona-job-base - - rust-ci-udeps: - <<: *kona-job-base - name: kona-cargo-udeps - directory: kona - - rust-ci-docs: - <<: *kona-job-base - name: kona-cargo-doc-lint - directory: kona - command: "just lint-docs" - rustdocflags: "-D warnings" - - rust-ci-doctest: - <<: *kona-job-base - name: kona-cargo-doc-test - directory: kona - command: "just test-docs" - - rust-ci-typos: - <<: *kona-job-base - name: kona-typos - directory: kona - - rust-ci-deny: - <<: *kona-job-base - name: kona-cargo-deny - directory: kona - - rust-ci-zepter: - <<: *kona-job-base - name: kona-zepter - directory: kona - command: | - zepter format features - zepter - - rust-ci-check-no-std: - <<: *kona-job-base - name: kona-check-no-std - directory: kona - toolchain: "1.88.0" - - kona-coverage: - context: - - circleci-repo-readonly-authenticated-github-token - requires: - - kona-cargo-tests - - rust-ci-cargo-hack: - <<: *kona-job-base - name: kona-cargo-hack - directory: kona - flags: "--feature-powerset --no-dev-deps --workspace" - parallelism: 4 - requires: - - kona-build-release - - kona-build-debug - - kona-cargo-udeps - - kona-build-all-features - - - rust-build-submodule: - <<: *kona-job-base - name: op-reth-build - directory: reth - binaries: op-reth - build_command: cd crates/optimism/bin && cargo build --release --bin op-reth - needs_clang: true - - # Node E2E tests (from node_e2e_sysgo_tests.yaml) - - kona-node-e2e-sysgo-tests: - name: kona-node-e2e-<> - matrix: - parameters: - devnet_config: ["simple-kona", "simple-kona-geth", "simple-kona-sequencer", "large-kona-sequencer"] - context: - - circleci-repo-readonly-authenticated-github-token - requires: - - contracts-bedrock-build - - cannon-prestate-quick - - cannon-kona-prestate - - cannon-kona-host - - kona-build-release - - op-reth-build - - kona-node-restart-sysgo-tests: - name: kona-node-e2e-restart - context: - - circleci-repo-readonly-authenticated-github-token - requires: - - contracts-bedrock-build - - cannon-prestate-quick - - cannon-kona-prestate - - cannon-kona-host - - kona-build-release - - # Proof tests (from proof.yaml) - single kind only, interop excluded per original config - - kona-proof-action-tests: - name: kona-proof-action-single - kind: single - requires: - - kona-build-release - - contracts-bedrock-build - context: - - circleci-repo-readonly-authenticated-github-token - - kona-host-client-offline: - name: kona-host-client-native - target: native - requires: - - kona-build-release - context: - - circleci-repo-readonly-authenticated-github-token - - kona-host-client-offline: - name: kona-host-client-asterisc - target: asterisc - requires: - - kona-build-release - context: - - circleci-repo-readonly-authenticated-github-token - - kona-host-client-offline: - name: kona-host-client-cannon - target: cannon - requires: - - kona-build-release - context: - - circleci-repo-readonly-authenticated-github-token - - # Docs build (from docs.yaml) - - kona-docs-build: - context: - - circleci-repo-readonly-authenticated-github-token - - # Kona scheduled workflows - scheduled-kona-link-checker: - when: - equal: [build_weekly, <>] - jobs: - - kona-link-checker: - context: - - circleci-repo-readonly-authenticated-github-token - - scheduled-kona-sync: - when: - equal: [build_weekly, <>] - jobs: - - kona-update-monorepo: - context: - - circleci-repo-readonly-authenticated-github-token - - # Kona supervisor E2E tests (from supervisor_e2e_sysgo.yaml) - manual dispatch only - kona-supervisor-e2e: - when: - and: - - equal: [true, <>] - - equal: ["api", << pipeline.trigger_source >>] - jobs: - - kona-supervisor-e2e-tests: - name: kona-supervisor-<> - matrix: - parameters: - test_pkg: ["pre_interop", "l1reorg/sysgo"] - context: - - circleci-repo-readonly-authenticated-github-token - - # Kona publish prestate artifacts (from publish_artifacts.yaml) - on push to main or tags - kona-publish-prestates: - when: - or: - - equal: ["develop", <>] - jobs: - - kona-publish-prestate-artifacts: - name: kona-publish-<> - matrix: - parameters: - version: ["kona-client", "kona-client-int"] - context: - - circleci-repo-readonly-authenticated-github-token - - oplabs-gcr diff --git a/.circleci/continue/main.yml b/.circleci/continue/main.yml index 93b58e751687e..e3c2867ddeb0f 100644 --- a/.circleci/continue/main.yml +++ b/.circleci/continue/main.yml @@ -422,8 +422,8 @@ commands: command: | ROOT_DIR="$(pwd)" BIN_DIR="$ROOT_DIR/.circleci-cache/rust-binaries" - echo "export RUST_BINARY_PATH_KONA_NODE=$ROOT_DIR/kona/target/release/kona-node" >> "$BASH_ENV" - echo "export RUST_BINARY_PATH_KONA_SUPERVISOR=$ROOT_DIR/kona/target/release/kona-supervisor" >> "$BASH_ENV" + echo "export RUST_BINARY_PATH_KONA_NODE=$ROOT_DIR/rust/target/release/kona-node" >> "$BASH_ENV" + echo "export RUST_BINARY_PATH_KONA_SUPERVISOR=$ROOT_DIR/rust/target/release/kona-supervisor" >> "$BASH_ENV" echo "export RUST_BINARY_PATH_OP_RBUILDER=$BIN_DIR/op-rbuilder" >> "$BASH_ENV" echo "export RUST_BINARY_PATH_ROLLUP_BOOST=$BIN_DIR/rollup-boost" >> "$BASH_ENV" @@ -2138,15 +2138,15 @@ jobs: at: . # Build kona-node for the acceptance tests. This automatically gets kona from the cache. - rust-build: - directory: kona + directory: rust profile: "release" - run: name: Configure Rust binary paths (sysgo) command: | ROOT_DIR="$(pwd)" BIN_DIR="$ROOT_DIR/.circleci-cache/rust-binaries" - echo "export RUST_BINARY_PATH_KONA_NODE=$ROOT_DIR/kona/target/release/kona-node" >> "$BASH_ENV" - echo "export RUST_BINARY_PATH_KONA_SUPERVISOR=$ROOT_DIR/kona/target/release/kona-supervisor" >> "$BASH_ENV" + echo "export RUST_BINARY_PATH_KONA_NODE=$ROOT_DIR/rust/target/release/kona-node" >> "$BASH_ENV" + echo "export RUST_BINARY_PATH_KONA_SUPERVISOR=$ROOT_DIR/rust/target/release/kona-supervisor" >> "$BASH_ENV" echo "export RUST_BINARY_PATH_OP_RBUILDER=$BIN_DIR/op-rbuilder" >> "$BASH_ENV" echo "export RUST_BINARY_PATH_ROLLUP_BOOST=$BIN_DIR/rollup-boost" >> "$BASH_ENV" # Restore cached Go modules @@ -2507,20 +2507,20 @@ jobs: enable-mise-cache: true - restore_cache: name: Restore kona cache - key: kona-prestate-{{ checksum "./kona/justfile" }}-{{ checksum "./kona/.config/cannon_tag" }} + key: kona-prestate-{{ checksum "./rust/justfile" }}-{{ checksum "./rust/kona/.config/cannon_tag" }} - run: name: Build kona prestates - command: just build-prestates - working_directory: kona + command: just build-kona-prestates + working_directory: rust - save_cache: - key: kona-prestate-{{ checksum "./kona/justfile" }}-{{ checksum "./kona/.config/cannon_tag" }} + key: kona-prestate-{{ checksum "./rust/justfile" }}-{{ checksum "./rust/kona/.config/cannon_tag" }} name: Save Kona to cache paths: - - "kona/prestate-artifacts-*/" + - "rust/kona/prestate-artifacts-*/" - persist_to_workspace: root: . paths: - - "kona/prestate-artifacts-*/*" + - "rust/kona/prestate-artifacts-*/*" # Aggregator job - allows downstream jobs to depend on a single job instead of listing all build jobs. @@ -3514,7 +3514,7 @@ workflows: - circleci-repo-readonly-authenticated-github-token - rust-build-binary: name: kona-build-release - directory: kona + directory: rust needs_clang: true profile: "release" context: @@ -3650,7 +3650,7 @@ workflows: - circleci-repo-readonly-authenticated-github-token - rust-build-binary: &cannon-kona-host name: cannon-kona-host - directory: kona + directory: rust profile: "release" binary: "kona-host" save_cache: true @@ -3658,7 +3658,7 @@ workflows: - circleci-repo-readonly-authenticated-github-token - rust-build-binary: &kona-build-release name: kona-build-release - directory: kona + directory: rust profile: "release" features: "default" save_cache: true diff --git a/.circleci/continue/op-alloy.yml b/.circleci/continue/op-alloy.yml deleted file mode 100644 index 7ec0b5077e49d..0000000000000 --- a/.circleci/continue/op-alloy.yml +++ /dev/null @@ -1,233 +0,0 @@ -version: 2.1 - -# Op-Alloy CI Continuation Configuration -# This file contains ONLY Op-Alloy-specific jobs and workflows. -# It is merged with main.yml and rust-ci.yml when op-alloy/** changes are detected. -# Shared orbs, commands, and jobs come from main.yml and rust-ci.yml during merge. - -parameters: - default_docker_image: - type: string - default: cimg/base:2024.01 - op_alloy_dispatch: - type: boolean - default: false - -# ============================================================================ -# Op-Alloy Jobs (project-specific only; shared jobs are in rust-ci.yml) -# ============================================================================ -jobs: - # Op-Alloy Rust CI - Examples (from ci.yml) - op-alloy-examples: - docker: - - image: <> - resource_class: xlarge - steps: - - utils/checkout-with-mise: - checkout-method: blobless - - rust-prepare-and-restore-cache: &op-alloy-examples-cache - directory: op-alloy - prefix: op-alloy-examples - - rust-install-toolchain: - channel: nightly - toolchain_version: nightly - - run: - name: Build and run examples - working_directory: op-alloy - no_output_timeout: 40m - command: | - just examples - - rust-save-build-cache: *op-alloy-examples-cache - - # Op-Alloy Rust CI - Cfg Check (from ci.yml) - op-alloy-cfg-check: - docker: - - image: <> - resource_class: xlarge - steps: - - utils/checkout-with-mise: - checkout-method: blobless - - rust-prepare-and-restore-cache: &op-alloy-cfg-check-cache - directory: op-alloy - prefix: op-alloy-cfg-check - - rust-install-toolchain: - channel: nightly - toolchain_version: nightly - - run: - name: Run cfg check - working_directory: op-alloy - no_output_timeout: 40m - command: | - just check - - rust-save-build-cache: *op-alloy-cfg-check-cache - -### END OP-ALLOY JOBS ### - -# ============================================================================ -# Op-Alloy Workflow (migrated from op-alloy/.github/workflows) -# ============================================================================ -workflows: - op-alloy: - when: - or: - - equal: ["webhook", << pipeline.trigger_source >>] - - and: - - equal: [true, <>] - - equal: ["api", << pipeline.trigger_source >>] - jobs: - # Build (shared job from main.yml) - - rust-build-binary: - name: op-alloy-build - directory: op-alloy - context: - - circleci-repo-readonly-authenticated-github-token - - # Rust CI jobs (shared job) - - rust-ci-cargo-tests: - name: op-alloy-test-stable - directory: op-alloy - context: - - circleci-repo-readonly-authenticated-github-token - - rust-ci-cargo-tests: - name: op-alloy-test-stable-no-default - directory: op-alloy - flags: "--no-default-features" - context: - - circleci-repo-readonly-authenticated-github-token - - rust-ci-cargo-tests: - name: op-alloy-test-stable-all-features - directory: op-alloy - flags: "--all-features" - context: - - circleci-repo-readonly-authenticated-github-token - - rust-ci-cargo-tests: - name: op-alloy-test-nightly - directory: op-alloy - rust_version: "nightly" - context: - - circleci-repo-readonly-authenticated-github-token - - rust-ci-cargo-tests: - name: op-alloy-test-nightly-no-default - directory: op-alloy - rust_version: "nightly" - flags: "--no-default-features" - context: - - circleci-repo-readonly-authenticated-github-token - - rust-ci-cargo-tests: - name: op-alloy-test-nightly-all-features - directory: op-alloy - rust_version: "nightly" - flags: "--all-features" - context: - - circleci-repo-readonly-authenticated-github-token - - rust-ci-cargo-tests: - name: op-alloy-build-msrv - directory: op-alloy - rust_version: "1.88" - context: - - circleci-repo-readonly-authenticated-github-token - - rust-ci-cargo-tests: - name: op-alloy-build-msrv-no-default - directory: op-alloy - rust_version: "1.88" - flags: "--no-default-features" - context: - - circleci-repo-readonly-authenticated-github-token - - # Doc tests (shared job) - - rust-ci-doctest: - name: op-alloy-cargo-doctest - directory: op-alloy - command: "just test-docs" - context: - - circleci-repo-readonly-authenticated-github-token - - rust-ci-cargo-hack-build: - name: op-alloy-wasm-unknown - directory: op-alloy - target: wasm32-unknown-unknown - flags: "--workspace --exclude op-alloy-network --exclude op-alloy-rpc-jsonrpsee --exclude op-alloy-provider" - context: - - circleci-repo-readonly-authenticated-github-token - - rust-ci-cargo-hack-build: - name: op-alloy-wasm-wasi - directory: op-alloy - target: wasm32-wasip1 - flags: "--workspace --exclude op-alloy-network --exclude op-alloy-rpc-types --exclude op-alloy-provider --exclude op-alloy-rpc-jsonrpsee" - context: - - circleci-repo-readonly-authenticated-github-token - - rust-ci-check-no-std: - name: op-alloy-check-no-std - directory: op-alloy - context: - - circleci-repo-readonly-authenticated-github-token - - rust-ci-cargo-hack: - name: op-alloy-feature-checks - directory: op-alloy - flags: "--feature-powerset --depth 1" - context: - - circleci-repo-readonly-authenticated-github-token - - # Clippy (shared job) - - rust-ci-clippy: - name: op-alloy-clippy - directory: op-alloy - command: "just clippy" - context: - - circleci-repo-readonly-authenticated-github-token - - # Documentation (shared job) - - rust-ci-docs: - name: op-alloy-docs - directory: op-alloy - command: "cargo doc --workspace --all-features --no-deps --document-private-items" - rustdocflags: "--cfg docsrs -D warnings --show-type-layout --generate-link-to-definition --enable-index-page -Zunstable-options" - context: - - circleci-repo-readonly-authenticated-github-token - - # Formatting (shared job) - - rust-ci-fmt: - name: op-alloy-fmt - directory: op-alloy - command: "just fmt-check" - context: - - circleci-repo-readonly-authenticated-github-token - - - op-alloy-examples: - context: - - circleci-repo-readonly-authenticated-github-token - - op-alloy-cfg-check: - context: - - circleci-repo-readonly-authenticated-github-token - - # Lint jobs (shared) - - rust-ci-typos: - name: op-alloy-typos - directory: op-alloy - context: - - circleci-repo-readonly-authenticated-github-token - - rust-ci-zepter: - name: op-alloy-zepter - directory: op-alloy - command: "time zepter run check" - context: - - circleci-repo-readonly-authenticated-github-token - - # Deps jobs (shared) - - rust-ci-deny: - name: op-alloy-cargo-deny - directory: op-alloy - context: - - circleci-repo-readonly-authenticated-github-token - - # Feature powerset (from ci.yml) - runs after initial checks - - rust-ci-cargo-hack: - name: op-alloy-cargo-hack - directory: op-alloy - flags: "--feature-powerset --no-dev-deps --workspace" - parallelism: 4 - context: - - circleci-repo-readonly-authenticated-github-token - requires: - - op-alloy-test-stable - - op-alloy-clippy - - op-alloy-fmt diff --git a/.circleci/continue/op-reth.yml b/.circleci/continue/op-reth.yml deleted file mode 100644 index 82bab694aca3c..0000000000000 --- a/.circleci/continue/op-reth.yml +++ /dev/null @@ -1,204 +0,0 @@ -version: 2.1 - -# OP-Reth CI Continuation Configuration -# This file contains ONLY op-reth-specific jobs and workflows. -# It is merged with main.yml and rust-ci.yml when op-reth/** changes are detected. -# Shared orbs, commands, and jobs come from main.yml and rust-ci.yml during merge. - -parameters: - # Required parameters (also in main.yml, merged during continuation) - default_docker_image: - type: string - default: cimg/base:2024.01 - base_image: - type: string - default: default - op_reth_dispatch: - type: boolean - default: false - go-cache-version: - type: string - default: "v0.0" - -# ============================================================================ -# OP-RETH JOBS (project-specific only; shared jobs are in rust-ci.yml) -# ============================================================================ -# Note: Commands like rust-prepare, rust-restore-build-cache, rust-save-build-cache, -# rust-prepare-and-restore-cache, rust-install-toolchain, install-cargo-binstall, -# and notify-failures-on-develop are imported from main.yml -jobs: - # OP-Reth compact codec backwards compatibility - op-reth-compact-codec: - docker: - - image: <> - resource_class: xlarge - steps: - - utils/checkout-with-mise: - checkout-method: blobless - - rust-prepare-and-restore-cache: &op-reth-compact-cache - directory: op-reth - prefix: op-reth-compact - profile: debug - - run: - name: Generate compact vectors from base - working_directory: op-reth - command: | - # Use develop as the base branch - BASE_BRANCH="develop" - - # Save current state - git stash || true - git fetch origin $BASE_BRANCH - git checkout origin/$BASE_BRANCH - - # Generate vectors on base - cargo run --bin op-reth --features "dev" --manifest-path bin/Cargo.toml -- test-vectors compact --write - - # Return to PR branch - git checkout - - git stash pop || true - - run: - name: Read compact vectors on PR branch - working_directory: op-reth - command: | - cargo run --bin op-reth --features "dev" --manifest-path bin/Cargo.toml -- test-vectors compact --read - - rust-save-build-cache: *op-reth-compact-cache - - # OP-Reth Windows cross-compile check - op-reth-windows-check: - docker: - - image: <> - resource_class: xlarge - steps: - - utils/checkout-with-mise: - checkout-method: blobless - - rust-prepare-and-restore-cache: &op-reth-windows-cache - directory: op-reth - prefix: op-reth-windows - profile: debug - - rust-install-toolchain: - target: x86_64-pc-windows-gnu - - run: - name: Install mingw-w64 - command: sudo apt-get update && sudo apt-get install -y mingw-w64 - - run: - name: Check OP-Reth Windows build - working_directory: op-reth - no_output_timeout: 40m - command: cargo check -p op-reth --target x86_64-pc-windows-gnu - - rust-save-build-cache: *op-reth-windows-cache - -# ============================================================================ -# OP-RETH WORKFLOWS -# ============================================================================ -workflows: - # OP-Reth main CI workflow (runs on push/PR when op-reth/** changes) - op-reth-ci: - when: - or: - - equal: ["webhook", << pipeline.trigger_source >>] - - and: - - equal: [true, <>] - - equal: ["api", << pipeline.trigger_source >>] - jobs: - # Lint jobs (shared) - - rust-ci-clippy: - name: op-reth-clippy - directory: op-reth - command: "cargo clippy --workspace --lib --examples --tests --benches --all-features --locked" - context: - - circleci-repo-readonly-authenticated-github-token - - rust-ci-fmt: - name: op-reth-fmt - directory: op-reth - context: - - circleci-repo-readonly-authenticated-github-token - - rust-ci-typos: - name: op-reth-typos - directory: op-reth - context: - - circleci-repo-readonly-authenticated-github-token - - rust-ci-deny: - name: op-reth-deny - directory: op-reth - command: "cargo deny --all-features check all" - context: - - circleci-repo-readonly-authenticated-github-token - - rust-ci-zepter: - name: op-reth-feature-propagation - directory: op-reth - command: | - cargo metadata --format-version=1 --locked > /dev/null - zepter run check - context: - - circleci-repo-readonly-authenticated-github-token - - # Crate checks (parallelized, shared job) - - rust-ci-cargo-hack: - name: op-reth-crate-checks - directory: op-reth - flags: "--workspace" - parallelism: 3 - context: - - circleci-repo-readonly-authenticated-github-token - - # Build checks - - rust-build-binary: - name: op-reth-msrv - directory: op-reth - binary: op-reth - toolchain: "1.88.0" - context: - - circleci-repo-readonly-authenticated-github-token - - op-reth-windows-check: - context: - - circleci-repo-readonly-authenticated-github-token - - rust-build-binary: - name: op-reth-build-release - directory: op-reth - profile: release - binary: op-reth - context: - - circleci-repo-readonly-authenticated-github-token - - # Test jobs (shared) - stable and edge storage variants - - rust-ci-cargo-tests: - name: op-reth-unit-tests-stable - directory: op-reth - cache_profile: debug - context: - - circleci-repo-readonly-authenticated-github-token - - rust-ci-cargo-tests: - name: op-reth-unit-tests-edge - directory: op-reth - flags: "edge" - cache_profile: debug - context: - - circleci-repo-readonly-authenticated-github-token - - rust-ci-cargo-tests: - name: op-reth-integration-tests - directory: op-reth - command: test-integration - cache_profile: debug - context: - - circleci-repo-readonly-authenticated-github-token - - rust-ci-doctest: - name: op-reth-doc-test - directory: op-reth - command: "cargo test --doc --workspace --all-features" - context: - - circleci-repo-readonly-authenticated-github-token - - # Codec compatibility - - op-reth-compact-codec: - context: - - circleci-repo-readonly-authenticated-github-token - - # Udeps (slower, depends on other jobs) - - rust-ci-udeps: - name: op-reth-udeps - directory: op-reth - context: - - circleci-repo-readonly-authenticated-github-token - requires: - - op-reth-clippy diff --git a/.circleci/continue/rust-ci.yml b/.circleci/continue/rust-ci.yml index f47b94d161214..be1897f2949f7 100644 --- a/.circleci/continue/rust-ci.yml +++ b/.circleci/continue/rust-ci.yml @@ -1,18 +1,30 @@ version: 2.1 -# Shared Rust CI Commands and Jobs -# This file contains common commands and parameterized jobs used by multiple Rust subproject configs. -# Each subproject config references these jobs from its workflows section. -# No workflows are defined here - workflows remain in each project's config. +# Unified Rust CI Configuration +# This file contains all Rust CI commands, parameterized jobs, crate-specific jobs, and workflows. orbs: utils: ethereum-optimism/circleci-utils@1.0.23 + gcp-cli: circleci/gcp-cli@3.0.1 + codecov: codecov/codecov@5.0.3 parameters: default_docker_image: type: string default: cimg/base:2024.01 + base_image: + type: string + default: default + rust_ci_dispatch: + type: boolean + default: false + go-cache-version: + type: string + default: "v0.0" +# ============================================================================ +# COMMANDS +# ============================================================================ commands: install-cargo-binstall: description: "Install cargo-binstall for fast binary installations" @@ -72,8 +84,8 @@ commands: command: | ROOT_DIR="$(pwd)" BIN_DIR="$ROOT_DIR/.circleci-cache/rust-binaries" - echo "export RUST_BINARY_PATH_KONA_NODE=$ROOT_DIR/kona/target/release/kona-node" >> "$BASH_ENV" - echo "export RUST_BINARY_PATH_KONA_SUPERVISOR=$ROOT_DIR/kona/target/release/kona-supervisor" >> "$BASH_ENV" + echo "export RUST_BINARY_PATH_KONA_NODE=$ROOT_DIR/rust/target/release/kona-node" >> "$BASH_ENV" + echo "export RUST_BINARY_PATH_KONA_SUPERVISOR=$ROOT_DIR/rust/target/release/kona-supervisor" >> "$BASH_ENV" echo "export RUST_BINARY_PATH_OP_RBUILDER=$BIN_DIR/op-rbuilder" >> "$BASH_ENV" echo "export RUST_BINARY_PATH_ROLLUP_BOOST=$BIN_DIR/rollup-boost" >> "$BASH_ENV" @@ -250,7 +262,59 @@ commands: profile: << parameters.profile >> features: << parameters.features >> + # Kona-specific commands + install-zstd: + description: "Install zstd compression utility" + steps: + - run: + name: Install zstd + command: sudo apt-get update && sudo apt-get install -y zstd=1.4.8* + + gcp-oidc-authenticate: + description: "Authenticate with GCP using a CircleCI OIDC token." + parameters: + project_id: + type: env_var_name + default: GCP_PROJECT_ID + workload_identity_pool_id: + type: env_var_name + default: GCP_WIP_ID + workload_identity_pool_provider_id: + type: env_var_name + default: GCP_WIP_PROVIDER_ID + service_account_email: + type: env_var_name + default: GCP_SERVICE_ACCOUNT_EMAIL + gcp_cred_config_file_path: + type: string + default: /home/circleci/gcp_cred_config.json + oidc_token_file_path: + type: string + default: /home/circleci/oidc_token.json + steps: + - run: + name: "Create OIDC credential configuration" + command: | + echo $CIRCLE_OIDC_TOKEN > << parameters.oidc_token_file_path >> + gcloud iam workload-identity-pools create-cred-config \ + "projects/${<< parameters.project_id >>}/locations/global/workloadIdentityPools/${<< parameters.workload_identity_pool_id >>}/providers/${<< parameters.workload_identity_pool_provider_id >>}"\ + --output-file="<< parameters.gcp_cred_config_file_path >>" \ + --service-account="${<< parameters.service_account_email >>}" \ + --credential-source-file=<< parameters.oidc_token_file_path >> + - run: + name: "Authenticate with GCP using OIDC" + command: | + gcloud auth login --brief --cred-file "<< parameters.gcp_cred_config_file_path >>" + echo "export GOOGLE_APPLICATION_CREDENTIALS='<< parameters.gcp_cred_config_file_path >>'" | tee -a "$BASH_ENV" + +# ============================================================================ +# JOBS +# ============================================================================ jobs: + # -------------------------------------------------------------------------- + # Shared parameterized jobs (reusable templates) + # -------------------------------------------------------------------------- + # Shared format check job rust-ci-fmt: parameters: @@ -418,6 +482,10 @@ jobs: description: "Rust toolchain version to use" type: string default: "stable" + command: + description: "Command to run for no_std check" + type: string + default: "just check-no-std" docker: - image: <> resource_class: xlarge @@ -434,7 +502,7 @@ jobs: name: Check no_std compatibility working_directory: <> no_output_timeout: 30m - command: just check-no-std + command: <> - rust-save-build-cache: *no-std-cache-args # Shared documentation build job @@ -551,6 +619,10 @@ jobs: directory: description: "Directory containing the Cargo workspace" type: string + command: + description: "Command to run for unused dependency check" + type: string + default: "just check-udeps" docker: - image: <> resource_class: xlarge @@ -573,7 +645,7 @@ jobs: name: Check unused dependencies working_directory: <> no_output_timeout: 40m - command: just check-udeps + command: <> - rust-save-build-cache: *udeps-cache-args # Shared cargo hack build job (cross-compile targets like WASM) @@ -598,8 +670,6 @@ jobs: - rust-prepare-and-restore-cache: &hack-build-cache-args directory: <> prefix: <>-hack-build - - rust-install-toolchain: - target: <> - install-cargo-binstall - run: name: Install cargo-hack @@ -609,19 +679,12 @@ jobs: name: Build for <> working_directory: <> no_output_timeout: 40m - command: cargo hack build --target <> <> + command: rustup target add <> && cargo hack build --target <> <> - rust-save-build-cache: *hack-build-cache-args # Shared cargo hack job rust-ci-cargo-hack: parameters: - directory: - description: "Directory containing the Cargo workspace" - type: string - flags: - description: "Flags appended to cargo hack check (e.g. --feature-powerset --depth 2)" - type: string - default: "--feature-powerset --no-dev-deps --workspace" parallelism: description: "Number of parallel nodes (adds --partition automatically when > 1)" type: integer @@ -634,8 +697,8 @@ jobs: - utils/checkout-with-mise: checkout-method: blobless - rust-prepare-and-restore-cache: &hack-cache-args - directory: <> - prefix: <>-hack + directory: rust + prefix: rust-hack features: "all" - install-cargo-binstall - run: @@ -644,12 +707,574 @@ jobs: command -v cargo-hack >/dev/null || cargo binstall --no-confirm cargo-hack - run: name: Run cargo hack - working_directory: <> + working_directory: rust no_output_timeout: 60m command: | PARTITION_FLAG="" if [ "$CIRCLE_NODE_TOTAL" -gt 1 ]; then - PARTITION_FLAG="--partition $((CIRCLE_NODE_INDEX + 1))/$CIRCLE_NODE_TOTAL" + PARTITION_FLAG="$((CIRCLE_NODE_INDEX + 1))/$CIRCLE_NODE_TOTAL" fi - cargo hack check <> $PARTITION_FLAG + just hack $PARTITION_FLAG - rust-save-build-cache: *hack-cache-args + + # -------------------------------------------------------------------------- + # OP-Reth crate-specific jobs + # -------------------------------------------------------------------------- + + # OP-Reth compact codec backwards compatibility + op-reth-compact-codec: + docker: + - image: <> + resource_class: xlarge + steps: + - utils/checkout-with-mise: + checkout-method: blobless + - rust-prepare-and-restore-cache: &op-reth-compact-cache + directory: rust + prefix: op-reth-compact + profile: debug + - run: + name: Generate compact vectors from base + command: | + # Use develop as the base branch + BASE_BRANCH="develop" + + # Save current state + git stash || true + git fetch origin $BASE_BRANCH + git checkout origin/$BASE_BRANCH + + # Generate vectors on base + cargo run --bin op-reth --features "dev" --manifest-path rust/op-reth/bin/Cargo.toml -- test-vectors compact --write + + # Return to PR branch + git checkout - + git stash pop || true + - run: + name: Read compact vectors on PR branch + command: | + cargo run --bin op-reth --features "dev" --manifest-path rust/op-reth/bin/Cargo.toml -- test-vectors compact --read + - rust-save-build-cache: *op-reth-compact-cache + + # OP-Reth Windows cross-compile check + op-reth-windows-check: + docker: + - image: <> + resource_class: xlarge + steps: + - utils/checkout-with-mise: + checkout-method: blobless + - rust-prepare-and-restore-cache: &op-reth-windows-cache + directory: rust + prefix: op-reth-windows + profile: debug + - run: + name: Install mingw-w64 + command: sudo apt-get update && sudo apt-get install -y mingw-w64 + - run: + name: Check OP-Reth Windows build + working_directory: rust + no_output_timeout: 40m + command: just --justfile op-reth/justfile check-windows + - rust-save-build-cache: *op-reth-windows-cache + + # -------------------------------------------------------------------------- + # Op-Alloy crate-specific jobs + # -------------------------------------------------------------------------- + # Op-Alloy cfg check + op-alloy-cfg-check: + docker: + - image: <> + resource_class: xlarge + steps: + - utils/checkout-with-mise: + checkout-method: blobless + - rust-prepare-and-restore-cache: &op-alloy-cfg-check-cache + directory: rust + prefix: op-alloy-cfg-check + - rust-install-toolchain: + channel: nightly + toolchain_version: nightly + - run: + name: Run cfg check + working_directory: rust + no_output_timeout: 40m + command: | + just --justfile op-alloy/Justfile check + - rust-save-build-cache: *op-alloy-cfg-check-cache + + # -------------------------------------------------------------------------- + # Kona crate-specific jobs + # -------------------------------------------------------------------------- + + # Kona Host Client Offline Runs + kona-host-client-offline: + parameters: + machine: + image: <> + docker_layer_caching: true + resource_class: xlarge + steps: + - utils/checkout-with-mise: + checkout-method: blobless + - install-zstd + - rust-prepare + - install-cargo-binstall + - run: + name: Install cargo-llvm-cov + command: | + command -v cargo-llvm-cov >/dev/null || cargo binstall --no-confirm cargo-llvm-cov + - run: + name: Build cannon + command: | + cd cannon && make + sudo mv ./bin/cannon /usr/local/bin/ + - run: + name: Set run environment + command: | + echo 'export BLOCK_NUMBER=26215604' >> $BASH_ENV + echo 'export L2_CLAIM=0x7415d942f80a34f77d344e4bccb7050f14e593f5ea33669d27ea01dce273d72d' >> $BASH_ENV + echo 'export L2_OUTPUT_ROOT=0xaa34b62993bd888d7a2ad8541935374e39948576fce12aa8179a0aa5b5bc787b' >> $BASH_ENV + echo 'export L2_HEAD=0xf4adf5790bad1ffc9eee315dc163df9102473c5726a2743da27a8a10dc16b473' >> $BASH_ENV + echo 'export L1_HEAD=0x010cfdb22eaa13e8cdfbf66403f8de2a026475e96a6635d53c31f853a0e3ae25' >> $BASH_ENV + echo 'export L2_CHAIN_ID=11155420' >> $BASH_ENV + echo 'export WITNESS_TAR_NAME=holocene-op-sepolia-26215604-witness.tar.zst' >> $BASH_ENV + - run: + name: Decompress witness data + working_directory: rust/kona + command: | + tar --zstd -xvf ./bin/client/testdata/$WITNESS_TAR_NAME -C . + - run: + name: Run host + client offline + working_directory: rust/kona/bin/client + no_output_timeout: 40m + command: | + source <(cargo llvm-cov show-env --export-prefix) + mkdir -p ../../../target + just run-client-cannon-offline \ + $BLOCK_NUMBER \ + $L2_CLAIM \ + $L2_OUTPUT_ROOT \ + $L2_HEAD \ + $L1_HEAD \ + $L2_CHAIN_ID + cargo llvm-cov report --lcov --output-path client_host_cov.lcov + + # Kona Rust CI - Lint (cannon/asterisc targets) + kona-cargo-lint: + parameters: + target: + description: The lint target (native, cannon, asterisc) + type: string + machine: + image: <> + docker_layer_caching: true + resource_class: xlarge + steps: + - utils/checkout-with-mise: + checkout-method: blobless + - rust-prepare-and-restore-cache: + directory: rust + features: "all" + - rust-install-toolchain: + components: rustfmt + - run: + name: Run fmt + lint for <> + working_directory: rust/kona + no_output_timeout: 40m + command: | + just lint-<> + + # Kona Build FPVM targets + kona-build-fpvm: + parameters: + target: + description: The build target (cannon-client, asterisc-client) + type: string + machine: + image: <> + docker_layer_caching: true + resource_class: xlarge + steps: + - utils/checkout-with-mise: + checkout-method: blobless + - rust-prepare + - run: + name: Build <> + working_directory: rust/kona + no_output_timeout: 40m + command: | + just build-<> + + # Kona Build Benchmarks + kona-cargo-build-benches: + docker: + - image: <> + resource_class: 2xlarge + steps: + - utils/checkout-with-mise: + checkout-method: blobless + - rust-prepare-and-restore-cache: &kona-benches-cache + directory: rust + prefix: kona-benches + - run: + name: Build benchmarks + working_directory: rust/kona + no_output_timeout: 40m + command: | + just benches + - rust-save-build-cache: *kona-benches-cache + + # Kona Coverage + kona-coverage: + docker: + - image: <> + resource_class: xlarge + steps: + - utils/checkout-with-mise: + checkout-method: blobless + - rust-prepare-and-restore-cache: &kona-coverage-cache + directory: rust + prefix: kona-coverage + version: "1" + - rust-install-toolchain: + components: llvm-tools-preview + - install-cargo-binstall + - run: + name: Install cargo-llvm-cov and nextest + command: | + command -v cargo-llvm-cov >/dev/null || cargo binstall --no-confirm cargo-llvm-cov + command -v cargo-nextest >/dev/null || cargo binstall --locked --no-confirm cargo-nextest + - run: + name: Generate lockfile if needed + working_directory: rust + command: | + [ -f Cargo.lock ] || cargo generate-lockfile + - run: + name: Run coverage + working_directory: rust/kona + no_output_timeout: 40m + command: | + just llvm-cov-tests + - codecov/upload: + disable_search: true + files: rust/kona/lcov.info + flags: unit + - rust-save-build-cache: *kona-coverage-cache + + # Kona Docs Build + kona-docs-build: + docker: + - image: <> + resource_class: xlarge + steps: + - utils/checkout-with-mise: + checkout-method: blobless + - rust-prepare + - run: + name: Install Node.js and Bun + command: | + curl -fsSL https://deb.nodesource.com/setup_24.x | sudo -E bash - + sudo apt-get install -y nodejs + curl -fsSL https://bun.sh/install | bash + echo 'export BUN_INSTALL="$HOME/.bun"' >> $BASH_ENV + echo 'export PATH="$BUN_INSTALL/bin:$PATH"' >> $BASH_ENV + - run: + name: Install dependencies and Playwright browsers + working_directory: rust/kona/docs + command: | + bun i + npx playwright install --with-deps chromium + - run: + name: Build Vocs documentation + working_directory: rust/kona/docs + no_output_timeout: 60m + command: | + bun run build + echo "Vocs Build Complete" + - store_artifacts: + path: rust/kona/docs/docs/dist + destination: kona-docs + + # Kona Link Checker + kona-link-checker: + docker: + - image: <> + resource_class: medium + steps: + - utils/checkout-with-mise: + checkout-method: blobless + - run: + name: Install lychee + command: | + curl -sSfL https://github.com/lycheeverse/lychee/releases/download/v0.15.1/lychee-v0.15.1-x86_64-unknown-linux-gnu.tar.gz | tar xz + sudo mv lychee /usr/local/bin/ + - run: + name: Check links + working_directory: rust/kona + command: | + lychee --config ./lychee.toml --cache-exclude-status 429 '**/README.md' './docs/**/*.md' './docs/**/*.mdx' './docs/**/*.html' './docs/**/*.json' || true + + # Kona Publish Prestate Artifacts + kona-publish-prestate-artifacts: + parameters: + kind: + description: The kind of prestate (cannon) + type: string + default: "cannon" + version: + description: The version to build (kona-client, kona-client-int) + type: string + machine: + image: <> + docker_layer_caching: true + resource_class: xlarge + steps: + - utils/checkout-with-mise: + checkout-method: blobless + - rust-install-toolchain: + components: llvm-tools-preview + - rust-prepare-and-restore-cache: &kona-publish-prestate-cache + directory: rust + profile: release + - gcp-cli/install + - gcp-oidc-authenticate: + gcp_cred_config_file_path: /tmp/gcp_cred_config.json + oidc_token_file_path: /tmp/oidc_token.json + - run: + name: Generate prestate artifacts + working_directory: rust/kona + no_output_timeout: 60m + command: | + CANNON_TAG="$(cat .config/cannon_tag)" + cd docker/fpvm-prestates + just "<>" "<>" "$CANNON_TAG" + - run: + name: Upload prestates to GCS + command: | + PRESTATE_HASH=$(jq -r .pre ./prestate-artifacts-<>/prestate-proof.json) + BRANCH_NAME=$(echo "<< pipeline.git.branch >>" | tr '/' '-') + echo "Publishing ${PRESTATE_HASH} as ${BRANCH_NAME}" + if [ -n "<< pipeline.git.branch >>" ]; then + echo "Publishing commit hash data" + INFO_FILE=$(mktemp) + (echo "Commit=<< pipeline.git.revision >>" && echo "Prestate: ${PRESTATE_HASH}") > "${INFO_FILE}" + gsutil cp "${INFO_FILE}" "gs://oplabs-network-data/proofs/kona/<>/${BRANCH_NAME}-<>-prestate.bin.gz.txt" + rm "${INFO_FILE}" + PRESTATE_HASH="${BRANCH_NAME}-<>" + fi + gsutil cp ./prestate-artifacts-<>/prestate.bin.gz "gs://oplabs-network-data/proofs/kona/<>/${PRESTATE_HASH}.bin.gz" + echo "Successfully published prestates artifacts to GCS" + - rust-save-build-cache: *kona-publish-prestate-cache + +# ============================================================================ +# WORKFLOWS +# ============================================================================ +workflows: + # ========================================================================== + # Unified Rust CI workflow + # Runs on any rust/.* change or manual dispatch with rust_ci_dispatch=true + # ========================================================================== + rust-ci: + when: + or: + - equal: ["webhook", << pipeline.trigger_source >>] + - and: + - equal: [true, <>] + - equal: ["api", << pipeline.trigger_source >>] + jobs: + # ----------------------------------------------------------------------- + # Workspace-level jobs (replacing per-crate duplicates) + # ----------------------------------------------------------------------- + - rust-ci-fmt: + name: rust-fmt + directory: rust + context: &rust-ci-context + - circleci-repo-readonly-authenticated-github-token + + - rust-ci-clippy: + name: rust-clippy + directory: rust + command: "cargo clippy --workspace --all-targets --all-features --locked" + context: *rust-ci-context + + - rust-ci-deny: + name: rust-deny + directory: rust + command: "cargo deny --all-features check all" + context: *rust-ci-context + + - rust-ci-typos: + name: rust-typos + directory: rust + context: *rust-ci-context + + - rust-ci-zepter: + name: rust-zepter + directory: rust + context: *rust-ci-context + + - rust-ci-cargo-tests: + name: rust-tests + directory: rust + context: *rust-ci-context + + - rust-ci-doctest: + name: rust-doctest + directory: rust + command: "cargo test --doc --workspace --all-features" + context: *rust-ci-context + + - rust-ci-docs: + name: rust-docs + directory: rust + context: *rust-ci-context + + - rust-ci-udeps: + name: rust-udeps + directory: rust + context: *rust-ci-context + + - rust-ci-cargo-hack: + name: rust-cargo-hack + parallelism: 6 + context: *rust-ci-context + + - rust-build-binary: + name: rust-build + directory: rust + context: *rust-ci-context + + - rust-build-binary: + name: rust-build-release + directory: rust + profile: release + context: *rust-ci-context + + - rust-build-binary: + name: rust-msrv + directory: rust + toolchain: "1.88.0" + context: *rust-ci-context + + # ----------------------------------------------------------------------- + # Unified cross-compilation jobs + # ----------------------------------------------------------------------- + - rust-ci-check-no-std: + name: rust-check-no-std + directory: rust + command: | + just --justfile kona/justfile check-no-std + just --justfile op-alloy/Justfile check-no-std + just --justfile alloy-op-evm/justfile check-no-std + just --justfile alloy-op-hardforks/justfile check-no-std + toolchain: "1.88.0" + context: *rust-ci-context + + - rust-ci-cargo-hack-build: + name: rust-wasm-unknown + directory: rust + target: wasm32-unknown-unknown + flags: "-p op-alloy-consensus -p op-alloy-rpc-types -p op-alloy-rpc-types-engine -p alloy-op-evm --no-default-features" + context: *rust-ci-context + + - rust-ci-cargo-hack-build: + name: rust-wasm-wasi + directory: rust + target: wasm32-wasip1 + flags: "-p op-alloy-consensus -p op-alloy-rpc-types-engine -p alloy-op-evm" + context: *rust-ci-context + + # ----------------------------------------------------------------------- + # OP-Reth crate-specific jobs + # ----------------------------------------------------------------------- + - op-reth-compact-codec: + context: *rust-ci-context + + - op-reth-windows-check: + context: *rust-ci-context + + - rust-ci-cargo-tests: + name: op-reth-integration-tests + directory: rust + command: "--justfile op-reth/justfile test-integration" + cache_profile: debug + context: *rust-ci-context + + - rust-ci-cargo-tests: + name: op-reth-tests-edge + directory: rust + command: "--justfile op-reth/justfile test" + flags: "edge" + cache_profile: debug + context: *rust-ci-context + + # ----------------------------------------------------------------------- + # Op-Alloy crate-specific jobs + # ----------------------------------------------------------------------- + - op-alloy-cfg-check: + context: *rust-ci-context + + # ----------------------------------------------------------------------- + # Kona crate-specific jobs (lint, FPVM builds, benches, coverage) + # ----------------------------------------------------------------------- + - kona-cargo-lint: + name: kona-lint-<> + matrix: + parameters: + target: ["cannon", "asterisc"] + context: *rust-ci-context + + - kona-build-fpvm: + name: kona-build-fpvm-<> + matrix: + parameters: + target: ["cannon-client", "asterisc-client"] + context: *rust-ci-context + + - kona-cargo-build-benches: + context: *rust-ci-context + + - kona-coverage: + context: *rust-ci-context + requires: + - rust-tests + + - kona-host-client-offline: + name: kona-host-client-offline-cannon + context: *rust-ci-context + + + # ========================================================================== + # Kona scheduled workflows + # ========================================================================== + scheduled-kona-link-checker: + when: + equal: [build_weekly, <>] + jobs: + - kona-link-checker: + context: + - circleci-repo-readonly-authenticated-github-token + + scheduled-kona-sync: + when: + equal: [build_weekly, <>] + jobs: + - kona-update-monorepo: + context: + - circleci-repo-readonly-authenticated-github-token + + # Kona publish prestate artifacts - on push to develop + kona-publish-prestates: + when: + or: + - equal: ["develop", <>] + jobs: + - kona-publish-prestate-artifacts: + name: kona-publish-<> + matrix: + parameters: + version: ["kona-client", "kona-client-int"] + context: + - circleci-repo-readonly-authenticated-github-token + - oplabs-gcr diff --git a/.circleci/continue/rust-e2e.yml b/.circleci/continue/rust-e2e.yml new file mode 100644 index 0000000000000..8b753cece5cee --- /dev/null +++ b/.circleci/continue/rust-e2e.yml @@ -0,0 +1,276 @@ +version: 2.1 + +# Rust E2E CI Continuation Configuration +# This file contains E2E tests that depend on both kona and op-reth. +# It is merged with main.yml and rust-ci.yml when rust/** changes are detected. +# Shared orbs, commands, and jobs come from main.yml and rust-ci.yml during merge. + +parameters: + # Required parameters (also in main.yml, merged during continuation) + default_docker_image: + type: string + default: cimg/base:2024.01 + rust_e2e_dispatch: + type: boolean + default: false + go-cache-version: + type: string + default: "v0.0" + +# Commands used by rust-e2e jobs +commands: + go-restore-cache: + parameters: + module: + type: string + default: . + namespace: + type: string + version: + type: string + default: <> + steps: + - restore_cache: + name: Restore go cache for <> (<>/go.mod) + keys: + - go-<>-<>-<>-{{ checksum "<>/go.mod" }}-{{ checksum "<>/go.sum" }} + - go-<>-<>-<>-{{ checksum "<>/go.mod" }}- + - go-<>-<>-<>- + + go-save-cache: + parameters: + module: + type: string + default: . + namespace: + type: string + version: + type: string + default: <> + steps: + - save_cache: + name: Save go cache for <> (<>/go.mod) + paths: + - ~/.cache/go-build + - ~/go/pkg/mod + key: go-<>-<>-<>-{{ checksum "<>/go.mod" }}-{{ checksum "<>/go.sum" }} + +# ============================================================================ +# RUST E2E JOBS +# ============================================================================ +jobs: + # Kona Node E2E Sysgo Tests (requires both kona and op-reth) + rust-e2e-sysgo-tests: + parameters: + devnet_config: + description: The devnet configuration to test + type: string + reorg_tests: + description: Whether to run reorg tests + type: boolean + default: false + docker: + - image: <> + resource_class: xlarge + steps: + - utils/checkout-with-mise: + checkout-method: blobless + - attach_workspace: + at: . + - go-restore-cache: + namespace: kona-ci + - rust-build: &kona-rust-build-release + directory: rust + profile: release + binary: "kona-node" + - run: + name: Run common tests for node with sysgo orchestrator + no_output_timeout: 60m + command: | + WD=$(pwd) + echo "Running tests..." + export OP_RETH_EXEC_PATH="$WD/rust/target/release/op-reth" + export RUST_BINARY_PATH_KONA_NODE="$WD/rust/target/release/kona-node" + cd rust/kona && just test-e2e-sysgo-run node node/common "<>" + - when: + condition: + equal: [true, <>] + steps: + - run: + name: Run reorg tests for node with sysgo orchestrator + no_output_timeout: 60m + command: | + WD=$(pwd) + echo "Running tests..." + export OP_RETH_EXEC_PATH="$WD/rust/target/release/op-reth" + export RUST_BINARY_PATH_KONA_NODE="$WD/rust/target/release/kona-node" + cd rust/kona && just test-e2e-sysgo-run node node/reorgs "<>" + - go-save-cache: + namespace: kona-ci + + # Kona Node Restart Tests (from node_e2e_sysgo_tests.yaml) + rust-restart-sysgo-tests: + docker: + - image: <> + resource_class: xlarge + steps: + - utils/checkout-with-mise: + checkout-method: blobless + - attach_workspace: + at: . + - go-restore-cache: + namespace: kona-ci + - rust-build: + <<: *kona-rust-build-release + - run: + name: Run restart tests for node with sysgo orchestrator + no_output_timeout: 60m + command: | + echo "Running tests..." + WD=$(pwd) + export RUST_BINARY_PATH_KONA_NODE="$WD/rust/target/release/kona-node" + cd rust/kona && just test-e2e-sysgo node node/restart + - go-save-cache: + namespace: kona-ci + + # Kona Supervisor E2E Tests + kona-supervisor-e2e-tests: + parameters: + test_pkg: + description: The test package to run + type: string + docker: + - image: <> + resource_class: xlarge + steps: + - utils/checkout-with-mise: + checkout-method: blobless + - rust-build: + <<: *kona-rust-build-release + binary: "kona-supervisor" + - run: + name: Run supervisor tests for <> + working_directory: rust/kona + no_output_timeout: 40m + command: | + just test-e2e-sysgo supervisor "/supervisor/<>" + + # Kona Proof Action Tests (from proof.yaml) + kona-proof-action-tests: + parameters: + kind: + description: The kind of action test (single or interop) + type: string + docker: + - image: <> + resource_class: xlarge + parallelism: 4 + steps: + - utils/checkout-with-mise: + checkout-method: blobless + - attach_workspace: + at: . + - go-restore-cache: + namespace: kona-ci + - rust-build: + <<: *kona-rust-build-release + binary: "kona-host" + - run: + name: Build kona and run action tests + working_directory: rust/kona + no_output_timeout: 90m + command: | + echo "Running action tests" + export KONA_HOST_PATH=$(pwd)/../target/release/kona-host + just action-tests-<>-run + - go-save-cache: + namespace: kona-ci + +# ============================================================================ +# RUST E2E WORKFLOWS +# ============================================================================ +workflows: + rust-e2e-ci: + when: + or: + - equal: ["webhook", << pipeline.trigger_source >>] + - and: + - equal: [true, <>] + - equal: ["api", << pipeline.trigger_source >>] + jobs: + - contracts-bedrock-build: + build_args: --skip test + context: + - circleci-repo-readonly-authenticated-github-token + - cannon-prestate-quick: &rust-e2e-job-base + context: + - circleci-repo-readonly-authenticated-github-token + - cannon-kona-prestate: + <<: *rust-e2e-job-base + - rust-build-binary: &cannon-kona-host + name: cannon-kona-host + directory: rust + profile: release + binary: "kona-host" + context: + - circleci-repo-readonly-authenticated-github-token + - rust-build-binary: &kona-build-release + name: kona-build-release + directory: rust + profile: release + context: + - circleci-repo-readonly-authenticated-github-token + - rust-build-binary: + name: op-reth-build + directory: rust + profile: release + binary: "op-reth" + context: + - circleci-repo-readonly-authenticated-github-token + - rust-e2e-sysgo-tests: + name: rust-e2e-<> + matrix: + parameters: + devnet_config: ["simple-kona", "simple-kona-geth", "simple-kona-sequencer", "large-kona-sequencer"] + context: + - circleci-repo-readonly-authenticated-github-token + requires: + - contracts-bedrock-build + - cannon-prestate-quick + - cannon-kona-prestate + - cannon-kona-host + - kona-build-release + - op-reth-build + - rust-restart-sysgo-tests: + name: rust-e2e-restart + <<: *rust-e2e-job-base + requires: + - contracts-bedrock-build + - cannon-prestate-quick + - cannon-kona-prestate + - cannon-kona-host + - kona-build-release + # Proof tests - single kind only, interop excluded per original config + - kona-proof-action-tests: + name: kona-proof-action-single + kind: single + requires: + - kona-build-release + - contracts-bedrock-build + context: + - circleci-repo-readonly-authenticated-github-token + + # Kona supervisor E2E tests - manual dispatch only + kona-supervisor-e2e: + when: + and: + - equal: [true, <>] + - equal: ["api", << pipeline.trigger_source >>] + jobs: + - kona-supervisor-e2e-tests: + name: kona-supervisor-<> + matrix: + parameters: + test_pkg: ["pre_interop", "l1reorg/sysgo"] + context: + - circleci-repo-readonly-authenticated-github-token diff --git a/.gitmodules b/.gitmodules index 2f49f00788548..1856b3a961a7d 100644 --- a/.gitmodules +++ b/.gitmodules @@ -32,12 +32,9 @@ [submodule "packages/contracts-bedrock/lib/superchain-registry"] path = packages/contracts-bedrock/lib/superchain-registry url = https://github.com/ethereum-optimism/superchain-registry -[submodule "kona/crates/protocol/registry/superchain-registry"] - path = kona/crates/protocol/registry/superchain-registry - url = https://github.com/ethereum-optimism/superchain-registry.git -[submodule "reth"] - path = reth - url = https://github.com/paradigmxyz/reth +[submodule "rust/kona/crates/protocol/registry/superchain-registry"] + path = rust/kona/crates/protocol/registry/superchain-registry + url = https://github.com/ethereum-optimism/superchain-registry [submodule "op-rbuilder"] path = op-rbuilder url = https://github.com/flashbots/op-rbuilder diff --git a/alloy-op-evm/Cargo.lock b/alloy-op-evm/Cargo.lock deleted file mode 100644 index 1aa80666ece02..0000000000000 --- a/alloy-op-evm/Cargo.lock +++ /dev/null @@ -1,4299 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 4 - -[[package]] -name = "ahash" -version = "0.8.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" -dependencies = [ - "cfg-if", - "once_cell", - "version_check", - "zerocopy", -] - -[[package]] -name = "allocator-api2" -version = "0.2.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" - -[[package]] -name = "alloy-chains" -version = "0.2.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3842d8c52fcd3378039f4703dba392dca8b546b1c8ed6183048f8dab95b2be78" -dependencies = [ - "alloy-primitives", - "num_enum", - "strum", -] - -[[package]] -name = "alloy-consensus" -version = "1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed1958f0294ecc05ebe7b3c9a8662a3e221c2523b7f2bcd94c7a651efbd510bf" -dependencies = [ - "alloy-eips", - "alloy-primitives", - "alloy-rlp", - "alloy-serde", - "alloy-trie", - "alloy-tx-macros", - "auto_impl", - "borsh", - "c-kzg", - "derive_more", - "either", - "k256", - "once_cell", - "rand 0.8.5", - "secp256k1 0.30.0", - "serde", - "serde_json", - "serde_with", - "thiserror", -] - -[[package]] -name = "alloy-consensus-any" -version = "1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f752e99497ddc39e22d547d7dfe516af10c979405a034ed90e69b914b7dddeae" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-primitives", - "alloy-rlp", - "alloy-serde", - "serde", -] - -[[package]] -name = "alloy-eip2124" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "741bdd7499908b3aa0b159bba11e71c8cddd009a2c2eb7a06e825f1ec87900a5" -dependencies = [ - "alloy-primitives", - "alloy-rlp", - "crc", - "serde", - "thiserror", -] - -[[package]] -name = "alloy-eip2930" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9441120fa82df73e8959ae0e4ab8ade03de2aaae61be313fbf5746277847ce25" -dependencies = [ - "alloy-primitives", - "alloy-rlp", - "borsh", - "serde", -] - -[[package]] -name = "alloy-eip7702" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2919c5a56a1007492da313e7a3b6d45ef5edc5d33416fdec63c0d7a2702a0d20" -dependencies = [ - "alloy-primitives", - "alloy-rlp", - "borsh", - "k256", - "serde", - "thiserror", -] - -[[package]] -name = "alloy-eip7928" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6adac476434bf024279164dcdca299309f0c7d1e3557024eb7a83f8d9d01c6b5" -dependencies = [ - "alloy-primitives", - "alloy-rlp", - "borsh", - "serde", -] - -[[package]] -name = "alloy-eips" -version = "1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "813a67f87e56b38554d18b182616ee5006e8e2bf9df96a0df8bf29dff1d52e3f" -dependencies = [ - "alloy-eip2124", - "alloy-eip2930", - "alloy-eip7702", - "alloy-eip7928", - "alloy-primitives", - "alloy-rlp", - "alloy-serde", - "auto_impl", - "borsh", - "c-kzg", - "derive_more", - "either", - "ethereum_ssz", - "ethereum_ssz_derive", - "serde", - "serde_with", - "sha2", - "thiserror", -] - -[[package]] -name = "alloy-evm" -version = "0.27.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1582933a9fc27c0953220eb4f18f6492ff577822e9a8d848890ff59f6b4f5beb" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-hardforks", - "alloy-op-hardforks", - "alloy-primitives", - "alloy-rpc-types-engine", - "alloy-rpc-types-eth", - "alloy-sol-types", - "auto_impl", - "derive_more", - "op-alloy", - "op-revm", - "revm", - "thiserror", -] - -[[package]] -name = "alloy-hardforks" -version = "0.4.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83ba208044232d14d4adbfa77e57d6329f51bc1acc21f5667bb7db72d88a0831" -dependencies = [ - "alloy-chains", - "alloy-eip2124", - "alloy-primitives", - "auto_impl", - "dyn-clone", -] - -[[package]] -name = "alloy-json-abi" -version = "1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84e3cf01219c966f95a460c95f1d4c30e12f6c18150c21a30b768af2a2a29142" -dependencies = [ - "alloy-primitives", - "alloy-sol-type-parser", - "serde", - "serde_json", -] - -[[package]] -name = "alloy-json-rpc" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b626409c98ba43aaaa558361bca21440c88fd30df7542c7484b9c7a1489cdb" -dependencies = [ - "alloy-primitives", - "alloy-sol-types", - "http", - "serde", - "serde_json", - "thiserror", - "tracing", -] - -[[package]] -name = "alloy-network" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89924fdcfeee0e0fa42b1f10af42f92802b5d16be614a70897382565663bf7cf" -dependencies = [ - "alloy-consensus", - "alloy-consensus-any", - "alloy-eips", - "alloy-json-rpc", - "alloy-network-primitives", - "alloy-primitives", - "alloy-rpc-types-any", - "alloy-rpc-types-eth", - "alloy-serde", - "alloy-signer", - "alloy-sol-types", - "async-trait", - "auto_impl", - "derive_more", - "futures-utils-wasm", - "serde", - "serde_json", - "thiserror", -] - -[[package]] -name = "alloy-network-primitives" -version = "1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "833037c04917bc2031541a60e8249e4ab5500e24c637c1c62e95e963a655d66f" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-primitives", - "alloy-serde", - "serde", -] - -[[package]] -name = "alloy-op-evm" -version = "0.27.0" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-evm", - "alloy-hardforks", - "alloy-op-hardforks", - "alloy-primitives", - "auto_impl", - "op-alloy", - "op-revm", - "revm", - "test-case", - "thiserror", -] - -[[package]] -name = "alloy-op-hardforks" -version = "0.4.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6472c610150c4c4c15be9e1b964c9b78068f933bda25fb9cdf09b9ac2bb66f36" -dependencies = [ - "alloy-chains", - "alloy-hardforks", - "alloy-primitives", - "auto_impl", -] - -[[package]] -name = "alloy-primitives" -version = "1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6a0fb18dd5fb43ec5f0f6a20be1ce0287c79825827de5744afaa6c957737c33" -dependencies = [ - "alloy-rlp", - "bytes", - "cfg-if", - "const-hex", - "derive_more", - "foldhash", - "hashbrown 0.16.1", - "indexmap 2.13.0", - "itoa", - "k256", - "keccak-asm", - "paste", - "proptest", - "rand 0.9.2", - "rapidhash", - "ruint", - "rustc-hash", - "serde", - "sha3", - "tiny-keccak", -] - -[[package]] -name = "alloy-provider" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b56f7a77513308a21a2ba0e9d57785a9d9d2d609e77f4e71a78a1192b83ff2d" -dependencies = [ - "alloy-chains", - "alloy-consensus", - "alloy-eips", - "alloy-json-rpc", - "alloy-network", - "alloy-network-primitives", - "alloy-primitives", - "alloy-rpc-client", - "alloy-rpc-types-eth", - "alloy-signer", - "alloy-sol-types", - "alloy-transport", - "async-stream", - "async-trait", - "auto_impl", - "dashmap", - "either", - "futures", - "futures-utils-wasm", - "lru", - "parking_lot", - "pin-project", - "serde", - "serde_json", - "thiserror", - "tokio", - "tracing", - "wasmtimer", -] - -[[package]] -name = "alloy-rlp" -version = "0.3.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f70d83b765fdc080dbcd4f4db70d8d23fe4761f2f02ebfa9146b833900634b4" -dependencies = [ - "alloy-rlp-derive", - "arrayvec", - "bytes", -] - -[[package]] -name = "alloy-rlp-derive" -version = "0.3.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64b728d511962dda67c1bc7ea7c03736ec275ed2cf4c35d9585298ac9ccf3b73" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "alloy-rpc-client" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff01723afc25ec4c5b04de399155bef7b6a96dfde2475492b1b7b4e7a4f46445" -dependencies = [ - "alloy-json-rpc", - "alloy-primitives", - "alloy-transport", - "futures", - "pin-project", - "serde", - "serde_json", - "tokio", - "tokio-stream", - "tower", - "tracing", - "wasmtimer", -] - -[[package]] -name = "alloy-rpc-types-any" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "212ca1c1dab27f531d3858f8b1a2d6bfb2da664be0c1083971078eb7b71abe4b" -dependencies = [ - "alloy-consensus-any", - "alloy-rpc-types-eth", - "alloy-serde", -] - -[[package]] -name = "alloy-rpc-types-engine" -version = "1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "336ef381c7409f23c69f6e79bddc1917b6e832cff23e7a5cf84b9381d53582e6" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-primitives", - "alloy-rlp", - "alloy-serde", - "derive_more", - "ethereum_ssz", - "ethereum_ssz_derive", - "rand 0.8.5", - "serde", - "strum", -] - -[[package]] -name = "alloy-rpc-types-eth" -version = "1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28e97603095020543a019ab133e0e3dc38cd0819f19f19bdd70c642404a54751" -dependencies = [ - "alloy-consensus", - "alloy-consensus-any", - "alloy-eips", - "alloy-network-primitives", - "alloy-primitives", - "alloy-rlp", - "alloy-serde", - "alloy-sol-types", - "itertools 0.14.0", - "serde", - "serde_json", - "serde_with", - "thiserror", -] - -[[package]] -name = "alloy-serde" -version = "1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "946a0d413dbb5cd9adba0de5f8a1a34d5b77deda9b69c1d7feed8fc875a1aa26" -dependencies = [ - "alloy-primitives", - "serde", - "serde_json", -] - -[[package]] -name = "alloy-signer" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb10ccd49d0248df51063fce6b716f68a315dd912d55b32178c883fd48b4021d" -dependencies = [ - "alloy-primitives", - "async-trait", - "auto_impl", - "either", - "elliptic-curve", - "k256", - "thiserror", -] - -[[package]] -name = "alloy-sol-macro" -version = "1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09eb18ce0df92b4277291bbaa0ed70545d78b02948df756bbd3d6214bf39a218" -dependencies = [ - "alloy-sol-macro-expander", - "alloy-sol-macro-input", - "proc-macro-error2", - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "alloy-sol-macro-expander" -version = "1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95d9fa2daf21f59aa546d549943f10b5cce1ae59986774019fbedae834ffe01b" -dependencies = [ - "alloy-sol-macro-input", - "const-hex", - "heck", - "indexmap 2.13.0", - "proc-macro-error2", - "proc-macro2", - "quote", - "syn 2.0.114", - "syn-solidity", - "tiny-keccak", -] - -[[package]] -name = "alloy-sol-macro-input" -version = "1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9396007fe69c26ee118a19f4dee1f5d1d6be186ea75b3881adf16d87f8444686" -dependencies = [ - "const-hex", - "dunce", - "heck", - "macro-string", - "proc-macro2", - "quote", - "syn 2.0.114", - "syn-solidity", -] - -[[package]] -name = "alloy-sol-type-parser" -version = "1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af67a0b0dcebe14244fc92002cd8d96ecbf65db4639d479f5fcd5805755a4c27" -dependencies = [ - "serde", - "winnow", -] - -[[package]] -name = "alloy-sol-types" -version = "1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09aeea64f09a7483bdcd4193634c7e5cf9fd7775ee767585270cd8ce2d69dc95" -dependencies = [ - "alloy-json-abi", - "alloy-primitives", - "alloy-sol-macro", - "serde", -] - -[[package]] -name = "alloy-transport" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f50a9516736d22dd834cc2240e5bf264f338667cc1d9e514b55ec5a78b987ca" -dependencies = [ - "alloy-json-rpc", - "auto_impl", - "base64", - "derive_more", - "futures", - "futures-utils-wasm", - "parking_lot", - "serde", - "serde_json", - "thiserror", - "tokio", - "tower", - "tracing", - "url", - "wasmtimer", -] - -[[package]] -name = "alloy-trie" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "428aa0f0e0658ff091f8f667c406e034b431cb10abd39de4f507520968acc499" -dependencies = [ - "alloy-primitives", - "alloy-rlp", - "arrayvec", - "derive_more", - "nybbles", - "serde", - "smallvec", - "tracing", -] - -[[package]] -name = "alloy-tx-macros" -version = "1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45ceac797eb8a56bdf5ab1fab353072c17d472eab87645ca847afe720db3246d" -dependencies = [ - "darling 0.21.3", - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "android_system_properties" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" -dependencies = [ - "libc", -] - -[[package]] -name = "ark-bls12-381" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3df4dcc01ff89867cd86b0da835f23c3f02738353aaee7dde7495af71363b8d5" -dependencies = [ - "ark-ec", - "ark-ff 0.5.0", - "ark-serialize 0.5.0", - "ark-std 0.5.0", -] - -[[package]] -name = "ark-bn254" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d69eab57e8d2663efa5c63135b2af4f396d66424f88954c21104125ab6b3e6bc" -dependencies = [ - "ark-ec", - "ark-ff 0.5.0", - "ark-r1cs-std", - "ark-std 0.5.0", -] - -[[package]] -name = "ark-ec" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43d68f2d516162846c1238e755a7c4d131b892b70cc70c471a8e3ca3ed818fce" -dependencies = [ - "ahash", - "ark-ff 0.5.0", - "ark-poly", - "ark-serialize 0.5.0", - "ark-std 0.5.0", - "educe", - "fnv", - "hashbrown 0.15.5", - "itertools 0.13.0", - "num-bigint", - "num-integer", - "num-traits", - "zeroize", -] - -[[package]] -name = "ark-ff" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b3235cc41ee7a12aaaf2c575a2ad7b46713a8a50bda2fc3b003a04845c05dd6" -dependencies = [ - "ark-ff-asm 0.3.0", - "ark-ff-macros 0.3.0", - "ark-serialize 0.3.0", - "ark-std 0.3.0", - "derivative", - "num-bigint", - "num-traits", - "paste", - "rustc_version 0.3.3", - "zeroize", -] - -[[package]] -name = "ark-ff" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" -dependencies = [ - "ark-ff-asm 0.4.2", - "ark-ff-macros 0.4.2", - "ark-serialize 0.4.2", - "ark-std 0.4.0", - "derivative", - "digest 0.10.7", - "itertools 0.10.5", - "num-bigint", - "num-traits", - "paste", - "rustc_version 0.4.1", - "zeroize", -] - -[[package]] -name = "ark-ff" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a177aba0ed1e0fbb62aa9f6d0502e9b46dad8c2eab04c14258a1212d2557ea70" -dependencies = [ - "ark-ff-asm 0.5.0", - "ark-ff-macros 0.5.0", - "ark-serialize 0.5.0", - "ark-std 0.5.0", - "arrayvec", - "digest 0.10.7", - "educe", - "itertools 0.13.0", - "num-bigint", - "num-traits", - "paste", - "zeroize", -] - -[[package]] -name = "ark-ff-asm" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db02d390bf6643fb404d3d22d31aee1c4bc4459600aef9113833d17e786c6e44" -dependencies = [ - "quote", - "syn 1.0.109", -] - -[[package]] -name = "ark-ff-asm" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" -dependencies = [ - "quote", - "syn 1.0.109", -] - -[[package]] -name = "ark-ff-asm" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" -dependencies = [ - "quote", - "syn 2.0.114", -] - -[[package]] -name = "ark-ff-macros" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db2fd794a08ccb318058009eefdf15bcaaaaf6f8161eb3345f907222bac38b20" -dependencies = [ - "num-bigint", - "num-traits", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "ark-ff-macros" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" -dependencies = [ - "num-bigint", - "num-traits", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "ark-ff-macros" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09be120733ee33f7693ceaa202ca41accd5653b779563608f1234f78ae07c4b3" -dependencies = [ - "num-bigint", - "num-traits", - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "ark-poly" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "579305839da207f02b89cd1679e50e67b4331e2f9294a57693e5051b7703fe27" -dependencies = [ - "ahash", - "ark-ff 0.5.0", - "ark-serialize 0.5.0", - "ark-std 0.5.0", - "educe", - "fnv", - "hashbrown 0.15.5", -] - -[[package]] -name = "ark-r1cs-std" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "941551ef1df4c7a401de7068758db6503598e6f01850bdb2cfdb614a1f9dbea1" -dependencies = [ - "ark-ec", - "ark-ff 0.5.0", - "ark-relations", - "ark-std 0.5.0", - "educe", - "num-bigint", - "num-integer", - "num-traits", - "tracing", -] - -[[package]] -name = "ark-relations" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec46ddc93e7af44bcab5230937635b06fb5744464dd6a7e7b083e80ebd274384" -dependencies = [ - "ark-ff 0.5.0", - "ark-std 0.5.0", - "tracing", - "tracing-subscriber", -] - -[[package]] -name = "ark-serialize" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d6c2b318ee6e10f8c2853e73a83adc0ccb88995aa978d8a3408d492ab2ee671" -dependencies = [ - "ark-std 0.3.0", - "digest 0.9.0", -] - -[[package]] -name = "ark-serialize" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" -dependencies = [ - "ark-std 0.4.0", - "digest 0.10.7", - "num-bigint", -] - -[[package]] -name = "ark-serialize" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f4d068aaf107ebcd7dfb52bc748f8030e0fc930ac8e360146ca54c1203088f7" -dependencies = [ - "ark-serialize-derive", - "ark-std 0.5.0", - "arrayvec", - "digest 0.10.7", - "num-bigint", -] - -[[package]] -name = "ark-serialize-derive" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "213888f660fddcca0d257e88e54ac05bca01885f258ccdf695bafd77031bb69d" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "ark-std" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1df2c09229cbc5a028b1d70e00fdb2acee28b1055dfb5ca73eea49c5a25c4e7c" -dependencies = [ - "num-traits", - "rand 0.8.5", -] - -[[package]] -name = "ark-std" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" -dependencies = [ - "num-traits", - "rand 0.8.5", -] - -[[package]] -name = "ark-std" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "246a225cc6131e9ee4f24619af0f19d67761fff15d7ccc22e42b80846e69449a" -dependencies = [ - "num-traits", - "rand 0.8.5", -] - -[[package]] -name = "arrayref" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" - -[[package]] -name = "arrayvec" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" -dependencies = [ - "serde", -] - -[[package]] -name = "async-stream" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" -dependencies = [ - "async-stream-impl", - "futures-core", - "pin-project-lite", -] - -[[package]] -name = "async-stream-impl" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "async-trait" -version = "0.1.89" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "aurora-engine-modexp" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "518bc5745a6264b5fd7b09dffb9667e400ee9e2bbe18555fac75e1fe9afa0df9" -dependencies = [ - "hex", - "num", -] - -[[package]] -name = "auto_impl" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffdcb70bdbc4d478427380519163274ac86e52916e10f0a8889adf0f96d3fee7" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "autocfg" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" - -[[package]] -name = "base16ct" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" - -[[package]] -name = "base64" -version = "0.22.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" - -[[package]] -name = "base64ct" -version = "1.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2af50177e190e07a26ab74f8b1efbfe2ef87da2116221318cb1c2e82baf7de06" - -[[package]] -name = "bit-set" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" -dependencies = [ - "bit-vec", -] - -[[package]] -name = "bit-vec" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" - -[[package]] -name = "bitcoin-io" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dee39a0ee5b4095224a0cfc6bf4cc1baf0f9624b96b367e53b66d974e51d953" - -[[package]] -name = "bitcoin_hashes" -version = "0.14.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26ec84b80c482df901772e931a9a681e26a1b9ee2302edeff23cb30328745c8b" -dependencies = [ - "bitcoin-io", - "hex-conservative", -] - -[[package]] -name = "bitflags" -version = "2.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" - -[[package]] -name = "bitvec" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" -dependencies = [ - "funty", - "radium", - "tap", - "wyz", -] - -[[package]] -name = "block-buffer" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" -dependencies = [ - "generic-array", -] - -[[package]] -name = "blst" -version = "0.3.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcdb4c7013139a150f9fc55d123186dbfaba0d912817466282c73ac49e71fb45" -dependencies = [ - "cc", - "glob", - "threadpool", - "zeroize", -] - -[[package]] -name = "borsh" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1da5ab77c1437701eeff7c88d968729e7766172279eab0676857b3d63af7a6f" -dependencies = [ - "borsh-derive", - "cfg_aliases", -] - -[[package]] -name = "borsh-derive" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0686c856aa6aac0c4498f936d7d6a02df690f614c03e4d906d1018062b5c5e2c" -dependencies = [ - "once_cell", - "proc-macro-crate", - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "bumpalo" -version = "3.19.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510" - -[[package]] -name = "byte-slice-cast" -version = "1.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7575182f7272186991736b70173b0ea045398f984bf5ebbb3804736ce1330c9d" - -[[package]] -name = "byteorder" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" - -[[package]] -name = "bytes" -version = "1.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3" -dependencies = [ - "serde", -] - -[[package]] -name = "c-kzg" -version = "2.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e00bf4b112b07b505472dbefd19e37e53307e2bfed5a79e0cc161d58ccd0e687" -dependencies = [ - "blst", - "cc", - "glob", - "hex", - "libc", - "once_cell", - "serde", -] - -[[package]] -name = "cc" -version = "1.2.53" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "755d2fce177175ffca841e9a06afdb2c4ab0f593d53b4dee48147dfaade85932" -dependencies = [ - "find-msvc-tools", - "shlex", -] - -[[package]] -name = "cfg-if" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" - -[[package]] -name = "cfg_aliases" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" - -[[package]] -name = "chrono" -version = "0.4.43" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fac4744fb15ae8337dc853fee7fb3f4e48c0fbaa23d0afe49c447b4fab126118" -dependencies = [ - "iana-time-zone", - "num-traits", - "serde", - "windows-link", -] - -[[package]] -name = "const-hex" -version = "1.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bb320cac8a0750d7f25280aa97b09c26edfe161164238ecbbb31092b079e735" -dependencies = [ - "cfg-if", - "cpufeatures", - "proptest", - "serde_core", -] - -[[package]] -name = "const-oid" -version = "0.9.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" - -[[package]] -name = "const_format" -version = "0.2.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7faa7469a93a566e9ccc1c73fe783b4a65c274c5ace346038dca9c39fe0030ad" -dependencies = [ - "const_format_proc_macros", -] - -[[package]] -name = "const_format_proc_macros" -version = "0.2.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d57c2eccfb16dbac1f4e61e206105db5820c9d26c3c472bc17c774259ef7744" -dependencies = [ - "proc-macro2", - "quote", - "unicode-xid", -] - -[[package]] -name = "convert_case" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "633458d4ef8c78b72454de2d54fd6ab2e60f9e02be22f3c6104cdc8a4e0fceb9" -dependencies = [ - "unicode-segmentation", -] - -[[package]] -name = "core-foundation-sys" -version = "0.8.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" - -[[package]] -name = "cpufeatures" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" -dependencies = [ - "libc", -] - -[[package]] -name = "crc" -version = "3.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5eb8a2a1cd12ab0d987a5d5e825195d372001a4094a0376319d5a0ad71c1ba0d" -dependencies = [ - "crc-catalog", -] - -[[package]] -name = "crc-catalog" -version = "2.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" - -[[package]] -name = "crossbeam-utils" -version = "0.8.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" - -[[package]] -name = "crunchy" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" - -[[package]] -name = "crypto-bigint" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" -dependencies = [ - "generic-array", - "rand_core 0.6.4", - "subtle", - "zeroize", -] - -[[package]] -name = "crypto-common" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" -dependencies = [ - "generic-array", - "typenum", -] - -[[package]] -name = "darling" -version = "0.20.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" -dependencies = [ - "darling_core 0.20.11", - "darling_macro 0.20.11", -] - -[[package]] -name = "darling" -version = "0.21.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0" -dependencies = [ - "darling_core 0.21.3", - "darling_macro 0.21.3", -] - -[[package]] -name = "darling_core" -version = "0.20.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e" -dependencies = [ - "fnv", - "ident_case", - "proc-macro2", - "quote", - "strsim", - "syn 2.0.114", -] - -[[package]] -name = "darling_core" -version = "0.21.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4" -dependencies = [ - "fnv", - "ident_case", - "proc-macro2", - "quote", - "serde", - "strsim", - "syn 2.0.114", -] - -[[package]] -name = "darling_macro" -version = "0.20.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" -dependencies = [ - "darling_core 0.20.11", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "darling_macro" -version = "0.21.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" -dependencies = [ - "darling_core 0.21.3", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "dashmap" -version = "6.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf" -dependencies = [ - "cfg-if", - "crossbeam-utils", - "hashbrown 0.14.5", - "lock_api", - "once_cell", - "parking_lot_core", -] - -[[package]] -name = "der" -version = "0.7.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" -dependencies = [ - "const-oid", - "zeroize", -] - -[[package]] -name = "deranged" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587" -dependencies = [ - "powerfmt", - "serde_core", -] - -[[package]] -name = "derivative" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "derive-where" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef941ded77d15ca19b40374869ac6000af1c9f2a4c0f3d4c70926287e6364a8f" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "derive_more" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d751e9e49156b02b44f9c1815bcb94b984cdcc4396ecc32521c739452808b134" -dependencies = [ - "derive_more-impl", -] - -[[package]] -name = "derive_more-impl" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "799a97264921d8623a957f6c3b9011f3b5492f557bbb7a5a19b7fa6d06ba8dcb" -dependencies = [ - "convert_case", - "proc-macro2", - "quote", - "rustc_version 0.4.1", - "syn 2.0.114", - "unicode-xid", -] - -[[package]] -name = "digest" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" -dependencies = [ - "generic-array", -] - -[[package]] -name = "digest" -version = "0.10.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" -dependencies = [ - "block-buffer", - "const-oid", - "crypto-common", - "subtle", -] - -[[package]] -name = "displaydoc" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "dunce" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" - -[[package]] -name = "dyn-clone" -version = "1.0.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" - -[[package]] -name = "ecdsa" -version = "0.16.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" -dependencies = [ - "der", - "digest 0.10.7", - "elliptic-curve", - "rfc6979", - "serdect", - "signature", - "spki", -] - -[[package]] -name = "educe" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d7bc049e1bd8cdeb31b68bbd586a9464ecf9f3944af3958a7a9d0f8b9799417" -dependencies = [ - "enum-ordinalize", - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "either" -version = "1.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" -dependencies = [ - "serde", -] - -[[package]] -name = "elliptic-curve" -version = "0.13.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" -dependencies = [ - "base16ct", - "crypto-bigint", - "digest 0.10.7", - "ff", - "generic-array", - "group", - "pkcs8", - "rand_core 0.6.4", - "sec1", - "serdect", - "subtle", - "zeroize", -] - -[[package]] -name = "enum-ordinalize" -version = "4.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a1091a7bb1f8f2c4b28f1fe2cef4980ca2d410a3d727d67ecc3178c9b0800f0" -dependencies = [ - "enum-ordinalize-derive", -] - -[[package]] -name = "enum-ordinalize-derive" -version = "4.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ca9601fb2d62598ee17836250842873a413586e5d7ed88b356e38ddbb0ec631" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "equivalent" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" - -[[package]] -name = "errno" -version = "0.3.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" -dependencies = [ - "libc", - "windows-sys 0.61.2", -] - -[[package]] -name = "ethereum_serde_utils" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dc1355dbb41fbbd34ec28d4fb2a57d9a70c67ac3c19f6a5ca4d4a176b9e997a" -dependencies = [ - "alloy-primitives", - "hex", - "serde", - "serde_derive", - "serde_json", -] - -[[package]] -name = "ethereum_ssz" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dcddb2554d19cde19b099fadddde576929d7a4d0c1cd3512d1fd95cf174375c" -dependencies = [ - "alloy-primitives", - "ethereum_serde_utils", - "itertools 0.13.0", - "serde", - "serde_derive", - "smallvec", - "typenum", -] - -[[package]] -name = "ethereum_ssz_derive" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a657b6b3b7e153637dc6bdc6566ad9279d9ee11a15b12cfb24a2e04360637e9f" -dependencies = [ - "darling 0.20.11", - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "fastrand" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" - -[[package]] -name = "fastrlp" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "139834ddba373bbdd213dffe02c8d110508dcf1726c2be27e8d1f7d7e1856418" -dependencies = [ - "arrayvec", - "auto_impl", - "bytes", -] - -[[package]] -name = "fastrlp" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce8dba4714ef14b8274c371879b175aa55b16b30f269663f19d576f380018dc4" -dependencies = [ - "arrayvec", - "auto_impl", - "bytes", -] - -[[package]] -name = "ff" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" -dependencies = [ - "rand_core 0.6.4", - "subtle", -] - -[[package]] -name = "find-msvc-tools" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8591b0bcc8a98a64310a2fae1bb3e9b8564dd10e381e6e28010fde8e8e8568db" - -[[package]] -name = "fixed-hash" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" -dependencies = [ - "byteorder", - "rand 0.8.5", - "rustc-hex", - "static_assertions", -] - -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - -[[package]] -name = "foldhash" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" - -[[package]] -name = "form_urlencoded" -version = "1.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" -dependencies = [ - "percent-encoding", -] - -[[package]] -name = "funty" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" - -[[package]] -name = "futures" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" -dependencies = [ - "futures-channel", - "futures-core", - "futures-executor", - "futures-io", - "futures-sink", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-channel" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" -dependencies = [ - "futures-core", - "futures-sink", -] - -[[package]] -name = "futures-core" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" - -[[package]] -name = "futures-executor" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" -dependencies = [ - "futures-core", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-io" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" - -[[package]] -name = "futures-macro" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "futures-sink" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" - -[[package]] -name = "futures-task" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" - -[[package]] -name = "futures-util" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" -dependencies = [ - "futures-channel", - "futures-core", - "futures-io", - "futures-macro", - "futures-sink", - "futures-task", - "memchr", - "pin-project-lite", - "pin-utils", - "slab", -] - -[[package]] -name = "futures-utils-wasm" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42012b0f064e01aa58b545fe3727f90f7dd4020f4a3ea735b50344965f5a57e9" - -[[package]] -name = "generic-array" -version = "0.14.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bb6743198531e02858aeaea5398fcc883e71851fcbcb5a2f773e2fb6cb1edf2" -dependencies = [ - "typenum", - "version_check", - "zeroize", -] - -[[package]] -name = "getrandom" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" -dependencies = [ - "cfg-if", - "libc", - "wasi", -] - -[[package]] -name = "getrandom" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" -dependencies = [ - "cfg-if", - "libc", - "r-efi", - "wasip2", -] - -[[package]] -name = "glob" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" - -[[package]] -name = "gmp-mpfr-sys" -version = "1.6.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60f8970a75c006bb2f8ae79c6768a116dd215fa8346a87aed99bf9d82ca43394" -dependencies = [ - "libc", - "windows-sys 0.60.2", -] - -[[package]] -name = "group" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" -dependencies = [ - "ff", - "rand_core 0.6.4", - "subtle", -] - -[[package]] -name = "hashbrown" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" - -[[package]] -name = "hashbrown" -version = "0.14.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" - -[[package]] -name = "hashbrown" -version = "0.15.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" -dependencies = [ - "allocator-api2", -] - -[[package]] -name = "hashbrown" -version = "0.16.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" -dependencies = [ - "allocator-api2", - "equivalent", - "foldhash", - "serde", - "serde_core", -] - -[[package]] -name = "heck" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" - -[[package]] -name = "hermit-abi" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" - -[[package]] -name = "hex" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" - -[[package]] -name = "hex-conservative" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fda06d18ac606267c40c04e41b9947729bf8b9efe74bd4e82b61a5f26a510b9f" -dependencies = [ - "arrayvec", -] - -[[package]] -name = "hmac" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" -dependencies = [ - "digest 0.10.7", -] - -[[package]] -name = "http" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" -dependencies = [ - "bytes", - "itoa", -] - -[[package]] -name = "iana-time-zone" -version = "0.1.64" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb" -dependencies = [ - "android_system_properties", - "core-foundation-sys", - "iana-time-zone-haiku", - "js-sys", - "log", - "wasm-bindgen", - "windows-core", -] - -[[package]] -name = "iana-time-zone-haiku" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" -dependencies = [ - "cc", -] - -[[package]] -name = "icu_collections" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" -dependencies = [ - "displaydoc", - "potential_utf", - "yoke", - "zerofrom", - "zerovec", -] - -[[package]] -name = "icu_locale_core" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" -dependencies = [ - "displaydoc", - "litemap", - "tinystr", - "writeable", - "zerovec", -] - -[[package]] -name = "icu_normalizer" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" -dependencies = [ - "icu_collections", - "icu_normalizer_data", - "icu_properties", - "icu_provider", - "smallvec", - "zerovec", -] - -[[package]] -name = "icu_normalizer_data" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" - -[[package]] -name = "icu_properties" -version = "2.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec" -dependencies = [ - "icu_collections", - "icu_locale_core", - "icu_properties_data", - "icu_provider", - "zerotrie", - "zerovec", -] - -[[package]] -name = "icu_properties_data" -version = "2.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af" - -[[package]] -name = "icu_provider" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" -dependencies = [ - "displaydoc", - "icu_locale_core", - "writeable", - "yoke", - "zerofrom", - "zerotrie", - "zerovec", -] - -[[package]] -name = "ident_case" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" - -[[package]] -name = "idna" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" -dependencies = [ - "idna_adapter", - "smallvec", - "utf8_iter", -] - -[[package]] -name = "idna_adapter" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" -dependencies = [ - "icu_normalizer", - "icu_properties", -] - -[[package]] -name = "impl-codec" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" -dependencies = [ - "parity-scale-codec", -] - -[[package]] -name = "impl-trait-for-tuples" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "indexmap" -version = "1.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -dependencies = [ - "autocfg", - "hashbrown 0.12.3", - "serde", -] - -[[package]] -name = "indexmap" -version = "2.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" -dependencies = [ - "equivalent", - "hashbrown 0.16.1", - "serde", - "serde_core", -] - -[[package]] -name = "itertools" -version = "0.10.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" -dependencies = [ - "either", -] - -[[package]] -name = "itertools" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" -dependencies = [ - "either", -] - -[[package]] -name = "itertools" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" -dependencies = [ - "either", -] - -[[package]] -name = "itoa" -version = "1.0.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" - -[[package]] -name = "js-sys" -version = "0.3.85" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c942ebf8e95485ca0d52d97da7c5a2c387d0e7f0ba4c35e93bfcaee045955b3" -dependencies = [ - "once_cell", - "wasm-bindgen", -] - -[[package]] -name = "k256" -version = "0.13.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" -dependencies = [ - "cfg-if", - "ecdsa", - "elliptic-curve", - "once_cell", - "serdect", - "sha2", -] - -[[package]] -name = "keccak" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" -dependencies = [ - "cpufeatures", -] - -[[package]] -name = "keccak-asm" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "505d1856a39b200489082f90d897c3f07c455563880bc5952e38eabf731c83b6" -dependencies = [ - "digest 0.10.7", - "sha3-asm", -] - -[[package]] -name = "libc" -version = "0.2.180" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcc35a38544a891a5f7c865aca548a982ccb3b8650a5b06d0fd33a10283c56fc" - -[[package]] -name = "libm" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" - -[[package]] -name = "linux-raw-sys" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" - -[[package]] -name = "litemap" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" - -[[package]] -name = "lock_api" -version = "0.4.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" -dependencies = [ - "scopeguard", -] - -[[package]] -name = "log" -version = "0.4.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" - -[[package]] -name = "lru" -version = "0.16.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1dc47f592c06f33f8e3aea9591776ec7c9f9e4124778ff8a3c3b87159f7e593" -dependencies = [ - "hashbrown 0.16.1", -] - -[[package]] -name = "macro-string" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b27834086c65ec3f9387b096d66e99f221cf081c2b738042aa252bcd41204e3" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "memchr" -version = "2.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" - -[[package]] -name = "num" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23" -dependencies = [ - "num-bigint", - "num-complex", - "num-integer", - "num-iter", - "num-rational", - "num-traits", -] - -[[package]] -name = "num-bigint" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" -dependencies = [ - "num-integer", - "num-traits", -] - -[[package]] -name = "num-complex" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" -dependencies = [ - "num-traits", -] - -[[package]] -name = "num-conv" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" - -[[package]] -name = "num-integer" -version = "0.1.46" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" -dependencies = [ - "num-traits", -] - -[[package]] -name = "num-iter" -version = "0.1.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" -dependencies = [ - "autocfg", - "num-integer", - "num-traits", -] - -[[package]] -name = "num-rational" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" -dependencies = [ - "num-bigint", - "num-integer", - "num-traits", -] - -[[package]] -name = "num-traits" -version = "0.2.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" -dependencies = [ - "autocfg", - "libm", -] - -[[package]] -name = "num_cpus" -version = "1.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" -dependencies = [ - "hermit-abi", - "libc", -] - -[[package]] -name = "num_enum" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c" -dependencies = [ - "num_enum_derive", - "rustversion", -] - -[[package]] -name = "num_enum_derive" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" -dependencies = [ - "proc-macro-crate", - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "nybbles" -version = "0.4.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5676b5c379cf5b03da1df2b3061c4a4e2aa691086a56ac923e08c143f53f59" -dependencies = [ - "alloy-rlp", - "cfg-if", - "proptest", - "ruint", - "serde", - "smallvec", -] - -[[package]] -name = "once_cell" -version = "1.21.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" - -[[package]] -name = "op-alloy" -version = "0.23.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9b8fee21003dd4f076563de9b9d26f8c97840157ef78593cd7f262c5ca99848" -dependencies = [ - "op-alloy-consensus", - "op-alloy-network", - "op-alloy-provider", - "op-alloy-rpc-types", - "op-alloy-rpc-types-engine", -] - -[[package]] -name = "op-alloy-consensus" -version = "0.23.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "736381a95471d23e267263cfcee9e1d96d30b9754a94a2819148f83379de8a86" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-network", - "alloy-primitives", - "alloy-rlp", - "alloy-rpc-types-eth", - "alloy-serde", - "derive_more", - "serde", - "thiserror", -] - -[[package]] -name = "op-alloy-network" -version = "0.23.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4034183dca6bff6632e7c24c92e75ff5f0eabb58144edb4d8241814851334d47" -dependencies = [ - "alloy-consensus", - "alloy-network", - "alloy-primitives", - "alloy-provider", - "alloy-rpc-types-eth", - "alloy-signer", - "op-alloy-consensus", - "op-alloy-rpc-types", -] - -[[package]] -name = "op-alloy-provider" -version = "0.23.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6753d90efbaa8ea8bcb89c1737408ca85fa60d7adb875049d3f382c063666f86" -dependencies = [ - "alloy-network", - "alloy-primitives", - "alloy-provider", - "alloy-rpc-types-engine", - "alloy-transport", - "async-trait", - "op-alloy-rpc-types-engine", -] - -[[package]] -name = "op-alloy-rpc-types" -version = "0.23.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddd87c6b9e5b6eee8d6b76f41b04368dca0e9f38d83338e5b00e730c282098a4" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-network-primitives", - "alloy-primitives", - "alloy-rpc-types-eth", - "alloy-serde", - "derive_more", - "op-alloy-consensus", - "serde", - "serde_json", - "thiserror", -] - -[[package]] -name = "op-alloy-rpc-types-engine" -version = "0.23.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77727699310a18cdeed32da3928c709e2704043b6584ed416397d5da65694efc" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-primitives", - "alloy-rlp", - "alloy-rpc-types-engine", - "alloy-serde", - "derive_more", - "ethereum_ssz", - "ethereum_ssz_derive", - "op-alloy-consensus", - "serde", - "sha2", - "snap", - "thiserror", -] - -[[package]] -name = "op-revm" -version = "15.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79c92b75162c2ed1661849fa51683b11254a5b661798360a2c24be918edafd40" -dependencies = [ - "auto_impl", - "revm", - "serde", -] - -[[package]] -name = "p256" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" -dependencies = [ - "ecdsa", - "elliptic-curve", - "primeorder", - "sha2", -] - -[[package]] -name = "parity-scale-codec" -version = "3.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "799781ae679d79a948e13d4824a40970bfa500058d245760dd857301059810fa" -dependencies = [ - "arrayvec", - "bitvec", - "byte-slice-cast", - "const_format", - "impl-trait-for-tuples", - "parity-scale-codec-derive", - "rustversion", - "serde", -] - -[[package]] -name = "parity-scale-codec-derive" -version = "3.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34b4653168b563151153c9e4c08ebed57fb8262bebfa79711552fa983c623e7a" -dependencies = [ - "proc-macro-crate", - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "parking_lot" -version = "0.12.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" -dependencies = [ - "lock_api", - "parking_lot_core", -] - -[[package]] -name = "parking_lot_core" -version = "0.9.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" -dependencies = [ - "cfg-if", - "libc", - "redox_syscall", - "smallvec", - "windows-link", -] - -[[package]] -name = "paste" -version = "1.0.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" - -[[package]] -name = "percent-encoding" -version = "2.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" - -[[package]] -name = "pest" -version = "2.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c9eb05c21a464ea704b53158d358a31e6425db2f63a1a7312268b05fe2b75f7" -dependencies = [ - "memchr", - "ucd-trie", -] - -[[package]] -name = "phf" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1562dc717473dbaa4c1f85a36410e03c047b2e7df7f45ee938fbef64ae7fadf" -dependencies = [ - "phf_macros", - "phf_shared", - "serde", -] - -[[package]] -name = "phf_generator" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "135ace3a761e564ec88c03a77317a7c6b80bb7f7135ef2544dbe054243b89737" -dependencies = [ - "fastrand", - "phf_shared", -] - -[[package]] -name = "phf_macros" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "812f032b54b1e759ccd5f8b6677695d5268c588701effba24601f6932f8269ef" -dependencies = [ - "phf_generator", - "phf_shared", - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "phf_shared" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e57fef6bc5981e38c2ce2d63bfa546861309f875b8a75f092d1d54ae2d64f266" -dependencies = [ - "siphasher", -] - -[[package]] -name = "pin-project" -version = "1.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" -dependencies = [ - "pin-project-internal", -] - -[[package]] -name = "pin-project-internal" -version = "1.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "pin-project-lite" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" - -[[package]] -name = "pin-utils" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" - -[[package]] -name = "pkcs8" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" -dependencies = [ - "der", - "spki", -] - -[[package]] -name = "potential_utf" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" -dependencies = [ - "zerovec", -] - -[[package]] -name = "powerfmt" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" - -[[package]] -name = "ppv-lite86" -version = "0.2.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" -dependencies = [ - "zerocopy", -] - -[[package]] -name = "primeorder" -version = "0.13.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "353e1ca18966c16d9deb1c69278edbc5f194139612772bd9537af60ac231e1e6" -dependencies = [ - "elliptic-curve", -] - -[[package]] -name = "primitive-types" -version = "0.12.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" -dependencies = [ - "fixed-hash", - "impl-codec", - "uint", -] - -[[package]] -name = "proc-macro-crate" -version = "3.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" -dependencies = [ - "toml_edit", -] - -[[package]] -name = "proc-macro-error-attr2" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" -dependencies = [ - "proc-macro2", - "quote", -] - -[[package]] -name = "proc-macro-error2" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" -dependencies = [ - "proc-macro-error-attr2", - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "proc-macro2" -version = "1.0.105" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "535d180e0ecab6268a3e718bb9fd44db66bbbc256257165fc699dadf70d16fe7" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "proptest" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bee689443a2bd0a16ab0348b52ee43e3b2d1b1f931c8aa5c9f8de4c86fbe8c40" -dependencies = [ - "bit-set", - "bit-vec", - "bitflags", - "num-traits", - "rand 0.9.2", - "rand_chacha 0.9.0", - "rand_xorshift", - "regex-syntax", - "rusty-fork", - "tempfile", - "unarray", -] - -[[package]] -name = "quick-error" -version = "1.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" - -[[package]] -name = "quote" -version = "1.0.43" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc74d9a594b72ae6656596548f56f667211f8a97b3d4c3d467150794690dc40a" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "r-efi" -version = "5.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" - -[[package]] -name = "radium" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" - -[[package]] -name = "rand" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" -dependencies = [ - "libc", - "rand_chacha 0.3.1", - "rand_core 0.6.4", - "serde", -] - -[[package]] -name = "rand" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" -dependencies = [ - "rand_chacha 0.9.0", - "rand_core 0.9.5", - "serde", -] - -[[package]] -name = "rand_chacha" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" -dependencies = [ - "ppv-lite86", - "rand_core 0.6.4", -] - -[[package]] -name = "rand_chacha" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" -dependencies = [ - "ppv-lite86", - "rand_core 0.9.5", -] - -[[package]] -name = "rand_core" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" -dependencies = [ - "getrandom 0.2.17", -] - -[[package]] -name = "rand_core" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" -dependencies = [ - "getrandom 0.3.4", - "serde", -] - -[[package]] -name = "rand_xorshift" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "513962919efc330f829edb2535844d1b912b0fbe2ca165d613e4e8788bb05a5a" -dependencies = [ - "rand_core 0.9.5", -] - -[[package]] -name = "rapidhash" -version = "4.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d8b5b858a440a0bc02625b62dd95131b9201aa9f69f411195dd4a7cfb1de3d7" -dependencies = [ - "rustversion", -] - -[[package]] -name = "redox_syscall" -version = "0.5.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" -dependencies = [ - "bitflags", -] - -[[package]] -name = "ref-cast" -version = "1.0.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d" -dependencies = [ - "ref-cast-impl", -] - -[[package]] -name = "ref-cast-impl" -version = "1.0.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "regex-syntax" -version = "0.8.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" - -[[package]] -name = "revm" -version = "34.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2aabdebaa535b3575231a88d72b642897ae8106cf6b0d12eafc6bfdf50abfc7" -dependencies = [ - "revm-bytecode", - "revm-context", - "revm-context-interface", - "revm-database", - "revm-database-interface", - "revm-handler", - "revm-inspector", - "revm-interpreter", - "revm-precompile", - "revm-primitives", - "revm-state", -] - -[[package]] -name = "revm-bytecode" -version = "8.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74d1e5c1eaa44d39d537f668bc5c3409dc01e5c8be954da6c83370bbdf006457" -dependencies = [ - "bitvec", - "phf", - "revm-primitives", - "serde", -] - -[[package]] -name = "revm-context" -version = "13.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "892ff3e6a566cf8d72ffb627fdced3becebbd9ba64089c25975b9b028af326a5" -dependencies = [ - "bitvec", - "cfg-if", - "derive-where", - "revm-bytecode", - "revm-context-interface", - "revm-database-interface", - "revm-primitives", - "revm-state", - "serde", -] - -[[package]] -name = "revm-context-interface" -version = "14.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57f61cc6d23678c4840af895b19f8acfbbd546142ec8028b6526c53cc1c16c98" -dependencies = [ - "alloy-eip2930", - "alloy-eip7702", - "auto_impl", - "either", - "revm-database-interface", - "revm-primitives", - "revm-state", - "serde", -] - -[[package]] -name = "revm-database" -version = "10.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "529528d0b05fe646be86223032c3e77aa8b05caa2a35447d538c55965956a511" -dependencies = [ - "alloy-eips", - "revm-bytecode", - "revm-database-interface", - "revm-primitives", - "revm-state", - "serde", -] - -[[package]] -name = "revm-database-interface" -version = "9.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7bf93ac5b91347c057610c0d96e923db8c62807e03f036762d03e981feddc1d" -dependencies = [ - "auto_impl", - "either", - "revm-primitives", - "revm-state", - "serde", - "thiserror", -] - -[[package]] -name = "revm-handler" -version = "15.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cd0e43e815a85eded249df886c4badec869195e70cdd808a13cfca2794622d2" -dependencies = [ - "auto_impl", - "derive-where", - "revm-bytecode", - "revm-context", - "revm-context-interface", - "revm-database-interface", - "revm-interpreter", - "revm-precompile", - "revm-primitives", - "revm-state", - "serde", -] - -[[package]] -name = "revm-inspector" -version = "15.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f3ccad59db91ef93696536a0dbaf2f6f17cfe20d4d8843ae118edb7e97947ef" -dependencies = [ - "auto_impl", - "either", - "revm-context", - "revm-database-interface", - "revm-handler", - "revm-interpreter", - "revm-primitives", - "revm-state", - "serde", - "serde_json", -] - -[[package]] -name = "revm-interpreter" -version = "32.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11406408597bc249392d39295831c4b641b3a6f5c471a7c41104a7a1e3564c07" -dependencies = [ - "revm-bytecode", - "revm-context-interface", - "revm-primitives", - "revm-state", - "serde", -] - -[[package]] -name = "revm-precompile" -version = "32.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50c1285c848d240678bf69cb0f6179ff5a4aee6fc8e921d89708087197a0aff3" -dependencies = [ - "ark-bls12-381", - "ark-bn254", - "ark-ec", - "ark-ff 0.5.0", - "ark-serialize 0.5.0", - "arrayref", - "aurora-engine-modexp", - "c-kzg", - "cfg-if", - "gmp-mpfr-sys", - "k256", - "p256", - "revm-primitives", - "ripemd", - "secp256k1 0.31.1", - "sha2", -] - -[[package]] -name = "revm-primitives" -version = "22.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba580c56a8ec824a64f8a1683577876c2e1dbe5247044199e9b881421ad5dcf9" -dependencies = [ - "alloy-primitives", - "num_enum", - "once_cell", - "serde", -] - -[[package]] -name = "revm-state" -version = "9.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "311720d4f0f239b041375e7ddafdbd20032a33b7bae718562ea188e188ed9fd3" -dependencies = [ - "alloy-eip7928", - "bitflags", - "revm-bytecode", - "revm-primitives", - "serde", -] - -[[package]] -name = "rfc6979" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" -dependencies = [ - "hmac", - "subtle", -] - -[[package]] -name = "ripemd" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f" -dependencies = [ - "digest 0.10.7", -] - -[[package]] -name = "rlp" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" -dependencies = [ - "bytes", - "rustc-hex", -] - -[[package]] -name = "ruint" -version = "1.17.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c141e807189ad38a07276942c6623032d3753c8859c146104ac2e4d68865945a" -dependencies = [ - "alloy-rlp", - "ark-ff 0.3.0", - "ark-ff 0.4.2", - "ark-ff 0.5.0", - "bytes", - "fastrlp 0.3.1", - "fastrlp 0.4.0", - "num-bigint", - "num-integer", - "num-traits", - "parity-scale-codec", - "primitive-types", - "proptest", - "rand 0.8.5", - "rand 0.9.2", - "rlp", - "ruint-macro", - "serde_core", - "valuable", - "zeroize", -] - -[[package]] -name = "ruint-macro" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48fd7bd8a6377e15ad9d42a8ec25371b94ddc67abe7c8b9127bec79bebaaae18" - -[[package]] -name = "rustc-hash" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" - -[[package]] -name = "rustc-hex" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" - -[[package]] -name = "rustc_version" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" -dependencies = [ - "semver 0.11.0", -] - -[[package]] -name = "rustc_version" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" -dependencies = [ - "semver 1.0.27", -] - -[[package]] -name = "rustix" -version = "1.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "146c9e247ccc180c1f61615433868c99f3de3ae256a30a43b49f67c2d9171f34" -dependencies = [ - "bitflags", - "errno", - "libc", - "linux-raw-sys", - "windows-sys 0.61.2", -] - -[[package]] -name = "rustversion" -version = "1.0.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" - -[[package]] -name = "rusty-fork" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc6bf79ff24e648f6da1f8d1f011e9cac26491b619e6b9280f2b47f1774e6ee2" -dependencies = [ - "fnv", - "quick-error", - "tempfile", - "wait-timeout", -] - -[[package]] -name = "schemars" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f" -dependencies = [ - "dyn-clone", - "ref-cast", - "serde", - "serde_json", -] - -[[package]] -name = "schemars" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54e910108742c57a770f492731f99be216a52fadd361b06c8fb59d74ccc267d2" -dependencies = [ - "dyn-clone", - "ref-cast", - "serde", - "serde_json", -] - -[[package]] -name = "scopeguard" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" - -[[package]] -name = "sec1" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" -dependencies = [ - "base16ct", - "der", - "generic-array", - "pkcs8", - "serdect", - "subtle", - "zeroize", -] - -[[package]] -name = "secp256k1" -version = "0.30.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b50c5943d326858130af85e049f2661ba3c78b26589b8ab98e65e80ae44a1252" -dependencies = [ - "bitcoin_hashes", - "rand 0.8.5", - "secp256k1-sys 0.10.1", - "serde", -] - -[[package]] -name = "secp256k1" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c3c81b43dc2d8877c216a3fccf76677ee1ebccd429566d3e67447290d0c42b2" -dependencies = [ - "bitcoin_hashes", - "rand 0.9.2", - "secp256k1-sys 0.11.0", -] - -[[package]] -name = "secp256k1-sys" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4387882333d3aa8cb20530a17c69a3752e97837832f34f6dccc760e715001d9" -dependencies = [ - "cc", -] - -[[package]] -name = "secp256k1-sys" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcb913707158fadaf0d8702c2db0e857de66eb003ccfdda5924b5f5ac98efb38" -dependencies = [ - "cc", -] - -[[package]] -name = "semver" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" -dependencies = [ - "semver-parser", -] - -[[package]] -name = "semver" -version = "1.0.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" - -[[package]] -name = "semver-parser" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9900206b54a3527fdc7b8a938bffd94a568bac4f4aa8113b209df75a09c0dec2" -dependencies = [ - "pest", -] - -[[package]] -name = "serde" -version = "1.0.228" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" -dependencies = [ - "serde_core", - "serde_derive", -] - -[[package]] -name = "serde_core" -version = "1.0.228" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde_derive" -version = "1.0.228" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "serde_json" -version = "1.0.149" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" -dependencies = [ - "indexmap 2.13.0", - "itoa", - "memchr", - "serde", - "serde_core", - "zmij", -] - -[[package]] -name = "serde_with" -version = "3.16.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fa237f2807440d238e0364a218270b98f767a00d3dada77b1c53ae88940e2e7" -dependencies = [ - "base64", - "chrono", - "hex", - "indexmap 1.9.3", - "indexmap 2.13.0", - "schemars 0.9.0", - "schemars 1.2.0", - "serde_core", - "serde_json", - "serde_with_macros", - "time", -] - -[[package]] -name = "serde_with_macros" -version = "3.16.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52a8e3ca0ca629121f70ab50f95249e5a6f925cc0f6ffe8256c45b728875706c" -dependencies = [ - "darling 0.21.3", - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "serdect" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a84f14a19e9a014bb9f4512488d9829a68e04ecabffb0f9904cd1ace94598177" -dependencies = [ - "base16ct", - "serde", -] - -[[package]] -name = "sha2" -version = "0.10.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest 0.10.7", -] - -[[package]] -name = "sha3" -version = "0.10.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" -dependencies = [ - "digest 0.10.7", - "keccak", -] - -[[package]] -name = "sha3-asm" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c28efc5e327c837aa837c59eae585fc250715ef939ac32881bcc11677cd02d46" -dependencies = [ - "cc", - "cfg-if", -] - -[[package]] -name = "shlex" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" - -[[package]] -name = "signature" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" -dependencies = [ - "digest 0.10.7", - "rand_core 0.6.4", -] - -[[package]] -name = "siphasher" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" - -[[package]] -name = "slab" -version = "0.4.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" - -[[package]] -name = "smallvec" -version = "1.15.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" -dependencies = [ - "serde", -] - -[[package]] -name = "snap" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b6b67fb9a61334225b5b790716f609cd58395f895b3fe8b328786812a40bc3b" - -[[package]] -name = "spki" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" -dependencies = [ - "base64ct", - "der", -] - -[[package]] -name = "stable_deref_trait" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" - -[[package]] -name = "static_assertions" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" - -[[package]] -name = "strsim" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" - -[[package]] -name = "strum" -version = "0.27.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf" -dependencies = [ - "strum_macros", -] - -[[package]] -name = "strum_macros" -version = "0.27.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7" -dependencies = [ - "heck", - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "subtle" -version = "2.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" - -[[package]] -name = "syn" -version = "1.0.109" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "syn" -version = "2.0.114" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4d107df263a3013ef9b1879b0df87d706ff80f65a86ea879bd9c31f9b307c2a" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "syn-solidity" -version = "1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f92d01b5de07eaf324f7fca61cc6bd3d82bbc1de5b6c963e6fe79e86f36580d" -dependencies = [ - "paste", - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "sync_wrapper" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" - -[[package]] -name = "synstructure" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "tap" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" - -[[package]] -name = "tempfile" -version = "3.24.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "655da9c7eb6305c55742045d5a8d2037996d61d8de95806335c7c86ce0f82e9c" -dependencies = [ - "fastrand", - "getrandom 0.3.4", - "once_cell", - "rustix", - "windows-sys 0.61.2", -] - -[[package]] -name = "test-case" -version = "3.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb2550dd13afcd286853192af8601920d959b14c401fcece38071d53bf0768a8" -dependencies = [ - "test-case-macros", -] - -[[package]] -name = "test-case-core" -version = "3.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adcb7fd841cd518e279be3d5a3eb0636409487998a4aff22f3de87b81e88384f" -dependencies = [ - "cfg-if", - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "test-case-macros" -version = "3.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c89e72a01ed4c579669add59014b9a524d609c0c88c6a585ce37485879f6ffb" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", - "test-case-core", -] - -[[package]] -name = "thiserror" -version = "2.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" -dependencies = [ - "thiserror-impl", -] - -[[package]] -name = "thiserror-impl" -version = "2.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "threadpool" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa" -dependencies = [ - "num_cpus", -] - -[[package]] -name = "time" -version = "0.3.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9e442fc33d7fdb45aa9bfeb312c095964abdf596f7567261062b2a7107aaabd" -dependencies = [ - "deranged", - "itoa", - "num-conv", - "powerfmt", - "serde_core", - "time-core", - "time-macros", -] - -[[package]] -name = "time-core" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b36ee98fd31ec7426d599183e8fe26932a8dc1fb76ddb6214d05493377d34ca" - -[[package]] -name = "time-macros" -version = "0.2.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71e552d1249bf61ac2a52db88179fd0673def1e1ad8243a00d9ec9ed71fee3dd" -dependencies = [ - "num-conv", - "time-core", -] - -[[package]] -name = "tiny-keccak" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" -dependencies = [ - "crunchy", -] - -[[package]] -name = "tinystr" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" -dependencies = [ - "displaydoc", - "zerovec", -] - -[[package]] -name = "tokio" -version = "1.49.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72a2903cd7736441aac9df9d7688bd0ce48edccaadf181c3b90be801e81d3d86" -dependencies = [ - "pin-project-lite", - "tokio-macros", -] - -[[package]] -name = "tokio-macros" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "tokio-stream" -version = "0.1.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32da49809aab5c3bc678af03902d4ccddea2a87d028d86392a4b1560c6906c70" -dependencies = [ - "futures-core", - "pin-project-lite", - "tokio", - "tokio-util", -] - -[[package]] -name = "tokio-util" -version = "0.7.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "toml_datetime" -version = "0.7.5+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" -dependencies = [ - "serde_core", -] - -[[package]] -name = "toml_edit" -version = "0.23.10+spec-1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84c8b9f757e028cee9fa244aea147aab2a9ec09d5325a9b01e0a49730c2b5269" -dependencies = [ - "indexmap 2.13.0", - "toml_datetime", - "toml_parser", - "winnow", -] - -[[package]] -name = "toml_parser" -version = "1.0.6+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3198b4b0a8e11f09dd03e133c0280504d0801269e9afa46362ffde1cbeebf44" -dependencies = [ - "winnow", -] - -[[package]] -name = "tower" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" -dependencies = [ - "futures-core", - "futures-util", - "pin-project-lite", - "sync_wrapper", - "tower-layer", - "tower-service", -] - -[[package]] -name = "tower-layer" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" - -[[package]] -name = "tower-service" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" - -[[package]] -name = "tracing" -version = "0.1.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" -dependencies = [ - "pin-project-lite", - "tracing-attributes", - "tracing-core", -] - -[[package]] -name = "tracing-attributes" -version = "0.1.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "tracing-core" -version = "0.1.36" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" -dependencies = [ - "once_cell", - "valuable", -] - -[[package]] -name = "tracing-subscriber" -version = "0.2.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e0d2eaa99c3c2e41547cfa109e910a68ea03823cccad4a0525dcbc9b01e8c71" -dependencies = [ - "tracing-core", -] - -[[package]] -name = "typenum" -version = "1.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" - -[[package]] -name = "ucd-trie" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" - -[[package]] -name = "uint" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52" -dependencies = [ - "byteorder", - "crunchy", - "hex", - "static_assertions", -] - -[[package]] -name = "unarray" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" - -[[package]] -name = "unicode-ident" -version = "1.0.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" - -[[package]] -name = "unicode-segmentation" -version = "1.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" - -[[package]] -name = "unicode-xid" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" - -[[package]] -name = "url" -version = "2.5.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" -dependencies = [ - "form_urlencoded", - "idna", - "percent-encoding", - "serde", -] - -[[package]] -name = "utf8_iter" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" - -[[package]] -name = "valuable" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" - -[[package]] -name = "version_check" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" - -[[package]] -name = "wait-timeout" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09ac3b126d3914f9849036f826e054cbabdc8519970b8998ddaf3b5bd3c65f11" -dependencies = [ - "libc", -] - -[[package]] -name = "wasi" -version = "0.11.1+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" - -[[package]] -name = "wasip2" -version = "1.0.2+wasi-0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5" -dependencies = [ - "wit-bindgen", -] - -[[package]] -name = "wasm-bindgen" -version = "0.2.108" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64024a30ec1e37399cf85a7ffefebdb72205ca1c972291c51512360d90bd8566" -dependencies = [ - "cfg-if", - "once_cell", - "rustversion", - "wasm-bindgen-macro", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.108" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "008b239d9c740232e71bd39e8ef6429d27097518b6b30bdf9086833bd5b6d608" -dependencies = [ - "quote", - "wasm-bindgen-macro-support", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.108" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5256bae2d58f54820e6490f9839c49780dff84c65aeab9e772f15d5f0e913a55" -dependencies = [ - "bumpalo", - "proc-macro2", - "quote", - "syn 2.0.114", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.108" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f01b580c9ac74c8d8f0c0e4afb04eeef2acf145458e52c03845ee9cd23e3d12" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "wasmtimer" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c598d6b99ea013e35844697fc4670d08339d5cda15588f193c6beedd12f644b" -dependencies = [ - "futures", - "js-sys", - "parking_lot", - "pin-utils", - "slab", - "wasm-bindgen", -] - -[[package]] -name = "windows-core" -version = "0.62.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" -dependencies = [ - "windows-implement", - "windows-interface", - "windows-link", - "windows-result", - "windows-strings", -] - -[[package]] -name = "windows-implement" -version = "0.60.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "windows-interface" -version = "0.59.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "windows-link" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" - -[[package]] -name = "windows-result" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" -dependencies = [ - "windows-link", -] - -[[package]] -name = "windows-strings" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" -dependencies = [ - "windows-link", -] - -[[package]] -name = "windows-sys" -version = "0.60.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" -dependencies = [ - "windows-targets", -] - -[[package]] -name = "windows-sys" -version = "0.61.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" -dependencies = [ - "windows-link", -] - -[[package]] -name = "windows-targets" -version = "0.53.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" -dependencies = [ - "windows-link", - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_gnullvm", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", -] - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" - -[[package]] -name = "windows_i686_gnu" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" - -[[package]] -name = "windows_i686_gnullvm" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" - -[[package]] -name = "windows_i686_msvc" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" - -[[package]] -name = "winnow" -version = "0.7.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" -dependencies = [ - "memchr", -] - -[[package]] -name = "wit-bindgen" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" - -[[package]] -name = "writeable" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" - -[[package]] -name = "wyz" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" -dependencies = [ - "tap", -] - -[[package]] -name = "yoke" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" -dependencies = [ - "stable_deref_trait", - "yoke-derive", - "zerofrom", -] - -[[package]] -name = "yoke-derive" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", - "synstructure", -] - -[[package]] -name = "zerocopy" -version = "0.8.33" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "668f5168d10b9ee831de31933dc111a459c97ec93225beb307aed970d1372dfd" -dependencies = [ - "zerocopy-derive", -] - -[[package]] -name = "zerocopy-derive" -version = "0.8.33" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c7962b26b0a8685668b671ee4b54d007a67d4eaf05fda79ac0ecf41e32270f1" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "zerofrom" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" -dependencies = [ - "zerofrom-derive", -] - -[[package]] -name = "zerofrom-derive" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", - "synstructure", -] - -[[package]] -name = "zeroize" -version = "1.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" -dependencies = [ - "zeroize_derive", -] - -[[package]] -name = "zeroize_derive" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85a5b4158499876c763cb03bc4e49185d3cccbabb15b33c627f7884f43db852e" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "zerotrie" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" -dependencies = [ - "displaydoc", - "yoke", - "zerofrom", -] - -[[package]] -name = "zerovec" -version = "0.11.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" -dependencies = [ - "yoke", - "zerofrom", - "zerovec-derive", -] - -[[package]] -name = "zerovec-derive" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "zmij" -version = "1.0.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfcd145825aace48cff44a8844de64bf75feec3080e0aa5cdbde72961ae51a65" diff --git a/alloy-op-evm/Cargo.toml b/alloy-op-evm/Cargo.toml deleted file mode 100644 index 2f97b2a96edaf..0000000000000 --- a/alloy-op-evm/Cargo.toml +++ /dev/null @@ -1,65 +0,0 @@ -[package] -name = "alloy-op-evm" -description = "OP EVM implementation" - -version = "0.27.0" -edition = "2021" -rust-version = "1.88" -authors = ["Alloy Contributors", "OpLabsPBC"] -license = "MIT OR Apache-2.0" -homepage = "https://github.com/ethereum-optimism/optimism" -repository = "https://github.com/ethereum-optimism/optimism" - -[lints.rustdoc] -all = "warn" - -[lints.rust] -missing-debug-implementations = "warn" -missing-docs = "warn" -unreachable-pub = "warn" -unused-must-use = "deny" -rust-2018-idioms = "deny" -unnameable-types = "warn" - -[lints.clippy] -all = { level = "warn", priority = -1 } -missing-const-for-fn = "warn" -use-self = "warn" -option-if-let-else = "allow" -redundant-clone = "warn" - -[dependencies] -alloy-evm = { version = "0.27.0", default-features = false, features = ["op"] } - -alloy-eips = { version = "1.5.2", default-features = false } -alloy-consensus = { version = "1.5.2", default-features = false } -alloy-primitives = { version = "1.0.0", default-features = false } - -alloy-op-hardforks = { version = "0.4.7" } -op-alloy = { version = "0.23", default-features = false, features = ["consensus"] } - -revm = { version = "34.0.0", default-features = false } -op-revm = { version = "15.0.0", default-features = false } - -thiserror = { version = "2.0.0", default-features = false } - -auto_impl = "1" - -[dev-dependencies] -alloy-hardforks = { version = "0.4.7" } -test-case = "3" - -[features] -default = ["std"] -std = [ - "alloy-primitives/std", - "revm/std", - "alloy-evm/std", - "op-revm/std", - "alloy-consensus/std", - "alloy-eips/std", - "op-alloy/std", - "thiserror/std" -] -gmp = ["alloy-evm/gmp"] -asm-keccak = ["alloy-evm/asm-keccak", "alloy-primitives/asm-keccak", "revm/asm-keccak"] diff --git a/alloy-op-evm/deny.toml b/alloy-op-evm/deny.toml deleted file mode 100644 index e32a2135e0047..0000000000000 --- a/alloy-op-evm/deny.toml +++ /dev/null @@ -1,54 +0,0 @@ -[advisories] -version = 2 -yanked = "warn" -ignore = [ - # https://rustsec.org/advisories/RUSTSEC-2024-0437, trezor-client dependency, no fix available yet - "RUSTSEC-2024-0437", - # https://rustsec.org/advisories/RUSTSEC-2024-0436 - "RUSTSEC-2024-0436", -] - -[bans] -multiple-versions = "warn" -wildcards = "deny" -highlight = "all" - -[licenses] -version = 2 -confidence-threshold = 0.8 - -allow = [ - "MIT", - "Apache-2.0", - "Apache-2.0 WITH LLVM-exception", - "BSD-2-Clause", - "BSD-3-Clause", - "Unicode-3.0", - "Unlicense", - "Zlib", - "CC0-1.0", -] - -exceptions = [ - # gmp feature (optional, LGPL-licensed) - { allow = ["LGPL-3.0-or-later"], crate = "rug" }, - { allow = ["LGPL-3.0-or-later"], crate = "gmp-mpfr-sys" }, -] - -[[licenses.clarify]] -name = "ring" -expression = "LicenseRef-ring" -license-files = [{ path = "LICENSE", hash = 0xbd0eed23 }] - -[[licenses.clarify]] -name = "webpki" -expression = "LicenseRef-webpki" -license-files = [{ path = "LICENSE", hash = 0x001c7e6c }] - -[sources] -unknown-registry = "deny" -unknown-git = "deny" -allow-git = [ - "https://github.com/bluealloy/revm", - #"https://github.com/alloy-rs/hardforks", -] diff --git a/alloy-op-evm/src/block/canyon.rs b/alloy-op-evm/src/block/canyon.rs deleted file mode 100644 index 7e2adbbcda2d3..0000000000000 --- a/alloy-op-evm/src/block/canyon.rs +++ /dev/null @@ -1,50 +0,0 @@ -use alloy_evm::Database; -use alloy_op_hardforks::OpHardforks; -use alloy_primitives::{address, b256, hex, Address, Bytes, B256}; -use revm::{primitives::HashMap, state::Bytecode, DatabaseCommit}; - -/// The address of the create2 deployer -const CREATE_2_DEPLOYER_ADDR: Address = address!("0x13b0D85CcB8bf860b6b79AF3029fCA081AE9beF2"); - -/// The codehash of the create2 deployer contract. -const CREATE_2_DEPLOYER_CODEHASH: B256 = - b256!("0xb0550b5b431e30d38000efb7107aaa0ade03d48a7198a140edda9d27134468b2"); - -/// The raw bytecode of the create2 deployer contract. -const CREATE_2_DEPLOYER_BYTECODE: [u8; 1584] = hex!("6080604052600436106100435760003560e01c8063076c37b21461004f578063481286e61461007157806356299481146100ba57806366cfa057146100da57600080fd5b3661004a57005b600080fd5b34801561005b57600080fd5b5061006f61006a366004610327565b6100fa565b005b34801561007d57600080fd5b5061009161008c366004610327565b61014a565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100c657600080fd5b506100916100d5366004610349565b61015d565b3480156100e657600080fd5b5061006f6100f53660046103ca565b610172565b61014582826040518060200161010f9061031a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f90910116604052610183565b505050565b600061015683836102e7565b9392505050565b600061016a8484846102f0565b949350505050565b61017d838383610183565b50505050565b6000834710156101f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e636500000060448201526064015b60405180910390fd5b815160000361025f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f60448201526064016101eb565b8282516020840186f5905073ffffffffffffffffffffffffffffffffffffffff8116610156576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f790000000000000060448201526064016101eb565b60006101568383305b6000604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b61014e806104ad83390190565b6000806040838503121561033a57600080fd5b50508035926020909101359150565b60008060006060848603121561035e57600080fd5b8335925060208401359150604084013573ffffffffffffffffffffffffffffffffffffffff8116811461039057600080fd5b809150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806000606084860312156103df57600080fd5b8335925060208401359150604084013567ffffffffffffffff8082111561040557600080fd5b818601915086601f83011261041957600080fd5b81358181111561042b5761042b61039b565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156104715761047161039b565b8160405282815289602084870101111561048a57600080fd5b826020860160208301376000602084830101528095505050505050925092509256fe608060405234801561001057600080fd5b5061012e806100206000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063249cb3fa14602d575b600080fd5b603c603836600460b1565b604e565b60405190815260200160405180910390f35b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16608857600060aa565b7fa2ef4600d742022d532d4747cb3547474667d6f13804902513b2ec01c848f4b45b9392505050565b6000806040838503121560c357600080fd5b82359150602083013573ffffffffffffffffffffffffffffffffffffffff8116811460ed57600080fd5b80915050925092905056fea26469706673582212205ffd4e6cede7d06a5daf93d48d0541fc68189eeb16608c1999a82063b666eb1164736f6c63430008130033a2646970667358221220fdc4a0fe96e3b21c108ca155438d37c9143fb01278a3c1d274948bad89c564ba64736f6c63430008130033"); - -/// The Canyon hardfork issues an irregular state transition that force-deploys the create2 -/// deployer contract. This is done by directly setting the code of the create2 deployer account -/// prior to executing any transactions on the timestamp activation of the fork. -pub(crate) fn ensure_create2_deployer( - chain_spec: impl OpHardforks, - timestamp: u64, - db: &mut DB, -) -> Result<(), DB::Error> -where - DB: Database + DatabaseCommit, -{ - // If the canyon hardfork is active at the current timestamp, and it was not active at the - // previous block timestamp (heuristically, block time is not perfectly constant at 2s), and the - // chain is an optimism chain, then we need to force-deploy the create2 deployer contract. - if chain_spec.is_canyon_active_at_timestamp(timestamp) - && !chain_spec.is_canyon_active_at_timestamp(timestamp.saturating_sub(2)) - { - // Load the create2 deployer account from the cache. - let mut acc_info = db.basic(CREATE_2_DEPLOYER_ADDR)?.unwrap_or_default(); - - // Update the account info with the create2 deployer codehash and bytecode. - acc_info.code_hash = CREATE_2_DEPLOYER_CODEHASH; - acc_info.code = Some(Bytecode::new_raw(Bytes::from_static(&CREATE_2_DEPLOYER_BYTECODE))); - - // Convert the cache account back into a revm account and mark it as touched. - let mut revm_acc: revm::state::Account = acc_info.into(); - revm_acc.mark_touch(); - - // Commit the create2 deployer account to the database. - db.commit(HashMap::from_iter([(CREATE_2_DEPLOYER_ADDR, revm_acc)])); - return Ok(()); - } - - Ok(()) -} diff --git a/alloy-op-hardforks/Cargo.lock b/alloy-op-hardforks/Cargo.lock deleted file mode 100644 index ca8039a64e6ef..0000000000000 --- a/alloy-op-hardforks/Cargo.lock +++ /dev/null @@ -1,632 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 4 - -[[package]] -name = "alloy-chains" -version = "0.2.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3842d8c52fcd3378039f4703dba392dca8b546b1c8ed6183048f8dab95b2be78" -dependencies = [ - "alloy-primitives", - "num_enum", - "strum", -] - -[[package]] -name = "alloy-eip2124" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "741bdd7499908b3aa0b159bba11e71c8cddd009a2c2eb7a06e825f1ec87900a5" -dependencies = [ - "alloy-primitives", - "alloy-rlp", - "crc", - "thiserror", -] - -[[package]] -name = "alloy-hardforks" -version = "0.4.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83ba208044232d14d4adbfa77e57d6329f51bc1acc21f5667bb7db72d88a0831" -dependencies = [ - "alloy-chains", - "alloy-eip2124", - "alloy-primitives", - "auto_impl", - "dyn-clone", - "serde", -] - -[[package]] -name = "alloy-op-hardforks" -version = "0.4.7" -dependencies = [ - "alloy-chains", - "alloy-hardforks", - "alloy-primitives", - "auto_impl", - "serde", -] - -[[package]] -name = "alloy-primitives" -version = "1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6a0fb18dd5fb43ec5f0f6a20be1ce0287c79825827de5744afaa6c957737c33" -dependencies = [ - "alloy-rlp", - "bytes", - "cfg-if", - "const-hex", - "derive_more", - "hashbrown", - "indexmap", - "itoa", - "paste", - "rand 0.9.2", - "ruint", - "rustc-hash", - "serde", - "tiny-keccak", -] - -[[package]] -name = "alloy-rlp" -version = "0.3.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f70d83b765fdc080dbcd4f4db70d8d23fe4761f2f02ebfa9146b833900634b4" -dependencies = [ - "alloy-rlp-derive", - "bytes", -] - -[[package]] -name = "alloy-rlp-derive" -version = "0.3.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64b728d511962dda67c1bc7ea7c03736ec275ed2cf4c35d9585298ac9ccf3b73" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "auto_impl" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffdcb70bdbc4d478427380519163274ac86e52916e10f0a8889adf0f96d3fee7" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "autocfg" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" - -[[package]] -name = "bitflags" -version = "2.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" - -[[package]] -name = "bytes" -version = "1.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3" -dependencies = [ - "serde", -] - -[[package]] -name = "cfg-if" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" - -[[package]] -name = "const-hex" -version = "1.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bb320cac8a0750d7f25280aa97b09c26edfe161164238ecbbb31092b079e735" -dependencies = [ - "cfg-if", - "cpufeatures", - "proptest", - "serde_core", -] - -[[package]] -name = "convert_case" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "633458d4ef8c78b72454de2d54fd6ab2e60f9e02be22f3c6104cdc8a4e0fceb9" -dependencies = [ - "unicode-segmentation", -] - -[[package]] -name = "cpufeatures" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" -dependencies = [ - "libc", -] - -[[package]] -name = "crc" -version = "3.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5eb8a2a1cd12ab0d987a5d5e825195d372001a4094a0376319d5a0ad71c1ba0d" -dependencies = [ - "crc-catalog", -] - -[[package]] -name = "crc-catalog" -version = "2.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" - -[[package]] -name = "crunchy" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" - -[[package]] -name = "derive_more" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d751e9e49156b02b44f9c1815bcb94b984cdcc4396ecc32521c739452808b134" -dependencies = [ - "derive_more-impl", -] - -[[package]] -name = "derive_more-impl" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "799a97264921d8623a957f6c3b9011f3b5492f557bbb7a5a19b7fa6d06ba8dcb" -dependencies = [ - "convert_case", - "proc-macro2", - "quote", - "rustc_version", - "syn", - "unicode-xid", -] - -[[package]] -name = "dyn-clone" -version = "1.0.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" - -[[package]] -name = "equivalent" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" - -[[package]] -name = "foldhash" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" - -[[package]] -name = "getrandom" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" -dependencies = [ - "cfg-if", - "libc", - "r-efi", - "wasip2", -] - -[[package]] -name = "hashbrown" -version = "0.16.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" -dependencies = [ - "foldhash", - "serde", - "serde_core", -] - -[[package]] -name = "heck" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" - -[[package]] -name = "indexmap" -version = "2.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" -dependencies = [ - "equivalent", - "hashbrown", - "serde", - "serde_core", -] - -[[package]] -name = "itoa" -version = "1.0.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" - -[[package]] -name = "libc" -version = "0.2.180" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcc35a38544a891a5f7c865aca548a982ccb3b8650a5b06d0fd33a10283c56fc" - -[[package]] -name = "libm" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" - -[[package]] -name = "num-traits" -version = "0.2.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" -dependencies = [ - "autocfg", - "libm", -] - -[[package]] -name = "num_enum" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c" -dependencies = [ - "num_enum_derive", - "rustversion", -] - -[[package]] -name = "num_enum_derive" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "paste" -version = "1.0.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" - -[[package]] -name = "ppv-lite86" -version = "0.2.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" -dependencies = [ - "zerocopy", -] - -[[package]] -name = "proc-macro2" -version = "1.0.105" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "535d180e0ecab6268a3e718bb9fd44db66bbbc256257165fc699dadf70d16fe7" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "proptest" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bee689443a2bd0a16ab0348b52ee43e3b2d1b1f931c8aa5c9f8de4c86fbe8c40" -dependencies = [ - "bitflags", - "num-traits", - "rand 0.9.2", - "rand_chacha", - "rand_xorshift", - "unarray", -] - -[[package]] -name = "quote" -version = "1.0.43" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc74d9a594b72ae6656596548f56f667211f8a97b3d4c3d467150794690dc40a" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "r-efi" -version = "5.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" - -[[package]] -name = "rand" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" -dependencies = [ - "rand_core 0.6.4", -] - -[[package]] -name = "rand" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" -dependencies = [ - "rand_core 0.9.5", - "serde", -] - -[[package]] -name = "rand_chacha" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" -dependencies = [ - "ppv-lite86", - "rand_core 0.9.5", -] - -[[package]] -name = "rand_core" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" - -[[package]] -name = "rand_core" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" -dependencies = [ - "getrandom", - "serde", -] - -[[package]] -name = "rand_xorshift" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "513962919efc330f829edb2535844d1b912b0fbe2ca165d613e4e8788bb05a5a" -dependencies = [ - "rand_core 0.9.5", -] - -[[package]] -name = "ruint" -version = "1.17.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c141e807189ad38a07276942c6623032d3753c8859c146104ac2e4d68865945a" -dependencies = [ - "alloy-rlp", - "proptest", - "rand 0.8.5", - "rand 0.9.2", - "ruint-macro", - "serde_core", - "valuable", - "zeroize", -] - -[[package]] -name = "ruint-macro" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48fd7bd8a6377e15ad9d42a8ec25371b94ddc67abe7c8b9127bec79bebaaae18" - -[[package]] -name = "rustc-hash" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" - -[[package]] -name = "rustc_version" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" -dependencies = [ - "semver", -] - -[[package]] -name = "rustversion" -version = "1.0.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" - -[[package]] -name = "semver" -version = "1.0.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" - -[[package]] -name = "serde" -version = "1.0.228" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" -dependencies = [ - "serde_core", - "serde_derive", -] - -[[package]] -name = "serde_core" -version = "1.0.228" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde_derive" -version = "1.0.228" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "strum" -version = "0.27.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf" -dependencies = [ - "strum_macros", -] - -[[package]] -name = "strum_macros" -version = "0.27.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7" -dependencies = [ - "heck", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "syn" -version = "2.0.114" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4d107df263a3013ef9b1879b0df87d706ff80f65a86ea879bd9c31f9b307c2a" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "thiserror" -version = "2.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" -dependencies = [ - "thiserror-impl", -] - -[[package]] -name = "thiserror-impl" -version = "2.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "tiny-keccak" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" -dependencies = [ - "crunchy", -] - -[[package]] -name = "unarray" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" - -[[package]] -name = "unicode-ident" -version = "1.0.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" - -[[package]] -name = "unicode-segmentation" -version = "1.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" - -[[package]] -name = "unicode-xid" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" - -[[package]] -name = "valuable" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" - -[[package]] -name = "wasip2" -version = "1.0.1+wasi-0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" -dependencies = [ - "wit-bindgen", -] - -[[package]] -name = "wit-bindgen" -version = "0.46.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" - -[[package]] -name = "zerocopy" -version = "0.8.33" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "668f5168d10b9ee831de31933dc111a459c97ec93225beb307aed970d1372dfd" -dependencies = [ - "zerocopy-derive", -] - -[[package]] -name = "zerocopy-derive" -version = "0.8.33" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c7962b26b0a8685668b671ee4b54d007a67d4eaf05fda79ac0ecf41e32270f1" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "zeroize" -version = "1.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" diff --git a/alloy-op-hardforks/Cargo.toml b/alloy-op-hardforks/Cargo.toml deleted file mode 100644 index 5bf52f5520f14..0000000000000 --- a/alloy-op-hardforks/Cargo.toml +++ /dev/null @@ -1,40 +0,0 @@ -[package] -name = "alloy-op-hardforks" -description = "Bindings for named OP hardforks" - -version = "0.4.7" -edition = "2024" -rust-version = "1.85" -authors = ["Alloy Contributors", "OpLabsPBC"] -license = "MIT OR Apache-2.0" -homepage = "https://github.com/ethereum-optimism/optimism" -repository = "https://github.com/ethereum-optimism/optimism" - -[package.lints.clippy] -all = { level = "warn", priority = -1 } -missing-const-for-fn = "warn" -use-self = "warn" -option-if-let-else = "warn" -redundant-clone = "warn" - -[package.metadata.docs.rs] -all-features = true -rustdoc-args = ["--cfg", "docsrs"] - -[dependencies] -alloy-hardforks = { version = "0.4.7", default-features = false } - -# ethereum -alloy-chains = { version = "0.2.0", default-features = false } -alloy-primitives = { version = "1.0.0", default-features = false } - -# misc -auto_impl = "1" -serde = { version = "1.0", features = ["derive", "alloc"], default-features = false, optional = true } - -[features] -default = [] -serde = [ - "dep:serde", - "alloy-hardforks/serde" -] diff --git a/alloy-op-hardforks/clippy.toml b/alloy-op-hardforks/clippy.toml deleted file mode 100644 index b339f7c33d7a9..0000000000000 --- a/alloy-op-hardforks/clippy.toml +++ /dev/null @@ -1 +0,0 @@ -msrv = "1.85" diff --git a/alloy-op-hardforks/deny.toml b/alloy-op-hardforks/deny.toml deleted file mode 100644 index 6efd16e5583d2..0000000000000 --- a/alloy-op-hardforks/deny.toml +++ /dev/null @@ -1,39 +0,0 @@ -[advisories] -version = 2 -yanked = "warn" -ignore = [ - # https://rustsec.org/advisories/RUSTSEC-2024-0436 - "RUSTSEC-2024-0436", -] - -[bans] -multiple-versions = "warn" -wildcards = "deny" -highlight = "all" - -[licenses] -version = 2 -confidence-threshold = 0.8 - -allow = [ - "MIT", - "Apache-2.0", - "BSD-3-Clause", - "Unicode-3.0", - "CC0-1.0", -] - -[[licenses.clarify]] -name = "ring" -expression = "LicenseRef-ring" -license-files = [{ path = "LICENSE", hash = 0xbd0eed23 }] - -[[licenses.clarify]] -name = "webpki" -expression = "LicenseRef-webpki" -license-files = [{ path = "LICENSE", hash = 0x001c7e6c }] - -[sources] -unknown-registry = "deny" -unknown-git = "deny" -allow-git = [] diff --git a/alloy-op-hardforks/rustfmt.toml b/alloy-op-hardforks/rustfmt.toml deleted file mode 100644 index 3063df707a64e..0000000000000 --- a/alloy-op-hardforks/rustfmt.toml +++ /dev/null @@ -1,12 +0,0 @@ -reorder_imports = true -use_field_init_shorthand = true -use_small_heuristics = "Max" - -# Nightly -max_width = 100 -comment_width = 100 -imports_granularity = "Crate" -wrap_comments = true -format_code_in_doc_comments = true -doc_comment_code_block_width = 100 -format_macro_matchers = true diff --git a/docker-bake.hcl b/docker-bake.hcl index 7a9454528b4a5..a093e688d4aa2 100644 --- a/docker-bake.hcl +++ b/docker-bake.hcl @@ -344,8 +344,8 @@ target "op-rbuilder" { } target "kona-node" { - dockerfile = "docker/apps/kona_app_generic.dockerfile" - context = "kona" + dockerfile = "kona/docker/apps/kona_app_generic.dockerfile" + context = "rust" args = { REPO_LOCATION = "local" BIN_TARGET = "kona-node" diff --git a/justfile b/justfile index d0bc6b10bf10c..12e2674c06c2a 100644 --- a/justfile +++ b/justfile @@ -1,6 +1,6 @@ # Build all Rust binaries (release) for sysgo tests. build-rust-release: - cd kona && cargo build --release --bin kona-node --bin kona-supervisor + cd rust && cargo build --release --bin kona-node --bin kona-supervisor cd op-rbuilder && cargo build --release -p op-rbuilder --bin op-rbuilder cd rollup-boost && cargo build --release -p rollup-boost --bin rollup-boost diff --git a/kona/Cargo.lock b/kona/Cargo.lock deleted file mode 100644 index cb8e90dc42a7b..0000000000000 --- a/kona/Cargo.lock +++ /dev/null @@ -1,11940 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 4 - -[[package]] -name = "addr2line" -version = "0.25.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b5d307320b3181d6d7954e663bd7c774a838b8220fe0593c86d9fb09f498b4b" -dependencies = [ - "gimli", -] - -[[package]] -name = "adler2" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" - -[[package]] -name = "aead" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" -dependencies = [ - "crypto-common", - "generic-array", -] - -[[package]] -name = "aes" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" -dependencies = [ - "cfg-if", - "cipher", - "cpufeatures", -] - -[[package]] -name = "aes-gcm" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "831010a0f742e1209b3bcea8fab6a8e149051ba6099432c8cb2cc117dec3ead1" -dependencies = [ - "aead", - "aes", - "cipher", - "ctr", - "ghash", - "subtle", -] - -[[package]] -name = "ahash" -version = "0.8.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" -dependencies = [ - "cfg-if", - "getrandom 0.3.4", - "once_cell", - "version_check", - "zerocopy", -] - -[[package]] -name = "aho-corasick" -version = "1.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" -dependencies = [ - "memchr", -] - -[[package]] -name = "aligned-vec" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc890384c8602f339876ded803c97ad529f3842aba97f6392b3dba0dd171769b" -dependencies = [ - "equator", -] - -[[package]] -name = "alloc-no-stdlib" -version = "2.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" - -[[package]] -name = "alloc-stdlib" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" -dependencies = [ - "alloc-no-stdlib", -] - -[[package]] -name = "allocator-api2" -version = "0.2.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" - -[[package]] -name = "alloy-chains" -version = "0.2.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25db5bcdd086f0b1b9610140a12c59b757397be90bd130d8d836fc8da0815a34" -dependencies = [ - "alloy-primitives", - "arbitrary", - "num_enum", - "proptest", - "serde", - "strum", -] - -[[package]] -name = "alloy-consensus" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c3a590d13de3944675987394715f37537b50b856e3b23a0e66e97d963edbf38" -dependencies = [ - "alloy-eips", - "alloy-primitives", - "alloy-rlp", - "alloy-serde", - "alloy-trie", - "alloy-tx-macros", - "arbitrary", - "auto_impl", - "borsh", - "c-kzg", - "derive_more", - "either", - "k256", - "once_cell", - "rand 0.8.5", - "secp256k1 0.30.0", - "serde", - "serde_json", - "serde_with", - "thiserror 2.0.17", -] - -[[package]] -name = "alloy-consensus-any" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f28f769d5ea999f0d8a105e434f483456a15b4e1fcb08edbbbe1650a497ff6d" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-primitives", - "alloy-rlp", - "alloy-serde", - "arbitrary", - "serde", -] - -[[package]] -name = "alloy-eip2124" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "741bdd7499908b3aa0b159bba11e71c8cddd009a2c2eb7a06e825f1ec87900a5" -dependencies = [ - "alloy-primitives", - "alloy-rlp", - "arbitrary", - "crc", - "rand 0.8.5", - "serde", - "thiserror 2.0.17", -] - -[[package]] -name = "alloy-eip2930" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9441120fa82df73e8959ae0e4ab8ade03de2aaae61be313fbf5746277847ce25" -dependencies = [ - "alloy-primitives", - "alloy-rlp", - "arbitrary", - "borsh", - "rand 0.8.5", - "serde", -] - -[[package]] -name = "alloy-eip7702" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2919c5a56a1007492da313e7a3b6d45ef5edc5d33416fdec63c0d7a2702a0d20" -dependencies = [ - "alloy-primitives", - "alloy-rlp", - "arbitrary", - "borsh", - "k256", - "rand 0.8.5", - "serde", - "thiserror 2.0.17", -] - -[[package]] -name = "alloy-eips" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09535cbc646b0e0c6fcc12b7597eaed12cf86dff4c4fba9507a61e71b94f30eb" -dependencies = [ - "alloy-eip2124", - "alloy-eip2930", - "alloy-eip7702", - "alloy-primitives", - "alloy-rlp", - "alloy-serde", - "arbitrary", - "auto_impl", - "borsh", - "c-kzg", - "derive_more", - "either", - "ethereum_ssz", - "ethereum_ssz_derive", - "serde", - "serde_with", - "sha2", - "thiserror 2.0.17", -] - -[[package]] -name = "alloy-evm" -version = "0.25.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ccc4c702c840148af1ce784cc5c6ed9274a020ef32417c5b1dbeab8c317673" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-hardforks", - "alloy-op-hardforks", - "alloy-primitives", - "alloy-rpc-types-engine", - "alloy-rpc-types-eth", - "alloy-sol-types", - "auto_impl", - "derive_more", - "op-alloy", - "op-revm", - "revm", - "thiserror 2.0.17", -] - -[[package]] -name = "alloy-genesis" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1005520ccf89fa3d755e46c1d992a9e795466c2e7921be2145ef1f749c5727de" -dependencies = [ - "alloy-eips", - "alloy-primitives", - "alloy-serde", - "alloy-trie", - "borsh", - "serde", - "serde_with", -] - -[[package]] -name = "alloy-hardforks" -version = "0.4.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83ba208044232d14d4adbfa77e57d6329f51bc1acc21f5667bb7db72d88a0831" -dependencies = [ - "alloy-chains", - "alloy-eip2124", - "alloy-primitives", - "auto_impl", - "dyn-clone", - "serde", -] - -[[package]] -name = "alloy-json-abi" -version = "1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84e3cf01219c966f95a460c95f1d4c30e12f6c18150c21a30b768af2a2a29142" -dependencies = [ - "alloy-primitives", - "alloy-sol-type-parser", - "serde", - "serde_json", -] - -[[package]] -name = "alloy-json-rpc" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b626409c98ba43aaaa558361bca21440c88fd30df7542c7484b9c7a1489cdb" -dependencies = [ - "alloy-primitives", - "alloy-sol-types", - "http", - "serde", - "serde_json", - "thiserror 2.0.17", - "tracing", -] - -[[package]] -name = "alloy-network" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89924fdcfeee0e0fa42b1f10af42f92802b5d16be614a70897382565663bf7cf" -dependencies = [ - "alloy-consensus", - "alloy-consensus-any", - "alloy-eips", - "alloy-json-rpc", - "alloy-network-primitives", - "alloy-primitives", - "alloy-rpc-types-any", - "alloy-rpc-types-eth", - "alloy-serde", - "alloy-signer", - "alloy-sol-types", - "async-trait", - "auto_impl", - "derive_more", - "futures-utils-wasm", - "serde", - "serde_json", - "thiserror 2.0.17", -] - -[[package]] -name = "alloy-network-primitives" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f0dbe56ff50065713ff8635d8712a0895db3ad7f209db9793ad8fcb6b1734aa" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-primitives", - "alloy-serde", - "serde", -] - -[[package]] -name = "alloy-op-evm" -version = "0.25.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f640da852f93ddaa3b9a602b7ca41d80e0023f77a67b68aaaf511c32f1fe0ce" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-evm", - "alloy-op-hardforks", - "alloy-primitives", - "auto_impl", - "op-alloy", - "op-revm", - "revm", - "thiserror 2.0.17", -] - -[[package]] -name = "alloy-op-hardforks" -version = "0.4.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6472c610150c4c4c15be9e1b964c9b78068f933bda25fb9cdf09b9ac2bb66f36" -dependencies = [ - "alloy-chains", - "alloy-hardforks", - "alloy-primitives", - "auto_impl", - "serde", -] - -[[package]] -name = "alloy-primitives" -version = "1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6a0fb18dd5fb43ec5f0f6a20be1ce0287c79825827de5744afaa6c957737c33" -dependencies = [ - "alloy-rlp", - "arbitrary", - "bytes", - "cfg-if", - "const-hex", - "derive_more", - "foldhash 0.2.0", - "getrandom 0.3.4", - "hashbrown 0.16.1", - "indexmap 2.12.1", - "itoa", - "k256", - "keccak-asm", - "paste", - "proptest", - "proptest-derive 0.6.0", - "rand 0.9.2", - "rapidhash", - "ruint", - "rustc-hash 2.1.1", - "serde", - "sha3", - "tiny-keccak", -] - -[[package]] -name = "alloy-provider" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b56f7a77513308a21a2ba0e9d57785a9d9d2d609e77f4e71a78a1192b83ff2d" -dependencies = [ - "alloy-chains", - "alloy-consensus", - "alloy-eips", - "alloy-json-rpc", - "alloy-network", - "alloy-network-primitives", - "alloy-primitives", - "alloy-pubsub", - "alloy-rpc-client", - "alloy-rpc-types-engine", - "alloy-rpc-types-eth", - "alloy-signer", - "alloy-sol-types", - "alloy-transport", - "alloy-transport-http", - "alloy-transport-ipc", - "alloy-transport-ws", - "async-stream", - "async-trait", - "auto_impl", - "dashmap", - "either", - "futures", - "futures-utils-wasm", - "lru 0.16.3", - "parking_lot", - "pin-project", - "reqwest", - "serde", - "serde_json", - "thiserror 2.0.17", - "tokio", - "tracing", - "url", - "wasmtimer", -] - -[[package]] -name = "alloy-pubsub" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94813abbd7baa30c700ea02e7f92319dbcb03bff77aeea92a3a9af7ba19c5c70" -dependencies = [ - "alloy-json-rpc", - "alloy-primitives", - "alloy-transport", - "auto_impl", - "bimap", - "futures", - "parking_lot", - "serde", - "serde_json", - "tokio", - "tokio-stream", - "tower 0.5.3", - "tracing", - "wasmtimer", -] - -[[package]] -name = "alloy-rlp" -version = "0.3.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f70d83b765fdc080dbcd4f4db70d8d23fe4761f2f02ebfa9146b833900634b4" -dependencies = [ - "alloy-rlp-derive", - "arrayvec", - "bytes", -] - -[[package]] -name = "alloy-rlp-derive" -version = "0.3.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64b728d511962dda67c1bc7ea7c03736ec275ed2cf4c35d9585298ac9ccf3b73" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.111", -] - -[[package]] -name = "alloy-rpc-client" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff01723afc25ec4c5b04de399155bef7b6a96dfde2475492b1b7b4e7a4f46445" -dependencies = [ - "alloy-json-rpc", - "alloy-primitives", - "alloy-pubsub", - "alloy-transport", - "alloy-transport-http", - "alloy-transport-ipc", - "alloy-transport-ws", - "futures", - "pin-project", - "reqwest", - "serde", - "serde_json", - "tokio", - "tokio-stream", - "tower 0.5.3", - "tracing", - "url", - "wasmtimer", -] - -[[package]] -name = "alloy-rpc-types" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f91bf006bb06b7d812591b6ac33395cb92f46c6a65cda11ee30b348338214f0f" -dependencies = [ - "alloy-primitives", - "alloy-rpc-types-debug", - "alloy-rpc-types-eth", - "alloy-serde", - "serde", -] - -[[package]] -name = "alloy-rpc-types-any" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "212ca1c1dab27f531d3858f8b1a2d6bfb2da664be0c1083971078eb7b71abe4b" -dependencies = [ - "alloy-consensus-any", - "alloy-rpc-types-eth", - "alloy-serde", -] - -[[package]] -name = "alloy-rpc-types-beacon" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d92a9b4b268fac505ef7fb1dac9bb129d4fd7de7753f22a5b6e9f666f7f7de6" -dependencies = [ - "alloy-eips", - "alloy-primitives", - "alloy-rpc-types-engine", - "derive_more", - "serde", - "serde_json", - "serde_with", - "thiserror 2.0.17", -] - -[[package]] -name = "alloy-rpc-types-debug" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bab1ebed118b701c497e6541d2d11dfa6f3c6ae31a3c52999daa802fcdcc16b7" -dependencies = [ - "alloy-primitives", - "derive_more", - "serde", - "serde_with", -] - -[[package]] -name = "alloy-rpc-types-engine" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "232f00fcbcd3ee3b9399b96223a8fc884d17742a70a44f9d7cef275f93e6e872" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-primitives", - "alloy-rlp", - "alloy-serde", - "arbitrary", - "derive_more", - "ethereum_ssz", - "ethereum_ssz_derive", - "jsonwebtoken", - "rand 0.8.5", - "serde", - "strum", -] - -[[package]] -name = "alloy-rpc-types-eth" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5715d0bf7efbd360873518bd9f6595762136b5327a9b759a8c42ccd9b5e44945" -dependencies = [ - "alloy-consensus", - "alloy-consensus-any", - "alloy-eips", - "alloy-network-primitives", - "alloy-primitives", - "alloy-rlp", - "alloy-serde", - "alloy-sol-types", - "arbitrary", - "itertools 0.14.0", - "serde", - "serde_json", - "serde_with", - "thiserror 2.0.17", -] - -[[package]] -name = "alloy-serde" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ed8531cae8d21ee1c6571d0995f8c9f0652a6ef6452fde369283edea6ab7138" -dependencies = [ - "alloy-primitives", - "arbitrary", - "serde", - "serde_json", -] - -[[package]] -name = "alloy-signer" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb10ccd49d0248df51063fce6b716f68a315dd912d55b32178c883fd48b4021d" -dependencies = [ - "alloy-primitives", - "async-trait", - "auto_impl", - "either", - "elliptic-curve", - "k256", - "thiserror 2.0.17", -] - -[[package]] -name = "alloy-signer-local" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4d992d44e6c414ece580294abbadb50e74cfd4eaa69787350a4dfd4b20eaa1b" -dependencies = [ - "alloy-consensus", - "alloy-network", - "alloy-primitives", - "alloy-signer", - "async-trait", - "k256", - "rand 0.8.5", - "thiserror 2.0.17", -] - -[[package]] -name = "alloy-sol-macro" -version = "1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09eb18ce0df92b4277291bbaa0ed70545d78b02948df756bbd3d6214bf39a218" -dependencies = [ - "alloy-sol-macro-expander", - "alloy-sol-macro-input", - "proc-macro-error2", - "proc-macro2", - "quote", - "syn 2.0.111", -] - -[[package]] -name = "alloy-sol-macro-expander" -version = "1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95d9fa2daf21f59aa546d549943f10b5cce1ae59986774019fbedae834ffe01b" -dependencies = [ - "alloy-sol-macro-input", - "const-hex", - "heck", - "indexmap 2.12.1", - "proc-macro-error2", - "proc-macro2", - "quote", - "syn 2.0.111", - "syn-solidity", - "tiny-keccak", -] - -[[package]] -name = "alloy-sol-macro-input" -version = "1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9396007fe69c26ee118a19f4dee1f5d1d6be186ea75b3881adf16d87f8444686" -dependencies = [ - "const-hex", - "dunce", - "heck", - "macro-string", - "proc-macro2", - "quote", - "syn 2.0.111", - "syn-solidity", -] - -[[package]] -name = "alloy-sol-type-parser" -version = "1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af67a0b0dcebe14244fc92002cd8d96ecbf65db4639d479f5fcd5805755a4c27" -dependencies = [ - "serde", - "winnow", -] - -[[package]] -name = "alloy-sol-types" -version = "1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09aeea64f09a7483bdcd4193634c7e5cf9fd7775ee767585270cd8ce2d69dc95" -dependencies = [ - "alloy-json-abi", - "alloy-primitives", - "alloy-sol-macro", - "serde", -] - -[[package]] -name = "alloy-transport" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f50a9516736d22dd834cc2240e5bf264f338667cc1d9e514b55ec5a78b987ca" -dependencies = [ - "alloy-json-rpc", - "auto_impl", - "base64", - "derive_more", - "futures", - "futures-utils-wasm", - "parking_lot", - "serde", - "serde_json", - "thiserror 2.0.17", - "tokio", - "tower 0.5.3", - "tracing", - "url", - "wasmtimer", -] - -[[package]] -name = "alloy-transport-http" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a18b541a6197cf9a084481498a766fdf32fefda0c35ea6096df7d511025e9f1" -dependencies = [ - "alloy-json-rpc", - "alloy-rpc-types-engine", - "alloy-transport", - "http-body-util", - "hyper", - "hyper-tls", - "hyper-util", - "jsonwebtoken", - "reqwest", - "serde_json", - "tower 0.5.3", - "tracing", - "url", -] - -[[package]] -name = "alloy-transport-ipc" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8075911680ebc537578cacf9453464fd394822a0f68614884a9c63f9fbaf5e89" -dependencies = [ - "alloy-json-rpc", - "alloy-pubsub", - "alloy-transport", - "bytes", - "futures", - "interprocess", - "pin-project", - "serde", - "serde_json", - "tokio", - "tokio-util", - "tracing", -] - -[[package]] -name = "alloy-transport-ws" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "921d37a57e2975e5215f7dd0f28873ed5407c7af630d4831a4b5c737de4b0b8b" -dependencies = [ - "alloy-pubsub", - "alloy-transport", - "futures", - "http", - "serde_json", - "tokio", - "tokio-tungstenite", - "tracing", - "ws_stream_wasm", -] - -[[package]] -name = "alloy-trie" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "428aa0f0e0658ff091f8f667c406e034b431cb10abd39de4f507520968acc499" -dependencies = [ - "alloy-primitives", - "alloy-rlp", - "arbitrary", - "arrayvec", - "derive_arbitrary", - "derive_more", - "nybbles", - "proptest", - "proptest-derive 0.5.1", - "serde", - "smallvec", - "tracing", -] - -[[package]] -name = "alloy-tx-macros" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2289a842d02fe63f8c466db964168bb2c7a9fdfb7b24816dbb17d45520575fb" -dependencies = [ - "darling 0.21.3", - "proc-macro2", - "quote", - "syn 2.0.111", -] - -[[package]] -name = "ambassador" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e68de4cdc6006162265d0957edb4a860fe4e711b1dc17a5746fd95f952f08285" -dependencies = [ - "itertools 0.10.5", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "android_system_properties" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" -dependencies = [ - "libc", -] - -[[package]] -name = "anes" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" - -[[package]] -name = "anstream" -version = "0.6.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a" -dependencies = [ - "anstyle", - "anstyle-parse", - "anstyle-query", - "anstyle-wincon", - "colorchoice", - "is_terminal_polyfill", - "utf8parse", -] - -[[package]] -name = "anstyle" -version = "1.0.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78" - -[[package]] -name = "anstyle-parse" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" -dependencies = [ - "utf8parse", -] - -[[package]] -name = "anstyle-query" -version = "1.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" -dependencies = [ - "windows-sys 0.61.2", -] - -[[package]] -name = "anstyle-wincon" -version = "3.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" -dependencies = [ - "anstyle", - "once_cell_polyfill", - "windows-sys 0.61.2", -] - -[[package]] -name = "anyhow" -version = "1.0.100" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" - -[[package]] -name = "arbitrary" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1" -dependencies = [ - "derive_arbitrary", -] - -[[package]] -name = "arbtest" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a3be567977128c0f71ad1462d9624ccda712193d124e944252f0c5789a06d46" -dependencies = [ - "arbitrary", -] - -[[package]] -name = "ark-bls12-381" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3df4dcc01ff89867cd86b0da835f23c3f02738353aaee7dde7495af71363b8d5" -dependencies = [ - "ark-ec", - "ark-ff 0.5.0", - "ark-serialize 0.5.0", - "ark-std 0.5.0", -] - -[[package]] -name = "ark-bn254" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d69eab57e8d2663efa5c63135b2af4f396d66424f88954c21104125ab6b3e6bc" -dependencies = [ - "ark-ec", - "ark-ff 0.5.0", - "ark-r1cs-std", - "ark-std 0.5.0", -] - -[[package]] -name = "ark-ec" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43d68f2d516162846c1238e755a7c4d131b892b70cc70c471a8e3ca3ed818fce" -dependencies = [ - "ahash", - "ark-ff 0.5.0", - "ark-poly", - "ark-serialize 0.5.0", - "ark-std 0.5.0", - "educe", - "fnv", - "hashbrown 0.15.5", - "itertools 0.13.0", - "num-bigint", - "num-integer", - "num-traits", - "zeroize", -] - -[[package]] -name = "ark-ff" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b3235cc41ee7a12aaaf2c575a2ad7b46713a8a50bda2fc3b003a04845c05dd6" -dependencies = [ - "ark-ff-asm 0.3.0", - "ark-ff-macros 0.3.0", - "ark-serialize 0.3.0", - "ark-std 0.3.0", - "derivative", - "num-bigint", - "num-traits", - "paste", - "rustc_version 0.3.3", - "zeroize", -] - -[[package]] -name = "ark-ff" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" -dependencies = [ - "ark-ff-asm 0.4.2", - "ark-ff-macros 0.4.2", - "ark-serialize 0.4.2", - "ark-std 0.4.0", - "derivative", - "digest 0.10.7", - "itertools 0.10.5", - "num-bigint", - "num-traits", - "paste", - "rustc_version 0.4.1", - "zeroize", -] - -[[package]] -name = "ark-ff" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a177aba0ed1e0fbb62aa9f6d0502e9b46dad8c2eab04c14258a1212d2557ea70" -dependencies = [ - "ark-ff-asm 0.5.0", - "ark-ff-macros 0.5.0", - "ark-serialize 0.5.0", - "ark-std 0.5.0", - "arrayvec", - "digest 0.10.7", - "educe", - "itertools 0.13.0", - "num-bigint", - "num-traits", - "paste", - "zeroize", -] - -[[package]] -name = "ark-ff-asm" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db02d390bf6643fb404d3d22d31aee1c4bc4459600aef9113833d17e786c6e44" -dependencies = [ - "quote", - "syn 1.0.109", -] - -[[package]] -name = "ark-ff-asm" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" -dependencies = [ - "quote", - "syn 1.0.109", -] - -[[package]] -name = "ark-ff-asm" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" -dependencies = [ - "quote", - "syn 2.0.111", -] - -[[package]] -name = "ark-ff-macros" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db2fd794a08ccb318058009eefdf15bcaaaaf6f8161eb3345f907222bac38b20" -dependencies = [ - "num-bigint", - "num-traits", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "ark-ff-macros" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" -dependencies = [ - "num-bigint", - "num-traits", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "ark-ff-macros" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09be120733ee33f7693ceaa202ca41accd5653b779563608f1234f78ae07c4b3" -dependencies = [ - "num-bigint", - "num-traits", - "proc-macro2", - "quote", - "syn 2.0.111", -] - -[[package]] -name = "ark-poly" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "579305839da207f02b89cd1679e50e67b4331e2f9294a57693e5051b7703fe27" -dependencies = [ - "ahash", - "ark-ff 0.5.0", - "ark-serialize 0.5.0", - "ark-std 0.5.0", - "educe", - "fnv", - "hashbrown 0.15.5", -] - -[[package]] -name = "ark-r1cs-std" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "941551ef1df4c7a401de7068758db6503598e6f01850bdb2cfdb614a1f9dbea1" -dependencies = [ - "ark-ec", - "ark-ff 0.5.0", - "ark-relations", - "ark-std 0.5.0", - "educe", - "num-bigint", - "num-integer", - "num-traits", - "tracing", -] - -[[package]] -name = "ark-relations" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec46ddc93e7af44bcab5230937635b06fb5744464dd6a7e7b083e80ebd274384" -dependencies = [ - "ark-ff 0.5.0", - "ark-std 0.5.0", - "tracing", - "tracing-subscriber 0.2.25", -] - -[[package]] -name = "ark-serialize" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d6c2b318ee6e10f8c2853e73a83adc0ccb88995aa978d8a3408d492ab2ee671" -dependencies = [ - "ark-std 0.3.0", - "digest 0.9.0", -] - -[[package]] -name = "ark-serialize" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" -dependencies = [ - "ark-std 0.4.0", - "digest 0.10.7", - "num-bigint", -] - -[[package]] -name = "ark-serialize" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f4d068aaf107ebcd7dfb52bc748f8030e0fc930ac8e360146ca54c1203088f7" -dependencies = [ - "ark-serialize-derive", - "ark-std 0.5.0", - "arrayvec", - "digest 0.10.7", - "num-bigint", -] - -[[package]] -name = "ark-serialize-derive" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "213888f660fddcca0d257e88e54ac05bca01885f258ccdf695bafd77031bb69d" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.111", -] - -[[package]] -name = "ark-std" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1df2c09229cbc5a028b1d70e00fdb2acee28b1055dfb5ca73eea49c5a25c4e7c" -dependencies = [ - "num-traits", - "rand 0.8.5", -] - -[[package]] -name = "ark-std" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" -dependencies = [ - "num-traits", - "rand 0.8.5", -] - -[[package]] -name = "ark-std" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "246a225cc6131e9ee4f24619af0f19d67761fff15d7ccc22e42b80846e69449a" -dependencies = [ - "num-traits", - "rand 0.8.5", -] - -[[package]] -name = "arrayref" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" - -[[package]] -name = "arrayvec" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" -dependencies = [ - "serde", -] - -[[package]] -name = "asn1-rs" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56624a96882bb8c26d61312ae18cb45868e5a9992ea73c58e45c3101e56a1e60" -dependencies = [ - "asn1-rs-derive", - "asn1-rs-impl", - "displaydoc", - "nom", - "num-traits", - "rusticata-macros", - "thiserror 2.0.17", - "time", -] - -[[package]] -name = "asn1-rs-derive" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3109e49b1e4909e9db6515a30c633684d68cdeaa252f215214cb4fa1a5bfee2c" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.111", - "synstructure", -] - -[[package]] -name = "asn1-rs-impl" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b18050c2cd6fe86c3a76584ef5e0baf286d038cda203eb6223df2cc413565f7" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.111", -] - -[[package]] -name = "asn1_der" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "155a5a185e42c6b77ac7b88a15143d930a9e9727a5b7b77eed417404ab15c247" - -[[package]] -name = "assert-json-diff" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47e4f2b81832e72834d7518d8487a0396a28cc408186a2e8854c0f98011faf12" -dependencies = [ - "serde", - "serde_json", -] - -[[package]] -name = "async-channel" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2" -dependencies = [ - "concurrent-queue", - "event-listener-strategy", - "futures-core", - "pin-project-lite", -] - -[[package]] -name = "async-compression" -version = "0.4.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07a926debf178f2d355197f9caddb08e54a9329d44748034bba349c5848cb519" -dependencies = [ - "compression-codecs", - "compression-core", - "futures-core", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "async-io" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "456b8a8feb6f42d237746d4b3e9a178494627745c3c56c6ea55d92ba50d026fc" -dependencies = [ - "autocfg", - "cfg-if", - "concurrent-queue", - "futures-io", - "futures-lite", - "parking", - "polling", - "rustix 1.1.3", - "slab", - "windows-sys 0.61.2", -] - -[[package]] -name = "async-lock" -version = "3.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fd03604047cee9b6ce9de9f70c6cd540a0520c813cbd49bae61f33ab80ed1dc" -dependencies = [ - "event-listener", - "event-listener-strategy", - "pin-project-lite", -] - -[[package]] -name = "async-object-pool" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1ac0219111eb7bb7cb76d4cf2cb50c598e7ae549091d3616f9e95442c18486f" -dependencies = [ - "async-lock", - "event-listener", -] - -[[package]] -name = "async-stream" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" -dependencies = [ - "async-stream-impl", - "futures-core", - "pin-project-lite", -] - -[[package]] -name = "async-stream-impl" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.111", -] - -[[package]] -name = "async-trait" -version = "0.1.89" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.111", -] - -[[package]] -name = "async_io_stream" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6d7b9decdf35d8908a7e3ef02f64c5e9b1695e230154c0e8de3969142d9b94c" -dependencies = [ - "futures", - "pharos", - "rustc_version 0.4.1", -] - -[[package]] -name = "asynchronous-codec" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a860072022177f903e59730004fb5dc13db9275b79bb2aef7ba8ce831956c233" -dependencies = [ - "bytes", - "futures-sink", - "futures-util", - "memchr", - "pin-project-lite", -] - -[[package]] -name = "atomic-waker" -version = "1.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" - -[[package]] -name = "attohttpc" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16e2cdb6d5ed835199484bb92bb8b3edd526effe995c61732580439c1a67e2e9" -dependencies = [ - "base64", - "http", - "log", - "url", -] - -[[package]] -name = "aurora-engine-modexp" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "518bc5745a6264b5fd7b09dffb9667e400ee9e2bbe18555fac75e1fe9afa0df9" -dependencies = [ - "hex", - "num", -] - -[[package]] -name = "auto_impl" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffdcb70bdbc4d478427380519163274ac86e52916e10f0a8889adf0f96d3fee7" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.111", -] - -[[package]] -name = "autocfg" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" - -[[package]] -name = "aws-lc-rs" -version = "1.13.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c953fe1ba023e6b7730c0d4b031d06f267f23a46167dcbd40316644b10a17ba" -dependencies = [ - "aws-lc-sys", - "zeroize", -] - -[[package]] -name = "aws-lc-sys" -version = "0.30.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbfd150b5dbdb988bcc8fb1fe787eb6b7ee6180ca24da683b61ea5405f3d43ff" -dependencies = [ - "bindgen 0.69.5", - "cc", - "cmake", - "dunce", - "fs_extra", -] - -[[package]] -name = "axum" -version = "0.7.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f" -dependencies = [ - "async-trait", - "axum-core", - "bytes", - "futures-util", - "http", - "http-body", - "http-body-util", - "itoa", - "matchit", - "memchr", - "mime", - "percent-encoding", - "pin-project-lite", - "rustversion", - "serde", - "sync_wrapper", - "tower 0.5.3", - "tower-layer", - "tower-service", -] - -[[package]] -name = "axum-core" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199" -dependencies = [ - "async-trait", - "bytes", - "futures-util", - "http", - "http-body", - "http-body-util", - "mime", - "pin-project-lite", - "rustversion", - "sync_wrapper", - "tower-layer", - "tower-service", -] - -[[package]] -name = "az" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b7e4c2464d97fe331d41de9d5db0def0a96f4d823b8b32a2efd503578988973" - -[[package]] -name = "backoff" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b62ddb9cb1ec0a098ad4bbf9344d0713fa193ae1a80af55febcff2627b6a00c1" -dependencies = [ - "getrandom 0.2.16", - "instant", - "rand 0.8.5", -] - -[[package]] -name = "backon" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cffb0e931875b666fc4fcb20fee52e9bbd1ef836fd9e9e04ec21555f9f85f7ef" -dependencies = [ - "fastrand", - "tokio", -] - -[[package]] -name = "backtrace" -version = "0.3.76" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb531853791a215d7c62a30daf0dde835f381ab5de4589cfe7c649d2cbe92bd6" -dependencies = [ - "addr2line", - "cfg-if", - "libc", - "miniz_oxide 0.8.9", - "object", - "rustc-demangle", - "windows-link", -] - -[[package]] -name = "base-x" -version = "0.2.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cbbc9d0964165b47557570cce6c952866c2678457aca742aafc9fb771d30270" - -[[package]] -name = "base16ct" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" - -[[package]] -name = "base256emoji" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e9430d9a245a77c92176e649af6e275f20839a48389859d1661e9a128d077c" -dependencies = [ - "const-str", - "match-lookup", -] - -[[package]] -name = "base64" -version = "0.22.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" - -[[package]] -name = "base64ct" -version = "1.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba" - -[[package]] -name = "bimap" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "230c5f1ca6a325a32553f8640d31ac9b49f2411e901e427570154868b46da4f7" - -[[package]] -name = "bincode" -version = "1.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" -dependencies = [ - "serde", -] - -[[package]] -name = "bincode" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36eaf5d7b090263e8150820482d5d93cd964a81e4019913c972f4edcc6edb740" -dependencies = [ - "bincode_derive", - "serde", - "unty", -] - -[[package]] -name = "bincode_derive" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf95709a440f45e986983918d0e8a1f30a9b1df04918fc828670606804ac3c09" -dependencies = [ - "virtue", -] - -[[package]] -name = "bindgen" -version = "0.69.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "271383c67ccabffb7381723dea0672a673f292304fcb45c01cc648c7a8d58088" -dependencies = [ - "bitflags 2.10.0", - "cexpr", - "clang-sys", - "itertools 0.12.1", - "lazy_static", - "lazycell", - "log", - "prettyplease", - "proc-macro2", - "quote", - "regex", - "rustc-hash 1.1.0", - "shlex", - "syn 2.0.111", - "which", -] - -[[package]] -name = "bindgen" -version = "0.70.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f49d8fed880d473ea71efb9bf597651e77201bdd4893efe54c9e5d65ae04ce6f" -dependencies = [ - "bitflags 2.10.0", - "cexpr", - "clang-sys", - "itertools 0.13.0", - "proc-macro2", - "quote", - "regex", - "rustc-hash 1.1.0", - "shlex", - "syn 2.0.111", -] - -[[package]] -name = "bindgen" -version = "0.72.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" -dependencies = [ - "bitflags 2.10.0", - "cexpr", - "clang-sys", - "itertools 0.13.0", - "proc-macro2", - "quote", - "regex", - "rustc-hash 2.1.1", - "shlex", - "syn 2.0.111", -] - -[[package]] -name = "bit-set" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" -dependencies = [ - "bit-vec", -] - -[[package]] -name = "bit-vec" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" - -[[package]] -name = "bitcoin-io" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dee39a0ee5b4095224a0cfc6bf4cc1baf0f9624b96b367e53b66d974e51d953" - -[[package]] -name = "bitcoin_hashes" -version = "0.14.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26ec84b80c482df901772e931a9a681e26a1b9ee2302edeff23cb30328745c8b" -dependencies = [ - "bitcoin-io", - "hex-conservative", -] - -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - -[[package]] -name = "bitflags" -version = "2.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" -dependencies = [ - "serde_core", -] - -[[package]] -name = "bitvec" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" -dependencies = [ - "funty", - "radium", - "serde", - "tap", - "wyz", -] - -[[package]] -name = "blake2" -version = "0.10.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" -dependencies = [ - "digest 0.10.7", -] - -[[package]] -name = "blake3" -version = "1.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2468ef7d57b3fb7e16b576e8377cdbde2320c60e1491e961d11da40fc4f02a2d" -dependencies = [ - "arrayref", - "arrayvec", - "cc", - "cfg-if", - "constant_time_eq", - "cpufeatures", -] - -[[package]] -name = "block-buffer" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" -dependencies = [ - "generic-array", -] - -[[package]] -name = "blst" -version = "0.3.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcdb4c7013139a150f9fc55d123186dbfaba0d912817466282c73ac49e71fb45" -dependencies = [ - "cc", - "glob", - "threadpool", - "zeroize", -] - -[[package]] -name = "borsh" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1da5ab77c1437701eeff7c88d968729e7766172279eab0676857b3d63af7a6f" -dependencies = [ - "borsh-derive", - "cfg_aliases", -] - -[[package]] -name = "borsh-derive" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0686c856aa6aac0c4498f936d7d6a02df690f614c03e4d906d1018062b5c5e2c" -dependencies = [ - "once_cell", - "proc-macro-crate", - "proc-macro2", - "quote", - "syn 2.0.111", -] - -[[package]] -name = "brotli" -version = "8.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bd8b9603c7aa97359dbd97ecf258968c95f3adddd6db2f7e7a5bef101c84560" -dependencies = [ - "alloc-no-stdlib", - "alloc-stdlib", - "brotli-decompressor", -] - -[[package]] -name = "brotli-decompressor" -version = "5.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "874bb8112abecc98cbd6d81ea4fa7e94fb9449648c93cc89aa40c81c24d7de03" -dependencies = [ - "alloc-no-stdlib", - "alloc-stdlib", -] - -[[package]] -name = "bs58" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" -dependencies = [ - "tinyvec", -] - -[[package]] -name = "buddy_system_allocator" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1a0108968a3a2dab95b089c0fc3f1afa7759aa5ebe6f1d86d206d6f7ba726eb" -dependencies = [ - "spin 0.9.8", -] - -[[package]] -name = "bumpalo" -version = "3.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" - -[[package]] -name = "byte-slice-cast" -version = "1.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7575182f7272186991736b70173b0ea045398f984bf5ebbb3804736ce1330c9d" - -[[package]] -name = "bytecheck" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0caa33a2c0edca0419d15ac723dff03f1956f7978329b1e3b5fdaaaed9d3ca8b" -dependencies = [ - "bytecheck_derive", - "ptr_meta", - "rancor", - "simdutf8", -] - -[[package]] -name = "bytecheck_derive" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89385e82b5d1821d2219e0b095efa2cc1f246cbf99080f3be46a1a85c0d392d9" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.111", -] - -[[package]] -name = "bytecount" -version = "0.6.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "175812e0be2bccb6abe50bb8d566126198344f707e304f45c648fd8f2cc0365e" - -[[package]] -name = "bytemuck" -version = "1.24.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4" - -[[package]] -name = "byteorder" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" - -[[package]] -name = "bytes" -version = "1.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3" -dependencies = [ - "serde", -] - -[[package]] -name = "bzip2-sys" -version = "0.1.13+1.0.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "225bff33b2141874fe80d71e07d6eec4f85c5c216453dd96388240f96e1acc14" -dependencies = [ - "cc", - "pkg-config", -] - -[[package]] -name = "c-kzg" -version = "2.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e00bf4b112b07b505472dbefd19e37e53307e2bfed5a79e0cc161d58ccd0e687" -dependencies = [ - "arbitrary", - "blst", - "cc", - "glob", - "hex", - "libc", - "once_cell", - "serde", -] - -[[package]] -name = "camino" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "276a59bf2b2c967788139340c9f0c5b12d7fd6630315c15c217e559de85d2609" -dependencies = [ - "serde_core", -] - -[[package]] -name = "cargo-platform" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea" -dependencies = [ - "serde", -] - -[[package]] -name = "cargo-platform" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87a0c0e6148f11f01f32650a2ea02d532b2ad4e81d8bd41e6e565b5adc5e6082" -dependencies = [ - "serde", - "serde_core", -] - -[[package]] -name = "cargo_metadata" -version = "0.19.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd5eb614ed4c27c5d706420e4320fbe3216ab31fa1c33cd8246ac36dae4479ba" -dependencies = [ - "camino", - "cargo-platform 0.1.9", - "semver 1.0.27", - "serde", - "serde_json", - "thiserror 2.0.17", -] - -[[package]] -name = "cargo_metadata" -version = "0.23.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef987d17b0a113becdd19d3d0022d04d7ef41f9efe4f3fb63ac44ba61df3ade9" -dependencies = [ - "camino", - "cargo-platform 0.3.2", - "semver 1.0.27", - "serde", - "serde_json", - "thiserror 2.0.17", -] - -[[package]] -name = "cast" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" - -[[package]] -name = "cc" -version = "1.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c736e259eea577f443d5c86c304f9f4ae0295c43f3ba05c21f1d66b5f06001af" -dependencies = [ - "jobserver", - "libc", - "shlex", -] - -[[package]] -name = "cesu8" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" - -[[package]] -name = "cexpr" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" -dependencies = [ - "nom", -] - -[[package]] -name = "cfg-if" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" - -[[package]] -name = "cfg_aliases" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" - -[[package]] -name = "chacha20" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3613f74bd2eac03dad61bd53dbe620703d4371614fe0bc3b9f04dd36fe4e818" -dependencies = [ - "cfg-if", - "cipher", - "cpufeatures", -] - -[[package]] -name = "chacha20poly1305" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10cd79432192d1c0f4e1a0fef9527696cc039165d729fb41b3f4f4f354c2dc35" -dependencies = [ - "aead", - "chacha20", - "cipher", - "poly1305", - "zeroize", -] - -[[package]] -name = "chrono" -version = "0.4.42" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2" -dependencies = [ - "iana-time-zone", - "js-sys", - "num-traits", - "serde", - "wasm-bindgen", - "windows-link", -] - -[[package]] -name = "ciborium" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e" -dependencies = [ - "ciborium-io", - "ciborium-ll", - "serde", -] - -[[package]] -name = "ciborium-io" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757" - -[[package]] -name = "ciborium-ll" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9" -dependencies = [ - "ciborium-io", - "half", -] - -[[package]] -name = "cipher" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" -dependencies = [ - "crypto-common", - "inout", - "zeroize", -] - -[[package]] -name = "clang-sys" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" -dependencies = [ - "glob", - "libc", - "libloading", -] - -[[package]] -name = "clap" -version = "4.5.54" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6e6ff9dcd79cff5cd969a17a545d79e84ab086e444102a591e288a8aa3ce394" -dependencies = [ - "clap_builder", - "clap_derive", -] - -[[package]] -name = "clap_builder" -version = "4.5.54" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa42cf4d2b7a41bc8f663a7cab4031ebafa1bf3875705bfaf8466dc60ab52c00" -dependencies = [ - "anstream", - "anstyle", - "clap_lex", - "strsim", -] - -[[package]] -name = "clap_derive" -version = "4.5.49" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a0b5487afeab2deb2ff4e03a807ad1a03ac532ff5a2cee5d86884440c7f7671" -dependencies = [ - "heck", - "proc-macro2", - "quote", - "syn 2.0.111", -] - -[[package]] -name = "clap_lex" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1d728cc89cf3aee9ff92b05e62b19ee65a02b5702cff7d5a377e32c6ae29d8d" - -[[package]] -name = "cmake" -version = "0.1.54" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7caa3f9de89ddbe2c607f4101924c5abec803763ae9534e4f4d7d8f84aa81f0" -dependencies = [ - "cc", -] - -[[package]] -name = "colorchoice" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" - -[[package]] -name = "combine" -version = "4.6.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" -dependencies = [ - "bytes", - "memchr", -] - -[[package]] -name = "compression-codecs" -version = "0.4.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34a3cbbb8b6eca96f3a5c4bf6938d5b27ced3675d69f95bb51948722870bc323" -dependencies = [ - "brotli", - "compression-core", - "flate2", - "memchr", - "zstd", - "zstd-safe", -] - -[[package]] -name = "compression-core" -version = "0.4.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75984efb6ed102a0d42db99afb6c1948f0380d1d91808d5529916e6c08b49d8d" - -[[package]] -name = "concurrent-queue" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" -dependencies = [ - "crossbeam-utils", -] - -[[package]] -name = "const-hex" -version = "1.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bb320cac8a0750d7f25280aa97b09c26edfe161164238ecbbb31092b079e735" -dependencies = [ - "cfg-if", - "cpufeatures", - "proptest", - "serde_core", -] - -[[package]] -name = "const-oid" -version = "0.9.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" - -[[package]] -name = "const-str" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f421161cb492475f1661ddc9815a745a1c894592070661180fdec3d4872e9c3" - -[[package]] -name = "const_format" -version = "0.2.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7faa7469a93a566e9ccc1c73fe783b4a65c274c5ace346038dca9c39fe0030ad" -dependencies = [ - "const_format_proc_macros", -] - -[[package]] -name = "const_format_proc_macros" -version = "0.2.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d57c2eccfb16dbac1f4e61e206105db5820c9d26c3c472bc17c774259ef7744" -dependencies = [ - "proc-macro2", - "quote", - "unicode-xid", -] - -[[package]] -name = "constant_time_eq" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d52eff69cd5e647efe296129160853a42795992097e8af39800e1060caeea9b" - -[[package]] -name = "convert_case" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb402b8d4c85569410425650ce3eddc7d698ed96d39a73f941b08fb63082f1e7" -dependencies = [ - "unicode-segmentation", -] - -[[package]] -name = "convert_case" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "633458d4ef8c78b72454de2d54fd6ab2e60f9e02be22f3c6104cdc8a4e0fceb9" -dependencies = [ - "unicode-segmentation", -] - -[[package]] -name = "core-foundation" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "core-foundation" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "core-foundation-sys" -version = "0.8.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" - -[[package]] -name = "core2" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b49ba7ef1ad6107f8824dbe97de947cbaac53c44e7f9756a1fba0d37c1eec505" -dependencies = [ - "memchr", -] - -[[package]] -name = "cpp_demangle" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2bb79cb74d735044c972aae58ed0aaa9a837e85b01106a54c39e42e97f62253" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "cpufeatures" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" -dependencies = [ - "libc", -] - -[[package]] -name = "crc" -version = "3.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5eb8a2a1cd12ab0d987a5d5e825195d372001a4094a0376319d5a0ad71c1ba0d" -dependencies = [ - "crc-catalog", -] - -[[package]] -name = "crc-catalog" -version = "2.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" - -[[package]] -name = "crc32fast" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "criterion" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2b12d017a929603d80db1831cd3a24082f8137ce19c69e6447f54f5fc8d692f" -dependencies = [ - "anes", - "cast", - "ciborium", - "clap", - "criterion-plot", - "is-terminal", - "itertools 0.10.5", - "num-traits", - "once_cell", - "oorandom", - "plotters", - "rayon", - "regex", - "serde", - "serde_derive", - "serde_json", - "tinytemplate", - "walkdir", -] - -[[package]] -name = "criterion-plot" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1" -dependencies = [ - "cast", - "itertools 0.10.5", -] - -[[package]] -name = "critical-section" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" - -[[package]] -name = "crossbeam-channel" -version = "0.5.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" -dependencies = [ - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-deque" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" -dependencies = [ - "crossbeam-epoch", - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-epoch" -version = "0.9.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" -dependencies = [ - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-utils" -version = "0.8.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" - -[[package]] -name = "crunchy" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" - -[[package]] -name = "crypto-bigint" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" -dependencies = [ - "generic-array", - "rand_core 0.6.4", - "subtle", - "zeroize", -] - -[[package]] -name = "crypto-common" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" -dependencies = [ - "generic-array", - "rand_core 0.6.4", - "typenum", -] - -[[package]] -name = "ctr" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" -dependencies = [ - "cipher", -] - -[[package]] -name = "curve25519-dalek" -version = "4.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" -dependencies = [ - "cfg-if", - "cpufeatures", - "curve25519-dalek-derive", - "digest 0.10.7", - "fiat-crypto", - "rustc_version 0.4.1", - "subtle", - "zeroize", -] - -[[package]] -name = "curve25519-dalek-derive" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.111", -] - -[[package]] -name = "darling" -version = "0.20.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" -dependencies = [ - "darling_core 0.20.11", - "darling_macro 0.20.11", -] - -[[package]] -name = "darling" -version = "0.21.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0" -dependencies = [ - "darling_core 0.21.3", - "darling_macro 0.21.3", -] - -[[package]] -name = "darling_core" -version = "0.20.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e" -dependencies = [ - "fnv", - "ident_case", - "proc-macro2", - "quote", - "strsim", - "syn 2.0.111", -] - -[[package]] -name = "darling_core" -version = "0.21.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4" -dependencies = [ - "fnv", - "ident_case", - "proc-macro2", - "quote", - "serde", - "strsim", - "syn 2.0.111", -] - -[[package]] -name = "darling_macro" -version = "0.20.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" -dependencies = [ - "darling_core 0.20.11", - "quote", - "syn 2.0.111", -] - -[[package]] -name = "darling_macro" -version = "0.21.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" -dependencies = [ - "darling_core 0.21.3", - "quote", - "syn 2.0.111", -] - -[[package]] -name = "dashmap" -version = "6.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf" -dependencies = [ - "cfg-if", - "crossbeam-utils", - "hashbrown 0.14.5", - "lock_api", - "once_cell", - "parking_lot_core", -] - -[[package]] -name = "data-encoding" -version = "2.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476" - -[[package]] -name = "data-encoding-macro" -version = "0.1.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47ce6c96ea0102f01122a185683611bd5ac8d99e62bc59dd12e6bda344ee673d" -dependencies = [ - "data-encoding", - "data-encoding-macro-internal", -] - -[[package]] -name = "data-encoding-macro-internal" -version = "0.1.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d162beedaa69905488a8da94f5ac3edb4dd4788b732fadb7bd120b2625c1976" -dependencies = [ - "data-encoding", - "syn 2.0.111", -] - -[[package]] -name = "debugid" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef552e6f588e446098f6ba40d89ac146c8c7b64aade83c051ee00bb5d2bc18d" -dependencies = [ - "uuid", -] - -[[package]] -name = "delay_map" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88e365f083a5cb5972d50ce8b1b2c9f125dc5ec0f50c0248cfb568ae59efcf0b" -dependencies = [ - "futures", - "tokio", - "tokio-util", -] - -[[package]] -name = "der" -version = "0.7.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" -dependencies = [ - "const-oid", - "zeroize", -] - -[[package]] -name = "der-parser" -version = "10.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07da5016415d5a3c4dd39b11ed26f915f52fc4e0dc197d87908bc916e51bc1a6" -dependencies = [ - "asn1-rs", - "displaydoc", - "nom", - "num-bigint", - "num-traits", - "rusticata-macros", -] - -[[package]] -name = "deranged" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587" -dependencies = [ - "powerfmt", - "serde_core", -] - -[[package]] -name = "derivative" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "derive-where" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef941ded77d15ca19b40374869ac6000af1c9f2a4c0f3d4c70926287e6364a8f" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.111", -] - -[[package]] -name = "derive_arbitrary" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.111", -] - -[[package]] -name = "derive_builder" -version = "0.20.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "507dfb09ea8b7fa618fcf76e953f4f5e192547945816d5358edffe39f6f94947" -dependencies = [ - "derive_builder_macro", -] - -[[package]] -name = "derive_builder_core" -version = "0.20.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d5bcf7b024d6835cfb3d473887cd966994907effbe9227e8c8219824d06c4e8" -dependencies = [ - "darling 0.20.11", - "proc-macro2", - "quote", - "syn 2.0.111", -] - -[[package]] -name = "derive_builder_macro" -version = "0.20.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" -dependencies = [ - "derive_builder_core", - "syn 2.0.111", -] - -[[package]] -name = "derive_more" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d751e9e49156b02b44f9c1815bcb94b984cdcc4396ecc32521c739452808b134" -dependencies = [ - "derive_more-impl", -] - -[[package]] -name = "derive_more-impl" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "799a97264921d8623a957f6c3b9011f3b5492f557bbb7a5a19b7fa6d06ba8dcb" -dependencies = [ - "convert_case 0.10.0", - "proc-macro2", - "quote", - "rustc_version 0.4.1", - "syn 2.0.111", - "unicode-xid", -] - -[[package]] -name = "digest" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" -dependencies = [ - "generic-array", -] - -[[package]] -name = "digest" -version = "0.10.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" -dependencies = [ - "block-buffer", - "const-oid", - "crypto-common", - "subtle", -] - -[[package]] -name = "dirs" -version = "6.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e" -dependencies = [ - "dirs-sys", -] - -[[package]] -name = "dirs-sys" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab" -dependencies = [ - "libc", - "option-ext", - "redox_users", - "windows-sys 0.61.2", -] - -[[package]] -name = "discv5" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f170f4f6ed0e1df52bf43b403899f0081917ecf1500bfe312505cc3b515a8899" -dependencies = [ - "aes", - "aes-gcm", - "alloy-rlp", - "arrayvec", - "ctr", - "delay_map", - "enr", - "fnv", - "futures", - "hashlink", - "hex", - "hkdf", - "lazy_static", - "libp2p-identity", - "lru 0.12.5", - "more-asserts", - "multiaddr", - "parking_lot", - "rand 0.8.5", - "smallvec", - "socket2 0.5.10", - "tokio", - "tracing", - "uint 0.10.0", - "zeroize", -] - -[[package]] -name = "displaydoc" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.111", -] - -[[package]] -name = "doctest-file" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aac81fa3e28d21450aa4d2ac065992ba96a1d7303efbce51a95f4fd175b67562" - -[[package]] -name = "dotenvy" -version = "0.15.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" - -[[package]] -name = "downcast" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1435fa1053d8b2fbbe9be7e97eca7f33d37b28409959813daefc1446a14247f1" - -[[package]] -name = "dtoa" -version = "1.0.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6add3b8cff394282be81f3fc1a0605db594ed69890078ca6e2cab1c408bcf04" - -[[package]] -name = "dunce" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" - -[[package]] -name = "dyn-clone" -version = "1.0.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" - -[[package]] -name = "ecdsa" -version = "0.16.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" -dependencies = [ - "der", - "digest 0.10.7", - "elliptic-curve", - "rfc6979", - "serdect", - "signature", - "spki", -] - -[[package]] -name = "ed25519" -version = "2.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" -dependencies = [ - "pkcs8", - "serde", - "signature", -] - -[[package]] -name = "ed25519-dalek" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70e796c081cee67dc755e1a36a0a172b897fab85fc3f6bc48307991f64e4eca9" -dependencies = [ - "curve25519-dalek", - "ed25519", - "rand_core 0.6.4", - "serde", - "sha2", - "subtle", - "zeroize", -] - -[[package]] -name = "educe" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d7bc049e1bd8cdeb31b68bbd586a9464ecf9f3944af3958a7a9d0f8b9799417" -dependencies = [ - "enum-ordinalize", - "proc-macro2", - "quote", - "syn 2.0.111", -] - -[[package]] -name = "either" -version = "1.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" -dependencies = [ - "serde", -] - -[[package]] -name = "elliptic-curve" -version = "0.13.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" -dependencies = [ - "base16ct", - "crypto-bigint", - "digest 0.10.7", - "ff", - "generic-array", - "group", - "pkcs8", - "rand_core 0.6.4", - "sec1", - "serdect", - "subtle", - "zeroize", -] - -[[package]] -name = "encoding_rs" -version = "0.8.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "endian-type" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d" - -[[package]] -name = "enr" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "851bd664a3d3a3c175cff92b2f0df02df3c541b4895d0ae307611827aae46152" -dependencies = [ - "alloy-rlp", - "base64", - "bytes", - "ed25519-dalek", - "hex", - "k256", - "log", - "rand 0.8.5", - "serde", - "sha3", - "zeroize", -] - -[[package]] -name = "enum-as-inner" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1e6a265c649f3f5979b601d26f1d05ada116434c87741c9493cb56218f76cbc" -dependencies = [ - "heck", - "proc-macro2", - "quote", - "syn 2.0.111", -] - -[[package]] -name = "enum-ordinalize" -version = "4.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a1091a7bb1f8f2c4b28f1fe2cef4980ca2d410a3d727d67ecc3178c9b0800f0" -dependencies = [ - "enum-ordinalize-derive", -] - -[[package]] -name = "enum-ordinalize-derive" -version = "4.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ca9601fb2d62598ee17836250842873a413586e5d7ed88b356e38ddbb0ec631" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.111", -] - -[[package]] -name = "equator" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4711b213838dfee0117e3be6ac926007d7f433d7bbe33595975d4190cb07e6fc" -dependencies = [ - "equator-macro", -] - -[[package]] -name = "equator-macro" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44f23cf4b44bfce11a86ace86f8a73ffdec849c9fd00a386a53d278bd9e81fb3" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.111", -] - -[[package]] -name = "equivalent" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" - -[[package]] -name = "errno" -version = "0.3.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" -dependencies = [ - "libc", - "windows-sys 0.61.2", -] - -[[package]] -name = "ethereum_serde_utils" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dc1355dbb41fbbd34ec28d4fb2a57d9a70c67ac3c19f6a5ca4d4a176b9e997a" -dependencies = [ - "alloy-primitives", - "hex", - "serde", - "serde_derive", - "serde_json", -] - -[[package]] -name = "ethereum_ssz" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dcddb2554d19cde19b099fadddde576929d7a4d0c1cd3512d1fd95cf174375c" -dependencies = [ - "alloy-primitives", - "ethereum_serde_utils", - "itertools 0.13.0", - "serde", - "serde_derive", - "smallvec", - "typenum", -] - -[[package]] -name = "ethereum_ssz_derive" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a657b6b3b7e153637dc6bdc6566ad9279d9ee11a15b12cfb24a2e04360637e9f" -dependencies = [ - "darling 0.20.11", - "proc-macro2", - "quote", - "syn 2.0.111", -] - -[[package]] -name = "event-listener" -version = "5.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab" -dependencies = [ - "concurrent-queue", - "parking", - "pin-project-lite", -] - -[[package]] -name = "event-listener-strategy" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" -dependencies = [ - "event-listener", - "pin-project-lite", -] - -[[package]] -name = "example-discovery" -version = "0.0.0" -dependencies = [ - "anyhow", - "clap", - "discv5", - "kona-cli", - "kona-disc", - "tokio", - "tracing", - "tracing-subscriber 0.3.22", -] - -[[package]] -name = "example-gossip" -version = "0.0.0" -dependencies = [ - "anyhow", - "async-trait", - "clap", - "discv5", - "kona-cli", - "kona-disc", - "kona-node-service", - "kona-registry", - "libp2p", - "op-alloy-rpc-types-engine", - "tokio", - "tokio-util", - "tracing", - "tracing-subscriber 0.3.22", -] - -[[package]] -name = "execution-fixture" -version = "0.0.0" -dependencies = [ - "anyhow", - "clap", - "kona-cli", - "kona-executor", - "tokio", - "tracing", - "tracing-subscriber 0.3.22", - "url", -] - -[[package]] -name = "eyre" -version = "0.6.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cd915d99f24784cdc19fd37ef22b97e3ff0ae756c7e492e9fbfe897d61e2aec" -dependencies = [ - "indenter", - "once_cell", -] - -[[package]] -name = "fastrand" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" - -[[package]] -name = "fastrlp" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "139834ddba373bbdd213dffe02c8d110508dcf1726c2be27e8d1f7d7e1856418" -dependencies = [ - "arrayvec", - "auto_impl", - "bytes", -] - -[[package]] -name = "fastrlp" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce8dba4714ef14b8274c371879b175aa55b16b30f269663f19d576f380018dc4" -dependencies = [ - "arrayvec", - "auto_impl", - "bytes", -] - -[[package]] -name = "ff" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" -dependencies = [ - "rand_core 0.6.4", - "subtle", -] - -[[package]] -name = "fiat-crypto" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" - -[[package]] -name = "findshlibs" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40b9e59cd0f7e0806cca4be089683ecb6434e602038df21fe6bf6711b2f07f64" -dependencies = [ - "cc", - "lazy_static", - "libc", - "winapi", -] - -[[package]] -name = "fixed-hash" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" -dependencies = [ - "byteorder", - "rand 0.8.5", - "rustc-hex", - "static_assertions", -] - -[[package]] -name = "flate2" -version = "1.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfe33edd8e85a12a67454e37f8c75e730830d83e313556ab9ebf9ee7fbeb3bfb" -dependencies = [ - "crc32fast", - "miniz_oxide 0.8.9", -] - -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - -[[package]] -name = "foldhash" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" - -[[package]] -name = "foldhash" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" - -[[package]] -name = "foreign-types" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" -dependencies = [ - "foreign-types-shared", -] - -[[package]] -name = "foreign-types-shared" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" - -[[package]] -name = "form_urlencoded" -version = "1.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" -dependencies = [ - "percent-encoding", -] - -[[package]] -name = "fragile" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28dd6caf6059519a65843af8fe2a3ae298b14b80179855aeb4adc2c1934ee619" - -[[package]] -name = "fs_extra" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" - -[[package]] -name = "fsevent-sys" -version = "4.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76ee7a02da4d231650c7cea31349b889be2f45ddb3ef3032d2ec8185f6313fd2" -dependencies = [ - "libc", -] - -[[package]] -name = "funty" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" - -[[package]] -name = "futures" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" -dependencies = [ - "futures-channel", - "futures-core", - "futures-executor", - "futures-io", - "futures-sink", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-bounded" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91f328e7fb845fc832912fb6a34f40cf6d1888c92f974d1893a54e97b5ff542e" -dependencies = [ - "futures-timer", - "futures-util", -] - -[[package]] -name = "futures-channel" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" -dependencies = [ - "futures-core", - "futures-sink", -] - -[[package]] -name = "futures-core" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" - -[[package]] -name = "futures-executor" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" -dependencies = [ - "futures-core", - "futures-task", - "futures-util", - "num_cpus", -] - -[[package]] -name = "futures-io" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" - -[[package]] -name = "futures-lite" -version = "2.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad" -dependencies = [ - "futures-core", - "pin-project-lite", -] - -[[package]] -name = "futures-macro" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.111", -] - -[[package]] -name = "futures-rustls" -version = "0.26.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f2f12607f92c69b12ed746fabf9ca4f5c482cba46679c1a75b874ed7c26adb" -dependencies = [ - "futures-io", - "rustls", - "rustls-pki-types", -] - -[[package]] -name = "futures-sink" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" - -[[package]] -name = "futures-task" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" - -[[package]] -name = "futures-timer" -version = "3.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" -dependencies = [ - "gloo-timers", - "send_wrapper 0.4.0", -] - -[[package]] -name = "futures-util" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" -dependencies = [ - "futures-channel", - "futures-core", - "futures-io", - "futures-macro", - "futures-sink", - "futures-task", - "memchr", - "pin-project-lite", - "pin-utils", - "slab", -] - -[[package]] -name = "futures-utils-wasm" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42012b0f064e01aa58b545fe3727f90f7dd4020f4a3ea735b50344965f5a57e9" - -[[package]] -name = "generic-array" -version = "0.14.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" -dependencies = [ - "typenum", - "version_check", - "zeroize", -] - -[[package]] -name = "getrandom" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" -dependencies = [ - "cfg-if", - "js-sys", - "libc", - "wasi", - "wasm-bindgen", -] - -[[package]] -name = "getrandom" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" -dependencies = [ - "cfg-if", - "js-sys", - "libc", - "r-efi", - "wasip2", - "wasm-bindgen", -] - -[[package]] -name = "ghash" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0d8a4362ccb29cb0b265253fb0a2728f592895ee6854fd9bc13f2ffda266ff1" -dependencies = [ - "opaque-debug", - "polyval", -] - -[[package]] -name = "gimli" -version = "0.32.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7" - -[[package]] -name = "git2" -version = "0.20.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2deb07a133b1520dc1a5690e9bd08950108873d7ed5de38dcc74d3b5ebffa110" -dependencies = [ - "bitflags 2.10.0", - "libc", - "libgit2-sys", - "log", - "url", -] - -[[package]] -name = "glob" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" - -[[package]] -name = "gloo-net" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06f627b1a58ca3d42b45d6104bf1e1a03799df472df00988b6ba21accc10580" -dependencies = [ - "futures-channel", - "futures-core", - "futures-sink", - "gloo-utils", - "http", - "js-sys", - "pin-project", - "serde", - "serde_json", - "thiserror 1.0.69", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", -] - -[[package]] -name = "gloo-timers" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b995a66bb87bebce9a0f4a95aed01daca4872c050bfcb21653361c03bc35e5c" -dependencies = [ - "futures-channel", - "futures-core", - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "gloo-utils" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b5555354113b18c547c1d3a98fbf7fb32a9ff4f6fa112ce823a21641a0ba3aa" -dependencies = [ - "js-sys", - "serde", - "serde_json", - "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "gmp-mpfr-sys" -version = "1.6.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60f8970a75c006bb2f8ae79c6768a116dd215fa8346a87aed99bf9d82ca43394" -dependencies = [ - "libc", - "windows-sys 0.60.2", -] - -[[package]] -name = "group" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" -dependencies = [ - "ff", - "rand_core 0.6.4", - "subtle", -] - -[[package]] -name = "h2" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3c0b69cfcb4e1b9f1bf2f53f95f766e4661169728ec61cd3fe5a0166f2d1386" -dependencies = [ - "atomic-waker", - "bytes", - "fnv", - "futures-core", - "futures-sink", - "http", - "indexmap 2.12.1", - "slab", - "tokio", - "tokio-util", - "tracing", -] - -[[package]] -name = "half" -version = "2.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b" -dependencies = [ - "cfg-if", - "crunchy", - "zerocopy", -] - -[[package]] -name = "hashbrown" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" - -[[package]] -name = "hashbrown" -version = "0.14.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" -dependencies = [ - "ahash", -] - -[[package]] -name = "hashbrown" -version = "0.15.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" -dependencies = [ - "allocator-api2", - "equivalent", - "foldhash 0.1.5", -] - -[[package]] -name = "hashbrown" -version = "0.16.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" -dependencies = [ - "allocator-api2", - "equivalent", - "foldhash 0.2.0", - "serde", - "serde_core", -] - -[[package]] -name = "hashlink" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ba4ff7128dee98c7dc9794b6a411377e1404dba1c97deb8d1a55297bd25d8af" -dependencies = [ - "hashbrown 0.14.5", -] - -[[package]] -name = "headers" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3314d5adb5d94bcdf56771f2e50dbbc80bb4bdf88967526706205ac9eff24eb" -dependencies = [ - "base64", - "bytes", - "headers-core", - "http", - "httpdate", - "mime", - "sha1", -] - -[[package]] -name = "headers-core" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54b4a22553d4242c49fddb9ba998a99962b5cc6f22cb5a3482bec22522403ce4" -dependencies = [ - "http", -] - -[[package]] -name = "heck" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" - -[[package]] -name = "hermit-abi" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" - -[[package]] -name = "hex" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" - -[[package]] -name = "hex-conservative" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fda06d18ac606267c40c04e41b9947729bf8b9efe74bd4e82b61a5f26a510b9f" -dependencies = [ - "arrayvec", -] - -[[package]] -name = "hex_fmt" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b07f60793ff0a4d9cef0f18e63b5357e06209987153a64648c972c1e5aff336f" - -[[package]] -name = "hickory-proto" -version = "0.25.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8a6fe56c0038198998a6f217ca4e7ef3a5e51f46163bd6dd60b5c71ca6c6502" -dependencies = [ - "async-trait", - "cfg-if", - "data-encoding", - "enum-as-inner", - "futures-channel", - "futures-io", - "futures-util", - "idna", - "ipnet", - "once_cell", - "rand 0.9.2", - "ring", - "socket2 0.5.10", - "thiserror 2.0.17", - "tinyvec", - "tokio", - "tracing", - "url", -] - -[[package]] -name = "hickory-resolver" -version = "0.25.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc62a9a99b0bfb44d2ab95a7208ac952d31060efc16241c87eaf36406fecf87a" -dependencies = [ - "cfg-if", - "futures-util", - "hickory-proto", - "ipconfig", - "moka", - "once_cell", - "parking_lot", - "rand 0.9.2", - "resolv-conf", - "smallvec", - "thiserror 2.0.17", - "tokio", - "tracing", -] - -[[package]] -name = "hkdf" -version = "0.12.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" -dependencies = [ - "hmac", -] - -[[package]] -name = "hmac" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" -dependencies = [ - "digest 0.10.7", -] - -[[package]] -name = "home" -version = "0.5.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc627f471c528ff0c4a49e1d5e60450c8f6461dd6d10ba9dcd3a61d3dff7728d" -dependencies = [ - "windows-sys 0.61.2", -] - -[[package]] -name = "http" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" -dependencies = [ - "bytes", - "itoa", -] - -[[package]] -name = "http-body" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" -dependencies = [ - "bytes", - "http", -] - -[[package]] -name = "http-body-util" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" -dependencies = [ - "bytes", - "futures-core", - "http", - "http-body", - "pin-project-lite", -] - -[[package]] -name = "httparse" -version = "1.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" - -[[package]] -name = "httpdate" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" - -[[package]] -name = "httpmock" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "511f510e9b1888d67f10bab4397f8b019d2a9b249a2c10acbce2d705b1b32e26" -dependencies = [ - "assert-json-diff", - "async-object-pool", - "async-trait", - "base64", - "bytes", - "crossbeam-utils", - "form_urlencoded", - "futures-timer", - "futures-util", - "headers", - "http", - "http-body-util", - "hyper", - "hyper-util", - "path-tree", - "regex", - "serde", - "serde_json", - "serde_regex", - "similar", - "stringmetrics", - "tabwriter", - "thiserror 2.0.17", - "tokio", - "tracing", - "url", -] - -[[package]] -name = "hyper" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ab2d4f250c3d7b1c9fcdff1cece94ea4e2dfbec68614f7b87cb205f24ca9d11" -dependencies = [ - "atomic-waker", - "bytes", - "futures-channel", - "futures-core", - "h2", - "http", - "http-body", - "httparse", - "httpdate", - "itoa", - "pin-project-lite", - "pin-utils", - "smallvec", - "tokio", - "want", -] - -[[package]] -name = "hyper-rustls" -version = "0.27.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" -dependencies = [ - "http", - "hyper", - "hyper-util", - "log", - "rustls", - "rustls-native-certs", - "rustls-pki-types", - "tokio", - "tokio-rustls", - "tower-service", - "webpki-roots 1.0.4", -] - -[[package]] -name = "hyper-timeout" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0" -dependencies = [ - "hyper", - "hyper-util", - "pin-project-lite", - "tokio", - "tower-service", -] - -[[package]] -name = "hyper-tls" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" -dependencies = [ - "bytes", - "http-body-util", - "hyper", - "hyper-util", - "native-tls", - "tokio", - "tokio-native-tls", - "tower-service", -] - -[[package]] -name = "hyper-util" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "727805d60e7938b76b826a6ef209eb70eaa1812794f9424d4a4e2d740662df5f" -dependencies = [ - "base64", - "bytes", - "futures-channel", - "futures-core", - "futures-util", - "http", - "http-body", - "hyper", - "ipnet", - "libc", - "percent-encoding", - "pin-project-lite", - "socket2 0.6.1", - "system-configuration", - "tokio", - "tower-layer", - "tower-service", - "tracing", - "windows-registry", -] - -[[package]] -name = "iana-time-zone" -version = "0.1.64" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb" -dependencies = [ - "android_system_properties", - "core-foundation-sys", - "iana-time-zone-haiku", - "js-sys", - "log", - "wasm-bindgen", - "windows-core 0.62.2", -] - -[[package]] -name = "iana-time-zone-haiku" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" -dependencies = [ - "cc", -] - -[[package]] -name = "icu_collections" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" -dependencies = [ - "displaydoc", - "potential_utf", - "yoke", - "zerofrom", - "zerovec", -] - -[[package]] -name = "icu_locale_core" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" -dependencies = [ - "displaydoc", - "litemap", - "tinystr", - "writeable", - "zerovec", -] - -[[package]] -name = "icu_normalizer" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" -dependencies = [ - "icu_collections", - "icu_normalizer_data", - "icu_properties", - "icu_provider", - "smallvec", - "zerovec", -] - -[[package]] -name = "icu_normalizer_data" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" - -[[package]] -name = "icu_properties" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e93fcd3157766c0c8da2f8cff6ce651a31f0810eaa1c51ec363ef790bbb5fb99" -dependencies = [ - "icu_collections", - "icu_locale_core", - "icu_properties_data", - "icu_provider", - "zerotrie", - "zerovec", -] - -[[package]] -name = "icu_properties_data" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02845b3647bb045f1100ecd6480ff52f34c35f82d9880e029d329c21d1054899" - -[[package]] -name = "icu_provider" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" -dependencies = [ - "displaydoc", - "icu_locale_core", - "writeable", - "yoke", - "zerofrom", - "zerotrie", - "zerovec", -] - -[[package]] -name = "ident_case" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" - -[[package]] -name = "idna" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" -dependencies = [ - "idna_adapter", - "smallvec", - "utf8_iter", -] - -[[package]] -name = "idna_adapter" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" -dependencies = [ - "icu_normalizer", - "icu_properties", -] - -[[package]] -name = "if-addrs" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cabb0019d51a643781ff15c9c8a3e5dedc365c47211270f4e8f82812fedd8f0a" -dependencies = [ - "libc", - "windows-sys 0.48.0", -] - -[[package]] -name = "if-watch" -version = "3.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdf9d64cfcf380606e64f9a0bcf493616b65331199f984151a6fa11a7b3cde38" -dependencies = [ - "async-io", - "core-foundation 0.9.4", - "fnv", - "futures", - "if-addrs", - "ipnet", - "log", - "netlink-packet-core", - "netlink-packet-route", - "netlink-proto", - "netlink-sys", - "rtnetlink", - "system-configuration", - "tokio", - "windows 0.53.0", -] - -[[package]] -name = "igd-next" -version = "0.16.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "516893339c97f6011282d5825ac94fc1c7aad5cad26bdc2d0cee068c0bf97f97" -dependencies = [ - "async-trait", - "attohttpc", - "bytes", - "futures", - "http", - "http-body-util", - "hyper", - "hyper-util", - "log", - "rand 0.9.2", - "tokio", - "url", - "xmltree", -] - -[[package]] -name = "impl-codec" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" -dependencies = [ - "parity-scale-codec", -] - -[[package]] -name = "impl-trait-for-tuples" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.111", -] - -[[package]] -name = "indenter" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "964de6e86d545b246d84badc0fef527924ace5134f30641c203ef52ba83f58d5" - -[[package]] -name = "indexmap" -version = "1.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -dependencies = [ - "autocfg", - "hashbrown 0.12.3", - "serde", -] - -[[package]] -name = "indexmap" -version = "2.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ad4bb2b565bca0645f4d68c5c9af97fba094e9791da685bf83cb5f3ce74acf2" -dependencies = [ - "arbitrary", - "equivalent", - "hashbrown 0.16.1", - "serde", - "serde_core", -] - -[[package]] -name = "inferno" -version = "0.11.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "232929e1d75fe899576a3d5c7416ad0d88dbfbb3c3d6aa00873a7408a50ddb88" -dependencies = [ - "ahash", - "indexmap 2.12.1", - "is-terminal", - "itoa", - "log", - "num-format", - "once_cell", - "quick-xml", - "rgb", - "str_stack", -] - -[[package]] -name = "inotify" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f37dccff2791ab604f9babef0ba14fbe0be30bd368dc541e2b08d07c8aa908f3" -dependencies = [ - "bitflags 2.10.0", - "inotify-sys", - "libc", -] - -[[package]] -name = "inotify-sys" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e05c02b5e89bff3b946cedeca278abc628fe811e604f027c45a8aa3cf793d0eb" -dependencies = [ - "libc", -] - -[[package]] -name = "inout" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" -dependencies = [ - "generic-array", -] - -[[package]] -name = "instant" -version = "0.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "interprocess" -version = "2.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d941b405bd2322993887859a8ee6ac9134945a24ec5ec763a8a962fc64dfec2d" -dependencies = [ - "doctest-file", - "futures-core", - "libc", - "recvmsg", - "tokio", - "widestring", - "windows-sys 0.52.0", -] - -[[package]] -name = "ipconfig" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b58db92f96b720de98181bbbe63c831e87005ab460c1bf306eb2622b4707997f" -dependencies = [ - "socket2 0.5.10", - "widestring", - "windows-sys 0.48.0", - "winreg", -] - -[[package]] -name = "ipnet" -version = "2.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" -dependencies = [ - "serde", -] - -[[package]] -name = "iri-string" -version = "0.7.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f867b9d1d896b67beb18518eda36fdb77a32ea590de864f1325b294a6d14397" -dependencies = [ - "memchr", - "serde", -] - -[[package]] -name = "is-terminal" -version = "0.4.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3640c1c38b8e4e43584d8df18be5fc6b0aa314ce6ebf51b53313d4306cca8e46" -dependencies = [ - "hermit-abi", - "libc", - "windows-sys 0.61.2", -] - -[[package]] -name = "is_terminal_polyfill" -version = "1.70.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" - -[[package]] -name = "itertools" -version = "0.10.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" -dependencies = [ - "either", -] - -[[package]] -name = "itertools" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" -dependencies = [ - "either", -] - -[[package]] -name = "itertools" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" -dependencies = [ - "either", -] - -[[package]] -name = "itertools" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" -dependencies = [ - "either", -] - -[[package]] -name = "itoa" -version = "1.0.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" - -[[package]] -name = "jni" -version = "0.21.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" -dependencies = [ - "cesu8", - "cfg-if", - "combine", - "jni-sys", - "log", - "thiserror 1.0.69", - "walkdir", - "windows-sys 0.45.0", -] - -[[package]] -name = "jni-sys" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" - -[[package]] -name = "jobserver" -version = "0.1.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" -dependencies = [ - "getrandom 0.3.4", - "libc", -] - -[[package]] -name = "js-sys" -version = "0.3.82" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b011eec8cc36da2aab2d5cff675ec18454fad408585853910a202391cf9f8e65" -dependencies = [ - "once_cell", - "wasm-bindgen", -] - -[[package]] -name = "jsonrpsee" -version = "0.26.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f3f48dc3e6b8bd21e15436c1ddd0bc22a6a54e8ec46fedd6adf3425f396ec6a" -dependencies = [ - "jsonrpsee-client-transport", - "jsonrpsee-core", - "jsonrpsee-http-client", - "jsonrpsee-proc-macros", - "jsonrpsee-server", - "jsonrpsee-types", - "jsonrpsee-wasm-client", - "jsonrpsee-ws-client", - "tokio", - "tracing", -] - -[[package]] -name = "jsonrpsee-client-transport" -version = "0.26.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf36eb27f8e13fa93dcb50ccb44c417e25b818cfa1a481b5470cd07b19c60b98" -dependencies = [ - "base64", - "futures-channel", - "futures-util", - "gloo-net", - "http", - "jsonrpsee-core", - "pin-project", - "rustls", - "rustls-pki-types", - "rustls-platform-verifier", - "soketto", - "thiserror 2.0.17", - "tokio", - "tokio-rustls", - "tokio-util", - "tracing", - "url", -] - -[[package]] -name = "jsonrpsee-core" -version = "0.26.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "316c96719901f05d1137f19ba598b5fe9c9bc39f4335f67f6be8613921946480" -dependencies = [ - "async-trait", - "bytes", - "futures-timer", - "futures-util", - "http", - "http-body", - "http-body-util", - "jsonrpsee-types", - "parking_lot", - "pin-project", - "rand 0.9.2", - "rustc-hash 2.1.1", - "serde", - "serde_json", - "thiserror 2.0.17", - "tokio", - "tokio-stream", - "tower 0.5.3", - "tracing", - "wasm-bindgen-futures", -] - -[[package]] -name = "jsonrpsee-http-client" -version = "0.26.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "790bedefcec85321e007ff3af84b4e417540d5c87b3c9779b9e247d1bcc3dab8" -dependencies = [ - "base64", - "http-body", - "hyper", - "hyper-rustls", - "hyper-util", - "jsonrpsee-core", - "jsonrpsee-types", - "rustls", - "rustls-platform-verifier", - "serde", - "serde_json", - "thiserror 2.0.17", - "tokio", - "tower 0.5.3", - "url", -] - -[[package]] -name = "jsonrpsee-proc-macros" -version = "0.26.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2da3f8ab5ce1bb124b6d082e62dffe997578ceaf0aeb9f3174a214589dc00f07" -dependencies = [ - "heck", - "proc-macro-crate", - "proc-macro2", - "quote", - "syn 2.0.111", -] - -[[package]] -name = "jsonrpsee-server" -version = "0.26.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c51b7c290bb68ce3af2d029648148403863b982f138484a73f02a9dd52dbd7f" -dependencies = [ - "futures-util", - "http", - "http-body", - "http-body-util", - "hyper", - "hyper-util", - "jsonrpsee-core", - "jsonrpsee-types", - "pin-project", - "route-recognizer", - "serde", - "serde_json", - "soketto", - "thiserror 2.0.17", - "tokio", - "tokio-stream", - "tokio-util", - "tower 0.5.3", - "tracing", -] - -[[package]] -name = "jsonrpsee-types" -version = "0.26.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc88ff4688e43cc3fa9883a8a95c6fa27aa2e76c96e610b737b6554d650d7fd5" -dependencies = [ - "http", - "serde", - "serde_json", - "thiserror 2.0.17", -] - -[[package]] -name = "jsonrpsee-wasm-client" -version = "0.26.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7902885de4779f711a95d82c8da2d7e5f9f3a7c7cfa44d51c067fd1c29d72a3c" -dependencies = [ - "jsonrpsee-client-transport", - "jsonrpsee-core", - "jsonrpsee-types", - "tower 0.5.3", -] - -[[package]] -name = "jsonrpsee-ws-client" -version = "0.26.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b6fceceeb05301cc4c065ab3bd2fa990d41ff4eb44e4ca1b30fa99c057c3e79" -dependencies = [ - "http", - "jsonrpsee-client-transport", - "jsonrpsee-core", - "jsonrpsee-types", - "tower 0.5.3", - "url", -] - -[[package]] -name = "jsonwebtoken" -version = "9.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a87cc7a48537badeae96744432de36f4be2b4a34a05a5ef32e9dd8a1c169dde" -dependencies = [ - "base64", - "js-sys", - "pem", - "ring", - "serde", - "serde_json", - "simple_asn1", -] - -[[package]] -name = "k256" -version = "0.13.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" -dependencies = [ - "cfg-if", - "ecdsa", - "elliptic-curve", - "once_cell", - "serdect", - "sha2", - "signature", -] - -[[package]] -name = "keccak" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" -dependencies = [ - "cpufeatures", -] - -[[package]] -name = "keccak-asm" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "505d1856a39b200489082f90d897c3f07c455563880bc5952e38eabf731c83b6" -dependencies = [ - "digest 0.10.7", - "sha3-asm", -] - -[[package]] -name = "kona-cli" -version = "0.3.2" -dependencies = [ - "alloy-chains", - "alloy-primitives", - "clap", - "kona-genesis", - "kona-registry", - "libc", - "libp2p", - "metrics-exporter-prometheus 0.18.1", - "metrics-process", - "rstest", - "serde", - "thiserror 2.0.17", - "tracing", - "tracing-appender", - "tracing-subscriber 0.3.22", -] - -[[package]] -name = "kona-client" -version = "1.0.2" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-evm", - "alloy-op-evm", - "alloy-primitives", - "alloy-rlp", - "alloy-rpc-types-engine", - "async-trait", - "cfg-if", - "kona-derive", - "kona-driver", - "kona-executor", - "kona-genesis", - "kona-interop", - "kona-mpt", - "kona-preimage", - "kona-proof", - "kona-proof-interop", - "kona-protocol", - "kona-registry", - "kona-std-fpvm", - "kona-std-fpvm-proc", - "lru 0.16.3", - "op-alloy-consensus 0.23.1", - "op-alloy-rpc-types-engine", - "op-revm", - "revm", - "serde", - "serde_json", - "sha2", - "spin 0.10.0", - "thiserror 2.0.17", - "tokio", - "tracing", -] - -[[package]] -name = "kona-comp" -version = "0.4.5" -dependencies = [ - "alloc-no-stdlib", - "alloy-consensus", - "alloy-eips", - "alloy-primitives", - "alloy-rlp", - "alloy-rpc-types-engine", - "alloy-serde", - "alloy-sol-types", - "arbitrary", - "async-trait", - "brotli", - "kona-genesis", - "kona-protocol", - "miniz_oxide 0.9.0", - "op-alloy-consensus 0.23.1", - "proptest", - "rand 0.9.2", - "serde", - "serde_json", - "spin 0.10.0", - "thiserror 2.0.17", - "tracing", - "tracing-subscriber 0.3.22", - "unsigned-varint 0.8.0", -] - -[[package]] -name = "kona-derive" -version = "0.4.5" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-primitives", - "alloy-rlp", - "alloy-rpc-types-engine", - "async-trait", - "kona-genesis", - "kona-hardforks", - "kona-macros", - "kona-protocol", - "kona-registry", - "metrics", - "op-alloy-consensus 0.23.1", - "op-alloy-rpc-types-engine", - "proptest", - "serde", - "serde_json", - "spin 0.10.0", - "thiserror 2.0.17", - "tokio", - "tracing", - "tracing-subscriber 0.3.22", -] - -[[package]] -name = "kona-disc" -version = "0.1.2" -dependencies = [ - "alloy-rlp", - "backon", - "derive_more", - "discv5", - "kona-cli", - "kona-genesis", - "kona-macros", - "kona-peers", - "libp2p", - "metrics", - "rand 0.9.2", - "serde_json", - "tempfile", - "thiserror 2.0.17", - "tokio", - "tracing", -] - -[[package]] -name = "kona-driver" -version = "0.4.0" -dependencies = [ - "alloy-consensus", - "alloy-evm", - "alloy-primitives", - "alloy-rlp", - "async-trait", - "kona-derive", - "kona-executor", - "kona-genesis", - "kona-protocol", - "op-alloy-consensus 0.23.1", - "op-alloy-rpc-types-engine", - "spin 0.10.0", - "thiserror 2.0.17", - "tracing", -] - -[[package]] -name = "kona-engine" -version = "0.1.2" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-json-rpc", - "alloy-network", - "alloy-primitives", - "alloy-provider", - "alloy-rpc-client", - "alloy-rpc-types-engine", - "alloy-rpc-types-eth", - "alloy-transport", - "alloy-transport-http", - "arbitrary", - "async-trait", - "derive_more", - "http", - "http-body-util", - "jsonrpsee-types", - "kona-genesis", - "kona-macros", - "kona-protocol", - "kona-registry", - "metrics", - "metrics-exporter-prometheus 0.18.1", - "op-alloy-consensus 0.23.1", - "op-alloy-network", - "op-alloy-provider", - "op-alloy-rpc-types", - "op-alloy-rpc-types-engine", - "parking_lot", - "rand 0.9.2", - "rollup-boost", - "rollup-boost-types", - "rstest", - "serde", - "serde_json", - "thiserror 2.0.17", - "tokio", - "tower 0.5.3", - "tracing", - "url", -] - -[[package]] -name = "kona-executor" -version = "0.4.0" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-evm", - "alloy-op-evm", - "alloy-op-hardforks", - "alloy-primitives", - "alloy-provider", - "alloy-rlp", - "alloy-rpc-client", - "alloy-rpc-types-engine", - "alloy-transport", - "alloy-transport-http", - "alloy-trie", - "kona-genesis", - "kona-mpt", - "kona-protocol", - "kona-registry", - "op-alloy-consensus 0.23.1", - "op-alloy-rpc-types-engine", - "op-revm", - "rand 0.9.2", - "revm", - "rocksdb", - "rstest", - "serde", - "serde_json", - "tempfile", - "thiserror 2.0.17", - "tokio", - "tracing", -] - -[[package]] -name = "kona-genesis" -version = "0.4.5" -dependencies = [ - "alloy-chains", - "alloy-consensus", - "alloy-eips", - "alloy-genesis", - "alloy-hardforks", - "alloy-op-hardforks", - "alloy-primitives", - "alloy-sol-types", - "arbitrary", - "derive_more", - "op-revm", - "rand 0.9.2", - "serde", - "serde_json", - "serde_repr", - "tabled", - "thiserror 2.0.17", - "toml", -] - -[[package]] -name = "kona-gossip" -version = "0.1.2" -dependencies = [ - "alloy-chains", - "alloy-consensus", - "alloy-eips", - "alloy-primitives", - "alloy-rlp", - "alloy-rpc-types-engine", - "arbitrary", - "derive_more", - "discv5", - "futures", - "ipnet", - "kona-disc", - "kona-genesis", - "kona-macros", - "kona-peers", - "lazy_static", - "libp2p", - "libp2p-identity", - "libp2p-stream", - "metrics", - "multihash", - "op-alloy-consensus 0.23.1", - "op-alloy-rpc-types-engine", - "openssl", - "rand 0.9.2", - "serde", - "serde_json", - "serde_repr", - "snap", - "tempfile", - "thiserror 2.0.17", - "tokio", - "tracing", -] - -[[package]] -name = "kona-hardforks" -version = "0.4.5" -dependencies = [ - "alloy-eips", - "alloy-primitives", - "kona-protocol", - "op-alloy-consensus 0.23.1", - "op-revm", - "revm", -] - -[[package]] -name = "kona-host" -version = "1.0.2" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-op-evm", - "alloy-primitives", - "alloy-provider", - "alloy-rlp", - "alloy-rpc-client", - "alloy-rpc-types", - "alloy-rpc-types-beacon", - "alloy-serde", - "alloy-transport", - "alloy-transport-http", - "anyhow", - "ark-ff 0.5.0", - "async-trait", - "clap", - "kona-cli", - "kona-client", - "kona-derive", - "kona-driver", - "kona-executor", - "kona-genesis", - "kona-mpt", - "kona-preimage", - "kona-proof", - "kona-proof-interop", - "kona-protocol", - "kona-providers-alloy", - "kona-registry", - "kona-std-fpvm", - "op-alloy-network", - "op-alloy-rpc-types-engine", - "proptest", - "reqwest", - "revm", - "rocksdb", - "serde", - "serde_json", - "thiserror 2.0.17", - "tokio", - "tracing", - "tracing-subscriber 0.3.22", -] - -[[package]] -name = "kona-interop" -version = "0.4.5" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-primitives", - "alloy-rlp", - "alloy-serde", - "alloy-sol-types", - "arbitrary", - "async-trait", - "derive_more", - "kona-genesis", - "kona-protocol", - "kona-registry", - "op-alloy-consensus 0.23.1", - "rand 0.9.2", - "serde", - "serde_json", - "thiserror 2.0.17", - "tokio", - "tracing", -] - -[[package]] -name = "kona-macros" -version = "0.1.2" - -[[package]] -name = "kona-mpt" -version = "0.3.0" -dependencies = [ - "alloy-consensus", - "alloy-primitives", - "alloy-provider", - "alloy-rlp", - "alloy-rpc-types", - "alloy-transport-http", - "alloy-trie", - "criterion", - "op-alloy-rpc-types-engine", - "pprof", - "proptest", - "rand 0.9.2", - "reqwest", - "serde", - "thiserror 2.0.17", - "tokio", -] - -[[package]] -name = "kona-node" -version = "1.0.0-rc.1" -dependencies = [ - "alloy-chains", - "alloy-genesis", - "alloy-primitives", - "alloy-provider", - "alloy-rpc-types-engine", - "alloy-signer", - "alloy-signer-local", - "alloy-transport", - "alloy-transport-http", - "anyhow", - "backon", - "clap", - "derive_more", - "dirs", - "discv5", - "futures", - "http", - "jsonrpsee", - "kona-cli", - "kona-derive", - "kona-disc", - "kona-engine", - "kona-genesis", - "kona-gossip", - "kona-node-service", - "kona-peers", - "kona-protocol", - "kona-providers-alloy", - "kona-registry", - "kona-rpc", - "kona-sources", - "libp2p", - "metrics", - "op-alloy-network", - "op-alloy-provider", - "op-alloy-rpc-types-engine", - "reqwest", - "rollup-boost", - "rstest", - "serde_json", - "strum", - "tabled", - "tempfile", - "thiserror 2.0.17", - "tokio", - "tokio-stream", - "tokio-util", - "tracing", - "tracing-subscriber 0.3.22", - "url", - "vergen", - "vergen-git2", -] - -[[package]] -name = "kona-node-service" -version = "0.1.3" -dependencies = [ - "alloy-chains", - "alloy-consensus", - "alloy-eips", - "alloy-primitives", - "alloy-provider", - "alloy-rpc-client", - "alloy-rpc-types-engine", - "alloy-rpc-types-eth", - "alloy-signer", - "alloy-signer-local", - "alloy-transport", - "alloy-transport-http", - "anyhow", - "arbitrary", - "async-stream", - "async-trait", - "backon", - "derive_more", - "discv5", - "futures", - "http", - "http-body-util", - "jsonrpsee", - "kona-derive", - "kona-disc", - "kona-engine", - "kona-genesis", - "kona-gossip", - "kona-macros", - "kona-peers", - "kona-protocol", - "kona-providers-alloy", - "kona-rpc", - "kona-sources", - "libp2p", - "libp2p-stream", - "metrics", - "mockall", - "op-alloy-consensus 0.23.1", - "op-alloy-network", - "op-alloy-provider", - "op-alloy-rpc-types-engine", - "rand 0.9.2", - "rollup-boost", - "rstest", - "strum", - "thiserror 2.0.17", - "tokio", - "tokio-stream", - "tokio-util", - "tower 0.5.3", - "tracing", - "url", -] - -[[package]] -name = "kona-peers" -version = "0.1.2" -dependencies = [ - "alloy-consensus", - "alloy-primitives", - "alloy-rlp", - "arbitrary", - "arbtest", - "derive_more", - "dirs", - "discv5", - "kona-genesis", - "kona-registry", - "lazy_static", - "libp2p", - "libp2p-identity", - "multihash", - "secp256k1 0.31.1", - "serde", - "serde_json", - "tempfile", - "thiserror 2.0.17", - "tracing", - "unsigned-varint 0.8.0", - "url", -] - -[[package]] -name = "kona-preimage" -version = "0.3.0" -dependencies = [ - "alloy-primitives", - "async-channel", - "async-trait", - "rkyv", - "serde", - "thiserror 2.0.17", - "tokio", - "tracing", -] - -[[package]] -name = "kona-proof" -version = "0.3.0" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-evm", - "alloy-op-evm", - "alloy-primitives", - "alloy-rlp", - "alloy-trie", - "ark-bls12-381", - "ark-ff 0.5.0", - "async-trait", - "c-kzg", - "kona-derive", - "kona-driver", - "kona-executor", - "kona-genesis", - "kona-mpt", - "kona-preimage", - "kona-protocol", - "kona-registry", - "lazy_static", - "lru 0.16.3", - "op-alloy-consensus 0.23.1", - "op-alloy-rpc-types-engine", - "op-revm", - "rand 0.9.2", - "rayon", - "rstest", - "serde", - "serde_json", - "spin 0.10.0", - "thiserror 2.0.17", - "tokio", - "tracing", -] - -[[package]] -name = "kona-proof-interop" -version = "0.2.0" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-evm", - "alloy-op-evm", - "alloy-primitives", - "alloy-rlp", - "alloy-rpc-types-engine", - "arbitrary", - "async-trait", - "kona-executor", - "kona-genesis", - "kona-interop", - "kona-mpt", - "kona-preimage", - "kona-proof", - "kona-protocol", - "kona-registry", - "op-alloy-consensus 0.23.1", - "op-alloy-rpc-types-engine", - "op-revm", - "rand 0.9.2", - "revm", - "serde", - "serde_json", - "spin 0.10.0", - "thiserror 2.0.17", - "tracing", -] - -[[package]] -name = "kona-protocol" -version = "0.4.5" -dependencies = [ - "alloc-no-stdlib", - "alloy-consensus", - "alloy-eips", - "alloy-hardforks", - "alloy-primitives", - "alloy-rlp", - "alloy-rpc-types-engine", - "alloy-rpc-types-eth", - "alloy-serde", - "alloy-sol-types", - "ambassador", - "arbitrary", - "async-trait", - "brotli", - "derive_more", - "kona-genesis", - "kona-registry", - "miniz_oxide 0.9.0", - "op-alloy-consensus 0.23.1", - "op-alloy-rpc-types", - "op-alloy-rpc-types-engine", - "proptest", - "rand 0.9.2", - "rstest", - "serde", - "serde_json", - "spin 0.10.0", - "thiserror 2.0.17", - "tokio", - "tracing", - "tracing-subscriber 0.3.22", - "unsigned-varint 0.8.0", -] - -[[package]] -name = "kona-providers-alloy" -version = "0.3.3" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-primitives", - "alloy-provider", - "alloy-rpc-client", - "alloy-rpc-types-beacon", - "alloy-rpc-types-engine", - "alloy-serde", - "alloy-transport", - "alloy-transport-http", - "async-trait", - "c-kzg", - "http-body-util", - "httpmock", - "kona-derive", - "kona-genesis", - "kona-macros", - "kona-protocol", - "lru 0.16.3", - "metrics", - "op-alloy-consensus 0.23.1", - "op-alloy-network", - "reqwest", - "serde", - "serde_json", - "thiserror 2.0.17", - "tokio", - "tower 0.5.3", -] - -[[package]] -name = "kona-providers-local" -version = "0.1.0" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-primitives", - "async-trait", - "kona-derive", - "kona-genesis", - "kona-macros", - "kona-protocol", - "lru 0.16.3", - "metrics", - "op-alloy-consensus 0.23.1", - "rstest", - "thiserror 2.0.17", - "tokio", -] - -[[package]] -name = "kona-registry" -version = "0.4.5" -dependencies = [ - "alloy-chains", - "alloy-eips", - "alloy-genesis", - "alloy-hardforks", - "alloy-op-hardforks", - "alloy-primitives", - "kona-genesis", - "lazy_static", - "serde", - "serde_json", - "tabled", - "toml", -] - -[[package]] -name = "kona-rpc" -version = "0.3.2" -dependencies = [ - "alloy-eips", - "alloy-primitives", - "alloy-rpc-client", - "alloy-rpc-types-engine", - "async-trait", - "backon", - "derive_more", - "getrandom 0.3.4", - "ipnet", - "jsonrpsee", - "kona-engine", - "kona-genesis", - "kona-gossip", - "kona-macros", - "kona-protocol", - "libp2p", - "metrics", - "op-alloy-consensus 0.23.1", - "op-alloy-rpc-jsonrpsee", - "op-alloy-rpc-types", - "op-alloy-rpc-types-engine", - "rollup-boost", - "serde", - "serde_json", - "thiserror 2.0.17", - "tokio", - "tracing", -] - -[[package]] -name = "kona-serde" -version = "0.2.2" -dependencies = [ - "alloy-primitives", - "serde", - "serde_json", - "toml", -] - -[[package]] -name = "kona-sources" -version = "0.1.2" -dependencies = [ - "alloy-primitives", - "alloy-rpc-client", - "alloy-signer", - "alloy-signer-local", - "alloy-transport", - "alloy-transport-http", - "derive_more", - "notify", - "op-alloy-rpc-types-engine", - "reqwest", - "rustls", - "serde", - "serde_json", - "thiserror 2.0.17", - "tokio", - "tracing", - "url", -] - -[[package]] -name = "kona-std-fpvm" -version = "0.2.0" -dependencies = [ - "async-trait", - "buddy_system_allocator", - "cfg-if", - "kona-preimage", - "thiserror 2.0.17", - "tracing", -] - -[[package]] -name = "kona-std-fpvm-proc" -version = "0.2.0" -dependencies = [ - "cfg-if", - "kona-std-fpvm", - "proc-macro2", - "quote", - "syn 2.0.111", -] - -[[package]] -name = "kona-supervisor" -version = "0.1.0" -dependencies = [ - "alloy-network", - "alloy-provider", - "alloy-rpc-types-engine", - "anyhow", - "clap", - "glob", - "kona-cli", - "kona-genesis", - "kona-interop", - "kona-protocol", - "kona-registry", - "kona-supervisor-core", - "kona-supervisor-service", - "metrics", - "reqwest", - "serde", - "serde_json", - "tempfile", - "tokio", - "tracing", - "tracing-subscriber 0.3.22", - "vergen", - "vergen-git2", -] - -[[package]] -name = "kona-supervisor-core" -version = "0.1.0" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-network", - "alloy-primitives", - "alloy-provider", - "alloy-rpc-client", - "alloy-rpc-types-engine", - "alloy-rpc-types-eth", - "alloy-transport", - "async-trait", - "auto_impl", - "derive_more", - "futures", - "jsonrpsee", - "kona-genesis", - "kona-interop", - "kona-protocol", - "kona-supervisor-metrics", - "kona-supervisor-rpc", - "kona-supervisor-storage", - "kona-supervisor-types", - "metrics", - "mockall", - "op-alloy-consensus 0.23.1", - "op-alloy-rpc-types", - "reqwest", - "serde", - "serde_json", - "tempfile", - "thiserror 2.0.17", - "tokio", - "tokio-util", - "tracing", -] - -[[package]] -name = "kona-supervisor-metrics" -version = "0.1.0" - -[[package]] -name = "kona-supervisor-rpc" -version = "0.1.1" -dependencies = [ - "alloy-eips", - "alloy-primitives", - "alloy-rpc-client", - "alloy-rpc-types-engine", - "alloy-serde", - "async-trait", - "derive_more", - "jsonrpsee", - "kona-interop", - "kona-protocol", - "kona-supervisor-types", - "op-alloy-consensus 0.23.1", - "serde", - "serde_json", - "thiserror 2.0.17", - "tokio", -] - -[[package]] -name = "kona-supervisor-service" -version = "0.1.0" -dependencies = [ - "alloy-eips", - "alloy-primitives", - "alloy-provider", - "alloy-rpc-client", - "alloy-rpc-types-eth", - "anyhow", - "async-trait", - "derive_more", - "futures", - "jsonrpsee", - "kona-genesis", - "kona-interop", - "kona-protocol", - "kona-supervisor-core", - "kona-supervisor-metrics", - "kona-supervisor-rpc", - "kona-supervisor-storage", - "kona-supervisor-types", - "mockall", - "thiserror 2.0.17", - "tokio", - "tokio-util", - "tracing", -] - -[[package]] -name = "kona-supervisor-storage" -version = "0.1.0" -dependencies = [ - "alloy-eips", - "alloy-primitives", - "bytes", - "derive_more", - "eyre", - "kona-cli", - "kona-interop", - "kona-protocol", - "kona-supervisor-metrics", - "kona-supervisor-types", - "metrics", - "modular-bitfield", - "op-alloy-consensus 0.23.1", - "reth-codecs", - "reth-db", - "reth-db-api", - "serde", - "tempfile", - "test-fuzz", - "thiserror 2.0.17", - "tokio", - "tracing", -] - -[[package]] -name = "kona-supervisor-types" -version = "0.1.1" -dependencies = [ - "alloy-eips", - "alloy-primitives", - "alloy-serde", - "derive_more", - "kona-interop", - "kona-protocol", - "op-alloy-consensus 0.23.1", - "serde", - "serde_json", - "thiserror 2.0.17", -] - -[[package]] -name = "kqueue" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eac30106d7dce88daf4a3fcb4879ea939476d5074a9b7ddd0fb97fa4bed5596a" -dependencies = [ - "kqueue-sys", - "libc", -] - -[[package]] -name = "kqueue-sys" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed9625ffda8729b85e45cf04090035ac368927b8cebc34898e7c120f52e4838b" -dependencies = [ - "bitflags 1.3.2", - "libc", -] - -[[package]] -name = "lazy_static" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" -dependencies = [ - "spin 0.9.8", -] - -[[package]] -name = "lazycell" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" - -[[package]] -name = "libc" -version = "0.2.178" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37c93d8daa9d8a012fd8ab92f088405fb202ea0b6ab73ee2482ae66af4f42091" - -[[package]] -name = "libgit2-sys" -version = "0.18.2+1.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c42fe03df2bd3c53a3a9c7317ad91d80c81cd1fb0caec8d7cc4cd2bfa10c222" -dependencies = [ - "cc", - "libc", - "libz-sys", - "pkg-config", -] - -[[package]] -name = "libloading" -version = "0.8.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" -dependencies = [ - "cfg-if", - "windows-link", -] - -[[package]] -name = "libm" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" - -[[package]] -name = "libp2p" -version = "0.56.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce71348bf5838e46449ae240631117b487073d5f347c06d434caddcb91dceb5a" -dependencies = [ - "bytes", - "either", - "futures", - "futures-timer", - "getrandom 0.2.16", - "libp2p-allow-block-list", - "libp2p-connection-limits", - "libp2p-core", - "libp2p-dns", - "libp2p-gossipsub", - "libp2p-identify", - "libp2p-identity", - "libp2p-mdns", - "libp2p-metrics", - "libp2p-noise", - "libp2p-ping", - "libp2p-quic", - "libp2p-swarm", - "libp2p-tcp", - "libp2p-upnp", - "libp2p-yamux", - "multiaddr", - "pin-project", - "rw-stream-sink", - "thiserror 2.0.17", -] - -[[package]] -name = "libp2p-allow-block-list" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d16ccf824ee859ca83df301e1c0205270206223fd4b1f2e512a693e1912a8f4a" -dependencies = [ - "libp2p-core", - "libp2p-identity", - "libp2p-swarm", -] - -[[package]] -name = "libp2p-connection-limits" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a18b8b607cf3bfa2f8c57db9c7d8569a315d5cc0a282e6bfd5ebfc0a9840b2a0" -dependencies = [ - "libp2p-core", - "libp2p-identity", - "libp2p-swarm", -] - -[[package]] -name = "libp2p-core" -version = "0.43.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d28e2d2def7c344170f5c6450c0dbe3dfef655610dbfde2f6ac28a527abbe36" -dependencies = [ - "either", - "fnv", - "futures", - "futures-timer", - "libp2p-identity", - "multiaddr", - "multihash", - "multistream-select", - "parking_lot", - "pin-project", - "quick-protobuf", - "rand 0.8.5", - "rw-stream-sink", - "thiserror 2.0.17", - "tracing", - "unsigned-varint 0.8.0", - "web-time", -] - -[[package]] -name = "libp2p-dns" -version = "0.44.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b770c1c8476736ca98c578cba4b505104ff8e842c2876b528925f9766379f9a" -dependencies = [ - "async-trait", - "futures", - "hickory-resolver", - "libp2p-core", - "libp2p-identity", - "parking_lot", - "smallvec", - "tracing", -] - -[[package]] -name = "libp2p-gossipsub" -version = "0.49.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7f58e37d8d6848e5c4c9e3c35c6f61133235bff2960c9c00a663b0849301221" -dependencies = [ - "async-channel", - "asynchronous-codec", - "base64", - "byteorder", - "bytes", - "either", - "fnv", - "futures", - "futures-timer", - "getrandom 0.2.16", - "hashlink", - "hex_fmt", - "libp2p-core", - "libp2p-identity", - "libp2p-swarm", - "quick-protobuf", - "quick-protobuf-codec", - "rand 0.8.5", - "regex", - "sha2", - "tracing", - "web-time", -] - -[[package]] -name = "libp2p-identify" -version = "0.47.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ab792a8b68fdef443a62155b01970c81c3aadab5e659621b063ef252a8e65e8" -dependencies = [ - "asynchronous-codec", - "either", - "futures", - "futures-bounded", - "futures-timer", - "libp2p-core", - "libp2p-identity", - "libp2p-swarm", - "quick-protobuf", - "quick-protobuf-codec", - "smallvec", - "thiserror 2.0.17", - "tracing", -] - -[[package]] -name = "libp2p-identity" -version = "0.2.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0c7892c221730ba55f7196e98b0b8ba5e04b4155651736036628e9f73ed6fc3" -dependencies = [ - "asn1_der", - "bs58", - "ed25519-dalek", - "hkdf", - "k256", - "multihash", - "quick-protobuf", - "rand 0.8.5", - "sha2", - "thiserror 2.0.17", - "tracing", - "zeroize", -] - -[[package]] -name = "libp2p-mdns" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c66872d0f1ffcded2788683f76931be1c52e27f343edb93bc6d0bcd8887be443" -dependencies = [ - "futures", - "hickory-proto", - "if-watch", - "libp2p-core", - "libp2p-identity", - "libp2p-swarm", - "rand 0.8.5", - "smallvec", - "socket2 0.5.10", - "tokio", - "tracing", -] - -[[package]] -name = "libp2p-metrics" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "805a555148522cb3414493a5153451910cb1a146c53ffbf4385708349baf62b7" -dependencies = [ - "futures", - "libp2p-core", - "libp2p-gossipsub", - "libp2p-identify", - "libp2p-identity", - "libp2p-ping", - "libp2p-swarm", - "pin-project", - "prometheus-client", - "web-time", -] - -[[package]] -name = "libp2p-noise" -version = "0.46.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc73eacbe6462a0eb92a6527cac6e63f02026e5407f8831bde8293f19217bfbf" -dependencies = [ - "asynchronous-codec", - "bytes", - "futures", - "libp2p-core", - "libp2p-identity", - "multiaddr", - "multihash", - "quick-protobuf", - "rand 0.8.5", - "snow", - "static_assertions", - "thiserror 2.0.17", - "tracing", - "x25519-dalek", - "zeroize", -] - -[[package]] -name = "libp2p-ping" -version = "0.47.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74bb7fcdfd9fead4144a3859da0b49576f171a8c8c7c0bfc7c541921d25e60d3" -dependencies = [ - "futures", - "futures-timer", - "libp2p-core", - "libp2p-identity", - "libp2p-swarm", - "rand 0.8.5", - "tracing", - "web-time", -] - -[[package]] -name = "libp2p-quic" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8dc448b2de9f4745784e3751fe8bc6c473d01b8317edd5ababcb0dec803d843f" -dependencies = [ - "futures", - "futures-timer", - "if-watch", - "libp2p-core", - "libp2p-identity", - "libp2p-tls", - "quinn", - "rand 0.8.5", - "ring", - "rustls", - "socket2 0.5.10", - "thiserror 2.0.17", - "tokio", - "tracing", -] - -[[package]] -name = "libp2p-stream" -version = "0.4.0-alpha" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d6bd8025c80205ec2810cfb28b02f362ab48a01bee32c50ab5f12761e033464" -dependencies = [ - "futures", - "libp2p-core", - "libp2p-identity", - "libp2p-swarm", - "rand 0.8.5", - "tracing", -] - -[[package]] -name = "libp2p-swarm" -version = "0.47.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6aa762e5215919a34e31c35d4b18bf2e18566ecab7f8a3d39535f4a3068f8b62" -dependencies = [ - "either", - "fnv", - "futures", - "futures-timer", - "libp2p-core", - "libp2p-identity", - "libp2p-swarm-derive", - "lru 0.12.5", - "multistream-select", - "rand 0.8.5", - "smallvec", - "tokio", - "tracing", - "web-time", -] - -[[package]] -name = "libp2p-swarm-derive" -version = "0.35.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd297cf53f0cb3dee4d2620bb319ae47ef27c702684309f682bdb7e55a18ae9c" -dependencies = [ - "heck", - "quote", - "syn 2.0.111", -] - -[[package]] -name = "libp2p-tcp" -version = "0.44.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65b4e030c52c46c8d01559b2b8ca9b7c4185f10576016853129ca1fe5cd1a644" -dependencies = [ - "futures", - "futures-timer", - "if-watch", - "libc", - "libp2p-core", - "socket2 0.5.10", - "tokio", - "tracing", -] - -[[package]] -name = "libp2p-tls" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96ff65a82e35375cbc31ebb99cacbbf28cb6c4fefe26bf13756ddcf708d40080" -dependencies = [ - "futures", - "futures-rustls", - "libp2p-core", - "libp2p-identity", - "rcgen", - "ring", - "rustls", - "rustls-webpki", - "thiserror 2.0.17", - "x509-parser", - "yasna", -] - -[[package]] -name = "libp2p-upnp" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4757e65fe69399c1a243bbb90ec1ae5a2114b907467bf09f3575e899815bb8d3" -dependencies = [ - "futures", - "futures-timer", - "igd-next", - "libp2p-core", - "libp2p-swarm", - "tokio", - "tracing", -] - -[[package]] -name = "libp2p-yamux" -version = "0.47.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f15df094914eb4af272acf9adaa9e287baa269943f32ea348ba29cfb9bfc60d8" -dependencies = [ - "either", - "futures", - "libp2p-core", - "thiserror 2.0.17", - "tracing", - "yamux 0.12.1", - "yamux 0.13.8", -] - -[[package]] -name = "libproc" -version = "0.14.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a54ad7278b8bc5301d5ffd2a94251c004feb971feba96c971ea4063645990757" -dependencies = [ - "bindgen 0.72.1", - "errno", - "libc", -] - -[[package]] -name = "libredox" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb" -dependencies = [ - "bitflags 2.10.0", - "libc", -] - -[[package]] -name = "librocksdb-sys" -version = "0.17.3+10.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cef2a00ee60fe526157c9023edab23943fae1ce2ab6f4abb2a807c1746835de9" -dependencies = [ - "bindgen 0.72.1", - "bzip2-sys", - "cc", - "libc", - "libz-sys", -] - -[[package]] -name = "libz-sys" -version = "1.1.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15d118bbf3771060e7311cc7bb0545b01d08a8b4a7de949198dec1fa0ca1c0f7" -dependencies = [ - "cc", - "libc", - "pkg-config", - "vcpkg", -] - -[[package]] -name = "linux-raw-sys" -version = "0.4.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" - -[[package]] -name = "linux-raw-sys" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" - -[[package]] -name = "litemap" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" - -[[package]] -name = "lock_api" -version = "0.4.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" -dependencies = [ - "scopeguard", -] - -[[package]] -name = "log" -version = "0.4.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" - -[[package]] -name = "lru" -version = "0.12.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" -dependencies = [ - "hashbrown 0.15.5", -] - -[[package]] -name = "lru" -version = "0.16.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1dc47f592c06f33f8e3aea9591776ec7c9f9e4124778ff8a3c3b87159f7e593" -dependencies = [ - "hashbrown 0.16.1", -] - -[[package]] -name = "lru-slab" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" - -[[package]] -name = "lz4_flex" -version = "0.11.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08ab2867e3eeeca90e844d1940eab391c9dc5228783db2ed999acbc0a9ed375a" - -[[package]] -name = "mach2" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a1b95cd5421ec55b445b5ae102f5ea0e768de1f82bd3001e11f426c269c3aea" -dependencies = [ - "libc", -] - -[[package]] -name = "macro-string" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b27834086c65ec3f9387b096d66e99f221cf081c2b738042aa252bcd41204e3" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.111", -] - -[[package]] -name = "match-lookup" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1265724d8cb29dbbc2b0f06fffb8bf1a8c0cf73a78eede9ba73a4a66c52a981e" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "matchers" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9" -dependencies = [ - "regex-automata", -] - -[[package]] -name = "matchit" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" - -[[package]] -name = "memchr" -version = "2.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" - -[[package]] -name = "memmap2" -version = "0.9.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "744133e4a0e0a658e1374cf3bf8e415c4052a15a111acd372764c55b4177d490" -dependencies = [ - "libc", -] - -[[package]] -name = "metrics" -version = "0.24.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d5312e9ba3771cfa961b585728215e3d972c950a3eed9252aa093d6301277e8" -dependencies = [ - "ahash", - "portable-atomic", -] - -[[package]] -name = "metrics-derive" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3dbdd96ed57d565ec744cba02862d707acf373c5772d152abae6ec5c4e24f6c" -dependencies = [ - "proc-macro2", - "quote", - "regex", - "syn 2.0.111", -] - -[[package]] -name = "metrics-exporter-prometheus" -version = "0.16.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd7399781913e5393588a8d8c6a2867bf85fb38eaf2502fdce465aad2dc6f034" -dependencies = [ - "base64", - "http-body-util", - "hyper", - "hyper-rustls", - "hyper-util", - "indexmap 2.12.1", - "ipnet", - "metrics", - "metrics-util 0.19.1", - "quanta", - "thiserror 1.0.69", - "tokio", - "tracing", -] - -[[package]] -name = "metrics-exporter-prometheus" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3589659543c04c7dc5526ec858591015b87cd8746583b51b48ef4353f99dbcda" -dependencies = [ - "base64", - "http-body-util", - "hyper", - "hyper-util", - "indexmap 2.12.1", - "ipnet", - "metrics", - "metrics-util 0.20.1", - "quanta", - "thiserror 2.0.17", - "tokio", - "tracing", -] - -[[package]] -name = "metrics-process" -version = "2.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f615e08e049bd14a44c4425415782efb9bcd479fc1e19ddeb971509074c060d0" -dependencies = [ - "libc", - "libproc", - "mach2", - "metrics", - "once_cell", - "procfs", - "rlimit", - "windows 0.62.2", -] - -[[package]] -name = "metrics-util" -version = "0.19.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8496cc523d1f94c1385dd8f0f0c2c480b2b8aeccb5b7e4485ad6365523ae376" -dependencies = [ - "aho-corasick", - "crossbeam-epoch", - "crossbeam-utils", - "hashbrown 0.15.5", - "indexmap 2.12.1", - "metrics", - "ordered-float", - "quanta", - "radix_trie", - "rand 0.9.2", - "rand_xoshiro", - "sketches-ddsketch", -] - -[[package]] -name = "metrics-util" -version = "0.20.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdfb1365fea27e6dd9dc1dbc19f570198bc86914533ad639dae939635f096be4" -dependencies = [ - "crossbeam-epoch", - "crossbeam-utils", - "hashbrown 0.16.1", - "metrics", - "quanta", - "rand 0.9.2", - "rand_xoshiro", - "sketches-ddsketch", -] - -[[package]] -name = "mime" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" - -[[package]] -name = "minimal-lexical" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" - -[[package]] -name = "miniz_oxide" -version = "0.8.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" -dependencies = [ - "adler2", - "simd-adler32", -] - -[[package]] -name = "miniz_oxide" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5faa9f23e86bd5768d76def086192ff5f869fb088da12a976ea21e9796b975f6" -dependencies = [ - "adler2", - "serde", -] - -[[package]] -name = "mio" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc" -dependencies = [ - "libc", - "log", - "wasi", - "windows-sys 0.61.2", -] - -[[package]] -name = "mockall" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f58d964098a5f9c6b63d0798e5372fd04708193510a7af313c22e9f29b7b620b" -dependencies = [ - "cfg-if", - "downcast", - "fragile", - "mockall_derive", - "predicates", - "predicates-tree", -] - -[[package]] -name = "mockall_derive" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca41ce716dda6a9be188b385aa78ee5260fc25cd3802cb2a8afdc6afbe6b6dbf" -dependencies = [ - "cfg-if", - "proc-macro2", - "quote", - "syn 2.0.111", -] - -[[package]] -name = "modular-bitfield" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a53d79ba8304ac1c4f9eb3b9d281f21f7be9d4626f72ce7df4ad8fbde4f38a74" -dependencies = [ - "modular-bitfield-impl", - "static_assertions", -] - -[[package]] -name = "modular-bitfield-impl" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a7d5f7076603ebc68de2dc6a650ec331a062a13abaa346975be747bbfa4b789" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "moka" -version = "0.12.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8261cd88c312e0004c1d51baad2980c66528dfdb2bee62003e643a4d8f86b077" -dependencies = [ - "async-lock", - "crossbeam-channel", - "crossbeam-epoch", - "crossbeam-utils", - "equivalent", - "event-listener", - "futures-util", - "parking_lot", - "portable-atomic", - "rustc_version 0.4.1", - "smallvec", - "tagptr", - "uuid", -] - -[[package]] -name = "more-asserts" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fafa6961cabd9c63bcd77a45d7e3b7f3b552b70417831fb0f56db717e72407e" - -[[package]] -name = "multiaddr" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe6351f60b488e04c1d21bc69e56b89cb3f5e8f5d22557d6e8031bdfd79b6961" -dependencies = [ - "arrayref", - "byteorder", - "data-encoding", - "libp2p-identity", - "multibase", - "multihash", - "percent-encoding", - "serde", - "static_assertions", - "unsigned-varint 0.8.0", - "url", -] - -[[package]] -name = "multibase" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8694bb4835f452b0e3bb06dbebb1d6fc5385b6ca1caf2e55fd165c042390ec77" -dependencies = [ - "base-x", - "base256emoji", - "data-encoding", - "data-encoding-macro", -] - -[[package]] -name = "multihash" -version = "0.19.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b430e7953c29dd6a09afc29ff0bb69c6e306329ee6794700aee27b76a1aea8d" -dependencies = [ - "core2", - "unsigned-varint 0.8.0", -] - -[[package]] -name = "multistream-select" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea0df8e5eec2298a62b326ee4f0d7fe1a6b90a09dfcf9df37b38f947a8c42f19" -dependencies = [ - "bytes", - "futures", - "log", - "pin-project", - "smallvec", - "unsigned-varint 0.7.2", -] - -[[package]] -name = "munge" -version = "0.4.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e17401f259eba956ca16491461b6e8f72913a0a114e39736ce404410f915a0c" -dependencies = [ - "munge_macro", -] - -[[package]] -name = "munge_macro" -version = "0.4.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4568f25ccbd45ab5d5603dc34318c1ec56b117531781260002151b8530a9f931" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.111", -] - -[[package]] -name = "native-tls" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" -dependencies = [ - "libc", - "log", - "openssl", - "openssl-probe", - "openssl-sys", - "schannel", - "security-framework 2.11.1", - "security-framework-sys", - "tempfile", -] - -[[package]] -name = "netlink-packet-core" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72724faf704479d67b388da142b186f916188505e7e0b26719019c525882eda4" -dependencies = [ - "anyhow", - "byteorder", - "netlink-packet-utils", -] - -[[package]] -name = "netlink-packet-route" -version = "0.17.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "053998cea5a306971f88580d0829e90f270f940befd7cf928da179d4187a5a66" -dependencies = [ - "anyhow", - "bitflags 1.3.2", - "byteorder", - "libc", - "netlink-packet-core", - "netlink-packet-utils", -] - -[[package]] -name = "netlink-packet-utils" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ede8a08c71ad5a95cdd0e4e52facd37190977039a4704eb82a283f713747d34" -dependencies = [ - "anyhow", - "byteorder", - "paste", - "thiserror 1.0.69", -] - -[[package]] -name = "netlink-proto" -version = "0.11.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72452e012c2f8d612410d89eea01e2d9b56205274abb35d53f60200b2ec41d60" -dependencies = [ - "bytes", - "futures", - "log", - "netlink-packet-core", - "netlink-sys", - "thiserror 2.0.17", -] - -[[package]] -name = "netlink-sys" -version = "0.8.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16c903aa70590cb93691bf97a767c8d1d6122d2cc9070433deb3bbf36ce8bd23" -dependencies = [ - "bytes", - "futures", - "libc", - "log", - "tokio", -] - -[[package]] -name = "nibble_vec" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a5d83df9f36fe23f0c3648c6bbb8b0298bb5f1939c8f2704431371f4b84d43" -dependencies = [ - "smallvec", -] - -[[package]] -name = "nix" -version = "0.26.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" -dependencies = [ - "bitflags 1.3.2", - "cfg-if", - "libc", -] - -[[package]] -name = "nohash-hasher" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" - -[[package]] -name = "nom" -version = "7.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" -dependencies = [ - "memchr", - "minimal-lexical", -] - -[[package]] -name = "notify" -version = "8.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d3d07927151ff8575b7087f245456e549fea62edf0ec4e565a5ee50c8402bc3" -dependencies = [ - "bitflags 2.10.0", - "fsevent-sys", - "inotify", - "kqueue", - "libc", - "log", - "mio", - "notify-types", - "walkdir", - "windows-sys 0.60.2", -] - -[[package]] -name = "notify-types" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e0826a989adedc2a244799e823aece04662b66609d96af8dff7ac6df9a8925d" - -[[package]] -name = "ntapi" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8a3895c6391c39d7fe7ebc444a87eb2991b2a0bc718fdabd071eec617fc68e4" -dependencies = [ - "winapi", -] - -[[package]] -name = "nu-ansi-term" -version = "0.50.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" -dependencies = [ - "windows-sys 0.61.2", -] - -[[package]] -name = "num" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23" -dependencies = [ - "num-bigint", - "num-complex", - "num-integer", - "num-iter", - "num-rational", - "num-traits", -] - -[[package]] -name = "num-bigint" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" -dependencies = [ - "num-integer", - "num-traits", -] - -[[package]] -name = "num-complex" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" -dependencies = [ - "num-traits", -] - -[[package]] -name = "num-conv" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" - -[[package]] -name = "num-format" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a652d9771a63711fd3c3deb670acfbe5c30a4072e664d7a3bf5a9e1056ac72c3" -dependencies = [ - "arrayvec", - "itoa", -] - -[[package]] -name = "num-integer" -version = "0.1.46" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" -dependencies = [ - "num-traits", -] - -[[package]] -name = "num-iter" -version = "0.1.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" -dependencies = [ - "autocfg", - "num-integer", - "num-traits", -] - -[[package]] -name = "num-rational" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" -dependencies = [ - "num-bigint", - "num-integer", - "num-traits", -] - -[[package]] -name = "num-traits" -version = "0.2.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" -dependencies = [ - "autocfg", - "libm", -] - -[[package]] -name = "num_cpus" -version = "1.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" -dependencies = [ - "hermit-abi", - "libc", -] - -[[package]] -name = "num_enum" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c" -dependencies = [ - "num_enum_derive", - "rustversion", -] - -[[package]] -name = "num_enum_derive" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" -dependencies = [ - "proc-macro-crate", - "proc-macro2", - "quote", - "syn 2.0.111", -] - -[[package]] -name = "num_threads" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9" -dependencies = [ - "libc", -] - -[[package]] -name = "nybbles" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c4b5ecbd0beec843101bffe848217f770e8b8da81d8355b7d6e226f2199b3dc" -dependencies = [ - "alloy-rlp", - "arbitrary", - "cfg-if", - "proptest", - "ruint", - "serde", - "smallvec", -] - -[[package]] -name = "object" -version = "0.37.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff76201f031d8863c38aa7f905eca4f53abbfa15f609db4277d44cd8938f33fe" -dependencies = [ - "memchr", -] - -[[package]] -name = "oid-registry" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12f40cff3dde1b6087cc5d5f5d4d65712f34016a03ed60e9c08dcc392736b5b7" -dependencies = [ - "asn1-rs", -] - -[[package]] -name = "once_cell" -version = "1.21.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" -dependencies = [ - "critical-section", - "portable-atomic", -] - -[[package]] -name = "once_cell_polyfill" -version = "1.70.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" - -[[package]] -name = "oorandom" -version = "11.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e" - -[[package]] -name = "op-alloy" -version = "0.23.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9b8fee21003dd4f076563de9b9d26f8c97840157ef78593cd7f262c5ca99848" -dependencies = [ - "op-alloy-consensus 0.23.1", - "op-alloy-network", - "op-alloy-provider", - "op-alloy-rpc-types", - "op-alloy-rpc-types-engine", -] - -[[package]] -name = "op-alloy-consensus" -version = "0.18.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c88d2940558fd69f8f07b3cbd7bb3c02fc7d31159c1a7ba9deede50e7881024" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-primitives", - "alloy-rlp", - "alloy-serde", - "derive_more", - "serde", - "thiserror 2.0.17", -] - -[[package]] -name = "op-alloy-consensus" -version = "0.23.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "736381a95471d23e267263cfcee9e1d96d30b9754a94a2819148f83379de8a86" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-network", - "alloy-primitives", - "alloy-rlp", - "alloy-rpc-types-eth", - "alloy-serde", - "arbitrary", - "derive_more", - "serde", - "thiserror 2.0.17", -] - -[[package]] -name = "op-alloy-network" -version = "0.23.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4034183dca6bff6632e7c24c92e75ff5f0eabb58144edb4d8241814851334d47" -dependencies = [ - "alloy-consensus", - "alloy-network", - "alloy-primitives", - "alloy-provider", - "alloy-rpc-types-eth", - "alloy-signer", - "op-alloy-consensus 0.23.1", - "op-alloy-rpc-types", -] - -[[package]] -name = "op-alloy-provider" -version = "0.23.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6753d90efbaa8ea8bcb89c1737408ca85fa60d7adb875049d3f382c063666f86" -dependencies = [ - "alloy-network", - "alloy-primitives", - "alloy-provider", - "alloy-rpc-types-engine", - "alloy-transport", - "async-trait", - "op-alloy-rpc-types-engine", -] - -[[package]] -name = "op-alloy-rpc-jsonrpsee" -version = "0.23.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1c820ef9c802ebc732281a940bfb6ac2345af4d9fff041cbb64b4b546676686" -dependencies = [ - "alloy-primitives", - "jsonrpsee", -] - -[[package]] -name = "op-alloy-rpc-types" -version = "0.23.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddd87c6b9e5b6eee8d6b76f41b04368dca0e9f38d83338e5b00e730c282098a4" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-network-primitives", - "alloy-primitives", - "alloy-rpc-types-eth", - "alloy-serde", - "arbitrary", - "derive_more", - "jsonrpsee", - "op-alloy-consensus 0.23.1", - "serde", - "serde_json", - "thiserror 2.0.17", -] - -[[package]] -name = "op-alloy-rpc-types-engine" -version = "0.23.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77727699310a18cdeed32da3928c709e2704043b6584ed416397d5da65694efc" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-primitives", - "alloy-rlp", - "alloy-rpc-types-engine", - "alloy-serde", - "arbitrary", - "derive_more", - "ethereum_ssz", - "ethereum_ssz_derive", - "op-alloy-consensus 0.23.1", - "serde", - "sha2", - "snap", - "thiserror 2.0.17", -] - -[[package]] -name = "op-revm" -version = "14.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1475a779c73999fc803778524042319691b31f3d6699d2b560c4ed8be1db802a" -dependencies = [ - "auto_impl", - "revm", - "serde", -] - -[[package]] -name = "opaque-debug" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" - -[[package]] -name = "openssl" -version = "0.10.75" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08838db121398ad17ab8531ce9de97b244589089e290a384c900cb9ff7434328" -dependencies = [ - "bitflags 2.10.0", - "cfg-if", - "foreign-types", - "libc", - "once_cell", - "openssl-macros", - "openssl-sys", -] - -[[package]] -name = "openssl-macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.111", -] - -[[package]] -name = "openssl-probe" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" - -[[package]] -name = "openssl-src" -version = "300.5.4+3.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a507b3792995dae9b0df8a1c1e3771e8418b7c2d9f0baeba32e6fe8b06c7cb72" -dependencies = [ - "cc", -] - -[[package]] -name = "openssl-sys" -version = "0.9.111" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82cab2d520aa75e3c58898289429321eb788c3106963d0dc886ec7a5f4adc321" -dependencies = [ - "cc", - "libc", - "openssl-src", - "pkg-config", - "vcpkg", -] - -[[package]] -name = "opentelemetry" -version = "0.28.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "236e667b670a5cdf90c258f5a55794ec5ac5027e960c224bff8367a59e1e6426" -dependencies = [ - "futures-core", - "futures-sink", - "js-sys", - "pin-project-lite", - "thiserror 2.0.17", - "tracing", -] - -[[package]] -name = "opentelemetry-http" -version = "0.28.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8863faf2910030d139fb48715ad5ff2f35029fc5f244f6d5f689ddcf4d26253" -dependencies = [ - "async-trait", - "bytes", - "http", - "opentelemetry", - "reqwest", - "tracing", -] - -[[package]] -name = "opentelemetry-otlp" -version = "0.28.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bef114c6d41bea83d6dc60eb41720eedd0261a67af57b66dd2b84ac46c01d91" -dependencies = [ - "async-trait", - "futures-core", - "http", - "opentelemetry", - "opentelemetry-http", - "opentelemetry-proto", - "opentelemetry_sdk", - "prost", - "reqwest", - "serde_json", - "thiserror 2.0.17", - "tokio", - "tonic", - "tracing", -] - -[[package]] -name = "opentelemetry-proto" -version = "0.28.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56f8870d3024727e99212eb3bb1762ec16e255e3e6f58eeb3dc8db1aa226746d" -dependencies = [ - "base64", - "hex", - "opentelemetry", - "opentelemetry_sdk", - "prost", - "serde", - "tonic", -] - -[[package]] -name = "opentelemetry_sdk" -version = "0.28.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84dfad6042089c7fc1f6118b7040dc2eb4ab520abbf410b79dc481032af39570" -dependencies = [ - "async-trait", - "futures-channel", - "futures-executor", - "futures-util", - "glob", - "opentelemetry", - "percent-encoding", - "rand 0.8.5", - "serde_json", - "thiserror 2.0.17", - "tokio", - "tokio-stream", - "tracing", -] - -[[package]] -name = "option-ext" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" - -[[package]] -name = "ordered-float" -version = "4.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bb71e1b3fa6ca1c61f383464aaf2bb0e2f8e772a1f01d486832464de363b951" -dependencies = [ - "num-traits", -] - -[[package]] -name = "p256" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" -dependencies = [ - "ecdsa", - "elliptic-curve", - "primeorder", - "sha2", -] - -[[package]] -name = "page_size" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30d5b2194ed13191c1999ae0704b7839fb18384fa22e49b57eeaa97d79ce40da" -dependencies = [ - "libc", - "winapi", -] - -[[package]] -name = "papergrid" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6978128c8b51d8f4080631ceb2302ab51e32cc6e8615f735ee2f83fd269ae3f1" -dependencies = [ - "bytecount", - "fnv", - "unicode-width", -] - -[[package]] -name = "parity-scale-codec" -version = "3.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "799781ae679d79a948e13d4824a40970bfa500058d245760dd857301059810fa" -dependencies = [ - "arrayvec", - "bitvec", - "byte-slice-cast", - "bytes", - "const_format", - "impl-trait-for-tuples", - "parity-scale-codec-derive", - "rustversion", - "serde", -] - -[[package]] -name = "parity-scale-codec-derive" -version = "3.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34b4653168b563151153c9e4c08ebed57fb8262bebfa79711552fa983c623e7a" -dependencies = [ - "proc-macro-crate", - "proc-macro2", - "quote", - "syn 2.0.111", -] - -[[package]] -name = "parking" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" - -[[package]] -name = "parking_lot" -version = "0.12.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" -dependencies = [ - "lock_api", - "parking_lot_core", -] - -[[package]] -name = "parking_lot_core" -version = "0.9.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" -dependencies = [ - "cfg-if", - "libc", - "redox_syscall", - "smallvec", - "windows-link", -] - -[[package]] -name = "paste" -version = "1.0.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" - -[[package]] -name = "path-tree" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2a97453bc21a968f722df730bfe11bd08745cb50d1300b0df2bda131dece136" -dependencies = [ - "smallvec", -] - -[[package]] -name = "pem" -version = "3.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d30c53c26bc5b31a98cd02d20f25a7c8567146caf63ed593a9d87b2775291be" -dependencies = [ - "base64", - "serde_core", -] - -[[package]] -name = "percent-encoding" -version = "2.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" - -[[package]] -name = "pest" -version = "2.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbcfd20a6d4eeba40179f05735784ad32bdaef05ce8e8af05f180d45bb3e7e22" -dependencies = [ - "memchr", - "ucd-trie", -] - -[[package]] -name = "pharos" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9567389417feee6ce15dd6527a8a1ecac205ef62c2932bcf3d9f6fc5b78b414" -dependencies = [ - "futures", - "rustc_version 0.4.1", -] - -[[package]] -name = "phf" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" -dependencies = [ - "phf_macros 0.11.3", - "phf_shared 0.11.3", - "serde", -] - -[[package]] -name = "phf" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1562dc717473dbaa4c1f85a36410e03c047b2e7df7f45ee938fbef64ae7fadf" -dependencies = [ - "phf_macros 0.13.1", - "phf_shared 0.13.1", - "serde", -] - -[[package]] -name = "phf_generator" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" -dependencies = [ - "phf_shared 0.11.3", - "rand 0.8.5", -] - -[[package]] -name = "phf_generator" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "135ace3a761e564ec88c03a77317a7c6b80bb7f7135ef2544dbe054243b89737" -dependencies = [ - "fastrand", - "phf_shared 0.13.1", -] - -[[package]] -name = "phf_macros" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216" -dependencies = [ - "phf_generator 0.11.3", - "phf_shared 0.11.3", - "proc-macro2", - "quote", - "syn 2.0.111", -] - -[[package]] -name = "phf_macros" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "812f032b54b1e759ccd5f8b6677695d5268c588701effba24601f6932f8269ef" -dependencies = [ - "phf_generator 0.13.1", - "phf_shared 0.13.1", - "proc-macro2", - "quote", - "syn 2.0.111", -] - -[[package]] -name = "phf_shared" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" -dependencies = [ - "siphasher", -] - -[[package]] -name = "phf_shared" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e57fef6bc5981e38c2ce2d63bfa546861309f875b8a75f092d1d54ae2d64f266" -dependencies = [ - "siphasher", -] - -[[package]] -name = "pin-project" -version = "1.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" -dependencies = [ - "pin-project-internal", -] - -[[package]] -name = "pin-project-internal" -version = "1.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.111", -] - -[[package]] -name = "pin-project-lite" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" - -[[package]] -name = "pin-utils" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" - -[[package]] -name = "pkcs8" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" -dependencies = [ - "der", - "spki", -] - -[[package]] -name = "pkg-config" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" - -[[package]] -name = "plotters" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aeb6f403d7a4911efb1e33402027fc44f29b5bf6def3effcc22d7bb75f2b747" -dependencies = [ - "num-traits", - "plotters-backend", - "plotters-svg", - "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "plotters-backend" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df42e13c12958a16b3f7f4386b9ab1f3e7933914ecea48da7139435263a4172a" - -[[package]] -name = "plotters-svg" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51bae2ac328883f7acdfea3d66a7c35751187f870bc81f94563733a154d7a670" -dependencies = [ - "plotters-backend", -] - -[[package]] -name = "polling" -version = "3.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d0e4f59085d47d8241c88ead0f274e8a0cb551f3625263c05eb8dd897c34218" -dependencies = [ - "cfg-if", - "concurrent-queue", - "hermit-abi", - "pin-project-lite", - "rustix 1.1.3", - "windows-sys 0.61.2", -] - -[[package]] -name = "poly1305" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf" -dependencies = [ - "cpufeatures", - "opaque-debug", - "universal-hash", -] - -[[package]] -name = "polyval" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d1fe60d06143b2430aa532c94cfe9e29783047f06c0d7fd359a9a51b729fa25" -dependencies = [ - "cfg-if", - "cpufeatures", - "opaque-debug", - "universal-hash", -] - -[[package]] -name = "portable-atomic" -version = "1.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" - -[[package]] -name = "potential_utf" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" -dependencies = [ - "zerovec", -] - -[[package]] -name = "powerfmt" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" - -[[package]] -name = "pprof" -version = "0.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38a01da47675efa7673b032bf8efd8214f1917d89685e07e395ab125ea42b187" -dependencies = [ - "aligned-vec", - "backtrace", - "cfg-if", - "criterion", - "findshlibs", - "inferno", - "libc", - "log", - "nix", - "once_cell", - "smallvec", - "spin 0.10.0", - "symbolic-demangle", - "tempfile", - "thiserror 2.0.17", -] - -[[package]] -name = "ppv-lite86" -version = "0.2.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" -dependencies = [ - "zerocopy", -] - -[[package]] -name = "predicates" -version = "3.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5d19ee57562043d37e82899fade9a22ebab7be9cef5026b07fda9cdd4293573" -dependencies = [ - "anstyle", - "predicates-core", -] - -[[package]] -name = "predicates-core" -version = "1.0.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "727e462b119fe9c93fd0eb1429a5f7647394014cf3c04ab2c0350eeb09095ffa" - -[[package]] -name = "predicates-tree" -version = "1.0.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72dd2d6d381dfb73a193c7fca536518d7caee39fc8503f74e7dc0be0531b425c" -dependencies = [ - "predicates-core", - "termtree", -] - -[[package]] -name = "prettyplease" -version = "0.2.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" -dependencies = [ - "proc-macro2", - "syn 2.0.111", -] - -[[package]] -name = "primeorder" -version = "0.13.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "353e1ca18966c16d9deb1c69278edbc5f194139612772bd9537af60ac231e1e6" -dependencies = [ - "elliptic-curve", -] - -[[package]] -name = "primitive-types" -version = "0.12.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" -dependencies = [ - "fixed-hash", - "impl-codec", - "uint 0.9.5", -] - -[[package]] -name = "proc-macro-crate" -version = "3.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" -dependencies = [ - "toml_edit", -] - -[[package]] -name = "proc-macro-error-attr2" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" -dependencies = [ - "proc-macro2", - "quote", -] - -[[package]] -name = "proc-macro-error2" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" -dependencies = [ - "proc-macro-error-attr2", - "proc-macro2", - "quote", - "syn 2.0.111", -] - -[[package]] -name = "proc-macro2" -version = "1.0.103" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "procfs" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25485360a54d6861439d60facef26de713b1e126bf015ec8f98239467a2b82f7" -dependencies = [ - "bitflags 2.10.0", - "procfs-core", - "rustix 1.1.3", -] - -[[package]] -name = "procfs-core" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6401bf7b6af22f78b563665d15a22e9aef27775b79b149a66ca022468a4e405" -dependencies = [ - "bitflags 2.10.0", - "hex", -] - -[[package]] -name = "prometheus-client" -version = "0.23.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf41c1a7c32ed72abe5082fb19505b969095c12da9f5732a4bc9878757fd087c" -dependencies = [ - "dtoa", - "itoa", - "parking_lot", - "prometheus-client-derive-encode", -] - -[[package]] -name = "prometheus-client-derive-encode" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "440f724eba9f6996b75d63681b0a92b06947f1457076d503a4d2e2c8f56442b8" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.111", -] - -[[package]] -name = "proptest" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bee689443a2bd0a16ab0348b52ee43e3b2d1b1f931c8aa5c9f8de4c86fbe8c40" -dependencies = [ - "bit-set", - "bit-vec", - "bitflags 2.10.0", - "num-traits", - "rand 0.9.2", - "rand_chacha 0.9.0", - "rand_xorshift", - "regex-syntax", - "rusty-fork", - "tempfile", - "unarray", -] - -[[package]] -name = "proptest-derive" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ee1c9ac207483d5e7db4940700de86a9aae46ef90c48b57f99fe7edb8345e49" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.111", -] - -[[package]] -name = "proptest-derive" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "095a99f75c69734802359b682be8daaf8980296731f6470434ea2c652af1dd30" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.111", -] - -[[package]] -name = "prost" -version = "0.13.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2796faa41db3ec313a31f7624d9286acf277b52de526150b7e69f3debf891ee5" -dependencies = [ - "bytes", - "prost-derive", -] - -[[package]] -name = "prost-derive" -version = "0.13.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d" -dependencies = [ - "anyhow", - "itertools 0.14.0", - "proc-macro2", - "quote", - "syn 2.0.111", -] - -[[package]] -name = "ptr_meta" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b9a0cf95a1196af61d4f1cbdab967179516d9a4a4312af1f31948f8f6224a79" -dependencies = [ - "ptr_meta_derive", -] - -[[package]] -name = "ptr_meta_derive" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7347867d0a7e1208d93b46767be83e2b8f978c3dad35f775ac8d8847551d6fe1" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.111", -] - -[[package]] -name = "quanta" -version = "0.12.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3ab5a9d756f0d97bdc89019bd2e4ea098cf9cde50ee7564dde6b81ccc8f06c7" -dependencies = [ - "crossbeam-utils", - "libc", - "once_cell", - "raw-cpuid", - "wasi", - "web-sys", - "winapi", -] - -[[package]] -name = "quick-error" -version = "1.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" - -[[package]] -name = "quick-protobuf" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d6da84cc204722a989e01ba2f6e1e276e190f22263d0cb6ce8526fcdb0d2e1f" -dependencies = [ - "byteorder", -] - -[[package]] -name = "quick-protobuf-codec" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15a0580ab32b169745d7a39db2ba969226ca16738931be152a3209b409de2474" -dependencies = [ - "asynchronous-codec", - "bytes", - "quick-protobuf", - "thiserror 1.0.69", - "unsigned-varint 0.8.0", -] - -[[package]] -name = "quick-xml" -version = "0.26.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f50b1c63b38611e7d4d7f68b82d3ad0cc71a2ad2e7f61fc10f1328d917c93cd" -dependencies = [ - "memchr", -] - -[[package]] -name = "quinn" -version = "0.11.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20" -dependencies = [ - "bytes", - "cfg_aliases", - "futures-io", - "pin-project-lite", - "quinn-proto", - "quinn-udp", - "rustc-hash 2.1.1", - "rustls", - "socket2 0.6.1", - "thiserror 2.0.17", - "tokio", - "tracing", - "web-time", -] - -[[package]] -name = "quinn-proto" -version = "0.11.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31" -dependencies = [ - "bytes", - "getrandom 0.3.4", - "lru-slab", - "rand 0.9.2", - "ring", - "rustc-hash 2.1.1", - "rustls", - "rustls-pki-types", - "slab", - "thiserror 2.0.17", - "tinyvec", - "tracing", - "web-time", -] - -[[package]] -name = "quinn-udp" -version = "0.5.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd" -dependencies = [ - "cfg_aliases", - "libc", - "once_cell", - "socket2 0.6.1", - "tracing", - "windows-sys 0.60.2", -] - -[[package]] -name = "quote" -version = "1.0.42" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "r-efi" -version = "5.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" - -[[package]] -name = "radium" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" - -[[package]] -name = "radix_trie" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c069c179fcdc6a2fe24d8d18305cf085fdbd4f922c041943e203685d6a1c58fd" -dependencies = [ - "endian-type", - "nibble_vec", -] - -[[package]] -name = "rancor" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a063ea72381527c2a0561da9c80000ef822bdd7c3241b1cc1b12100e3df081ee" -dependencies = [ - "ptr_meta", -] - -[[package]] -name = "rand" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" -dependencies = [ - "libc", - "rand_chacha 0.3.1", - "rand_core 0.6.4", - "serde", -] - -[[package]] -name = "rand" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" -dependencies = [ - "rand_chacha 0.9.0", - "rand_core 0.9.3", - "serde", -] - -[[package]] -name = "rand_chacha" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" -dependencies = [ - "ppv-lite86", - "rand_core 0.6.4", -] - -[[package]] -name = "rand_chacha" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" -dependencies = [ - "ppv-lite86", - "rand_core 0.9.3", -] - -[[package]] -name = "rand_core" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" -dependencies = [ - "getrandom 0.2.16", -] - -[[package]] -name = "rand_core" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" -dependencies = [ - "getrandom 0.3.4", - "serde", -] - -[[package]] -name = "rand_xorshift" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "513962919efc330f829edb2535844d1b912b0fbe2ca165d613e4e8788bb05a5a" -dependencies = [ - "rand_core 0.9.3", -] - -[[package]] -name = "rand_xoshiro" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f703f4665700daf5512dcca5f43afa6af89f09db47fb56be587f80636bda2d41" -dependencies = [ - "rand_core 0.9.3", -] - -[[package]] -name = "rapidhash" -version = "4.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d8b5b858a440a0bc02625b62dd95131b9201aa9f69f411195dd4a7cfb1de3d7" -dependencies = [ - "rand 0.9.2", - "rustversion", -] - -[[package]] -name = "raw-cpuid" -version = "11.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "498cd0dc59d73224351ee52a95fee0f1a617a2eae0e7d9d720cc622c73a54186" -dependencies = [ - "bitflags 2.10.0", -] - -[[package]] -name = "rayon" -version = "1.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" -dependencies = [ - "either", - "rayon-core", -] - -[[package]] -name = "rayon-core" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" -dependencies = [ - "crossbeam-deque", - "crossbeam-utils", -] - -[[package]] -name = "rcgen" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75e669e5202259b5314d1ea5397316ad400819437857b90861765f24c4cf80a2" -dependencies = [ - "pem", - "ring", - "rustls-pki-types", - "time", - "yasna", -] - -[[package]] -name = "recvmsg" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3edd4d5d42c92f0a659926464d4cce56b562761267ecf0f469d85b7de384175" - -[[package]] -name = "redox_syscall" -version = "0.5.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" -dependencies = [ - "bitflags 2.10.0", -] - -[[package]] -name = "redox_users" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac" -dependencies = [ - "getrandom 0.2.16", - "libredox", - "thiserror 2.0.17", -] - -[[package]] -name = "ref-cast" -version = "1.0.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d" -dependencies = [ - "ref-cast-impl", -] - -[[package]] -name = "ref-cast-impl" -version = "1.0.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.111", -] - -[[package]] -name = "regex" -version = "1.12.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" -dependencies = [ - "aho-corasick", - "memchr", - "regex-automata", - "regex-syntax", -] - -[[package]] -name = "regex-automata" -version = "0.4.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" -dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax", -] - -[[package]] -name = "regex-syntax" -version = "0.8.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" - -[[package]] -name = "relative-path" -version = "1.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba39f3699c378cd8970968dcbff9c43159ea4cfbd88d43c00b22f2ef10a435d2" - -[[package]] -name = "rend" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cadadef317c2f20755a64d7fdc48f9e7178ee6b0e1f7fce33fa60f1d68a276e6" -dependencies = [ - "bytecheck", -] - -[[package]] -name = "reqwest" -version = "0.12.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d0946410b9f7b082a427e4ef5c8ff541a88b357bc6c637c40db3a68ac70a36f" -dependencies = [ - "base64", - "bytes", - "encoding_rs", - "futures-channel", - "futures-core", - "futures-util", - "h2", - "http", - "http-body", - "http-body-util", - "hyper", - "hyper-rustls", - "hyper-tls", - "hyper-util", - "js-sys", - "log", - "mime", - "native-tls", - "percent-encoding", - "pin-project-lite", - "quinn", - "rustls", - "rustls-pki-types", - "serde", - "serde_json", - "serde_urlencoded", - "sync_wrapper", - "tokio", - "tokio-native-tls", - "tokio-rustls", - "tokio-util", - "tower 0.5.3", - "tower-http", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "wasm-streams", - "web-sys", - "webpki-roots 1.0.4", -] - -[[package]] -name = "resolv-conf" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e061d1b48cb8d38042de4ae0a7a6401009d6143dc80d2e2d6f31f0bdd6470c7" - -[[package]] -name = "reth-codecs" -version = "1.6.0" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.6.0#d8451e54e7267f9f1634118d6d279b2216f7e2bb" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-genesis", - "alloy-primitives", - "alloy-trie", - "bytes", - "modular-bitfield", - "op-alloy-consensus 0.18.14", - "reth-codecs-derive", - "reth-zstd-compressors", - "serde", -] - -[[package]] -name = "reth-codecs-derive" -version = "1.6.0" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.6.0#d8451e54e7267f9f1634118d6d279b2216f7e2bb" -dependencies = [ - "convert_case 0.7.1", - "proc-macro2", - "quote", - "syn 2.0.111", -] - -[[package]] -name = "reth-db" -version = "1.6.0" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.6.0#d8451e54e7267f9f1634118d6d279b2216f7e2bb" -dependencies = [ - "alloy-primitives", - "derive_more", - "eyre", - "metrics", - "page_size", - "reth-db-api", - "reth-fs-util", - "reth-libmdbx", - "reth-metrics", - "reth-nippy-jar", - "reth-static-file-types", - "reth-storage-errors", - "reth-tracing", - "rustc-hash 2.1.1", - "strum", - "sysinfo", - "thiserror 2.0.17", -] - -[[package]] -name = "reth-db-api" -version = "1.6.0" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.6.0#d8451e54e7267f9f1634118d6d279b2216f7e2bb" -dependencies = [ - "alloy-consensus", - "alloy-genesis", - "alloy-primitives", - "bytes", - "derive_more", - "metrics", - "modular-bitfield", - "parity-scale-codec", - "reth-codecs", - "reth-db-models", - "reth-ethereum-primitives", - "reth-primitives-traits", - "reth-prune-types", - "reth-stages-types", - "reth-storage-errors", - "reth-trie-common", - "roaring", - "serde", -] - -[[package]] -name = "reth-db-models" -version = "1.6.0" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.6.0#d8451e54e7267f9f1634118d6d279b2216f7e2bb" -dependencies = [ - "alloy-eips", - "alloy-primitives", - "bytes", - "modular-bitfield", - "reth-codecs", - "reth-primitives-traits", - "serde", -] - -[[package]] -name = "reth-ethereum-primitives" -version = "1.6.0" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.6.0#d8451e54e7267f9f1634118d6d279b2216f7e2bb" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-primitives", - "alloy-rlp", - "modular-bitfield", - "reth-codecs", - "reth-primitives-traits", - "reth-zstd-compressors", - "serde", - "serde_with", -] - -[[package]] -name = "reth-fs-util" -version = "1.6.0" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.6.0#d8451e54e7267f9f1634118d6d279b2216f7e2bb" -dependencies = [ - "serde", - "serde_json", - "thiserror 2.0.17", -] - -[[package]] -name = "reth-libmdbx" -version = "1.6.0" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.6.0#d8451e54e7267f9f1634118d6d279b2216f7e2bb" -dependencies = [ - "bitflags 2.10.0", - "byteorder", - "dashmap", - "derive_more", - "indexmap 2.12.1", - "parking_lot", - "reth-mdbx-sys", - "smallvec", - "thiserror 2.0.17", - "tracing", -] - -[[package]] -name = "reth-mdbx-sys" -version = "1.6.0" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.6.0#d8451e54e7267f9f1634118d6d279b2216f7e2bb" -dependencies = [ - "bindgen 0.70.1", - "cc", -] - -[[package]] -name = "reth-metrics" -version = "1.6.0" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.6.0#d8451e54e7267f9f1634118d6d279b2216f7e2bb" -dependencies = [ - "metrics", - "metrics-derive", -] - -[[package]] -name = "reth-nippy-jar" -version = "1.6.0" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.6.0#d8451e54e7267f9f1634118d6d279b2216f7e2bb" -dependencies = [ - "anyhow", - "bincode 1.3.3", - "derive_more", - "lz4_flex", - "memmap2", - "reth-fs-util", - "serde", - "thiserror 2.0.17", - "tracing", - "zstd", -] - -[[package]] -name = "reth-primitives-traits" -version = "1.6.0" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.6.0#d8451e54e7267f9f1634118d6d279b2216f7e2bb" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-genesis", - "alloy-primitives", - "alloy-rlp", - "alloy-rpc-types-eth", - "alloy-trie", - "auto_impl", - "byteorder", - "bytes", - "derive_more", - "modular-bitfield", - "once_cell", - "op-alloy-consensus 0.18.14", - "reth-codecs", - "revm-bytecode 6.2.2", - "revm-primitives 20.2.1", - "revm-state 7.0.5", - "secp256k1 0.30.0", - "serde", - "serde_with", - "thiserror 2.0.17", -] - -[[package]] -name = "reth-prune-types" -version = "1.6.0" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.6.0#d8451e54e7267f9f1634118d6d279b2216f7e2bb" -dependencies = [ - "alloy-primitives", - "derive_more", - "modular-bitfield", - "reth-codecs", - "serde", - "thiserror 2.0.17", -] - -[[package]] -name = "reth-stages-types" -version = "1.6.0" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.6.0#d8451e54e7267f9f1634118d6d279b2216f7e2bb" -dependencies = [ - "alloy-primitives", - "bytes", - "modular-bitfield", - "reth-codecs", - "reth-trie-common", - "serde", -] - -[[package]] -name = "reth-static-file-types" -version = "1.6.0" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.6.0#d8451e54e7267f9f1634118d6d279b2216f7e2bb" -dependencies = [ - "alloy-primitives", - "derive_more", - "serde", - "strum", -] - -[[package]] -name = "reth-storage-errors" -version = "1.6.0" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.6.0#d8451e54e7267f9f1634118d6d279b2216f7e2bb" -dependencies = [ - "alloy-eips", - "alloy-primitives", - "alloy-rlp", - "derive_more", - "reth-primitives-traits", - "reth-prune-types", - "reth-static-file-types", - "revm-database-interface 7.0.5", - "thiserror 2.0.17", -] - -[[package]] -name = "reth-tracing" -version = "1.6.0" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.6.0#d8451e54e7267f9f1634118d6d279b2216f7e2bb" -dependencies = [ - "clap", - "eyre", - "rolling-file", - "tracing", - "tracing-appender", - "tracing-journald", - "tracing-logfmt", - "tracing-subscriber 0.3.22", -] - -[[package]] -name = "reth-trie-common" -version = "1.6.0" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.6.0#d8451e54e7267f9f1634118d6d279b2216f7e2bb" -dependencies = [ - "alloy-consensus", - "alloy-primitives", - "alloy-rlp", - "alloy-rpc-types-eth", - "alloy-trie", - "bytes", - "derive_more", - "itertools 0.14.0", - "nybbles", - "reth-codecs", - "reth-primitives-traits", - "revm-database 7.0.5", - "serde", -] - -[[package]] -name = "reth-zstd-compressors" -version = "1.6.0" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.6.0#d8451e54e7267f9f1634118d6d279b2216f7e2bb" -dependencies = [ - "zstd", -] - -[[package]] -name = "revm" -version = "33.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c85ed0028f043f87b3c88d4a4cb6f0a76440085523b6a8afe5ff003cf418054" -dependencies = [ - "revm-bytecode 7.1.1", - "revm-context", - "revm-context-interface", - "revm-database 9.0.6", - "revm-database-interface 8.0.5", - "revm-handler", - "revm-inspector", - "revm-interpreter", - "revm-precompile", - "revm-primitives 21.0.2", - "revm-state 8.1.1", -] - -[[package]] -name = "revm-bytecode" -version = "6.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66c52031b73cae95d84cd1b07725808b5fd1500da3e5e24574a3b2dc13d9f16d" -dependencies = [ - "bitvec", - "phf 0.11.3", - "revm-primitives 20.2.1", - "serde", -] - -[[package]] -name = "revm-bytecode" -version = "7.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2c6b5e6e8dd1e28a4a60e5f46615d4ef0809111c9e63208e55b5c7058200fb0" -dependencies = [ - "bitvec", - "phf 0.13.1", - "revm-primitives 21.0.2", - "serde", -] - -[[package]] -name = "revm-context" -version = "12.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f038f0c9c723393ac897a5df9140b21cfa98f5753a2cb7d0f28fa430c4118abf" -dependencies = [ - "bitvec", - "cfg-if", - "derive-where", - "revm-bytecode 7.1.1", - "revm-context-interface", - "revm-database-interface 8.0.5", - "revm-primitives 21.0.2", - "revm-state 8.1.1", - "serde", -] - -[[package]] -name = "revm-context-interface" -version = "13.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "431c9a14e4ef1be41ae503708fd02d974f80ef1f2b6b23b5e402e8d854d1b225" -dependencies = [ - "alloy-eip2930", - "alloy-eip7702", - "auto_impl", - "either", - "revm-database-interface 8.0.5", - "revm-primitives 21.0.2", - "revm-state 8.1.1", - "serde", -] - -[[package]] -name = "revm-database" -version = "7.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39a276ed142b4718dcf64bc9624f474373ed82ef20611025045c3fb23edbef9c" -dependencies = [ - "alloy-eips", - "revm-bytecode 6.2.2", - "revm-database-interface 7.0.5", - "revm-primitives 20.2.1", - "revm-state 7.0.5", - "serde", -] - -[[package]] -name = "revm-database" -version = "9.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "980d8d6bba78c5dd35b83abbb6585b0b902eb25ea4448ed7bfba6283b0337191" -dependencies = [ - "alloy-eips", - "revm-bytecode 7.1.1", - "revm-database-interface 8.0.5", - "revm-primitives 21.0.2", - "revm-state 8.1.1", - "serde", -] - -[[package]] -name = "revm-database-interface" -version = "7.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c523c77e74eeedbac5d6f7c092e3851dbe9c7fec6f418b85992bd79229db361" -dependencies = [ - "auto_impl", - "either", - "revm-primitives 20.2.1", - "revm-state 7.0.5", - "serde", -] - -[[package]] -name = "revm-database-interface" -version = "8.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cce03e3780287b07abe58faf4a7f5d8be7e81321f93ccf3343c8f7755602bae" -dependencies = [ - "auto_impl", - "either", - "revm-primitives 21.0.2", - "revm-state 8.1.1", - "serde", -] - -[[package]] -name = "revm-handler" -version = "14.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d44f8f6dbeec3fecf9fe55f78ef0a758bdd92ea46cd4f1ca6e2a946b32c367f3" -dependencies = [ - "auto_impl", - "derive-where", - "revm-bytecode 7.1.1", - "revm-context", - "revm-context-interface", - "revm-database-interface 8.0.5", - "revm-interpreter", - "revm-precompile", - "revm-primitives 21.0.2", - "revm-state 8.1.1", - "serde", -] - -[[package]] -name = "revm-inspector" -version = "14.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5617e49216ce1ca6c8826bcead0386bc84f49359ef67cde6d189961735659f93" -dependencies = [ - "auto_impl", - "either", - "revm-context", - "revm-database-interface 8.0.5", - "revm-handler", - "revm-interpreter", - "revm-primitives 21.0.2", - "revm-state 8.1.1", - "serde", - "serde_json", -] - -[[package]] -name = "revm-interpreter" -version = "31.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26ec36405f7477b9dccdc6caa3be19adf5662a7a0dffa6270cdb13a090c077e5" -dependencies = [ - "revm-bytecode 7.1.1", - "revm-context-interface", - "revm-primitives 21.0.2", - "revm-state 8.1.1", - "serde", -] - -[[package]] -name = "revm-precompile" -version = "31.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a62958af953cc4043e93b5be9b8497df84cc3bd612b865c49a7a7dfa26a84e2" -dependencies = [ - "ark-bls12-381", - "ark-bn254", - "ark-ec", - "ark-ff 0.5.0", - "ark-serialize 0.5.0", - "arrayref", - "aurora-engine-modexp", - "blst", - "c-kzg", - "cfg-if", - "k256", - "p256", - "revm-primitives 21.0.2", - "ripemd", - "rug", - "secp256k1 0.31.1", - "sha2", -] - -[[package]] -name = "revm-primitives" -version = "20.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aa29d9da06fe03b249b6419b33968ecdf92ad6428e2f012dc57bcd619b5d94e" -dependencies = [ - "alloy-primitives", - "num_enum", - "once_cell", - "serde", -] - -[[package]] -name = "revm-primitives" -version = "21.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29e161db429d465c09ba9cbff0df49e31049fe6b549e28eb0b7bd642fcbd4412" -dependencies = [ - "alloy-primitives", - "num_enum", - "once_cell", - "serde", -] - -[[package]] -name = "revm-state" -version = "7.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f64fbacb86008394aaebd3454f9643b7d5a782bd251135e17c5b33da592d84d" -dependencies = [ - "bitflags 2.10.0", - "revm-bytecode 6.2.2", - "revm-primitives 20.2.1", - "serde", -] - -[[package]] -name = "revm-state" -version = "8.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d8be953b7e374dbdea0773cf360debed8df394ea8d82a8b240a6b5da37592fc" -dependencies = [ - "bitflags 2.10.0", - "revm-bytecode 7.1.1", - "revm-primitives 21.0.2", - "serde", -] - -[[package]] -name = "rfc6979" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" -dependencies = [ - "hmac", - "subtle", -] - -[[package]] -name = "rgb" -version = "0.8.52" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c6a884d2998352bb4daf0183589aec883f16a6da1f4dde84d8e2e9a5409a1ce" -dependencies = [ - "bytemuck", -] - -[[package]] -name = "ring" -version = "0.17.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" -dependencies = [ - "cc", - "cfg-if", - "getrandom 0.2.16", - "libc", - "untrusted", - "windows-sys 0.52.0", -] - -[[package]] -name = "ripemd" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f" -dependencies = [ - "digest 0.10.7", -] - -[[package]] -name = "rkyv" -version = "0.8.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "360b333c61ae24e5af3ae7c8660bd6b21ccd8200dbbc5d33c2454421e85b9c69" -dependencies = [ - "bytecheck", - "bytes", - "hashbrown 0.16.1", - "indexmap 2.12.1", - "munge", - "ptr_meta", - "rancor", - "rend", - "rkyv_derive", - "tinyvec", - "uuid", -] - -[[package]] -name = "rkyv_derive" -version = "0.8.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c02f8cdd12b307ab69fe0acf4cd2249c7460eb89dce64a0febadf934ebb6a9e" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.111", -] - -[[package]] -name = "rlimit" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7043b63bd0cd1aaa628e476b80e6d4023a3b50eb32789f2728908107bd0c793a" -dependencies = [ - "libc", -] - -[[package]] -name = "rlp" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" -dependencies = [ - "bytes", - "rustc-hex", -] - -[[package]] -name = "roaring" -version = "0.10.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19e8d2cfa184d94d0726d650a9f4a1be7f9b76ac9fdb954219878dc00c1c1e7b" -dependencies = [ - "bytemuck", - "byteorder", -] - -[[package]] -name = "rocksdb" -version = "0.24.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddb7af00d2b17dbd07d82c0063e25411959748ff03e8d4f96134c2ff41fce34f" -dependencies = [ - "libc", - "librocksdb-sys", -] - -[[package]] -name = "rolling-file" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8395b4f860856b740f20a296ea2cd4d823e81a2658cf05ef61be22916026a906" -dependencies = [ - "chrono", -] - -[[package]] -name = "rollup-boost" -version = "0.7.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76d1d7c635dec67c86346eb871e8a22dd1596c33d4a96a9a4926b4d2fd703b63" -dependencies = [ - "alloy-primitives", - "alloy-rlp", - "alloy-rpc-types-engine", - "alloy-rpc-types-eth", - "alloy-serde", - "backoff", - "blake3", - "bytes", - "clap", - "dashmap", - "dotenvy", - "ed25519-dalek", - "eyre", - "futures", - "hex", - "http", - "http-body-util", - "hyper", - "hyper-rustls", - "hyper-util", - "jsonrpsee", - "lru 0.16.3", - "metrics", - "metrics-derive", - "metrics-exporter-prometheus 0.16.2", - "metrics-util 0.19.1", - "moka", - "op-alloy-rpc-types-engine", - "opentelemetry", - "opentelemetry-otlp", - "opentelemetry_sdk", - "parking_lot", - "paste", - "rollup-boost-types", - "rustls", - "serde", - "serde_json", - "sha2", - "thiserror 2.0.17", - "tokio", - "tokio-tungstenite", - "tokio-util", - "tower 0.5.3", - "tower-http", - "tracing", - "tracing-opentelemetry", - "tracing-subscriber 0.3.22", - "url", - "uuid", - "vergen", - "vergen-git2", -] - -[[package]] -name = "rollup-boost-types" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "756f32c7f241ab6d91d823e94d20f6e0729bfcaec3b545bd30f33b24e50f5821" -dependencies = [ - "alloy-primitives", - "alloy-rlp", - "alloy-rpc-types-engine", - "alloy-rpc-types-eth", - "alloy-serde", - "blake3", - "ed25519-dalek", - "futures", - "moka", - "op-alloy-rpc-types-engine", - "serde", - "serde_json", - "thiserror 2.0.17", - "tracing", -] - -[[package]] -name = "route-recognizer" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afab94fb28594581f62d981211a9a4d53cc8130bbcbbb89a0440d9b8e81a7746" - -[[package]] -name = "rstest" -version = "0.26.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5a3193c063baaa2a95a33f03035c8a72b83d97a54916055ba22d35ed3839d49" -dependencies = [ - "futures-timer", - "futures-util", - "rstest_macros", -] - -[[package]] -name = "rstest_macros" -version = "0.26.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c845311f0ff7951c5506121a9ad75aec44d083c31583b2ea5a30bcb0b0abba0" -dependencies = [ - "cfg-if", - "glob", - "proc-macro-crate", - "proc-macro2", - "quote", - "regex", - "relative-path", - "rustc_version 0.4.1", - "syn 2.0.111", - "unicode-ident", -] - -[[package]] -name = "rtnetlink" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a552eb82d19f38c3beed3f786bd23aa434ceb9ac43ab44419ca6d67a7e186c0" -dependencies = [ - "futures", - "log", - "netlink-packet-core", - "netlink-packet-route", - "netlink-packet-utils", - "netlink-proto", - "netlink-sys", - "nix", - "thiserror 1.0.69", - "tokio", -] - -[[package]] -name = "rug" -version = "1.28.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58ad2e973fe3c3214251a840a621812a4f40468da814b1a3d6947d433c2af11f" -dependencies = [ - "az", - "gmp-mpfr-sys", - "libc", - "libm", -] - -[[package]] -name = "ruint" -version = "1.17.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c141e807189ad38a07276942c6623032d3753c8859c146104ac2e4d68865945a" -dependencies = [ - "alloy-rlp", - "arbitrary", - "ark-ff 0.3.0", - "ark-ff 0.4.2", - "ark-ff 0.5.0", - "bytes", - "fastrlp 0.3.1", - "fastrlp 0.4.0", - "num-bigint", - "num-integer", - "num-traits", - "parity-scale-codec", - "primitive-types", - "proptest", - "rand 0.8.5", - "rand 0.9.2", - "rlp", - "ruint-macro", - "serde_core", - "valuable", - "zeroize", -] - -[[package]] -name = "ruint-macro" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48fd7bd8a6377e15ad9d42a8ec25371b94ddc67abe7c8b9127bec79bebaaae18" - -[[package]] -name = "rustc-demangle" -version = "0.1.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace" - -[[package]] -name = "rustc-hash" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" - -[[package]] -name = "rustc-hash" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" -dependencies = [ - "rand 0.8.5", -] - -[[package]] -name = "rustc-hex" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" - -[[package]] -name = "rustc_version" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" -dependencies = [ - "semver 0.11.0", -] - -[[package]] -name = "rustc_version" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" -dependencies = [ - "semver 1.0.27", -] - -[[package]] -name = "rusticata-macros" -version = "4.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "faf0c4a6ece9950b9abdb62b1cfcf2a68b3b67a10ba445b3bb85be2a293d0632" -dependencies = [ - "nom", -] - -[[package]] -name = "rustix" -version = "0.38.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" -dependencies = [ - "bitflags 2.10.0", - "errno", - "libc", - "linux-raw-sys 0.4.15", - "windows-sys 0.59.0", -] - -[[package]] -name = "rustix" -version = "1.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "146c9e247ccc180c1f61615433868c99f3de3ae256a30a43b49f67c2d9171f34" -dependencies = [ - "bitflags 2.10.0", - "errno", - "libc", - "linux-raw-sys 0.11.0", - "windows-sys 0.61.2", -] - -[[package]] -name = "rustls" -version = "0.23.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0ebcbd2f03de0fc1122ad9bb24b127a5a6cd51d72604a3f3c50ac459762b6cc" -dependencies = [ - "aws-lc-rs", - "log", - "once_cell", - "ring", - "rustls-pki-types", - "rustls-webpki", - "subtle", - "zeroize", -] - -[[package]] -name = "rustls-native-certs" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9980d917ebb0c0536119ba501e90834767bffc3d60641457fd84a1f3fd337923" -dependencies = [ - "openssl-probe", - "rustls-pki-types", - "schannel", - "security-framework 3.5.1", -] - -[[package]] -name = "rustls-pki-types" -version = "1.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "708c0f9d5f54ba0272468c1d306a52c495b31fa155e91bc25371e6df7996908c" -dependencies = [ - "web-time", - "zeroize", -] - -[[package]] -name = "rustls-platform-verifier" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19787cda76408ec5404443dc8b31795c87cd8fec49762dc75fa727740d34acc1" -dependencies = [ - "core-foundation 0.10.1", - "core-foundation-sys", - "jni", - "log", - "once_cell", - "rustls", - "rustls-native-certs", - "rustls-platform-verifier-android", - "rustls-webpki", - "security-framework 3.5.1", - "security-framework-sys", - "webpki-root-certs 0.26.11", - "windows-sys 0.59.0", -] - -[[package]] -name = "rustls-platform-verifier-android" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f" - -[[package]] -name = "rustls-webpki" -version = "0.103.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a17884ae0c1b773f1ccd2bd4a8c72f16da897310a98b0e84bf349ad5ead92fc" -dependencies = [ - "aws-lc-rs", - "ring", - "rustls-pki-types", - "untrusted", -] - -[[package]] -name = "rustversion" -version = "1.0.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" - -[[package]] -name = "rusty-fork" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc6bf79ff24e648f6da1f8d1f011e9cac26491b619e6b9280f2b47f1774e6ee2" -dependencies = [ - "fnv", - "quick-error", - "tempfile", - "wait-timeout", -] - -[[package]] -name = "rw-stream-sink" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8c9026ff5d2f23da5e45bbc283f156383001bfb09c4e44256d02c1a685fe9a1" -dependencies = [ - "futures", - "pin-project", - "static_assertions", -] - -[[package]] -name = "ryu" -version = "1.0.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" - -[[package]] -name = "same-file" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "schannel" -version = "0.1.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1" -dependencies = [ - "windows-sys 0.61.2", -] - -[[package]] -name = "schemars" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f" -dependencies = [ - "dyn-clone", - "ref-cast", - "serde", - "serde_json", -] - -[[package]] -name = "schemars" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9558e172d4e8533736ba97870c4b2cd63f84b382a3d6eb063da41b91cce17289" -dependencies = [ - "dyn-clone", - "ref-cast", - "serde", - "serde_json", -] - -[[package]] -name = "scopeguard" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" - -[[package]] -name = "sec1" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" -dependencies = [ - "base16ct", - "der", - "generic-array", - "pkcs8", - "serdect", - "subtle", - "zeroize", -] - -[[package]] -name = "secp256k1" -version = "0.30.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b50c5943d326858130af85e049f2661ba3c78b26589b8ab98e65e80ae44a1252" -dependencies = [ - "bitcoin_hashes", - "rand 0.8.5", - "secp256k1-sys 0.10.1", - "serde", -] - -[[package]] -name = "secp256k1" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c3c81b43dc2d8877c216a3fccf76677ee1ebccd429566d3e67447290d0c42b2" -dependencies = [ - "bitcoin_hashes", - "rand 0.9.2", - "secp256k1-sys 0.11.0", -] - -[[package]] -name = "secp256k1-sys" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4387882333d3aa8cb20530a17c69a3752e97837832f34f6dccc760e715001d9" -dependencies = [ - "cc", -] - -[[package]] -name = "secp256k1-sys" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcb913707158fadaf0d8702c2db0e857de66eb003ccfdda5924b5f5ac98efb38" -dependencies = [ - "cc", -] - -[[package]] -name = "security-framework" -version = "2.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" -dependencies = [ - "bitflags 2.10.0", - "core-foundation 0.9.4", - "core-foundation-sys", - "libc", - "security-framework-sys", -] - -[[package]] -name = "security-framework" -version = "3.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3297343eaf830f66ede390ea39da1d462b6b0c1b000f420d0a83f898bbbe6ef" -dependencies = [ - "bitflags 2.10.0", - "core-foundation 0.10.1", - "core-foundation-sys", - "libc", - "security-framework-sys", -] - -[[package]] -name = "security-framework-sys" -version = "2.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "semver" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" -dependencies = [ - "semver-parser", -] - -[[package]] -name = "semver" -version = "1.0.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" -dependencies = [ - "serde", - "serde_core", -] - -[[package]] -name = "semver-parser" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9900206b54a3527fdc7b8a938bffd94a568bac4f4aa8113b209df75a09c0dec2" -dependencies = [ - "pest", -] - -[[package]] -name = "send_wrapper" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f638d531eccd6e23b980caf34876660d38e265409d8e99b397ab71eb3612fad0" - -[[package]] -name = "send_wrapper" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" - -[[package]] -name = "serde" -version = "1.0.228" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" -dependencies = [ - "serde_core", - "serde_derive", -] - -[[package]] -name = "serde_combinators" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0de5fb30ae2918667d3cee99ef4b112f1f7ca0a6c58fa349d7d9e76035c72f8b" -dependencies = [ - "serde", -] - -[[package]] -name = "serde_core" -version = "1.0.228" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde_derive" -version = "1.0.228" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.111", -] - -[[package]] -name = "serde_json" -version = "1.0.149" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" -dependencies = [ - "indexmap 2.12.1", - "itoa", - "memchr", - "serde", - "serde_core", - "zmij", -] - -[[package]] -name = "serde_regex" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8136f1a4ea815d7eac4101cfd0b16dc0cb5e1fe1b8609dfd728058656b7badf" -dependencies = [ - "regex", - "serde", -] - -[[package]] -name = "serde_repr" -version = "0.1.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.111", -] - -[[package]] -name = "serde_spanned" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8bbf91e5a4d6315eee45e704372590b30e260ee83af6639d64557f51b067776" -dependencies = [ - "serde_core", -] - -[[package]] -name = "serde_urlencoded" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" -dependencies = [ - "form_urlencoded", - "itoa", - "ryu", - "serde", -] - -[[package]] -name = "serde_with" -version = "3.16.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fa237f2807440d238e0364a218270b98f767a00d3dada77b1c53ae88940e2e7" -dependencies = [ - "base64", - "chrono", - "hex", - "indexmap 1.9.3", - "indexmap 2.12.1", - "schemars 0.9.0", - "schemars 1.1.0", - "serde_core", - "serde_json", - "serde_with_macros", - "time", -] - -[[package]] -name = "serde_with_macros" -version = "3.16.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52a8e3ca0ca629121f70ab50f95249e5a6f925cc0f6ffe8256c45b728875706c" -dependencies = [ - "darling 0.21.3", - "proc-macro2", - "quote", - "syn 2.0.111", -] - -[[package]] -name = "serdect" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a84f14a19e9a014bb9f4512488d9829a68e04ecabffb0f9904cd1ace94598177" -dependencies = [ - "base16ct", - "serde", -] - -[[package]] -name = "sha1" -version = "0.10.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest 0.10.7", -] - -[[package]] -name = "sha2" -version = "0.10.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest 0.10.7", -] - -[[package]] -name = "sha3" -version = "0.10.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" -dependencies = [ - "digest 0.10.7", - "keccak", -] - -[[package]] -name = "sha3-asm" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c28efc5e327c837aa837c59eae585fc250715ef939ac32881bcc11677cd02d46" -dependencies = [ - "cc", - "cfg-if", -] - -[[package]] -name = "sharded-slab" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" -dependencies = [ - "lazy_static", -] - -[[package]] -name = "shlex" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" - -[[package]] -name = "signal-hook-registry" -version = "1.4.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7664a098b8e616bdfcc2dc0e9ac44eb231eedf41db4e9fe95d8d32ec728dedad" -dependencies = [ - "libc", -] - -[[package]] -name = "signature" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" -dependencies = [ - "digest 0.10.7", - "rand_core 0.6.4", -] - -[[package]] -name = "simd-adler32" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" - -[[package]] -name = "simdutf8" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" - -[[package]] -name = "similar" -version = "2.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbbb5d9659141646ae647b42fe094daf6c6192d1620870b449d9557f748b2daa" - -[[package]] -name = "simple_asn1" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "297f631f50729c8c99b84667867963997ec0b50f32b2a7dbcab828ef0541e8bb" -dependencies = [ - "num-bigint", - "num-traits", - "thiserror 2.0.17", - "time", -] - -[[package]] -name = "siphasher" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" - -[[package]] -name = "sketches-ddsketch" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1e9a774a6c28142ac54bb25d25562e6bcf957493a184f15ad4eebccb23e410a" - -[[package]] -name = "slab" -version = "0.4.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" - -[[package]] -name = "smallvec" -version = "1.15.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" -dependencies = [ - "arbitrary", - "serde", -] - -[[package]] -name = "snap" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b6b67fb9a61334225b5b790716f609cd58395f895b3fe8b328786812a40bc3b" - -[[package]] -name = "snow" -version = "0.9.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "850948bee068e713b8ab860fe1adc4d109676ab4c3b621fd8147f06b261f2f85" -dependencies = [ - "aes-gcm", - "blake2", - "chacha20poly1305", - "curve25519-dalek", - "rand_core 0.6.4", - "ring", - "rustc_version 0.4.1", - "sha2", - "subtle", -] - -[[package]] -name = "socket2" -version = "0.5.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" -dependencies = [ - "libc", - "windows-sys 0.52.0", -] - -[[package]] -name = "socket2" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881" -dependencies = [ - "libc", - "windows-sys 0.60.2", -] - -[[package]] -name = "soketto" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e859df029d160cb88608f5d7df7fb4753fd20fdfb4de5644f3d8b8440841721" -dependencies = [ - "base64", - "bytes", - "futures", - "http", - "httparse", - "log", - "rand 0.8.5", - "sha1", -] - -[[package]] -name = "spin" -version = "0.9.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" -dependencies = [ - "lock_api", -] - -[[package]] -name = "spin" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5fe4ccb98d9c292d56fec89a5e07da7fc4cf0dc11e156b41793132775d3e591" -dependencies = [ - "lock_api", -] - -[[package]] -name = "spki" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" -dependencies = [ - "base64ct", - "der", -] - -[[package]] -name = "stable_deref_trait" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" - -[[package]] -name = "static_assertions" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" - -[[package]] -name = "str_stack" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9091b6114800a5f2141aee1d1b9d6ca3592ac062dc5decb3764ec5895a47b4eb" - -[[package]] -name = "stringmetrics" -version = "2.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b3c8667cd96245cbb600b8dec5680a7319edd719c5aa2b5d23c6bff94f39765" - -[[package]] -name = "strsim" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" - -[[package]] -name = "strum" -version = "0.27.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf" -dependencies = [ - "strum_macros", -] - -[[package]] -name = "strum_macros" -version = "0.27.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7" -dependencies = [ - "heck", - "proc-macro2", - "quote", - "syn 2.0.111", -] - -[[package]] -name = "subtle" -version = "2.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" - -[[package]] -name = "symbolic-common" -version = "12.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3d8046c5674ab857104bc4559d505f4809b8060d57806e45d49737c97afeb60" -dependencies = [ - "debugid", - "memmap2", - "stable_deref_trait", - "uuid", -] - -[[package]] -name = "symbolic-demangle" -version = "12.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1accb6e5c4b0f682de907623912e616b44be1c9e725775155546669dbff720ec" -dependencies = [ - "cpp_demangle", - "rustc-demangle", - "symbolic-common", -] - -[[package]] -name = "syn" -version = "1.0.109" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "syn" -version = "2.0.111" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "390cc9a294ab71bdb1aa2e99d13be9c753cd2d7bd6560c77118597410c4d2e87" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "syn-solidity" -version = "1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f92d01b5de07eaf324f7fca61cc6bd3d82bbc1de5b6c963e6fe79e86f36580d" -dependencies = [ - "paste", - "proc-macro2", - "quote", - "syn 2.0.111", -] - -[[package]] -name = "sync_wrapper" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" -dependencies = [ - "futures-core", -] - -[[package]] -name = "synstructure" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.111", -] - -[[package]] -name = "sysinfo" -version = "0.33.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fc858248ea01b66f19d8e8a6d55f41deaf91e9d495246fd01368d99935c6c01" -dependencies = [ - "core-foundation-sys", - "libc", - "memchr", - "ntapi", - "windows 0.57.0", -] - -[[package]] -name = "system-configuration" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" -dependencies = [ - "bitflags 2.10.0", - "core-foundation 0.9.4", - "system-configuration-sys", -] - -[[package]] -name = "system-configuration-sys" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "tabled" -version = "0.20.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e39a2ee1fbcd360805a771e1b300f78cc88fec7b8d3e2f71cd37bbf23e725c7d" -dependencies = [ - "papergrid", - "tabled_derive", - "testing_table", -] - -[[package]] -name = "tabled_derive" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ea5d1b13ca6cff1f9231ffd62f15eefd72543dab5e468735f1a456728a02846" -dependencies = [ - "heck", - "proc-macro-error2", - "proc-macro2", - "quote", - "syn 2.0.111", -] - -[[package]] -name = "tabwriter" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fce91f2f0ec87dff7e6bcbbeb267439aa1188703003c6055193c821487400432" -dependencies = [ - "unicode-width", -] - -[[package]] -name = "tagptr" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b2093cf4c8eb1e67749a6762251bc9cd836b6fc171623bd0a9d324d37af2417" - -[[package]] -name = "tap" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" - -[[package]] -name = "tempfile" -version = "3.24.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "655da9c7eb6305c55742045d5a8d2037996d61d8de95806335c7c86ce0f82e9c" -dependencies = [ - "fastrand", - "getrandom 0.3.4", - "once_cell", - "rustix 1.1.3", - "windows-sys 0.61.2", -] - -[[package]] -name = "termtree" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f50febec83f5ee1df3015341d8bd429f2d1cc62bcba7ea2076759d315084683" - -[[package]] -name = "test-fuzz" -version = "7.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11e5c77910b1d5b469a342be541cf44933f0ad2c4b8d5acb32ee46697fd60546" -dependencies = [ - "serde", - "serde_combinators", - "test-fuzz-internal", - "test-fuzz-macro", - "test-fuzz-runtime", -] - -[[package]] -name = "test-fuzz-internal" -version = "7.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d25f2f0ee315b130411a98570dd128dfe344bfaa0a28bf33d38f4a1fe85f39b" -dependencies = [ - "bincode 2.0.1", - "cargo_metadata 0.19.2", - "serde", -] - -[[package]] -name = "test-fuzz-macro" -version = "7.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8c03ba0a9e3e4032f94d71c85e149af147843c6f212e4ca4383542d606b04a6" -dependencies = [ - "darling 0.21.3", - "heck", - "itertools 0.14.0", - "prettyplease", - "proc-macro2", - "quote", - "syn 2.0.111", -] - -[[package]] -name = "test-fuzz-runtime" -version = "7.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9a4ac481aa983d386e857a7be0006c2f0ef26e0c5326bbc7262f73c2891b91d" -dependencies = [ - "hex", - "num-traits", - "serde", - "sha1", - "test-fuzz-internal", -] - -[[package]] -name = "testing_table" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f8daae29995a24f65619e19d8d31dea5b389f3d853d8bf297bbf607cd0014cc" -dependencies = [ - "unicode-width", -] - -[[package]] -name = "thiserror" -version = "1.0.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" -dependencies = [ - "thiserror-impl 1.0.69", -] - -[[package]] -name = "thiserror" -version = "2.0.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8" -dependencies = [ - "thiserror-impl 2.0.17", -] - -[[package]] -name = "thiserror-impl" -version = "1.0.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.111", -] - -[[package]] -name = "thiserror-impl" -version = "2.0.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.111", -] - -[[package]] -name = "thread_local" -version = "1.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "threadpool" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa" -dependencies = [ - "num_cpus", -] - -[[package]] -name = "time" -version = "0.3.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9e442fc33d7fdb45aa9bfeb312c095964abdf596f7567261062b2a7107aaabd" -dependencies = [ - "deranged", - "itoa", - "libc", - "num-conv", - "num_threads", - "powerfmt", - "serde_core", - "time-core", - "time-macros", -] - -[[package]] -name = "time-core" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b36ee98fd31ec7426d599183e8fe26932a8dc1fb76ddb6214d05493377d34ca" - -[[package]] -name = "time-macros" -version = "0.2.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71e552d1249bf61ac2a52db88179fd0673def1e1ad8243a00d9ec9ed71fee3dd" -dependencies = [ - "num-conv", - "time-core", -] - -[[package]] -name = "tiny-keccak" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" -dependencies = [ - "crunchy", -] - -[[package]] -name = "tinystr" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" -dependencies = [ - "displaydoc", - "zerovec", -] - -[[package]] -name = "tinytemplate" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc" -dependencies = [ - "serde", - "serde_json", -] - -[[package]] -name = "tinyvec" -version = "1.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" -dependencies = [ - "tinyvec_macros", -] - -[[package]] -name = "tinyvec_macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" - -[[package]] -name = "tokio" -version = "1.49.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72a2903cd7736441aac9df9d7688bd0ce48edccaadf181c3b90be801e81d3d86" -dependencies = [ - "bytes", - "libc", - "mio", - "parking_lot", - "pin-project-lite", - "signal-hook-registry", - "socket2 0.6.1", - "tokio-macros", - "windows-sys 0.61.2", -] - -[[package]] -name = "tokio-macros" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.111", -] - -[[package]] -name = "tokio-native-tls" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" -dependencies = [ - "native-tls", - "tokio", -] - -[[package]] -name = "tokio-rustls" -version = "0.26.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" -dependencies = [ - "rustls", - "tokio", -] - -[[package]] -name = "tokio-stream" -version = "0.1.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32da49809aab5c3bc678af03902d4ccddea2a87d028d86392a4b1560c6906c70" -dependencies = [ - "futures-core", - "pin-project-lite", - "tokio", - "tokio-util", -] - -[[package]] -name = "tokio-tungstenite" -version = "0.26.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a9daff607c6d2bf6c16fd681ccb7eecc83e4e2cdc1ca067ffaadfca5de7f084" -dependencies = [ - "futures-util", - "log", - "native-tls", - "rustls", - "rustls-pki-types", - "tokio", - "tokio-native-tls", - "tokio-rustls", - "tungstenite", - "webpki-roots 0.26.11", -] - -[[package]] -name = "tokio-util" -version = "0.7.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" -dependencies = [ - "bytes", - "futures-core", - "futures-io", - "futures-sink", - "pin-project-lite", - "slab", - "tokio", -] - -[[package]] -name = "toml" -version = "0.9.11+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3afc9a848309fe1aaffaed6e1546a7a14de1f935dc9d89d32afd9a44bab7c46" -dependencies = [ - "serde_core", - "serde_spanned", - "toml_datetime", - "toml_parser", - "winnow", -] - -[[package]] -name = "toml_datetime" -version = "0.7.5+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" -dependencies = [ - "serde_core", -] - -[[package]] -name = "toml_edit" -version = "0.23.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d7cbc3b4b49633d57a0509303158ca50de80ae32c265093b24c414705807832" -dependencies = [ - "indexmap 2.12.1", - "toml_datetime", - "toml_parser", - "winnow", -] - -[[package]] -name = "toml_parser" -version = "1.0.6+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3198b4b0a8e11f09dd03e133c0280504d0801269e9afa46362ffde1cbeebf44" -dependencies = [ - "winnow", -] - -[[package]] -name = "tonic" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877c5b330756d856ffcc4553ab34a5684481ade925ecc54bcd1bf02b1d0d4d52" -dependencies = [ - "async-stream", - "async-trait", - "axum", - "base64", - "bytes", - "h2", - "http", - "http-body", - "http-body-util", - "hyper", - "hyper-timeout", - "hyper-util", - "percent-encoding", - "pin-project", - "prost", - "socket2 0.5.10", - "tokio", - "tokio-stream", - "tower 0.4.13", - "tower-layer", - "tower-service", - "tracing", -] - -[[package]] -name = "tower" -version = "0.4.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" -dependencies = [ - "futures-core", - "futures-util", - "indexmap 1.9.3", - "pin-project", - "pin-project-lite", - "rand 0.8.5", - "slab", - "tokio", - "tokio-util", - "tower-layer", - "tower-service", - "tracing", -] - -[[package]] -name = "tower" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" -dependencies = [ - "futures-core", - "futures-util", - "pin-project-lite", - "sync_wrapper", - "tokio", - "tower-layer", - "tower-service", -] - -[[package]] -name = "tower-http" -version = "0.6.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8" -dependencies = [ - "async-compression", - "bitflags 2.10.0", - "bytes", - "futures-core", - "futures-util", - "http", - "http-body", - "http-body-util", - "iri-string", - "pin-project-lite", - "tokio", - "tokio-util", - "tower 0.5.3", - "tower-layer", - "tower-service", -] - -[[package]] -name = "tower-layer" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" - -[[package]] -name = "tower-service" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" - -[[package]] -name = "tracing" -version = "0.1.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" -dependencies = [ - "log", - "pin-project-lite", - "tracing-attributes", - "tracing-core", -] - -[[package]] -name = "tracing-appender" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "786d480bce6247ab75f005b14ae1624ad978d3029d9113f0a22fa1ac773faeaf" -dependencies = [ - "crossbeam-channel", - "thiserror 2.0.17", - "time", - "tracing-subscriber 0.3.22", -] - -[[package]] -name = "tracing-attributes" -version = "0.1.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.111", -] - -[[package]] -name = "tracing-core" -version = "0.1.36" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" -dependencies = [ - "once_cell", - "valuable", -] - -[[package]] -name = "tracing-journald" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc0b4143302cf1022dac868d521e36e8b27691f72c84b3311750d5188ebba657" -dependencies = [ - "libc", - "tracing-core", - "tracing-subscriber 0.3.22", -] - -[[package]] -name = "tracing-log" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" -dependencies = [ - "log", - "once_cell", - "tracing-core", -] - -[[package]] -name = "tracing-logfmt" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b1f47d22deb79c3f59fcf2a1f00f60cbdc05462bf17d1cd356c1fefa3f444bd" -dependencies = [ - "time", - "tracing", - "tracing-core", - "tracing-subscriber 0.3.22", -] - -[[package]] -name = "tracing-opentelemetry" -version = "0.29.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "721f2d2569dce9f3dfbbddee5906941e953bfcdf736a62da3377f5751650cc36" -dependencies = [ - "js-sys", - "once_cell", - "opentelemetry", - "opentelemetry_sdk", - "smallvec", - "tracing", - "tracing-core", - "tracing-log", - "tracing-subscriber 0.3.22", - "web-time", -] - -[[package]] -name = "tracing-serde" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "704b1aeb7be0d0a84fc9828cae51dab5970fee5088f83d1dd7ee6f6246fc6ff1" -dependencies = [ - "serde", - "tracing-core", -] - -[[package]] -name = "tracing-subscriber" -version = "0.2.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e0d2eaa99c3c2e41547cfa109e910a68ea03823cccad4a0525dcbc9b01e8c71" -dependencies = [ - "tracing-core", -] - -[[package]] -name = "tracing-subscriber" -version = "0.3.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f30143827ddab0d256fd843b7a66d164e9f271cfa0dde49142c5ca0ca291f1e" -dependencies = [ - "matchers", - "nu-ansi-term", - "once_cell", - "regex-automata", - "serde", - "serde_json", - "sharded-slab", - "smallvec", - "thread_local", - "tracing", - "tracing-core", - "tracing-log", - "tracing-serde", -] - -[[package]] -name = "try-lock" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" - -[[package]] -name = "tungstenite" -version = "0.26.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4793cb5e56680ecbb1d843515b23b6de9a75eb04b66643e256a396d43be33c13" -dependencies = [ - "bytes", - "data-encoding", - "http", - "httparse", - "log", - "native-tls", - "rand 0.9.2", - "rustls", - "rustls-pki-types", - "sha1", - "thiserror 2.0.17", - "utf-8", -] - -[[package]] -name = "typenum" -version = "1.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" - -[[package]] -name = "ucd-trie" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" - -[[package]] -name = "uint" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52" -dependencies = [ - "byteorder", - "crunchy", - "hex", - "static_assertions", -] - -[[package]] -name = "uint" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "909988d098b2f738727b161a106cfc7cab00c539c2687a8836f8e565976fb53e" -dependencies = [ - "byteorder", - "crunchy", - "hex", - "static_assertions", -] - -[[package]] -name = "unarray" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" - -[[package]] -name = "unicode-ident" -version = "1.0.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" - -[[package]] -name = "unicode-segmentation" -version = "1.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" - -[[package]] -name = "unicode-width" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" - -[[package]] -name = "unicode-xid" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" - -[[package]] -name = "universal-hash" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" -dependencies = [ - "crypto-common", - "subtle", -] - -[[package]] -name = "unsigned-varint" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6889a77d49f1f013504cec6bf97a2c730394adedaeb1deb5ea08949a50541105" - -[[package]] -name = "unsigned-varint" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb066959b24b5196ae73cb057f45598450d2c5f71460e98c49b738086eff9c06" - -[[package]] -name = "untrusted" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" - -[[package]] -name = "unty" -version = "0.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d49784317cd0d1ee7ec5c716dd598ec5b4483ea832a2dced265471cc0f690ae" - -[[package]] -name = "url" -version = "2.5.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" -dependencies = [ - "form_urlencoded", - "idna", - "percent-encoding", - "serde", -] - -[[package]] -name = "utf-8" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" - -[[package]] -name = "utf8_iter" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" - -[[package]] -name = "utf8parse" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" - -[[package]] -name = "uuid" -version = "1.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2e054861b4bd027cd373e18e8d8d8e6548085000e41290d95ce0c373a654b4a" -dependencies = [ - "getrandom 0.3.4", - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "valuable" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" - -[[package]] -name = "vcpkg" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" - -[[package]] -name = "vergen" -version = "9.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b849a1f6d8639e8de261e81ee0fc881e3e3620db1af9f2e0da015d4382ceaf75" -dependencies = [ - "anyhow", - "cargo_metadata 0.23.1", - "derive_builder", - "regex", - "rustversion", - "time", - "vergen-lib", -] - -[[package]] -name = "vergen-git2" -version = "9.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d51ab55ddf1188c8d679f349775362b0fa9e90bd7a4ac69838b2a087623f0d57" -dependencies = [ - "anyhow", - "derive_builder", - "git2", - "rustversion", - "time", - "vergen", - "vergen-lib", -] - -[[package]] -name = "vergen-lib" -version = "9.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b34a29ba7e9c59e62f229ae1932fb1b8fb8a6fdcc99215a641913f5f5a59a569" -dependencies = [ - "anyhow", - "derive_builder", - "rustversion", -] - -[[package]] -name = "version_check" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" - -[[package]] -name = "virtue" -version = "0.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "051eb1abcf10076295e815102942cc58f9d5e3b4560e46e53c21e8ff6f3af7b1" - -[[package]] -name = "wait-timeout" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09ac3b126d3914f9849036f826e054cbabdc8519970b8998ddaf3b5bd3c65f11" -dependencies = [ - "libc", -] - -[[package]] -name = "walkdir" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" -dependencies = [ - "same-file", - "winapi-util", -] - -[[package]] -name = "want" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" -dependencies = [ - "try-lock", -] - -[[package]] -name = "wasi" -version = "0.11.1+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" - -[[package]] -name = "wasip2" -version = "1.0.1+wasi-0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" -dependencies = [ - "wit-bindgen", -] - -[[package]] -name = "wasm-bindgen" -version = "0.2.105" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da95793dfc411fbbd93f5be7715b0578ec61fe87cb1a42b12eb625caa5c5ea60" -dependencies = [ - "cfg-if", - "once_cell", - "rustversion", - "wasm-bindgen-macro", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-futures" -version = "0.4.55" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "551f88106c6d5e7ccc7cd9a16f312dd3b5d36ea8b4954304657d5dfba115d4a0" -dependencies = [ - "cfg-if", - "js-sys", - "once_cell", - "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.105" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04264334509e04a7bf8690f2384ef5265f05143a4bff3889ab7a3269adab59c2" -dependencies = [ - "quote", - "wasm-bindgen-macro-support", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.105" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "420bc339d9f322e562942d52e115d57e950d12d88983a14c79b86859ee6c7ebc" -dependencies = [ - "bumpalo", - "proc-macro2", - "quote", - "syn 2.0.111", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.105" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76f218a38c84bcb33c25ec7059b07847d465ce0e0a76b995e134a45adcb6af76" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "wasm-streams" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15053d8d85c7eccdbefef60f06769760a563c7f0a9d6902a13d35c7800b0ad65" -dependencies = [ - "futures-util", - "js-sys", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", -] - -[[package]] -name = "wasmtimer" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c598d6b99ea013e35844697fc4670d08339d5cda15588f193c6beedd12f644b" -dependencies = [ - "futures", - "js-sys", - "parking_lot", - "pin-utils", - "slab", - "wasm-bindgen", -] - -[[package]] -name = "web-sys" -version = "0.3.82" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a1f95c0d03a47f4ae1f7a64643a6bb97465d9b740f0fa8f90ea33915c99a9a1" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "web-time" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "webpki-root-certs" -version = "0.26.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75c7f0ef91146ebfb530314f5f1d24528d7f0767efbfd31dce919275413e393e" -dependencies = [ - "webpki-root-certs 1.0.4", -] - -[[package]] -name = "webpki-root-certs" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee3e3b5f5e80bc89f30ce8d0343bf4e5f12341c51f3e26cbeecbc7c85443e85b" -dependencies = [ - "rustls-pki-types", -] - -[[package]] -name = "webpki-roots" -version = "0.26.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9" -dependencies = [ - "webpki-roots 1.0.4", -] - -[[package]] -name = "webpki-roots" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2878ef029c47c6e8cf779119f20fcf52bde7ad42a731b2a304bc221df17571e" -dependencies = [ - "rustls-pki-types", -] - -[[package]] -name = "which" -version = "4.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" -dependencies = [ - "either", - "home", - "once_cell", - "rustix 0.38.44", -] - -[[package]] -name = "widestring" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72069c3113ab32ab29e5584db3c6ec55d416895e60715417b5b883a357c3e471" - -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - -[[package]] -name = "winapi-util" -version = "0.1.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" -dependencies = [ - "windows-sys 0.61.2", -] - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - -[[package]] -name = "windows" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efc5cf48f83140dcaab716eeaea345f9e93d0018fb81162753a3f76c3397b538" -dependencies = [ - "windows-core 0.53.0", - "windows-targets 0.52.6", -] - -[[package]] -name = "windows" -version = "0.57.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12342cb4d8e3b046f3d80effd474a7a02447231330ef77d71daa6fbc40681143" -dependencies = [ - "windows-core 0.57.0", - "windows-targets 0.52.6", -] - -[[package]] -name = "windows" -version = "0.62.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "527fadee13e0c05939a6a05d5bd6eec6cd2e3dbd648b9f8e447c6518133d8580" -dependencies = [ - "windows-collections", - "windows-core 0.62.2", - "windows-future", - "windows-numerics", -] - -[[package]] -name = "windows-collections" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23b2d95af1a8a14a3c7367e1ed4fc9c20e0a26e79551b1454d72583c97cc6610" -dependencies = [ - "windows-core 0.62.2", -] - -[[package]] -name = "windows-core" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9dcc5b895a6377f1ab9fa55acedab1fd5ac0db66ad1e6c7f47e28a22e446a5dd" -dependencies = [ - "windows-result 0.1.2", - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-core" -version = "0.57.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2ed2439a290666cd67ecce2b0ffaad89c2a56b976b736e6ece670297897832d" -dependencies = [ - "windows-implement 0.57.0", - "windows-interface 0.57.0", - "windows-result 0.1.2", - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-core" -version = "0.62.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" -dependencies = [ - "windows-implement 0.60.2", - "windows-interface 0.59.3", - "windows-link", - "windows-result 0.4.1", - "windows-strings", -] - -[[package]] -name = "windows-future" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1d6f90251fe18a279739e78025bd6ddc52a7e22f921070ccdc67dde84c605cb" -dependencies = [ - "windows-core 0.62.2", - "windows-link", - "windows-threading", -] - -[[package]] -name = "windows-implement" -version = "0.57.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.111", -] - -[[package]] -name = "windows-implement" -version = "0.60.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.111", -] - -[[package]] -name = "windows-interface" -version = "0.57.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.111", -] - -[[package]] -name = "windows-interface" -version = "0.59.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.111", -] - -[[package]] -name = "windows-link" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" - -[[package]] -name = "windows-numerics" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e2e40844ac143cdb44aead537bbf727de9b044e107a0f1220392177d15b0f26" -dependencies = [ - "windows-core 0.62.2", - "windows-link", -] - -[[package]] -name = "windows-registry" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02752bf7fbdcce7f2a27a742f798510f3e5ad88dbe84871e5168e2120c3d5720" -dependencies = [ - "windows-link", - "windows-result 0.4.1", - "windows-strings", -] - -[[package]] -name = "windows-result" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8" -dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-result" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" -dependencies = [ - "windows-link", -] - -[[package]] -name = "windows-strings" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" -dependencies = [ - "windows-link", -] - -[[package]] -name = "windows-sys" -version = "0.45.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" -dependencies = [ - "windows-targets 0.42.2", -] - -[[package]] -name = "windows-sys" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" -dependencies = [ - "windows-targets 0.48.5", -] - -[[package]] -name = "windows-sys" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" -dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-sys" -version = "0.59.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" -dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-sys" -version = "0.60.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" -dependencies = [ - "windows-targets 0.53.5", -] - -[[package]] -name = "windows-sys" -version = "0.61.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" -dependencies = [ - "windows-link", -] - -[[package]] -name = "windows-targets" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" -dependencies = [ - "windows_aarch64_gnullvm 0.42.2", - "windows_aarch64_msvc 0.42.2", - "windows_i686_gnu 0.42.2", - "windows_i686_msvc 0.42.2", - "windows_x86_64_gnu 0.42.2", - "windows_x86_64_gnullvm 0.42.2", - "windows_x86_64_msvc 0.42.2", -] - -[[package]] -name = "windows-targets" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" -dependencies = [ - "windows_aarch64_gnullvm 0.48.5", - "windows_aarch64_msvc 0.48.5", - "windows_i686_gnu 0.48.5", - "windows_i686_msvc 0.48.5", - "windows_x86_64_gnu 0.48.5", - "windows_x86_64_gnullvm 0.48.5", - "windows_x86_64_msvc 0.48.5", -] - -[[package]] -name = "windows-targets" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" -dependencies = [ - "windows_aarch64_gnullvm 0.52.6", - "windows_aarch64_msvc 0.52.6", - "windows_i686_gnu 0.52.6", - "windows_i686_gnullvm 0.52.6", - "windows_i686_msvc 0.52.6", - "windows_x86_64_gnu 0.52.6", - "windows_x86_64_gnullvm 0.52.6", - "windows_x86_64_msvc 0.52.6", -] - -[[package]] -name = "windows-targets" -version = "0.53.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" -dependencies = [ - "windows-link", - "windows_aarch64_gnullvm 0.53.1", - "windows_aarch64_msvc 0.53.1", - "windows_i686_gnu 0.53.1", - "windows_i686_gnullvm 0.53.1", - "windows_i686_msvc 0.53.1", - "windows_x86_64_gnu 0.53.1", - "windows_x86_64_gnullvm 0.53.1", - "windows_x86_64_msvc 0.53.1", -] - -[[package]] -name = "windows-threading" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3949bd5b99cafdf1c7ca86b43ca564028dfe27d66958f2470940f73d86d75b37" -dependencies = [ - "windows-link", -] - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" - -[[package]] -name = "windows_i686_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" - -[[package]] -name = "windows_i686_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" - -[[package]] -name = "windows_i686_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" - -[[package]] -name = "windows_i686_gnu" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" - -[[package]] -name = "windows_i686_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" - -[[package]] -name = "windows_i686_gnullvm" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" - -[[package]] -name = "windows_i686_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" - -[[package]] -name = "windows_i686_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" - -[[package]] -name = "windows_i686_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" - -[[package]] -name = "windows_i686_msvc" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" - -[[package]] -name = "winnow" -version = "0.7.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" -dependencies = [ - "memchr", -] - -[[package]] -name = "winreg" -version = "0.50.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" -dependencies = [ - "cfg-if", - "windows-sys 0.48.0", -] - -[[package]] -name = "wit-bindgen" -version = "0.46.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" - -[[package]] -name = "writeable" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" - -[[package]] -name = "ws_stream_wasm" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c173014acad22e83f16403ee360115b38846fe754e735c5d9d3803fe70c6abc" -dependencies = [ - "async_io_stream", - "futures", - "js-sys", - "log", - "pharos", - "rustc_version 0.4.1", - "send_wrapper 0.6.0", - "thiserror 2.0.17", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", -] - -[[package]] -name = "wyz" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" -dependencies = [ - "tap", -] - -[[package]] -name = "x25519-dalek" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7e468321c81fb07fa7f4c636c3972b9100f0346e5b6a9f2bd0603a52f7ed277" -dependencies = [ - "curve25519-dalek", - "rand_core 0.6.4", - "serde", - "zeroize", -] - -[[package]] -name = "x509-parser" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4569f339c0c402346d4a75a9e39cf8dad310e287eef1ff56d4c68e5067f53460" -dependencies = [ - "asn1-rs", - "data-encoding", - "der-parser", - "lazy_static", - "nom", - "oid-registry", - "rusticata-macros", - "thiserror 2.0.17", - "time", -] - -[[package]] -name = "xml-rs" -version = "0.8.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ae8337f8a065cfc972643663ea4279e04e7256de865aa66fe25cec5fb912d3f" - -[[package]] -name = "xmltree" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7d8a75eaf6557bb84a65ace8609883db44a29951042ada9b393151532e41fcb" -dependencies = [ - "xml-rs", -] - -[[package]] -name = "yamux" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed0164ae619f2dc144909a9f082187ebb5893693d8c0196e8085283ccd4b776" -dependencies = [ - "futures", - "log", - "nohash-hasher", - "parking_lot", - "pin-project", - "rand 0.8.5", - "static_assertions", -] - -[[package]] -name = "yamux" -version = "0.13.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "deab71f2e20691b4728b349c6cee8fc7223880fa67b6b4f92225ec32225447e5" -dependencies = [ - "futures", - "log", - "nohash-hasher", - "parking_lot", - "pin-project", - "rand 0.9.2", - "static_assertions", - "web-time", -] - -[[package]] -name = "yasna" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e17bb3549cc1321ae1296b9cdc2698e2b6cb1992adfa19a8c72e5b7a738f44cd" -dependencies = [ - "time", -] - -[[package]] -name = "yoke" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" -dependencies = [ - "stable_deref_trait", - "yoke-derive", - "zerofrom", -] - -[[package]] -name = "yoke-derive" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.111", - "synstructure", -] - -[[package]] -name = "zerocopy" -version = "0.8.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd74ec98b9250adb3ca554bdde269adf631549f51d8a8f8f0a10b50f1cb298c3" -dependencies = [ - "zerocopy-derive", -] - -[[package]] -name = "zerocopy-derive" -version = "0.8.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8a8d209fdf45cf5138cbb5a506f6b52522a25afccc534d1475dad8e31105c6a" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.111", -] - -[[package]] -name = "zerofrom" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" -dependencies = [ - "zerofrom-derive", -] - -[[package]] -name = "zerofrom-derive" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.111", - "synstructure", -] - -[[package]] -name = "zeroize" -version = "1.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" -dependencies = [ - "zeroize_derive", -] - -[[package]] -name = "zeroize_derive" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.111", -] - -[[package]] -name = "zerotrie" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" -dependencies = [ - "displaydoc", - "yoke", - "zerofrom", -] - -[[package]] -name = "zerovec" -version = "0.11.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" -dependencies = [ - "yoke", - "zerofrom", - "zerovec-derive", -] - -[[package]] -name = "zerovec-derive" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.111", -] - -[[package]] -name = "zmij" -version = "1.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd8f3f50b848df28f887acb68e41201b5aea6bc8a8dacc00fb40635ff9a72fea" - -[[package]] -name = "zstd" -version = "0.13.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a" -dependencies = [ - "zstd-safe", -] - -[[package]] -name = "zstd-safe" -version = "7.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f49c4d5f0abb602a93fb8736af2a4f4dd9512e36f7f570d66e65ff867ed3b9d" -dependencies = [ - "zstd-sys", -] - -[[package]] -name = "zstd-sys" -version = "2.0.16+zstd.1.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91e19ebc2adc8f83e43039e79776e3fda8ca919132d68a1fed6a5faca2683748" -dependencies = [ - "cc", - "pkg-config", -] diff --git a/kona/Cargo.toml b/kona/Cargo.toml deleted file mode 100644 index 3684d9253a2ce..0000000000000 --- a/kona/Cargo.toml +++ /dev/null @@ -1,279 +0,0 @@ -[workspace.package] -edition = "2024" -license = "MIT" -rust-version = "1.88" -authors = ["clabby", "refcell", "theochap", "emhane"] -homepage = "https://github.com/op-rs/kona" -repository = "https://github.com/op-rs/kona" -keywords = ["ethereum", "optimism", "crypto"] -categories = ["cryptography", "cryptography::cryptocurrencies"] -exclude = ["**/target"] - -[workspace] -resolver = "2" -members = [ - "bin/*", - "crates/proof/*", - "crates/node/*", - "crates/supervisor/*", - "crates/protocol/*", - "crates/batcher/*", - "crates/providers/*", - "crates/utilities/*", - "examples/*", -] -default-members = [ - "bin/host", - "bin/client", - "bin/node", - "bin/supervisor", -] - -[workspace.metadata.cargo-udeps.ignore] -normal = ["rustls-platform-verifier"] - -[workspace.lints.rust] -missing-debug-implementations = "warn" -missing-docs = "warn" -unreachable-pub = "warn" -unused-must-use = "deny" -rust-2018-idioms = "deny" -unnameable-types = "warn" - -[workspace.lints.rustdoc] -all = "warn" - -[workspace.lints.clippy] -all = { level = "warn", priority = -1 } -missing-const-for-fn = "warn" -use-self = "warn" -option-if-let-else = "warn" -redundant-clone = "warn" - -[profile.dev] -opt-level = 1 -overflow-checks = false - -[profile.bench] -debug = true - -[profile.dev-client] -inherits = "dev" -panic = "abort" - -[profile.release-client-lto] -inherits = "release" -panic = "abort" -codegen-units = 1 -lto = "fat" - -[profile.release-perf] -inherits = "release" -lto = "fat" -codegen-units = 1 - -[workspace.dependencies] -# Binaries -kona-host = { path = "bin/host", version = "1.0.2", default-features = false } -kona-client = { path = "bin/client", version = "1.0.2", default-features = false } - -# Protocol -kona-comp = { path = "crates/batcher/comp", version = "0.4.5", default-features = false } -kona-derive = { path = "crates/protocol/derive", version = "0.4.5", default-features = false } -kona-interop = { path = "crates/protocol/interop", version = "0.4.5", default-features = false } -kona-genesis = { path = "crates/protocol/genesis", version = "0.4.5", default-features = false } -kona-protocol = { path = "crates/protocol/protocol", version = "0.4.5", default-features = false } -kona-registry = { path = "crates/protocol/registry", version = "0.4.5", default-features = false } -kona-hardforks = { path = "crates/protocol/hardforks", version = "0.4.5", default-features = false } - -# Node -kona-rpc = { path = "crates/node/rpc", version = "0.3.2", default-features = false } -kona-peers = { path = "crates/node/peers", version = "0.1.2", default-features = false } -kona-engine = { path = "crates/node/engine", version = "0.1.2", default-features = false } -kona-sources = { path = "crates/node/sources", version = "0.1.2", default-features = false } -kona-node-service = { path = "crates/node/service", version = "0.1.3", default-features = false } -kona-disc = { path = "crates/node/disc", version = "0.1.2", default-features = false } -kona-gossip = { path = "crates/node/gossip", version = "0.1.2", default-features = false } - -# Supervisor -kona-supervisor-rpc = { path = "crates/supervisor/rpc", version = "0.1.1", default-features = false } -kona-supervisor-core = { path = "crates/supervisor/core", version = "0.1.0", default-features = false } -kona-supervisor-service = { path = "crates/supervisor/service", version = "0.1.0", default-features = false } -kona-supervisor-types = { path = "crates/supervisor/types", version = "0.1.1", default-features = false } -kona-supervisor-storage = { path = "crates/supervisor/storage", version = "0.1.0", default-features = false } -kona-supervisor-metrics = { path = "crates/supervisor/metrics", version = "0.1.0", default-features = false } - -# Providers -kona-providers-alloy = { path = "crates/providers/providers-alloy", version = "0.3.3", default-features = false } -kona-providers-local = { path = "crates/providers/providers-local", version = "0.1.0", default-features = false } - -# Proof -kona-driver = { path = "crates/proof/driver", version = "0.4.0", default-features = false } -kona-mpt = { path = "crates/proof/mpt", version = "0.3.0", default-features = false } -kona-proof = { path = "crates/proof/proof", version = "0.3.0", default-features = false } -kona-executor = { path = "crates/proof/executor", version = "0.4.0", default-features = false } -kona-std-fpvm = { path = "crates/proof/std-fpvm", version = "0.2.0", default-features = false } -kona-preimage = { path = "crates/proof/preimage", version = "0.3.0", default-features = false } -kona-std-fpvm-proc = { path = "crates/proof/std-fpvm-proc", version = "0.2.0", default-features = false } -kona-proof-interop = { path = "crates/proof/proof-interop", version = "0.2.0", default-features = false } - -# Utilities -kona-cli = { path = "crates/utilities/cli", version = "0.3.2", default-features = false } -kona-serde = { path = "crates/utilities/serde", version = "0.2.2", default-features = false } -kona-macros = { path = "crates/utilities/macros", version = "0.1.2", default-features = false } - -# Alloy -alloy-rlp = { version = "0.3.12", default-features = false } -alloy-trie = { version = "0.9.3", default-features = false } -alloy-eips = { version = "1.4.3", default-features = false } -alloy-serde = { version = "1.4.3", default-features = false } -alloy-signer = { version = "1.4.3", default-features = false } -alloy-chains = { version = "0.2.27", default-features = false } -alloy-network = { version = "1.4.3", default-features = false } -alloy-genesis = { version = "1.4.3", default-features = false } -alloy-provider = { version = "1.4.3", default-features = false } -alloy-hardforks = { version = "0.4.7", default-features = false } -alloy-sol-types = { version = "1.5.2", default-features = false } -alloy-consensus = { version = "1.4.3", default-features = false } -alloy-transport = { version = "1.4.3", default-features = false } -alloy-rpc-types = { version = "1.4.3", default-features = false } -alloy-rpc-client = { version = "1.4.3", default-features = false } -alloy-primitives = { version = "1.5.2", default-features = false } -alloy-signer-local = { version = "1.4.3", default-features = false } -alloy-node-bindings = { version = "1.4.3", default-features = false } -alloy-rpc-types-eth = { version = "1.4.3", default-features = false } -alloy-transport-http = { version = "1.4.3", default-features = false } -alloy-rpc-types-engine = { version = "1.4.3", default-features = false } -alloy-rpc-types-beacon = { version = "1.4.3", default-features = false } -alloy-network-primitives = { version = "1.4.3", default-features = false } -alloy-json-rpc = { version = "1.4.3", default-features = false } - -# OP Alloy -op-alloy-network = { version = "0.23.1", default-features = false } -op-alloy-provider = { version = "0.23.1", default-features = false } -alloy-op-hardforks = { version = "0.4.7", default-features = false } -op-alloy-consensus = { version = "0.23.1", default-features = false } -op-alloy-rpc-types = { version = "0.23.1", default-features = false } -op-alloy-rpc-jsonrpsee = { version = "0.23.1", default-features = false } -op-alloy-rpc-types-engine = { version = "0.23.1", default-features = false } - -# Execution -revm = { version = "33.0.0", default-features = false } -op-revm = { version = "14.0.0", default-features = false } -alloy-evm = { version = "0.25.2", default-features = false } -alloy-op-evm = { version = "0.25.2", default-features = false } - -# Reth (pinned to v1.6.0 for kona-supervisor-storage) -reth-db-api = { git = "https://github.com/paradigmxyz/reth", tag = "v1.6.0" } -reth-db = { git = "https://github.com/paradigmxyz/reth", tag = "v1.6.0" } -reth-codecs = { git = "https://github.com/paradigmxyz/reth", tag = "v1.6.0" } - -# General -notify = "8.2" -url = "2.5.8" -http = "1.4.0" -lru = "0.16.3" -glob = "0.3.3" -dirs = "6.0.0" -eyre = "0.6.12" -spin = "0.10.0" -clap = "4.5.54" -tower = "0.5.3" -bytes = "1.11.0" -vergen = "9.1.0" -tokio = "1.49.0" -rayon = "1.11.0" -strum = "0.27" -cfg-if = "1.0.4" -rstest = "0.26.1" -ratatui = "0.30.0" -futures = "0.3.31" -futures-util = "0.3.31" -reqwest = "0.12.24" -auto_impl = "1.3.0" -tempfile = "3.24.0" -test-fuzz = "7.2.5" -arbitrary = "1.4.2" -multihash = "0.19.3" -crossterm = "0.29.0" -color-eyre = "0.6.5" -jsonrpsee = "0.26.0" -jsonrpsee-types = "0.26.0" -tokio-util = "0.7.18" -rustls = { version = "0.23", default-features = false } -rustls-pemfile = { version = "2.2", default-features = false } -vergen-git2 = "9.1.0" -async-trait = "0.1.89" -tokio-stream = "0.1.18" -async-stream = "0.3.6" -async-channel = "2.5.0" -http-body-util = "0.1.3" -unsigned-varint = "0.8.0" -modular-bitfield = "0.11.2" -buddy_system_allocator = "0.11.0" - -rand = { version = "0.9.2", default-features = false } -backon = { version = "1.6.0", default-features = false } -tabled = { version = "0.20.0", default-features = false } -anyhow = { version = "1.0.100", default-features = false } -thiserror = { version = "2.0.17", default-features = false } -derive_more = { version = "2.1.1", default-features = false } -lazy_static = { version = "1.5.0", default-features = false } - -# Compression -getrandom = "0.3.4" -miniz_oxide = "0.9.0" -alloc-no-stdlib = "2.0.4" -brotli = { version = "8.0.2", default-features = false } - -# Networking -snap = "1.1.1" -discv5 = "0.10.2" -libp2p = "0.56.0" -libp2p-stream = "0.4.0-alpha" -libp2p-identity = "0.2.13" -openssl = "0.10.75" -ipnet = "2.11.0" - -# Tracing -tracing-loki = "0.2.6" -tracing-subscriber = "0.3.22" -tracing-appender = "0.2.4" -tracing = { version = "0.1.44", default-features = false } - -# Metrics -metrics = { version = "0.24.3", default-features = false } -prometheus = { version = "0.14.0", default-features = false } -metrics-exporter-prometheus = { version = "0.18.1", default-features = false } -metrics-process = "2.4.2" - -# Testing -pprof = "0.15.0" -arbtest = "0.3.2" -proptest = "1.9.0" -criterion = "0.5.1" -mockall = "0.14.0" -httpmock = "0.8.2" - -# Serialization -rkyv = "0.8.14" -serde_repr = "0.1.20" -ethereum_ssz = "0.10.1" -toml = { version = "0.9.11", default-features = false } -serde = { version = "1.0.228", default-features = false } -serde_json = { version = "1.0.149", default-features = false } - -# K/V database -rocksdb = { version = "0.24.0", default-features = false } - -# Cryptography -sha2 = { version = "0.10.9", default-features = false } -c-kzg = { version = "2.1.5", default-features = false } -ark-ff = { version = "0.5.0", default-features = false } -secp256k1 = { version = "0.31.1", default-features = false } -ark-bls12-381 = { version = "0.5.0", default-features = false } - -# Rollup Boost (required for rollup-boost integration) -rollup-boost = "0.7.13" -rollup-boost-types = "0.1.0" -parking_lot = "0.12.5" diff --git a/kona/clippy.toml b/kona/clippy.toml deleted file mode 100644 index f3322b5fd242c..0000000000000 --- a/kona/clippy.toml +++ /dev/null @@ -1 +0,0 @@ -msrv = "1.88" diff --git a/kona/crates/protocol/derive/src/attributes/mod.rs b/kona/crates/protocol/derive/src/attributes/mod.rs deleted file mode 100644 index 5691685f99a74..0000000000000 --- a/kona/crates/protocol/derive/src/attributes/mod.rs +++ /dev/null @@ -1,6 +0,0 @@ -//! Module containing the [AttributesBuilder] trait implementations. -//! -//! [AttributesBuilder]: crate::traits::AttributesBuilder - -mod stateful; -pub use stateful::StatefulAttributesBuilder; diff --git a/kona/crates/protocol/registry/superchain-registry b/kona/crates/protocol/registry/superchain-registry deleted file mode 160000 index 300d18077f279..0000000000000 --- a/kona/crates/protocol/registry/superchain-registry +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 300d18077f2799e21e5f2becb64f9cf04c9a0760 diff --git a/kona/deny.toml b/kona/deny.toml deleted file mode 100644 index eb525696d1582..0000000000000 --- a/kona/deny.toml +++ /dev/null @@ -1,81 +0,0 @@ -[graph] -targets = [] -all-features = false -no-default-features = false - -[output] -feature-depth = 1 - -[advisories] -ignore = [ - # paste crate is no longer maintained. - "RUSTSEC-2024-0436", - "RUSTSEC-2024-0384", - "RUSTSEC-2025-0012", - # bincode is unmaintained but still functional; transitive dep from reth-nippy-jar and test-fuzz. - "RUSTSEC-2025-0141", - # Integer overflow in `BytesMut::reserve` - "RUSTSEC-2026-0007" -] - -[licenses] -allow = [ - "MIT", - "Apache-2.0", - "Apache-2.0 WITH LLVM-exception", - "BSD-2-Clause", - "BSD-3-Clause", - "ISC", - "Unlicense", - "Unicode-3.0", - "MPL-2.0", - "Zlib", - "0BSD", - "CDLA-Permissive-2.0", -] -confidence-threshold = 0.8 -exceptions = [ - # CC0 is a permissive license but somewhat unclear status for source code - # so we prefer to not have dependencies using it - # https://tldrlegal.com/license/creative-commons-cc0-1.0-universal - { allow = ["CC0-1.0"], name = "secp256k1" }, - { allow = ["CC0-1.0"], name = "aurora-engine-modexp" }, - { allow = ["CC0-1.0"], name = "secp256k1-sys" }, - { allow = ["CC0-1.0"], name = "tiny-keccak" }, - { allow = ["CC0-1.0"], name = "notify" }, - # aws-lc-sys includes OpenSSL in its composite license expression - { allow = ["OpenSSL"], name = "aws-lc-sys" }, -] - -[[licenses.clarify]] -name = "ring" -expression = "LicenseRef-ring" -license-files = [{ path = "LICENSE", hash = 0xbd0eed23 }] - -[licenses.private] -ignore = false -registries = [] - -[bans] -multiple-versions = "warn" -wildcards = "allow" -highlight = "all" -workspace-default-features = "allow" -external-default-features = "allow" -allow = [] -deny = [] -skip = [] -skip-tree = [] - -[sources] -unknown-registry = "deny" -unknown-git = "deny" -allow-registry = ["https://github.com/rust-lang/crates.io-index"] -allow-git = [ - "https://github.com/paradigmxyz/reth", -] - -[sources.allow-org] -github = [] -gitlab = [] -bitbucket = [] diff --git a/kona/rustfmt.toml b/kona/rustfmt.toml deleted file mode 100644 index 68c3c93033d4f..0000000000000 --- a/kona/rustfmt.toml +++ /dev/null @@ -1,11 +0,0 @@ -reorder_imports = true -imports_granularity = "Crate" -use_small_heuristics = "Max" -comment_width = 100 -wrap_comments = true -binop_separator = "Back" -trailing_comma = "Vertical" -trailing_semicolon = false -use_field_init_shorthand = true -format_code_in_doc_comments = true -doc_comment_code_block_width = 100 diff --git a/op-alloy/Cargo.lock b/op-alloy/Cargo.lock deleted file mode 100644 index c79e4f0616513..0000000000000 --- a/op-alloy/Cargo.lock +++ /dev/null @@ -1,4663 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 4 - -[[package]] -name = "allocator-api2" -version = "0.2.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" - -[[package]] -name = "alloy-chains" -version = "0.2.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3842d8c52fcd3378039f4703dba392dca8b546b1c8ed6183048f8dab95b2be78" -dependencies = [ - "alloy-primitives", - "num_enum", - "strum", -] - -[[package]] -name = "alloy-consensus" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c3a590d13de3944675987394715f37537b50b856e3b23a0e66e97d963edbf38" -dependencies = [ - "alloy-eips", - "alloy-primitives", - "alloy-rlp", - "alloy-serde", - "alloy-trie", - "alloy-tx-macros", - "arbitrary", - "auto_impl", - "borsh", - "c-kzg", - "derive_more", - "either", - "k256", - "once_cell", - "rand 0.8.5", - "secp256k1", - "serde", - "serde_json", - "serde_with", - "thiserror 2.0.18", -] - -[[package]] -name = "alloy-consensus-any" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f28f769d5ea999f0d8a105e434f483456a15b4e1fcb08edbbbe1650a497ff6d" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-primitives", - "alloy-rlp", - "alloy-serde", - "arbitrary", - "serde", -] - -[[package]] -name = "alloy-eip2124" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "741bdd7499908b3aa0b159bba11e71c8cddd009a2c2eb7a06e825f1ec87900a5" -dependencies = [ - "alloy-primitives", - "alloy-rlp", - "arbitrary", - "crc", - "rand 0.8.5", - "serde", - "thiserror 2.0.18", -] - -[[package]] -name = "alloy-eip2930" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9441120fa82df73e8959ae0e4ab8ade03de2aaae61be313fbf5746277847ce25" -dependencies = [ - "alloy-primitives", - "alloy-rlp", - "arbitrary", - "borsh", - "rand 0.8.5", - "serde", -] - -[[package]] -name = "alloy-eip7702" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2919c5a56a1007492da313e7a3b6d45ef5edc5d33416fdec63c0d7a2702a0d20" -dependencies = [ - "alloy-primitives", - "alloy-rlp", - "arbitrary", - "borsh", - "k256", - "rand 0.8.5", - "serde", - "serde_with", - "thiserror 2.0.18", -] - -[[package]] -name = "alloy-eips" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09535cbc646b0e0c6fcc12b7597eaed12cf86dff4c4fba9507a61e71b94f30eb" -dependencies = [ - "alloy-eip2124", - "alloy-eip2930", - "alloy-eip7702", - "alloy-primitives", - "alloy-rlp", - "alloy-serde", - "arbitrary", - "auto_impl", - "borsh", - "c-kzg", - "derive_more", - "either", - "ethereum_ssz", - "ethereum_ssz_derive", - "serde", - "serde_with", - "sha2", - "thiserror 2.0.18", -] - -[[package]] -name = "alloy-json-abi" -version = "1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84e3cf01219c966f95a460c95f1d4c30e12f6c18150c21a30b768af2a2a29142" -dependencies = [ - "alloy-primitives", - "alloy-sol-type-parser", - "serde", - "serde_json", -] - -[[package]] -name = "alloy-json-rpc" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b626409c98ba43aaaa558361bca21440c88fd30df7542c7484b9c7a1489cdb" -dependencies = [ - "alloy-primitives", - "alloy-sol-types", - "http", - "serde", - "serde_json", - "thiserror 2.0.18", - "tracing", -] - -[[package]] -name = "alloy-network" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89924fdcfeee0e0fa42b1f10af42f92802b5d16be614a70897382565663bf7cf" -dependencies = [ - "alloy-consensus", - "alloy-consensus-any", - "alloy-eips", - "alloy-json-rpc", - "alloy-network-primitives", - "alloy-primitives", - "alloy-rpc-types-any", - "alloy-rpc-types-eth", - "alloy-serde", - "alloy-signer", - "alloy-sol-types", - "async-trait", - "auto_impl", - "derive_more", - "futures-utils-wasm", - "serde", - "serde_json", - "thiserror 2.0.18", -] - -[[package]] -name = "alloy-network-primitives" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f0dbe56ff50065713ff8635d8712a0895db3ad7f209db9793ad8fcb6b1734aa" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-primitives", - "alloy-serde", - "serde", -] - -[[package]] -name = "alloy-primitives" -version = "1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6a0fb18dd5fb43ec5f0f6a20be1ce0287c79825827de5744afaa6c957737c33" -dependencies = [ - "alloy-rlp", - "arbitrary", - "bytes", - "cfg-if", - "const-hex", - "derive_more", - "foldhash", - "getrandom 0.3.4", - "hashbrown 0.16.1", - "indexmap 2.13.0", - "itoa", - "k256", - "keccak-asm", - "paste", - "proptest", - "proptest-derive 0.6.0", - "rand 0.9.2", - "rapidhash", - "ruint", - "rustc-hash", - "serde", - "sha3", - "tiny-keccak", -] - -[[package]] -name = "alloy-provider" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b56f7a77513308a21a2ba0e9d57785a9d9d2d609e77f4e71a78a1192b83ff2d" -dependencies = [ - "alloy-chains", - "alloy-consensus", - "alloy-eips", - "alloy-json-rpc", - "alloy-network", - "alloy-network-primitives", - "alloy-primitives", - "alloy-rpc-client", - "alloy-rpc-types-eth", - "alloy-signer", - "alloy-sol-types", - "alloy-transport", - "async-stream", - "async-trait", - "auto_impl", - "dashmap", - "either", - "futures", - "futures-utils-wasm", - "lru", - "parking_lot", - "pin-project", - "serde", - "serde_json", - "thiserror 2.0.18", - "tokio", - "tracing", - "wasmtimer", -] - -[[package]] -name = "alloy-rlp" -version = "0.3.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f70d83b765fdc080dbcd4f4db70d8d23fe4761f2f02ebfa9146b833900634b4" -dependencies = [ - "alloy-rlp-derive", - "arrayvec", - "bytes", -] - -[[package]] -name = "alloy-rlp-derive" -version = "0.3.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64b728d511962dda67c1bc7ea7c03736ec275ed2cf4c35d9585298ac9ccf3b73" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "alloy-rpc-client" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff01723afc25ec4c5b04de399155bef7b6a96dfde2475492b1b7b4e7a4f46445" -dependencies = [ - "alloy-json-rpc", - "alloy-primitives", - "alloy-transport", - "futures", - "pin-project", - "serde", - "serde_json", - "tokio", - "tokio-stream", - "tower", - "tracing", - "wasmtimer", -] - -[[package]] -name = "alloy-rpc-types-any" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "212ca1c1dab27f531d3858f8b1a2d6bfb2da664be0c1083971078eb7b71abe4b" -dependencies = [ - "alloy-consensus-any", - "alloy-rpc-types-eth", - "alloy-serde", -] - -[[package]] -name = "alloy-rpc-types-engine" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "232f00fcbcd3ee3b9399b96223a8fc884d17742a70a44f9d7cef275f93e6e872" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-primitives", - "alloy-rlp", - "alloy-serde", - "derive_more", - "ethereum_ssz", - "ethereum_ssz_derive", - "rand 0.8.5", - "serde", - "strum", -] - -[[package]] -name = "alloy-rpc-types-eth" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5715d0bf7efbd360873518bd9f6595762136b5327a9b759a8c42ccd9b5e44945" -dependencies = [ - "alloy-consensus", - "alloy-consensus-any", - "alloy-eips", - "alloy-network-primitives", - "alloy-primitives", - "alloy-rlp", - "alloy-serde", - "alloy-sol-types", - "arbitrary", - "itertools 0.14.0", - "serde", - "serde_json", - "serde_with", - "thiserror 2.0.18", -] - -[[package]] -name = "alloy-serde" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ed8531cae8d21ee1c6571d0995f8c9f0652a6ef6452fde369283edea6ab7138" -dependencies = [ - "alloy-primitives", - "arbitrary", - "serde", - "serde_json", -] - -[[package]] -name = "alloy-signer" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb10ccd49d0248df51063fce6b716f68a315dd912d55b32178c883fd48b4021d" -dependencies = [ - "alloy-primitives", - "async-trait", - "auto_impl", - "either", - "elliptic-curve", - "k256", - "thiserror 2.0.18", -] - -[[package]] -name = "alloy-sol-macro" -version = "1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09eb18ce0df92b4277291bbaa0ed70545d78b02948df756bbd3d6214bf39a218" -dependencies = [ - "alloy-sol-macro-expander", - "alloy-sol-macro-input", - "proc-macro-error2", - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "alloy-sol-macro-expander" -version = "1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95d9fa2daf21f59aa546d549943f10b5cce1ae59986774019fbedae834ffe01b" -dependencies = [ - "alloy-sol-macro-input", - "const-hex", - "heck", - "indexmap 2.13.0", - "proc-macro-error2", - "proc-macro2", - "quote", - "syn 2.0.114", - "syn-solidity", - "tiny-keccak", -] - -[[package]] -name = "alloy-sol-macro-input" -version = "1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9396007fe69c26ee118a19f4dee1f5d1d6be186ea75b3881adf16d87f8444686" -dependencies = [ - "const-hex", - "dunce", - "heck", - "macro-string", - "proc-macro2", - "quote", - "syn 2.0.114", - "syn-solidity", -] - -[[package]] -name = "alloy-sol-type-parser" -version = "1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af67a0b0dcebe14244fc92002cd8d96ecbf65db4639d479f5fcd5805755a4c27" -dependencies = [ - "serde", - "winnow", -] - -[[package]] -name = "alloy-sol-types" -version = "1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09aeea64f09a7483bdcd4193634c7e5cf9fd7775ee767585270cd8ce2d69dc95" -dependencies = [ - "alloy-json-abi", - "alloy-primitives", - "alloy-sol-macro", - "serde", -] - -[[package]] -name = "alloy-transport" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f50a9516736d22dd834cc2240e5bf264f338667cc1d9e514b55ec5a78b987ca" -dependencies = [ - "alloy-json-rpc", - "auto_impl", - "base64", - "derive_more", - "futures", - "futures-utils-wasm", - "parking_lot", - "serde", - "serde_json", - "thiserror 2.0.18", - "tokio", - "tower", - "tracing", - "url", - "wasmtimer", -] - -[[package]] -name = "alloy-trie" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "428aa0f0e0658ff091f8f667c406e034b431cb10abd39de4f507520968acc499" -dependencies = [ - "alloy-primitives", - "alloy-rlp", - "arbitrary", - "arrayvec", - "derive_arbitrary", - "derive_more", - "nybbles", - "proptest", - "proptest-derive 0.5.1", - "serde", - "smallvec", - "tracing", -] - -[[package]] -name = "alloy-tx-macros" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2289a842d02fe63f8c466db964168bb2c7a9fdfb7b24816dbb17d45520575fb" -dependencies = [ - "darling 0.21.3", - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "android_system_properties" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" -dependencies = [ - "libc", -] - -[[package]] -name = "arbitrary" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1" -dependencies = [ - "derive_arbitrary", -] - -[[package]] -name = "arbtest" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a3be567977128c0f71ad1462d9624ccda712193d124e944252f0c5789a06d46" -dependencies = [ - "arbitrary", -] - -[[package]] -name = "ark-ff" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b3235cc41ee7a12aaaf2c575a2ad7b46713a8a50bda2fc3b003a04845c05dd6" -dependencies = [ - "ark-ff-asm 0.3.0", - "ark-ff-macros 0.3.0", - "ark-serialize 0.3.0", - "ark-std 0.3.0", - "derivative", - "num-bigint", - "num-traits", - "paste", - "rustc_version 0.3.3", - "zeroize", -] - -[[package]] -name = "ark-ff" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" -dependencies = [ - "ark-ff-asm 0.4.2", - "ark-ff-macros 0.4.2", - "ark-serialize 0.4.2", - "ark-std 0.4.0", - "derivative", - "digest 0.10.7", - "itertools 0.10.5", - "num-bigint", - "num-traits", - "paste", - "rustc_version 0.4.1", - "zeroize", -] - -[[package]] -name = "ark-ff" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a177aba0ed1e0fbb62aa9f6d0502e9b46dad8c2eab04c14258a1212d2557ea70" -dependencies = [ - "ark-ff-asm 0.5.0", - "ark-ff-macros 0.5.0", - "ark-serialize 0.5.0", - "ark-std 0.5.0", - "arrayvec", - "digest 0.10.7", - "educe", - "itertools 0.13.0", - "num-bigint", - "num-traits", - "paste", - "zeroize", -] - -[[package]] -name = "ark-ff-asm" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db02d390bf6643fb404d3d22d31aee1c4bc4459600aef9113833d17e786c6e44" -dependencies = [ - "quote", - "syn 1.0.109", -] - -[[package]] -name = "ark-ff-asm" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" -dependencies = [ - "quote", - "syn 1.0.109", -] - -[[package]] -name = "ark-ff-asm" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" -dependencies = [ - "quote", - "syn 2.0.114", -] - -[[package]] -name = "ark-ff-macros" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db2fd794a08ccb318058009eefdf15bcaaaaf6f8161eb3345f907222bac38b20" -dependencies = [ - "num-bigint", - "num-traits", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "ark-ff-macros" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" -dependencies = [ - "num-bigint", - "num-traits", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "ark-ff-macros" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09be120733ee33f7693ceaa202ca41accd5653b779563608f1234f78ae07c4b3" -dependencies = [ - "num-bigint", - "num-traits", - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "ark-serialize" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d6c2b318ee6e10f8c2853e73a83adc0ccb88995aa978d8a3408d492ab2ee671" -dependencies = [ - "ark-std 0.3.0", - "digest 0.9.0", -] - -[[package]] -name = "ark-serialize" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" -dependencies = [ - "ark-std 0.4.0", - "digest 0.10.7", - "num-bigint", -] - -[[package]] -name = "ark-serialize" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f4d068aaf107ebcd7dfb52bc748f8030e0fc930ac8e360146ca54c1203088f7" -dependencies = [ - "ark-std 0.5.0", - "arrayvec", - "digest 0.10.7", - "num-bigint", -] - -[[package]] -name = "ark-std" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1df2c09229cbc5a028b1d70e00fdb2acee28b1055dfb5ca73eea49c5a25c4e7c" -dependencies = [ - "num-traits", - "rand 0.8.5", -] - -[[package]] -name = "ark-std" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" -dependencies = [ - "num-traits", - "rand 0.8.5", -] - -[[package]] -name = "ark-std" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "246a225cc6131e9ee4f24619af0f19d67761fff15d7ccc22e42b80846e69449a" -dependencies = [ - "num-traits", - "rand 0.8.5", -] - -[[package]] -name = "arrayvec" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" -dependencies = [ - "serde", -] - -[[package]] -name = "async-stream" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" -dependencies = [ - "async-stream-impl", - "futures-core", - "pin-project-lite", -] - -[[package]] -name = "async-stream-impl" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "async-trait" -version = "0.1.89" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "atomic-waker" -version = "1.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" - -[[package]] -name = "auto_impl" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffdcb70bdbc4d478427380519163274ac86e52916e10f0a8889adf0f96d3fee7" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "autocfg" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" - -[[package]] -name = "base16ct" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" - -[[package]] -name = "base64" -version = "0.22.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" - -[[package]] -name = "base64ct" -version = "1.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2af50177e190e07a26ab74f8b1efbfe2ef87da2116221318cb1c2e82baf7de06" - -[[package]] -name = "bincode" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36eaf5d7b090263e8150820482d5d93cd964a81e4019913c972f4edcc6edb740" -dependencies = [ - "bincode_derive", - "serde", - "unty", -] - -[[package]] -name = "bincode_derive" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf95709a440f45e986983918d0e8a1f30a9b1df04918fc828670606804ac3c09" -dependencies = [ - "virtue", -] - -[[package]] -name = "bit-set" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" -dependencies = [ - "bit-vec", -] - -[[package]] -name = "bit-vec" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" - -[[package]] -name = "bitcoin-io" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dee39a0ee5b4095224a0cfc6bf4cc1baf0f9624b96b367e53b66d974e51d953" - -[[package]] -name = "bitcoin_hashes" -version = "0.14.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26ec84b80c482df901772e931a9a681e26a1b9ee2302edeff23cb30328745c8b" -dependencies = [ - "bitcoin-io", - "hex-conservative", -] - -[[package]] -name = "bitflags" -version = "2.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" - -[[package]] -name = "bitvec" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" -dependencies = [ - "funty", - "radium", - "tap", - "wyz", -] - -[[package]] -name = "block-buffer" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" -dependencies = [ - "generic-array", -] - -[[package]] -name = "blst" -version = "0.3.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcdb4c7013139a150f9fc55d123186dbfaba0d912817466282c73ac49e71fb45" -dependencies = [ - "cc", - "glob", - "threadpool", - "zeroize", -] - -[[package]] -name = "borsh" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1da5ab77c1437701eeff7c88d968729e7766172279eab0676857b3d63af7a6f" -dependencies = [ - "borsh-derive", - "cfg_aliases", -] - -[[package]] -name = "borsh-derive" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0686c856aa6aac0c4498f936d7d6a02df690f614c03e4d906d1018062b5c5e2c" -dependencies = [ - "once_cell", - "proc-macro-crate", - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "bstr" -version = "1.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63044e1ae8e69f3b5a92c736ca6269b8d12fa7efe39bf34ddb06d102cf0e2cab" -dependencies = [ - "memchr", - "regex-automata", - "serde", -] - -[[package]] -name = "bumpalo" -version = "3.19.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510" - -[[package]] -name = "byte-slice-cast" -version = "1.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7575182f7272186991736b70173b0ea045398f984bf5ebbb3804736ce1330c9d" - -[[package]] -name = "byteorder" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" - -[[package]] -name = "bytes" -version = "1.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3" -dependencies = [ - "serde", -] - -[[package]] -name = "c-kzg" -version = "2.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e00bf4b112b07b505472dbefd19e37e53307e2bfed5a79e0cc161d58ccd0e687" -dependencies = [ - "arbitrary", - "blst", - "cc", - "glob", - "hex", - "libc", - "once_cell", - "serde", -] - -[[package]] -name = "cc" -version = "1.2.53" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "755d2fce177175ffca841e9a06afdb2c4ab0f593d53b4dee48147dfaade85932" -dependencies = [ - "find-msvc-tools", - "shlex", -] - -[[package]] -name = "cesu8" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" - -[[package]] -name = "cfg-if" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" - -[[package]] -name = "cfg_aliases" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" - -[[package]] -name = "chrono" -version = "0.4.43" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fac4744fb15ae8337dc853fee7fb3f4e48c0fbaa23d0afe49c447b4fab126118" -dependencies = [ - "iana-time-zone", - "num-traits", - "serde", - "windows-link", -] - -[[package]] -name = "combine" -version = "4.6.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" -dependencies = [ - "bytes", - "memchr", -] - -[[package]] -name = "console" -version = "0.15.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8" -dependencies = [ - "encode_unicode", - "libc", - "once_cell", - "windows-sys 0.59.0", -] - -[[package]] -name = "const-hex" -version = "1.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bb320cac8a0750d7f25280aa97b09c26edfe161164238ecbbb31092b079e735" -dependencies = [ - "cfg-if", - "cpufeatures", - "proptest", - "serde_core", -] - -[[package]] -name = "const-oid" -version = "0.9.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" - -[[package]] -name = "const_format" -version = "0.2.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7faa7469a93a566e9ccc1c73fe783b4a65c274c5ace346038dca9c39fe0030ad" -dependencies = [ - "const_format_proc_macros", -] - -[[package]] -name = "const_format_proc_macros" -version = "0.2.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d57c2eccfb16dbac1f4e61e206105db5820c9d26c3c472bc17c774259ef7744" -dependencies = [ - "proc-macro2", - "quote", - "unicode-xid", -] - -[[package]] -name = "convert_case" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "633458d4ef8c78b72454de2d54fd6ab2e60f9e02be22f3c6104cdc8a4e0fceb9" -dependencies = [ - "unicode-segmentation", -] - -[[package]] -name = "core-foundation" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "core-foundation-sys" -version = "0.8.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" - -[[package]] -name = "cpufeatures" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" -dependencies = [ - "libc", -] - -[[package]] -name = "crc" -version = "3.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5eb8a2a1cd12ab0d987a5d5e825195d372001a4094a0376319d5a0ad71c1ba0d" -dependencies = [ - "crc-catalog", -] - -[[package]] -name = "crc-catalog" -version = "2.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" - -[[package]] -name = "crossbeam-utils" -version = "0.8.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" - -[[package]] -name = "crunchy" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" - -[[package]] -name = "crypto-bigint" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" -dependencies = [ - "generic-array", - "rand_core 0.6.4", - "subtle", - "zeroize", -] - -[[package]] -name = "crypto-common" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" -dependencies = [ - "generic-array", - "typenum", -] - -[[package]] -name = "darling" -version = "0.20.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" -dependencies = [ - "darling_core 0.20.11", - "darling_macro 0.20.11", -] - -[[package]] -name = "darling" -version = "0.21.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0" -dependencies = [ - "darling_core 0.21.3", - "darling_macro 0.21.3", -] - -[[package]] -name = "darling_core" -version = "0.20.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e" -dependencies = [ - "fnv", - "ident_case", - "proc-macro2", - "quote", - "strsim", - "syn 2.0.114", -] - -[[package]] -name = "darling_core" -version = "0.21.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4" -dependencies = [ - "fnv", - "ident_case", - "proc-macro2", - "quote", - "serde", - "strsim", - "syn 2.0.114", -] - -[[package]] -name = "darling_macro" -version = "0.20.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" -dependencies = [ - "darling_core 0.20.11", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "darling_macro" -version = "0.21.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" -dependencies = [ - "darling_core 0.21.3", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "dashmap" -version = "6.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf" -dependencies = [ - "cfg-if", - "crossbeam-utils", - "hashbrown 0.14.5", - "lock_api", - "once_cell", - "parking_lot_core", -] - -[[package]] -name = "der" -version = "0.7.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" -dependencies = [ - "const-oid", - "zeroize", -] - -[[package]] -name = "deranged" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587" -dependencies = [ - "powerfmt", - "serde_core", -] - -[[package]] -name = "derivative" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "derive_arbitrary" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "derive_more" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d751e9e49156b02b44f9c1815bcb94b984cdcc4396ecc32521c739452808b134" -dependencies = [ - "derive_more-impl", -] - -[[package]] -name = "derive_more-impl" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "799a97264921d8623a957f6c3b9011f3b5492f557bbb7a5a19b7fa6d06ba8dcb" -dependencies = [ - "convert_case", - "proc-macro2", - "quote", - "rustc_version 0.4.1", - "syn 2.0.114", - "unicode-xid", -] - -[[package]] -name = "digest" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" -dependencies = [ - "generic-array", -] - -[[package]] -name = "digest" -version = "0.10.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" -dependencies = [ - "block-buffer", - "const-oid", - "crypto-common", - "subtle", -] - -[[package]] -name = "displaydoc" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "dunce" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" - -[[package]] -name = "dyn-clone" -version = "1.0.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" - -[[package]] -name = "ecdsa" -version = "0.16.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" -dependencies = [ - "der", - "digest 0.10.7", - "elliptic-curve", - "rfc6979", - "serdect", - "signature", - "spki", -] - -[[package]] -name = "educe" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d7bc049e1bd8cdeb31b68bbd586a9464ecf9f3944af3958a7a9d0f8b9799417" -dependencies = [ - "enum-ordinalize", - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "either" -version = "1.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" -dependencies = [ - "serde", -] - -[[package]] -name = "elliptic-curve" -version = "0.13.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" -dependencies = [ - "base16ct", - "crypto-bigint", - "digest 0.10.7", - "ff", - "generic-array", - "group", - "pkcs8", - "rand_core 0.6.4", - "sec1", - "serdect", - "subtle", - "zeroize", -] - -[[package]] -name = "encode_unicode" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" - -[[package]] -name = "enum-ordinalize" -version = "4.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a1091a7bb1f8f2c4b28f1fe2cef4980ca2d410a3d727d67ecc3178c9b0800f0" -dependencies = [ - "enum-ordinalize-derive", -] - -[[package]] -name = "enum-ordinalize-derive" -version = "4.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ca9601fb2d62598ee17836250842873a413586e5d7ed88b356e38ddbb0ec631" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "equivalent" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" - -[[package]] -name = "errno" -version = "0.3.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" -dependencies = [ - "libc", - "windows-sys 0.61.2", -] - -[[package]] -name = "ethereum_serde_utils" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dc1355dbb41fbbd34ec28d4fb2a57d9a70c67ac3c19f6a5ca4d4a176b9e997a" -dependencies = [ - "alloy-primitives", - "hex", - "serde", - "serde_derive", - "serde_json", -] - -[[package]] -name = "ethereum_ssz" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dcddb2554d19cde19b099fadddde576929d7a4d0c1cd3512d1fd95cf174375c" -dependencies = [ - "alloy-primitives", - "ethereum_serde_utils", - "itertools 0.13.0", - "serde", - "serde_derive", - "smallvec", - "typenum", -] - -[[package]] -name = "ethereum_ssz_derive" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a657b6b3b7e153637dc6bdc6566ad9279d9ee11a15b12cfb24a2e04360637e9f" -dependencies = [ - "darling 0.20.11", - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "fastrand" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" - -[[package]] -name = "fastrlp" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "139834ddba373bbdd213dffe02c8d110508dcf1726c2be27e8d1f7d7e1856418" -dependencies = [ - "arrayvec", - "auto_impl", - "bytes", -] - -[[package]] -name = "fastrlp" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce8dba4714ef14b8274c371879b175aa55b16b30f269663f19d576f380018dc4" -dependencies = [ - "arrayvec", - "auto_impl", - "bytes", -] - -[[package]] -name = "ff" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" -dependencies = [ - "rand_core 0.6.4", - "subtle", -] - -[[package]] -name = "find-msvc-tools" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8591b0bcc8a98a64310a2fae1bb3e9b8564dd10e381e6e28010fde8e8e8568db" - -[[package]] -name = "fixed-hash" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" -dependencies = [ - "byteorder", - "rand 0.8.5", - "rustc-hex", - "static_assertions", -] - -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - -[[package]] -name = "foldhash" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" - -[[package]] -name = "form_urlencoded" -version = "1.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" -dependencies = [ - "percent-encoding", -] - -[[package]] -name = "funty" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" - -[[package]] -name = "futures" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" -dependencies = [ - "futures-channel", - "futures-core", - "futures-executor", - "futures-io", - "futures-sink", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-channel" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" -dependencies = [ - "futures-core", - "futures-sink", -] - -[[package]] -name = "futures-core" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" - -[[package]] -name = "futures-executor" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" -dependencies = [ - "futures-core", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-io" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" - -[[package]] -name = "futures-macro" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "futures-sink" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" - -[[package]] -name = "futures-task" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" - -[[package]] -name = "futures-timer" -version = "3.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" -dependencies = [ - "gloo-timers", - "send_wrapper", -] - -[[package]] -name = "futures-util" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" -dependencies = [ - "futures-channel", - "futures-core", - "futures-io", - "futures-macro", - "futures-sink", - "futures-task", - "memchr", - "pin-project-lite", - "pin-utils", - "slab", -] - -[[package]] -name = "futures-utils-wasm" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42012b0f064e01aa58b545fe3727f90f7dd4020f4a3ea735b50344965f5a57e9" - -[[package]] -name = "generic-array" -version = "0.14.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" -dependencies = [ - "typenum", - "version_check", - "zeroize", -] - -[[package]] -name = "getrandom" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" -dependencies = [ - "cfg-if", - "libc", - "wasi", -] - -[[package]] -name = "getrandom" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" -dependencies = [ - "cfg-if", - "libc", - "r-efi", - "wasip2", -] - -[[package]] -name = "glob" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" - -[[package]] -name = "gloo-net" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06f627b1a58ca3d42b45d6104bf1e1a03799df472df00988b6ba21accc10580" -dependencies = [ - "futures-channel", - "futures-core", - "futures-sink", - "gloo-utils", - "http", - "js-sys", - "pin-project", - "serde", - "serde_json", - "thiserror 1.0.69", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", -] - -[[package]] -name = "gloo-timers" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b995a66bb87bebce9a0f4a95aed01daca4872c050bfcb21653361c03bc35e5c" -dependencies = [ - "futures-channel", - "futures-core", - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "gloo-utils" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b5555354113b18c547c1d3a98fbf7fb32a9ff4f6fa112ce823a21641a0ba3aa" -dependencies = [ - "js-sys", - "serde", - "serde_json", - "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "group" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" -dependencies = [ - "ff", - "rand_core 0.6.4", - "subtle", -] - -[[package]] -name = "h2" -version = "0.4.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f44da3a8150a6703ed5d34e164b875fd14c2cdab9af1252a9a1020bde2bdc54" -dependencies = [ - "atomic-waker", - "bytes", - "fnv", - "futures-core", - "futures-sink", - "http", - "indexmap 2.13.0", - "slab", - "tokio", - "tokio-util", - "tracing", -] - -[[package]] -name = "hashbrown" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" - -[[package]] -name = "hashbrown" -version = "0.14.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" - -[[package]] -name = "hashbrown" -version = "0.16.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" -dependencies = [ - "allocator-api2", - "equivalent", - "foldhash", - "serde", - "serde_core", -] - -[[package]] -name = "heck" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" - -[[package]] -name = "hermit-abi" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" - -[[package]] -name = "hex" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" - -[[package]] -name = "hex-conservative" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fda06d18ac606267c40c04e41b9947729bf8b9efe74bd4e82b61a5f26a510b9f" -dependencies = [ - "arrayvec", -] - -[[package]] -name = "hmac" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" -dependencies = [ - "digest 0.10.7", -] - -[[package]] -name = "http" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" -dependencies = [ - "bytes", - "itoa", -] - -[[package]] -name = "http-body" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" -dependencies = [ - "bytes", - "http", -] - -[[package]] -name = "http-body-util" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" -dependencies = [ - "bytes", - "futures-core", - "http", - "http-body", - "pin-project-lite", -] - -[[package]] -name = "httparse" -version = "1.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" - -[[package]] -name = "hyper" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ab2d4f250c3d7b1c9fcdff1cece94ea4e2dfbec68614f7b87cb205f24ca9d11" -dependencies = [ - "atomic-waker", - "bytes", - "futures-channel", - "futures-core", - "h2", - "http", - "http-body", - "httparse", - "itoa", - "pin-project-lite", - "pin-utils", - "smallvec", - "tokio", - "want", -] - -[[package]] -name = "hyper-rustls" -version = "0.27.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" -dependencies = [ - "http", - "hyper", - "hyper-util", - "log", - "rustls", - "rustls-pki-types", - "tokio", - "tokio-rustls", - "tower-service", -] - -[[package]] -name = "hyper-util" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "727805d60e7938b76b826a6ef209eb70eaa1812794f9424d4a4e2d740662df5f" -dependencies = [ - "bytes", - "futures-channel", - "futures-core", - "futures-util", - "http", - "http-body", - "hyper", - "libc", - "pin-project-lite", - "socket2", - "tokio", - "tower-service", - "tracing", -] - -[[package]] -name = "iana-time-zone" -version = "0.1.64" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb" -dependencies = [ - "android_system_properties", - "core-foundation-sys", - "iana-time-zone-haiku", - "js-sys", - "log", - "wasm-bindgen", - "windows-core", -] - -[[package]] -name = "iana-time-zone-haiku" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" -dependencies = [ - "cc", -] - -[[package]] -name = "icu_collections" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" -dependencies = [ - "displaydoc", - "potential_utf", - "yoke", - "zerofrom", - "zerovec", -] - -[[package]] -name = "icu_locale_core" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" -dependencies = [ - "displaydoc", - "litemap", - "tinystr", - "writeable", - "zerovec", -] - -[[package]] -name = "icu_normalizer" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" -dependencies = [ - "icu_collections", - "icu_normalizer_data", - "icu_properties", - "icu_provider", - "smallvec", - "zerovec", -] - -[[package]] -name = "icu_normalizer_data" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" - -[[package]] -name = "icu_properties" -version = "2.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec" -dependencies = [ - "icu_collections", - "icu_locale_core", - "icu_properties_data", - "icu_provider", - "zerotrie", - "zerovec", -] - -[[package]] -name = "icu_properties_data" -version = "2.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af" - -[[package]] -name = "icu_provider" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" -dependencies = [ - "displaydoc", - "icu_locale_core", - "writeable", - "yoke", - "zerofrom", - "zerotrie", - "zerovec", -] - -[[package]] -name = "ident_case" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" - -[[package]] -name = "idna" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" -dependencies = [ - "idna_adapter", - "smallvec", - "utf8_iter", -] - -[[package]] -name = "idna_adapter" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" -dependencies = [ - "icu_normalizer", - "icu_properties", -] - -[[package]] -name = "impl-codec" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" -dependencies = [ - "parity-scale-codec", -] - -[[package]] -name = "impl-trait-for-tuples" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "indexmap" -version = "1.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -dependencies = [ - "autocfg", - "hashbrown 0.12.3", - "serde", -] - -[[package]] -name = "indexmap" -version = "2.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" -dependencies = [ - "arbitrary", - "equivalent", - "hashbrown 0.16.1", - "serde", - "serde_core", -] - -[[package]] -name = "itertools" -version = "0.10.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" -dependencies = [ - "either", -] - -[[package]] -name = "itertools" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" -dependencies = [ - "either", -] - -[[package]] -name = "itertools" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" -dependencies = [ - "either", -] - -[[package]] -name = "itoa" -version = "1.0.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" - -[[package]] -name = "jni" -version = "0.21.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" -dependencies = [ - "cesu8", - "cfg-if", - "combine", - "jni-sys", - "log", - "thiserror 1.0.69", - "walkdir", - "windows-sys 0.45.0", -] - -[[package]] -name = "jni-sys" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" - -[[package]] -name = "js-sys" -version = "0.3.85" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c942ebf8e95485ca0d52d97da7c5a2c387d0e7f0ba4c35e93bfcaee045955b3" -dependencies = [ - "once_cell", - "wasm-bindgen", -] - -[[package]] -name = "jsonrpsee" -version = "0.26.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f3f48dc3e6b8bd21e15436c1ddd0bc22a6a54e8ec46fedd6adf3425f396ec6a" -dependencies = [ - "jsonrpsee-client-transport", - "jsonrpsee-core", - "jsonrpsee-http-client", - "jsonrpsee-proc-macros", - "jsonrpsee-types", - "jsonrpsee-wasm-client", - "jsonrpsee-ws-client", - "tracing", -] - -[[package]] -name = "jsonrpsee-client-transport" -version = "0.26.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf36eb27f8e13fa93dcb50ccb44c417e25b818cfa1a481b5470cd07b19c60b98" -dependencies = [ - "base64", - "futures-channel", - "futures-util", - "gloo-net", - "http", - "jsonrpsee-core", - "pin-project", - "rustls", - "rustls-pki-types", - "rustls-platform-verifier", - "soketto", - "thiserror 2.0.18", - "tokio", - "tokio-rustls", - "tokio-util", - "tracing", - "url", -] - -[[package]] -name = "jsonrpsee-core" -version = "0.26.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "316c96719901f05d1137f19ba598b5fe9c9bc39f4335f67f6be8613921946480" -dependencies = [ - "async-trait", - "bytes", - "futures-timer", - "futures-util", - "http", - "http-body", - "http-body-util", - "jsonrpsee-types", - "parking_lot", - "pin-project", - "rand 0.9.2", - "rustc-hash", - "serde", - "serde_json", - "thiserror 2.0.18", - "tokio", - "tokio-stream", - "tower", - "tracing", - "wasm-bindgen-futures", -] - -[[package]] -name = "jsonrpsee-http-client" -version = "0.26.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "790bedefcec85321e007ff3af84b4e417540d5c87b3c9779b9e247d1bcc3dab8" -dependencies = [ - "base64", - "http-body", - "hyper", - "hyper-rustls", - "hyper-util", - "jsonrpsee-core", - "jsonrpsee-types", - "rustls", - "rustls-platform-verifier", - "serde", - "serde_json", - "thiserror 2.0.18", - "tokio", - "tower", - "url", -] - -[[package]] -name = "jsonrpsee-proc-macros" -version = "0.26.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2da3f8ab5ce1bb124b6d082e62dffe997578ceaf0aeb9f3174a214589dc00f07" -dependencies = [ - "heck", - "proc-macro-crate", - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "jsonrpsee-types" -version = "0.26.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc88ff4688e43cc3fa9883a8a95c6fa27aa2e76c96e610b737b6554d650d7fd5" -dependencies = [ - "http", - "serde", - "serde_json", - "thiserror 2.0.18", -] - -[[package]] -name = "jsonrpsee-wasm-client" -version = "0.26.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7902885de4779f711a95d82c8da2d7e5f9f3a7c7cfa44d51c067fd1c29d72a3c" -dependencies = [ - "jsonrpsee-client-transport", - "jsonrpsee-core", - "jsonrpsee-types", - "tower", -] - -[[package]] -name = "jsonrpsee-ws-client" -version = "0.26.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b6fceceeb05301cc4c065ab3bd2fa990d41ff4eb44e4ca1b30fa99c057c3e79" -dependencies = [ - "http", - "jsonrpsee-client-transport", - "jsonrpsee-core", - "jsonrpsee-types", - "tower", - "url", -] - -[[package]] -name = "k256" -version = "0.13.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" -dependencies = [ - "cfg-if", - "ecdsa", - "elliptic-curve", - "once_cell", - "serdect", - "sha2", -] - -[[package]] -name = "keccak" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" -dependencies = [ - "cpufeatures", -] - -[[package]] -name = "keccak-asm" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "505d1856a39b200489082f90d897c3f07c455563880bc5952e38eabf731c83b6" -dependencies = [ - "digest 0.10.7", - "sha3-asm", -] - -[[package]] -name = "libc" -version = "0.2.180" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcc35a38544a891a5f7c865aca548a982ccb3b8650a5b06d0fd33a10283c56fc" - -[[package]] -name = "libm" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" - -[[package]] -name = "linux-raw-sys" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" - -[[package]] -name = "litemap" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" - -[[package]] -name = "lock_api" -version = "0.4.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" -dependencies = [ - "scopeguard", -] - -[[package]] -name = "log" -version = "0.4.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" - -[[package]] -name = "lru" -version = "0.16.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1dc47f592c06f33f8e3aea9591776ec7c9f9e4124778ff8a3c3b87159f7e593" -dependencies = [ - "hashbrown 0.16.1", -] - -[[package]] -name = "macro-string" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b27834086c65ec3f9387b096d66e99f221cf081c2b738042aa252bcd41204e3" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "memchr" -version = "2.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" - -[[package]] -name = "mio" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc" -dependencies = [ - "libc", - "wasi", - "windows-sys 0.61.2", -] - -[[package]] -name = "num-bigint" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" -dependencies = [ - "num-integer", - "num-traits", -] - -[[package]] -name = "num-conv" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" - -[[package]] -name = "num-integer" -version = "0.1.46" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" -dependencies = [ - "num-traits", -] - -[[package]] -name = "num-traits" -version = "0.2.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" -dependencies = [ - "autocfg", - "libm", -] - -[[package]] -name = "num_cpus" -version = "1.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" -dependencies = [ - "hermit-abi", - "libc", -] - -[[package]] -name = "num_enum" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c" -dependencies = [ - "num_enum_derive", - "rustversion", -] - -[[package]] -name = "num_enum_derive" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "nybbles" -version = "0.4.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5676b5c379cf5b03da1df2b3061c4a4e2aa691086a56ac923e08c143f53f59" -dependencies = [ - "alloy-rlp", - "arbitrary", - "cfg-if", - "proptest", - "ruint", - "serde", - "smallvec", -] - -[[package]] -name = "once_cell" -version = "1.21.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" - -[[package]] -name = "op-alloy" -version = "0.23.1" -dependencies = [ - "op-alloy-consensus", - "op-alloy-network", - "op-alloy-provider", - "op-alloy-rpc-jsonrpsee", - "op-alloy-rpc-types", - "op-alloy-rpc-types-engine", -] - -[[package]] -name = "op-alloy-consensus" -version = "0.23.1" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-network", - "alloy-primitives", - "alloy-rlp", - "alloy-rpc-types-eth", - "alloy-serde", - "alloy-signer", - "arbitrary", - "bincode", - "derive_more", - "rand 0.9.2", - "serde", - "serde_json", - "serde_with", - "thiserror 2.0.18", - "tokio", -] - -[[package]] -name = "op-alloy-network" -version = "0.23.1" -dependencies = [ - "alloy-consensus", - "alloy-network", - "alloy-primitives", - "alloy-provider", - "alloy-rpc-types-eth", - "alloy-signer", - "op-alloy-consensus", - "op-alloy-rpc-types", -] - -[[package]] -name = "op-alloy-provider" -version = "0.23.1" -dependencies = [ - "alloy-network", - "alloy-primitives", - "alloy-provider", - "alloy-rpc-types-engine", - "alloy-transport", - "async-trait", - "op-alloy-rpc-types-engine", -] - -[[package]] -name = "op-alloy-rpc-jsonrpsee" -version = "0.23.1" -dependencies = [ - "alloy-primitives", - "jsonrpsee", -] - -[[package]] -name = "op-alloy-rpc-types" -version = "0.23.1" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-network-primitives", - "alloy-primitives", - "alloy-rpc-types-eth", - "alloy-serde", - "arbitrary", - "derive_more", - "jsonrpsee", - "op-alloy-consensus", - "rand 0.9.2", - "serde", - "serde_json", - "similar-asserts", - "thiserror 2.0.18", -] - -[[package]] -name = "op-alloy-rpc-types-engine" -version = "0.23.1" -dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-primitives", - "alloy-rlp", - "alloy-rpc-types-engine", - "alloy-serde", - "arbitrary", - "arbtest", - "derive_more", - "ethereum_ssz", - "ethereum_ssz_derive", - "op-alloy-consensus", - "serde", - "serde_json", - "sha2", - "snap", - "thiserror 2.0.18", -] - -[[package]] -name = "openssl-probe" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe" - -[[package]] -name = "parity-scale-codec" -version = "3.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "799781ae679d79a948e13d4824a40970bfa500058d245760dd857301059810fa" -dependencies = [ - "arrayvec", - "bitvec", - "byte-slice-cast", - "const_format", - "impl-trait-for-tuples", - "parity-scale-codec-derive", - "rustversion", - "serde", -] - -[[package]] -name = "parity-scale-codec-derive" -version = "3.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34b4653168b563151153c9e4c08ebed57fb8262bebfa79711552fa983c623e7a" -dependencies = [ - "proc-macro-crate", - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "parking_lot" -version = "0.12.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" -dependencies = [ - "lock_api", - "parking_lot_core", -] - -[[package]] -name = "parking_lot_core" -version = "0.9.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" -dependencies = [ - "cfg-if", - "libc", - "redox_syscall", - "smallvec", - "windows-link", -] - -[[package]] -name = "paste" -version = "1.0.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" - -[[package]] -name = "percent-encoding" -version = "2.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" - -[[package]] -name = "pest" -version = "2.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c9eb05c21a464ea704b53158d358a31e6425db2f63a1a7312268b05fe2b75f7" -dependencies = [ - "memchr", - "ucd-trie", -] - -[[package]] -name = "pin-project" -version = "1.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" -dependencies = [ - "pin-project-internal", -] - -[[package]] -name = "pin-project-internal" -version = "1.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "pin-project-lite" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" - -[[package]] -name = "pin-utils" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" - -[[package]] -name = "pkcs8" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" -dependencies = [ - "der", - "spki", -] - -[[package]] -name = "potential_utf" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" -dependencies = [ - "zerovec", -] - -[[package]] -name = "powerfmt" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" - -[[package]] -name = "ppv-lite86" -version = "0.2.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" -dependencies = [ - "zerocopy", -] - -[[package]] -name = "primitive-types" -version = "0.12.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" -dependencies = [ - "fixed-hash", - "impl-codec", - "uint", -] - -[[package]] -name = "proc-macro-crate" -version = "3.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" -dependencies = [ - "toml_edit", -] - -[[package]] -name = "proc-macro-error-attr2" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" -dependencies = [ - "proc-macro2", - "quote", -] - -[[package]] -name = "proc-macro-error2" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" -dependencies = [ - "proc-macro-error-attr2", - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "proc-macro2" -version = "1.0.105" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "535d180e0ecab6268a3e718bb9fd44db66bbbc256257165fc699dadf70d16fe7" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "proptest" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bee689443a2bd0a16ab0348b52ee43e3b2d1b1f931c8aa5c9f8de4c86fbe8c40" -dependencies = [ - "bit-set", - "bit-vec", - "bitflags", - "num-traits", - "rand 0.9.2", - "rand_chacha 0.9.0", - "rand_xorshift", - "regex-syntax", - "rusty-fork", - "tempfile", - "unarray", -] - -[[package]] -name = "proptest-derive" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ee1c9ac207483d5e7db4940700de86a9aae46ef90c48b57f99fe7edb8345e49" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "proptest-derive" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "095a99f75c69734802359b682be8daaf8980296731f6470434ea2c652af1dd30" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "quick-error" -version = "1.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" - -[[package]] -name = "quote" -version = "1.0.43" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc74d9a594b72ae6656596548f56f667211f8a97b3d4c3d467150794690dc40a" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "r-efi" -version = "5.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" - -[[package]] -name = "radium" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" - -[[package]] -name = "rand" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" -dependencies = [ - "libc", - "rand_chacha 0.3.1", - "rand_core 0.6.4", - "serde", -] - -[[package]] -name = "rand" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" -dependencies = [ - "rand_chacha 0.9.0", - "rand_core 0.9.5", - "serde", -] - -[[package]] -name = "rand_chacha" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" -dependencies = [ - "ppv-lite86", - "rand_core 0.6.4", -] - -[[package]] -name = "rand_chacha" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" -dependencies = [ - "ppv-lite86", - "rand_core 0.9.5", -] - -[[package]] -name = "rand_core" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" -dependencies = [ - "getrandom 0.2.17", -] - -[[package]] -name = "rand_core" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" -dependencies = [ - "getrandom 0.3.4", - "serde", -] - -[[package]] -name = "rand_xorshift" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "513962919efc330f829edb2535844d1b912b0fbe2ca165d613e4e8788bb05a5a" -dependencies = [ - "rand_core 0.9.5", -] - -[[package]] -name = "rapidhash" -version = "4.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d8b5b858a440a0bc02625b62dd95131b9201aa9f69f411195dd4a7cfb1de3d7" -dependencies = [ - "rand 0.9.2", - "rustversion", -] - -[[package]] -name = "redox_syscall" -version = "0.5.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" -dependencies = [ - "bitflags", -] - -[[package]] -name = "ref-cast" -version = "1.0.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d" -dependencies = [ - "ref-cast-impl", -] - -[[package]] -name = "ref-cast-impl" -version = "1.0.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "regex-automata" -version = "0.4.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" - -[[package]] -name = "regex-syntax" -version = "0.8.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" - -[[package]] -name = "rfc6979" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" -dependencies = [ - "hmac", - "subtle", -] - -[[package]] -name = "ring" -version = "0.17.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" -dependencies = [ - "cc", - "cfg-if", - "getrandom 0.2.17", - "libc", - "untrusted", - "windows-sys 0.52.0", -] - -[[package]] -name = "rlp" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" -dependencies = [ - "bytes", - "rustc-hex", -] - -[[package]] -name = "ruint" -version = "1.17.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c141e807189ad38a07276942c6623032d3753c8859c146104ac2e4d68865945a" -dependencies = [ - "alloy-rlp", - "arbitrary", - "ark-ff 0.3.0", - "ark-ff 0.4.2", - "ark-ff 0.5.0", - "bytes", - "fastrlp 0.3.1", - "fastrlp 0.4.0", - "num-bigint", - "num-integer", - "num-traits", - "parity-scale-codec", - "primitive-types", - "proptest", - "rand 0.8.5", - "rand 0.9.2", - "rlp", - "ruint-macro", - "serde_core", - "valuable", - "zeroize", -] - -[[package]] -name = "ruint-macro" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48fd7bd8a6377e15ad9d42a8ec25371b94ddc67abe7c8b9127bec79bebaaae18" - -[[package]] -name = "rustc-hash" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" -dependencies = [ - "rand 0.8.5", -] - -[[package]] -name = "rustc-hex" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" - -[[package]] -name = "rustc_version" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" -dependencies = [ - "semver 0.11.0", -] - -[[package]] -name = "rustc_version" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" -dependencies = [ - "semver 1.0.27", -] - -[[package]] -name = "rustix" -version = "1.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "146c9e247ccc180c1f61615433868c99f3de3ae256a30a43b49f67c2d9171f34" -dependencies = [ - "bitflags", - "errno", - "libc", - "linux-raw-sys", - "windows-sys 0.61.2", -] - -[[package]] -name = "rustls" -version = "0.23.36" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c665f33d38cea657d9614f766881e4d510e0eda4239891eea56b4cadcf01801b" -dependencies = [ - "log", - "once_cell", - "ring", - "rustls-pki-types", - "rustls-webpki", - "subtle", - "zeroize", -] - -[[package]] -name = "rustls-native-certs" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "612460d5f7bea540c490b2b6395d8e34a953e52b491accd6c86c8164c5932a63" -dependencies = [ - "openssl-probe", - "rustls-pki-types", - "schannel", - "security-framework", -] - -[[package]] -name = "rustls-pki-types" -version = "1.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be040f8b0a225e40375822a563fa9524378b9d63112f53e19ffff34df5d33fdd" -dependencies = [ - "zeroize", -] - -[[package]] -name = "rustls-platform-verifier" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19787cda76408ec5404443dc8b31795c87cd8fec49762dc75fa727740d34acc1" -dependencies = [ - "core-foundation", - "core-foundation-sys", - "jni", - "log", - "once_cell", - "rustls", - "rustls-native-certs", - "rustls-platform-verifier-android", - "rustls-webpki", - "security-framework", - "security-framework-sys", - "webpki-root-certs 0.26.11", - "windows-sys 0.59.0", -] - -[[package]] -name = "rustls-platform-verifier-android" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f" - -[[package]] -name = "rustls-webpki" -version = "0.103.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7df23109aa6c1567d1c575b9952556388da57401e4ace1d15f79eedad0d8f53" -dependencies = [ - "ring", - "rustls-pki-types", - "untrusted", -] - -[[package]] -name = "rustversion" -version = "1.0.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" - -[[package]] -name = "rusty-fork" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc6bf79ff24e648f6da1f8d1f011e9cac26491b619e6b9280f2b47f1774e6ee2" -dependencies = [ - "fnv", - "quick-error", - "tempfile", - "wait-timeout", -] - -[[package]] -name = "same-file" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "schannel" -version = "0.1.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1" -dependencies = [ - "windows-sys 0.61.2", -] - -[[package]] -name = "schemars" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f" -dependencies = [ - "dyn-clone", - "ref-cast", - "serde", - "serde_json", -] - -[[package]] -name = "schemars" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54e910108742c57a770f492731f99be216a52fadd361b06c8fb59d74ccc267d2" -dependencies = [ - "dyn-clone", - "ref-cast", - "serde", - "serde_json", -] - -[[package]] -name = "scopeguard" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" - -[[package]] -name = "sec1" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" -dependencies = [ - "base16ct", - "der", - "generic-array", - "pkcs8", - "serdect", - "subtle", - "zeroize", -] - -[[package]] -name = "secp256k1" -version = "0.30.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b50c5943d326858130af85e049f2661ba3c78b26589b8ab98e65e80ae44a1252" -dependencies = [ - "bitcoin_hashes", - "rand 0.8.5", - "secp256k1-sys", - "serde", -] - -[[package]] -name = "secp256k1-sys" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4387882333d3aa8cb20530a17c69a3752e97837832f34f6dccc760e715001d9" -dependencies = [ - "cc", -] - -[[package]] -name = "security-framework" -version = "3.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3297343eaf830f66ede390ea39da1d462b6b0c1b000f420d0a83f898bbbe6ef" -dependencies = [ - "bitflags", - "core-foundation", - "core-foundation-sys", - "libc", - "security-framework-sys", -] - -[[package]] -name = "security-framework-sys" -version = "2.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "semver" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" -dependencies = [ - "semver-parser", -] - -[[package]] -name = "semver" -version = "1.0.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" - -[[package]] -name = "semver-parser" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9900206b54a3527fdc7b8a938bffd94a568bac4f4aa8113b209df75a09c0dec2" -dependencies = [ - "pest", -] - -[[package]] -name = "send_wrapper" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f638d531eccd6e23b980caf34876660d38e265409d8e99b397ab71eb3612fad0" - -[[package]] -name = "serde" -version = "1.0.228" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" -dependencies = [ - "serde_core", - "serde_derive", -] - -[[package]] -name = "serde_core" -version = "1.0.228" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde_derive" -version = "1.0.228" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "serde_json" -version = "1.0.149" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" -dependencies = [ - "itoa", - "memchr", - "serde", - "serde_core", - "zmij", -] - -[[package]] -name = "serde_with" -version = "3.16.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fa237f2807440d238e0364a218270b98f767a00d3dada77b1c53ae88940e2e7" -dependencies = [ - "base64", - "chrono", - "hex", - "indexmap 1.9.3", - "indexmap 2.13.0", - "schemars 0.9.0", - "schemars 1.2.0", - "serde_core", - "serde_json", - "serde_with_macros", - "time", -] - -[[package]] -name = "serde_with_macros" -version = "3.16.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52a8e3ca0ca629121f70ab50f95249e5a6f925cc0f6ffe8256c45b728875706c" -dependencies = [ - "darling 0.21.3", - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "serdect" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a84f14a19e9a014bb9f4512488d9829a68e04ecabffb0f9904cd1ace94598177" -dependencies = [ - "base16ct", - "serde", -] - -[[package]] -name = "sha1" -version = "0.10.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest 0.10.7", -] - -[[package]] -name = "sha2" -version = "0.10.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest 0.10.7", -] - -[[package]] -name = "sha3" -version = "0.10.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" -dependencies = [ - "digest 0.10.7", - "keccak", -] - -[[package]] -name = "sha3-asm" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c28efc5e327c837aa837c59eae585fc250715ef939ac32881bcc11677cd02d46" -dependencies = [ - "cc", - "cfg-if", -] - -[[package]] -name = "shlex" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" - -[[package]] -name = "signature" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" -dependencies = [ - "digest 0.10.7", - "rand_core 0.6.4", -] - -[[package]] -name = "similar" -version = "2.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbbb5d9659141646ae647b42fe094daf6c6192d1620870b449d9557f748b2daa" -dependencies = [ - "bstr", - "unicode-segmentation", -] - -[[package]] -name = "similar-asserts" -version = "1.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b441962c817e33508847a22bd82f03a30cff43642dc2fae8b050566121eb9a" -dependencies = [ - "console", - "similar", -] - -[[package]] -name = "slab" -version = "0.4.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" - -[[package]] -name = "smallvec" -version = "1.15.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" -dependencies = [ - "arbitrary", - "serde", -] - -[[package]] -name = "snap" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b6b67fb9a61334225b5b790716f609cd58395f895b3fe8b328786812a40bc3b" - -[[package]] -name = "socket2" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881" -dependencies = [ - "libc", - "windows-sys 0.60.2", -] - -[[package]] -name = "soketto" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e859df029d160cb88608f5d7df7fb4753fd20fdfb4de5644f3d8b8440841721" -dependencies = [ - "base64", - "bytes", - "futures", - "httparse", - "log", - "rand 0.8.5", - "sha1", -] - -[[package]] -name = "spki" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" -dependencies = [ - "base64ct", - "der", -] - -[[package]] -name = "stable_deref_trait" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" - -[[package]] -name = "static_assertions" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" - -[[package]] -name = "strsim" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" - -[[package]] -name = "strum" -version = "0.27.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf" -dependencies = [ - "strum_macros", -] - -[[package]] -name = "strum_macros" -version = "0.27.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7" -dependencies = [ - "heck", - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "subtle" -version = "2.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" - -[[package]] -name = "syn" -version = "1.0.109" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "syn" -version = "2.0.114" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4d107df263a3013ef9b1879b0df87d706ff80f65a86ea879bd9c31f9b307c2a" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "syn-solidity" -version = "1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f92d01b5de07eaf324f7fca61cc6bd3d82bbc1de5b6c963e6fe79e86f36580d" -dependencies = [ - "paste", - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "sync_wrapper" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" - -[[package]] -name = "synstructure" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "tap" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" - -[[package]] -name = "tempfile" -version = "3.24.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "655da9c7eb6305c55742045d5a8d2037996d61d8de95806335c7c86ce0f82e9c" -dependencies = [ - "fastrand", - "getrandom 0.3.4", - "once_cell", - "rustix", - "windows-sys 0.61.2", -] - -[[package]] -name = "thiserror" -version = "1.0.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" -dependencies = [ - "thiserror-impl 1.0.69", -] - -[[package]] -name = "thiserror" -version = "2.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" -dependencies = [ - "thiserror-impl 2.0.18", -] - -[[package]] -name = "thiserror-impl" -version = "1.0.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "thiserror-impl" -version = "2.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "threadpool" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa" -dependencies = [ - "num_cpus", -] - -[[package]] -name = "time" -version = "0.3.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9e442fc33d7fdb45aa9bfeb312c095964abdf596f7567261062b2a7107aaabd" -dependencies = [ - "deranged", - "itoa", - "num-conv", - "powerfmt", - "serde_core", - "time-core", - "time-macros", -] - -[[package]] -name = "time-core" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b36ee98fd31ec7426d599183e8fe26932a8dc1fb76ddb6214d05493377d34ca" - -[[package]] -name = "time-macros" -version = "0.2.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71e552d1249bf61ac2a52db88179fd0673def1e1ad8243a00d9ec9ed71fee3dd" -dependencies = [ - "num-conv", - "time-core", -] - -[[package]] -name = "tiny-keccak" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" -dependencies = [ - "crunchy", -] - -[[package]] -name = "tinystr" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" -dependencies = [ - "displaydoc", - "zerovec", -] - -[[package]] -name = "tokio" -version = "1.49.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72a2903cd7736441aac9df9d7688bd0ce48edccaadf181c3b90be801e81d3d86" -dependencies = [ - "bytes", - "libc", - "mio", - "pin-project-lite", - "socket2", - "tokio-macros", - "windows-sys 0.61.2", -] - -[[package]] -name = "tokio-macros" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "tokio-rustls" -version = "0.26.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" -dependencies = [ - "rustls", - "tokio", -] - -[[package]] -name = "tokio-stream" -version = "0.1.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32da49809aab5c3bc678af03902d4ccddea2a87d028d86392a4b1560c6906c70" -dependencies = [ - "futures-core", - "pin-project-lite", - "tokio", - "tokio-util", -] - -[[package]] -name = "tokio-util" -version = "0.7.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" -dependencies = [ - "bytes", - "futures-core", - "futures-io", - "futures-sink", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "toml_datetime" -version = "0.7.5+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" -dependencies = [ - "serde_core", -] - -[[package]] -name = "toml_edit" -version = "0.23.10+spec-1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84c8b9f757e028cee9fa244aea147aab2a9ec09d5325a9b01e0a49730c2b5269" -dependencies = [ - "indexmap 2.13.0", - "toml_datetime", - "toml_parser", - "winnow", -] - -[[package]] -name = "toml_parser" -version = "1.0.6+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3198b4b0a8e11f09dd03e133c0280504d0801269e9afa46362ffde1cbeebf44" -dependencies = [ - "winnow", -] - -[[package]] -name = "tower" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" -dependencies = [ - "futures-core", - "futures-util", - "pin-project-lite", - "sync_wrapper", - "tower-layer", - "tower-service", -] - -[[package]] -name = "tower-layer" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" - -[[package]] -name = "tower-service" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" - -[[package]] -name = "tracing" -version = "0.1.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" -dependencies = [ - "pin-project-lite", - "tracing-attributes", - "tracing-core", -] - -[[package]] -name = "tracing-attributes" -version = "0.1.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "tracing-core" -version = "0.1.36" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" -dependencies = [ - "once_cell", -] - -[[package]] -name = "try-lock" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" - -[[package]] -name = "typenum" -version = "1.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" - -[[package]] -name = "ucd-trie" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" - -[[package]] -name = "uint" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52" -dependencies = [ - "byteorder", - "crunchy", - "hex", - "static_assertions", -] - -[[package]] -name = "unarray" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" - -[[package]] -name = "unicode-ident" -version = "1.0.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" - -[[package]] -name = "unicode-segmentation" -version = "1.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" - -[[package]] -name = "unicode-xid" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" - -[[package]] -name = "untrusted" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" - -[[package]] -name = "unty" -version = "0.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d49784317cd0d1ee7ec5c716dd598ec5b4483ea832a2dced265471cc0f690ae" - -[[package]] -name = "url" -version = "2.5.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" -dependencies = [ - "form_urlencoded", - "idna", - "percent-encoding", - "serde", -] - -[[package]] -name = "utf8_iter" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" - -[[package]] -name = "valuable" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" - -[[package]] -name = "version_check" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" - -[[package]] -name = "virtue" -version = "0.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "051eb1abcf10076295e815102942cc58f9d5e3b4560e46e53c21e8ff6f3af7b1" - -[[package]] -name = "wait-timeout" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09ac3b126d3914f9849036f826e054cbabdc8519970b8998ddaf3b5bd3c65f11" -dependencies = [ - "libc", -] - -[[package]] -name = "walkdir" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" -dependencies = [ - "same-file", - "winapi-util", -] - -[[package]] -name = "want" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" -dependencies = [ - "try-lock", -] - -[[package]] -name = "wasi" -version = "0.11.1+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" - -[[package]] -name = "wasip2" -version = "1.0.2+wasi-0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5" -dependencies = [ - "wit-bindgen", -] - -[[package]] -name = "wasm-bindgen" -version = "0.2.108" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64024a30ec1e37399cf85a7ffefebdb72205ca1c972291c51512360d90bd8566" -dependencies = [ - "cfg-if", - "once_cell", - "rustversion", - "wasm-bindgen-macro", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-futures" -version = "0.4.58" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70a6e77fd0ae8029c9ea0063f87c46fde723e7d887703d74ad2616d792e51e6f" -dependencies = [ - "cfg-if", - "futures-util", - "js-sys", - "once_cell", - "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.108" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "008b239d9c740232e71bd39e8ef6429d27097518b6b30bdf9086833bd5b6d608" -dependencies = [ - "quote", - "wasm-bindgen-macro-support", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.108" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5256bae2d58f54820e6490f9839c49780dff84c65aeab9e772f15d5f0e913a55" -dependencies = [ - "bumpalo", - "proc-macro2", - "quote", - "syn 2.0.114", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.108" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f01b580c9ac74c8d8f0c0e4afb04eeef2acf145458e52c03845ee9cd23e3d12" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "wasmtimer" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c598d6b99ea013e35844697fc4670d08339d5cda15588f193c6beedd12f644b" -dependencies = [ - "futures", - "js-sys", - "parking_lot", - "pin-utils", - "slab", - "wasm-bindgen", -] - -[[package]] -name = "web-sys" -version = "0.3.85" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "312e32e551d92129218ea9a2452120f4aabc03529ef03e4d0d82fb2780608598" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "webpki-root-certs" -version = "0.26.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75c7f0ef91146ebfb530314f5f1d24528d7f0767efbfd31dce919275413e393e" -dependencies = [ - "webpki-root-certs 1.0.5", -] - -[[package]] -name = "webpki-root-certs" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36a29fc0408b113f68cf32637857ab740edfafdf460c326cd2afaa2d84cc05dc" -dependencies = [ - "rustls-pki-types", -] - -[[package]] -name = "winapi-util" -version = "0.1.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" -dependencies = [ - "windows-sys 0.61.2", -] - -[[package]] -name = "windows-core" -version = "0.62.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" -dependencies = [ - "windows-implement", - "windows-interface", - "windows-link", - "windows-result", - "windows-strings", -] - -[[package]] -name = "windows-implement" -version = "0.60.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "windows-interface" -version = "0.59.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "windows-link" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" - -[[package]] -name = "windows-result" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" -dependencies = [ - "windows-link", -] - -[[package]] -name = "windows-strings" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" -dependencies = [ - "windows-link", -] - -[[package]] -name = "windows-sys" -version = "0.45.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" -dependencies = [ - "windows-targets 0.42.2", -] - -[[package]] -name = "windows-sys" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" -dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-sys" -version = "0.59.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" -dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-sys" -version = "0.60.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" -dependencies = [ - "windows-targets 0.53.5", -] - -[[package]] -name = "windows-sys" -version = "0.61.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" -dependencies = [ - "windows-link", -] - -[[package]] -name = "windows-targets" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" -dependencies = [ - "windows_aarch64_gnullvm 0.42.2", - "windows_aarch64_msvc 0.42.2", - "windows_i686_gnu 0.42.2", - "windows_i686_msvc 0.42.2", - "windows_x86_64_gnu 0.42.2", - "windows_x86_64_gnullvm 0.42.2", - "windows_x86_64_msvc 0.42.2", -] - -[[package]] -name = "windows-targets" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" -dependencies = [ - "windows_aarch64_gnullvm 0.52.6", - "windows_aarch64_msvc 0.52.6", - "windows_i686_gnu 0.52.6", - "windows_i686_gnullvm 0.52.6", - "windows_i686_msvc 0.52.6", - "windows_x86_64_gnu 0.52.6", - "windows_x86_64_gnullvm 0.52.6", - "windows_x86_64_msvc 0.52.6", -] - -[[package]] -name = "windows-targets" -version = "0.53.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" -dependencies = [ - "windows-link", - "windows_aarch64_gnullvm 0.53.1", - "windows_aarch64_msvc 0.53.1", - "windows_i686_gnu 0.53.1", - "windows_i686_gnullvm 0.53.1", - "windows_i686_msvc 0.53.1", - "windows_x86_64_gnu 0.53.1", - "windows_x86_64_gnullvm 0.53.1", - "windows_x86_64_msvc 0.53.1", -] - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" - -[[package]] -name = "windows_i686_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" - -[[package]] -name = "windows_i686_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" - -[[package]] -name = "windows_i686_gnu" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" - -[[package]] -name = "windows_i686_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" - -[[package]] -name = "windows_i686_gnullvm" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" - -[[package]] -name = "windows_i686_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" - -[[package]] -name = "windows_i686_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" - -[[package]] -name = "windows_i686_msvc" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" - -[[package]] -name = "winnow" -version = "0.7.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" -dependencies = [ - "memchr", -] - -[[package]] -name = "wit-bindgen" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" - -[[package]] -name = "writeable" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" - -[[package]] -name = "wyz" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" -dependencies = [ - "tap", -] - -[[package]] -name = "yoke" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" -dependencies = [ - "stable_deref_trait", - "yoke-derive", - "zerofrom", -] - -[[package]] -name = "yoke-derive" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", - "synstructure", -] - -[[package]] -name = "zerocopy" -version = "0.8.33" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "668f5168d10b9ee831de31933dc111a459c97ec93225beb307aed970d1372dfd" -dependencies = [ - "zerocopy-derive", -] - -[[package]] -name = "zerocopy-derive" -version = "0.8.33" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c7962b26b0a8685668b671ee4b54d007a67d4eaf05fda79ac0ecf41e32270f1" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "zerofrom" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" -dependencies = [ - "zerofrom-derive", -] - -[[package]] -name = "zerofrom-derive" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", - "synstructure", -] - -[[package]] -name = "zeroize" -version = "1.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" -dependencies = [ - "zeroize_derive", -] - -[[package]] -name = "zeroize_derive" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85a5b4158499876c763cb03bc4e49185d3cccbabb15b33c627f7884f43db852e" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "zerotrie" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" -dependencies = [ - "displaydoc", - "yoke", - "zerofrom", -] - -[[package]] -name = "zerovec" -version = "0.11.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" -dependencies = [ - "yoke", - "zerofrom", - "zerovec-derive", -] - -[[package]] -name = "zerovec-derive" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - -[[package]] -name = "zmij" -version = "1.0.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfcd145825aace48cff44a8844de64bf75feec3080e0aa5cdbde72961ae51a65" diff --git a/op-alloy/Cargo.toml b/op-alloy/Cargo.toml deleted file mode 100644 index 8d74193feb5dd..0000000000000 --- a/op-alloy/Cargo.toml +++ /dev/null @@ -1,123 +0,0 @@ -[workspace] -members = ["crates/*"] -resolver = "2" - -[workspace.package] -version = "0.23.1" -edition = "2024" -rust-version = "1.88" -authors = ["Alloy Contributors"] -license = "MIT OR Apache-2.0" -homepage = "https://github.com/alloy-rs/op-alloy" -repository = "https://github.com/alloy-rs/op-alloy" -exclude = ["benches/", "tests/"] - -[workspace.lints.rustdoc] -all = "warn" - -[workspace.lints.rust] -missing-debug-implementations = "warn" -missing-docs = "warn" -unreachable-pub = "warn" -unused-must-use = "deny" -rust-2018-idioms = "deny" -unnameable-types = "warn" - -[workspace.lints.clippy] -all = { level = "warn", priority = -1 } -missing-const-for-fn = "warn" -use-self = "warn" -option-if-let-else = "warn" -redundant-clone = "warn" -result_large_err = "allow" - -[workspace.metadata.docs.rs] -all-features = true -rustdoc-args = ["--cfg", "docsrs"] - -[workspace.dependencies] -# Workspace -op-alloy-consensus = { version = "0.23.1", path = "crates/consensus", default-features = false } -op-alloy-network = { version = "0.23.1", path = "crates/network", default-features = false } -op-alloy-provider = { version = "0.23.1", path = "crates/provider", default-features = false } -op-alloy-rpc-types = { version = "0.23.1", path = "crates/rpc-types", default-features = false } -op-alloy-rpc-types-engine = { version = "0.23.1", path = "crates/rpc-types-engine", default-features = false } -op-alloy-rpc-jsonrpsee = { version = "0.23.1", path = "crates/rpc-jsonrpsee", default-features = false } - -# Alloy -alloy-eips = { version = "1.1.2", default-features = false } -alloy-serde = { version = "1.1.2", default-features = false } -alloy-signer = { version = "1.1.2", default-features = false } -alloy-network = { version = "1.1.2", default-features = false } -alloy-provider = { version = "1.1.2", default-features = false } -alloy-transport = { version = "1.1.2", default-features = false } -alloy-consensus = { version = "1.1.2", default-features = false } -alloy-rpc-types-eth = { version = "1.1.2", default-features = false } -alloy-rpc-types-engine = { version = "1.1.2", default-features = false } -alloy-network-primitives = { version = "1.1.2", default-features = false } -alloy-json-rpc = { version = "1.1.2", default-features = false } - -# Alloy RLP -alloy-rlp = { version = "0.3", default-features = false } - -# Alloy Core -alloy-sol-types = { version = "1.2.0", default-features = false } -alloy-primitives = { version = "1.2.0", default-features = false } - -# Serde -serde = { version = "1.0", default-features = false, features = [ - "derive", - "alloc", -] } -serde_with = "3.12" -serde_json = { version = "1.0", default-features = false, features = ["alloc"] } - -# Encoding -snap = "1.1.1" -bincode = "2.0.1" -ethereum_ssz = "0.9" -ethereum_ssz_derive = "0.9" - -# rpc -jsonrpsee = { version = "0.26", features = [ - "jsonrpsee-core", - "client-core", - "server-core", - "macros", -] } -jsonrpsee-core = "0.26" -jsonrpsee-types = "0.26" - -# misc -async-trait = "0.1.87" -derive_more = { version = "2.0", default-features = false } -thiserror = { version = "2.0", default-features = false } -similar-asserts = "1.7" - -# hashing -sha2 = { version = "0.10", default-features = false } - -# tracing -tracing-subscriber = "0.3.19" -tracing = { version = "0.1.41", default-features = false } - -## misc-testing -arbitrary = { version = "1.4", features = ["derive"] } -arbtest = "0.3" -rand = "0.9" -proptest = "1.6" -proptest-derive = "0.5" -tokio = "1" -rstest = "0.24.0" - -[patch.crates-io] -# alloy-eips = { git = "https://github.com/alloy-rs/alloy", rev = "2390e6cd5" } -# alloy-serde = { git = "https://github.com/alloy-rs/alloy", rev = "2390e6cd5" } -# alloy-signer = { git = "https://github.com/alloy-rs/alloy", rev = "2390e6cd5" } -# alloy-network = { git = "https://github.com/alloy-rs/alloy", rev = "2390e6cd5" } -# alloy-provider = { git = "https://github.com/alloy-rs/alloy", rev = "2390e6cd5" } -# alloy-transport = { git = "https://github.com/alloy-rs/alloy", rev = "2390e6cd5" } -# alloy-consensus = { git = "https://github.com/alloy-rs/alloy", rev = "2390e6cd5" } -# alloy-rpc-types-eth = { git = "https://github.com/alloy-rs/alloy", rev = "2390e6cd5" } -# alloy-rpc-types-engine = { git = "https://github.com/alloy-rs/alloy", rev = "2390e6cd5" } -# alloy-network-primitives = { git = "https://github.com/alloy-rs/alloy", rev = "2390e6cd5" } diff --git a/op-alloy/deny.toml b/op-alloy/deny.toml deleted file mode 100644 index 91a662c5e3890..0000000000000 --- a/op-alloy/deny.toml +++ /dev/null @@ -1,62 +0,0 @@ -[graph] -targets = [] -all-features = false -no-default-features = false - -[output] -feature-depth = 1 - -[advisories] -ignore = [ - # paste crate is no longer maintained. - "RUSTSEC-2024-0436", - # bincode is unmaintained, but only used as a dev-dependency for testing. - "RUSTSEC-2025-0141", -] - -[licenses] -allow = [ - "MIT", - "ISC", - "MPL-2.0", - "Apache-2.0", - "Apache-2.0 WITH LLVM-exception", - "BSD-3-Clause", - "Unlicense", - "Unicode-3.0", - "Zlib", - # webpki-root-certs - "CDLA-Permissive-2.0", -] -confidence-threshold = 0.8 -exceptions = [ - # CC0 is a permissive license but somewhat unclear status for source code - # so we prefer to not have dependencies using it - # https://tldrlegal.com/license/creative-commons-cc0-1.0-universal - { allow = ["CC0-1.0"], name = "tiny-keccak" }, -] - -[licenses.private] -ignore = false -registries = [] - -[bans] -multiple-versions = "warn" -wildcards = "allow" -highlight = "all" -workspace-default-features = "allow" -external-default-features = "allow" -allow = [] -deny = [] -skip = [] -skip-tree = [] - -[sources] -unknown-registry = "deny" -unknown-git = "deny" -allow-git = [] - -[sources.allow-org] -github = [] -gitlab = [] -bitbucket = [] diff --git a/op-alloy/rustfmt.toml b/op-alloy/rustfmt.toml deleted file mode 100644 index 3063df707a64e..0000000000000 --- a/op-alloy/rustfmt.toml +++ /dev/null @@ -1,12 +0,0 @@ -reorder_imports = true -use_field_init_shorthand = true -use_small_heuristics = "Max" - -# Nightly -max_width = 100 -comment_width = 100 -imports_granularity = "Crate" -wrap_comments = true -format_code_in_doc_comments = true -doc_comment_code_block_width = 100 -format_macro_matchers = true diff --git a/op-alloy/typos.toml b/op-alloy/typos.toml deleted file mode 100644 index 0345f80a04cca..0000000000000 --- a/op-alloy/typos.toml +++ /dev/null @@ -1,90 +0,0 @@ -[files] -extend-exclude = [ - ".git", - "target", - "Cargo.lock", - "book/mermaid*.js", # Minified JS files - "book/dist/", # Built documentation - "book/theme/", # Theme files may have intentional spellings - "*.min.js", # All minified JS files - "CHANGELOG.md", # Changelog may contain intentional typos in historical entries -] - -[default] -extend-ignore-re = [ - # Hex strings of various lengths (common in blockchain projects) - "(?i)0x[0-9a-f]{8,}", # 8+ hex chars with 0x prefix - "(?i)[0-9a-f]{32,}", # 32+ hex chars without 0x (hashes, addresses) - "(?i)[0-9a-f]{8,}", # 8+ hex chars without 0x (shorter hex values) - # Ordinals in identifiers - "[0-9]+nd", - "[0-9]+th", - "[0-9]+st", - "[0-9]+rd", - # Base64 encoded strings (common in tests and configs) - "[A-Za-z0-9+/]{20,}={0,2}", -] - -[default.extend-words] -# Valid Rust/Cargo terms -crate = "crate" -crates = "crates" - -# Blockchain/Ethereum specific terms -alloy = "alloy" -asterisc = "asterisc" # Valid project name in Optimism ecosystem -bedrock = "bedrock" # Optimism upgrade name -batcher = "batcher" # OP Stack component -bootnode = "bootnode" -chainid = "chainid" -codegen = "codegen" -derivation = "derivation" -enr = "enr" -ethereum = "ethereum" -fpvm = "fpvm" # Fault Proof Virtual Machine -geth = "geth" -interop = "interop" -libmdbx = "libmdbx" -merkle = "merkle" -mips = "mips" -mpsc = "mpsc" -optimism = "optimism" -preimage = "preimage" -revm = "revm" -risc = "risc" -rollup = "rollup" -rpc = "rpc" -sequencer = "sequencer" -ser = "ser" # Serialization abbreviation -serde = "serde" -superchain = "superchain" # Optimism Superchain -trie = "trie" -txs = "txs" # Transactions abbreviation -usize = "usize" -workspaces = "workspaces" - -# Technical abbreviations and acronyms -api = "api" -cli = "cli" -cfg = "cfg" -const = "const" -env = "env" -impl = "impl" -io = "io" -lru = "lru" -mpt = "mpt" # Merkle Patricia Trie -msg = "msg" -mut = "mut" -nums = "nums" -num = "num" -ok = "ok" -std = "std" -structs = "structs" -ty = "ty" # Type abbreviation -vec = "vec" - -# Additional project-specific terms that might be flagged as typos -jsonrpsee = "jsonrpsee" # JSON-RPC library -tokio = "tokio" -async = "async" -await = "await" \ No newline at end of file diff --git a/op-devstack/shared/challenger/challenger.go b/op-devstack/shared/challenger/challenger.go index 332db141b014c..71abb5017c306 100644 --- a/op-devstack/shared/challenger/challenger.go +++ b/op-devstack/shared/challenger/challenger.go @@ -80,18 +80,18 @@ func applyCannonKonaConfig(c *config.Config, rollupCfgs []*rollup.Config, l1Gene if err := applyVmConfig(root, &c.CannonKona, c.Datadir, rollupCfgs, l1Genesis, l2Geneses); err != nil { return err } - c.CannonKona.Server = root + "kona/target/release/kona-host" + c.CannonKona.Server = root + "rust/target/release/kona-host" absRoot, err := filepath.Abs(root) if err != nil { return fmt.Errorf("failed to get absolute path to prestate dir: %w", err) } if interop { - c.CannonKonaAbsolutePreStateBaseURL, err = url.Parse("file:" + absRoot + "/kona/prestate-artifacts-cannon-interop") + c.CannonKonaAbsolutePreStateBaseURL, err = url.Parse("file:" + absRoot + "/rust/kona/prestate-artifacts-cannon-interop") if err != nil { return err } } else { - c.CannonKonaAbsolutePreStateBaseURL, err = url.Parse("file:" + absRoot + "/kona/prestate-artifacts-cannon") + c.CannonKonaAbsolutePreStateBaseURL, err = url.Parse("file:" + absRoot + "/rust/kona/prestate-artifacts-cannon") if err != nil { return err } diff --git a/op-devstack/sysgo/superroot.go b/op-devstack/sysgo/superroot.go index 942cc3f065b8f..2ed4708e28537 100644 --- a/op-devstack/sysgo/superroot.go +++ b/op-devstack/sysgo/superroot.go @@ -339,11 +339,11 @@ func getInteropCannonAbsolutePrestate(t devtest.CommonT) common.Hash { } func getInteropCannonKonaAbsolutePrestate(t devtest.CommonT) common.Hash { - return getAbsolutePrestate(t, "kona/prestate-artifacts-cannon-interop/prestate-proof.json") + return getAbsolutePrestate(t, "rust/kona/prestate-artifacts-cannon-interop/prestate-proof.json") } func getCannonKonaAbsolutePrestate(t devtest.CommonT) common.Hash { - return getAbsolutePrestate(t, "kona/prestate-artifacts-cannon/prestate-proof.json") + return getAbsolutePrestate(t, "rust/kona/prestate-artifacts-cannon/prestate-proof.json") } func getAbsolutePrestate(t devtest.CommonT, prestatePath string) common.Hash { diff --git a/op-program/scripts/build-prestates.sh b/op-program/scripts/build-prestates.sh index d10be689a7809..8507237433277 100755 --- a/op-program/scripts/build-prestates.sh +++ b/op-program/scripts/build-prestates.sh @@ -105,7 +105,7 @@ EOF fi rm -rf "${BIN_DIR}" - rm -rf kona/prestate-artifacts-* + rm -rf rust/kona/prestate-artifacts-* make reproducible-prestate >> "${log_file}" 2>&1 if [[ "${version}" =~ ^op-program/v ]]; then @@ -139,18 +139,18 @@ EOF fi if [[ "${version}" =~ ^kona-client/v ]]; then - if [ -f "kona/prestate-artifacts-cannon/prestate-proof.json" ]; then + if [ -f "rust/kona/prestate-artifacts-cannon/prestate-proof.json" ]; then local hash - hash=$(jq -r .pre kona/prestate-artifacts-cannon/prestate-proof.json) - cp kona/prestate-artifacts-cannon/prestate.bin.gz "${STATES_DIR}/${hash}.bin.gz" + hash=$(jq -r .pre rust/kona/prestate-artifacts-cannon/prestate-proof.json) + cp rust/kona/prestate-artifacts-cannon/prestate.bin.gz "${STATES_DIR}/${hash}.bin.gz" VERSIONS_JSON=$(echo "${VERSIONS_JSON}" | jq ". += [{\"version\": \"${short_version}\", \"hash\": \"${hash}\", \"type\": \"cannon64-kona\"}]") echo "Built cannon64-kona ${version}: ${hash}" fi - if [ -f "kona/prestate-artifacts-cannon-interop/prestate-proof.json" ]; then + if [ -f "rust/kona/prestate-artifacts-cannon-interop/prestate-proof.json" ]; then local hash - hash=$(jq -r .pre kona/prestate-artifacts-cannon-interop/prestate-proof.json) - cp kona/prestate-artifacts-cannon-interop/prestate.bin.gz "${STATES_DIR}/${hash}.bin.gz" + hash=$(jq -r .pre rust/kona/prestate-artifacts-cannon-interop/prestate-proof.json) + cp rust/kona/prestate-artifacts-cannon-interop/prestate.bin.gz "${STATES_DIR}/${hash}.bin.gz" VERSIONS_JSON=$(echo "${VERSIONS_JSON}" | jq ". += [{\"version\": \"${short_version}\", \"hash\": \"${hash}\", \"type\": \"cannon64-kona-interop\"}]") echo "Built cannon64-kona-interop ${version}: ${hash}" fi diff --git a/op-reth/.gitignore b/op-reth/.gitignore deleted file mode 100644 index 2f7896d1d1365..0000000000000 --- a/op-reth/.gitignore +++ /dev/null @@ -1 +0,0 @@ -target/ diff --git a/op-reth/Cargo.toml b/op-reth/Cargo.toml deleted file mode 100644 index 15a63a91c86ed..0000000000000 --- a/op-reth/Cargo.toml +++ /dev/null @@ -1,451 +0,0 @@ -[workspace.package] -version = "1.10.2" -edition = "2024" -rust-version = "1.88" -license = "MIT OR Apache-2.0" -homepage = "https://paradigmxyz.github.io/reth" -repository = "https://github.com/paradigmxyz/reth" -exclude = [".github/"] - -[workspace] -members = [ - "bin/", - "crates/chainspec/", - "crates/cli/", - "crates/consensus/", - "crates/evm/", - "crates/flashblocks/", - "crates/hardforks/", - "crates/node/", - "crates/payload/", - "crates/primitives/", - "crates/reth/", - "crates/rpc/", - "crates/storage/", - "crates/txpool/", -] -default-members = ["bin/"] -resolver = "2" - -[workspace.lints] -rust.missing_debug_implementations = "warn" -rust.missing_docs = "warn" -rust.rust_2018_idioms = { level = "deny", priority = -1 } -rust.unreachable_pub = "warn" -rust.unused_must_use = "deny" -rust.rust_2024_incompatible_pat = "warn" -rustdoc.all = "warn" - -[workspace.lints.clippy] -borrow_as_ptr = "warn" -branches_sharing_code = "warn" -clear_with_drain = "warn" -cloned_instead_of_copied = "warn" -collection_is_never_read = "warn" -dbg_macro = "warn" -derive_partial_eq_without_eq = "warn" -doc_markdown = "warn" -empty_line_after_doc_comments = "warn" -empty_line_after_outer_attr = "warn" -enum_glob_use = "warn" -equatable_if_let = "warn" -explicit_into_iter_loop = "warn" -explicit_iter_loop = "warn" -flat_map_option = "warn" -from_iter_instead_of_collect = "warn" -if_not_else = "warn" -if_then_some_else_none = "warn" -implicit_clone = "warn" -imprecise_flops = "warn" -iter_on_empty_collections = "warn" -iter_on_single_items = "warn" -iter_with_drain = "warn" -iter_without_into_iter = "warn" -large_stack_frames = "warn" -manual_assert = "warn" -manual_clamp = "warn" -manual_is_variant_and = "warn" -manual_string_new = "warn" -match_same_arms = "warn" -missing-const-for-fn = "warn" -mutex_integer = "warn" -naive_bytecount = "warn" -needless_bitwise_bool = "warn" -needless_continue = "warn" -needless_for_each = "warn" -needless_pass_by_ref_mut = "warn" -nonstandard_macro_braces = "warn" -option_as_ref_cloned = "warn" -or_fun_call = "warn" -path_buf_push_overwrite = "warn" -read_zero_byte_vec = "warn" -result_large_err = "allow" -redundant_clone = "warn" -redundant_else = "warn" -single_char_pattern = "warn" -string_lit_as_bytes = "warn" -string_lit_chars_any = "warn" -suboptimal_flops = "warn" -suspicious_operation_groupings = "warn" -trailing_empty_array = "warn" -trait_duplication_in_bounds = "warn" -transmute_undefined_repr = "warn" -trivial_regex = "warn" -tuple_array_conversions = "warn" -type_repetition_in_bounds = "warn" -uninhabited_references = "warn" -unnecessary_self_imports = "warn" -unnecessary_struct_initialization = "warn" -unnested_or_patterns = "warn" -unused_peekable = "warn" -unused_rounding = "warn" -use_self = "warn" -useless_let_if_seq = "warn" -while_float = "warn" -zero_sized_map_values = "warn" - -as_ptr_cast_mut = "allow" -cognitive_complexity = "allow" -debug_assert_with_mut_call = "allow" -fallible_impl_from = "allow" -future_not_send = "allow" -needless_collect = "allow" -non_send_fields_in_send_ty = "allow" -redundant_pub_crate = "allow" -significant_drop_in_scrutinee = "allow" -significant_drop_tightening = "allow" -too_long_first_doc_paragraph = "allow" - -[profile.dev] -debug = "line-tables-only" -split-debuginfo = "unpacked" - -[profile.dev.package] -proptest.opt-level = 3 -rand_chacha.opt-level = 3 -rand_xorshift.opt-level = 3 -unarray.opt-level = 3 - -[profile.hivetests] -inherits = "test" -opt-level = 3 -lto = "thin" - -[profile.release] -opt-level = 3 -lto = "thin" -debug = "none" -strip = "symbols" -panic = "unwind" -codegen-units = 16 - -[profile.profiling] -inherits = "release" -debug = "full" -strip = "none" - -[profile.bench] -inherits = "profiling" - -[profile.maxperf] -inherits = "release" -lto = "fat" -codegen-units = 1 - -[profile.reproducible] -inherits = "release" -panic = "abort" -codegen-units = 1 -incremental = false - -[workspace.dependencies] -# ==================== OP-RETH INTERNAL CRATES ==================== -op-reth = { path = "bin/" } -reth-optimism-chainspec = { path = "crates/chainspec/", default-features = false } -reth-optimism-cli = { path = "crates/cli/", default-features = false } -reth-optimism-consensus = { path = "crates/consensus/", default-features = false } -reth-optimism-evm = { path = "crates/evm/", default-features = false } -reth-optimism-flashblocks = { path = "crates/flashblocks/" } -reth-optimism-forks = { path = "crates/hardforks/", default-features = false } -reth-optimism-node = { path = "crates/node/" } -reth-optimism-payload-builder = { path = "crates/payload/" } -reth-optimism-primitives = { path = "crates/primitives/", default-features = false } -reth-op = { path = "crates/reth/", default-features = false } -reth-optimism-rpc = { path = "crates/rpc/" } -reth-optimism-storage = { path = "crates/storage/" } -reth-optimism-txpool = { path = "crates/txpool/" } - -# ==================== RETH CRATES (from git revision b3d532ce9d09b925ebbce7bdf213d04c402e124c) ==================== -reth = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce9d09b925ebbce7bdf213d04c402e124c" } -reth-basic-payload-builder = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce9d09b925ebbce7bdf213d04c402e124c" } -reth-chain-state = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce9d09b925ebbce7bdf213d04c402e124c" } -reth-chainspec = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce9d09b925ebbce7bdf213d04c402e124c", default-features = false } -reth-cli = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce9d09b925ebbce7bdf213d04c402e124c" } -reth-cli-commands = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce9d09b925ebbce7bdf213d04c402e124c" } -reth-cli-runner = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce9d09b925ebbce7bdf213d04c402e124c" } -reth-cli-util = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce9d09b925ebbce7bdf213d04c402e124c" } -reth-codecs = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce9d09b925ebbce7bdf213d04c402e124c" } -reth-consensus = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce9d09b925ebbce7bdf213d04c402e124c", default-features = false } -reth-consensus-common = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce9d09b925ebbce7bdf213d04c402e124c", default-features = false } -reth-db = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce9d09b925ebbce7bdf213d04c402e124c", default-features = false } -reth-db-api = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce9d09b925ebbce7bdf213d04c402e124c" } -reth-db-common = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce9d09b925ebbce7bdf213d04c402e124c" } -reth-downloaders = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce9d09b925ebbce7bdf213d04c402e124c" } -reth-e2e-test-utils = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce9d09b925ebbce7bdf213d04c402e124c" } -reth-engine-local = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce9d09b925ebbce7bdf213d04c402e124c" } -reth-engine-primitives = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce9d09b925ebbce7bdf213d04c402e124c", default-features = false } -reth-errors = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce9d09b925ebbce7bdf213d04c402e124c" } -reth-eth-wire = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce9d09b925ebbce7bdf213d04c402e124c" } -reth-ethereum-forks = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce9d09b925ebbce7bdf213d04c402e124c", default-features = false } -reth-evm = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce9d09b925ebbce7bdf213d04c402e124c", default-features = false } -reth-exex = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce9d09b925ebbce7bdf213d04c402e124c" } -reth-execution-errors = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce9d09b925ebbce7bdf213d04c402e124c", default-features = false } -reth-execution-types = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce9d09b925ebbce7bdf213d04c402e124c", default-features = false } -reth-fs-util = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce9d09b925ebbce7bdf213d04c402e124c" } -reth-metrics = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce9d09b925ebbce7bdf213d04c402e124c" } -reth-network = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce9d09b925ebbce7bdf213d04c402e124c" } -reth-network-api = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce9d09b925ebbce7bdf213d04c402e124c" } -reth-network-peers = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce9d09b925ebbce7bdf213d04c402e124c", default-features = false } -reth-node-api = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce9d09b925ebbce7bdf213d04c402e124c" } -reth-node-builder = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce9d09b925ebbce7bdf213d04c402e124c" } -reth-node-core = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce9d09b925ebbce7bdf213d04c402e124c" } -reth-node-events = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce9d09b925ebbce7bdf213d04c402e124c" } -reth-node-metrics = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce9d09b925ebbce7bdf213d04c402e124c" } -reth-payload-builder = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce9d09b925ebbce7bdf213d04c402e124c" } -reth-payload-builder-primitives = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce9d09b925ebbce7bdf213d04c402e124c" } -reth-payload-primitives = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce9d09b925ebbce7bdf213d04c402e124c" } -reth-payload-util = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce9d09b925ebbce7bdf213d04c402e124c" } -reth-payload-validator = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce9d09b925ebbce7bdf213d04c402e124c" } -reth-primitives-traits = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce9d09b925ebbce7bdf213d04c402e124c", default-features = false } -reth-provider = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce9d09b925ebbce7bdf213d04c402e124c" } -reth-prune = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce9d09b925ebbce7bdf213d04c402e124c" } -reth-prune-types = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce9d09b925ebbce7bdf213d04c402e124c", default-features = false } -reth-revm = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce9d09b925ebbce7bdf213d04c402e124c", default-features = false } -reth-rpc = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce9d09b925ebbce7bdf213d04c402e124c" } -reth-rpc-api = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce9d09b925ebbce7bdf213d04c402e124c" } -reth-rpc-builder = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce9d09b925ebbce7bdf213d04c402e124c" } -reth-rpc-engine-api = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce9d09b925ebbce7bdf213d04c402e124c" } -reth-rpc-eth-api = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce9d09b925ebbce7bdf213d04c402e124c" } -reth-rpc-eth-types = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce9d09b925ebbce7bdf213d04c402e124c", default-features = false } -reth-rpc-server-types = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce9d09b925ebbce7bdf213d04c402e124c" } -reth-stages = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce9d09b925ebbce7bdf213d04c402e124c" } -reth-stages-types = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce9d09b925ebbce7bdf213d04c402e124c", default-features = false } -reth-static-file = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce9d09b925ebbce7bdf213d04c402e124c" } -reth-static-file-types = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce9d09b925ebbce7bdf213d04c402e124c", default-features = false } -reth-storage-api = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce9d09b925ebbce7bdf213d04c402e124c", default-features = false } -reth-storage-errors = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce9d09b925ebbce7bdf213d04c402e124c", default-features = false } -reth-tasks = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce9d09b925ebbce7bdf213d04c402e124c" } -reth-tracing = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce9d09b925ebbce7bdf213d04c402e124c", default-features = false } -reth-transaction-pool = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce9d09b925ebbce7bdf213d04c402e124c" } -reth-trie = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce9d09b925ebbce7bdf213d04c402e124c" } -reth-trie-common = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce9d09b925ebbce7bdf213d04c402e124c", default-features = false } -reth-trie-db = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce9d09b925ebbce7bdf213d04c402e124c" } -reth-zstd-compressors = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce9d09b925ebbce7bdf213d04c402e124c", default-features = false } - -# ==================== REVM ==================== -revm = { version = "34.0.0", default-features = false } -revm-bytecode = { version = "8.0.0", default-features = false } -revm-database = { version = "10.0.0", default-features = false } -revm-state = { version = "9.0.0", default-features = false } -revm-primitives = { version = "22.0.0", default-features = false } -revm-interpreter = { version = "32.0.0", default-features = false } -revm-database-interface = { version = "9.0.0", default-features = false } -op-revm = { version = "15.0.0", default-features = false } -revm-inspectors = "0.34.1" - -# ==================== ALLOY ==================== -alloy-chains = { version = "0.2.5", default-features = false } -alloy-dyn-abi = "1.5.4" -alloy-eip2124 = { version = "0.2.0", default-features = false } -alloy-eip7928 = { version = "0.3.0", default-features = false } -alloy-evm = { version = "0.27.0", default-features = false } -alloy-primitives = { version = "1.5.4", default-features = false, features = ["map-foldhash"] } -alloy-rlp = { version = "0.3.10", default-features = false, features = ["core-net"] } -alloy-sol-macro = "1.5.4" -alloy-sol-types = { version = "1.5.4", default-features = false } -alloy-trie = { version = "0.9.1", default-features = false } - -alloy-hardforks = "0.4.5" - -alloy-consensus = { version = "1.5.2", default-features = false } -alloy-contract = { version = "1.5.2", default-features = false } -alloy-eips = { version = "1.5.2", default-features = false } -alloy-genesis = { version = "1.5.2", default-features = false } -alloy-json-rpc = { version = "1.5.2", default-features = false } -alloy-network = { version = "1.5.2", default-features = false } -alloy-network-primitives = { version = "1.5.2", default-features = false } -alloy-provider = { version = "1.5.2", features = ["reqwest", "debug-api"], default-features = false } -alloy-pubsub = { version = "1.5.2", default-features = false } -alloy-rpc-client = { version = "1.5.2", default-features = false } -alloy-rpc-types = { version = "1.5.2", features = ["eth"], default-features = false } -alloy-rpc-types-admin = { version = "1.5.2", default-features = false } -alloy-rpc-types-anvil = { version = "1.5.2", default-features = false } -alloy-rpc-types-beacon = { version = "1.5.2", default-features = false } -alloy-rpc-types-debug = { version = "1.5.2", default-features = false } -alloy-rpc-types-engine = { version = "1.5.2", default-features = false } -alloy-rpc-types-eth = { version = "1.5.2", default-features = false } -alloy-rpc-types-mev = { version = "1.5.2", default-features = false } -alloy-rpc-types-trace = { version = "1.5.2", default-features = false } -alloy-rpc-types-txpool = { version = "1.5.2", default-features = false } -alloy-serde = { version = "1.5.2", default-features = false } -alloy-signer = { version = "1.5.2", default-features = false } -alloy-signer-local = { version = "1.5.2", default-features = false } -alloy-transport = { version = "1.5.2" } -alloy-transport-http = { version = "1.5.2", features = ["reqwest-rustls-tls"], default-features = false } -alloy-transport-ipc = { version = "1.5.2", default-features = false } -alloy-transport-ws = { version = "1.5.2", default-features = false } - -# ==================== OP-ALLOY ==================== -alloy-op-evm = { version = "0.27.0", default-features = false } -alloy-op-hardforks = "0.4.4" -op-alloy-rpc-types = { version = "0.23.1", default-features = false } -op-alloy-rpc-types-engine = { version = "0.23.1", default-features = false } -op-alloy-network = { version = "0.23.1", default-features = false } -op-alloy-consensus = { version = "0.23.1", default-features = false } -op-alloy-rpc-jsonrpsee = { version = "0.23.1", default-features = false } -op-alloy-flz = { version = "0.13.1", default-features = false } - -# ==================== ASYNC ==================== -async-compression = { version = "0.4", default-features = false } -async-stream = "0.3" -async-trait = "0.1.68" -futures = "0.3" -futures-core = "0.3" -futures-util = { version = "0.3", default-features = false } -hyper = "1.3" -hyper-util = "0.1.5" -pin-project = "1.0.12" -reqwest = { version = "0.12", default-features = false } -tracing-futures = "0.2" -tower = "0.5" -tower-http = "0.6" - -# ==================== TOKIO ==================== -tokio = { version = "1.44.2", default-features = false } -tokio-stream = "0.1.11" -tokio-tungstenite = "0.26.2" -tokio-util = { version = "0.7.4", features = ["codec"] } - -# ==================== RPC ==================== -jsonrpsee = "0.26.0" -jsonrpsee-core = "0.26.0" -jsonrpsee-server = "0.26.0" -jsonrpsee-http-client = "0.26.0" -jsonrpsee-types = "0.26.0" - -# ==================== CRYPTO ==================== -c-kzg = "2.1.5" -enr = { version = "0.13", default-features = false } -k256 = { version = "0.13", default-features = false, features = ["ecdsa"] } -secp256k1 = { version = "0.30", default-features = false, features = ["global-context", "recovery"] } -sha2 = { version = "0.10", default-features = false } - -# ==================== SERIALIZATION ==================== -bincode = "1.3" -serde = { version = "1.0", default-features = false } -serde_json = { version = "1.0", default-features = false, features = ["alloc"] } -serde_with = { version = "3", default-features = false, features = ["macros"] } -toml = "0.8" - -# ==================== METRICS ==================== -metrics = "0.24.0" -metrics-derive = "0.1" -metrics-exporter-prometheus = { version = "0.18.0", default-features = false } -metrics-process = "2.1.0" -metrics-util = { default-features = false, version = "0.20.0" } - -# ==================== TRACING ==================== -tracing = { version = "0.1.0", default-features = false } -tracing-appender = "0.2" -tracing-subscriber = { version = "0.3", default-features = false } - -# ==================== TESTING ==================== -arbitrary = "1.3" -assert_matches = "1.5.0" -criterion = { package = "codspeed-criterion-compat", version = "4.3" } -insta = "1.41" -proptest = "1.7" -proptest-derive = "0.5" -proptest-arbitrary-interop = "0.1.0" -similar-asserts = { version = "1.5.0", features = ["serde"] } -tempfile = "3.20" -test-fuzz = "7" -rstest = "0.24.0" -test-case = "3" - -# ==================== COMPRESSION ==================== -brotli = "8" -lz4 = "1.28.1" -lz4_flex = { version = "0.11", default-features = false } -miniz_oxide = { version = "0.8.4", default-features = false } -zstd = "0.13" -tar-no-std = { version = "0.3.2", default-features = false } - -# ==================== MISC ==================== -either = { version = "1.15.0", default-features = false } -arrayvec = { version = "0.7.6", default-features = false } -aquamarine = "0.6" -auto_impl = "1" -backon = { version = "1.2", default-features = false, features = ["std-blocking-sleep", "tokio-sleep"] } -bitflags = "2.4" -boyer-moore-magiclen = "0.2.16" -bytes = { version = "1.5", default-features = false } -cfg-if = "1.0" -clap = "4" -color-eyre = "0.6" -dashmap = "6.0" -derive_more = { version = "2", default-features = false, features = ["full"] } -dirs-next = "2.0.0" -dyn-clone = "1.0.17" -eyre = "0.6" -fdlimit = "0.3.0" -fixed-map = { version = "0.9", default-features = false } -humantime = "2.1" -humantime-serde = "1.1" -itertools = { version = "0.14", default-features = false } -linked_hash_set = "0.1" -modular-bitfield = "0.11.2" -notify = { version = "8.0.0", default-features = false, features = ["macos_fsevent"] } -nybbles = { version = "0.4.2", default-features = false } -once_cell = { version = "1.19", default-features = false, features = ["critical-section"] } -parking_lot = "0.12" -paste = "1.0" -rand = "0.9" -rand_08 = { package = "rand", version = "0.8" } -rayon = "1.7" -ringbuffer = "0.15.0" -rustc-hash = { version = "2.0", default-features = false } -schnellru = "0.2" -shellexpand = "3.0.0" -shlex = "1.3" -smallvec = "1" -strum = { version = "0.27", default-features = false } -strum_macros = "0.27" -syn = "2.0" -thiserror = { version = "2.0.0", default-features = false } -tar = "0.4.44" -url = { version = "2.3", default-features = false } -byteorder = "1" -mini-moka = "0.10" -moka = "0.12" -chrono = "0.4.41" - -# proc-macros -proc-macro2 = "1.0" -quote = "1.0" - -# http -http = "1.0" -http-body = "1.0" -http-body-util = "0.1.2" -jsonwebtoken = "9" - -# networking -ipnet = "2.11" - -# allocators -jemalloc_pprof = { version = "0.8", default-features = false } -tikv-jemalloc-ctl = "0.6" -tikv-jemallocator = "0.6" -tracy-client = "0.18.0" -snmalloc-rs = { version = "0.3.7", features = ["build_cc"] } diff --git a/op-reth/crates/consensus/src/proof.rs b/op-reth/crates/consensus/src/proof.rs deleted file mode 100644 index 8c601942ece10..0000000000000 --- a/op-reth/crates/consensus/src/proof.rs +++ /dev/null @@ -1,338 +0,0 @@ -//! Helper function for Receipt root calculation for Optimism hardforks. - -use alloc::vec::Vec; -use alloy_consensus::ReceiptWithBloom; -use alloy_eips::eip2718::Encodable2718; -use alloy_primitives::B256; -use alloy_trie::root::ordered_trie_root_with_encoder; -use reth_optimism_forks::OpHardforks; -use reth_optimism_primitives::DepositReceipt; - -/// Calculates the receipt root for a header. -pub(crate) fn calculate_receipt_root_optimism( - receipts: &[ReceiptWithBloom<&R>], - chain_spec: impl OpHardforks, - timestamp: u64, -) -> B256 { - // There is a minor bug in op-geth and op-erigon where in the Regolith hardfork, - // the receipt root calculation does not include the deposit nonce in the receipt - // encoding. In the Regolith Hardfork, we must strip the deposit nonce from the - // receipts before calculating the receipt root. This was corrected in the Canyon - // hardfork. - if chain_spec.is_regolith_active_at_timestamp(timestamp) && - !chain_spec.is_canyon_active_at_timestamp(timestamp) - { - let receipts = receipts - .iter() - .map(|receipt| { - let mut receipt = receipt.clone().map_receipt(|r| r.clone()); - if let Some(receipt) = receipt.receipt.as_deposit_receipt_mut() { - receipt.deposit_nonce = None; - } - receipt - }) - .collect::>(); - - return ordered_trie_root_with_encoder(receipts.as_slice(), |r, buf| r.encode_2718(buf)) - } - - ordered_trie_root_with_encoder(receipts, |r, buf| r.encode_2718(buf)) -} - -/// Calculates the receipt root for a header for the reference type of an OP receipt. -/// -/// NOTE: Prefer calculate receipt root optimism if you have log blooms memoized. -pub fn calculate_receipt_root_no_memo_optimism( - receipts: &[R], - chain_spec: impl OpHardforks, - timestamp: u64, -) -> B256 { - // There is a minor bug in op-geth and op-erigon where in the Regolith hardfork, - // the receipt root calculation does not include the deposit nonce in the receipt - // encoding. In the Regolith Hardfork, we must strip the deposit nonce from the - // receipts before calculating the receipt root. This was corrected in the Canyon - // hardfork. - if chain_spec.is_regolith_active_at_timestamp(timestamp) && - !chain_spec.is_canyon_active_at_timestamp(timestamp) - { - let receipts = receipts - .iter() - .map(|r| { - let mut r = (*r).clone(); - if let Some(receipt) = r.as_deposit_receipt_mut() { - receipt.deposit_nonce = None; - } - r - }) - .collect::>(); - - return ordered_trie_root_with_encoder(&receipts, |r, buf| { - r.with_bloom_ref().encode_2718(buf); - }) - } - - ordered_trie_root_with_encoder(receipts, |r, buf| { - r.with_bloom_ref().encode_2718(buf); - }) -} - -#[cfg(test)] -mod tests { - use super::*; - use alloy_consensus::{Receipt, ReceiptWithBloom, TxReceipt}; - use alloy_primitives::{b256, bloom, hex, Address, Bytes, Log, LogData}; - use op_alloy_consensus::OpDepositReceipt; - use reth_optimism_chainspec::BASE_SEPOLIA; - use reth_optimism_primitives::OpReceipt; - - /// Tests that the receipt root is computed correctly for the regolith block. - /// This was implemented due to a minor bug in op-geth and op-erigon where in - /// the Regolith hardfork, the receipt root calculation does not include the - /// deposit nonce in the receipt encoding. - /// To fix this an op-reth patch was applied to the receipt root calculation - /// to strip the deposit nonce from each receipt before calculating the root. - #[test] - fn check_optimism_receipt_root() { - let cases = [ - // Deposit nonces didn't exist in Bedrock; No need to strip. For the purposes of this - // test, we do have them, so we should get the same root as Canyon. - ( - "bedrock", - 1679079599, - b256!("0xe255fed45eae7ede0556fe4fabc77b0d294d18781a5a581cab09127bc4cd9ffb"), - ), - // Deposit nonces introduced in Regolith. They weren't included in the receipt RLP, - // so we need to strip them - the receipt root will differ. - ( - "regolith", - 1679079600, - b256!("0xe255fed45eae7ede0556fe4fabc77b0d294d18781a5a581cab09127bc4cd9ffb"), - ), - // Receipt root hashing bug fixed in Canyon. Back to including the deposit nonce - // in the receipt RLP when computing the receipt root. - ( - "canyon", - 1699981200, - b256!("0x6eefbb5efb95235476654a8bfbf8cb64a4f5f0b0c80b700b0c5964550beee6d7"), - ), - ]; - - for case in cases { - let receipts = [ - // 0xb0d6ee650637911394396d81172bd1c637d568ed1fbddab0daddfca399c58b53 - OpReceipt::Deposit(OpDepositReceipt { - inner: Receipt { - status: true.into(), - cumulative_gas_used: 46913, - logs: vec![], - }, - deposit_nonce: Some(4012991u64), - deposit_receipt_version: None, - }), - // 0x2f433586bae30573c393adfa02bc81d2a1888a3d6c9869f473fb57245166bd9a - OpReceipt::Eip1559(Receipt { - status: true.into(), - cumulative_gas_used: 118083, - logs: vec![ - Log { - address: hex!("ddb6dcce6b794415145eb5caa6cd335aeda9c272").into(), - data: LogData::new_unchecked( - vec![ - b256!("0xc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62"), - b256!("0x000000000000000000000000c498902843af527e674846bb7edefa8ad62b8fb9"), - b256!("0x000000000000000000000000c498902843af527e674846bb7edefa8ad62b8fb9"), - b256!("0x0000000000000000000000000000000000000000000000000000000000000000"), - ], - Bytes::from_static(&hex!("00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001")) - ) - }, - Log { - address: hex!("ddb6dcce6b794415145eb5caa6cd335aeda9c272").into(), - data: LogData::new_unchecked( - vec![ - b256!("0xc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62"), - b256!("0x000000000000000000000000c498902843af527e674846bb7edefa8ad62b8fb9"), - b256!("0x0000000000000000000000000000000000000000000000000000000000000000"), - b256!("0x000000000000000000000000c498902843af527e674846bb7edefa8ad62b8fb9"), - ], - Bytes::from_static(&hex!("00000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000001")) - ) - }, - Log { - address: hex!("ddb6dcce6b794415145eb5caa6cd335aeda9c272").into(), - data: LogData::new_unchecked( - vec![ - b256!("0x0eb774bb9698a73583fe07b6972cf2dcc08d1d97581a22861f45feb86b395820"), - b256!("0x000000000000000000000000c498902843af527e674846bb7edefa8ad62b8fb9"), - b256!("0x000000000000000000000000c498902843af527e674846bb7edefa8ad62b8fb9"), - ], Bytes::from_static(&hex!("0000000000000000000000000000000000000000000000000000000000000003"))) - }, - ]}), - // 0x6c33676e8f6077f46a62eabab70bc6d1b1b18a624b0739086d77093a1ecf8266 - OpReceipt::Eip1559(Receipt { - status: true.into(), - cumulative_gas_used: 189253, - logs: vec![ - Log { - address: hex!("ddb6dcce6b794415145eb5caa6cd335aeda9c272").into(), - data: LogData::new_unchecked(vec![ - b256!("0xc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62"), - b256!("0x0000000000000000000000009d521a04bee134ff8136d2ec957e5bc8c50394ec"), - b256!("0x0000000000000000000000009d521a04bee134ff8136d2ec957e5bc8c50394ec"), - b256!("0x0000000000000000000000000000000000000000000000000000000000000000"), - ], - Bytes::from_static(&hex!("00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001"))) - }, - Log { - address: hex!("ddb6dcce6b794415145eb5caa6cd335aeda9c272").into(), - data: LogData::new_unchecked(vec![ - b256!("0xc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62"), - b256!("0x0000000000000000000000009d521a04bee134ff8136d2ec957e5bc8c50394ec"), - b256!("0x0000000000000000000000000000000000000000000000000000000000000000"), - b256!("0x0000000000000000000000009d521a04bee134ff8136d2ec957e5bc8c50394ec"), - ], - Bytes::from_static(&hex!("00000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000001"))) - }, - Log { - address: hex!("ddb6dcce6b794415145eb5caa6cd335aeda9c272").into(), - data: LogData::new_unchecked(vec![ - b256!("0x0eb774bb9698a73583fe07b6972cf2dcc08d1d97581a22861f45feb86b395820"), - b256!("0x0000000000000000000000009d521a04bee134ff8136d2ec957e5bc8c50394ec"), - b256!("0x0000000000000000000000009d521a04bee134ff8136d2ec957e5bc8c50394ec"), - ], - Bytes::from_static(&hex!("0000000000000000000000000000000000000000000000000000000000000003"))) - }, - ], - }), - // 0x4d3ecbef04ba7ce7f5ab55be0c61978ca97c117d7da448ed9771d4ff0c720a3f - OpReceipt::Eip1559(Receipt { - status: true.into(), - cumulative_gas_used: 346969, - logs: vec![ - Log { - address: hex!("4200000000000000000000000000000000000006").into(), - data: LogData::new_unchecked( vec![ - b256!("0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"), - b256!("0x000000000000000000000000c3feb4ef4c2a5af77add15c95bd98f6b43640cc8"), - b256!("0x0000000000000000000000002992607c1614484fe6d865088e5c048f0650afd4"), - ], - Bytes::from_static(&hex!("0000000000000000000000000000000000000000000000000018de76816d8000"))) - }, - Log { - address: hex!("cf8e7e6b26f407dee615fc4db18bf829e7aa8c09").into(), - data: LogData::new_unchecked( vec![ - b256!("0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"), - b256!("0x0000000000000000000000002992607c1614484fe6d865088e5c048f0650afd4"), - b256!("0x0000000000000000000000008dbffe4c8bf3caf5deae3a99b50cfcf3648cbc09"), - ], - Bytes::from_static(&hex!("000000000000000000000000000000000000000000000002d24d8e9ac1aa79e2"))) - }, - Log { - address: hex!("2992607c1614484fe6d865088e5c048f0650afd4").into(), - data: LogData::new_unchecked( vec![ - b256!("0x1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1"), - ], - Bytes::from_static(&hex!("000000000000000000000000000000000000000000000009bd50642785c15736000000000000000000000000000000000000000000011bb7ac324f724a29bbbf"))) - }, - Log { - address: hex!("2992607c1614484fe6d865088e5c048f0650afd4").into(), - data: LogData::new_unchecked( vec![ - b256!("0xd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822"), - b256!("0x00000000000000000000000029843613c7211d014f5dd5718cf32bcd314914cb"), - b256!("0x0000000000000000000000008dbffe4c8bf3caf5deae3a99b50cfcf3648cbc09"), - ], - Bytes::from_static(&hex!("0000000000000000000000000000000000000000000000000018de76816d800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002d24d8e9ac1aa79e2"))) - }, - Log { - address: hex!("6d0f8d488b669aa9ba2d0f0b7b75a88bf5051cd3").into(), - data: LogData::new_unchecked( vec![ - b256!("0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"), - b256!("0x0000000000000000000000008dbffe4c8bf3caf5deae3a99b50cfcf3648cbc09"), - b256!("0x000000000000000000000000c3feb4ef4c2a5af77add15c95bd98f6b43640cc8"), - ], - Bytes::from_static(&hex!("00000000000000000000000000000000000000000000000014bc73062aea8093"))) - }, - Log { - address: hex!("8dbffe4c8bf3caf5deae3a99b50cfcf3648cbc09").into(), - data: LogData::new_unchecked( vec![ - b256!("0x1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1"), - ], - Bytes::from_static(&hex!("00000000000000000000000000000000000000000000002f122cfadc1ca82a35000000000000000000000000000000000000000000000665879dc0609945d6d1"))) - }, - Log { - address: hex!("8dbffe4c8bf3caf5deae3a99b50cfcf3648cbc09").into(), - data: LogData::new_unchecked( vec![ - b256!("0xd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822"), - b256!("0x00000000000000000000000029843613c7211d014f5dd5718cf32bcd314914cb"), - b256!("0x000000000000000000000000c3feb4ef4c2a5af77add15c95bd98f6b43640cc8"), - ], - Bytes::from_static(&hex!("0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002d24d8e9ac1aa79e200000000000000000000000000000000000000000000000014bc73062aea80930000000000000000000000000000000000000000000000000000000000000000"))) - }, - ], - }), - // 0xf738af5eb00ba23dbc1be2dbce41dbc0180f0085b7fb46646e90bf737af90351 - OpReceipt::Eip1559(Receipt { - status: true.into(), - cumulative_gas_used: 623249, - logs: vec![ - Log { - address: hex!("ac6564f3718837caadd42eed742d75c12b90a052").into(), - data: LogData::new_unchecked( vec![ - b256!("0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"), - b256!("0x0000000000000000000000000000000000000000000000000000000000000000"), - b256!("0x000000000000000000000000a4fa7f3fbf0677f254ebdb1646146864c305b76e"), - b256!("0x000000000000000000000000000000000000000000000000000000000011a1d3"), - ], - Default::default()) - }, - Log { - address: hex!("ac6564f3718837caadd42eed742d75c12b90a052").into(), - data: LogData::new_unchecked( vec![ - b256!("0x9d89e36eadf856db0ad9ffb5a569e07f95634dddd9501141ecf04820484ad0dc"), - b256!("0x000000000000000000000000a4fa7f3fbf0677f254ebdb1646146864c305b76e"), - b256!("0x000000000000000000000000000000000000000000000000000000000011a1d3"), - ], - Bytes::from_static(&hex!("00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000037697066733a2f2f516d515141646b33736538396b47716577395256567a316b68643548375562476d4d4a485a62566f386a6d346f4a2f30000000000000000000"))) - }, - Log { - address: hex!("ac6564f3718837caadd42eed742d75c12b90a052").into(), - data: LogData::new_unchecked( vec![ - b256!("0x110d160a1bedeea919a88fbc4b2a9fb61b7e664084391b6ca2740db66fef80fe"), - b256!("0x00000000000000000000000084d47f6eea8f8d87910448325519d1bb45c2972a"), - b256!("0x000000000000000000000000a4fa7f3fbf0677f254ebdb1646146864c305b76e"), - b256!("0x000000000000000000000000000000000000000000000000000000000011a1d3"), - ], - Bytes::from_static(&hex!("0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000a4fa7f3fbf0677f254ebdb1646146864c305b76e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007717500762343034303661353035646234633961386163316433306335633332303265370000000000000000000000000000000000000000000000000000000000000037697066733a2f2f516d515141646b33736538396b47716577395256567a316b68643548375562476d4d4a485a62566f386a6d346f4a2f30000000000000000000"))) - }, - ], - }), - ]; - let root = calculate_receipt_root_optimism( - &receipts.iter().map(TxReceipt::with_bloom_ref).collect::>(), - BASE_SEPOLIA.as_ref(), - case.1, - ); - assert_eq!(root, case.2); - } - } - - #[test] - fn check_receipt_root_optimism() { - let logs = vec![Log { - address: Address::ZERO, - data: LogData::new_unchecked(vec![], Default::default()), - }]; - let logs_bloom = bloom!( - "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001" - ); - let inner = - OpReceipt::Eip2930(Receipt { status: true.into(), cumulative_gas_used: 102068, logs }); - let receipt = ReceiptWithBloom { receipt: &inner, logs_bloom }; - let receipt = vec![receipt]; - let root = calculate_receipt_root_optimism(&receipt, BASE_SEPOLIA.as_ref(), 0); - assert_eq!( - root, - b256!("0xfe70ae4a136d98944951b2123859698d59ad251a381abc9960fa81cae3d0d4a0") - ); - } -} diff --git a/op-reth/deny.toml b/op-reth/deny.toml deleted file mode 100644 index 80b3b190e7cb9..0000000000000 --- a/op-reth/deny.toml +++ /dev/null @@ -1,95 +0,0 @@ -# This section is considered when running `cargo deny check advisories` -# More documentation for the advisories section can be found here: -# https://embarkstudios.github.io/cargo-deny/checks/advisories/cfg.html -[advisories] -yanked = "warn" -ignore = [ - # https://rustsec.org/advisories/RUSTSEC-2024-0436 paste! is unmaintained - "RUSTSEC-2024-0436", - # https://rustsec.org/advisories/RUSTSEC-2025-0141 bincode is unmaintained, need to transition all deps to wincode first - "RUSTSEC-2025-0141", - # https://rustsec.org/advisories/RUSTSEC-2026-0002 lru unused directly: - "RUSTSEC-2026-0002", -] - -# This section is considered when running `cargo deny check bans`. -# More documentation about the 'bans' section can be found here: -# https://embarkstudios.github.io/cargo-deny/checks/bans/cfg.html -[bans] -# Lint level for when multiple versions of the same crate are detected -multiple-versions = "warn" -# Lint level for when a crate version requirement is `*` -wildcards = "allow" -highlight = "all" -# List of crates to deny -deny = [{ name = "openssl" }] -# Certain crates/versions that will be skipped when doing duplicate detection. -skip = [] -# Similarly to `skip` allows you to skip certain crates during duplicate -# detection. Unlike skip, it also includes the entire tree of transitive -# dependencies starting at the specified crate, up to a certain depth, which is -# by default infinite -skip-tree = [] - -[licenses] -version = 2 -confidence-threshold = 0.8 - -# List of explicitly allowed licenses -# See https://spdx.org/licenses/ for list of possible licenses -# [possible values: any SPDX 3.7 short identifier (+ optional exception)]. -allow = [ - "MIT", - "MIT-0", - "Apache-2.0", - "Apache-2.0 WITH LLVM-exception", - "BSD-2-Clause", - "BSD-3-Clause", - "BSL-1.0", - "0BSD", - "CC0-1.0", - "ISC", - "Unlicense", - "Unicode-3.0", - "Zlib", - # https://github.com/rustls/webpki/blob/main/LICENSE ISC Style - "LicenseRef-rustls-webpki", - "CDLA-Permissive-2.0", - "MPL-2.0", -] - -# Allow 1 or more licenses on a per-crate basis, so that particular licenses -# aren't accepted for every possible crate as with the normal allow list -exceptions = [ - # TODO: decide on MPL-2.0 handling - # These dependencies are grandfathered in https://github.com/paradigmxyz/reth/pull/6980 - { allow = ["MPL-2.0"], name = "option-ext" }, - { allow = ["MPL-2.0"], name = "webpki-root-certs" }, -] - -[[licenses.clarify]] -name = "rustls-webpki" -expression = "LicenseRef-rustls-webpki" -license-files = [{ path = "LICENSE", hash = 0x001c7e6c }] - -# This section is considered when running `cargo deny check sources`. -# More documentation about the 'sources' section can be found here: -# https://embarkstudios.github.io/cargo-deny/checks/sources/cfg.html -[sources] -# Lint level for what to happen when a crate from a crate registry that is not -# in the allow list is encountered -unknown-registry = "warn" -# Lint level for what to happen when a crate from a git repository that is not -# in the allow list is encountered -unknown-git = "deny" -allow-git = [ - # TODO: Please avoid adding new entries to this list. - "https://github.com/alloy-rs/alloy", - "https://github.com/foundry-rs/block-explorers", - "https://github.com/bluealloy/revm", - "https://github.com/paradigmxyz/revm-inspectors", - "https://github.com/alloy-rs/evm", - "https://github.com/alloy-rs/hardforks", - "https://github.com/paradigmxyz/jsonrpsee", - "https://github.com/paradigmxyz/reth", -] diff --git a/op-reth/rustfmt.toml b/op-reth/rustfmt.toml deleted file mode 100644 index bf86a535083e2..0000000000000 --- a/op-reth/rustfmt.toml +++ /dev/null @@ -1,12 +0,0 @@ -style_edition = "2021" -reorder_imports = true -imports_granularity = "Crate" -use_small_heuristics = "Max" -comment_width = 100 -wrap_comments = true -binop_separator = "Back" -trailing_comma = "Vertical" -trailing_semicolon = false -use_field_init_shorthand = true -format_code_in_doc_comments = true -doc_comment_code_block_width = 100 diff --git a/op-reth/typos.toml b/op-reth/typos.toml deleted file mode 100644 index 896c2c783e373..0000000000000 --- a/op-reth/typos.toml +++ /dev/null @@ -1,40 +0,0 @@ -[files] -extend-exclude = [ - ".git", - "target", - "crates/storage/libmdbx-rs/mdbx-sys/libmdbx", - "Cargo.toml", - "Cargo.lock", - "testing/ef-tests", -] - -[default] -extend-ignore-re = [ - # Hex strings of various lengths - "(?i)0x[0-9a-f]{8}", # 8 hex chars - "(?i)0x[0-9a-f]{40}", # 40 hex chars - "(?i)0x[0-9a-f]{64}", # 64 hex chars - "(?i)[0-9a-f]{8}", # 8 hex chars without 0x - "(?i)[0-9a-f]{40}", # 40 hex chars without 0x - "(?i)[0-9a-f]{64}", # 64 hex chars without 0x - # Ordinals in identifiers - "[0-9]+nd", - "[0-9]+th", - "[0-9]+st", - "[0-9]+rd", -] - -[default.extend-words] -# These are valid identifiers/terms that should be allowed -crate = "crate" -ser = "ser" -ratatui = "ratatui" -seeked = "seeked" # Past tense of seek, used in trie iterator -Seeked = "Seeked" # Type name in trie iterator -Whe = "Whe" # Part of base64 encoded signature -hel = "hel" # Part of hostname bootnode-hetzner-hel -ONL = "ONL" # Part of base64 encoded ENR -Iy = "Iy" # Part of base64 encoded ENR -flate = "flate" # zlib-flate is a valid tool name -Pn = "Pn" # Part of UPnP (Universal Plug and Play) -BA = "BA" # Part of BAL - Block Access List (EIP-7928) diff --git a/ops/docker/op-stack-go/Dockerfile b/ops/docker/op-stack-go/Dockerfile index 23578ed54e73d..45e9cb74df439 100644 --- a/ops/docker/op-stack-go/Dockerfile +++ b/ops/docker/op-stack-go/Dockerfile @@ -200,7 +200,7 @@ RUN --mount=type=cache,target=/go/pkg/mod --mount=type=cache,target=/root/.cache GOOS=$TARGETOS GOARCH=$TARGETARCH GITCOMMIT=$GIT_COMMIT GITDATE=$GIT_DATE VERSION="$OP_INTEROP_MON_VERSION" \ op-interop-mon/op-interop-mon -# The Rust version must match kona/rust-toolchain.toml. We don't use "latest" to ensure reproducibility +# The Rust version must match rust/rust-toolchain.toml. We don't use "latest" to ensure reproducibility FROM --platform=$BUILDPLATFORM rust:1.88 AS kona-host-builder ARG TARGETARCH # Install build dependencies and cross-compilation toolchains @@ -212,10 +212,11 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ gcc-aarch64-linux-gnu \ gcc-x86-64-linux-gnu \ && rm -rf /var/lib/apt/lists/* -COPY ./kona /kona -WORKDIR /kona +# Copy the entire rust workspace since kona depends on sibling crates (op-alloy, alloy-op-evm, etc.) +COPY ./rust /rust +WORKDIR /rust # Map TARGETARCH to Rust target triple, install it, and build -RUN --mount=type=cache,target=/usr/local/cargo/registry --mount=type=cache,target=/kona/target \ +RUN --mount=type=cache,target=/usr/local/cargo/registry --mount=type=cache,target=/rust/target \ case "$TARGETARCH" in \ amd64) RUST_TARGET=x86_64-unknown-linux-gnu ;; \ arm64) RUST_TARGET=aarch64-unknown-linux-gnu ;; \ @@ -223,7 +224,7 @@ RUN --mount=type=cache,target=/usr/local/cargo/registry --mount=type=cache,targe esac && \ rustup target add "$RUST_TARGET" && \ RUSTFLAGS="-C target-cpu=generic" cargo build --bin kona-host --profile release-perf --target "$RUST_TARGET" && \ - cp "/kona/target/$RUST_TARGET/release-perf/kona-host" /kona-host + cp "/rust/target/$RUST_TARGET/release-perf/kona-host" /kona-host FROM $TARGET_BASE_IMAGE AS cannon-target COPY --from=cannon-builder /app/cannon/bin/cannon /usr/local/bin/ diff --git a/ops/docker/op-stack-go/Dockerfile.dockerignore b/ops/docker/op-stack-go/Dockerfile.dockerignore index 76b400373741f..6067e181296a6 100644 --- a/ops/docker/op-stack-go/Dockerfile.dockerignore +++ b/ops/docker/op-stack-go/Dockerfile.dockerignore @@ -27,10 +27,10 @@ !/op-alt-da !/op-faucet !/op-interop-mon -!/kona -# Exclude large kona build artifacts -kona/target -kona/.git +!/rust +# Exclude large rust build artifacts +rust/target +rust/.git !/go.mod !/go.sum !/justfiles @@ -42,5 +42,5 @@ kona/.git **/testdata **/tests -# Re-include kona/bin which is excluded by **/bin above -!/kona/bin +# Re-include rust/bin which is excluded by **/bin above +!/rust/**/bin diff --git a/reth b/reth deleted file mode 160000 index 8fa01eb62eb14..0000000000000 --- a/reth +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 8fa01eb62eb145112c8285f02aee12c2b4e2bd4d diff --git a/op-reth/.cargo/config.toml b/rust/.cargo/config.toml similarity index 100% rename from op-reth/.cargo/config.toml rename to rust/.cargo/config.toml diff --git a/rust/.config/zepter.yaml b/rust/.config/zepter.yaml new file mode 100644 index 0000000000000..08e1bb53239bf --- /dev/null +++ b/rust/.config/zepter.yaml @@ -0,0 +1,39 @@ +version: + format: 1 + # Minimum zepter version that is expected to work. This is just for printing a nice error + # message when someone tries to use an older version. + binary: 0.13.2 + +# The examples in the following comments assume crate `A` to have a dependency on crate `B`. +workflows: + check: + - [ + "lint", + # Check that `A` activates the features of `B`. + "propagate-feature", + # These are the features to check (union of all sub-project features): + "--features=std,serde,arbitrary,test-utils,metrics,op,dev,asm-keccak,jemalloc,jemalloc-prof,tracy-allocator,tracy,serde-bincode-compat,bench,alloy-compat,min-error-logs,min-warn-logs,min-info-logs,min-debug-logs,min-trace-logs,otlp,otlp-logs,js-tracer,portable,keccak-cache-global", + # Do not try to add a new section into `[features]` of `A` only because `B` exposes that feature. There are edge-cases where this is still needed, but we can add them manually. + "--left-side-feature-missing=ignore", + # Ignore the case that `A` is outside of the workspace. Otherwise it will report errors in external dependencies that we have no influence on. + "--left-side-outside-workspace=ignore", + # Only check normal dependencies. + # Propagating to dev-dependencies leads to compilation issues. + "--dep-kinds=normal:check,dev:ignore", + "--show-path", + "--quiet", + ] + default: + # Running `zepter` with no subcommand will check & fix. + - [$check.0, "--fix"] + +# Will be displayed when any workflow fails: +help: + text: | + This workspace uses the Zepter CLI to detect abnormalities in Cargo features, e.g. missing propagation. + + It looks like one more checks failed; please check the console output. + + You can try to automatically address them by installing zepter (`cargo install zepter --locked`) and simply running `zepter` in the workspace root. + links: + - "https://github.com/ggwpez/zepter" diff --git a/rust/.gitignore b/rust/.gitignore new file mode 100644 index 0000000000000..f4ceea7856054 --- /dev/null +++ b/rust/.gitignore @@ -0,0 +1 @@ +**/target/ diff --git a/op-reth/Cargo.lock b/rust/Cargo.lock similarity index 75% rename from op-reth/Cargo.lock rename to rust/Cargo.lock index 21bee41a842d7..10a2c6e032403 100644 --- a/op-reth/Cargo.lock +++ b/rust/Cargo.lock @@ -384,13 +384,12 @@ dependencies = [ [[package]] name = "alloy-op-evm" -version = "0.27.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f19214adae08ea95600c3ede76bcbf0c40b36a263534a8f441a4c732f60e868" +version = "0.26.3" dependencies = [ "alloy-consensus", "alloy-eips", "alloy-evm", + "alloy-hardforks", "alloy-op-hardforks", "alloy-primitives", "auto_impl", @@ -403,8 +402,6 @@ dependencies = [ [[package]] name = "alloy-op-hardforks" version = "0.4.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6472c610150c4c4c15be9e1b964c9b78068f933bda25fb9cdf09b9ac2bb66f36" dependencies = [ "alloy-chains", "alloy-hardforks", @@ -438,6 +435,7 @@ dependencies = [ "proptest-derive 0.6.0", "rand 0.9.2", "rapidhash", + "rayon", "ruint", "rustc-hash", "serde", @@ -460,6 +458,7 @@ dependencies = [ "alloy-pubsub", "alloy-rpc-client", "alloy-rpc-types-debug", + "alloy-rpc-types-engine", "alloy-rpc-types-eth", "alloy-rpc-types-trace", "alloy-signer", @@ -478,7 +477,7 @@ dependencies = [ "lru 0.16.3", "parking_lot", "pin-project", - "reqwest", + "reqwest 0.12.28", "serde", "serde_json", "thiserror 2.0.18", @@ -505,16 +504,16 @@ dependencies = [ "serde_json", "tokio", "tokio-stream", - "tower", + "tower 0.5.3", "tracing", "wasmtimer", ] [[package]] name = "alloy-rlp" -version = "0.3.12" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f70d83b765fdc080dbcd4f4db70d8d23fe4761f2f02ebfa9146b833900634b4" +checksum = "e93e50f64a77ad9c5470bf2ad0ca02f228da70c792a8f06634801e202579f35e" dependencies = [ "alloy-rlp-derive", "arrayvec", @@ -523,9 +522,9 @@ dependencies = [ [[package]] name = "alloy-rlp-derive" -version = "0.3.12" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64b728d511962dda67c1bc7ea7c03736ec275ed2cf4c35d9585298ac9ccf3b73" +checksum = "ce8849c74c9ca0f5a03da1c865e3eb6f768df816e67dd3721a398a8a7e398011" dependencies = [ "proc-macro2", "quote", @@ -547,12 +546,12 @@ dependencies = [ "alloy-transport-ws", "futures", "pin-project", - "reqwest", + "reqwest 0.12.28", "serde", "serde_json", "tokio", "tokio-stream", - "tower", + "tower 0.5.3", "tracing", "url", "wasmtimer", @@ -565,6 +564,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0622d8bcac2f16727590aa33f4c3f05ea98130e7e4b4924bce8be85da5ad0dae" dependencies = [ "alloy-primitives", + "alloy-rpc-types-debug", "alloy-rpc-types-engine", "alloy-rpc-types-eth", "alloy-serde", @@ -649,6 +649,7 @@ dependencies = [ "alloy-primitives", "alloy-rlp", "alloy-serde", + "arbitrary", "derive_more", "ethereum_ssz", "ethereum_ssz_derive", @@ -854,7 +855,7 @@ dependencies = [ "serde_json", "thiserror 2.0.18", "tokio", - "tower", + "tower 0.5.3", "tracing", "url", "wasmtimer", @@ -867,10 +868,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "019821102e70603e2c141954418255bec539ef64ac4117f8e84fb493769acf73" dependencies = [ "alloy-json-rpc", + "alloy-rpc-types-engine", "alloy-transport", - "reqwest", + "http-body-util", + "hyper", + "hyper-tls", + "hyper-util", + "jsonwebtoken", + "reqwest 0.12.28", "serde_json", - "tower", + "tower 0.5.3", "tracing", "url", ] @@ -907,7 +914,7 @@ dependencies = [ "http", "serde_json", "tokio", - "tokio-tungstenite", + "tokio-tungstenite 0.26.2", "tracing", "ws_stream_wasm", ] @@ -944,6 +951,18 @@ dependencies = [ "syn 2.0.114", ] +[[package]] +name = "ambassador" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8184c5d23ba3829fb1e93388d776c3469cd9f4162af65250490b4f22d3ecf614" +dependencies = [ + "itertools 0.10.5", + "proc-macro2", + "quote", + "syn 2.0.114", +] + [[package]] name = "android_system_properties" version = "0.1.5" @@ -953,6 +972,12 @@ dependencies = [ "libc", ] +[[package]] +name = "anes" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" + [[package]] name = "anstream" version = "0.6.21" @@ -1032,6 +1057,15 @@ dependencies = [ "derive_arbitrary", ] +[[package]] +name = "arbtest" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a3be567977128c0f71ad1462d9624ccda712193d124e944252f0c5789a06d46" +dependencies = [ + "arbitrary", +] + [[package]] name = "ark-bls12-381" version = "0.5.0" @@ -1337,12 +1371,73 @@ dependencies = [ "serde", ] +[[package]] +name = "asn1-rs" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56624a96882bb8c26d61312ae18cb45868e5a9992ea73c58e45c3101e56a1e60" +dependencies = [ + "asn1-rs-derive", + "asn1-rs-impl", + "displaydoc", + "nom", + "num-traits", + "rusticata-macros", + "thiserror 2.0.18", + "time", +] + +[[package]] +name = "asn1-rs-derive" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3109e49b1e4909e9db6515a30c633684d68cdeaa252f215214cb4fa1a5bfee2c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", + "synstructure", +] + +[[package]] +name = "asn1-rs-impl" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b18050c2cd6fe86c3a76584ef5e0baf286d038cda203eb6223df2cc413565f7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + [[package]] name = "asn1_der" version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "155a5a185e42c6b77ac7b88a15143d930a9e9727a5b7b77eed417404ab15c247" +[[package]] +name = "assert-json-diff" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47e4f2b81832e72834d7518d8487a0396a28cc408186a2e8854c0f98011faf12" +dependencies = [ + "serde", + "serde_json", +] + +[[package]] +name = "async-channel" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2" +dependencies = [ + "concurrent-queue", + "event-listener-strategy", + "futures-core", + "pin-project-lite", +] + [[package]] name = "async-compression" version = "0.4.37" @@ -1355,6 +1450,45 @@ dependencies = [ "tokio", ] +[[package]] +name = "async-io" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "456b8a8feb6f42d237746d4b3e9a178494627745c3c56c6ea55d92ba50d026fc" +dependencies = [ + "autocfg", + "cfg-if", + "concurrent-queue", + "futures-io", + "futures-lite", + "parking", + "polling", + "rustix 1.1.3", + "slab", + "windows-sys 0.61.2", +] + +[[package]] +name = "async-lock" +version = "3.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "290f7f2596bd5b78a9fec8088ccd89180d7f9f55b94b0576823bbbdc72ee8311" +dependencies = [ + "event-listener", + "event-listener-strategy", + "pin-project-lite", +] + +[[package]] +name = "async-object-pool" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1ac0219111eb7bb7cb76d4cf2cb50c598e7ae549091d3616f9e95442c18486f" +dependencies = [ + "async-lock", + "event-listener", +] + [[package]] name = "async-stream" version = "0.3.6" @@ -1399,12 +1533,37 @@ dependencies = [ "rustc_version 0.4.1", ] +[[package]] +name = "asynchronous-codec" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a860072022177f903e59730004fb5dc13db9275b79bb2aef7ba8ce831956c233" +dependencies = [ + "bytes", + "futures-sink", + "futures-util", + "memchr", + "pin-project-lite", +] + [[package]] name = "atomic-waker" version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" +[[package]] +name = "attohttpc" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16e2cdb6d5ed835199484bb92bb8b3edd526effe995c61732580439c1a67e2e9" +dependencies = [ + "base64 0.22.1", + "http", + "log", + "url", +] + [[package]] name = "aurora-engine-modexp" version = "1.2.0" @@ -1432,6 +1591,86 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" +[[package]] +name = "aws-lc-rs" +version = "1.15.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b7b6141e96a8c160799cc2d5adecd5cbbe5054cb8c7c4af53da0f83bb7ad256" +dependencies = [ + "aws-lc-sys", + "zeroize", +] + +[[package]] +name = "aws-lc-sys" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c34dda4df7017c8db52132f0f8a2e0f8161649d15723ed63fc00c82d0f2081a" +dependencies = [ + "cc", + "cmake", + "dunce", + "fs_extra", +] + +[[package]] +name = "axum" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f" +dependencies = [ + "async-trait", + "axum-core", + "bytes", + "futures-util", + "http", + "http-body", + "http-body-util", + "itoa", + "matchit", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "rustversion", + "serde", + "sync_wrapper", + "tower 0.5.3", + "tower-layer", + "tower-service", +] + +[[package]] +name = "axum-core" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199" +dependencies = [ + "async-trait", + "bytes", + "futures-util", + "http", + "http-body", + "http-body-util", + "mime", + "pin-project-lite", + "rustversion", + "sync_wrapper", + "tower-layer", + "tower-service", +] + +[[package]] +name = "backoff" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b62ddb9cb1ec0a098ad4bbf9344d0713fa193ae1a80af55febcff2627b6a00c1" +dependencies = [ + "getrandom 0.2.17", + "instant", + "rand 0.8.5", +] + [[package]] name = "backon" version = "1.6.0" @@ -1451,7 +1690,7 @@ dependencies = [ "addr2line", "cfg-if", "libc", - "miniz_oxide", + "miniz_oxide 0.8.9", "object", "rustc-demangle", "windows-link", @@ -1518,6 +1757,26 @@ dependencies = [ "serde", ] +[[package]] +name = "bincode" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36eaf5d7b090263e8150820482d5d93cd964a81e4019913c972f4edcc6edb740" +dependencies = [ + "bincode_derive", + "serde", + "unty", +] + +[[package]] +name = "bincode_derive" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf95709a440f45e986983918d0e8a1f30a9b1df04918fc828670606804ac3c09" +dependencies = [ + "virtue", +] + [[package]] name = "bindgen" version = "0.71.1" @@ -1614,6 +1873,29 @@ dependencies = [ "wyz", ] +[[package]] +name = "blake2" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "blake3" +version = "1.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2468ef7d57b3fb7e16b576e8377cdbde2320c60e1491e961d11da40fc4f02a2d" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", + "cpufeatures", +] + [[package]] name = "block-buffer" version = "0.10.4" @@ -1848,6 +2130,26 @@ dependencies = [ "tinyvec", ] +[[package]] +name = "bstr" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63044e1ae8e69f3b5a92c736ca6269b8d12fa7efe39bf34ddb06d102cf0e2cab" +dependencies = [ + "memchr", + "regex-automata", + "serde", +] + +[[package]] +name = "buddy_system_allocator" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b672b945a3e4f4f40bfd4cd5ee07df9e796a42254ce7cd6d2599ad969244c44a" +dependencies = [ + "spin 0.10.0", +] + [[package]] name = "bumpalo" version = "3.19.1" @@ -1860,11 +2162,40 @@ version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7575182f7272186991736b70173b0ea045398f984bf5ebbb3804736ce1330c9d" +[[package]] +name = "bytecheck" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0caa33a2c0edca0419d15ac723dff03f1956f7978329b1e3b5fdaaaed9d3ca8b" +dependencies = [ + "bytecheck_derive", + "ptr_meta", + "rancor", + "simdutf8", +] + +[[package]] +name = "bytecheck_derive" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89385e82b5d1821d2219e0b095efa2cc1f246cbf99080f3be46a1a85c0d392d9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "bytecount" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "175812e0be2bccb6abe50bb8d566126198344f707e304f45c648fd8f2cc0365e" + [[package]] name = "bytemuck" -version = "1.24.0" +version = "1.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4" +checksum = "c8efb64bd706a16a1bdde310ae86b351e4d21550d98d056f22f8a7f7a2183fec" dependencies = [ "bytemuck_derive", ] @@ -1961,8 +2292,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df8670b8c7b9dae1793364eafadf7239c40d669904660c5960d74cfd80b46a53" [[package]] -name = "castaway" -version = "0.2.4" +name = "cast" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" + +[[package]] +name = "castaway" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dec551ab6e7578819132c713a93c022a05d60159dc86e7a7050223577484c55a" dependencies = [ @@ -2008,6 +2345,30 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" +[[package]] +name = "chacha20" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3613f74bd2eac03dad61bd53dbe620703d4371614fe0bc3b9f04dd36fe4e818" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", +] + +[[package]] +name = "chacha20poly1305" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10cd79432192d1c0f4e1a0fef9527696cc039165d729fb41b3f4f4f354c2dc35" +dependencies = [ + "aead", + "chacha20", + "cipher", + "poly1305", + "zeroize", +] + [[package]] name = "chrono" version = "0.4.43" @@ -2022,6 +2383,33 @@ dependencies = [ "windows-link", ] +[[package]] +name = "ciborium" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e" +dependencies = [ + "ciborium-io", + "ciborium-ll", + "serde", +] + +[[package]] +name = "ciborium-io" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757" + +[[package]] +name = "ciborium-ll" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9" +dependencies = [ + "ciborium-io", + "half", +] + [[package]] name = "cipher" version = "0.4.4" @@ -2030,6 +2418,7 @@ checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" dependencies = [ "crypto-common", "inout", + "zeroize", ] [[package]] @@ -2083,6 +2472,66 @@ version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3e64b0cc0439b12df2fa678eae89a1c56a529fd067a9115f7827f1fffd22b32" +[[package]] +name = "cmake" +version = "0.1.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75443c44cd6b379beb8c5b45d85d0773baf31cce901fe7bb252f4eff3008ef7d" +dependencies = [ + "cc", +] + +[[package]] +name = "codspeed" +version = "2.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93f4cce9c27c49c4f101fffeebb1826f41a9df2e7498b7cd4d95c0658b796c6c" +dependencies = [ + "colored", + "libc", + "serde", + "serde_json", + "uuid", +] + +[[package]] +name = "codspeed-criterion-compat" +version = "2.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3c23d880a28a2aab52d38ca8481dd7a3187157d0a952196b6db1db3c8499725" +dependencies = [ + "codspeed", + "codspeed-criterion-compat-walltime", + "colored", +] + +[[package]] +name = "codspeed-criterion-compat-walltime" +version = "2.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b0a2f7365e347f4f22a67e9ea689bf7bc89900a354e22e26cf8a531a42c8fbb" +dependencies = [ + "anes", + "cast", + "ciborium", + "clap", + "codspeed", + "criterion-plot", + "is-terminal", + "itertools 0.10.5", + "num-traits", + "once_cell", + "oorandom", + "plotters", + "rayon", + "regex", + "serde", + "serde_derive", + "serde_json", + "tinytemplate", + "walkdir", +] + [[package]] name = "coins-bip32" version = "0.12.0" @@ -2140,6 +2589,16 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" +[[package]] +name = "colored" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "117725a109d387c937a1533ce01b450cbde6b88abceea8473c4d7a85853cda3c" +dependencies = [ + "lazy_static", + "windows-sys 0.59.0", +] + [[package]] name = "combine" version = "4.6.7" @@ -2204,6 +2663,27 @@ dependencies = [ "digest 0.10.7", ] +[[package]] +name = "concurrent-queue" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "console" +version = "0.15.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8" +dependencies = [ + "encode_unicode", + "libc", + "once_cell", + "windows-sys 0.59.0", +] + [[package]] name = "const-hex" version = "1.17.0" @@ -2248,6 +2728,12 @@ dependencies = [ "unicode-xid", ] +[[package]] +name = "constant_time_eq" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d52eff69cd5e647efe296129160853a42795992097e8af39800e1060caeea9b" + [[package]] name = "convert_case" version = "0.10.0" @@ -2257,6 +2743,16 @@ dependencies = [ "unicode-segmentation", ] +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "core-foundation" version = "0.10.1" @@ -2321,6 +2817,16 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "criterion-plot" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1" +dependencies = [ + "cast", + "itertools 0.10.5", +] + [[package]] name = "critical-section" version = "1.2.0" @@ -2637,6 +3143,20 @@ dependencies = [ "zeroize", ] +[[package]] +name = "der-parser" +version = "10.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07da5016415d5a3c4dd39b11ed26f915f52fc4e0dc197d87908bc916e51bc1a6" +dependencies = [ + "asn1-rs", + "displaydoc", + "nom", + "num-bigint", + "num-traits", + "rusticata-macros", +] + [[package]] name = "deranged" version = "0.5.5" @@ -2818,7 +3338,7 @@ dependencies = [ "enr", "fnv", "futures", - "hashlink", + "hashlink 0.9.1", "hex", "hkdf", "lazy_static", @@ -2862,6 +3382,24 @@ dependencies = [ "litrs", ] +[[package]] +name = "dotenvy" +version = "0.15.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" + +[[package]] +name = "downcast" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1435fa1053d8b2fbbe9be7e97eca7f33d37b28409959813daefc1446a14247f1" + +[[package]] +name = "dtoa" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c3cf4824e2d5f025c7b531afcb2325364084a16806f6d47fbc1f5fbd9960590" + [[package]] name = "dunce" version = "1.0.5" @@ -2916,6 +3454,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" dependencies = [ "pkcs8", + "serde", "signature", ] @@ -2975,6 +3514,18 @@ dependencies = [ "zeroize", ] +[[package]] +name = "encode_unicode" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" + +[[package]] +name = "endian-type" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d" + [[package]] name = "enr" version = "0.13.0" @@ -3114,6 +3665,149 @@ dependencies = [ "syn 2.0.114", ] +[[package]] +name = "event-listener" +version = "5.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" +dependencies = [ + "event-listener", + "pin-project-lite", +] + +[[package]] +name = "example-custom-node" +version = "0.0.0" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-evm", + "alloy-genesis", + "alloy-network", + "alloy-op-evm", + "alloy-primitives", + "alloy-rlp", + "alloy-rpc-types-engine", + "alloy-rpc-types-eth", + "alloy-serde", + "async-trait", + "derive_more", + "eyre", + "jsonrpsee", + "modular-bitfield", + "op-alloy-consensus", + "op-alloy-rpc-types", + "op-alloy-rpc-types-engine", + "op-revm", + "reth-codecs", + "reth-db-api", + "reth-engine-primitives", + "reth-ethereum", + "reth-network-peers", + "reth-node-builder", + "reth-op", + "reth-optimism-flashblocks", + "reth-optimism-forks", + "reth-payload-builder", + "reth-rpc-api", + "reth-rpc-engine-api", + "revm", + "revm-primitives", + "serde", + "thiserror 2.0.18", +] + +[[package]] +name = "example-discovery" +version = "0.0.0" +dependencies = [ + "anyhow", + "clap", + "discv5", + "kona-cli", + "kona-disc", + "tokio", + "tracing", + "tracing-subscriber 0.3.22", +] + +[[package]] +name = "example-engine-api-access" +version = "0.0.0" +dependencies = [ + "reth-db", + "reth-node-builder", + "reth-optimism-chainspec", + "reth-optimism-node", + "tokio", +] + +[[package]] +name = "example-exex-hello-world" +version = "0.0.0" +dependencies = [ + "clap", + "eyre", + "futures", + "reth-ethereum", + "reth-op", + "reth-tracing", + "tokio", +] + +[[package]] +name = "example-gossip" +version = "0.0.0" +dependencies = [ + "anyhow", + "async-trait", + "clap", + "discv5", + "kona-cli", + "kona-disc", + "kona-node-service", + "kona-registry", + "libp2p", + "op-alloy-rpc-types-engine", + "tokio", + "tokio-util", + "tracing", + "tracing-subscriber 0.3.22", +] + +[[package]] +name = "example-op-db-access" +version = "0.0.0" +dependencies = [ + "eyre", + "reth-op", +] + +[[package]] +name = "execution-fixture" +version = "0.0.0" +dependencies = [ + "anyhow", + "clap", + "kona-cli", + "kona-executor", + "tokio", + "tracing", + "tracing-subscriber 0.3.22", + "url", +] + [[package]] name = "eyre" version = "0.6.12" @@ -3257,7 +3951,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b375d6465b98090a5f25b1c7703f3859783755aa9a80433b36e0379a3ec2f369" dependencies = [ "crc32fast", - "miniz_oxide", + "miniz_oxide 0.8.9", ] [[package]] @@ -3289,14 +3983,41 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" [[package]] -name = "form_urlencoded" -version = "1.2.2" +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "form_urlencoded" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" dependencies = [ "percent-encoding", ] +[[package]] +name = "fragile" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28dd6caf6059519a65843af8fe2a3ae298b14b80179855aeb4adc2c1934ee619" + +[[package]] +name = "fs_extra" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" + [[package]] name = "fsevent-sys" version = "4.1.0" @@ -3327,6 +4048,16 @@ dependencies = [ "futures-util", ] +[[package]] +name = "futures-bounded" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91f328e7fb845fc832912fb6a34f40cf6d1888c92f974d1893a54e97b5ff542e" +dependencies = [ + "futures-timer", + "futures-util", +] + [[package]] name = "futures-channel" version = "0.3.31" @@ -3365,6 +4096,7 @@ dependencies = [ "futures-core", "futures-task", "futures-util", + "num_cpus", ] [[package]] @@ -3397,6 +4129,17 @@ dependencies = [ "syn 2.0.114", ] +[[package]] +name = "futures-rustls" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f2f12607f92c69b12ed746fabf9ca4f5c482cba46679c1a75b874ed7c26adb" +dependencies = [ + "futures-io", + "rustls", + "rustls-pki-types", +] + [[package]] name = "futures-sink" version = "0.3.31" @@ -3514,9 +4257,9 @@ checksum = "e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7" [[package]] name = "git2" -version = "0.20.3" +version = "0.20.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e2b37e2f62729cdada11f0e6b3b6fe383c69c29fc619e391223e12856af308c" +checksum = "7b88256088d75a56f8ecfa070513a775dd9107f6530ef14919dac831af9cfe2b" dependencies = [ "bitflags 2.10.0", "libc", @@ -3577,6 +4320,16 @@ dependencies = [ "web-sys", ] +[[package]] +name = "gmp-mpfr-sys" +version = "1.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60f8970a75c006bb2f8ae79c6768a116dd215fa8346a87aed99bf9d82ca43394" +dependencies = [ + "libc", + "windows-sys 0.60.2", +] + [[package]] name = "group" version = "0.13.0" @@ -3607,6 +4360,17 @@ dependencies = [ "tracing", ] +[[package]] +name = "half" +version = "2.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b" +dependencies = [ + "cfg-if", + "crunchy", + "zerocopy", +] + [[package]] name = "hash-db" version = "0.15.2" @@ -3654,6 +4418,7 @@ dependencies = [ "allocator-api2", "equivalent", "foldhash 0.2.0", + "rayon", "serde", "serde_core", ] @@ -3667,6 +4432,15 @@ dependencies = [ "hashbrown 0.14.5", ] +[[package]] +name = "hashlink" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" +dependencies = [ + "hashbrown 0.15.5", +] + [[package]] name = "hdrhistogram" version = "7.5.4" @@ -3677,6 +4451,30 @@ dependencies = [ "num-traits", ] +[[package]] +name = "headers" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3314d5adb5d94bcdf56771f2e50dbbc80bb4bdf88967526706205ac9eff24eb" +dependencies = [ + "base64 0.22.1", + "bytes", + "headers-core", + "http", + "httpdate", + "mime", + "sha1", +] + +[[package]] +name = "headers-core" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54b4a22553d4242c49fddb9ba998a99962b5cc6f22cb5a3482bec22522403ce4" +dependencies = [ + "http", +] + [[package]] name = "heck" version = "0.5.0" @@ -3704,6 +4502,12 @@ dependencies = [ "arrayvec", ] +[[package]] +name = "hex_fmt" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b07f60793ff0a4d9cef0f18e63b5357e06209987153a64648c972c1e5aff336f" + [[package]] name = "hickory-proto" version = "0.25.2" @@ -3723,6 +4527,7 @@ dependencies = [ "rand 0.9.2", "ring", "serde", + "socket2 0.5.10", "thiserror 2.0.18", "tinyvec", "tokio", @@ -3821,6 +4626,40 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" +[[package]] +name = "httpmock" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "511f510e9b1888d67f10bab4397f8b019d2a9b249a2c10acbce2d705b1b32e26" +dependencies = [ + "assert-json-diff", + "async-object-pool", + "async-trait", + "base64 0.22.1", + "bytes", + "crossbeam-utils", + "form_urlencoded", + "futures-timer", + "futures-util", + "headers", + "http", + "http-body-util", + "hyper", + "hyper-util", + "path-tree", + "regex", + "serde", + "serde_json", + "serde_regex", + "similar", + "stringmetrics", + "tabwriter", + "thiserror 2.0.18", + "tokio", + "tracing", + "url", +] + [[package]] name = "human_bytes" version = "0.4.3" @@ -3898,16 +4737,31 @@ dependencies = [ "tower-service", ] +[[package]] +name = "hyper-tls" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" +dependencies = [ + "bytes", + "http-body-util", + "hyper", + "hyper-util", + "native-tls", + "tokio", + "tokio-native-tls", + "tower-service", +] + [[package]] name = "hyper-util" -version = "0.1.19" +version = "0.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "727805d60e7938b76b826a6ef209eb70eaa1812794f9424d4a4e2d740662df5f" +checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0" dependencies = [ "base64 0.22.1", "bytes", "futures-channel", - "futures-core", "futures-util", "http", "http-body", @@ -3917,9 +4771,12 @@ dependencies = [ "percent-encoding", "pin-project-lite", "socket2 0.6.2", + "system-configuration 0.7.0", "tokio", + "tower-layer", "tower-service", "tracing", + "windows-registry", ] [[package]] @@ -4062,6 +4919,16 @@ dependencies = [ "icu_properties", ] +[[package]] +name = "if-addrs" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cabb0019d51a643781ff15c9c8a3e5dedc365c47211270f4e8f82812fedd8f0a" +dependencies = [ + "libc", + "windows-sys 0.48.0", +] + [[package]] name = "if-addrs" version = "0.14.0" @@ -4072,6 +4939,50 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "if-watch" +version = "3.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdf9d64cfcf380606e64f9a0bcf493616b65331199f984151a6fa11a7b3cde38" +dependencies = [ + "async-io", + "core-foundation 0.9.4", + "fnv", + "futures", + "if-addrs 0.10.2", + "ipnet", + "log", + "netlink-packet-core", + "netlink-packet-route", + "netlink-proto", + "netlink-sys", + "rtnetlink", + "system-configuration 0.6.1", + "tokio", + "windows 0.53.0", +] + +[[package]] +name = "igd-next" +version = "0.16.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "516893339c97f6011282d5825ac94fc1c7aad5cad26bdc2d0cee068c0bf97f97" +dependencies = [ + "async-trait", + "attohttpc", + "bytes", + "futures", + "http", + "http-body-util", + "hyper", + "hyper-util", + "log", + "rand 0.9.2", + "tokio", + "url", + "xmltree", +] + [[package]] name = "impl-codec" version = "0.6.0" @@ -4137,6 +5048,7 @@ dependencies = [ "arbitrary", "equivalent", "hashbrown 0.16.1", + "rayon", "serde", "serde_core", ] @@ -4193,6 +5105,15 @@ dependencies = [ "syn 2.0.114", ] +[[package]] +name = "instant" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" +dependencies = [ + "cfg-if", +] + [[package]] name = "interprocess" version = "2.2.3" @@ -4234,6 +5155,9 @@ name = "ipnet" version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" +dependencies = [ + "serde", +] [[package]] name = "iri-string" @@ -4245,6 +5169,17 @@ dependencies = [ "serde", ] +[[package]] +name = "is-terminal" +version = "0.4.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3640c1c38b8e4e43584d8df18be5fc6b0aa314ce6ebf51b53313d4306cca8e46" +dependencies = [ + "hermit-abi", + "libc", + "windows-sys 0.61.2", +] + [[package]] name = "is_terminal_polyfill" version = "1.70.2" @@ -4409,7 +5344,7 @@ dependencies = [ "thiserror 2.0.18", "tokio", "tokio-stream", - "tower", + "tower 0.5.3", "tracing", "wasm-bindgen-futures", ] @@ -4433,7 +5368,7 @@ dependencies = [ "serde_json", "thiserror 2.0.18", "tokio", - "tower", + "tower 0.5.3", "url", ] @@ -4473,7 +5408,7 @@ dependencies = [ "tokio", "tokio-stream", "tokio-util", - "tower", + "tower 0.5.3", "tracing", ] @@ -4498,7 +5433,7 @@ dependencies = [ "jsonrpsee-client-transport", "jsonrpsee-core", "jsonrpsee-types", - "tower", + "tower 0.5.3", ] [[package]] @@ -4511,7 +5446,7 @@ dependencies = [ "jsonrpsee-client-transport", "jsonrpsee-core", "jsonrpsee-types", - "tower", + "tower 0.5.3", "url", ] @@ -4565,41 +5500,1052 @@ dependencies = [ ] [[package]] -name = "kqueue" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eac30106d7dce88daf4a3fcb4879ea939476d5074a9b7ddd0fb97fa4bed5596a" +name = "kona-cli" +version = "0.3.2" dependencies = [ - "kqueue-sys", + "alloy-chains", + "alloy-primitives", + "clap", + "kona-genesis", + "kona-registry", "libc", + "libp2p", + "metrics-exporter-prometheus 0.18.1", + "metrics-process", + "rstest", + "serde", + "thiserror 2.0.18", + "tracing", + "tracing-appender", + "tracing-subscriber 0.3.22", ] [[package]] -name = "kqueue-sys" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed9625ffda8729b85e45cf04090035ac368927b8cebc34898e7c120f52e4838b" +name = "kona-client" +version = "1.0.2" dependencies = [ - "bitflags 1.3.2", - "libc", + "alloy-consensus", + "alloy-eips", + "alloy-evm", + "alloy-op-evm", + "alloy-primitives", + "alloy-rlp", + "alloy-rpc-types-engine", + "async-trait", + "cfg-if", + "kona-derive", + "kona-driver", + "kona-executor", + "kona-genesis", + "kona-interop", + "kona-mpt", + "kona-preimage", + "kona-proof", + "kona-proof-interop", + "kona-protocol", + "kona-registry", + "kona-std-fpvm", + "kona-std-fpvm-proc", + "lru 0.16.3", + "op-alloy-consensus", + "op-alloy-rpc-types-engine", + "op-revm", + "revm", + "serde", + "serde_json", + "sha2", + "spin 0.10.0", + "thiserror 2.0.18", + "tokio", + "tracing", ] [[package]] -name = "lazy_static" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" - -[[package]] -name = "libc" -version = "0.2.180" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcc35a38544a891a5f7c865aca548a982ccb3b8650a5b06d0fd33a10283c56fc" +name = "kona-comp" +version = "0.4.5" +dependencies = [ + "alloc-no-stdlib", + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "alloy-rpc-types-engine", + "alloy-serde", + "alloy-sol-types", + "arbitrary", + "async-trait", + "brotli", + "kona-genesis", + "kona-protocol", + "miniz_oxide 0.9.0", + "op-alloy-consensus", + "proptest", + "rand 0.9.2", + "serde", + "serde_json", + "spin 0.10.0", + "thiserror 2.0.18", + "tracing", + "tracing-subscriber 0.3.22", + "unsigned-varint 0.8.0", +] [[package]] -name = "libgit2-sys" -version = "0.18.3+1.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" +name = "kona-derive" +version = "0.4.5" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "alloy-rpc-types-engine", + "async-trait", + "kona-genesis", + "kona-hardforks", + "kona-macros", + "kona-protocol", + "kona-registry", + "metrics", + "op-alloy-consensus", + "op-alloy-rpc-types-engine", + "proptest", + "serde", + "serde_json", + "spin 0.10.0", + "thiserror 2.0.18", + "tokio", + "tracing", + "tracing-subscriber 0.3.22", +] + +[[package]] +name = "kona-disc" +version = "0.1.2" +dependencies = [ + "alloy-rlp", + "backon", + "derive_more", + "discv5", + "kona-cli", + "kona-genesis", + "kona-macros", + "kona-peers", + "libp2p", + "metrics", + "rand 0.9.2", + "serde_json", + "tempfile", + "thiserror 2.0.18", + "tokio", + "tracing", +] + +[[package]] +name = "kona-driver" +version = "0.4.0" +dependencies = [ + "alloy-consensus", + "alloy-evm", + "alloy-primitives", + "alloy-rlp", + "async-trait", + "kona-derive", + "kona-executor", + "kona-genesis", + "kona-protocol", + "op-alloy-consensus", + "op-alloy-rpc-types-engine", + "spin 0.10.0", + "thiserror 2.0.18", + "tracing", +] + +[[package]] +name = "kona-engine" +version = "0.1.2" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-json-rpc", + "alloy-network", + "alloy-primitives", + "alloy-provider", + "alloy-rpc-client", + "alloy-rpc-types-engine", + "alloy-rpc-types-eth", + "alloy-transport", + "alloy-transport-http", + "arbitrary", + "async-trait", + "derive_more", + "http", + "http-body-util", + "jsonrpsee-types", + "kona-genesis", + "kona-macros", + "kona-protocol", + "kona-registry", + "metrics", + "metrics-exporter-prometheus 0.18.1", + "op-alloy-consensus", + "op-alloy-network", + "op-alloy-provider", + "op-alloy-rpc-types", + "op-alloy-rpc-types-engine", + "parking_lot", + "rand 0.9.2", + "rollup-boost", + "rollup-boost-types", + "rstest", + "serde", + "serde_json", + "thiserror 2.0.18", + "tokio", + "tower 0.5.3", + "tracing", + "url", +] + +[[package]] +name = "kona-executor" +version = "0.4.0" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-evm", + "alloy-op-evm", + "alloy-op-hardforks", + "alloy-primitives", + "alloy-provider", + "alloy-rlp", + "alloy-rpc-client", + "alloy-rpc-types-engine", + "alloy-transport", + "alloy-transport-http", + "alloy-trie", + "kona-genesis", + "kona-mpt", + "kona-protocol", + "kona-registry", + "op-alloy-consensus", + "op-alloy-rpc-types-engine", + "op-revm", + "rand 0.9.2", + "revm", + "rocksdb", + "rstest", + "serde", + "serde_json", + "tempfile", + "thiserror 2.0.18", + "tokio", + "tracing", +] + +[[package]] +name = "kona-genesis" +version = "0.4.5" +dependencies = [ + "alloy-chains", + "alloy-consensus", + "alloy-eips", + "alloy-genesis", + "alloy-hardforks", + "alloy-op-hardforks", + "alloy-primitives", + "alloy-sol-types", + "arbitrary", + "derive_more", + "op-revm", + "rand 0.9.2", + "serde", + "serde_json", + "serde_repr", + "tabled", + "thiserror 2.0.18", + "toml 0.9.11+spec-1.1.0", +] + +[[package]] +name = "kona-gossip" +version = "0.1.2" +dependencies = [ + "alloy-chains", + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "alloy-rpc-types-engine", + "arbitrary", + "derive_more", + "discv5", + "futures", + "ipnet", + "kona-disc", + "kona-genesis", + "kona-macros", + "kona-peers", + "lazy_static", + "libp2p", + "libp2p-identity", + "libp2p-stream", + "metrics", + "multihash", + "op-alloy-consensus", + "op-alloy-rpc-types-engine", + "openssl", + "rand 0.9.2", + "serde", + "serde_json", + "serde_repr", + "snap", + "tempfile", + "thiserror 2.0.18", + "tokio", + "tracing", +] + +[[package]] +name = "kona-hardforks" +version = "0.4.5" +dependencies = [ + "alloy-eips", + "alloy-primitives", + "kona-protocol", + "op-alloy-consensus", + "op-revm", + "revm", +] + +[[package]] +name = "kona-host" +version = "1.0.2" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-op-evm", + "alloy-primitives", + "alloy-provider", + "alloy-rlp", + "alloy-rpc-client", + "alloy-rpc-types", + "alloy-rpc-types-beacon", + "alloy-serde", + "alloy-transport", + "alloy-transport-http", + "anyhow", + "ark-ff 0.5.0", + "async-trait", + "clap", + "kona-cli", + "kona-client", + "kona-derive", + "kona-driver", + "kona-executor", + "kona-genesis", + "kona-mpt", + "kona-preimage", + "kona-proof", + "kona-proof-interop", + "kona-protocol", + "kona-providers-alloy", + "kona-registry", + "kona-std-fpvm", + "op-alloy-network", + "op-alloy-rpc-types-engine", + "proptest", + "revm", + "rocksdb", + "serde", + "serde_json", + "thiserror 2.0.18", + "tokio", + "tracing", + "tracing-subscriber 0.3.22", +] + +[[package]] +name = "kona-interop" +version = "0.4.5" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "alloy-serde", + "alloy-sol-types", + "arbitrary", + "async-trait", + "derive_more", + "kona-genesis", + "kona-protocol", + "kona-registry", + "op-alloy-consensus", + "rand 0.9.2", + "serde", + "serde_json", + "thiserror 2.0.18", + "tokio", + "tracing", +] + +[[package]] +name = "kona-macros" +version = "0.1.2" + +[[package]] +name = "kona-mpt" +version = "0.3.0" +dependencies = [ + "alloy-consensus", + "alloy-primitives", + "alloy-provider", + "alloy-rlp", + "alloy-rpc-types", + "alloy-transport-http", + "alloy-trie", + "codspeed-criterion-compat", + "op-alloy-rpc-types-engine", + "proptest", + "rand 0.9.2", + "reqwest 0.13.1", + "serde", + "thiserror 2.0.18", + "tokio", +] + +[[package]] +name = "kona-node" +version = "1.0.0-rc.1" +dependencies = [ + "alloy-chains", + "alloy-genesis", + "alloy-primitives", + "alloy-provider", + "alloy-rpc-types-engine", + "alloy-signer", + "alloy-signer-local", + "alloy-transport", + "alloy-transport-http", + "anyhow", + "backon", + "clap", + "derive_more", + "dirs", + "discv5", + "futures", + "http", + "jsonrpsee", + "kona-cli", + "kona-derive", + "kona-disc", + "kona-engine", + "kona-genesis", + "kona-gossip", + "kona-node-service", + "kona-peers", + "kona-protocol", + "kona-providers-alloy", + "kona-registry", + "kona-rpc", + "kona-sources", + "libp2p", + "metrics", + "op-alloy-network", + "op-alloy-provider", + "op-alloy-rpc-types-engine", + "reqwest 0.13.1", + "rollup-boost", + "rstest", + "serde_json", + "strum 0.27.2", + "tabled", + "tempfile", + "thiserror 2.0.18", + "tokio", + "tokio-stream", + "tokio-util", + "tracing", + "tracing-subscriber 0.3.22", + "url", + "vergen", + "vergen-git2", +] + +[[package]] +name = "kona-node-service" +version = "0.1.3" +dependencies = [ + "alloy-chains", + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-provider", + "alloy-rpc-client", + "alloy-rpc-types-engine", + "alloy-rpc-types-eth", + "alloy-signer", + "alloy-signer-local", + "alloy-transport", + "alloy-transport-http", + "anyhow", + "arbitrary", + "async-stream", + "async-trait", + "backon", + "derive_more", + "discv5", + "futures", + "http", + "http-body-util", + "jsonrpsee", + "kona-derive", + "kona-disc", + "kona-engine", + "kona-genesis", + "kona-gossip", + "kona-macros", + "kona-peers", + "kona-protocol", + "kona-providers-alloy", + "kona-rpc", + "kona-sources", + "libp2p", + "libp2p-stream", + "metrics", + "mockall", + "op-alloy-consensus", + "op-alloy-network", + "op-alloy-provider", + "op-alloy-rpc-types-engine", + "rand 0.9.2", + "rollup-boost", + "rstest", + "strum 0.27.2", + "thiserror 2.0.18", + "tokio", + "tokio-stream", + "tokio-util", + "tower 0.5.3", + "tracing", + "url", +] + +[[package]] +name = "kona-peers" +version = "0.1.2" +dependencies = [ + "alloy-consensus", + "alloy-primitives", + "alloy-rlp", + "arbitrary", + "arbtest", + "derive_more", + "dirs", + "discv5", + "kona-genesis", + "kona-registry", + "lazy_static", + "libp2p", + "libp2p-identity", + "multihash", + "secp256k1 0.31.1", + "serde", + "serde_json", + "tempfile", + "thiserror 2.0.18", + "tracing", + "unsigned-varint 0.8.0", + "url", +] + +[[package]] +name = "kona-preimage" +version = "0.3.0" +dependencies = [ + "alloy-primitives", + "async-channel", + "async-trait", + "rkyv", + "serde", + "thiserror 2.0.18", + "tokio", + "tracing", +] + +[[package]] +name = "kona-proof" +version = "0.3.0" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-evm", + "alloy-op-evm", + "alloy-primitives", + "alloy-rlp", + "alloy-trie", + "ark-bls12-381", + "ark-ff 0.5.0", + "async-trait", + "c-kzg", + "kona-derive", + "kona-driver", + "kona-executor", + "kona-genesis", + "kona-mpt", + "kona-preimage", + "kona-protocol", + "kona-registry", + "lazy_static", + "lru 0.16.3", + "op-alloy-consensus", + "op-alloy-rpc-types-engine", + "op-revm", + "rand 0.9.2", + "rayon", + "rstest", + "serde", + "serde_json", + "spin 0.10.0", + "thiserror 2.0.18", + "tokio", + "tracing", +] + +[[package]] +name = "kona-proof-interop" +version = "0.2.0" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-evm", + "alloy-op-evm", + "alloy-primitives", + "alloy-rlp", + "alloy-rpc-types-engine", + "arbitrary", + "async-trait", + "kona-executor", + "kona-genesis", + "kona-interop", + "kona-mpt", + "kona-preimage", + "kona-proof", + "kona-protocol", + "kona-registry", + "op-alloy-consensus", + "op-alloy-rpc-types-engine", + "op-revm", + "rand 0.9.2", + "revm", + "serde", + "serde_json", + "spin 0.10.0", + "thiserror 2.0.18", + "tracing", +] + +[[package]] +name = "kona-protocol" +version = "0.4.5" +dependencies = [ + "alloc-no-stdlib", + "alloy-consensus", + "alloy-eips", + "alloy-hardforks", + "alloy-primitives", + "alloy-rlp", + "alloy-rpc-types-engine", + "alloy-rpc-types-eth", + "alloy-serde", + "alloy-sol-types", + "ambassador", + "arbitrary", + "async-trait", + "brotli", + "derive_more", + "kona-genesis", + "kona-registry", + "miniz_oxide 0.9.0", + "op-alloy-consensus", + "op-alloy-rpc-types", + "op-alloy-rpc-types-engine", + "proptest", + "rand 0.9.2", + "rstest", + "serde", + "serde_json", + "spin 0.10.0", + "thiserror 2.0.18", + "tokio", + "tracing", + "tracing-subscriber 0.3.22", + "unsigned-varint 0.8.0", +] + +[[package]] +name = "kona-providers-alloy" +version = "0.3.3" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-provider", + "alloy-rpc-client", + "alloy-rpc-types-beacon", + "alloy-rpc-types-engine", + "alloy-serde", + "alloy-transport", + "alloy-transport-http", + "async-trait", + "c-kzg", + "http-body-util", + "httpmock", + "kona-derive", + "kona-genesis", + "kona-macros", + "kona-protocol", + "lru 0.16.3", + "metrics", + "op-alloy-consensus", + "op-alloy-network", + "serde", + "serde_json", + "thiserror 2.0.18", + "tokio", + "tower 0.5.3", +] + +[[package]] +name = "kona-providers-local" +version = "0.1.0" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "async-trait", + "kona-derive", + "kona-genesis", + "kona-macros", + "kona-protocol", + "lru 0.16.3", + "metrics", + "op-alloy-consensus", + "rstest", + "thiserror 2.0.18", + "tokio", +] + +[[package]] +name = "kona-registry" +version = "0.4.5" +dependencies = [ + "alloy-chains", + "alloy-eips", + "alloy-genesis", + "alloy-hardforks", + "alloy-op-hardforks", + "alloy-primitives", + "kona-genesis", + "lazy_static", + "serde", + "serde_json", + "tabled", + "toml 0.9.11+spec-1.1.0", +] + +[[package]] +name = "kona-rpc" +version = "0.3.2" +dependencies = [ + "alloy-eips", + "alloy-primitives", + "alloy-rpc-client", + "alloy-rpc-types-engine", + "async-trait", + "backon", + "derive_more", + "getrandom 0.3.4", + "ipnet", + "jsonrpsee", + "kona-engine", + "kona-genesis", + "kona-gossip", + "kona-macros", + "kona-protocol", + "libp2p", + "metrics", + "op-alloy-consensus", + "op-alloy-rpc-jsonrpsee", + "op-alloy-rpc-types", + "op-alloy-rpc-types-engine", + "rollup-boost", + "serde", + "serde_json", + "thiserror 2.0.18", + "tokio", + "tracing", +] + +[[package]] +name = "kona-serde" +version = "0.2.2" +dependencies = [ + "alloy-primitives", + "serde", + "serde_json", + "toml 0.9.11+spec-1.1.0", +] + +[[package]] +name = "kona-sources" +version = "0.1.2" +dependencies = [ + "alloy-primitives", + "alloy-rpc-client", + "alloy-signer", + "alloy-signer-local", + "alloy-transport", + "alloy-transport-http", + "derive_more", + "notify", + "op-alloy-rpc-types-engine", + "rustls", + "serde", + "serde_json", + "thiserror 2.0.18", + "tokio", + "tracing", + "url", +] + +[[package]] +name = "kona-std-fpvm" +version = "0.2.0" +dependencies = [ + "async-trait", + "buddy_system_allocator", + "cfg-if", + "kona-preimage", + "thiserror 2.0.18", + "tracing", +] + +[[package]] +name = "kona-std-fpvm-proc" +version = "0.2.0" +dependencies = [ + "cfg-if", + "kona-std-fpvm", + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "kona-supervisor" +version = "0.1.0" +dependencies = [ + "alloy-network", + "alloy-provider", + "alloy-rpc-types-engine", + "anyhow", + "clap", + "glob", + "kona-cli", + "kona-genesis", + "kona-interop", + "kona-protocol", + "kona-registry", + "kona-supervisor-core", + "kona-supervisor-service", + "metrics", + "serde", + "serde_json", + "tempfile", + "tokio", + "tracing", + "tracing-subscriber 0.3.22", + "vergen", + "vergen-git2", +] + +[[package]] +name = "kona-supervisor-core" +version = "0.1.0" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-network", + "alloy-primitives", + "alloy-provider", + "alloy-rpc-client", + "alloy-rpc-types-engine", + "alloy-rpc-types-eth", + "alloy-transport", + "async-trait", + "auto_impl", + "derive_more", + "futures", + "jsonrpsee", + "kona-genesis", + "kona-interop", + "kona-protocol", + "kona-supervisor-metrics", + "kona-supervisor-rpc", + "kona-supervisor-storage", + "kona-supervisor-types", + "metrics", + "mockall", + "op-alloy-consensus", + "op-alloy-rpc-types", + "serde", + "serde_json", + "tempfile", + "thiserror 2.0.18", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "kona-supervisor-metrics" +version = "0.1.0" + +[[package]] +name = "kona-supervisor-rpc" +version = "0.1.1" +dependencies = [ + "alloy-eips", + "alloy-primitives", + "alloy-rpc-client", + "alloy-rpc-types-engine", + "alloy-serde", + "async-trait", + "derive_more", + "jsonrpsee", + "kona-interop", + "kona-protocol", + "kona-supervisor-types", + "op-alloy-consensus", + "serde", + "serde_json", + "thiserror 2.0.18", + "tokio", +] + +[[package]] +name = "kona-supervisor-service" +version = "0.1.0" +dependencies = [ + "alloy-eips", + "alloy-primitives", + "alloy-provider", + "alloy-rpc-client", + "alloy-rpc-types-eth", + "anyhow", + "async-trait", + "derive_more", + "futures", + "jsonrpsee", + "kona-genesis", + "kona-interop", + "kona-protocol", + "kona-supervisor-core", + "kona-supervisor-metrics", + "kona-supervisor-rpc", + "kona-supervisor-storage", + "kona-supervisor-types", + "mockall", + "thiserror 2.0.18", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "kona-supervisor-storage" +version = "0.1.0" +dependencies = [ + "alloy-eips", + "alloy-primitives", + "bytes", + "derive_more", + "eyre", + "kona-cli", + "kona-interop", + "kona-protocol", + "kona-supervisor-metrics", + "kona-supervisor-types", + "metrics", + "modular-bitfield", + "op-alloy-consensus", + "reth-codecs", + "reth-db", + "reth-db-api", + "reth-primitives-traits", + "serde", + "tempfile", + "thiserror 2.0.18", + "tokio", + "tracing", +] + +[[package]] +name = "kona-supervisor-types" +version = "0.1.1" +dependencies = [ + "alloy-eips", + "alloy-primitives", + "alloy-serde", + "derive_more", + "kona-interop", + "kona-protocol", + "op-alloy-consensus", + "serde", + "serde_json", + "thiserror 2.0.18", +] + +[[package]] +name = "kqueue" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eac30106d7dce88daf4a3fcb4879ea939476d5074a9b7ddd0fb97fa4bed5596a" +dependencies = [ + "kqueue-sys", + "libc", +] + +[[package]] +name = "kqueue-sys" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed9625ffda8729b85e45cf04090035ac368927b8cebc34898e7c120f52e4838b" +dependencies = [ + "bitflags 1.3.2", + "libc", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +dependencies = [ + "spin 0.9.8", +] + +[[package]] +name = "libc" +version = "0.2.180" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bcc35a38544a891a5f7c865aca548a982ccb3b8650a5b06d0fd33a10283c56fc" + +[[package]] +name = "libgit2-sys" +version = "0.18.3+1.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c9b3acc4b91781bb0b3386669d325163746af5f6e4f73e6d2d630e09a35f3487" dependencies = [ "cc", @@ -4624,6 +6570,153 @@ version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" +[[package]] +name = "libp2p" +version = "0.56.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce71348bf5838e46449ae240631117b487073d5f347c06d434caddcb91dceb5a" +dependencies = [ + "bytes", + "either", + "futures", + "futures-timer", + "getrandom 0.2.17", + "libp2p-allow-block-list", + "libp2p-connection-limits", + "libp2p-core", + "libp2p-dns", + "libp2p-gossipsub", + "libp2p-identify", + "libp2p-identity", + "libp2p-mdns", + "libp2p-metrics", + "libp2p-noise", + "libp2p-ping", + "libp2p-quic", + "libp2p-swarm", + "libp2p-tcp", + "libp2p-upnp", + "libp2p-yamux", + "multiaddr", + "pin-project", + "rw-stream-sink", + "thiserror 2.0.18", +] + +[[package]] +name = "libp2p-allow-block-list" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d16ccf824ee859ca83df301e1c0205270206223fd4b1f2e512a693e1912a8f4a" +dependencies = [ + "libp2p-core", + "libp2p-identity", + "libp2p-swarm", +] + +[[package]] +name = "libp2p-connection-limits" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a18b8b607cf3bfa2f8c57db9c7d8569a315d5cc0a282e6bfd5ebfc0a9840b2a0" +dependencies = [ + "libp2p-core", + "libp2p-identity", + "libp2p-swarm", +] + +[[package]] +name = "libp2p-core" +version = "0.43.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "249128cd37a2199aff30a7675dffa51caf073b51aa612d2f544b19932b9aebca" +dependencies = [ + "either", + "fnv", + "futures", + "futures-timer", + "libp2p-identity", + "multiaddr", + "multihash", + "multistream-select", + "parking_lot", + "pin-project", + "quick-protobuf", + "rand 0.8.5", + "rw-stream-sink", + "thiserror 2.0.18", + "tracing", + "unsigned-varint 0.8.0", + "web-time", +] + +[[package]] +name = "libp2p-dns" +version = "0.44.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b770c1c8476736ca98c578cba4b505104ff8e842c2876b528925f9766379f9a" +dependencies = [ + "async-trait", + "futures", + "hickory-resolver", + "libp2p-core", + "libp2p-identity", + "parking_lot", + "smallvec", + "tracing", +] + +[[package]] +name = "libp2p-gossipsub" +version = "0.49.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7f58e37d8d6848e5c4c9e3c35c6f61133235bff2960c9c00a663b0849301221" +dependencies = [ + "async-channel", + "asynchronous-codec", + "base64 0.22.1", + "byteorder", + "bytes", + "either", + "fnv", + "futures", + "futures-timer", + "getrandom 0.2.17", + "hashlink 0.9.1", + "hex_fmt", + "libp2p-core", + "libp2p-identity", + "libp2p-swarm", + "quick-protobuf", + "quick-protobuf-codec", + "rand 0.8.5", + "regex", + "sha2", + "tracing", + "web-time", +] + +[[package]] +name = "libp2p-identify" +version = "0.47.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ab792a8b68fdef443a62155b01970c81c3aadab5e659621b063ef252a8e65e8" +dependencies = [ + "asynchronous-codec", + "either", + "futures", + "futures-bounded", + "futures-timer", + "libp2p-core", + "libp2p-identity", + "libp2p-swarm", + "quick-protobuf", + "quick-protobuf-codec", + "smallvec", + "thiserror 2.0.18", + "tracing", +] + [[package]] name = "libp2p-identity" version = "0.2.13" @@ -4637,12 +6730,223 @@ dependencies = [ "k256", "multihash", "quick-protobuf", + "rand 0.8.5", "sha2", "thiserror 2.0.18", "tracing", "zeroize", ] +[[package]] +name = "libp2p-mdns" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c66872d0f1ffcded2788683f76931be1c52e27f343edb93bc6d0bcd8887be443" +dependencies = [ + "futures", + "hickory-proto", + "if-watch", + "libp2p-core", + "libp2p-identity", + "libp2p-swarm", + "rand 0.8.5", + "smallvec", + "socket2 0.5.10", + "tokio", + "tracing", +] + +[[package]] +name = "libp2p-metrics" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "805a555148522cb3414493a5153451910cb1a146c53ffbf4385708349baf62b7" +dependencies = [ + "futures", + "libp2p-core", + "libp2p-gossipsub", + "libp2p-identify", + "libp2p-identity", + "libp2p-ping", + "libp2p-swarm", + "pin-project", + "prometheus-client", + "web-time", +] + +[[package]] +name = "libp2p-noise" +version = "0.46.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc73eacbe6462a0eb92a6527cac6e63f02026e5407f8831bde8293f19217bfbf" +dependencies = [ + "asynchronous-codec", + "bytes", + "futures", + "libp2p-core", + "libp2p-identity", + "multiaddr", + "multihash", + "quick-protobuf", + "rand 0.8.5", + "snow", + "static_assertions", + "thiserror 2.0.18", + "tracing", + "x25519-dalek", + "zeroize", +] + +[[package]] +name = "libp2p-ping" +version = "0.47.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74bb7fcdfd9fead4144a3859da0b49576f171a8c8c7c0bfc7c541921d25e60d3" +dependencies = [ + "futures", + "futures-timer", + "libp2p-core", + "libp2p-identity", + "libp2p-swarm", + "rand 0.8.5", + "tracing", + "web-time", +] + +[[package]] +name = "libp2p-quic" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8dc448b2de9f4745784e3751fe8bc6c473d01b8317edd5ababcb0dec803d843f" +dependencies = [ + "futures", + "futures-timer", + "if-watch", + "libp2p-core", + "libp2p-identity", + "libp2p-tls", + "quinn", + "rand 0.8.5", + "ring", + "rustls", + "socket2 0.5.10", + "thiserror 2.0.18", + "tokio", + "tracing", +] + +[[package]] +name = "libp2p-stream" +version = "0.4.0-alpha" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6bd8025c80205ec2810cfb28b02f362ab48a01bee32c50ab5f12761e033464" +dependencies = [ + "futures", + "libp2p-core", + "libp2p-identity", + "libp2p-swarm", + "rand 0.8.5", + "tracing", +] + +[[package]] +name = "libp2p-swarm" +version = "0.47.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce88c6c4bf746c8482480345ea3edfd08301f49e026889d1cbccfa1808a9ed9e" +dependencies = [ + "either", + "fnv", + "futures", + "futures-timer", + "hashlink 0.10.0", + "libp2p-core", + "libp2p-identity", + "libp2p-swarm-derive", + "multistream-select", + "rand 0.8.5", + "smallvec", + "tokio", + "tracing", + "web-time", +] + +[[package]] +name = "libp2p-swarm-derive" +version = "0.35.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd297cf53f0cb3dee4d2620bb319ae47ef27c702684309f682bdb7e55a18ae9c" +dependencies = [ + "heck", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "libp2p-tcp" +version = "0.44.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb6585b9309699f58704ec9ab0bb102eca7a3777170fa91a8678d73ca9cafa93" +dependencies = [ + "futures", + "futures-timer", + "if-watch", + "libc", + "libp2p-core", + "socket2 0.6.2", + "tokio", + "tracing", +] + +[[package]] +name = "libp2p-tls" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96ff65a82e35375cbc31ebb99cacbbf28cb6c4fefe26bf13756ddcf708d40080" +dependencies = [ + "futures", + "futures-rustls", + "libp2p-core", + "libp2p-identity", + "rcgen", + "ring", + "rustls", + "rustls-webpki", + "thiserror 2.0.18", + "x509-parser", + "yasna", +] + +[[package]] +name = "libp2p-upnp" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4757e65fe69399c1a243bbb90ec1ae5a2114b907467bf09f3575e899815bb8d3" +dependencies = [ + "futures", + "futures-timer", + "igd-next", + "libp2p-core", + "libp2p-swarm", + "tokio", + "tracing", +] + +[[package]] +name = "libp2p-yamux" +version = "0.47.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f15df094914eb4af272acf9adaa9e287baa269943f32ea348ba29cfb9bfc60d8" +dependencies = [ + "either", + "futures", + "libp2p-core", + "thiserror 2.0.18", + "tracing", + "yamux 0.12.1", + "yamux 0.13.8", +] + [[package]] name = "libproc" version = "0.14.11" @@ -4864,6 +7168,12 @@ dependencies = [ "regex-automata", ] +[[package]] +name = "matchit" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" + [[package]] name = "memchr" version = "2.7.6" @@ -4900,16 +7210,36 @@ dependencies = [ [[package]] name = "metrics-derive" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3dbdd96ed57d565ec744cba02862d707acf373c5772d152abae6ec5c4e24f6c" +checksum = "37a87f4b19620e4c561f7b48f5e6ca085b1780def671696a6a3d9d0c137360ec" dependencies = [ "proc-macro2", "quote", - "regex", "syn 2.0.114", ] +[[package]] +name = "metrics-exporter-prometheus" +version = "0.16.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd7399781913e5393588a8d8c6a2867bf85fb38eaf2502fdce465aad2dc6f034" +dependencies = [ + "base64 0.22.1", + "http-body-util", + "hyper", + "hyper-rustls", + "hyper-util", + "indexmap 2.13.0", + "ipnet", + "metrics", + "metrics-util 0.19.1", + "quanta", + "thiserror 1.0.69", + "tokio", + "tracing", +] + [[package]] name = "metrics-exporter-prometheus" version = "0.18.1" @@ -4917,11 +7247,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3589659543c04c7dc5526ec858591015b87cd8746583b51b48ef4353f99dbcda" dependencies = [ "base64 0.22.1", + "http-body-util", + "hyper", + "hyper-util", "indexmap 2.13.0", + "ipnet", "metrics", - "metrics-util", + "metrics-util 0.20.1", "quanta", "thiserror 2.0.18", + "tokio", + "tracing", ] [[package]] @@ -4940,6 +7276,26 @@ dependencies = [ "windows 0.62.2", ] +[[package]] +name = "metrics-util" +version = "0.19.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8496cc523d1f94c1385dd8f0f0c2c480b2b8aeccb5b7e4485ad6365523ae376" +dependencies = [ + "aho-corasick", + "crossbeam-epoch", + "crossbeam-utils", + "hashbrown 0.15.5", + "indexmap 2.13.0", + "metrics", + "ordered-float", + "quanta", + "radix_trie", + "rand 0.9.2", + "rand_xoshiro", + "sketches-ddsketch", +] + [[package]] name = "metrics-util" version = "0.20.1" @@ -4985,10 +7341,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" dependencies = [ "adler2", - "serde", "simd-adler32", ] +[[package]] +name = "miniz_oxide" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5faa9f23e86bd5768d76def086192ff5f869fb088da12a976ea21e9796b975f6" +dependencies = [ + "adler2", + "serde", +] + [[package]] name = "mio" version = "1.1.1" @@ -5001,6 +7366,32 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "mockall" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f58d964098a5f9c6b63d0798e5372fd04708193510a7af313c22e9f29b7b620b" +dependencies = [ + "cfg-if", + "downcast", + "fragile", + "mockall_derive", + "predicates", + "predicates-tree", +] + +[[package]] +name = "mockall_derive" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca41ce716dda6a9be188b385aa78ee5260fc25cd3802cb2a8afdc6afbe6b6dbf" +dependencies = [ + "cfg-if", + "proc-macro2", + "quote", + "syn 2.0.114", +] + [[package]] name = "modular-bitfield" version = "0.11.2" @@ -5028,10 +7419,13 @@ version = "0.12.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4ac832c50ced444ef6be0767a008b02c106a909ba79d1d830501e94b96f6b7e" dependencies = [ + "async-lock", "crossbeam-channel", "crossbeam-epoch", "crossbeam-utils", "equivalent", + "event-listener", + "futures-util", "parking_lot", "portable-atomic", "smallvec", @@ -5060,7 +7454,7 @@ dependencies = [ "percent-encoding", "serde", "static_assertions", - "unsigned-varint", + "unsigned-varint 0.8.0", "url", ] @@ -5083,9 +7477,150 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6b430e7953c29dd6a09afc29ff0bb69c6e306329ee6794700aee27b76a1aea8d" dependencies = [ "core2", - "unsigned-varint", + "unsigned-varint 0.8.0", +] + +[[package]] +name = "multistream-select" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea0df8e5eec2298a62b326ee4f0d7fe1a6b90a09dfcf9df37b38f947a8c42f19" +dependencies = [ + "bytes", + "futures", + "log", + "pin-project", + "smallvec", + "unsigned-varint 0.7.2", +] + +[[package]] +name = "munge" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e17401f259eba956ca16491461b6e8f72913a0a114e39736ce404410f915a0c" +dependencies = [ + "munge_macro", +] + +[[package]] +name = "munge_macro" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4568f25ccbd45ab5d5603dc34318c1ec56b117531781260002151b8530a9f931" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "native-tls" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" +dependencies = [ + "libc", + "log", + "openssl", + "openssl-probe 0.1.6", + "openssl-sys", + "schannel", + "security-framework 2.11.1", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "netlink-packet-core" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72724faf704479d67b388da142b186f916188505e7e0b26719019c525882eda4" +dependencies = [ + "anyhow", + "byteorder", + "netlink-packet-utils", +] + +[[package]] +name = "netlink-packet-route" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053998cea5a306971f88580d0829e90f270f940befd7cf928da179d4187a5a66" +dependencies = [ + "anyhow", + "bitflags 1.3.2", + "byteorder", + "libc", + "netlink-packet-core", + "netlink-packet-utils", +] + +[[package]] +name = "netlink-packet-utils" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ede8a08c71ad5a95cdd0e4e52facd37190977039a4704eb82a283f713747d34" +dependencies = [ + "anyhow", + "byteorder", + "paste", + "thiserror 1.0.69", +] + +[[package]] +name = "netlink-proto" +version = "0.11.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72452e012c2f8d612410d89eea01e2d9b56205274abb35d53f60200b2ec41d60" +dependencies = [ + "bytes", + "futures", + "log", + "netlink-packet-core", + "netlink-sys", + "thiserror 2.0.18", ] +[[package]] +name = "netlink-sys" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd6c30ed10fa69cc491d491b85cc971f6bdeb8e7367b7cde2ee6cc878d583fae" +dependencies = [ + "bytes", + "futures-util", + "libc", + "log", + "tokio", +] + +[[package]] +name = "nibble_vec" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a5d83df9f36fe23f0c3648c6bbb8b0298bb5f1939c8f2704431371f4b84d43" +dependencies = [ + "smallvec", +] + +[[package]] +name = "nix" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" +dependencies = [ + "bitflags 1.3.2", + "cfg-if", + "libc", +] + +[[package]] +name = "nohash-hasher" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" + [[package]] name = "nom" version = "7.1.3" @@ -5287,6 +7822,15 @@ dependencies = [ "memchr", ] +[[package]] +name = "oid-registry" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12f40cff3dde1b6087cc5d5f5d4d65712f34016a03ed60e9c08dcc392736b5b7" +dependencies = [ + "asn1-rs", +] + [[package]] name = "once_cell" version = "1.21.3" @@ -5303,15 +7847,20 @@ version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" +[[package]] +name = "oorandom" +version = "11.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e" + [[package]] name = "op-alloy" version = "0.23.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9b8fee21003dd4f076563de9b9d26f8c97840157ef78593cd7f262c5ca99848" dependencies = [ "op-alloy-consensus", "op-alloy-network", "op-alloy-provider", + "op-alloy-rpc-jsonrpsee", "op-alloy-rpc-types", "op-alloy-rpc-types-engine", ] @@ -5319,8 +7868,6 @@ dependencies = [ [[package]] name = "op-alloy-consensus" version = "0.23.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "736381a95471d23e267263cfcee9e1d96d30b9754a94a2819148f83379de8a86" dependencies = [ "alloy-consensus", "alloy-eips", @@ -5329,9 +7876,13 @@ dependencies = [ "alloy-rlp", "alloy-rpc-types-eth", "alloy-serde", + "alloy-signer", "arbitrary", + "bincode 2.0.1", "derive_more", + "rand 0.9.2", "serde", + "serde_json", "serde_with", "thiserror 2.0.18", ] @@ -5345,8 +7896,6 @@ checksum = "a79f352fc3893dcd670172e615afef993a41798a1d3fc0db88a3e60ef2e70ecc" [[package]] name = "op-alloy-network" version = "0.23.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4034183dca6bff6632e7c24c92e75ff5f0eabb58144edb4d8241814851334d47" dependencies = [ "alloy-consensus", "alloy-network", @@ -5361,8 +7910,6 @@ dependencies = [ [[package]] name = "op-alloy-provider" version = "0.23.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6753d90efbaa8ea8bcb89c1737408ca85fa60d7adb875049d3f382c063666f86" dependencies = [ "alloy-network", "alloy-primitives", @@ -5376,8 +7923,6 @@ dependencies = [ [[package]] name = "op-alloy-rpc-jsonrpsee" version = "0.23.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1c820ef9c802ebc732281a940bfb6ac2345af4d9fff041cbb64b4b546676686" dependencies = [ "alloy-primitives", "jsonrpsee", @@ -5386,8 +7931,6 @@ dependencies = [ [[package]] name = "op-alloy-rpc-types" version = "0.23.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddd87c6b9e5b6eee8d6b76f41b04368dca0e9f38d83338e5b00e730c282098a4" dependencies = [ "alloy-consensus", "alloy-eips", @@ -5395,18 +7938,20 @@ dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", "alloy-serde", + "arbitrary", "derive_more", + "jsonrpsee", "op-alloy-consensus", + "rand 0.9.2", "serde", "serde_json", + "similar-asserts", "thiserror 2.0.18", ] [[package]] name = "op-alloy-rpc-types-engine" version = "0.23.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77727699310a18cdeed32da3928c709e2704043b6584ed416397d5da65694efc" dependencies = [ "alloy-consensus", "alloy-eips", @@ -5414,11 +7959,14 @@ dependencies = [ "alloy-rlp", "alloy-rpc-types-engine", "alloy-serde", + "arbitrary", + "arbtest", "derive_more", "ethereum_ssz", "ethereum_ssz_derive", "op-alloy-consensus", "serde", + "serde_json", "sha2", "snap", "thiserror 2.0.18", @@ -5459,12 +8007,80 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" +[[package]] +name = "openssl" +version = "0.10.75" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08838db121398ad17ab8531ce9de97b244589089e290a384c900cb9ff7434328" +dependencies = [ + "bitflags 2.10.0", + "cfg-if", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "openssl-probe" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" + [[package]] name = "openssl-probe" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe" +[[package]] +name = "openssl-src" +version = "300.5.5+3.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f1787d533e03597a7934fd0a765f0d28e94ecc5fb7789f8053b1e699a56f709" +dependencies = [ + "cc", +] + +[[package]] +name = "openssl-sys" +version = "0.9.111" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82cab2d520aa75e3c58898289429321eb788c3106963d0dc886ec7a5f4adc321" +dependencies = [ + "cc", + "libc", + "openssl-src", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "opentelemetry" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "236e667b670a5cdf90c258f5a55794ec5ac5027e960c224bff8367a59e1e6426" +dependencies = [ + "futures-core", + "futures-sink", + "js-sys", + "pin-project-lite", + "thiserror 2.0.18", + "tracing", +] + [[package]] name = "opentelemetry" version = "0.31.0" @@ -5485,12 +8101,26 @@ version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef6a1ac5ca3accf562b8c306fa8483c85f4390f768185ab775f242f7fe8fdcc2" dependencies = [ - "opentelemetry", + "opentelemetry 0.31.0", "tracing", "tracing-core", "tracing-subscriber 0.3.22", ] +[[package]] +name = "opentelemetry-http" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8863faf2910030d139fb48715ad5ff2f35029fc5f244f6d5f689ddcf4d26253" +dependencies = [ + "async-trait", + "bytes", + "http", + "opentelemetry 0.28.0", + "reqwest 0.12.28", + "tracing", +] + [[package]] name = "opentelemetry-http" version = "0.31.0" @@ -5500,8 +8130,30 @@ dependencies = [ "async-trait", "bytes", "http", - "opentelemetry", - "reqwest", + "opentelemetry 0.31.0", + "reqwest 0.12.28", +] + +[[package]] +name = "opentelemetry-otlp" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5bef114c6d41bea83d6dc60eb41720eedd0261a67af57b66dd2b84ac46c01d91" +dependencies = [ + "async-trait", + "futures-core", + "http", + "opentelemetry 0.28.0", + "opentelemetry-http 0.28.0", + "opentelemetry-proto 0.28.0", + "opentelemetry_sdk 0.28.0", + "prost 0.13.5", + "reqwest 0.12.28", + "serde_json", + "thiserror 2.0.18", + "tokio", + "tonic 0.12.3", + "tracing", ] [[package]] @@ -5511,28 +8163,43 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a2366db2dca4d2ad033cad11e6ee42844fd727007af5ad04a1730f4cb8163bf" dependencies = [ "http", - "opentelemetry", - "opentelemetry-http", - "opentelemetry-proto", - "opentelemetry_sdk", + "opentelemetry 0.31.0", + "opentelemetry-http 0.31.0", + "opentelemetry-proto 0.31.0", + "opentelemetry_sdk 0.31.0", "prost 0.14.3", - "reqwest", + "reqwest 0.12.28", "thiserror 2.0.18", "tokio", - "tonic", + "tonic 0.14.3", "tracing", ] +[[package]] +name = "opentelemetry-proto" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56f8870d3024727e99212eb3bb1762ec16e255e3e6f58eeb3dc8db1aa226746d" +dependencies = [ + "base64 0.22.1", + "hex", + "opentelemetry 0.28.0", + "opentelemetry_sdk 0.28.0", + "prost 0.13.5", + "serde", + "tonic 0.12.3", +] + [[package]] name = "opentelemetry-proto" version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7175df06de5eaee9909d4805a3d07e28bb752c34cab57fa9cff549da596b30f" dependencies = [ - "opentelemetry", - "opentelemetry_sdk", + "opentelemetry 0.31.0", + "opentelemetry_sdk 0.31.0", "prost 0.14.3", - "tonic", + "tonic 0.14.3", "tonic-prost", ] @@ -5542,6 +8209,27 @@ version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e62e29dfe041afb8ed2a6c9737ab57db4907285d999ef8ad3a59092a36bdc846" +[[package]] +name = "opentelemetry_sdk" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84dfad6042089c7fc1f6118b7040dc2eb4ab520abbf410b79dc481032af39570" +dependencies = [ + "async-trait", + "futures-channel", + "futures-executor", + "futures-util", + "glob", + "opentelemetry 0.28.0", + "percent-encoding", + "rand 0.8.5", + "serde_json", + "thiserror 2.0.18", + "tokio", + "tokio-stream", + "tracing", +] + [[package]] name = "opentelemetry_sdk" version = "0.31.0" @@ -5551,7 +8239,7 @@ dependencies = [ "futures-channel", "futures-executor", "futures-util", - "opentelemetry", + "opentelemetry 0.31.0", "percent-encoding", "rand 0.9.2", "thiserror 2.0.18", @@ -5563,6 +8251,15 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" +[[package]] +name = "ordered-float" +version = "4.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7bb71e1b3fa6ca1c61f383464aaf2bb0e2f8e772a1f01d486832464de363b951" +dependencies = [ + "num-traits", +] + [[package]] name = "p256" version = "0.13.2" @@ -5585,6 +8282,17 @@ dependencies = [ "winapi", ] +[[package]] +name = "papergrid" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6978128c8b51d8f4080631ceb2302ab51e32cc6e8615f735ee2f83fd269ae3f1" +dependencies = [ + "bytecount", + "fnv", + "unicode-width 0.2.0", +] + [[package]] name = "parity-scale-codec" version = "3.7.5" @@ -5650,6 +8358,15 @@ version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" +[[package]] +name = "path-tree" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2a97453bc21a968f722df730bfe11bd08745cb50d1300b0df2bda131dece136" +dependencies = [ + "smallvec", +] + [[package]] name = "pbkdf2" version = "0.12.2" @@ -5796,6 +8513,59 @@ dependencies = [ "crunchy", ] +[[package]] +name = "plotters" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aeb6f403d7a4911efb1e33402027fc44f29b5bf6def3effcc22d7bb75f2b747" +dependencies = [ + "num-traits", + "plotters-backend", + "plotters-svg", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "plotters-backend" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df42e13c12958a16b3f7f4386b9ab1f3e7933914ecea48da7139435263a4172a" + +[[package]] +name = "plotters-svg" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51bae2ac328883f7acdfea3d66a7c35751187f870bc81f94563733a154d7a670" +dependencies = [ + "plotters-backend", +] + +[[package]] +name = "polling" +version = "3.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d0e4f59085d47d8241c88ead0f274e8a0cb551f3625263c05eb8dd897c34218" +dependencies = [ + "cfg-if", + "concurrent-queue", + "hermit-abi", + "pin-project-lite", + "rustix 1.1.3", + "windows-sys 0.61.2", +] + +[[package]] +name = "poly1305" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf" +dependencies = [ + "cpufeatures", + "opaque-debug", + "universal-hash", +] + [[package]] name = "polyval" version = "0.6.2" @@ -5810,9 +8580,9 @@ dependencies = [ [[package]] name = "portable-atomic" -version = "1.13.0" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f89776e4d69bb58bc6993e99ffa1d11f228b839984854c7daeb5d37f87cbe950" +checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49" [[package]] name = "potential_utf" @@ -5852,6 +8622,32 @@ dependencies = [ "zerocopy", ] +[[package]] +name = "predicates" +version = "3.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5d19ee57562043d37e82899fade9a22ebab7be9cef5026b07fda9cdd4293573" +dependencies = [ + "anstyle", + "predicates-core", +] + +[[package]] +name = "predicates-core" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "727e462b119fe9c93fd0eb1429a5f7647394014cf3c04ab2c0350eeb09095ffa" + +[[package]] +name = "predicates-tree" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72dd2d6d381dfb73a193c7fca536518d7caee39fc8503f74e7dc0be0531b425c" +dependencies = [ + "predicates-core", + "termtree", +] + [[package]] name = "pretty_assertions" version = "1.4.1" @@ -5968,6 +8764,29 @@ dependencies = [ "hex", ] +[[package]] +name = "prometheus-client" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf41c1a7c32ed72abe5082fb19505b969095c12da9f5732a4bc9878757fd087c" +dependencies = [ + "dtoa", + "itoa", + "parking_lot", + "prometheus-client-derive-encode", +] + +[[package]] +name = "prometheus-client-derive-encode" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "440f724eba9f6996b75d63681b0a92b06947f1457076d503a4d2e2c8f56442b8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + [[package]] name = "proptest" version = "1.9.0" @@ -6065,6 +8884,26 @@ dependencies = [ "syn 2.0.114", ] +[[package]] +name = "ptr_meta" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b9a0cf95a1196af61d4f1cbdab967179516d9a4a4312af1f31948f8f6224a79" +dependencies = [ + "ptr_meta_derive", +] + +[[package]] +name = "ptr_meta_derive" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7347867d0a7e1208d93b46767be83e2b8f978c3dad35f775ac8d8847551d6fe1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + [[package]] name = "quanta" version = "0.12.6" @@ -6095,6 +8934,19 @@ dependencies = [ "byteorder", ] +[[package]] +name = "quick-protobuf-codec" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15a0580ab32b169745d7a39db2ba969226ca16738931be152a3209b409de2474" +dependencies = [ + "asynchronous-codec", + "bytes", + "quick-protobuf", + "thiserror 1.0.69", + "unsigned-varint 0.8.0", +] + [[package]] name = "quinn" version = "0.11.9" @@ -6103,6 +8955,7 @@ checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20" dependencies = [ "bytes", "cfg_aliases", + "futures-io", "pin-project-lite", "quinn-proto", "quinn-udp", @@ -6171,6 +9024,25 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" +[[package]] +name = "radix_trie" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c069c179fcdc6a2fe24d8d18305cf085fdbd4f922c041943e203685d6a1c58fd" +dependencies = [ + "endian-type", + "nibble_vec", +] + +[[package]] +name = "rancor" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a063ea72381527c2a0561da9c80000ef822bdd7c3241b1cc1b12100e3df081ee" +dependencies = [ + "ptr_meta", +] + [[package]] name = "rand" version = "0.8.5" @@ -6311,6 +9183,19 @@ dependencies = [ "crossbeam-utils", ] +[[package]] +name = "rcgen" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75e669e5202259b5314d1ea5397316ad400819437857b90861765f24c4cf80a2" +dependencies = [ + "pem", + "ring", + "rustls-pki-types", + "time", + "yasna", +] + [[package]] name = "recvmsg" version = "1.0.0" @@ -6422,6 +9307,15 @@ version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba39f3699c378cd8970968dcbff9c43159ea4cfbd88d43c00b22f2ef10a435d2" +[[package]] +name = "rend" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cadadef317c2f20755a64d7fdc48f9e7178ee6b0e1f7fce33fa60f1d68a276e6" +dependencies = [ + "bytecheck", +] + [[package]] name = "reqwest" version = "0.12.28" @@ -6454,7 +9348,7 @@ dependencies = [ "tokio", "tokio-rustls", "tokio-util", - "tower", + "tower 0.5.3", "tower-http", "tower-service", "url", @@ -6465,6 +9359,35 @@ dependencies = [ "webpki-roots 1.0.5", ] +[[package]] +name = "reqwest" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04e9018c9d814e5f30cc16a0f03271aeab3571e609612d9fe78c1aa8d11c2f62" +dependencies = [ + "base64 0.22.1", + "bytes", + "futures-core", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-util", + "js-sys", + "log", + "percent-encoding", + "pin-project-lite", + "sync_wrapper", + "tokio", + "tower 0.5.3", + "tower-http", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + [[package]] name = "resolv-conf" version = "0.7.6" @@ -6474,7 +9397,7 @@ checksum = "1e061d1b48cb8d38042de4ae0a7a6401009d6143dc80d2e2d6f31f0bdd6470c7" [[package]] name = "reth-basic-payload-builder" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-consensus", "alloy-eips", @@ -6498,7 +9421,7 @@ dependencies = [ [[package]] name = "reth-chain-state" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-consensus", "alloy-eips", @@ -6530,7 +9453,7 @@ dependencies = [ [[package]] name = "reth-chainspec" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-chains", "alloy-consensus", @@ -6550,7 +9473,7 @@ dependencies = [ [[package]] name = "reth-cli" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-genesis", "clap", @@ -6564,7 +9487,7 @@ dependencies = [ [[package]] name = "reth-cli-commands" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-chains", "alloy-consensus", @@ -6587,7 +9510,7 @@ dependencies = [ "proptest", "proptest-arbitrary-interop", "ratatui", - "reqwest", + "reqwest 0.12.28", "reth-chainspec", "reth-cli", "reth-cli-runner", @@ -6640,7 +9563,7 @@ dependencies = [ "tar", "tokio", "tokio-stream", - "toml", + "toml 0.8.23", "tracing", "url", "zstd", @@ -6649,7 +9572,7 @@ dependencies = [ [[package]] name = "reth-cli-runner" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "reth-tasks", "tokio", @@ -6659,7 +9582,7 @@ dependencies = [ [[package]] name = "reth-cli-util" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-eips", "alloy-primitives", @@ -6679,7 +9602,7 @@ dependencies = [ [[package]] name = "reth-codecs" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-consensus", "alloy-eips", @@ -6699,7 +9622,7 @@ dependencies = [ [[package]] name = "reth-codecs-derive" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "proc-macro2", "quote", @@ -6709,7 +9632,7 @@ dependencies = [ [[package]] name = "reth-config" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "eyre", "humantime-serde", @@ -6718,14 +9641,14 @@ dependencies = [ "reth-stages-types", "reth-static-file-types", "serde", - "toml", + "toml 0.8.23", "url", ] [[package]] name = "reth-consensus" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-consensus", "alloy-primitives", @@ -6738,7 +9661,7 @@ dependencies = [ [[package]] name = "reth-consensus-common" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-consensus", "alloy-eips", @@ -6750,7 +9673,7 @@ dependencies = [ [[package]] name = "reth-consensus-debug-client" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-consensus", "alloy-eips", @@ -6763,11 +9686,11 @@ dependencies = [ "derive_more", "eyre", "futures", - "reqwest", + "reqwest 0.12.28", "reth-node-api", "reth-primitives-traits", "reth-tracing", - "ringbuffer", + "ringbuffer 0.15.0", "serde", "serde_json", "tokio", @@ -6776,7 +9699,7 @@ dependencies = [ [[package]] name = "reth-db" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-primitives", "derive_more", @@ -6802,7 +9725,7 @@ dependencies = [ [[package]] name = "reth-db-api" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-consensus", "alloy-genesis", @@ -6831,7 +9754,7 @@ dependencies = [ [[package]] name = "reth-db-common" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-consensus", "alloy-genesis", @@ -6861,7 +9784,7 @@ dependencies = [ [[package]] name = "reth-db-models" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-eips", "alloy-primitives", @@ -6876,7 +9799,7 @@ dependencies = [ [[package]] name = "reth-discv4" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-primitives", "alloy-rlp", @@ -6901,7 +9824,7 @@ dependencies = [ [[package]] name = "reth-discv5" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-primitives", "alloy-rlp", @@ -6925,7 +9848,7 @@ dependencies = [ [[package]] name = "reth-dns-discovery" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-primitives", "data-encoding", @@ -6949,7 +9872,7 @@ dependencies = [ [[package]] name = "reth-downloaders" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-consensus", "alloy-eips", @@ -6984,7 +9907,7 @@ dependencies = [ [[package]] name = "reth-e2e-test-utils" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-consensus", "alloy-eips", @@ -7042,7 +9965,7 @@ dependencies = [ [[package]] name = "reth-ecies" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "aes", "alloy-primitives", @@ -7070,7 +9993,7 @@ dependencies = [ [[package]] name = "reth-engine-local" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-consensus", "alloy-primitives", @@ -7094,7 +10017,7 @@ dependencies = [ [[package]] name = "reth-engine-primitives" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-consensus", "alloy-eips", @@ -7119,7 +10042,7 @@ dependencies = [ [[package]] name = "reth-engine-service" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "futures", "pin-project", @@ -7142,7 +10065,7 @@ dependencies = [ [[package]] name = "reth-engine-tree" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-consensus", "alloy-eip7928", @@ -7201,7 +10124,7 @@ dependencies = [ [[package]] name = "reth-engine-util" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-consensus", "alloy-rpc-types-engine", @@ -7229,7 +10152,7 @@ dependencies = [ [[package]] name = "reth-era" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-consensus", "alloy-eips", @@ -7244,13 +10167,13 @@ dependencies = [ [[package]] name = "reth-era-downloader" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-primitives", "bytes", "eyre", "futures-util", - "reqwest", + "reqwest 0.12.28", "reth-era", "reth-fs-util", "sha2", @@ -7260,7 +10183,7 @@ dependencies = [ [[package]] name = "reth-era-utils" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-consensus", "alloy-primitives", @@ -7282,7 +10205,7 @@ dependencies = [ [[package]] name = "reth-errors" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "reth-consensus", "reth-execution-errors", @@ -7293,7 +10216,7 @@ dependencies = [ [[package]] name = "reth-eth-wire" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-chains", "alloy-primitives", @@ -7322,7 +10245,7 @@ dependencies = [ [[package]] name = "reth-eth-wire-types" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-chains", "alloy-consensus", @@ -7343,10 +10266,73 @@ dependencies = [ "thiserror 2.0.18", ] +[[package]] +name = "reth-ethereum" +version = "1.10.2" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +dependencies = [ + "alloy-rpc-types-engine", + "alloy-rpc-types-eth", + "reth-chainspec", + "reth-cli-util", + "reth-codecs", + "reth-consensus", + "reth-consensus-common", + "reth-db", + "reth-engine-local", + "reth-eth-wire", + "reth-ethereum-cli", + "reth-ethereum-consensus", + "reth-ethereum-primitives", + "reth-evm", + "reth-evm-ethereum", + "reth-exex", + "reth-network", + "reth-network-api", + "reth-node-api", + "reth-node-builder", + "reth-node-core", + "reth-node-ethereum", + "reth-primitives-traits", + "reth-provider", + "reth-revm", + "reth-rpc", + "reth-rpc-api", + "reth-rpc-builder", + "reth-rpc-eth-types", + "reth-storage-api", + "reth-tasks", + "reth-transaction-pool", + "reth-trie", + "reth-trie-db", +] + +[[package]] +name = "reth-ethereum-cli" +version = "1.10.2" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +dependencies = [ + "clap", + "eyre", + "reth-chainspec", + "reth-cli", + "reth-cli-commands", + "reth-cli-runner", + "reth-db", + "reth-node-api", + "reth-node-builder", + "reth-node-core", + "reth-node-ethereum", + "reth-node-metrics", + "reth-rpc-server-types", + "reth-tracing", + "tracing", +] + [[package]] name = "reth-ethereum-consensus" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-consensus", "alloy-eips", @@ -7362,7 +10348,7 @@ dependencies = [ [[package]] name = "reth-ethereum-engine-primitives" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-eips", "alloy-primitives", @@ -7380,7 +10366,7 @@ dependencies = [ [[package]] name = "reth-ethereum-forks" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-eip2124", "alloy-hardforks", @@ -7394,7 +10380,7 @@ dependencies = [ [[package]] name = "reth-ethereum-payload-builder" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-consensus", "alloy-eips", @@ -7423,7 +10409,7 @@ dependencies = [ [[package]] name = "reth-ethereum-primitives" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-consensus", "alloy-eips", @@ -7443,7 +10429,7 @@ dependencies = [ [[package]] name = "reth-etl" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "rayon", "reth-db-api", @@ -7453,7 +10439,7 @@ dependencies = [ [[package]] name = "reth-evm" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-consensus", "alloy-eips", @@ -7477,7 +10463,7 @@ dependencies = [ [[package]] name = "reth-evm-ethereum" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-consensus", "alloy-eips", @@ -7499,7 +10485,7 @@ dependencies = [ [[package]] name = "reth-execution-errors" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-evm", "alloy-primitives", @@ -7512,7 +10498,7 @@ dependencies = [ [[package]] name = "reth-execution-types" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-consensus", "alloy-eips", @@ -7530,7 +10516,7 @@ dependencies = [ [[package]] name = "reth-exex" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-consensus", "alloy-eips", @@ -7568,7 +10554,7 @@ dependencies = [ [[package]] name = "reth-exex-types" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-eips", "alloy-primitives", @@ -7582,7 +10568,7 @@ dependencies = [ [[package]] name = "reth-fs-util" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "serde", "serde_json", @@ -7592,7 +10578,7 @@ dependencies = [ [[package]] name = "reth-invalid-block-hooks" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-consensus", "alloy-primitives", @@ -7620,7 +10606,7 @@ dependencies = [ [[package]] name = "reth-ipc" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "bytes", "futures", @@ -7633,14 +10619,14 @@ dependencies = [ "tokio", "tokio-stream", "tokio-util", - "tower", + "tower 0.5.3", "tracing", ] [[package]] name = "reth-libmdbx" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "bitflags 2.10.0", "byteorder", @@ -7656,7 +10642,7 @@ dependencies = [ [[package]] name = "reth-mdbx-sys" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "bindgen 0.71.1", "cc", @@ -7665,7 +10651,7 @@ dependencies = [ [[package]] name = "reth-metrics" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "futures", "metrics", @@ -7677,7 +10663,7 @@ dependencies = [ [[package]] name = "reth-net-banlist" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-primitives", "ipnet", @@ -7686,11 +10672,11 @@ dependencies = [ [[package]] name = "reth-net-nat" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "futures-util", - "if-addrs", - "reqwest", + "if-addrs 0.14.0", + "reqwest 0.12.28", "serde_with", "thiserror 2.0.18", "tokio", @@ -7700,7 +10686,7 @@ dependencies = [ [[package]] name = "reth-network" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-consensus", "alloy-eips", @@ -7757,7 +10743,7 @@ dependencies = [ [[package]] name = "reth-network-api" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-consensus", "alloy-primitives", @@ -7782,7 +10768,7 @@ dependencies = [ [[package]] name = "reth-network-p2p" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-consensus", "alloy-eips", @@ -7805,7 +10791,7 @@ dependencies = [ [[package]] name = "reth-network-peers" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-primitives", "alloy-rlp", @@ -7820,7 +10806,7 @@ dependencies = [ [[package]] name = "reth-network-types" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-eip2124", "humantime-serde", @@ -7834,10 +10820,10 @@ dependencies = [ [[package]] name = "reth-nippy-jar" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "anyhow", - "bincode", + "bincode 1.3.3", "derive_more", "lz4_flex", "memmap2", @@ -7851,7 +10837,7 @@ dependencies = [ [[package]] name = "reth-node-api" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-rpc-types-engine", "eyre", @@ -7875,7 +10861,7 @@ dependencies = [ [[package]] name = "reth-node-builder" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-consensus", "alloy-eips", @@ -7944,7 +10930,7 @@ dependencies = [ [[package]] name = "reth-node-core" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-consensus", "alloy-eips", @@ -7989,7 +10975,7 @@ dependencies = [ "shellexpand", "strum 0.27.2", "thiserror 2.0.18", - "toml", + "toml 0.8.23", "tracing", "url", "vergen", @@ -7999,7 +10985,7 @@ dependencies = [ [[package]] name = "reth-node-ethereum" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-eips", "alloy-network", @@ -8037,7 +11023,7 @@ dependencies = [ [[package]] name = "reth-node-ethstats" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-consensus", "alloy-primitives", @@ -8053,7 +11039,7 @@ dependencies = [ "thiserror 2.0.18", "tokio", "tokio-stream", - "tokio-tungstenite", + "tokio-tungstenite 0.26.2", "tracing", "url", ] @@ -8061,7 +11047,7 @@ dependencies = [ [[package]] name = "reth-node-events" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-consensus", "alloy-eips", @@ -8085,7 +11071,7 @@ dependencies = [ [[package]] name = "reth-node-metrics" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "bytes", "eyre", @@ -8095,26 +11081,26 @@ dependencies = [ "jsonrpsee-server", "mappings", "metrics", - "metrics-exporter-prometheus", + "metrics-exporter-prometheus 0.18.1", "metrics-process", - "metrics-util", + "metrics-util 0.20.1", "pprof_util", "procfs 0.17.0", - "reqwest", + "reqwest 0.12.28", "reth-fs-util", "reth-metrics", "reth-tasks", "tempfile", "tikv-jemalloc-ctl", "tokio", - "tower", + "tower 0.5.3", "tracing", ] [[package]] name = "reth-node-types" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "reth-chainspec", "reth-db-api", @@ -8127,6 +11113,7 @@ dependencies = [ name = "reth-op" version = "1.10.2" dependencies = [ + "alloy-primitives", "reth-chainspec", "reth-cli-util", "reth-codecs", @@ -8175,7 +11162,7 @@ dependencies = [ "alloy-op-hardforks", "alloy-primitives", "derive_more", - "miniz_oxide", + "miniz_oxide 0.9.0", "op-alloy-consensus", "op-alloy-rpc-types", "paste", @@ -8329,11 +11316,11 @@ dependencies = [ "reth-rpc-eth-types", "reth-storage-api", "reth-tasks", - "ringbuffer", + "ringbuffer 0.16.0", "serde_json", "test-case", "tokio", - "tokio-tungstenite", + "tokio-tungstenite 0.28.0", "tracing", "url", ] @@ -8369,6 +11356,7 @@ dependencies = [ "reth-chainspec", "reth-consensus", "reth-db", + "reth-db-api", "reth-e2e-test-utils", "reth-engine-local", "reth-evm", @@ -8457,7 +11445,7 @@ dependencies = [ "alloy-primitives", "alloy-rlp", "arbitrary", - "bincode", + "bincode 2.0.1", "bytes", "modular-bitfield", "op-alloy-consensus", @@ -8469,7 +11457,7 @@ dependencies = [ "reth-primitives-traits", "reth-zstd-compressors", "rstest", - "secp256k1 0.30.0", + "secp256k1 0.31.1", "serde", "serde_json", "serde_with", @@ -8504,7 +11492,6 @@ dependencies = [ "op-alloy-rpc-types", "op-alloy-rpc-types-engine", "op-revm", - "reqwest", "reth-chain-state", "reth-chainspec", "reth-evm", @@ -8533,7 +11520,7 @@ dependencies = [ "thiserror 2.0.18", "tokio", "tokio-stream", - "tower", + "tower 0.5.3", "tracing", ] @@ -8590,7 +11577,7 @@ dependencies = [ [[package]] name = "reth-payload-builder" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-consensus", "alloy-primitives", @@ -8611,7 +11598,7 @@ dependencies = [ [[package]] name = "reth-payload-builder-primitives" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "pin-project", "reth-payload-primitives", @@ -8623,7 +11610,7 @@ dependencies = [ [[package]] name = "reth-payload-primitives" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-consensus", "alloy-eips", @@ -8646,7 +11633,7 @@ dependencies = [ [[package]] name = "reth-payload-util" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-consensus", "alloy-primitives", @@ -8656,7 +11643,7 @@ dependencies = [ [[package]] name = "reth-payload-validator" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-consensus", "alloy-rpc-types-engine", @@ -8666,7 +11653,7 @@ dependencies = [ [[package]] name = "reth-primitives" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-consensus", "once_cell", @@ -8679,7 +11666,7 @@ dependencies = [ [[package]] name = "reth-primitives-traits" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-consensus", "alloy-eips", @@ -8712,7 +11699,7 @@ dependencies = [ [[package]] name = "reth-provider" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-consensus", "alloy-eips", @@ -8756,7 +11743,7 @@ dependencies = [ [[package]] name = "reth-prune" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-consensus", "alloy-eips", @@ -8785,7 +11772,7 @@ dependencies = [ [[package]] name = "reth-prune-types" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-primitives", "arbitrary", @@ -8801,7 +11788,7 @@ dependencies = [ [[package]] name = "reth-revm" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-primitives", "reth-primitives-traits", @@ -8814,7 +11801,7 @@ dependencies = [ [[package]] name = "reth-rpc" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-consensus", "alloy-dyn-abi", @@ -8888,7 +11875,7 @@ dependencies = [ "thiserror 2.0.18", "tokio", "tokio-stream", - "tower", + "tower 0.5.3", "tracing", "tracing-futures", ] @@ -8896,7 +11883,7 @@ dependencies = [ [[package]] name = "reth-rpc-api" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-eip7928", "alloy-eips", @@ -8926,7 +11913,7 @@ dependencies = [ [[package]] name = "reth-rpc-builder" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-network", "alloy-provider", @@ -8959,7 +11946,7 @@ dependencies = [ "thiserror 2.0.18", "tokio", "tokio-util", - "tower", + "tower 0.5.3", "tower-http", "tracing", ] @@ -8967,7 +11954,7 @@ dependencies = [ [[package]] name = "reth-rpc-convert" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-consensus", "alloy-evm", @@ -8991,7 +11978,7 @@ dependencies = [ [[package]] name = "reth-rpc-engine-api" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-eips", "alloy-primitives", @@ -9021,7 +12008,7 @@ dependencies = [ [[package]] name = "reth-rpc-eth-api" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-consensus", "alloy-dyn-abi", @@ -9065,7 +12052,7 @@ dependencies = [ [[package]] name = "reth-rpc-eth-types" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-consensus", "alloy-eips", @@ -9083,7 +12070,7 @@ dependencies = [ "jsonrpsee-types", "metrics", "rand 0.9.2", - "reqwest", + "reqwest 0.12.28", "reth-chain-state", "reth-chainspec", "reth-errors", @@ -9113,13 +12100,13 @@ dependencies = [ [[package]] name = "reth-rpc-layer" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-rpc-types-engine", "http", "jsonrpsee-http-client", "pin-project", - "tower", + "tower 0.5.3", "tower-http", "tracing", ] @@ -9127,7 +12114,7 @@ dependencies = [ [[package]] name = "reth-rpc-server-types" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-eips", "alloy-primitives", @@ -9143,18 +12130,18 @@ dependencies = [ [[package]] name = "reth-stages" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-consensus", "alloy-eips", "alloy-primitives", - "bincode", + "bincode 1.3.3", "eyre", "futures-util", "itertools 0.14.0", "num-traits", "rayon", - "reqwest", + "reqwest 0.12.28", "reth-chainspec", "reth-codecs", "reth-config", @@ -9192,7 +12179,7 @@ dependencies = [ [[package]] name = "reth-stages-api" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-eips", "alloy-primitives", @@ -9219,7 +12206,7 @@ dependencies = [ [[package]] name = "reth-stages-types" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-primitives", "arbitrary", @@ -9233,7 +12220,7 @@ dependencies = [ [[package]] name = "reth-static-file" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-primitives", "parking_lot", @@ -9253,7 +12240,7 @@ dependencies = [ [[package]] name = "reth-static-file-types" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-primitives", "clap", @@ -9266,7 +12253,7 @@ dependencies = [ [[package]] name = "reth-storage-api" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-consensus", "alloy-eips", @@ -9290,7 +12277,7 @@ dependencies = [ [[package]] name = "reth-storage-errors" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-eips", "alloy-primitives", @@ -9307,7 +12294,7 @@ dependencies = [ [[package]] name = "reth-tasks" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "auto_impl", "dyn-clone", @@ -9325,7 +12312,7 @@ dependencies = [ [[package]] name = "reth-testing-utils" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-consensus", "alloy-eips", @@ -9341,7 +12328,7 @@ dependencies = [ [[package]] name = "reth-tokio-util" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "tokio", "tokio-stream", @@ -9351,7 +12338,7 @@ dependencies = [ [[package]] name = "reth-tracing" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "clap", "eyre", @@ -9370,17 +12357,17 @@ dependencies = [ [[package]] name = "reth-tracing-otlp" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "clap", "eyre", - "opentelemetry", + "opentelemetry 0.31.0", "opentelemetry-appender-tracing", - "opentelemetry-otlp", + "opentelemetry-otlp 0.31.0", "opentelemetry-semantic-conventions", - "opentelemetry_sdk", + "opentelemetry_sdk 0.31.0", "tracing", - "tracing-opentelemetry", + "tracing-opentelemetry 0.32.1", "tracing-subscriber 0.3.22", "url", ] @@ -9388,7 +12375,7 @@ dependencies = [ [[package]] name = "reth-transaction-pool" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-consensus", "alloy-eips", @@ -9434,7 +12421,7 @@ dependencies = [ [[package]] name = "reth-trie" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-consensus", "alloy-eips", @@ -9460,7 +12447,7 @@ dependencies = [ [[package]] name = "reth-trie-common" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-consensus", "alloy-primitives", @@ -9487,7 +12474,7 @@ dependencies = [ [[package]] name = "reth-trie-db" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-primitives", "metrics", @@ -9507,7 +12494,7 @@ dependencies = [ [[package]] name = "reth-trie-parallel" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-primitives", "alloy-rlp", @@ -9533,7 +12520,7 @@ dependencies = [ [[package]] name = "reth-trie-sparse" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-primitives", "alloy-rlp", @@ -9552,7 +12539,7 @@ dependencies = [ [[package]] name = "reth-trie-sparse-parallel" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "alloy-primitives", "alloy-rlp", @@ -9570,7 +12557,7 @@ dependencies = [ [[package]] name = "reth-zstd-compressors" version = "1.10.2" -source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce9d09b925ebbce7bdf213d04c402e124c#b3d532ce9d09b925ebbce7bdf213d04c402e124c" +source = "git+https://github.com/paradigmxyz/reth?rev=b3d532ce#b3d532ce9d09b925ebbce7bdf213d04c402e124c" dependencies = [ "zstd", ] @@ -9753,6 +12740,7 @@ dependencies = [ "blst", "c-kzg", "cfg-if", + "gmp-mpfr-sys", "k256", "p256", "revm-primitives", @@ -9816,6 +12804,12 @@ version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3df6368f71f205ff9c33c076d170dd56ebf68e8161c733c0caa07a7a5509ed53" +[[package]] +name = "ringbuffer" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57b0b88a509053cbfd535726dcaaceee631313cef981266119527a1d110f6d2b" + [[package]] name = "ripemd" version = "0.1.3" @@ -9825,6 +12819,36 @@ dependencies = [ "digest 0.10.7", ] +[[package]] +name = "rkyv" +version = "0.8.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "360b333c61ae24e5af3ae7c8660bd6b21ccd8200dbbc5d33c2454421e85b9c69" +dependencies = [ + "bytecheck", + "bytes", + "hashbrown 0.16.1", + "indexmap 2.13.0", + "munge", + "ptr_meta", + "rancor", + "rend", + "rkyv_derive", + "tinyvec", + "uuid", +] + +[[package]] +name = "rkyv_derive" +version = "0.8.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c02f8cdd12b307ab69fe0acf4cd2249c7460eb89dce64a0febadf934ebb6a9e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + [[package]] name = "rlimit" version = "0.10.2" @@ -9892,6 +12916,87 @@ dependencies = [ "chrono", ] +[[package]] +name = "rollup-boost" +version = "0.7.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76d1d7c635dec67c86346eb871e8a22dd1596c33d4a96a9a4926b4d2fd703b63" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "alloy-rpc-types-engine", + "alloy-rpc-types-eth", + "alloy-serde", + "backoff", + "blake3", + "bytes", + "clap", + "dashmap", + "dotenvy", + "ed25519-dalek", + "eyre", + "futures", + "hex", + "http", + "http-body-util", + "hyper", + "hyper-rustls", + "hyper-util", + "jsonrpsee", + "lru 0.16.3", + "metrics", + "metrics-derive", + "metrics-exporter-prometheus 0.16.2", + "metrics-util 0.19.1", + "moka", + "op-alloy-rpc-types-engine", + "opentelemetry 0.28.0", + "opentelemetry-otlp 0.28.0", + "opentelemetry_sdk 0.28.0", + "parking_lot", + "paste", + "rollup-boost-types", + "rustls", + "serde", + "serde_json", + "sha2", + "thiserror 2.0.18", + "tokio", + "tokio-tungstenite 0.26.2", + "tokio-util", + "tower 0.5.3", + "tower-http", + "tracing", + "tracing-opentelemetry 0.29.0", + "tracing-subscriber 0.3.22", + "url", + "uuid", + "vergen", + "vergen-git2", +] + +[[package]] +name = "rollup-boost-types" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "756f32c7f241ab6d91d823e94d20f6e0729bfcaec3b545bd30f33b24e50f5821" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "alloy-rpc-types-engine", + "alloy-rpc-types-eth", + "alloy-serde", + "blake3", + "ed25519-dalek", + "futures", + "moka", + "op-alloy-rpc-types-engine", + "serde", + "serde_json", + "thiserror 2.0.18", + "tracing", +] + [[package]] name = "route-recognizer" version = "0.3.1" @@ -9900,21 +13005,20 @@ checksum = "afab94fb28594581f62d981211a9a4d53cc8130bbcbbb89a0440d9b8e81a7746" [[package]] name = "rstest" -version = "0.24.0" +version = "0.26.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03e905296805ab93e13c1ec3a03f4b6c4f35e9498a3d5fa96dc626d22c03cd89" +checksum = "f5a3193c063baaa2a95a33f03035c8a72b83d97a54916055ba22d35ed3839d49" dependencies = [ "futures-timer", "futures-util", "rstest_macros", - "rustc_version 0.4.1", ] [[package]] name = "rstest_macros" -version = "0.24.0" +version = "0.26.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef0053bbffce09062bee4bcc499b0fbe7a57b879f1efe088d6d8d4c7adcdef9b" +checksum = "9c845311f0ff7951c5506121a9ad75aec44d083c31583b2ea5a30bcb0b0abba0" dependencies = [ "cfg-if", "glob", @@ -9928,6 +13032,24 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "rtnetlink" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a552eb82d19f38c3beed3f786bd23aa434ceb9ac43ab44419ca6d67a7e186c0" +dependencies = [ + "futures", + "log", + "netlink-packet-core", + "netlink-packet-route", + "netlink-packet-utils", + "netlink-proto", + "netlink-sys", + "nix", + "thiserror 1.0.69", + "tokio", +] + [[package]] name = "ruint" version = "1.17.2" @@ -10011,6 +13133,15 @@ dependencies = [ "semver 1.0.27", ] +[[package]] +name = "rusticata-macros" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "faf0c4a6ece9950b9abdb62b1cfcf2a68b3b67a10ba445b3bb85be2a293d0632" +dependencies = [ + "nom", +] + [[package]] name = "rustix" version = "0.38.44" @@ -10043,6 +13174,7 @@ version = "0.23.36" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c665f33d38cea657d9614f766881e4d510e0eda4239891eea56b4cadcf01801b" dependencies = [ + "aws-lc-rs", "log", "once_cell", "ring", @@ -10058,10 +13190,10 @@ version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "612460d5f7bea540c490b2b6395d8e34a953e52b491accd6c86c8164c5932a63" dependencies = [ - "openssl-probe", + "openssl-probe 0.2.1", "rustls-pki-types", "schannel", - "security-framework", + "security-framework 3.5.1", ] [[package]] @@ -10080,7 +13212,7 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "19787cda76408ec5404443dc8b31795c87cd8fec49762dc75fa727740d34acc1" dependencies = [ - "core-foundation", + "core-foundation 0.10.1", "core-foundation-sys", "jni", "log", @@ -10089,7 +13221,7 @@ dependencies = [ "rustls-native-certs", "rustls-platform-verifier-android", "rustls-webpki", - "security-framework", + "security-framework 3.5.1", "security-framework-sys", "webpki-root-certs 0.26.11", "windows-sys 0.59.0", @@ -10107,6 +13239,7 @@ version = "0.103.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d7df23109aa6c1567d1c575b9952556388da57401e4ace1d15f79eedad0d8f53" dependencies = [ + "aws-lc-rs", "ring", "rustls-pki-types", "untrusted", @@ -10130,6 +13263,17 @@ dependencies = [ "wait-timeout", ] +[[package]] +name = "rw-stream-sink" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8c9026ff5d2f23da5e45bbc283f156383001bfb09c4e44256d02c1a685fe9a1" +dependencies = [ + "futures", + "pin-project", + "static_assertions", +] + [[package]] name = "ryu" version = "1.0.22" @@ -10174,9 +13318,9 @@ dependencies = [ [[package]] name = "schemars" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54e910108742c57a770f492731f99be216a52fadd361b06c8fb59d74ccc267d2" +checksum = "a2b42f36aa1cd011945615b92222f6bf73c599a102a300334cd7f8dbeec726cc" dependencies = [ "dyn-clone", "ref-cast", @@ -10243,6 +13387,7 @@ dependencies = [ "bitcoin_hashes", "rand 0.9.2", "secp256k1-sys 0.11.0", + "serde", ] [[package]] @@ -10263,6 +13408,19 @@ dependencies = [ "cc", ] +[[package]] +name = "security-framework" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" +dependencies = [ + "bitflags 2.10.0", + "core-foundation 0.9.4", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + [[package]] name = "security-framework" version = "3.5.1" @@ -10270,7 +13428,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b3297343eaf830f66ede390ea39da1d462b6b0c1b000f420d0a83f898bbbe6ef" dependencies = [ "bitflags 2.10.0", - "core-foundation", + "core-foundation 0.10.1", "core-foundation-sys", "libc", "security-framework-sys", @@ -10385,6 +13543,27 @@ dependencies = [ "zmij", ] +[[package]] +name = "serde_regex" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8136f1a4ea815d7eac4101cfd0b16dc0cb5e1fe1b8609dfd728058656b7badf" +dependencies = [ + "regex", + "serde", +] + +[[package]] +name = "serde_repr" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + [[package]] name = "serde_spanned" version = "0.6.9" @@ -10394,6 +13573,15 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_spanned" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8bbf91e5a4d6315eee45e704372590b30e260ee83af6639d64557f51b067776" +dependencies = [ + "serde_core", +] + [[package]] name = "serde_urlencoded" version = "0.7.1" @@ -10418,7 +13606,7 @@ dependencies = [ "indexmap 1.9.3", "indexmap 2.13.0", "schemars 0.9.0", - "schemars 1.2.0", + "schemars 1.2.1", "serde_core", "serde_json", "serde_with_macros", @@ -10560,6 +13748,33 @@ version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" +[[package]] +name = "simdutf8" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" + +[[package]] +name = "similar" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbbb5d9659141646ae647b42fe094daf6c6192d1620870b449d9557f748b2daa" +dependencies = [ + "bstr", + "unicode-segmentation", +] + +[[package]] +name = "similar-asserts" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5b441962c817e33508847a22bd82f03a30cff43642dc2fae8b050566121eb9a" +dependencies = [ + "console", + "serde", + "similar", +] + [[package]] name = "simple_asn1" version = "0.6.3" @@ -10586,9 +13801,9 @@ checksum = "c1e9a774a6c28142ac54bb25d25562e6bcf957493a184f15ad4eebccb23e410a" [[package]] name = "slab" -version = "0.4.11" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" [[package]] name = "small_btree" @@ -10615,6 +13830,23 @@ version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b6b67fb9a61334225b5b790716f609cd58395f895b3fe8b328786812a40bc3b" +[[package]] +name = "snow" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "850948bee068e713b8ab860fe1adc4d109676ab4c3b621fd8147f06b261f2f85" +dependencies = [ + "aes-gcm", + "blake2", + "chacha20poly1305", + "curve25519-dalek", + "rand_core 0.6.4", + "ring", + "rustc_version 0.4.1", + "sha2", + "subtle", +] + [[package]] name = "socket2" version = "0.5.10" @@ -10651,6 +13883,21 @@ dependencies = [ "sha1", ] +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" + +[[package]] +name = "spin" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5fe4ccb98d9c292d56fec89a5e07da7fc4cf0dc11e156b41793132775d3e591" +dependencies = [ + "lock_api", +] + [[package]] name = "spki" version = "0.7.3" @@ -10673,6 +13920,12 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" +[[package]] +name = "stringmetrics" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b3c8667cd96245cbb600b8dec5680a7319edd719c5aa2b5d23c6bff94f39765" + [[package]] name = "strsim" version = "0.11.1" @@ -10763,36 +14016,101 @@ dependencies = [ ] [[package]] -name = "sync_wrapper" -version = "1.0.2" +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] + +[[package]] +name = "synstructure" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "sysinfo" +version = "0.33.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fc858248ea01b66f19d8e8a6d55f41deaf91e9d495246fd01368d99935c6c01" +dependencies = [ + "core-foundation-sys", + "libc", + "memchr", + "ntapi", + "windows 0.57.0", +] + +[[package]] +name = "system-configuration" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" +dependencies = [ + "bitflags 2.10.0", + "core-foundation 0.9.4", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a13f3d0daba03132c0aa9767f98351b3488edc2c100cda2d2ec2b04f3d8d3c8b" +dependencies = [ + "bitflags 2.10.0", + "core-foundation 0.9.4", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "tabled" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +checksum = "e39a2ee1fbcd360805a771e1b300f78cc88fec7b8d3e2f71cd37bbf23e725c7d" dependencies = [ - "futures-core", + "papergrid", + "tabled_derive", + "testing_table", ] [[package]] -name = "synstructure" -version = "0.13.2" +name = "tabled_derive" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +checksum = "0ea5d1b13ca6cff1f9231ffd62f15eefd72543dab5e468735f1a456728a02846" dependencies = [ + "heck", + "proc-macro-error2", "proc-macro2", "quote", "syn 2.0.114", ] [[package]] -name = "sysinfo" -version = "0.33.1" +name = "tabwriter" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fc858248ea01b66f19d8e8a6d55f41deaf91e9d495246fd01368d99935c6c01" +checksum = "fce91f2f0ec87dff7e6bcbbeb267439aa1188703003c6055193c821487400432" dependencies = [ - "core-foundation-sys", - "libc", - "memchr", - "ntapi", - "windows 0.57.0", + "unicode-width 0.2.0", ] [[package]] @@ -10826,9 +14144,9 @@ dependencies = [ [[package]] name = "tar-no-std" -version = "0.3.5" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac9ee8b664c9f1740cd813fea422116f8ba29997bb7c878d1940424889802897" +checksum = "715f9a4586706a61c571cb5ee1c3ac2bbb2cf63e15bce772307b95befef5f5ee" dependencies = [ "bitflags 2.10.0", "log", @@ -10848,6 +14166,12 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "termtree" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f50febec83f5ee1df3015341d8bd429f2d1cc62bcba7ea2076759d315084683" + [[package]] name = "test-case" version = "3.3.1" @@ -10881,6 +14205,15 @@ dependencies = [ "test-case-core", ] +[[package]] +name = "testing_table" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f8daae29995a24f65619e19d8d31dea5b389f3d853d8bf297bbf607cd0014cc" +dependencies = [ + "unicode-width 0.2.0", +] + [[package]] name = "thin-vec" version = "0.2.14" @@ -10978,9 +14311,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.46" +version = "0.3.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9da98b7d9b7dad93488a84b8248efc35352b0b2657397d4167e7ad67e5d535e5" +checksum = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c" dependencies = [ "deranged", "itoa", @@ -11002,9 +14335,9 @@ checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca" [[package]] name = "time-macros" -version = "0.2.26" +version = "0.2.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78cc610bac2dcee56805c99642447d4c5dbde4d01f752ffea0199aee1f601dc4" +checksum = "2e70e4c5a0e0a8a4823ad65dfe1a6930e4f4d756dcd9dd7939022b5e8c501215" dependencies = [ "num-conv", "time-core", @@ -11021,6 +14354,16 @@ dependencies = [ "zerovec", ] +[[package]] +name = "tinytemplate" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc" +dependencies = [ + "serde", + "serde_json", +] + [[package]] name = "tinyvec" version = "1.10.0" @@ -11064,6 +14407,16 @@ dependencies = [ "syn 2.0.114", ] +[[package]] +name = "tokio-native-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +dependencies = [ + "native-tls", + "tokio", +] + [[package]] name = "tokio-rustls" version = "0.26.4" @@ -11094,15 +14447,33 @@ checksum = "7a9daff607c6d2bf6c16fd681ccb7eecc83e4e2cdc1ca067ffaadfca5de7f084" dependencies = [ "futures-util", "log", + "native-tls", "rustls", "rustls-native-certs", "rustls-pki-types", "tokio", + "tokio-native-tls", "tokio-rustls", - "tungstenite", + "tungstenite 0.26.2", "webpki-roots 0.26.11", ] +[[package]] +name = "tokio-tungstenite" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d25a406cddcc431a75d3d9afc6a7c0f7428d4891dd973e4d54c56b46127bf857" +dependencies = [ + "futures-util", + "log", + "rustls", + "rustls-native-certs", + "rustls-pki-types", + "tokio", + "tokio-rustls", + "tungstenite 0.28.0", +] + [[package]] name = "tokio-util" version = "0.7.18" @@ -11125,11 +14496,26 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" dependencies = [ "serde", - "serde_spanned", + "serde_spanned 0.6.9", "toml_datetime 0.6.11", "toml_edit 0.22.27", ] +[[package]] +name = "toml" +version = "0.9.11+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3afc9a848309fe1aaffaed6e1546a7a14de1f935dc9d89d32afd9a44bab7c46" +dependencies = [ + "indexmap 2.13.0", + "serde_core", + "serde_spanned 1.0.4", + "toml_datetime 0.7.5+spec-1.1.0", + "toml_parser", + "toml_writer", + "winnow", +] + [[package]] name = "toml_datetime" version = "0.6.11" @@ -11156,7 +14542,7 @@ checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" dependencies = [ "indexmap 2.13.0", "serde", - "serde_spanned", + "serde_spanned 0.6.9", "toml_datetime 0.6.11", "toml_write", "winnow", @@ -11189,6 +14575,42 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" +[[package]] +name = "toml_writer" +version = "1.0.6+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab16f14aed21ee8bfd8ec22513f7287cd4a91aa92e44edfe2c17ddd004e92607" + +[[package]] +name = "tonic" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877c5b330756d856ffcc4553ab34a5684481ade925ecc54bcd1bf02b1d0d4d52" +dependencies = [ + "async-stream", + "async-trait", + "axum", + "base64 0.22.1", + "bytes", + "h2", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-timeout", + "hyper-util", + "percent-encoding", + "pin-project", + "prost 0.13.5", + "socket2 0.5.10", + "tokio", + "tokio-stream", + "tower 0.4.13", + "tower-layer", + "tower-service", + "tracing", +] + [[package]] name = "tonic" version = "0.14.3" @@ -11209,7 +14631,7 @@ dependencies = [ "sync_wrapper", "tokio", "tokio-stream", - "tower", + "tower 0.5.3", "tower-layer", "tower-service", "tracing", @@ -11223,7 +14645,27 @@ checksum = "d6c55a2d6a14174563de34409c9f92ff981d006f56da9c6ecd40d9d4a31500b0" dependencies = [ "bytes", "prost 0.14.3", - "tonic", + "tonic 0.14.3", +] + +[[package]] +name = "tower" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +dependencies = [ + "futures-core", + "futures-util", + "indexmap 1.9.3", + "pin-project", + "pin-project-lite", + "rand 0.8.5", + "slab", + "tokio", + "tokio-util", + "tower-layer", + "tower-service", + "tracing", ] [[package]] @@ -11270,7 +14712,7 @@ dependencies = [ "pin-project-lite", "tokio", "tokio-util", - "tower", + "tower 0.5.3", "tower-layer", "tower-service", "tracing", @@ -11378,6 +14820,24 @@ dependencies = [ "tracing-subscriber 0.3.22", ] +[[package]] +name = "tracing-opentelemetry" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "721f2d2569dce9f3dfbbddee5906941e953bfcdf736a62da3377f5751650cc36" +dependencies = [ + "js-sys", + "once_cell", + "opentelemetry 0.28.0", + "opentelemetry_sdk 0.28.0", + "smallvec", + "tracing", + "tracing-core", + "tracing-log", + "tracing-subscriber 0.3.22", + "web-time", +] + [[package]] name = "tracing-opentelemetry" version = "0.32.1" @@ -11385,7 +14845,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1ac28f2d093c6c477eaa76b23525478f38de514fa9aeb1285738d4b97a9552fc" dependencies = [ "js-sys", - "opentelemetry", + "opentelemetry 0.31.0", "smallvec", "tracing", "tracing-core", @@ -11529,6 +14989,26 @@ name = "tungstenite" version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4793cb5e56680ecbb1d843515b23b6de9a75eb04b66643e256a396d43be33c13" +dependencies = [ + "bytes", + "data-encoding", + "http", + "httparse", + "log", + "native-tls", + "rand 0.9.2", + "rustls", + "rustls-pki-types", + "sha1", + "thiserror 2.0.18", + "utf-8", +] + +[[package]] +name = "tungstenite" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8628dcc84e5a09eb3d8423d6cb682965dea9133204e8fb3efee74c2a0c259442" dependencies = [ "bytes", "data-encoding", @@ -11648,6 +15128,12 @@ dependencies = [ "subtle", ] +[[package]] +name = "unsigned-varint" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6889a77d49f1f013504cec6bf97a2c730394adedaeb1deb5ea08949a50541105" + [[package]] name = "unsigned-varint" version = "0.8.0" @@ -11660,6 +15146,12 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" +[[package]] +name = "unty" +version = "0.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d49784317cd0d1ee7ec5c716dd598ec5b4483ea832a2dced265471cc0f690ae" + [[package]] name = "url" version = "2.5.8" @@ -11767,6 +15259,12 @@ version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" +[[package]] +name = "virtue" +version = "0.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "051eb1abcf10076295e815102942cc58f9d5e3b4560e46e53c21e8ff6f3af7b1" + [[package]] name = "visibility" version = "0.1.1" @@ -12000,6 +15498,16 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "windows" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efc5cf48f83140dcaab716eeaea345f9e93d0018fb81162753a3f76c3397b538" +dependencies = [ + "windows-core 0.53.0", + "windows-targets 0.52.6", +] + [[package]] name = "windows" version = "0.57.0" @@ -12031,6 +15539,16 @@ dependencies = [ "windows-core 0.62.2", ] +[[package]] +name = "windows-core" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dcc5b895a6377f1ab9fa55acedab1fd5ac0db66ad1e6c7f47e28a22e446a5dd" +dependencies = [ + "windows-result 0.1.2", + "windows-targets 0.52.6", +] + [[package]] name = "windows-core" version = "0.57.0" @@ -12127,6 +15645,17 @@ dependencies = [ "windows-link", ] +[[package]] +name = "windows-registry" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02752bf7fbdcce7f2a27a742f798510f3e5ad88dbe84871e5168e2120c3d5720" +dependencies = [ + "windows-link", + "windows-result 0.4.1", + "windows-strings", +] + [[package]] name = "windows-result" version = "0.1.2" @@ -12525,6 +16054,35 @@ dependencies = [ "tap", ] +[[package]] +name = "x25519-dalek" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7e468321c81fb07fa7f4c636c3972b9100f0346e5b6a9f2bd0603a52f7ed277" +dependencies = [ + "curve25519-dalek", + "rand_core 0.6.4", + "serde", + "zeroize", +] + +[[package]] +name = "x509-parser" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4569f339c0c402346d4a75a9e39cf8dad310e287eef1ff56d4c68e5067f53460" +dependencies = [ + "asn1-rs", + "data-encoding", + "der-parser", + "lazy_static", + "nom", + "oid-registry", + "rusticata-macros", + "thiserror 2.0.18", + "time", +] + [[package]] name = "xattr" version = "1.6.1" @@ -12535,18 +16093,73 @@ dependencies = [ "rustix 1.1.3", ] +[[package]] +name = "xml-rs" +version = "0.8.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ae8337f8a065cfc972643663ea4279e04e7256de865aa66fe25cec5fb912d3f" + +[[package]] +name = "xmltree" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7d8a75eaf6557bb84a65ace8609883db44a29951042ada9b393151532e41fcb" +dependencies = [ + "xml-rs", +] + [[package]] name = "xsum" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0637d3a5566a82fa5214bae89087bc8c9fb94cd8e8a3c07feb691bb8d9c632db" +[[package]] +name = "yamux" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed0164ae619f2dc144909a9f082187ebb5893693d8c0196e8085283ccd4b776" +dependencies = [ + "futures", + "log", + "nohash-hasher", + "parking_lot", + "pin-project", + "rand 0.8.5", + "static_assertions", +] + +[[package]] +name = "yamux" +version = "0.13.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "deab71f2e20691b4728b349c6cee8fc7223880fa67b6b4f92225ec32225447e5" +dependencies = [ + "futures", + "log", + "nohash-hasher", + "parking_lot", + "pin-project", + "rand 0.9.2", + "static_assertions", + "web-time", +] + [[package]] name = "yansi" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" +[[package]] +name = "yasna" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e17bb3549cc1321ae1296b9cdc2698e2b6cb1992adfa19a8c72e5b7a738f44cd" +dependencies = [ + "time", +] + [[package]] name = "yoke" version = "0.8.1" @@ -12667,9 +16280,9 @@ dependencies = [ [[package]] name = "zmij" -version = "1.0.17" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02aae0f83f69aafc94776e879363e9771d7ecbffe2c7fbb6c14c5e00dfe88439" +checksum = "3ff05f8caa9038894637571ae6b9e29466c1f4f829d26c9b28f869a29cbe3445" [[package]] name = "zstd" diff --git a/rust/Cargo.toml b/rust/Cargo.toml new file mode 100644 index 0000000000000..086b8a5b1907b --- /dev/null +++ b/rust/Cargo.toml @@ -0,0 +1,667 @@ +[workspace.package] +edition = "2024" +license = "MIT OR Apache-2.0" +rust-version = "1.88" +authors = ["Op Stack Contributors"] +homepage = "https://github.com/ethereum-optimism/optimism" +repository = "https://github.com/ethereum-optimism/optimism" +exclude = ["**/target"] +keywords = ["ethereum", "optimism", "crypto"] +categories = ["cryptography", "cryptography::cryptocurrencies"] + +[workspace] +resolver = "2" +members = [ + # Kona + "kona/bin/*", + "kona/crates/proof/*", + "kona/crates/node/*", + "kona/crates/supervisor/*", + "kona/crates/protocol/*", + "kona/crates/batcher/*", + "kona/crates/providers/*", + "kona/crates/utilities/*", + "kona/examples/*", + + # Op-Alloy + "op-alloy/crates/*", + + # Op-Reth + "op-reth/bin/", + "op-reth/crates/chainspec/", + "op-reth/crates/cli/", + "op-reth/crates/consensus/", + "op-reth/crates/evm/", + "op-reth/crates/flashblocks/", + "op-reth/crates/hardforks/", + "op-reth/crates/node/", + "op-reth/crates/payload/", + "op-reth/crates/primitives/", + "op-reth/crates/reth/", + "op-reth/crates/rpc/", + "op-reth/crates/storage/", + "op-reth/crates/txpool/", + "op-reth/examples/*", + + # Alloy OP EVM + "alloy-op-evm/", + + # Alloy OP Hardforks + "alloy-op-hardforks/", +] +default-members = [ + "kona/bin/host", + "kona/bin/client", + "kona/bin/node", + "kona/bin/supervisor", + "op-reth/bin/", +] + +# ==================== WORKSPACE METADATA ==================== +[workspace.metadata.cargo-udeps.ignore] +normal = ["rustls-platform-verifier"] + +[workspace.metadata.docs.rs] +all-features = true +rustdoc-args = ["--cfg", "docsrs"] + +# ==================== WORKSPACE LINTS ==================== +[workspace.lints.rust] +missing-debug-implementations = "warn" +missing-docs = "warn" +unreachable-pub = "warn" +unused-must-use = "deny" +rust-2018-idioms = { level = "deny", priority = -1 } +unnameable-types = "warn" +rust-2024-incompatible-pat = "warn" + +[workspace.lints.rustdoc] +all = "warn" + +[workspace.lints.clippy] +# warn-level lints +all = { level = "warn", priority = -1 } +borrow_as_ptr = "warn" +branches_sharing_code = "warn" +clear_with_drain = "warn" +cloned_instead_of_copied = "warn" +collection_is_never_read = "warn" +dbg_macro = "warn" +derive_partial_eq_without_eq = "warn" +doc_markdown = "warn" +empty_line_after_doc_comments = "warn" +empty_line_after_outer_attr = "warn" +enum_glob_use = "warn" +equatable_if_let = "warn" +explicit_into_iter_loop = "warn" +explicit_iter_loop = "warn" +flat_map_option = "warn" +from_iter_instead_of_collect = "warn" +if_not_else = "warn" +if_then_some_else_none = "warn" +implicit_clone = "warn" +imprecise_flops = "warn" +iter_on_empty_collections = "warn" +iter_on_single_items = "warn" +iter_with_drain = "warn" +iter_without_into_iter = "warn" +large_stack_frames = "warn" +manual_assert = "warn" +manual_clamp = "warn" +manual_is_variant_and = "warn" +manual_string_new = "warn" +match_same_arms = "warn" +missing-const-for-fn = "warn" +mutex_integer = "warn" +naive_bytecount = "warn" +needless_bitwise_bool = "warn" +needless_continue = "warn" +needless_for_each = "warn" +needless_pass_by_ref_mut = "warn" +nonstandard_macro_braces = "warn" +option_as_ref_cloned = "warn" +option-if-let-else = "warn" +or_fun_call = "warn" +path_buf_push_overwrite = "warn" +read_zero_byte_vec = "warn" +redundant-clone = "warn" +redundant_else = "warn" +single_char_pattern = "warn" +string_lit_as_bytes = "warn" +string_lit_chars_any = "warn" +suboptimal_flops = "warn" +suspicious_operation_groupings = "warn" +trailing_empty_array = "warn" +trait_duplication_in_bounds = "warn" +transmute_undefined_repr = "warn" +trivial_regex = "warn" +tuple_array_conversions = "warn" +type_repetition_in_bounds = "warn" +uninhabited_references = "warn" +unnecessary_self_imports = "warn" +unnecessary_struct_initialization = "warn" +unnested_or_patterns = "warn" +unused_peekable = "warn" +unused_rounding = "warn" +use-self = "warn" +useless_let_if_seq = "warn" +while_float = "warn" +zero_sized_map_values = "warn" + +# allow-level lints +as_ptr_cast_mut = "allow" +cognitive_complexity = "allow" +debug_assert_with_mut_call = "allow" +fallible_impl_from = "allow" +future_not_send = "allow" +needless_collect = "allow" +non_send_fields_in_send_ty = "allow" +redundant_pub_crate = "allow" +result_large_err = "allow" +significant_drop_in_scrutinee = "allow" +significant_drop_tightening = "allow" +too_long_first_doc_paragraph = "allow" + +# ==================== PROFILES ==================== +[profile.dev] +opt-level = 1 +overflow-checks = false +debug = "line-tables-only" +split-debuginfo = "unpacked" + +[profile.dev.package] +proptest.opt-level = 3 +rand_chacha.opt-level = 3 +rand_xorshift.opt-level = 3 +unarray.opt-level = 3 + +[profile.bench] +debug = true + +[profile.dev-client] +inherits = "dev" +panic = "abort" + +[profile.release] +opt-level = 3 +lto = "thin" +debug = "none" +strip = "symbols" +panic = "unwind" +codegen-units = 16 + +[profile.release-client-lto] +inherits = "release" +panic = "abort" +codegen-units = 1 +lto = "fat" +strip = "none" # cannon load-elf requires the symbol section + +[profile.release-perf] +inherits = "release" +lto = "fat" +codegen-units = 1 + +[profile.hivetests] +inherits = "test" +opt-level = 3 +lto = "thin" + +[profile.profiling] +inherits = "release" +debug = "full" +strip = "none" + +[profile.maxperf] +inherits = "release" +lto = "fat" +codegen-units = 1 + +[profile.reproducible] +inherits = "release" +panic = "abort" +codegen-units = 1 +incremental = false + +# ==================== WORKSPACE DEPENDENCIES ==================== +[workspace.dependencies] +# ==================== KONA INTERNAL CRATES ==================== +# Binaries +kona-host = { path = "kona/bin/host", version = "1.0.2", default-features = false } +kona-client = { path = "kona/bin/client", version = "1.0.2", default-features = false } + +# Protocol +kona-comp = { path = "kona/crates/batcher/comp", version = "0.4.5", default-features = false } +kona-derive = { path = "kona/crates/protocol/derive", version = "0.4.5", default-features = false } +kona-interop = { path = "kona/crates/protocol/interop", version = "0.4.5", default-features = false } +kona-genesis = { path = "kona/crates/protocol/genesis", version = "0.4.5", default-features = false } +kona-protocol = { path = "kona/crates/protocol/protocol", version = "0.4.5", default-features = false } +kona-registry = { path = "kona/crates/protocol/registry", version = "0.4.5", default-features = false } +kona-hardforks = { path = "kona/crates/protocol/hardforks", version = "0.4.5", default-features = false } + +# Node +kona-rpc = { path = "kona/crates/node/rpc", version = "0.3.2", default-features = false } +kona-peers = { path = "kona/crates/node/peers", version = "0.1.2", default-features = false } +kona-engine = { path = "kona/crates/node/engine", version = "0.1.2", default-features = false } +kona-sources = { path = "kona/crates/node/sources", version = "0.1.2", default-features = false } +kona-node-service = { path = "kona/crates/node/service", version = "0.1.3", default-features = false } +kona-disc = { path = "kona/crates/node/disc", version = "0.1.2", default-features = false } +kona-gossip = { path = "kona/crates/node/gossip", version = "0.1.2", default-features = false } + +# Supervisor +kona-supervisor-rpc = { path = "kona/crates/supervisor/rpc", version = "0.1.1", default-features = false } +kona-supervisor-core = { path = "kona/crates/supervisor/core", version = "0.1.0", default-features = false } +kona-supervisor-service = { path = "kona/crates/supervisor/service", version = "0.1.0", default-features = false } +kona-supervisor-types = { path = "kona/crates/supervisor/types", version = "0.1.1", default-features = false } +kona-supervisor-storage = { path = "kona/crates/supervisor/storage", version = "0.1.0", default-features = false } +kona-supervisor-metrics = { path = "kona/crates/supervisor/metrics", version = "0.1.0", default-features = false } + +# Providers +kona-providers-alloy = { path = "kona/crates/providers/providers-alloy", version = "0.3.3", default-features = false } +kona-providers-local = { path = "kona/crates/providers/providers-local", version = "0.1.0", default-features = false } + +# Proof +kona-driver = { path = "kona/crates/proof/driver", version = "0.4.0", default-features = false } +kona-mpt = { path = "kona/crates/proof/mpt", version = "0.3.0", default-features = false } +kona-proof = { path = "kona/crates/proof/proof", version = "0.3.0", default-features = false } +kona-executor = { path = "kona/crates/proof/executor", version = "0.4.0", default-features = false } +kona-std-fpvm = { path = "kona/crates/proof/std-fpvm", version = "0.2.0", default-features = false } +kona-preimage = { path = "kona/crates/proof/preimage", version = "0.3.0", default-features = false } +kona-std-fpvm-proc = { path = "kona/crates/proof/std-fpvm-proc", version = "0.2.0", default-features = false } +kona-proof-interop = { path = "kona/crates/proof/proof-interop", version = "0.2.0", default-features = false } + +# Utilities +kona-cli = { path = "kona/crates/utilities/cli", version = "0.3.2", default-features = false } +kona-serde = { path = "kona/crates/utilities/serde", version = "0.2.2", default-features = false } +kona-macros = { path = "kona/crates/utilities/macros", version = "0.1.2", default-features = false } + +# ==================== OP-RETH INTERNAL CRATES ==================== +op-reth = { path = "op-reth/bin/" } +reth-optimism-chainspec = { path = "op-reth/crates/chainspec/", default-features = false } +reth-optimism-cli = { path = "op-reth/crates/cli/", default-features = false } +reth-optimism-consensus = { path = "op-reth/crates/consensus/", default-features = false } +reth-optimism-evm = { path = "op-reth/crates/evm/", default-features = false } +reth-optimism-flashblocks = { path = "op-reth/crates/flashblocks/" } +reth-optimism-forks = { path = "op-reth/crates/hardforks/", default-features = false } +reth-optimism-node = { path = "op-reth/crates/node/" } +reth-optimism-payload-builder = { path = "op-reth/crates/payload/" } +reth-optimism-primitives = { path = "op-reth/crates/primitives/", default-features = false } +reth-op = { path = "op-reth/crates/reth/", default-features = false } +reth-optimism-rpc = { path = "op-reth/crates/rpc/" } +reth-optimism-storage = { path = "op-reth/crates/storage/" } +reth-optimism-txpool = { path = "op-reth/crates/txpool/" } + +# ==================== OP-ALLOY INTERNAL CRATES ==================== +op-alloy-consensus = { version = "0.23.1", path = "op-alloy/crates/consensus", default-features = false } +op-alloy-network = { version = "0.23.1", path = "op-alloy/crates/network", default-features = false } +op-alloy-provider = { version = "0.23.1", path = "op-alloy/crates/provider", default-features = false } +op-alloy-rpc-types = { version = "0.23.1", path = "op-alloy/crates/rpc-types", default-features = false } +op-alloy-rpc-types-engine = { version = "0.23.1", path = "op-alloy/crates/rpc-types-engine", default-features = false } +op-alloy-rpc-jsonrpsee = { version = "0.23.1", path = "op-alloy/crates/rpc-jsonrpsee", default-features = false } + +# ==================== ALLOY-OP-EVM / ALLOY-OP-HARDFORKS ==================== +alloy-op-evm = { version = "0.26.3", path = "alloy-op-evm/", default-features = false } +alloy-op-hardforks = { version = "0.4.7", path = "alloy-op-hardforks/", default-features = false } + +# ==================== RETH CRATES (from git rev b3d532ce / main) ==================== +reth = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce" } +reth-basic-payload-builder = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce" } +reth-chain-state = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce" } +reth-chainspec = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce", default-features = false } +reth-cli = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce" } +reth-cli-commands = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce" } +reth-cli-runner = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce" } +reth-cli-util = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce" } +reth-codecs = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce" } +reth-consensus = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce", default-features = false } +reth-consensus-common = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce", default-features = false } +reth-db = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce", default-features = false } +reth-db-api = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce" } +reth-db-common = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce" } +reth-downloaders = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce" } +reth-e2e-test-utils = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce" } +reth-engine-local = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce" } +reth-engine-primitives = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce", default-features = false } +reth-errors = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce" } +reth-eth-wire = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce" } +reth-ethereum = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce" } +reth-ethereum-cli = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce" } +reth-ethereum-consensus = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce" } +reth-ethereum-forks = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce", default-features = false } +reth-ethereum-primitives = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce" } +reth-evm = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce", default-features = false } +reth-evm-ethereum = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce" } +reth-exex = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce" } +reth-execution-errors = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce", default-features = false } +reth-execution-types = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce", default-features = false } +reth-fs-util = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce" } +reth-metrics = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce" } +reth-network = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce" } +reth-network-api = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce" } +reth-network-peers = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce", default-features = false } +reth-node-api = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce" } +reth-node-builder = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce" } +reth-node-core = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce" } +reth-node-ethereum = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce" } +reth-node-events = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce" } +reth-node-metrics = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce" } +reth-payload-builder = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce" } +reth-payload-builder-primitives = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce" } +reth-payload-primitives = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce" } +reth-payload-util = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce" } +reth-payload-validator = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce" } +reth-primitives-traits = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce", default-features = false } +reth-provider = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce" } +reth-prune = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce" } +reth-prune-types = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce", default-features = false } +reth-revm = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce", default-features = false } +reth-rpc = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce" } +reth-rpc-api = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce" } +reth-rpc-builder = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce" } +reth-rpc-engine-api = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce" } +reth-rpc-eth-api = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce" } +reth-rpc-eth-types = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce", default-features = false } +reth-rpc-server-types = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce" } +reth-stages = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce" } +reth-stages-types = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce", default-features = false } +reth-static-file = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce" } +reth-static-file-types = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce", default-features = false } +reth-storage-api = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce", default-features = false } +reth-storage-errors = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce", default-features = false } +reth-tasks = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce" } +reth-tracing = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce", default-features = false } +reth-transaction-pool = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce" } +reth-trie = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce" } +reth-trie-common = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce", default-features = false } +reth-trie-db = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce" } +reth-zstd-compressors = { git = "https://github.com/paradigmxyz/reth", rev = "b3d532ce", default-features = false } + +# ==================== REVM (latest: op-reth versions) ==================== +revm = { version = "34.0.0", default-features = false } +revm-bytecode = { version = "8.0.0", default-features = false } +revm-database = { version = "10.0.0", default-features = false } +revm-state = { version = "9.0.0", default-features = false } +revm-primitives = { version = "22.0.0", default-features = false } +revm-interpreter = { version = "32.0.0", default-features = false } +revm-database-interface = { version = "9.0.0", default-features = false } +op-revm = { version = "15.0.0", default-features = false } +revm-inspectors = "0.34.1" + +# ==================== ALLOY ==================== +alloy-chains = { version = "0.2.30", default-features = false } +alloy-dyn-abi = "1.5.4" +alloy-eip2124 = { version = "0.2.0", default-features = false } +alloy-eip7928 = { version = "0.3.2", default-features = false } +alloy-evm = { version = "0.27.0", default-features = false } +alloy-primitives = { version = "1.5.4", default-features = false, features = [ + "map-foldhash", +] } +alloy-rlp = { version = "0.3.12", default-features = false, features = [ + "core-net", +] } +alloy-sol-macro = "1.5.4" +alloy-sol-types = { version = "1.5.4", default-features = false } +alloy-trie = { version = "0.9.3", default-features = false } + +alloy-hardforks = { version = "0.4.7", default-features = false } + +alloy-consensus = { version = "1.5.2", default-features = false } +alloy-contract = { version = "1.5.2", default-features = false } +alloy-eips = { version = "1.5.2", default-features = false } +alloy-genesis = { version = "1.5.2", default-features = false } +alloy-json-rpc = { version = "1.5.2", default-features = false } +alloy-network = { version = "1.5.2", default-features = false } +alloy-network-primitives = { version = "1.5.2", default-features = false } +alloy-node-bindings = { version = "1.5.2", default-features = false } +alloy-provider = { version = "1.5.2", features = [ + "reqwest", + "debug-api", +], default-features = false } +alloy-pubsub = { version = "1.5.2", default-features = false } +alloy-rpc-client = { version = "1.5.2", default-features = false } +alloy-rpc-types = { version = "1.5.2", features = [ + "eth", +], default-features = false } +alloy-rpc-types-admin = { version = "1.5.2", default-features = false } +alloy-rpc-types-anvil = { version = "1.5.2", default-features = false } +alloy-rpc-types-beacon = { version = "1.5.2", default-features = false } +alloy-rpc-types-debug = { version = "1.5.2", default-features = false } +alloy-rpc-types-engine = { version = "1.5.2", default-features = false } +alloy-rpc-types-eth = { version = "1.5.2", default-features = false } +alloy-rpc-types-mev = { version = "1.5.2", default-features = false } +alloy-rpc-types-trace = { version = "1.5.2", default-features = false } +alloy-rpc-types-txpool = { version = "1.5.2", default-features = false } +alloy-serde = { version = "1.5.2", default-features = false } +alloy-signer = { version = "1.5.2", default-features = false } +alloy-signer-local = { version = "1.5.2", default-features = false } +alloy-transport = { version = "1.5.2" } +alloy-transport-http = { version = "1.5.2", features = [ + "reqwest-rustls-tls", +], default-features = false } +alloy-transport-ipc = { version = "1.5.2", default-features = false } +alloy-transport-ws = { version = "1.5.2", default-features = false } + +# ==================== OP-ALLOY (from crates.io) ==================== +op-alloy = { version = "0.23.1", path = "op-alloy/crates/op-alloy", default-features = false } +op-alloy-flz = { version = "0.13.1", default-features = false } + +# ==================== ASYNC ==================== +async-channel = "2.5" +async-compression = { version = "0.4", default-features = false } +async-stream = "0.3.6" +async-trait = "0.1.89" +futures = "0.3.31" +futures-core = "0.3" +futures-util = { version = "0.3.31", default-features = false } +hyper = "1.8" +hyper-util = "0.1.19" +pin-project = "1.1.10" +tracing-futures = "0.2" +tower = "0.5.3" +tower-http = "0.6" + +# ==================== TOKIO ==================== +tokio = { version = "1.49.0", default-features = false } +tokio-stream = "0.1.18" +tokio-tungstenite = "0.28.0" +tokio-util = { version = "0.7.18", features = ["codec"] } + +# ==================== RPC ==================== +jsonrpsee = { version = "0.26.0", features = [ + "jsonrpsee-core", + "client-core", + "server-core", + "macros", +] } +jsonrpsee-core = "0.26.0" +jsonrpsee-server = "0.26.0" +jsonrpsee-http-client = "0.26.0" +jsonrpsee-types = "0.26.0" + +# ==================== CRYPTO ==================== +c-kzg = { version = "2.1.5", default-features = false } +enr = { version = "0.13", default-features = false } +k256 = { version = "0.13", default-features = false, features = ["ecdsa"] } +sha2 = { version = "0.10.9", default-features = false } +secp256k1 = { version = "0.31.1", default-features = false } +ark-ff = { version = "0.5.0", default-features = false } +ark-bls12-381 = { version = "0.5.0", default-features = false } + +# ==================== SERIALIZATION ==================== +bincode = { version = "2.0.1", features = ["serde"] } +ethereum_ssz = "0.9.1" +ethereum_ssz_derive = "0.9.1" +rkyv = "0.8.14" +serde_repr = "0.1.20" +serde_with = { version = "3.16", default-features = false, features = [ + "macros", +] } +toml = { version = "0.9.11", default-features = false } +serde = { version = "1.0.228", default-features = false, features = [ + "derive", + "alloc", +] } +serde_json = { version = "1.0.149", default-features = false, features = [ + "alloc", +] } + +# ==================== METRICS ==================== +metrics = { version = "0.24.3", default-features = false } +metrics-derive = "0.1" +metrics-exporter-prometheus = { version = "0.18.1", default-features = false } +metrics-process = "2.4.2" +metrics-util = { default-features = false, version = "0.20.1" } +prometheus = { version = "0.14.0", default-features = false } + +# ==================== TRACING ==================== +tracing = { version = "0.1.44", default-features = false } +tracing-appender = "0.2.4" +tracing-loki = "0.2.6" +tracing-subscriber = { version = "0.3.22", default-features = false } + +# ==================== TESTING ==================== +arbitrary = { version = "1.4.2", features = ["derive"] } +arbtest = "0.3.2" +assert_matches = "1.5.0" +criterion = { package = "codspeed-criterion-compat", version = "2.10" } +httpmock = "0.8.2" +insta = "1.46" +mockall = "0.14.0" +pprof = "0.15.0" +proptest = "1.9.0" +proptest-derive = "0.7" +proptest-arbitrary-interop = "0.1.0" +rstest = "0.26.1" +similar-asserts = { version = "1.7.0", features = ["serde"] } +tempfile = "3.24.0" +test-case = "3" +test-fuzz = "7.2.5" + +# ==================== COMPRESSION ==================== +alloc-no-stdlib = "2.0.4" +brotli = { version = "8.0.2", default-features = false } +getrandom = "0.3.4" +lz4 = "1.28.1" +lz4_flex = { version = "0.12", default-features = false } +miniz_oxide = "0.9.0" +snap = "1.1.1" +tar-no-std = { version = "0.4.2", default-features = false } +zstd = "0.13" + +# ==================== NETWORKING ==================== +discv5 = "0.10.2" +ipnet = "2.11.0" +libp2p = "0.56.0" +libp2p-stream = "0.4.0-alpha" +libp2p-identity = "0.2.13" +openssl = "0.10.75" + +# ==================== MISC ==================== +ambassador = "0.5.0" +anyhow = { version = "1.0.100", default-features = false } +aquamarine = "0.6" +arrayvec = { version = "0.7.6", default-features = false } +auto_impl = "1.3.0" +backon = { version = "1.6.0", default-features = false, features = [ + "std-blocking-sleep", + "tokio-sleep", +] } +bitflags = "2.10" +boyer-moore-magiclen = "0.2.22" +buddy_system_allocator = "0.12.0" +bytes = { version = "1.11.0", default-features = false } +cfg-if = "1.0.4" +chrono = "0.4.43" +clap = "4.5.56" +color-eyre = "0.6.5" +crossterm = "0.29.0" +dashmap = "6.1" +derive_more = { version = "2.1.1", default-features = false, features = [ + "full", +] } +dirs = "6.0.0" +dirs-next = "2.0.0" +dyn-clone = "1.0.20" +either = { version = "1.15.0", default-features = false } +eyre = "0.6.12" +fdlimit = "0.3.0" +fixed-map = { version = "0.9", default-features = false } +glob = "0.3.3" +http = "1.4.0" +http-body = "1.0" +http-body-util = "0.1.3" +humantime = "2.3" +humantime-serde = "1.1" +itertools = { version = "0.14", default-features = false } +jsonwebtoken = "10" +lazy_static = { version = "1.5.0", default-features = false } +libc = "0.2" +linked_hash_set = "0.1" +lru = "0.16.3" +mini-moka = "0.10" +modular-bitfield = "0.11.2" +moka = "0.12" +multihash = "0.19.3" +notify = { version = "8.2", default-features = false, features = [ + "macos_fsevent", +] } +nybbles = { version = "0.4.7", default-features = false } +once_cell = { version = "1.21", default-features = false, features = [ + "critical-section", +] } +parking_lot = "0.12.5" +paste = "1.0" +proc-macro2 = "1.0" +quote = "1.0" +rand = { version = "0.9.2", default-features = false } +rand_08 = { package = "rand", version = "0.8" } +ratatui = "0.30.0" +rayon = "1.11.0" +reqwest = { version = "0.13.1", default-features = false } +ringbuffer = "0.16.0" +rollup-boost = "0.7.13" +rollup-boost-types = "0.1.0" +rustc-hash = { version = "2.1", default-features = false } +rustls = { version = "0.23", default-features = false } +rustls-pemfile = { version = "2.2", default-features = false } +schnellru = "0.2" +shellexpand = "3.1.1" +shlex = "1.3" +smallvec = "1" +spin = "0.10.0" +strum = { version = "0.27", default-features = false } +strum_macros = "0.27" +syn = "2.0" +tabled = { version = "0.20.0", default-features = false } +tar = "0.4.44" +thiserror = { version = "2.0.18", default-features = false } +unsigned-varint = "0.8.0" +url = { version = "2.5.8", default-features = false } +vergen = "9.1.0" +vergen-git2 = "9.1.0" +byteorder = "1" + +# allocators +jemalloc_pprof = { version = "0.8", default-features = false } +tikv-jemalloc-ctl = "0.6" +tikv-jemallocator = "0.6" +tracy-client = "0.18.4" +snmalloc-rs = { version = "0.3.8", features = ["build_cc"] } + +# K/V database +rocksdb = { version = "0.24.0", default-features = false } + +[patch.crates-io] +# Duplicated by: reth-payload-primitives, reth-engine-local (reth git), rollup-boost, +# rollup-boost-types (crates.io) +op-alloy-rpc-types-engine = { path = "op-alloy/crates/rpc-types-engine" } +# Duplicated by: reth-codecs, reth-db-api, reth-primitives-traits, reth-rpc-convert (reth git) +op-alloy-consensus = { path = "op-alloy/crates/consensus" } +# Duplicated by: reth-rpc-convert (reth git) +op-alloy-network = { path = "op-alloy/crates/network" } +# Duplicated by: reth-rpc-convert (reth git) +op-alloy-rpc-types = { path = "op-alloy/crates/rpc-types" } +# Duplicated by: alloy-evm (crates.io) +op-alloy = { path = "op-alloy/crates/op-alloy" } +# Duplicated by: alloy-evm (crates.io) +alloy-op-hardforks = { path = "alloy-op-hardforks/" } diff --git a/alloy-op-evm/.config/nextest.toml b/rust/alloy-op-evm/.config/nextest.toml similarity index 100% rename from alloy-op-evm/.config/nextest.toml rename to rust/alloy-op-evm/.config/nextest.toml diff --git a/alloy-op-evm/.config/zepter.yaml b/rust/alloy-op-evm/.config/zepter.yaml similarity index 100% rename from alloy-op-evm/.config/zepter.yaml rename to rust/alloy-op-evm/.config/zepter.yaml diff --git a/alloy-op-evm/.gitignore b/rust/alloy-op-evm/.gitignore similarity index 100% rename from alloy-op-evm/.gitignore rename to rust/alloy-op-evm/.gitignore diff --git a/rust/alloy-op-evm/Cargo.toml b/rust/alloy-op-evm/Cargo.toml new file mode 100644 index 0000000000000..593a6ff2a569e --- /dev/null +++ b/rust/alloy-op-evm/Cargo.toml @@ -0,0 +1,49 @@ +[package] +name = "alloy-op-evm" +description = "OP EVM implementation" + +version = "0.26.3" +edition = "2021" +rust-version = "1.88" +authors = ["Alloy Contributors", "OpLabsPBC"] +license.workspace = true +homepage = "https://github.com/ethereum-optimism/optimism" +repository = "https://github.com/ethereum-optimism/optimism" + +[lints] +workspace = true + +[dependencies] +alloy-evm = { workspace = true, features = ["op"] } + +alloy-eips = { workspace = true } +alloy-consensus = { workspace = true } +alloy-primitives = { workspace = true } + +alloy-op-hardforks.workspace = true +op-alloy = { workspace = true, features = ["consensus"] } + +revm = { workspace = true } +op-revm = { workspace = true } + +thiserror = { workspace = true } + +auto_impl = { workspace = true } + +[dev-dependencies] +alloy-hardforks = { workspace = true } + +[features] +default = ["std"] +std = [ + "alloy-primitives/std", + "revm/std", + "alloy-evm/std", + "op-revm/std", + "alloy-consensus/std", + "alloy-eips/std", + "op-alloy/std", + "thiserror/std" +] +gmp = ["alloy-evm/gmp"] +asm-keccak = ["alloy-evm/asm-keccak", "alloy-primitives/asm-keccak", "revm/asm-keccak"] diff --git a/alloy-op-evm/LICENSE-APACHE b/rust/alloy-op-evm/LICENSE-APACHE similarity index 100% rename from alloy-op-evm/LICENSE-APACHE rename to rust/alloy-op-evm/LICENSE-APACHE diff --git a/alloy-op-evm/LICENSE-MIT b/rust/alloy-op-evm/LICENSE-MIT similarity index 100% rename from alloy-op-evm/LICENSE-MIT rename to rust/alloy-op-evm/LICENSE-MIT diff --git a/alloy-op-evm/README.md b/rust/alloy-op-evm/README.md similarity index 100% rename from alloy-op-evm/README.md rename to rust/alloy-op-evm/README.md diff --git a/alloy-op-evm/cliff.toml b/rust/alloy-op-evm/cliff.toml similarity index 100% rename from alloy-op-evm/cliff.toml rename to rust/alloy-op-evm/cliff.toml diff --git a/alloy-op-evm/justfile b/rust/alloy-op-evm/justfile similarity index 100% rename from alloy-op-evm/justfile rename to rust/alloy-op-evm/justfile diff --git a/alloy-op-evm/release.toml b/rust/alloy-op-evm/release.toml similarity index 100% rename from alloy-op-evm/release.toml rename to rust/alloy-op-evm/release.toml diff --git a/alloy-op-evm/scripts/changelog.sh b/rust/alloy-op-evm/scripts/changelog.sh similarity index 100% rename from alloy-op-evm/scripts/changelog.sh rename to rust/alloy-op-evm/scripts/changelog.sh diff --git a/alloy-op-evm/scripts/check_no_std.sh b/rust/alloy-op-evm/scripts/check_no_std.sh similarity index 100% rename from alloy-op-evm/scripts/check_no_std.sh rename to rust/alloy-op-evm/scripts/check_no_std.sh diff --git a/rust/alloy-op-evm/src/block/canyon.rs b/rust/alloy-op-evm/src/block/canyon.rs new file mode 100644 index 0000000000000..6e7b5702c9f8a --- /dev/null +++ b/rust/alloy-op-evm/src/block/canyon.rs @@ -0,0 +1,52 @@ +use alloy_evm::Database; +use alloy_op_hardforks::OpHardforks; +use alloy_primitives::{Address, B256, Bytes, address, b256, hex}; +use revm::{DatabaseCommit, primitives::HashMap, state::Bytecode}; + +/// The address of the create2 deployer +const CREATE_2_DEPLOYER_ADDR: Address = address!("0x13b0D85CcB8bf860b6b79AF3029fCA081AE9beF2"); + +/// The codehash of the create2 deployer contract. +const CREATE_2_DEPLOYER_CODEHASH: B256 = + b256!("0xb0550b5b431e30d38000efb7107aaa0ade03d48a7198a140edda9d27134468b2"); + +/// The raw bytecode of the create2 deployer contract. +const CREATE_2_DEPLOYER_BYTECODE: [u8; 1584] = hex!( + "6080604052600436106100435760003560e01c8063076c37b21461004f578063481286e61461007157806356299481146100ba57806366cfa057146100da57600080fd5b3661004a57005b600080fd5b34801561005b57600080fd5b5061006f61006a366004610327565b6100fa565b005b34801561007d57600080fd5b5061009161008c366004610327565b61014a565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100c657600080fd5b506100916100d5366004610349565b61015d565b3480156100e657600080fd5b5061006f6100f53660046103ca565b610172565b61014582826040518060200161010f9061031a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f90910116604052610183565b505050565b600061015683836102e7565b9392505050565b600061016a8484846102f0565b949350505050565b61017d838383610183565b50505050565b6000834710156101f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e636500000060448201526064015b60405180910390fd5b815160000361025f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f60448201526064016101eb565b8282516020840186f5905073ffffffffffffffffffffffffffffffffffffffff8116610156576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f790000000000000060448201526064016101eb565b60006101568383305b6000604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b61014e806104ad83390190565b6000806040838503121561033a57600080fd5b50508035926020909101359150565b60008060006060848603121561035e57600080fd5b8335925060208401359150604084013573ffffffffffffffffffffffffffffffffffffffff8116811461039057600080fd5b809150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806000606084860312156103df57600080fd5b8335925060208401359150604084013567ffffffffffffffff8082111561040557600080fd5b818601915086601f83011261041957600080fd5b81358181111561042b5761042b61039b565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156104715761047161039b565b8160405282815289602084870101111561048a57600080fd5b826020860160208301376000602084830101528095505050505050925092509256fe608060405234801561001057600080fd5b5061012e806100206000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063249cb3fa14602d575b600080fd5b603c603836600460b1565b604e565b60405190815260200160405180910390f35b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16608857600060aa565b7fa2ef4600d742022d532d4747cb3547474667d6f13804902513b2ec01c848f4b45b9392505050565b6000806040838503121560c357600080fd5b82359150602083013573ffffffffffffffffffffffffffffffffffffffff8116811460ed57600080fd5b80915050925092905056fea26469706673582212205ffd4e6cede7d06a5daf93d48d0541fc68189eeb16608c1999a82063b666eb1164736f6c63430008130033a2646970667358221220fdc4a0fe96e3b21c108ca155438d37c9143fb01278a3c1d274948bad89c564ba64736f6c63430008130033" +); + +/// The Canyon hardfork issues an irregular state transition that force-deploys the create2 +/// deployer contract. This is done by directly setting the code of the create2 deployer account +/// prior to executing any transactions on the timestamp activation of the fork. +pub(crate) fn ensure_create2_deployer( + chain_spec: impl OpHardforks, + timestamp: u64, + db: &mut DB, +) -> Result<(), DB::Error> +where + DB: Database + DatabaseCommit, +{ + // If the canyon hardfork is active at the current timestamp, and it was not active at the + // previous block timestamp (heuristically, block time is not perfectly constant at 2s), and the + // chain is an optimism chain, then we need to force-deploy the create2 deployer contract. + if chain_spec.is_canyon_active_at_timestamp(timestamp) && + !chain_spec.is_canyon_active_at_timestamp(timestamp.saturating_sub(2)) + { + // Load the create2 deployer account from the cache. + let mut acc_info = db.basic(CREATE_2_DEPLOYER_ADDR)?.unwrap_or_default(); + + // Update the account info with the create2 deployer codehash and bytecode. + acc_info.code_hash = CREATE_2_DEPLOYER_CODEHASH; + acc_info.code = Some(Bytecode::new_raw(Bytes::from_static(&CREATE_2_DEPLOYER_BYTECODE))); + + // Convert the cache account back into a revm account and mark it as touched. + let mut revm_acc: revm::state::Account = acc_info.into(); + revm_acc.mark_touch(); + + // Commit the create2 deployer account to the database. + db.commit(HashMap::from_iter([(CREATE_2_DEPLOYER_ADDR, revm_acc)])); + return Ok(()); + } + + Ok(()) +} diff --git a/alloy-op-evm/src/block/mod.rs b/rust/alloy-op-evm/src/block/mod.rs similarity index 94% rename from alloy-op-evm/src/block/mod.rs rename to rust/alloy-op-evm/src/block/mod.rs index f282bcbe1c626..1c1f48527677e 100644 --- a/alloy-op-evm/src/block/mod.rs +++ b/rust/alloy-op-evm/src/block/mod.rs @@ -5,29 +5,29 @@ use alloc::{borrow::Cow, boxed::Box, vec::Vec}; use alloy_consensus::{Eip658Value, Header, Transaction, TransactionEnvelope, TxReceipt}; use alloy_eips::{Encodable2718, Typed2718}; use alloy_evm::{ + Database, Evm, EvmFactory, FromRecoveredTx, FromTxWithEncoded, RecoveredTx, block::{ - state_changes::{balance_increment_state, post_block_balance_increments}, BlockExecutionError, BlockExecutionResult, BlockExecutor, BlockExecutorFactory, BlockExecutorFor, BlockValidationError, ExecutableTx, OnStateHook, StateChangePostBlockSource, StateChangeSource, StateDB, SystemCaller, TxResult, + state_changes::{balance_increment_state, post_block_balance_increments}, }, - eth::{receipt_builder::ReceiptBuilderCtx, EthTxResult}, - Database, Evm, EvmFactory, FromRecoveredTx, FromTxWithEncoded, RecoveredTx, + eth::{EthTxResult, receipt_builder::ReceiptBuilderCtx}, }; use alloy_op_hardforks::{OpChainHardforks, OpHardforks}; -use alloy_primitives::{Address, Bytes, B256}; +use alloy_primitives::{Address, B256, Bytes}; use canyon::ensure_create2_deployer; use op_alloy::consensus::OpDepositReceipt; use op_revm::{ - constants::L1_BLOCK_CONTRACT, estimate_tx_compressed_size, - transaction::deposit::DEPOSIT_TRANSACTION_TYPE, L1BlockInfo, OpTransaction, + L1BlockInfo, OpTransaction, constants::L1_BLOCK_CONTRACT, estimate_tx_compressed_size, + transaction::deposit::DEPOSIT_TRANSACTION_TYPE, }; pub use receipt_builder::OpAlloyReceiptBuilder; use receipt_builder::OpReceiptBuilder; use revm::{ - context::{result::ResultAndState, Block}, - database::{DatabaseCommitExt, State}, Database as _, DatabaseCommit, Inspector, + context::{Block, result::ResultAndState}, + database::{DatabaseCommitExt, State}, }; mod canyon; @@ -137,7 +137,9 @@ pub enum OpBlockExecutionError { GetJovianDaFootprintScalar(Box), /// Transaction DA footprint exceeds available block DA footprint. - #[error("transaction DA footprint exceeds available block DA footprint. transaction_da_footprint: {transaction_da_footprint}, available_block_da_footprint: {available_block_da_footprint}")] + #[error( + "transaction DA footprint exceeds available block DA footprint. transaction_da_footprint: {transaction_da_footprint}, available_block_da_footprint: {available_block_da_footprint}" + )] TransactionDaFootprintAboveGasLimit { /// The DA footprint of the transaction to execute. transaction_da_footprint: u64, @@ -149,9 +151,9 @@ pub enum OpBlockExecutionError { impl OpBlockExecutor where E: Evm< - DB: Database + DatabaseCommit + StateDB, - Tx: FromRecoveredTx + FromTxWithEncoded + OpTxEnv, - >, + DB: Database + DatabaseCommit + StateDB, + Tx: FromRecoveredTx + FromTxWithEncoded + OpTxEnv, + >, R: OpReceiptBuilder, Spec: OpHardforks, { @@ -161,11 +163,13 @@ where tx: impl RecoveredTx, ) -> Result { // Try to use the enveloped tx if it exists, otherwise use the encoded 2718 bytes - let encoded = match tx_env.encoded_bytes() { - Some(encoded) => estimate_tx_compressed_size(encoded), - None => estimate_tx_compressed_size(tx.tx().encoded_2718().as_ref()), - } - .saturating_div(1_000_000); + let encoded = tx_env + .encoded_bytes() + .map_or_else( + || estimate_tx_compressed_size(tx.tx().encoded_2718().as_ref()), + |encoded| estimate_tx_compressed_size(encoded), + ) + .saturating_div(1_000_000); // Load the L1 block contract into the cache. If the L1 block contract is not pre-loaded the // database will panic when trying to fetch the DA footprint gas scalar. @@ -182,9 +186,9 @@ where impl BlockExecutor for OpBlockExecutor where E: Evm< - DB: Database + DatabaseCommit + StateDB, - Tx: FromRecoveredTx + FromTxWithEncoded + OpTxEnv, - >, + DB: Database + DatabaseCommit + StateDB, + Tx: FromRecoveredTx + FromTxWithEncoded + OpTxEnv, + >, R: OpReceiptBuilder, Spec: OpHardforks, { @@ -237,8 +241,8 @@ where let da_footprint_used = if self .spec - .is_jovian_active_at_timestamp(self.evm.block().timestamp().saturating_to()) - && !is_deposit + .is_jovian_active_at_timestamp(self.evm.block().timestamp().saturating_to()) && + !is_deposit { let da_footprint_available = self.evm.block().gas_limit() - self.da_footprint_used; @@ -299,8 +303,8 @@ where self.gas_used += gas_used; // Update DA footprint if Jovian is active - if self.spec.is_jovian_active_at_timestamp(self.evm.block().timestamp().saturating_to()) - && !is_deposit + if self.spec.is_jovian_active_at_timestamp(self.evm.block().timestamp().saturating_to()) && + !is_deposit { // Add to DA footprint used self.da_footprint_used = self.da_footprint_used.saturating_add(blob_gas_used); @@ -332,8 +336,8 @@ where // when set. The state transition process ensures // this is only set for post-Canyon deposit // transactions. - deposit_receipt_version: (is_deposit - && self.spec.is_canyon_active_at_timestamp( + deposit_receipt_version: (is_deposit && + self.spec.is_canyon_active_at_timestamp( self.evm.block().timestamp().saturating_to(), )) .then_some(1), @@ -470,27 +474,27 @@ where #[cfg(test)] mod tests { use alloc::{string::ToString, vec}; - use alloy_consensus::{transaction::Recovered, SignableTransaction, TxLegacy}; + use alloy_consensus::{SignableTransaction, TxLegacy, transaction::Recovered}; use alloy_eips::eip2718::WithEncoded; use alloy_evm::{EvmEnv, ToTxEnv}; use alloy_hardforks::ForkCondition; use alloy_op_hardforks::OpHardfork; - use alloy_primitives::{uint, Address, Signature, U256}; + use alloy_primitives::{Address, Signature, U256, uint}; use op_alloy::consensus::OpTxEnvelope; use op_revm::{ + DefaultOp, L1BlockInfo, OpBuilder, OpSpecId, constants::{ BASE_FEE_SCALAR_OFFSET, ECOTONE_L1_BLOB_BASE_FEE_SLOT, ECOTONE_L1_FEE_SCALARS_SLOT, L1_BASE_FEE_SLOT, L1_BLOCK_CONTRACT, OPERATOR_FEE_SCALARS_SLOT, }, - DefaultOp, L1BlockInfo, OpBuilder, OpSpecId, }; use revm::{ + Context, context::BlockEnv, database::{CacheDB, EmptyDB, InMemoryDB}, inspector::NoOpInspector, primitives::HashMap, state::AccountInfo, - Context, }; use crate::OpEvm; @@ -547,7 +551,7 @@ mod tests { db.insert_account_with_storage( L1_BLOCK_CONTRACT, - AccountInfo { ..Default::default() }, + Default::default(), HashMap::from_iter([ (L1_BASE_FEE_SLOT, L1_BASE_FEE), (ECOTONE_L1_FEE_SCALARS_SLOT, L1_FEE_SCALARS), diff --git a/alloy-op-evm/src/block/receipt_builder.rs b/rust/alloy-op-evm/src/block/receipt_builder.rs similarity index 97% rename from alloy-op-evm/src/block/receipt_builder.rs rename to rust/alloy-op-evm/src/block/receipt_builder.rs index add624c7a87e9..7fd04314c7f7f 100644 --- a/alloy-op-evm/src/block/receipt_builder.rs +++ b/rust/alloy-op-evm/src/block/receipt_builder.rs @@ -2,7 +2,7 @@ //! [`super::OpBlockExecutor`]. use alloy_consensus::{Eip658Value, TransactionEnvelope}; -use alloy_evm::{eth::receipt_builder::ReceiptBuilderCtx, Evm}; +use alloy_evm::{Evm, eth::receipt_builder::ReceiptBuilderCtx}; use core::fmt::Debug; use op_alloy::consensus::{OpDepositReceipt, OpReceiptEnvelope, OpTxEnvelope, OpTxType}; diff --git a/alloy-op-evm/src/lib.rs b/rust/alloy-op-evm/src/lib.rs similarity index 96% rename from alloy-op-evm/src/lib.rs rename to rust/alloy-op-evm/src/lib.rs index 84770741798d8..b9880781d4c1a 100644 --- a/alloy-op-evm/src/lib.rs +++ b/rust/alloy-op-evm/src/lib.rs @@ -11,23 +11,23 @@ extern crate alloc; pub use alloy_evm::op::{spec, spec_by_timestamp_after_bedrock}; -use alloy_evm::{precompiles::PrecompilesMap, Database, Evm, EvmEnv, EvmFactory}; +use alloy_evm::{Database, Evm, EvmEnv, EvmFactory, precompiles::PrecompilesMap}; use alloy_primitives::{Address, Bytes}; use core::{ fmt::Debug, ops::{Deref, DerefMut}, }; use op_revm::{ - precompiles::OpPrecompiles, DefaultOp, OpBuilder, OpContext, OpHaltReason, OpSpecId, - OpTransaction, OpTransactionError, + DefaultOp, OpBuilder, OpContext, OpHaltReason, OpSpecId, OpTransaction, OpTransactionError, + precompiles::OpPrecompiles, }; use revm::{ + Context, ExecuteEvm, InspectEvm, Inspector, SystemCallEvm, context::{BlockEnv, TxEnv}, context_interface::result::{EVMError, ResultAndState}, - handler::{instructions::EthInstructions, PrecompileProvider}, + handler::{PrecompileProvider, instructions::EthInstructions}, inspector::NoOpInspector, - interpreter::{interpreter::EthInterpreter, InterpreterResult}, - Context, ExecuteEvm, InspectEvm, Inspector, SystemCallEvm, + interpreter::{InterpreterResult, interpreter::EthInterpreter}, }; pub mod block; @@ -112,11 +112,7 @@ where &mut self, tx: Self::Tx, ) -> Result, Self::Error> { - if self.inspect { - self.inner.inspect_tx(tx) - } else { - self.inner.transact(tx) - } + if self.inspect { self.inner.inspect_tx(tx) } else { self.inner.transact(tx) } } fn transact_system_call( @@ -215,8 +211,8 @@ impl EvmFactory for OpEvmFactory { mod tests { use alloc::{string::ToString, vec}; use alloy_evm::{ - precompiles::{Precompile, PrecompileInput}, EvmInternals, + precompiles::{Precompile, PrecompileInput}, }; use alloy_primitives::U256; use op_revm::precompiles::{bls12_381, bn254_pair}; diff --git a/alloy-op-hardforks/.config/zepter.yaml b/rust/alloy-op-hardforks/.config/zepter.yaml similarity index 100% rename from alloy-op-hardforks/.config/zepter.yaml rename to rust/alloy-op-hardforks/.config/zepter.yaml diff --git a/alloy-op-hardforks/.gitignore b/rust/alloy-op-hardforks/.gitignore similarity index 100% rename from alloy-op-hardforks/.gitignore rename to rust/alloy-op-hardforks/.gitignore diff --git a/rust/alloy-op-hardforks/Cargo.toml b/rust/alloy-op-hardforks/Cargo.toml new file mode 100644 index 0000000000000..1181af6068783 --- /dev/null +++ b/rust/alloy-op-hardforks/Cargo.toml @@ -0,0 +1,37 @@ +[package] +name = "alloy-op-hardforks" +description = "Bindings for named OP hardforks" + +version = "0.4.7" +edition = "2024" +rust-version = "1.88" +authors = ["Alloy Contributors", "OpLabsPBC"] +license.workspace = true +homepage = "https://github.com/ethereum-optimism/optimism" +repository = "https://github.com/ethereum-optimism/optimism" + +[lints] +workspace = true + +[package.metadata.docs.rs] +all-features = true +rustdoc-args = ["--cfg", "docsrs"] + +[dependencies] +alloy-hardforks = { workspace = true } + +# ethereum +alloy-chains = { workspace = true } +alloy-primitives = { workspace = true } + +# misc +auto_impl = { workspace = true } +serde = { workspace = true, optional = true } + +[features] +serde = [ + "dep:serde", + "alloy-hardforks/serde", + "alloy-chains/serde", + "alloy-primitives/serde" +] diff --git a/alloy-op-hardforks/LICENSE-APACHE b/rust/alloy-op-hardforks/LICENSE-APACHE similarity index 100% rename from alloy-op-hardforks/LICENSE-APACHE rename to rust/alloy-op-hardforks/LICENSE-APACHE diff --git a/alloy-op-hardforks/LICENSE-MIT b/rust/alloy-op-hardforks/LICENSE-MIT similarity index 100% rename from alloy-op-hardforks/LICENSE-MIT rename to rust/alloy-op-hardforks/LICENSE-MIT diff --git a/alloy-op-hardforks/README.md b/rust/alloy-op-hardforks/README.md similarity index 100% rename from alloy-op-hardforks/README.md rename to rust/alloy-op-hardforks/README.md diff --git a/alloy-op-hardforks/dprint.json b/rust/alloy-op-hardforks/dprint.json similarity index 100% rename from alloy-op-hardforks/dprint.json rename to rust/alloy-op-hardforks/dprint.json diff --git a/alloy-op-hardforks/justfile b/rust/alloy-op-hardforks/justfile similarity index 100% rename from alloy-op-hardforks/justfile rename to rust/alloy-op-hardforks/justfile diff --git a/alloy-op-hardforks/src/base/mainnet.rs b/rust/alloy-op-hardforks/src/base/mainnet.rs similarity index 94% rename from alloy-op-hardforks/src/base/mainnet.rs rename to rust/alloy-op-hardforks/src/base/mainnet.rs index ff40a4ebf7070..62556094e162d 100644 --- a/alloy-op-hardforks/src/base/mainnet.rs +++ b/rust/alloy-op-hardforks/src/base/mainnet.rs @@ -18,5 +18,5 @@ pub const BASE_MAINNET_GRANITE_TIMESTAMP: u64 = OP_MAINNET_GRANITE_TIMESTAMP; pub const BASE_MAINNET_HOLOCENE_TIMESTAMP: u64 = OP_MAINNET_HOLOCENE_TIMESTAMP; /// Isthmus base hardfork activation timestamp is 1746806401. pub const BASE_MAINNET_ISTHMUS_TIMESTAMP: u64 = OP_MAINNET_ISTHMUS_TIMESTAMP; -/// Jovian base hardfork activation timestamp is 1_763_481_601. +/// Jovian base hardfork activation timestamp is `1_763_481_601`. pub const BASE_MAINNET_JOVIAN_TIMESTAMP: u64 = OP_MAINNET_JOVIAN_TIMESTAMP; diff --git a/alloy-op-hardforks/src/base/mod.rs b/rust/alloy-op-hardforks/src/base/mod.rs similarity index 100% rename from alloy-op-hardforks/src/base/mod.rs rename to rust/alloy-op-hardforks/src/base/mod.rs diff --git a/alloy-op-hardforks/src/base/sepolia.rs b/rust/alloy-op-hardforks/src/base/sepolia.rs similarity index 94% rename from alloy-op-hardforks/src/base/sepolia.rs rename to rust/alloy-op-hardforks/src/base/sepolia.rs index 5fb6a2472a7dd..28ed1687c908c 100644 --- a/alloy-op-hardforks/src/base/sepolia.rs +++ b/rust/alloy-op-hardforks/src/base/sepolia.rs @@ -18,5 +18,5 @@ pub const BASE_SEPOLIA_GRANITE_TIMESTAMP: u64 = OP_SEPOLIA_GRANITE_TIMESTAMP; pub const BASE_SEPOLIA_HOLOCENE_TIMESTAMP: u64 = OP_SEPOLIA_HOLOCENE_TIMESTAMP; /// Isthmus base sepolia hardfork activation timestamp is 1744905600. pub const BASE_SEPOLIA_ISTHMUS_TIMESTAMP: u64 = OP_SEPOLIA_ISTHMUS_TIMESTAMP; -/// Jovian base sepolia hardfork activation timestamp is 1_762_963_201. +/// Jovian base sepolia hardfork activation timestamp is `1_762_963_201`. pub const BASE_SEPOLIA_JOVIAN_TIMESTAMP: u64 = OP_SEPOLIA_JOVIAN_TIMESTAMP; diff --git a/alloy-op-hardforks/src/lib.rs b/rust/alloy-op-hardforks/src/lib.rs similarity index 97% rename from alloy-op-hardforks/src/lib.rs rename to rust/alloy-op-hardforks/src/lib.rs index eddcfd4bcc717..c4dffbcde530b 100644 --- a/alloy-op-hardforks/src/lib.rs +++ b/rust/alloy-op-hardforks/src/lib.rs @@ -340,7 +340,9 @@ impl Index for OpChainHardforks { type Output = ForkCondition; fn index(&self, hf: OpHardfork) -> &Self::Output { - use OpHardfork::*; + use OpHardfork::{ + Bedrock, Canyon, Ecotone, Fjord, Granite, Holocene, Interop, Isthmus, Jovian, Regolith, + }; match hf { Bedrock => &self.forks[Bedrock.idx()].1, @@ -361,16 +363,19 @@ impl Index for OpChainHardforks { type Output = ForkCondition; fn index(&self, hf: EthereumHardfork) -> &Self::Output { - use EthereumHardfork::*; - use OpHardfork::*; + use EthereumHardfork::{ + Amsterdam, ArrowGlacier, Berlin, Bpo1, Bpo2, Bpo3, Bpo4, Bpo5, Byzantium, Cancun, + Constantinople, Dao, Frontier, GrayGlacier, Homestead, Istanbul, London, MuirGlacier, + Osaka, Paris, Petersburg, Prague, Shanghai, SpuriousDragon, Tangerine, + }; + use OpHardfork::{Bedrock, Canyon, Ecotone, Isthmus}; match hf { - Frontier | Homestead | Tangerine | SpuriousDragon | Byzantium | Constantinople - | Petersburg | Istanbul | MuirGlacier => &ForkCondition::ZERO_BLOCK, // Dao Hardfork is not needed for OpChainHardforks - Dao => &ForkCondition::Never, + Dao | Osaka | Bpo1 | Bpo2 | Bpo3 | Bpo4 | Bpo5 | Amsterdam => &ForkCondition::Never, Berlin if self.is_op_mainnet() => &ForkCondition::Block(OP_MAINNET_BERLIN_BLOCK), - Berlin => &ForkCondition::ZERO_BLOCK, + Frontier | Homestead | Tangerine | SpuriousDragon | Byzantium | Constantinople | + Petersburg | Istanbul | MuirGlacier | Berlin => &ForkCondition::ZERO_BLOCK, London | ArrowGlacier | GrayGlacier => &self[Bedrock], Paris if self.is_op_mainnet() => &ForkCondition::TTD { activation_block_number: OP_MAINNET_BEDROCK_BLOCK, @@ -385,8 +390,6 @@ impl Index for OpChainHardforks { Shanghai => &self[Canyon], Cancun => &self[Ecotone], Prague => &self[Isthmus], - // Not activated for now - Osaka | Bpo1 | Bpo2 | Bpo3 | Bpo4 | Bpo5 | Amsterdam => &ForkCondition::Never, _ => unreachable!(), } } diff --git a/alloy-op-hardforks/src/optimism/mainnet.rs b/rust/alloy-op-hardforks/src/optimism/mainnet.rs similarity index 93% rename from alloy-op-hardforks/src/optimism/mainnet.rs rename to rust/alloy-op-hardforks/src/optimism/mainnet.rs index 7f9bbe5e08940..a7fb0ef111908 100644 --- a/alloy-op-hardforks/src/optimism/mainnet.rs +++ b/rust/alloy-op-hardforks/src/optimism/mainnet.rs @@ -20,5 +20,5 @@ pub const OP_MAINNET_GRANITE_TIMESTAMP: u64 = 1_726_070_401; pub const OP_MAINNET_HOLOCENE_TIMESTAMP: u64 = 1_736_445_601; /// Isthmus hardfork activation timestamp is 1746806401. pub const OP_MAINNET_ISTHMUS_TIMESTAMP: u64 = 1_746_806_401; -/// Jovian hardfork activation timestamp is 1_764_691_201 # Tue 2 Dec 2025 16:00:01 UTC +/// Jovian hardfork activation timestamp is `1_764_691_201` # Tue 2 Dec 2025 16:00:01 UTC pub const OP_MAINNET_JOVIAN_TIMESTAMP: u64 = 1_764_691_201; diff --git a/alloy-op-hardforks/src/optimism/mod.rs b/rust/alloy-op-hardforks/src/optimism/mod.rs similarity index 100% rename from alloy-op-hardforks/src/optimism/mod.rs rename to rust/alloy-op-hardforks/src/optimism/mod.rs diff --git a/alloy-op-hardforks/src/optimism/sepolia.rs b/rust/alloy-op-hardforks/src/optimism/sepolia.rs similarity index 91% rename from alloy-op-hardforks/src/optimism/sepolia.rs rename to rust/alloy-op-hardforks/src/optimism/sepolia.rs index 12739e15fc5e2..6414a510b7b2d 100644 --- a/alloy-op-hardforks/src/optimism/sepolia.rs +++ b/rust/alloy-op-hardforks/src/optimism/sepolia.rs @@ -16,5 +16,5 @@ pub const OP_SEPOLIA_GRANITE_TIMESTAMP: u64 = 1_723_478_400; pub const OP_SEPOLIA_HOLOCENE_TIMESTAMP: u64 = 1_732_633_200; /// Isthmus sepolia hardfork activation timestamp is 1744905600. pub const OP_SEPOLIA_ISTHMUS_TIMESTAMP: u64 = 1_744_905_600; -/// Jovian sepolia hardfork activation timestamp is 1_763_568_001 # Wed 19 Nov 2025 16:00:01 UTC. +/// Jovian sepolia hardfork activation timestamp is `1_763_568_001` # Wed 19 Nov 2025 16:00:01 UTC. pub const OP_SEPOLIA_JOVIAN_TIMESTAMP: u64 = 1_763_568_001; diff --git a/op-reth/clippy.toml b/rust/clippy.toml similarity index 94% rename from op-reth/clippy.toml rename to rust/clippy.toml index 9ddf1014802a8..1e75cb34f32eb 100644 --- a/op-reth/clippy.toml +++ b/rust/clippy.toml @@ -1,3 +1,4 @@ +msrv = "1.88" too-large-for-stack = 128 doc-valid-idents = [ "P2P", diff --git a/rust/deny.toml b/rust/deny.toml new file mode 100644 index 0000000000000..461d1eda1932b --- /dev/null +++ b/rust/deny.toml @@ -0,0 +1,114 @@ +[graph] +targets = [] +all-features = false +no-default-features = false + +[output] +feature-depth = 1 + +# This section is considered when running `cargo deny check advisories` +[advisories] +yanked = "warn" +ignore = [ + # paste crate is no longer maintained. + "RUSTSEC-2024-0436", + # https://rustsec.org/advisories/RUSTSEC-2024-0384 used by sse example + "RUSTSEC-2024-0384", + "RUSTSEC-2025-0012", + # bincode is unmaintained but still functional; transitive dep from reth-nippy-jar and test-fuzz. + "RUSTSEC-2025-0141", +] + +# This section is considered when running `cargo deny check bans`. +[bans] +multiple-versions = "warn" +wildcards = "allow" +highlight = "all" +workspace-default-features = "allow" +external-default-features = "allow" +allow = [] +deny = [{ name = "openssl", wrappers = ["kona-gossip", "native-tls"] }] +skip = [] +skip-tree = [] + +[licenses] +version = 2 +confidence-threshold = 0.8 + +allow = [ + "MIT", + "MIT-0", + "Apache-2.0", + "Apache-2.0 WITH LLVM-exception", + "BSD-2-Clause", + "BSD-3-Clause", + "BSL-1.0", + "0BSD", + "CC0-1.0", + "ISC", + "Unlicense", + "Unicode-3.0", + "Zlib", + "LicenseRef-rustls-webpki", + "CDLA-Permissive-2.0", + "MPL-2.0", +] + +exceptions = [ + # CC0 is a permissive license but somewhat unclear status for source code + # https://tldrlegal.com/license/creative-commons-cc0-1.0-universal + { allow = ["CC0-1.0"], name = "secp256k1" }, + { allow = ["CC0-1.0"], name = "aurora-engine-modexp" }, + { allow = ["CC0-1.0"], name = "secp256k1-sys" }, + { allow = ["CC0-1.0"], name = "tiny-keccak" }, + { allow = ["CC0-1.0"], name = "notify" }, + # aws-lc-sys includes OpenSSL in its composite license expression + { allow = ["OpenSSL"], name = "aws-lc-sys" }, + # gmp feature (optional, LGPL-licensed) + { allow = ["LGPL-3.0-or-later"], crate = "rug" }, + { allow = ["LGPL-3.0-or-later"], crate = "gmp-mpfr-sys" }, + # Grandfathered MPL-2.0 exceptions from op-reth + { allow = ["MPL-2.0"], name = "option-ext" }, + { allow = ["MPL-2.0"], name = "webpki-root-certs" }, +] + +[[licenses.clarify]] +name = "ring" +expression = "LicenseRef-ring" +license-files = [{ path = "LICENSE", hash = 0xbd0eed23 }] + +[[licenses.clarify]] +name = "rustls-webpki" +expression = "LicenseRef-rustls-webpki" +license-files = [{ path = "LICENSE", hash = 0x001c7e6c }] + +[[licenses.clarify]] +name = "webpki" +expression = "LicenseRef-webpki" +license-files = [{ path = "LICENSE", hash = 0x001c7e6c }] + +[licenses.private] +ignore = false +registries = [] + +[sources] +allow-git = [ + "https://github.com/paradigmxyz/reth", + "https://github.com/alloy-rs/alloy", + "https://github.com/alloy-rs/hardforks", + "https://github.com/alloy-rs/evm", + "https://github.com/bluealloy/revm", + "https://github.com/paritytech/jsonrpsee", + "https://github.com/paradigmxyz/jsonrpsee", + "https://github.com/paradigmxyz/revm-inspectors", + "https://github.com/foundry-rs/block-explorers", + "https://github.com/flashbots/rollup-boost", +] +unknown-registry = "warn" +unknown-git = "deny" +allow-registry = ["https://github.com/rust-lang/crates.io-index"] + +[sources.allow-org] +github = [] +gitlab = [] +bitbucket = [] diff --git a/rust/justfile b/rust/justfile new file mode 100644 index 0000000000000..2eeb173148f5e --- /dev/null +++ b/rust/justfile @@ -0,0 +1,177 @@ +set positional-arguments + +# Aliases +alias t := test +alias l := lint +alias f := fmt-fix +alias b := build + +# default recipe to display help information +default: + @just --list + +############################### Build ############################### + +# Build the workspace +build *args='': + cargo build --workspace {{args}} + +# Build the workspace in release mode +build-release *args='': + cargo build --workspace --release {{args}} + +# Build the rollup node +build-node: + cargo build --release --bin kona-node + +# Build the supervisor +build-supervisor: + cargo build --release --bin kona-supervisor + +# Build op-reth +build-op-reth: + cargo build --release --bin op-reth + +############################### Test ################################ + +# Run all tests (unit + doc tests) +test: test-unit test-docs + +# Run unit tests (excluding online tests) +test-unit *args="-E '!test(test_online)'": + cargo nextest run --workspace --all-features {{args}} + +# Run online tests only +test-online: + cargo nextest run --workspace --all-features -E 'test(test_online)' + +# Run doc tests +test-docs: + cargo test --doc --workspace --locked + +############################### Lint ################################ + +# Run all lints +lint: fmt-check lint-clippy lint-docs + +# Check formatting (requires nightly) +fmt-check: + cargo +nightly fmt --all -- --check + +# Fix formatting (requires nightly) +fmt-fix: + cargo +nightly fmt --all + +# Run clippy +lint-clippy: + cargo clippy --workspace --all-features --all-targets -- -D warnings + +# Lint Rust documentation +lint-docs: + RUSTDOCFLAGS="-D warnings" cargo doc --workspace --no-deps --document-private-items + +############################ no_std ################################# + +# Check no_std compatibility for proof and protocol crates +check-no-std: + #!/usr/bin/env bash + set -euo pipefail + + no_std_packages=( + # proof crates + kona-executor + kona-mpt + kona-preimage + kona-proof + kona-proof-interop + + # protocol crates + kona-genesis + kona-hardforks + kona-registry + kona-protocol + kona-derive + kona-driver + kona-interop + + # utilities + kona-serde + + # alloy + alloy-op-evm + alloy-op-hardforks + ) + + for package in "${no_std_packages[@]}"; do + echo "Checking no_std build for: $package" + cargo build -p "$package" --target riscv32imac-unknown-none-elf --no-default-features + echo "Successfully checked no_std build for: $package" + done + +########################### Benchmarks ############################## + +# Run benchmarks (compile only) +bench: + cargo bench --no-run --workspace --features test-utils --exclude example-gossip --exclude example-discovery + +########################## Misc tools ############################### + +# Check for unused dependencies (requires nightly + cargo-udeps) +check-udeps: + cargo +nightly udeps --release --workspace --all-features --all-targets + +# Run cargo hack for feature powerset checking +hack partition="": + #!/usr/bin/env bash + set -euo pipefail + cargo hack check --feature-powerset --depth 2 --no-dev-deps {{ if partition != "" { "--partition " + partition } else { "" } }} + +######################### Kona Prestates ############################## + +KONA_DIR := justfile_directory() / "kona" + +# Build all kona prestates +build-kona-prestates: build-kona-cannon-prestate build-kona-interop-prestate + +build-kona-cannon-prestate: + @just build-kona-prestate kona-client prestate-artifacts-cannon + +build-kona-interop-prestate: + @just build-kona-prestate kona-client-int prestate-artifacts-cannon-interop + +build-kona-prestate VARIANT OUTPUT_DIR: + #!/usr/bin/env bash + set -euo pipefail + + echo "Building prestate for {{VARIANT}}..." + cd "{{KONA_DIR}}/docker/fpvm-prestates" + CANNON_TAG=$(cat "{{KONA_DIR}}/.config/cannon_tag") + just cannon {{VARIANT}} "${CANNON_TAG}" "{{KONA_DIR}}/{{OUTPUT_DIR}}" + + cd "{{KONA_DIR}}" + + # Copy with hash-based name for challenger lookup + HASH=$(jq -r .pre "{{OUTPUT_DIR}}/prestate-proof.json") + cp "{{OUTPUT_DIR}}/prestate.bin.gz" "{{OUTPUT_DIR}}/${HASH}.bin.gz" + echo "Prestate for {{VARIANT}}: ${HASH}" + +build-kona-reproducible-prestate: + @just build-kona-prestates + +output-kona-prestate-hash: + @echo "-------------------- Kona Prestates --------------------" + @echo "" + @echo "Cannon Absolute prestate hash:" + @jq -r .pre {{KONA_DIR}}/prestate-artifacts-cannon/prestate-proof.json + @echo "" + @echo "Cannon Interop Absolute prestate hash:" + @jq -r .pre {{KONA_DIR}}/prestate-artifacts-cannon-interop/prestate-proof.json + @echo "" + +reproducible-kona-prestate: build-kona-reproducible-prestate output-kona-prestate-hash + +clean-kona-prestates: + #!/usr/bin/env bash + set -euo pipefail + rm -rf "{{KONA_DIR}}/build" + rm -rf "{{KONA_DIR}}/prestate-artifacts-cannon" "{{KONA_DIR}}/prestate-artifacts-cannon-interop" diff --git a/kona/.config/cannon_tag b/rust/kona/.config/cannon_tag similarity index 100% rename from kona/.config/cannon_tag rename to rust/kona/.config/cannon_tag diff --git a/kona/.config/changelog.sh b/rust/kona/.config/changelog.sh similarity index 100% rename from kona/.config/changelog.sh rename to rust/kona/.config/changelog.sh diff --git a/kona/.config/nextest.toml b/rust/kona/.config/nextest.toml similarity index 100% rename from kona/.config/nextest.toml rename to rust/kona/.config/nextest.toml diff --git a/kona/.config/zepter.yaml b/rust/kona/.config/zepter.yaml similarity index 100% rename from kona/.config/zepter.yaml rename to rust/kona/.config/zepter.yaml diff --git a/kona/.dockerignore b/rust/kona/.dockerignore similarity index 100% rename from kona/.dockerignore rename to rust/kona/.dockerignore diff --git a/kona/.gitignore b/rust/kona/.gitignore similarity index 100% rename from kona/.gitignore rename to rust/kona/.gitignore diff --git a/kona/CHANGELOG.md b/rust/kona/CHANGELOG.md similarity index 100% rename from kona/CHANGELOG.md rename to rust/kona/CHANGELOG.md diff --git a/kona/CLAUDE.md b/rust/kona/CLAUDE.md similarity index 100% rename from kona/CLAUDE.md rename to rust/kona/CLAUDE.md diff --git a/kona/CONTRIBUTING.md b/rust/kona/CONTRIBUTING.md similarity index 100% rename from kona/CONTRIBUTING.md rename to rust/kona/CONTRIBUTING.md diff --git a/kona/LICENSE.md b/rust/kona/LICENSE.md similarity index 100% rename from kona/LICENSE.md rename to rust/kona/LICENSE.md diff --git a/kona/README.md b/rust/kona/README.md similarity index 100% rename from kona/README.md rename to rust/kona/README.md diff --git a/kona/RELEASES.md b/rust/kona/RELEASES.md similarity index 100% rename from kona/RELEASES.md rename to rust/kona/RELEASES.md diff --git a/kona/SECURITY.md b/rust/kona/SECURITY.md similarity index 100% rename from kona/SECURITY.md rename to rust/kona/SECURITY.md diff --git a/kona/assets/banner.png b/rust/kona/assets/banner.png similarity index 100% rename from kona/assets/banner.png rename to rust/kona/assets/banner.png diff --git a/kona/assets/favicon.ico b/rust/kona/assets/favicon.ico similarity index 100% rename from kona/assets/favicon.ico rename to rust/kona/assets/favicon.ico diff --git a/kona/assets/square.png b/rust/kona/assets/square.png similarity index 100% rename from kona/assets/square.png rename to rust/kona/assets/square.png diff --git a/kona/bin/client/Cargo.toml b/rust/kona/bin/client/Cargo.toml similarity index 100% rename from kona/bin/client/Cargo.toml rename to rust/kona/bin/client/Cargo.toml diff --git a/kona/bin/client/README.md b/rust/kona/bin/client/README.md similarity index 100% rename from kona/bin/client/README.md rename to rust/kona/bin/client/README.md diff --git a/kona/bin/client/justfile b/rust/kona/bin/client/justfile similarity index 93% rename from kona/bin/client/justfile rename to rust/kona/bin/client/justfile index 11fb537a136bd..1d2a2656699c1 100644 --- a/kona/bin/client/justfile +++ b/rust/kona/bin/client/justfile @@ -15,8 +15,8 @@ run-client-asterisc block_number l1_rpc l1_beacon_rpc l2_rpc rollup_node_rpc ver L2_NODE_ADDRESS="{{l2_rpc}}" OP_NODE_ADDRESS="{{rollup_node_rpc}}" - HOST_BIN_PATH="{{KONA_CLIENT_ROOT}}/../../target/release/kona-host" - CLIENT_BIN_PATH="{{KONA_CLIENT_ROOT}}/../../target/riscv64imac-unknown-none-elf/release-client-lto/kona-client" + HOST_BIN_PATH="{{KONA_CLIENT_ROOT}}/../../../target/release/kona-host" + CLIENT_BIN_PATH="{{KONA_CLIENT_ROOT}}/../../../target/riscv64imac-unknown-none-elf/release-client-lto/kona-client" STATE_PATH="{{KONA_CLIENT_ROOT}}/../../state.bin.gz" CLAIMED_L2_BLOCK_NUMBER={{block_number}} @@ -144,8 +144,8 @@ run-client-native-offline block_number l2_claim l2_output_root l2_head l1_head l run-client-asterisc-offline block_number l2_claim l2_output_root l2_head l1_head l2_chain_id verbosity='': #!/usr/bin/env bash - HOST_BIN_PATH="{{KONA_CLIENT_ROOT}}/../../target/debug/kona-host" - CLIENT_BIN_PATH="{{KONA_CLIENT_ROOT}}/../../target/riscv64imac-unknown-none-elf/release-client-lto/kona-client" + HOST_BIN_PATH="{{KONA_CLIENT_ROOT}}/../../../target/debug/kona-host" + CLIENT_BIN_PATH="{{KONA_CLIENT_ROOT}}/../../../target/riscv64imac-unknown-none-elf/release-client-lto/kona-client" STATE_PATH="{{KONA_CLIENT_ROOT}}/../../state.bin.gz" CLAIMED_L2_BLOCK_NUMBER={{block_number}} @@ -190,8 +190,8 @@ run-client-cannon block_number l1_rpc l1_beacon_rpc l2_rpc rollup_node_rpc rollu #!/usr/bin/env bash set -o errexit -o nounset -o pipefail - HOST_BIN_PATH="{{KONA_CLIENT_ROOT}}/../../target/release/kona-host" - CLIENT_BIN_PATH="{{KONA_CLIENT_ROOT}}/../../target/mips64-unknown-none/release-client-lto/kona-client" + HOST_BIN_PATH="{{KONA_CLIENT_ROOT}}/../../../target/release/kona-host" + CLIENT_BIN_PATH="{{KONA_CLIENT_ROOT}}/../../../target/mips64-unknown-none/release-client-lto/kona-client" STATE_PATH="{{KONA_CLIENT_ROOT}}/../../state.bin.gz" L1_NODE_ADDRESS="{{l1_rpc}}" @@ -255,8 +255,8 @@ run-client-cannon block_number l1_rpc l1_beacon_rpc l2_rpc rollup_node_rpc rollu run-client-cannon-offline block_number l2_claim l2_output_root l2_head l1_head l2_chain_id verbosity='': #!/usr/bin/env bash - HOST_BIN_PATH="{{KONA_CLIENT_ROOT}}/../../target/debug/kona-host" - CLIENT_BIN_PATH="{{KONA_CLIENT_ROOT}}/../../target/mips64-unknown-none/release-client-lto/kona-client" + HOST_BIN_PATH="{{KONA_CLIENT_ROOT}}/../../../target/debug/kona-host" + CLIENT_BIN_PATH="{{KONA_CLIENT_ROOT}}/../../../target/mips64-unknown-none/release-client-lto/kona-client" STATE_PATH="{{KONA_CLIENT_ROOT}}/../../state.bin.gz" CLAIMED_L2_BLOCK_NUMBER={{block_number}} diff --git a/kona/bin/client/src/fpvm_evm/factory.rs b/rust/kona/bin/client/src/fpvm_evm/factory.rs similarity index 100% rename from kona/bin/client/src/fpvm_evm/factory.rs rename to rust/kona/bin/client/src/fpvm_evm/factory.rs diff --git a/kona/bin/client/src/fpvm_evm/mod.rs b/rust/kona/bin/client/src/fpvm_evm/mod.rs similarity index 100% rename from kona/bin/client/src/fpvm_evm/mod.rs rename to rust/kona/bin/client/src/fpvm_evm/mod.rs diff --git a/kona/bin/client/src/fpvm_evm/precompiles/bls12_g1_add.rs b/rust/kona/bin/client/src/fpvm_evm/precompiles/bls12_g1_add.rs similarity index 100% rename from kona/bin/client/src/fpvm_evm/precompiles/bls12_g1_add.rs rename to rust/kona/bin/client/src/fpvm_evm/precompiles/bls12_g1_add.rs diff --git a/kona/bin/client/src/fpvm_evm/precompiles/bls12_g1_msm.rs b/rust/kona/bin/client/src/fpvm_evm/precompiles/bls12_g1_msm.rs similarity index 100% rename from kona/bin/client/src/fpvm_evm/precompiles/bls12_g1_msm.rs rename to rust/kona/bin/client/src/fpvm_evm/precompiles/bls12_g1_msm.rs diff --git a/kona/bin/client/src/fpvm_evm/precompiles/bls12_g2_add.rs b/rust/kona/bin/client/src/fpvm_evm/precompiles/bls12_g2_add.rs similarity index 100% rename from kona/bin/client/src/fpvm_evm/precompiles/bls12_g2_add.rs rename to rust/kona/bin/client/src/fpvm_evm/precompiles/bls12_g2_add.rs diff --git a/kona/bin/client/src/fpvm_evm/precompiles/bls12_g2_msm.rs b/rust/kona/bin/client/src/fpvm_evm/precompiles/bls12_g2_msm.rs similarity index 100% rename from kona/bin/client/src/fpvm_evm/precompiles/bls12_g2_msm.rs rename to rust/kona/bin/client/src/fpvm_evm/precompiles/bls12_g2_msm.rs diff --git a/kona/bin/client/src/fpvm_evm/precompiles/bls12_map_fp.rs b/rust/kona/bin/client/src/fpvm_evm/precompiles/bls12_map_fp.rs similarity index 100% rename from kona/bin/client/src/fpvm_evm/precompiles/bls12_map_fp.rs rename to rust/kona/bin/client/src/fpvm_evm/precompiles/bls12_map_fp.rs diff --git a/kona/bin/client/src/fpvm_evm/precompiles/bls12_map_fp2.rs b/rust/kona/bin/client/src/fpvm_evm/precompiles/bls12_map_fp2.rs similarity index 100% rename from kona/bin/client/src/fpvm_evm/precompiles/bls12_map_fp2.rs rename to rust/kona/bin/client/src/fpvm_evm/precompiles/bls12_map_fp2.rs diff --git a/kona/bin/client/src/fpvm_evm/precompiles/bls12_pair.rs b/rust/kona/bin/client/src/fpvm_evm/precompiles/bls12_pair.rs similarity index 100% rename from kona/bin/client/src/fpvm_evm/precompiles/bls12_pair.rs rename to rust/kona/bin/client/src/fpvm_evm/precompiles/bls12_pair.rs diff --git a/kona/bin/client/src/fpvm_evm/precompiles/bn128_pair.rs b/rust/kona/bin/client/src/fpvm_evm/precompiles/bn128_pair.rs similarity index 100% rename from kona/bin/client/src/fpvm_evm/precompiles/bn128_pair.rs rename to rust/kona/bin/client/src/fpvm_evm/precompiles/bn128_pair.rs diff --git a/kona/bin/client/src/fpvm_evm/precompiles/ecrecover.rs b/rust/kona/bin/client/src/fpvm_evm/precompiles/ecrecover.rs similarity index 100% rename from kona/bin/client/src/fpvm_evm/precompiles/ecrecover.rs rename to rust/kona/bin/client/src/fpvm_evm/precompiles/ecrecover.rs diff --git a/kona/bin/client/src/fpvm_evm/precompiles/kzg_point_eval.rs b/rust/kona/bin/client/src/fpvm_evm/precompiles/kzg_point_eval.rs similarity index 100% rename from kona/bin/client/src/fpvm_evm/precompiles/kzg_point_eval.rs rename to rust/kona/bin/client/src/fpvm_evm/precompiles/kzg_point_eval.rs diff --git a/kona/bin/client/src/fpvm_evm/precompiles/mod.rs b/rust/kona/bin/client/src/fpvm_evm/precompiles/mod.rs similarity index 100% rename from kona/bin/client/src/fpvm_evm/precompiles/mod.rs rename to rust/kona/bin/client/src/fpvm_evm/precompiles/mod.rs diff --git a/kona/bin/client/src/fpvm_evm/precompiles/provider.rs b/rust/kona/bin/client/src/fpvm_evm/precompiles/provider.rs similarity index 100% rename from kona/bin/client/src/fpvm_evm/precompiles/provider.rs rename to rust/kona/bin/client/src/fpvm_evm/precompiles/provider.rs diff --git a/kona/bin/client/src/fpvm_evm/precompiles/test_utils.rs b/rust/kona/bin/client/src/fpvm_evm/precompiles/test_utils.rs similarity index 100% rename from kona/bin/client/src/fpvm_evm/precompiles/test_utils.rs rename to rust/kona/bin/client/src/fpvm_evm/precompiles/test_utils.rs diff --git a/kona/bin/client/src/fpvm_evm/precompiles/utils.rs b/rust/kona/bin/client/src/fpvm_evm/precompiles/utils.rs similarity index 100% rename from kona/bin/client/src/fpvm_evm/precompiles/utils.rs rename to rust/kona/bin/client/src/fpvm_evm/precompiles/utils.rs diff --git a/kona/bin/client/src/interop/consolidate.rs b/rust/kona/bin/client/src/interop/consolidate.rs similarity index 100% rename from kona/bin/client/src/interop/consolidate.rs rename to rust/kona/bin/client/src/interop/consolidate.rs diff --git a/kona/bin/client/src/interop/mod.rs b/rust/kona/bin/client/src/interop/mod.rs similarity index 100% rename from kona/bin/client/src/interop/mod.rs rename to rust/kona/bin/client/src/interop/mod.rs diff --git a/kona/bin/client/src/interop/transition.rs b/rust/kona/bin/client/src/interop/transition.rs similarity index 95% rename from kona/bin/client/src/interop/transition.rs rename to rust/kona/bin/client/src/interop/transition.rs index 43103f84c4e03..00c8e7c99d2a2 100644 --- a/kona/bin/client/src/interop/transition.rs +++ b/rust/kona/bin/client/src/interop/transition.rs @@ -40,15 +40,15 @@ where FromTxWithEncoded + FromRecoveredTx + OpTxEnv, { // Check if we can short-circuit the transition, if we are within padding. - if let PreState::TransitionState(ref transition_state) = boot.agreed_pre_state { - if transition_state.step >= transition_state.pre_state.output_roots.len() as u64 { - info!( - target: "interop_client", - "No derivation/execution required, transition state is already saturated." - ); + if let PreState::TransitionState(ref transition_state) = boot.agreed_pre_state && + transition_state.step >= transition_state.pre_state.output_roots.len() as u64 + { + info!( + target: "interop_client", + "No derivation/execution required, transition state is already saturated." + ); - return transition_and_check(boot.agreed_pre_state, None, boot.claimed_post_state); - } + return transition_and_check(boot.agreed_pre_state, None, boot.claimed_post_state); } // Fetch the L2 block hash of the current safe head. diff --git a/kona/bin/client/src/interop/util.rs b/rust/kona/bin/client/src/interop/util.rs similarity index 100% rename from kona/bin/client/src/interop/util.rs rename to rust/kona/bin/client/src/interop/util.rs diff --git a/kona/bin/client/src/kona.rs b/rust/kona/bin/client/src/kona.rs similarity index 96% rename from kona/bin/client/src/kona.rs rename to rust/kona/bin/client/src/kona.rs index 944cf98f1c448..972c26e3b060a 100644 --- a/kona/bin/client/src/kona.rs +++ b/rust/kona/bin/client/src/kona.rs @@ -1,7 +1,7 @@ #![doc = include_str!("../README.md")] #![warn(missing_debug_implementations, missing_docs, unreachable_pub, rustdoc::all)] #![deny(unused_must_use, rust_2018_idioms)] -#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))] +#![cfg_attr(docsrs, feature(doc_cfg))] #![no_std] #![cfg_attr(any(target_arch = "mips64", target_arch = "riscv64"), no_main)] diff --git a/kona/bin/client/src/kona_interop.rs b/rust/kona/bin/client/src/kona_interop.rs similarity index 96% rename from kona/bin/client/src/kona_interop.rs rename to rust/kona/bin/client/src/kona_interop.rs index 482e8cbcfa25a..874f6abd5db0e 100644 --- a/kona/bin/client/src/kona_interop.rs +++ b/rust/kona/bin/client/src/kona_interop.rs @@ -1,7 +1,7 @@ #![doc = include_str!("../README.md")] #![warn(missing_debug_implementations, missing_docs, unreachable_pub, rustdoc::all)] #![deny(unused_must_use, rust_2018_idioms)] -#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))] +#![cfg_attr(docsrs, feature(doc_cfg))] #![no_std] #![cfg_attr(any(target_arch = "mips64", target_arch = "riscv64"), no_main)] diff --git a/kona/bin/client/src/lib.rs b/rust/kona/bin/client/src/lib.rs similarity index 85% rename from kona/bin/client/src/lib.rs rename to rust/kona/bin/client/src/lib.rs index 58128dd352481..15b4e25a32c0c 100644 --- a/kona/bin/client/src/lib.rs +++ b/rust/kona/bin/client/src/lib.rs @@ -1,7 +1,7 @@ #![doc = include_str!("../README.md")] #![warn(missing_debug_implementations, missing_docs, unreachable_pub, rustdoc::all)] #![deny(unused_must_use, rust_2018_idioms)] -#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))] +#![cfg_attr(docsrs, feature(doc_cfg))] #![allow(clippy::type_complexity)] #![cfg_attr(not(test), no_std)] diff --git a/kona/bin/client/src/single.rs b/rust/kona/bin/client/src/single.rs similarity index 100% rename from kona/bin/client/src/single.rs rename to rust/kona/bin/client/src/single.rs diff --git a/kona/bin/client/testdata/holocene-op-sepolia-26215604-witness.tar.zst b/rust/kona/bin/client/testdata/holocene-op-sepolia-26215604-witness.tar.zst similarity index 100% rename from kona/bin/client/testdata/holocene-op-sepolia-26215604-witness.tar.zst rename to rust/kona/bin/client/testdata/holocene-op-sepolia-26215604-witness.tar.zst diff --git a/kona/bin/host/Cargo.toml b/rust/kona/bin/host/Cargo.toml similarity index 98% rename from kona/bin/host/Cargo.toml rename to rust/kona/bin/host/Cargo.toml index edba656bb6c17..06fe88b9cb2c4 100644 --- a/kona/bin/host/Cargo.toml +++ b/rust/kona/bin/host/Cargo.toml @@ -56,7 +56,6 @@ revm = { workspace = true, features = ["std", "c-kzg", "secp256k1", "portable", # General anyhow.workspace = true tracing.workspace = true -reqwest.workspace = true serde_json.workspace = true async-trait.workspace = true rocksdb = { workspace = true, features = ["snappy", "bindgen-runtime"] } diff --git a/kona/bin/host/README.md b/rust/kona/bin/host/README.md similarity index 100% rename from kona/bin/host/README.md rename to rust/kona/bin/host/README.md diff --git a/kona/bin/host/src/backend/mod.rs b/rust/kona/bin/host/src/backend/mod.rs similarity index 100% rename from kona/bin/host/src/backend/mod.rs rename to rust/kona/bin/host/src/backend/mod.rs diff --git a/kona/bin/host/src/backend/offline.rs b/rust/kona/bin/host/src/backend/offline.rs similarity index 81% rename from kona/bin/host/src/backend/offline.rs rename to rust/kona/bin/host/src/backend/offline.rs index a2ca1e531fd0a..17e4a4198e750 100644 --- a/kona/bin/host/src/backend/offline.rs +++ b/rust/kona/bin/host/src/backend/offline.rs @@ -1,4 +1,4 @@ -//! Contains the implementations of the [HintRouter] and [PreimageFetcher] traits. +//! Contains the implementations of the [`HintRouter`] and [`PreimageFetcher`] traits. use crate::kv::KeyValueStore; use async_trait::async_trait; @@ -9,7 +9,7 @@ use kona_preimage::{ use std::sync::Arc; use tokio::sync::RwLock; -/// A [KeyValueStore]-backed implementation of the [PreimageFetcher] trait. +/// A [`KeyValueStore`]-backed implementation of the [`PreimageFetcher`] trait. #[derive(Debug)] pub struct OfflineHostBackend where @@ -22,7 +22,7 @@ impl OfflineHostBackend where KV: KeyValueStore + ?Sized, { - /// Create a new [OfflineHostBackend] from the given [KeyValueStore]. + /// Create a new [`OfflineHostBackend`] from the given [`KeyValueStore`]. pub const fn new(kv_store: Arc>) -> Self { Self { inner: kv_store } } diff --git a/kona/bin/host/src/backend/online.rs b/rust/kona/bin/host/src/backend/online.rs similarity index 86% rename from kona/bin/host/src/backend/online.rs rename to rust/kona/bin/host/src/backend/online.rs index 4b151ff0177ae..ca6127b0fe88d 100644 --- a/kona/bin/host/src/backend/online.rs +++ b/rust/kona/bin/host/src/backend/online.rs @@ -1,4 +1,4 @@ -//! Contains the [OnlineHostBackend] definition. +//! Contains the [`OnlineHostBackend`] definition. use crate::SharedKeyValueStore; use anyhow::Result; @@ -12,8 +12,8 @@ use std::{collections::HashSet, hash::Hash, str::FromStr, sync::Arc}; use tokio::sync::RwLock; use tracing::{debug, error, trace}; -/// The [OnlineHostBackendCfg] trait is used to define the type configuration for the -/// [OnlineHostBackend]. +/// The [`OnlineHostBackendCfg`] trait is used to define the type configuration for the +/// [`OnlineHostBackend`]. pub trait OnlineHostBackendCfg { /// The hint type describing the range of hints that can be received. type HintType: FromStr + Hash + Eq + PartialEq + Clone + Send + Sync; @@ -22,11 +22,11 @@ pub trait OnlineHostBackendCfg { type Providers: Send + Sync; } -/// A [HintHandler] is an interface for receiving hints, fetching remote data, and storing it in the -/// key-value store. +/// A [`HintHandler`] is an interface for receiving hints, fetching remote data, and storing it in +/// the key-value store. #[async_trait] pub trait HintHandler { - /// The type configuration for the [HintHandler]. + /// The type configuration for the [`HintHandler`]. type Cfg: OnlineHostBackendCfg; /// Fetches data in response to a hint. @@ -38,8 +38,8 @@ pub trait HintHandler { ) -> Result<()>; } -/// The [OnlineHostBackend] is a [HintRouter] and [PreimageFetcher] that is used to fetch data from -/// remote sources in response to hints. +/// The [`OnlineHostBackend`] is a [`HintRouter`] and [`PreimageFetcher`] that is used to fetch data +/// from remote sources in response to hints. /// /// [PreimageKey]: kona_preimage::PreimageKey #[allow(missing_debug_implementations)] @@ -58,7 +58,7 @@ where proactive_hints: HashSet, /// The last hint that was received. last_hint: Arc>>>, - /// Phantom marker for the [HintHandler]. + /// Phantom marker for the [`HintHandler`]. _hint_handler: std::marker::PhantomData, } @@ -67,7 +67,7 @@ where C: OnlineHostBackendCfg, H: HintHandler, { - /// Creates a new [HintHandler] with the given configuration, key-value store, providers, and + /// Creates a new [`HintHandler`] with the given configuration, key-value store, providers, and /// external configuration. pub fn new(cfg: C, kv: SharedKeyValueStore, providers: C::Providers, _: H) -> Self { Self { @@ -80,7 +80,7 @@ where } } - /// Adds a new proactive hint to the [OnlineHostBackend]. + /// Adds a new proactive hint to the [`OnlineHostBackend`]. pub fn with_proactive_hint(mut self, hint_type: C::HintType) -> Self { self.proactive_hints.insert(hint_type); self diff --git a/kona/bin/host/src/backend/util.rs b/rust/kona/bin/host/src/backend/util.rs similarity index 92% rename from kona/bin/host/src/backend/util.rs rename to rust/kona/bin/host/src/backend/util.rs index 66c2c41364622..ed74d335dfa12 100644 --- a/kona/bin/host/src/backend/util.rs +++ b/rust/kona/bin/host/src/backend/util.rs @@ -8,7 +8,7 @@ use kona_preimage::{PreimageKey, PreimageKeyType}; use tokio::sync::RwLock; /// Constructs a merkle patricia trie from the ordered list passed and stores all encoded -/// intermediate nodes of the trie in the [KeyValueStore]. +/// intermediate nodes of the trie in the [`KeyValueStore`]. pub(crate) async fn store_ordered_trie>( kv: &RwLock, values: &[T], @@ -29,7 +29,7 @@ pub(crate) async fn store_ordered_trie Result<(), InteropHostError> { if self.server { let hint = FileChannel::new(FileDescriptor::HintRead, FileDescriptor::HintWrite); @@ -216,8 +214,8 @@ impl InteropHost { self.data_dir.is_some() } - /// Reads the [RollupConfig]s from the file system and returns a map of L2 chain ID -> - /// [RollupConfig]s. + /// Reads the [`RollupConfig`]s from the file system and returns a map of L2 chain ID -> + /// [`RollupConfig`]s. pub fn read_rollup_configs( &self, ) -> Option, InteropHostError>> { @@ -312,7 +310,7 @@ pub struct InteropProviders { } impl InteropProviders { - /// Returns the L2 [RootProvider] for the given chain ID. + /// Returns the L2 [`RootProvider`] for the given chain ID. pub fn l2(&self, chain_id: &u64) -> Result<&RootProvider, InteropHostError> { self.l2s.get(chain_id).ok_or_else(|| InteropHostError::RootProviderError(*chain_id)) } diff --git a/kona/bin/host/src/interop/handler.rs b/rust/kona/bin/host/src/interop/handler.rs similarity index 98% rename from kona/bin/host/src/interop/handler.rs rename to rust/kona/bin/host/src/interop/handler.rs index daa9db2ec6b28..c338842b3639a 100644 --- a/kona/bin/host/src/interop/handler.rs +++ b/rust/kona/bin/host/src/interop/handler.rs @@ -1,4 +1,4 @@ -//! [HintHandler] for the [InteropHost]. +//! [`HintHandler`] for the [`InteropHost`]. use super::InteropHost; use crate::{ @@ -39,7 +39,7 @@ use std::sync::Arc; use tokio::task; use tracing::{Instrument, debug, info, info_span, warn}; -/// The [HintHandler] for the [InteropHost]. +/// The [`HintHandler`] for the [`InteropHost`]. #[derive(Debug, Clone, Copy)] pub struct InteropHintHandler; @@ -73,7 +73,7 @@ impl HintHandler for InteropHintHandler { .get_block_by_hash(hash) .full() .await? - .ok_or(anyhow!("Block not found"))?; + .ok_or_else(|| anyhow!("Block not found"))?; let encoded_transactions = transactions .into_transactions() .map(|tx| tx.inner.encoded_2718()) @@ -230,7 +230,7 @@ impl HintHandler for InteropHintHandler { // configs. .or_else(|| ROLLUP_CONFIGS.get(&chain_id).cloned()) .map(Arc::new) - .ok_or(anyhow!("No rollup config found for chain ID: {chain_id}"))?; + .ok_or_else(|| anyhow!("No rollup config found for chain ID: {chain_id}"))?; let block_number = rollup_config.block_number_from_timestamp(timestamp); // Fetch the header for the L2 head block. @@ -288,7 +288,7 @@ impl HintHandler for InteropHintHandler { .get_block_by_hash(hash) .full() .await? - .ok_or(anyhow!("Block not found"))?; + .ok_or_else(|| anyhow!("Block not found"))?; let encoded_transactions = transactions .into_transactions() .map(|tx| tx.inner.inner.encoded_2718()) @@ -439,7 +439,7 @@ impl HintHandler for InteropHintHandler { // configs. .or_else(|| ROLLUP_CONFIGS.get(&chain_id).cloned()) .map(Arc::new) - .ok_or(anyhow!("No rollup config found for chain ID: {chain_id}"))?; + .ok_or_else(|| anyhow!("No rollup config found for chain ID: {chain_id}"))?; let l1_config = cfg .read_l1_config() @@ -457,11 +457,11 @@ impl HintHandler for InteropHintHandler { let parent_block = l2_provider .get_block_by_hash(agreed_block_hash) .await? - .ok_or(anyhow!("Block not found."))?; + .ok_or_else(|| anyhow!("Block not found."))?; let disputed_block = l2_provider .get_block_by_number((parent_block.header.number + 1).into()) .await? - .ok_or(anyhow!("Block not found."))?; + .ok_or_else(|| anyhow!("Block not found."))?; // Return early if the disputed block is canonical - preimages can be fetched // through the normal flow. diff --git a/kona/bin/host/src/interop/local_kv.rs b/rust/kona/bin/host/src/interop/local_kv.rs similarity index 87% rename from kona/bin/host/src/interop/local_kv.rs rename to rust/kona/bin/host/src/interop/local_kv.rs index 8c81318e01d18..fd33d2854cf0e 100644 --- a/kona/bin/host/src/interop/local_kv.rs +++ b/rust/kona/bin/host/src/interop/local_kv.rs @@ -1,5 +1,5 @@ -//! Contains a concrete implementation of the [KeyValueStore] trait that stores data on disk, -//! using the [InteropHost] config. +//! Contains a concrete implementation of the [`KeyValueStore`] trait that stores data on disk, +//! using the [`InteropHost`] config. use super::InteropHost; use crate::{KeyValueStore, Result}; @@ -10,14 +10,14 @@ use kona_proof_interop::boot::{ L2_CLAIMED_TIMESTAMP_KEY, L2_ROLLUP_CONFIG_KEY, }; -/// A simple, synchronous key-value store that returns data from a [InteropHost] config. +/// A simple, synchronous key-value store that returns data from a [`InteropHost`] config. #[derive(Debug)] pub struct InteropLocalInputs { cfg: InteropHost, } impl InteropLocalInputs { - /// Create a new [InteropLocalInputs] with the given [InteropHost] config. + /// Create a new [`InteropLocalInputs`] with the given [`InteropHost`] config. pub const fn new(cfg: InteropHost) -> Self { Self { cfg } } diff --git a/kona/bin/host/src/interop/mod.rs b/rust/kona/bin/host/src/interop/mod.rs similarity index 100% rename from kona/bin/host/src/interop/mod.rs rename to rust/kona/bin/host/src/interop/mod.rs diff --git a/kona/bin/host/src/kv/disk.rs b/rust/kona/bin/host/src/kv/disk.rs similarity index 86% rename from kona/bin/host/src/kv/disk.rs rename to rust/kona/bin/host/src/kv/disk.rs index 81093959fbe0f..00d4bb96fd5bc 100644 --- a/kona/bin/host/src/kv/disk.rs +++ b/rust/kona/bin/host/src/kv/disk.rs @@ -1,4 +1,4 @@ -//! Contains a concrete implementation of the [KeyValueStore] trait that stores data on disk +//! Contains a concrete implementation of the [`KeyValueStore`] trait that stores data on disk //! using [rocksdb]. use super::{KeyValueStore, MemoryKeyValueStore}; @@ -15,7 +15,7 @@ pub struct DiskKeyValueStore { } impl DiskKeyValueStore { - /// Create a new [DiskKeyValueStore] with the given data directory. + /// Create a new [`DiskKeyValueStore`] with the given data directory. pub fn new(data_directory: PathBuf) -> Self { let db = DB::open(&Self::get_db_options(), data_directory.as_path()) .unwrap_or_else(|e| panic!("Failed to open database at {data_directory:?}: {e}")); @@ -23,7 +23,7 @@ impl DiskKeyValueStore { Self { data_directory, db } } - /// Gets the [Options] for the underlying RocksDB instance. + /// Gets the [Options] for the underlying `RocksDB` instance. fn get_db_options() -> Options { let mut options = Options::default(); options.set_compression_type(rocksdb::DBCompressionType::Snappy); @@ -87,13 +87,13 @@ mod test { fn convert_disk_kv_to_mem_kv(k_v in hash_map(any::<[u8; 32]>(), vec(any::(), 0..128), 1..128)) { let tempdir = temp_dir(); let mut disk_kv = DiskKeyValueStore::new(tempdir); - k_v.iter().for_each(|(k, v)| { - disk_kv.set(k.into(), v.to_vec()).unwrap(); - }); + for (k, v) in &k_v { + disk_kv.set(k.into(), v.clone()).unwrap(); + } let mem_kv = MemoryKeyValueStore::try_from(disk_kv).unwrap(); for (k, v) in k_v { - assert_eq!(mem_kv.get(k.into()).unwrap(), v.to_vec()); + assert_eq!(mem_kv.get(k.into()).unwrap(), v.clone()); } } } diff --git a/kona/bin/host/src/kv/mem.rs b/rust/kona/bin/host/src/kv/mem.rs similarity index 82% rename from kona/bin/host/src/kv/mem.rs rename to rust/kona/bin/host/src/kv/mem.rs index d7f607b83f3a2..7015410834b86 100644 --- a/kona/bin/host/src/kv/mem.rs +++ b/rust/kona/bin/host/src/kv/mem.rs @@ -1,4 +1,4 @@ -//! Contains a concrete implementation of the [KeyValueStore] trait that stores data in memory. +//! Contains a concrete implementation of the [`KeyValueStore`] trait that stores data in memory. use super::KeyValueStore; use crate::Result; @@ -14,7 +14,7 @@ pub struct MemoryKeyValueStore { } impl MemoryKeyValueStore { - /// Create a new [MemoryKeyValueStore] with an empty store. + /// Create a new [`MemoryKeyValueStore`] with an empty store. pub fn new() -> Self { Self { store: HashMap::default() } } diff --git a/kona/bin/host/src/kv/mod.rs b/rust/kona/bin/host/src/kv/mod.rs similarity index 88% rename from kona/bin/host/src/kv/mod.rs rename to rust/kona/bin/host/src/kv/mod.rs index a5ba9b6605ce6..45468e79c8e40 100644 --- a/kona/bin/host/src/kv/mod.rs +++ b/rust/kona/bin/host/src/kv/mod.rs @@ -1,4 +1,4 @@ -//! This module contains the [KeyValueStore] trait and concrete implementations of it. +//! This module contains the [`KeyValueStore`] trait and concrete implementations of it. use crate::Result; use alloy_primitives::B256; diff --git a/kona/bin/host/src/kv/split.rs b/rust/kona/bin/host/src/kv/split.rs similarity index 71% rename from kona/bin/host/src/kv/split.rs rename to rust/kona/bin/host/src/kv/split.rs index 55566f86060ce..9327fab0edeb4 100644 --- a/kona/bin/host/src/kv/split.rs +++ b/rust/kona/bin/host/src/kv/split.rs @@ -1,13 +1,13 @@ -//! Contains a concrete implementation of the [KeyValueStore] trait that splits between two separate -//! [KeyValueStore]s depending on [PreimageKeyType]. +//! Contains a concrete implementation of the [`KeyValueStore`] trait that splits between two +//! separate [`KeyValueStore`]s depending on [`PreimageKeyType`]. use super::KeyValueStore; use crate::Result; use alloy_primitives::B256; use kona_preimage::PreimageKeyType; -/// A split implementation of the [KeyValueStore] trait that splits between two separate -/// [KeyValueStore]s. +/// A split implementation of the [`KeyValueStore`] trait that splits between two separate +/// [`KeyValueStore`]s. #[derive(Clone, Debug)] pub struct SplitKeyValueStore where @@ -23,7 +23,7 @@ where L: KeyValueStore, R: KeyValueStore, { - /// Create a new [SplitKeyValueStore] with the given left and right [KeyValueStore]s. + /// Create a new [`SplitKeyValueStore`] with the given left and right [`KeyValueStore`]s. pub const fn new(local_store: L, remote_store: R) -> Self { Self { local_store, remote_store } } diff --git a/kona/bin/host/src/lib.rs b/rust/kona/bin/host/src/lib.rs similarity index 90% rename from kona/bin/host/src/lib.rs rename to rust/kona/bin/host/src/lib.rs index b767c17022716..623ba04ac6ae7 100644 --- a/kona/bin/host/src/lib.rs +++ b/rust/kona/bin/host/src/lib.rs @@ -1,5 +1,5 @@ #![doc = include_str!("../README.md")] -#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))] +#![cfg_attr(docsrs, feature(doc_cfg))] mod error; pub use error::{HostError, Result}; diff --git a/kona/bin/host/src/server.rs b/rust/kona/bin/host/src/server.rs similarity index 86% rename from kona/bin/host/src/server.rs rename to rust/kona/bin/host/src/server.rs index 6d0476b8f1dd8..51e6f5140a5cf 100644 --- a/kona/bin/host/src/server.rs +++ b/rust/kona/bin/host/src/server.rs @@ -1,4 +1,4 @@ -//! This module contains the [PreimageServer] struct and its implementation. +//! This module contains the [`PreimageServer`] struct and its implementation. use kona_preimage::{ HintReaderServer, PreimageOracleServer, PreimageServerBackend, errors::PreimageOracleError, @@ -7,7 +7,7 @@ use std::sync::Arc; use tokio::spawn; use tracing::{error, info}; -/// The [PreimageServer] is responsible for waiting for incoming preimage requests and +/// The [`PreimageServer`] is responsible for waiting for incoming preimage requests and /// serving them to the client. #[derive(Debug)] pub struct PreimageServer { @@ -15,7 +15,7 @@ pub struct PreimageServer { oracle_server: P, /// The hint router. hint_reader: H, - /// [PreimageServerBackend] that routes hints and retrieves preimages. + /// [`PreimageServerBackend`] that routes hints and retrieves preimages. backend: Arc, } @@ -39,13 +39,13 @@ where H: HintReaderServer + Send + Sync + 'static, B: PreimageServerBackend + Send + Sync + 'static, { - /// Create a new [PreimageServer] with the given [PreimageOracleServer], - /// [HintReaderServer], and [PreimageServerBackend]. + /// Create a new [`PreimageServer`] with the given [`PreimageOracleServer`], + /// [`HintReaderServer`], and [`PreimageServerBackend`]. pub const fn new(oracle_server: P, hint_reader: H, backend: Arc) -> Self { Self { oracle_server, hint_reader, backend } } - /// Starts the [PreimageServer] and waits for incoming requests. + /// Starts the [`PreimageServer`] and waits for incoming requests. pub async fn start(self) -> Result<(), PreimageServerError> { // Create the futures for the oracle server and hint router. let server = spawn(Self::start_oracle_server(self.oracle_server, self.backend.clone())); @@ -69,7 +69,7 @@ where // Serve the next preimage request. This `await` will yield to the runtime // if no progress can be made. match oracle_server.next_preimage_request(backend.as_ref()).await { - Ok(_) => continue, + Ok(_) => {} Err(PreimageOracleError::IOError(_)) => return Ok(()), Err(e) => { error!(target: "host_server", "Failed to serve preimage request: {e}"); @@ -87,7 +87,7 @@ where // Route the next hint. This `await` will yield to the runtime if no progress can be // made. match hint_reader.next_hint(backend.as_ref()).await { - Ok(_) => continue, + Ok(_) => {} Err(PreimageOracleError::IOError(_)) => return Ok(()), Err(e) => { error!(target: "host_server", "Failed to serve route hint: {e}"); diff --git a/kona/bin/host/src/single/cfg.rs b/rust/kona/bin/host/src/single/cfg.rs similarity index 97% rename from kona/bin/host/src/single/cfg.rs rename to rust/kona/bin/host/src/single/cfg.rs index 73f4e53d4fd49..d14057194ee37 100644 --- a/kona/bin/host/src/single/cfg.rs +++ b/rust/kona/bin/host/src/single/cfg.rs @@ -143,7 +143,7 @@ pub enum SingleChainHostError { } impl SingleChainHost { - /// Starts the [SingleChainHost] application. + /// Starts the [`SingleChainHost`] application. pub async fn start(self) -> Result<(), SingleChainHostError> { if self.server { let hint = FileChannel::new(FileDescriptor::HintRead, FileDescriptor::HintWrite); @@ -229,7 +229,7 @@ impl SingleChainHost { self.data_dir.is_some() } - /// Reads the [RollupConfig] from the file system and returns the deserialized configuration. + /// Reads the [`RollupConfig`] from the file system and returns the deserialized configuration. pub fn read_rollup_config(&self) -> Result { let path = self.rollup_config_path.as_ref().ok_or_else(|| SingleChainHostError::NoRollupConfig)?; @@ -241,7 +241,7 @@ impl SingleChainHost { serde_json::from_str(&ser_config).map_err(SingleChainHostError::ParseError) } - /// Reads the [L1ChainConfig] from the file system and returns the deserialized configuration. + /// Reads the [`L1ChainConfig`] from the file system and returns the deserialized configuration. pub fn read_l1_config(&self) -> Result { let path = self.l1_config_path.as_ref().ok_or_else(|| SingleChainHostError::NoL1Config)?; @@ -379,8 +379,8 @@ mod test { ([].as_slice(), false), ]; - for (args_ext, valid) in cases.into_iter() { - let args = default_flags.iter().chain(args_ext.iter()).cloned().collect::>(); + for (args_ext, valid) in cases { + let args = default_flags.iter().chain(args_ext.iter()).copied().collect::>(); let parsed = SingleChainHost::try_parse_from(args); assert_eq!(parsed.is_ok(), valid); diff --git a/kona/bin/host/src/single/handler.rs b/rust/kona/bin/host/src/single/handler.rs similarity index 98% rename from kona/bin/host/src/single/handler.rs rename to rust/kona/bin/host/src/single/handler.rs index fb2eae3fb12a6..e3babf7d98f8b 100644 --- a/kona/bin/host/src/single/handler.rs +++ b/rust/kona/bin/host/src/single/handler.rs @@ -1,4 +1,4 @@ -//! [HintHandler] for the [SingleChainHost]. +//! [`HintHandler`] for the [`SingleChainHost`]. use crate::{ HintHandler, OnlineHostBackendCfg, backend::util::store_ordered_trie, kv::SharedKeyValueStore, @@ -22,7 +22,7 @@ use kona_protocol::{BlockInfo, OutputRoot, Predeploys}; use op_alloy_rpc_types_engine::OpPayloadAttributes; use tracing::warn; -/// The [HintHandler] for the [SingleChainHost]. +/// The [`HintHandler`] for the [`SingleChainHost`]. #[derive(Debug, Clone, Copy)] pub struct SingleChainHintHandler; @@ -56,7 +56,7 @@ impl HintHandler for SingleChainHintHandler { .get_block_by_hash(hash) .full() .await? - .ok_or(anyhow!("Block not found"))?; + .ok_or_else(|| anyhow!("Block not found"))?; let encoded_transactions = transactions .into_transactions() .map(|tx| tx.inner.encoded_2718()) @@ -189,7 +189,7 @@ impl HintHandler for SingleChainHintHandler { .get_block_by_hash(hash) .full() .await? - .ok_or(anyhow!("Block not found."))?; + .ok_or_else(|| anyhow!("Block not found."))?; let encoded_transactions = transactions .into_transactions() diff --git a/kona/bin/host/src/single/local_kv.rs b/rust/kona/bin/host/src/single/local_kv.rs similarity index 87% rename from kona/bin/host/src/single/local_kv.rs rename to rust/kona/bin/host/src/single/local_kv.rs index 1d805b2f0da24..612a54c8f0b13 100644 --- a/kona/bin/host/src/single/local_kv.rs +++ b/rust/kona/bin/host/src/single/local_kv.rs @@ -1,5 +1,5 @@ -//! Contains a concrete implementation of the [KeyValueStore] trait that stores data on disk, -//! using the [SingleChainHost] config. +//! Contains a concrete implementation of the [`KeyValueStore`] trait that stores data on disk, +//! using the [`SingleChainHost`] config. use super::SingleChainHost; use crate::{KeyValueStore, Result}; @@ -10,14 +10,14 @@ use kona_proof::boot::{ L2_OUTPUT_ROOT_KEY, L2_ROLLUP_CONFIG_KEY, }; -/// A simple, synchronous key-value store that returns data from a [SingleChainHost] config. +/// A simple, synchronous key-value store that returns data from a [`SingleChainHost`] config. #[derive(Debug)] pub struct SingleChainLocalInputs { cfg: SingleChainHost, } impl SingleChainLocalInputs { - /// Create a new [SingleChainLocalInputs] with the given [SingleChainHost] config. + /// Create a new [`SingleChainLocalInputs`] with the given [`SingleChainHost`] config. pub const fn new(cfg: SingleChainHost) -> Self { Self { cfg } } diff --git a/kona/bin/host/src/single/mod.rs b/rust/kona/bin/host/src/single/mod.rs similarity index 100% rename from kona/bin/host/src/single/mod.rs rename to rust/kona/bin/host/src/single/mod.rs diff --git a/kona/bin/node/Cargo.toml b/rust/kona/bin/node/Cargo.toml similarity index 100% rename from kona/bin/node/Cargo.toml rename to rust/kona/bin/node/Cargo.toml diff --git a/kona/bin/node/README.md b/rust/kona/bin/node/README.md similarity index 100% rename from kona/bin/node/README.md rename to rust/kona/bin/node/README.md diff --git a/kona/bin/node/build.rs b/rust/kona/bin/node/build.rs similarity index 100% rename from kona/bin/node/build.rs rename to rust/kona/bin/node/build.rs diff --git a/kona/bin/node/src/cli.rs b/rust/kona/bin/node/src/cli.rs similarity index 100% rename from kona/bin/node/src/cli.rs rename to rust/kona/bin/node/src/cli.rs diff --git a/kona/bin/node/src/commands/bootstore.rs b/rust/kona/bin/node/src/commands/bootstore.rs similarity index 93% rename from kona/bin/node/src/commands/bootstore.rs rename to rust/kona/bin/node/src/commands/bootstore.rs index 44f7d1fce0067..052993ae1055a 100644 --- a/kona/bin/node/src/commands/bootstore.rs +++ b/rust/kona/bin/node/src/commands/bootstore.rs @@ -15,7 +15,7 @@ use std::path::PathBuf; /// ```sh /// kona-node bootstore [FLAGS] [OPTIONS] /// ``` -#[derive(Parser, Default, PartialEq, Debug, Clone)] +#[derive(Parser, Default, PartialEq, Eq, Debug, Clone)] #[command(about = "Utility tool to interact with local bootstores")] pub struct BootstoreCommand { /// Optionally prints all bootstores. @@ -57,7 +57,7 @@ impl BootstoreCommand { pub fn info(&self, chain_id: u64) -> anyhow::Result<()> { let chain = kona_registry::OPCHAINS .get(&chain_id) - .ok_or(anyhow::anyhow!("Chain ID {chain_id} not found in the registry"))?; + .ok_or_else(|| anyhow::anyhow!("Chain ID {chain_id} not found in the registry"))?; println!("{} Bootstore (Chain ID: {chain_id})", chain.name); let bootstore: BootStoreFile = self .bootstore diff --git a/kona/bin/node/src/commands/info.rs b/rust/kona/bin/node/src/commands/info.rs similarity index 96% rename from kona/bin/node/src/commands/info.rs rename to rust/kona/bin/node/src/commands/info.rs index f621e39ecf2ec..6bc25405bef54 100644 --- a/kona/bin/node/src/commands/info.rs +++ b/rust/kona/bin/node/src/commands/info.rs @@ -16,7 +16,7 @@ use tracing::info; /// kona-node info /// ``` -#[derive(Parser, Default, PartialEq, Debug, Clone)] +#[derive(Parser, Default, PartialEq, Eq, Debug, Clone)] #[command(about = "Runs the information stack for the kona-node.")] pub struct InfoCommand; diff --git a/kona/bin/node/src/commands/mod.rs b/rust/kona/bin/node/src/commands/mod.rs similarity index 100% rename from kona/bin/node/src/commands/mod.rs rename to rust/kona/bin/node/src/commands/mod.rs diff --git a/kona/bin/node/src/commands/net.rs b/rust/kona/bin/node/src/commands/net.rs similarity index 95% rename from kona/bin/node/src/commands/net.rs rename to rust/kona/bin/node/src/commands/net.rs index 222926adfa300..4a8478ee1f1b7 100644 --- a/kona/bin/node/src/commands/net.rs +++ b/rust/kona/bin/node/src/commands/net.rs @@ -27,7 +27,7 @@ use url::Url; /// ```sh /// kona-node net [FLAGS] [OPTIONS] /// ``` -#[derive(Parser, Default, PartialEq, Debug, Clone)] +#[derive(Parser, Default, PartialEq, Eq, Debug, Clone)] #[command(about = "Runs the networking stack for the kona-node.")] pub struct NetCommand { /// URL of the L1 execution client RPC API. @@ -64,8 +64,10 @@ impl NetCommand { let rpc_config = Option::::from(self.rpc); // Get the rollup config from the args - let rollup_config = scr_rollup_config_by_alloy_ident(&args.l2_chain_id) - .ok_or(anyhow::anyhow!("Rollup config not found for chain id: {}", args.l2_chain_id))?; + let rollup_config = + scr_rollup_config_by_alloy_ident(&args.l2_chain_id).ok_or_else(|| { + anyhow::anyhow!("Rollup config not found for chain id: {}", args.l2_chain_id) + })?; // Start the Network Stack self.p2p.check_ports()?; diff --git a/kona/bin/node/src/commands/node.rs b/rust/kona/bin/node/src/commands/node.rs similarity index 97% rename from kona/bin/node/src/commands/node.rs rename to rust/kona/bin/node/src/commands/node.rs index 5f9e855896462..093e7ee6fd46b 100644 --- a/kona/bin/node/src/commands/node.rs +++ b/rust/kona/bin/node/src/commands/node.rs @@ -177,7 +177,7 @@ impl NodeCommand { self.p2p_flags .advertise_ip .map(|ip| ip.to_string()) - .unwrap_or(String::from("0.0.0.0")) + .unwrap_or_else(|| String::from("0.0.0.0")) ), ( CliMetrics::P2P_ADVERTISE_TCP_PORT, @@ -221,7 +221,7 @@ impl NodeCommand { false } - /// Helper to check JWT signature error from anyhow::Error (for retry condition) + /// Helper to check JWT signature error from `anyhow::Error` (for retry condition) fn is_jwt_signature_error_from_anyhow(error: &anyhow::Error) -> bool { Self::is_jwt_signature_error(error.as_ref() as &dyn std::error::Error) } @@ -379,7 +379,7 @@ impl NodeCommand { } /// Returns the L2 JWT secret for the engine API - /// using the provided [PathBuf]. If the file is not found, + /// using the provided [`PathBuf`]. If the file is not found, /// it will return the default JWT secret. pub fn l2_jwt_secret(&self) -> anyhow::Result { if let Some(path) = &self.l2_client_args.l2_engine_jwt_secret && @@ -397,7 +397,7 @@ impl NodeCommand { } /// Returns the builder JWT secret for the engine API - /// using the provided [PathBuf]. If the file is not found, + /// using the provided [`PathBuf`]. If the file is not found, /// it will return the default JWT secret. pub fn builder_jwt_secret(&self) -> anyhow::Result { if let Some(path) = &self.builder_client_args.builder_jwt_path && @@ -469,7 +469,9 @@ mod tests { #[test] fn test_node_cli_defaults() { - let args = NodeCommand::parse_from(["node"].iter().chain(default_flags().iter()).copied()); + let args = NodeCommand::parse_from( + std::iter::once(&"node").chain(default_flags().iter()).copied(), + ); assert_eq!(args.node_mode, NodeMode::Validator); } diff --git a/kona/bin/node/src/commands/registry.rs b/rust/kona/bin/node/src/commands/registry.rs similarity index 95% rename from kona/bin/node/src/commands/registry.rs rename to rust/kona/bin/node/src/commands/registry.rs index b203ccf445038..3115cc1668bb7 100644 --- a/kona/bin/node/src/commands/registry.rs +++ b/rust/kona/bin/node/src/commands/registry.rs @@ -13,7 +13,7 @@ use kona_cli::LogConfig; /// ```sh /// kona-node registry [FLAGS] [OPTIONS] /// ``` -#[derive(Parser, Default, PartialEq, Debug, Clone)] +#[derive(Parser, Default, PartialEq, Eq, Debug, Clone)] #[command(about = "Lists the OP Stack chains available in the superchain-registry")] pub struct RegistryCommand; diff --git a/kona/bin/node/src/flags/engine/flashblocks.rs b/rust/kona/bin/node/src/flags/engine/flashblocks.rs similarity index 96% rename from kona/bin/node/src/flags/engine/flashblocks.rs rename to rust/kona/bin/node/src/flags/engine/flashblocks.rs index bd09dd2c7077b..dbbb8d3b4d96f 100644 --- a/kona/bin/node/src/flags/engine/flashblocks.rs +++ b/rust/kona/bin/node/src/flags/engine/flashblocks.rs @@ -23,7 +23,7 @@ pub struct FlashblocksFlags { )] pub flashblocks: bool, - /// Flashblocks Builder WebSocket URL + /// Flashblocks Builder `WebSocket` URL #[arg( long, visible_alias = "rollup-boost.flashblocks-builder-url", @@ -32,7 +32,7 @@ pub struct FlashblocksFlags { )] pub flashblocks_builder_url: Url, - /// Flashblocks WebSocket host for outbound connections + /// Flashblocks `WebSocket` host for outbound connections #[arg( long, visible_alias = "rollup-boost.flashblocks-host", @@ -41,7 +41,7 @@ pub struct FlashblocksFlags { )] pub flashblocks_host: String, - /// Flashblocks WebSocket port for outbound connections + /// Flashblocks `WebSocket` port for outbound connections #[arg( long, visible_alias = "rollup-boost.flashblocks-port", @@ -67,7 +67,7 @@ impl Default for FlashblocksFlags { } } -/// Configuration for the Flashblocks WebSocket connection. +/// Configuration for the Flashblocks `WebSocket` connection. #[derive(Parser, Debug, Clone, Copy)] pub struct FlashblocksWebsocketFlags { /// Minimum time for exponential backoff for timeout if builder disconnected diff --git a/kona/bin/node/src/flags/engine/mod.rs b/rust/kona/bin/node/src/flags/engine/mod.rs similarity index 100% rename from kona/bin/node/src/flags/engine/mod.rs rename to rust/kona/bin/node/src/flags/engine/mod.rs diff --git a/kona/bin/node/src/flags/engine/providers.rs b/rust/kona/bin/node/src/flags/engine/providers.rs similarity index 98% rename from kona/bin/node/src/flags/engine/providers.rs rename to rust/kona/bin/node/src/flags/engine/providers.rs index c1b38c2d3ce59..340125176bec9 100644 --- a/kona/bin/node/src/flags/engine/providers.rs +++ b/rust/kona/bin/node/src/flags/engine/providers.rs @@ -136,7 +136,7 @@ impl Default for L2ClientArgs { /// L2 derivation delegate connection arguments. #[derive(Clone, Debug, Default, clap::Args)] pub struct DerivationDelegateArgs { - /// The source must be an OP Stack L2 CL RPC exposing optimism_syncStatus. + /// The source must be an OP Stack L2 CL RPC exposing `optimism_syncStatus`. #[arg(long, visible_alias = "l2.follow.source", env = "KONA_NODE_L2_FOLLOW_SOURCE")] pub l2_follow_source: Option, } diff --git a/kona/bin/node/src/flags/engine/rollup_boost.rs b/rust/kona/bin/node/src/flags/engine/rollup_boost.rs similarity index 100% rename from kona/bin/node/src/flags/engine/rollup_boost.rs rename to rust/kona/bin/node/src/flags/engine/rollup_boost.rs diff --git a/kona/bin/node/src/flags/globals.rs b/rust/kona/bin/node/src/flags/globals.rs similarity index 93% rename from kona/bin/node/src/flags/globals.rs rename to rust/kona/bin/node/src/flags/globals.rs index 6d49247887113..7af4a5f4278a0 100644 --- a/kona/bin/node/src/flags/globals.rs +++ b/rust/kona/bin/node/src/flags/globals.rs @@ -44,12 +44,12 @@ impl GlobalArgs { let id = self.l2_chain_id; OPCHAINS .get(&id.id()) - .ok_or(anyhow::anyhow!("No chain config found for chain ID: {id}"))? + .ok_or_else(|| anyhow::anyhow!("No chain config found for chain ID: {id}"))? .roles .as_ref() - .ok_or(anyhow::anyhow!("No roles found for chain ID: {id}"))? + .ok_or_else(|| anyhow::anyhow!("No roles found for chain ID: {id}"))? .unsafe_block_signer - .ok_or(anyhow::anyhow!("No unsafe block signer found for chain ID: {id}")) + .ok_or_else(|| anyhow::anyhow!("No unsafe block signer found for chain ID: {id}")) } } diff --git a/kona/bin/node/src/flags/metrics.rs b/rust/kona/bin/node/src/flags/metrics.rs similarity index 97% rename from kona/bin/node/src/flags/metrics.rs rename to rust/kona/bin/node/src/flags/metrics.rs index 16b3edecfbbdc..86effd9859be2 100644 --- a/kona/bin/node/src/flags/metrics.rs +++ b/rust/kona/bin/node/src/flags/metrics.rs @@ -29,7 +29,7 @@ mod tests { use clap::Parser; use std::net::IpAddr; - /// A mock command that uses the MetricsArgs. + /// A mock command that uses the `MetricsArgs`. #[derive(Parser, Debug, Clone)] #[command(about = "Mock command")] struct MockCommand { diff --git a/kona/bin/node/src/flags/mod.rs b/rust/kona/bin/node/src/flags/mod.rs similarity index 100% rename from kona/bin/node/src/flags/mod.rs rename to rust/kona/bin/node/src/flags/mod.rs diff --git a/kona/bin/node/src/flags/overrides.rs b/rust/kona/bin/node/src/flags/overrides.rs similarity index 100% rename from kona/bin/node/src/flags/overrides.rs rename to rust/kona/bin/node/src/flags/overrides.rs diff --git a/kona/bin/node/src/flags/p2p.rs b/rust/kona/bin/node/src/flags/p2p.rs similarity index 95% rename from kona/bin/node/src/flags/p2p.rs rename to rust/kona/bin/node/src/flags/p2p.rs index 0cda8a532740e..3071f88a2724d 100644 --- a/kona/bin/node/src/flags/p2p.rs +++ b/rust/kona/bin/node/src/flags/p2p.rs @@ -31,7 +31,7 @@ use url::Url; /// Resolves a hostname or IP address string to an [`IpAddr`]. /// /// Accepts either: -/// - A valid IP address string (e.g., "127.0.0.1", "::1") +/// - A valid IP address string (e.g., "127.0.0.1", "`::1`") /// - A DNS hostname (e.g., "node1.example.com") /// /// For DNS hostnames, this performs synchronous DNS resolution and returns the first @@ -93,7 +93,7 @@ pub struct P2PArgs { /// "node1.example.com"). DNS hostnames are resolved to IP addresses at startup. #[arg(long = "p2p.listen.ip", default_value = "0.0.0.0", env = "KONA_NODE_P2P_LISTEN_IP", value_parser = resolve_host)] pub listen_ip: IpAddr, - /// TCP port to bind LibP2P to. Any available system port if set to 0. + /// TCP port to bind `LibP2P` to. Any available system port if set to 0. #[arg(long = "p2p.listen.tcp", default_value = "9222", env = "KONA_NODE_P2P_LISTEN_TCP_PORT")] pub listen_tcp_port: u16, /// UDP port to bind Discv5 to. Same as TCP port if left 0. @@ -115,15 +115,15 @@ pub struct P2PArgs { value_parser = |arg: &str| -> Result {Ok(Duration::from_secs(arg.parse()?))} )] pub peers_grace: Duration, - /// Configure GossipSub topic stable mesh target count. + /// Configure `GossipSub` topic stable mesh target count. /// Aka: The desired outbound degree (numbers of peers to gossip to). #[arg(long = "p2p.gossip.mesh.d", default_value = "8", env = "KONA_NODE_P2P_GOSSIP_MESH_D")] pub gossip_mesh_d: usize, - /// Configure GossipSub topic stable mesh low watermark. + /// Configure `GossipSub` topic stable mesh low watermark. /// Aka: The lower bound of outbound degree. #[arg(long = "p2p.gossip.mesh.lo", default_value = "6", env = "KONA_NODE_P2P_GOSSIP_MESH_DLO")] pub gossip_mesh_dlo: usize, - /// Configure GossipSub topic stable mesh high watermark. + /// Configure `GossipSub` topic stable mesh high watermark. /// Aka: The upper bound of outbound degree (additional peers will not receive gossip). #[arg( long = "p2p.gossip.mesh.dhi", @@ -131,7 +131,7 @@ pub struct P2PArgs { env = "KONA_NODE_P2P_GOSSIP_MESH_DHI" )] pub gossip_mesh_dhi: usize, - /// Configure GossipSub gossip target. + /// Configure `GossipSub` gossip target. /// Aka: The target degree for gossip only (not messaging like p2p.gossip.mesh.d, just /// announcements of IHAVE). #[arg( @@ -140,7 +140,7 @@ pub struct P2PArgs { env = "KONA_NODE_P2P_GOSSIP_MESH_DLAZY" )] pub gossip_mesh_dlazy: usize, - /// Configure GossipSub to publish messages to all known peers on the topic, outside of the + /// Configure `GossipSub` to publish messages to all known peers on the topic, outside of the /// mesh. Also see Dlazy as less aggressive alternative. #[arg( long = "p2p.gossip.mesh.floodpublish", @@ -297,16 +297,16 @@ impl P2PArgs { } } - if let Some(path) = self.priv_path.as_ref() { - if path.exists() { - let contents = std::fs::read_to_string(path).ok()?; - let decoded = B256::from_str(&contents).ok()?; - match PrivateKeySigner::from_bytes(&decoded) { - Ok(signer) => return Some(signer), - Err(e) => { - tracing::error!(target: "p2p::flags", "Failed to parse private key from file: {}", e); - return None; - } + if let Some(path) = self.priv_path.as_ref() && + path.exists() + { + let contents = std::fs::read_to_string(path).ok()?; + let decoded = B256::from_str(&contents).ok()?; + match PrivateKeySigner::from_bytes(&decoded) { + Ok(signer) => return Some(signer), + Err(e) => { + tracing::error!(target: "p2p::flags", "Failed to parse private key from file: {}", e); + return None; } } } @@ -349,7 +349,8 @@ impl P2PArgs { // Otherwise use the genesis signer or the configured unsafe block signer. args.genesis_signer().or_else(|_| { - self.unsafe_block_signer.ok_or(anyhow::anyhow!("Unsafe block signer not provided")) + self.unsafe_block_signer + .ok_or_else(|| anyhow::anyhow!("Unsafe block signer not provided")) }) } @@ -430,8 +431,8 @@ impl P2PArgs { let bootstore = if self.disable_bootstore { None } else { - Some(self.bootstore.map_or( - BootStoreFile::Default { chain_id: args.l2_chain_id.into() }, + Some(self.bootstore.map_or_else( + || BootStoreFile::Default { chain_id: args.l2_chain_id.into() }, BootStoreFile::Custom, )) }; @@ -502,7 +503,7 @@ mod tests { use clap::Parser; use kona_peers::NodeRecord; - /// A mock command that uses the P2PArgs. + /// A mock command that uses the `P2PArgs`. #[derive(Parser, Debug, Clone)] #[command(about = "Mock command")] struct MockCommand { diff --git a/kona/bin/node/src/flags/rpc.rs b/rust/kona/bin/node/src/flags/rpc.rs similarity index 100% rename from kona/bin/node/src/flags/rpc.rs rename to rust/kona/bin/node/src/flags/rpc.rs diff --git a/kona/bin/node/src/flags/sequencer.rs b/rust/kona/bin/node/src/flags/sequencer.rs similarity index 98% rename from kona/bin/node/src/flags/sequencer.rs rename to rust/kona/bin/node/src/flags/sequencer.rs index 6080d852cd87f..11546ad3cfa76 100644 --- a/kona/bin/node/src/flags/sequencer.rs +++ b/rust/kona/bin/node/src/flags/sequencer.rs @@ -13,7 +13,7 @@ use url::Url; #[derive(Parser, Clone, Debug, PartialEq, Eq)] pub struct SequencerArgs { /// Initialize the sequencer in a stopped state. The sequencer can be started using the - /// admin_startSequencer RPC. + /// `admin_startSequencer` RPC. #[arg( long = "sequencer.stopped", default_value = "false", diff --git a/kona/bin/node/src/flags/signer.rs b/rust/kona/bin/node/src/flags/signer.rs similarity index 99% rename from kona/bin/node/src/flags/signer.rs rename to rust/kona/bin/node/src/flags/signer.rs index c747116bf1070..8e8be2b13e675 100644 --- a/kona/bin/node/src/flags/signer.rs +++ b/rust/kona/bin/node/src/flags/signer.rs @@ -3,7 +3,7 @@ use std::path::PathBuf; use alloy_primitives::{Address, B256}; use alloy_signer::{Signer, k256::ecdsa}; use alloy_signer_local::PrivateKeySigner; -use clap::{Parser, arg}; +use clap::Parser; use kona_cli::SecretKeyLoader; use kona_sources::{BlockSigner, ClientCert, RemoteSigner}; use reqwest::header::{HeaderMap, HeaderName, HeaderValue}; diff --git a/kona/bin/node/src/main.rs b/rust/kona/bin/node/src/main.rs similarity index 92% rename from kona/bin/node/src/main.rs rename to rust/kona/bin/node/src/main.rs index 70333e112b8b0..f34b684ecfe57 100644 --- a/kona/bin/node/src/main.rs +++ b/rust/kona/bin/node/src/main.rs @@ -4,7 +4,7 @@ html_favicon_url = "https://raw.githubusercontent.com/op-rs/kona/main/assets/favicon.ico", issue_tracker_base_url = "https://github.com/op-rs/kona/issues/" )] -#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))] +#![cfg_attr(docsrs, feature(doc_cfg))] pub mod cli; pub mod commands; diff --git a/kona/bin/node/src/metrics/cli_opts.rs b/rust/kona/bin/node/src/metrics/cli_opts.rs similarity index 99% rename from kona/bin/node/src/metrics/cli_opts.rs rename to rust/kona/bin/node/src/metrics/cli_opts.rs index 420e280875f3d..8b593d93271c2 100644 --- a/kona/bin/node/src/metrics/cli_opts.rs +++ b/rust/kona/bin/node/src/metrics/cli_opts.rs @@ -3,7 +3,7 @@ use kona_genesis::RollupConfig; /// Metrics to record various CLI options. -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub struct CliMetrics; impl CliMetrics { diff --git a/kona/bin/node/src/metrics/mod.rs b/rust/kona/bin/node/src/metrics/mod.rs similarity index 100% rename from kona/bin/node/src/metrics/mod.rs rename to rust/kona/bin/node/src/metrics/mod.rs diff --git a/kona/bin/node/src/metrics/version.rs b/rust/kona/bin/node/src/metrics/version.rs similarity index 100% rename from kona/bin/node/src/metrics/version.rs rename to rust/kona/bin/node/src/metrics/version.rs diff --git a/kona/bin/node/src/version.rs b/rust/kona/bin/node/src/version.rs similarity index 100% rename from kona/bin/node/src/version.rs rename to rust/kona/bin/node/src/version.rs diff --git a/kona/bin/supervisor/Architecture.md b/rust/kona/bin/supervisor/Architecture.md similarity index 100% rename from kona/bin/supervisor/Architecture.md rename to rust/kona/bin/supervisor/Architecture.md diff --git a/kona/bin/supervisor/Cargo.toml b/rust/kona/bin/supervisor/Cargo.toml similarity index 97% rename from kona/bin/supervisor/Cargo.toml rename to rust/kona/bin/supervisor/Cargo.toml index 124c650dbca80..a1fa09433022c 100644 --- a/kona/bin/supervisor/Cargo.toml +++ b/rust/kona/bin/supervisor/Cargo.toml @@ -33,7 +33,6 @@ tracing = { workspace = true } serde.workspace = true serde_json.workspace = true glob.workspace = true -reqwest.workspace = true metrics.workspace = true [dev-dependencies] diff --git a/kona/bin/supervisor/README.md b/rust/kona/bin/supervisor/README.md similarity index 100% rename from kona/bin/supervisor/README.md rename to rust/kona/bin/supervisor/README.md diff --git a/kona/bin/supervisor/build.rs b/rust/kona/bin/supervisor/build.rs similarity index 100% rename from kona/bin/supervisor/build.rs rename to rust/kona/bin/supervisor/build.rs diff --git a/kona/bin/supervisor/src/cli.rs b/rust/kona/bin/supervisor/src/cli.rs similarity index 100% rename from kona/bin/supervisor/src/cli.rs rename to rust/kona/bin/supervisor/src/cli.rs diff --git a/kona/bin/supervisor/src/flags/mod.rs b/rust/kona/bin/supervisor/src/flags/mod.rs similarity index 100% rename from kona/bin/supervisor/src/flags/mod.rs rename to rust/kona/bin/supervisor/src/flags/mod.rs diff --git a/kona/bin/supervisor/src/flags/supervisor.rs b/rust/kona/bin/supervisor/src/flags/supervisor.rs similarity index 99% rename from kona/bin/supervisor/src/flags/supervisor.rs rename to rust/kona/bin/supervisor/src/flags/supervisor.rs index 2f0d20eb8d789..2d45bd100593b 100644 --- a/kona/bin/supervisor/src/flags/supervisor.rs +++ b/rust/kona/bin/supervisor/src/flags/supervisor.rs @@ -299,6 +299,7 @@ mod tests { } #[tokio::test] + #[allow(clippy::zero_sized_map_values)] async fn test_init_dependency_set_success() -> anyhow::Result<()> { let mut temp_file = NamedTempFile::new()?; let json_content = r#" @@ -662,7 +663,7 @@ mod tests { let args = SupervisorArgs { l1_rpc: "dummy".to_string(), // clap/env may produce [""] — ensure it's filtered to empty - l2_consensus_nodes: vec!["".to_string()], + l2_consensus_nodes: vec![String::new()], l2_consensus_jwt_secret: vec![], datadir: PathBuf::from("dummy"), datadir_sync_endpoint: None, diff --git a/kona/bin/supervisor/src/main.rs b/rust/kona/bin/supervisor/src/main.rs similarity index 91% rename from kona/bin/supervisor/src/main.rs rename to rust/kona/bin/supervisor/src/main.rs index 96dc086800185..8227f9b2a2b31 100644 --- a/kona/bin/supervisor/src/main.rs +++ b/rust/kona/bin/supervisor/src/main.rs @@ -4,7 +4,7 @@ html_favicon_url = "https://raw.githubusercontent.com/op-rs/kona/main/assets/favicon.ico", issue_tracker_base_url = "https://github.com/op-rs/kona/issues/" )] -#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))] +#![cfg_attr(docsrs, feature(doc_cfg))] pub mod cli; pub mod flags; diff --git a/kona/bin/supervisor/src/metrics/mod.rs b/rust/kona/bin/supervisor/src/metrics/mod.rs similarity index 100% rename from kona/bin/supervisor/src/metrics/mod.rs rename to rust/kona/bin/supervisor/src/metrics/mod.rs diff --git a/kona/bin/supervisor/src/metrics/version.rs b/rust/kona/bin/supervisor/src/metrics/version.rs similarity index 100% rename from kona/bin/supervisor/src/metrics/version.rs rename to rust/kona/bin/supervisor/src/metrics/version.rs diff --git a/kona/bin/supervisor/src/version.rs b/rust/kona/bin/supervisor/src/version.rs similarity index 100% rename from kona/bin/supervisor/src/version.rs rename to rust/kona/bin/supervisor/src/version.rs diff --git a/kona/crates/batcher/comp/Cargo.toml b/rust/kona/crates/batcher/comp/Cargo.toml similarity index 99% rename from kona/crates/batcher/comp/Cargo.toml rename to rust/kona/crates/batcher/comp/Cargo.toml index f9277bb166b22..ecb9789b9f480 100644 --- a/kona/crates/batcher/comp/Cargo.toml +++ b/rust/kona/crates/batcher/comp/Cargo.toml @@ -84,6 +84,7 @@ std = [ "thiserror/std", "tracing/std", "unsigned-varint/std", + "tracing-subscriber?/std" ] test-utils = [ "kona-protocol/test-utils" ] serde = [ diff --git a/kona/crates/batcher/comp/README.md b/rust/kona/crates/batcher/comp/README.md similarity index 100% rename from kona/crates/batcher/comp/README.md rename to rust/kona/crates/batcher/comp/README.md diff --git a/kona/crates/batcher/comp/examples/batch_to_frames.rs b/rust/kona/crates/batcher/comp/examples/batch_to_frames.rs similarity index 90% rename from kona/crates/batcher/comp/examples/batch_to_frames.rs rename to rust/kona/crates/batcher/comp/examples/batch_to_frames.rs index 3a41d15a4d10d..061b0f1ef7a1b 100644 --- a/kona/crates/batcher/comp/examples/batch_to_frames.rs +++ b/rust/kona/crates/batcher/comp/examples/batch_to_frames.rs @@ -1,15 +1,15 @@ -//! An example encoding and decoding a [SingleBatch]. +//! An example encoding and decoding a [`SingleBatch`]. //! -//! This example demonstrates EIP-2718 encoding a [SingleBatch] -//! through a [ChannelOut] and into individual [Frame]s. +//! This example demonstrates EIP-2718 encoding a [`SingleBatch`] +//! through a [`ChannelOut`] and into individual [Frame]s. //! //! Notice, the raw batch is first _encoded_. //! Once encoded, it is compressed into raw data that the channel is constructed with. //! -//! The [ChannelOut] then outputs frames individually using the maximum frame size, +//! The [`ChannelOut`] then outputs frames individually using the maximum frame size, //! in this case hardcoded to 100, to construct the frames. //! -//! Finally, once [Frame]s are built from the [ChannelOut], they are encoded and ready +//! Finally, once [Frame]s are built from the [`ChannelOut`], they are encoded and ready //! to be batch-submitted to the data availability layer. #[cfg(feature = "std")] diff --git a/kona/crates/batcher/comp/src/brotli.rs b/rust/kona/crates/batcher/comp/src/brotli.rs similarity index 99% rename from kona/crates/batcher/comp/src/brotli.rs rename to rust/kona/crates/batcher/comp/src/brotli.rs index 3302d7b210bf7..19e261b28e356 100644 --- a/kona/crates/batcher/comp/src/brotli.rs +++ b/rust/kona/crates/batcher/comp/src/brotli.rs @@ -25,7 +25,7 @@ impl From for u32 { /// A Brotli Compression Error. #[derive(thiserror::Error, Debug)] pub enum BrotliCompressionError { - /// Unimplemented in no_std environments. + /// Unimplemented in `no_std` environments. #[error("brotli compression is not supported in no_std environments")] NoStd, /// An error returned by the `std` brotli compression method. @@ -64,7 +64,7 @@ impl From for BrotliCompressor { /// in the [`brotli`](https://crates.io/crates/brotli) crate. /// /// Note: The level must be between 0 and 11. In Optimism, the levels 9, 10, and 11 are used. -/// By default, [BrotliLevel::Brotli10] is used. +/// By default, [`BrotliLevel::Brotli10`] is used. #[allow(unused_variables)] #[allow(unused_mut)] pub fn compress_brotli( diff --git a/kona/crates/batcher/comp/src/channel_out.rs b/rust/kona/crates/batcher/comp/src/channel_out.rs similarity index 94% rename from kona/crates/batcher/comp/src/channel_out.rs rename to rust/kona/crates/batcher/comp/src/channel_out.rs index d4fce73c26111..aadb291257bfe 100644 --- a/kona/crates/batcher/comp/src/channel_out.rs +++ b/rust/kona/crates/batcher/comp/src/channel_out.rs @@ -1,7 +1,7 @@ //! Contains the `ChannelOut` primitive for Optimism. use crate::{ChannelCompressor, CompressorError}; -use alloc::{vec, vec::Vec}; +use alloc::vec; use kona_genesis::RollupConfig; use kona_protocol::{Batch, ChannelId, Frame}; use rand::{RngCore, SeedableRng, rngs::SmallRng}; @@ -9,8 +9,8 @@ use rand::{RngCore, SeedableRng, rngs::SmallRng}; /// The frame overhead. const FRAME_V0_OVERHEAD: usize = 23; -/// An error returned by the [ChannelOut] when adding single batches. -#[derive(Debug, Clone, PartialEq, thiserror::Error)] +/// An error returned by the [`ChannelOut`] when adding single batches. +#[derive(Debug, Clone, PartialEq, Eq, thiserror::Error)] pub enum ChannelOutError { /// The channel is closed. #[error("The channel is already closed")] @@ -32,7 +32,7 @@ pub enum ChannelOutError { ExceedsMaxRlpBytesPerChannel, } -/// [ChannelOut] constructs a channel from compressed, encoded batch data. +/// [`ChannelOut`] constructs a channel from compressed, encoded batch data. #[allow(missing_debug_implementations)] pub struct ChannelOut<'a, C> where @@ -40,7 +40,7 @@ where { /// The unique identifier for the channel. pub id: ChannelId, - /// A reference to the [RollupConfig] used to + /// A reference to the [`RollupConfig`] used to /// check the max RLP bytes per channel when /// encoding and accepting the batch. pub config: &'a RollupConfig, @@ -58,12 +58,12 @@ impl<'a, C> ChannelOut<'a, C> where C: ChannelCompressor, { - /// Creates a new [ChannelOut] with the given [ChannelId]. + /// Creates a new [`ChannelOut`] with the given [`ChannelId`]. pub const fn new(id: ChannelId, config: &'a RollupConfig, compressor: C) -> Self { Self { id, config, rlp_length: 0, frame_number: 0, closed: false, compressor } } - /// Resets the [ChannelOut] to its initial state. + /// Resets the [`ChannelOut`] to its initial state. pub fn reset(&mut self) { self.rlp_length = 0; self.frame_number = 0; @@ -76,7 +76,7 @@ where SmallRng::fill_bytes(&mut small_rng, &mut self.id); } - /// Accepts the given [Batch] data into the [ChannelOut], compressing it + /// Accepts the given [Batch] data into the [`ChannelOut`], compressing it /// into frames. pub fn add_batch(&mut self, batch: Batch) -> Result<(), ChannelOutError> { if self.closed { @@ -120,7 +120,7 @@ where self.closed = true; } - /// Outputs a [Frame] from the [ChannelOut]. + /// Outputs a [Frame] from the [`ChannelOut`]. pub fn output_frame(&mut self, max_size: usize) -> Result { if max_size < FRAME_V0_OVERHEAD { return Err(ChannelOutError::MaxFrameSizeTooSmall); @@ -136,7 +136,7 @@ where } // Read `max_size` bytes from the compressed data. - let mut data = Vec::with_capacity(max_size); + let mut data = vec![0u8; max_size]; self.compressor.read(&mut data).map_err(ChannelOutError::Compression)?; frame.data.extend_from_slice(data.as_slice()); @@ -150,6 +150,7 @@ where mod tests { use super::*; use crate::{CompressorWriter, test_utils::MockCompressor}; + use alloc::vec::Vec; use alloy_primitives::Bytes; use kona_protocol::{SingleBatch, SpanBatch}; diff --git a/kona/crates/batcher/comp/src/config.rs b/rust/kona/crates/batcher/comp/src/config.rs similarity index 68% rename from kona/crates/batcher/comp/src/config.rs rename to rust/kona/crates/batcher/comp/src/config.rs index ea9be16364e95..bc6850e4cc86b 100644 --- a/kona/crates/batcher/comp/src/config.rs +++ b/rust/kona/crates/batcher/comp/src/config.rs @@ -5,16 +5,16 @@ use crate::{CompressionAlgo, CompressorType}; /// Config for the compressor itself. #[derive(Debug, Clone)] pub struct Config { - /// TargetOutputSize is the target size that the compressed data should reach. + /// `TargetOutputSize` is the target size that the compressed data should reach. /// The shadow compressor guarantees that the compressed data stays below /// this bound. The ratio compressor might go over. pub target_output_size: u64, - /// ApproxComprRatio to assume (only ratio compressor). Should be slightly smaller + /// `ApproxComprRatio` to assume (only ratio compressor). Should be slightly smaller /// than average from experiments to avoid the chances of creating a small /// additional leftover frame. pub approx_compr_ratio: f64, - /// Kind of compressor to use. Must be one of KindKeys. If unset, NewCompressor - /// will default to RatioKind. + /// Kind of compressor to use. Must be one of `KindKeys`. If unset, `NewCompressor` + /// will default to `RatioKind`. pub kind: CompressorType, /// Type of compression algorithm to use. Must be one of [zlib, brotli-(9|10|11)] diff --git a/kona/crates/batcher/comp/src/lib.rs b/rust/kona/crates/batcher/comp/src/lib.rs similarity index 95% rename from kona/crates/batcher/comp/src/lib.rs rename to rust/kona/crates/batcher/comp/src/lib.rs index d406f52e8190e..b665b74c59be6 100644 --- a/kona/crates/batcher/comp/src/lib.rs +++ b/rust/kona/crates/batcher/comp/src/lib.rs @@ -4,7 +4,7 @@ html_favicon_url = "https://raw.githubusercontent.com/op-rs/kona/main/assets/favicon.ico", issue_tracker_base_url = "https://github.com/op-rs/kona/issues/" )] -#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))] +#![cfg_attr(docsrs, feature(doc_cfg))] #![cfg_attr(not(feature = "std"), no_std)] extern crate alloc; diff --git a/kona/crates/batcher/comp/src/mod.rs b/rust/kona/crates/batcher/comp/src/mod.rs similarity index 100% rename from kona/crates/batcher/comp/src/mod.rs rename to rust/kona/crates/batcher/comp/src/mod.rs diff --git a/kona/crates/batcher/comp/src/ratio.rs b/rust/kona/crates/batcher/comp/src/ratio.rs similarity index 94% rename from kona/crates/batcher/comp/src/ratio.rs rename to rust/kona/crates/batcher/comp/src/ratio.rs index c9704c951bed9..29bda6f910be7 100644 --- a/kona/crates/batcher/comp/src/ratio.rs +++ b/rust/kona/crates/batcher/comp/src/ratio.rs @@ -14,7 +14,7 @@ use crate::{CompressorResult, CompressorWriter, Config, VariantCompressor}; /// /// full = uncompressedLength * approxCompRatio >= targetFrameSize * targetNumFrames /// -/// The ratio compressor wraps a [VariantCompressor] which dispatches to the +/// The ratio compressor wraps a [`VariantCompressor`] which dispatches to the /// appropriate compression algorithm (ZLIB or Brotli). #[derive(Debug, Clone)] pub struct RatioCompressor { @@ -22,12 +22,12 @@ pub struct RatioCompressor { config: Config, /// The amount of data currently in the compressor. lake: u64, - /// The inner [VariantCompressor] that will be used to compress the data. + /// The inner [`VariantCompressor`] that will be used to compress the data. compressor: VariantCompressor, } impl RatioCompressor { - /// Create a new [RatioCompressor] with the given [VariantCompressor]. + /// Create a new [`RatioCompressor`] with the given [`VariantCompressor`]. pub const fn new(config: Config, compressor: VariantCompressor) -> Self { Self { config, lake: 0, compressor } } diff --git a/kona/crates/batcher/comp/src/shadow.rs b/rust/kona/crates/batcher/comp/src/shadow.rs similarity index 96% rename from kona/crates/batcher/comp/src/shadow.rs rename to rust/kona/crates/batcher/comp/src/shadow.rs index 735521f208806..8d66efee35804 100644 --- a/kona/crates/batcher/comp/src/shadow.rs +++ b/rust/kona/crates/batcher/comp/src/shadow.rs @@ -32,7 +32,7 @@ const CLOSE_OVERHEAD_ZLIB: u64 = 9; pub struct ShadowCompressor { /// The compressor configuration. config: Config, - /// The inner [VariantCompressor] that will be used to compress the data. + /// The inner [`VariantCompressor`] that will be used to compress the data. compressor: VariantCompressor, /// The shadow compressor. shadow: VariantCompressor, @@ -44,7 +44,7 @@ pub struct ShadowCompressor { } impl ShadowCompressor { - /// Creates a new [ShadowCompressor] with the given [VariantCompressor]. + /// Creates a new [`ShadowCompressor`] with the given [`VariantCompressor`]. pub const fn new( config: Config, compressor: VariantCompressor, diff --git a/kona/crates/batcher/comp/src/test_utils.rs b/rust/kona/crates/batcher/comp/src/test_utils.rs similarity index 100% rename from kona/crates/batcher/comp/src/test_utils.rs rename to rust/kona/crates/batcher/comp/src/test_utils.rs diff --git a/kona/crates/batcher/comp/src/traits.rs b/rust/kona/crates/batcher/comp/src/traits.rs similarity index 93% rename from kona/crates/batcher/comp/src/traits.rs rename to rust/kona/crates/batcher/comp/src/traits.rs index 50ef1a32942f6..5a70d226d2b27 100644 --- a/kona/crates/batcher/comp/src/traits.rs +++ b/rust/kona/crates/batcher/comp/src/traits.rs @@ -6,7 +6,7 @@ use alloc::vec::Vec; /// Compressor Writer /// /// A trait that expands the standard library `Write` trait to include -/// compression-specific methods and return [CompressorResult] instead of +/// compression-specific methods and return [`CompressorResult`] instead of /// standard library `Result`. #[allow(clippy::len_without_is_empty)] pub trait CompressorWriter { diff --git a/kona/crates/batcher/comp/src/types.rs b/rust/kona/crates/batcher/comp/src/types.rs similarity index 100% rename from kona/crates/batcher/comp/src/types.rs rename to rust/kona/crates/batcher/comp/src/types.rs diff --git a/kona/crates/batcher/comp/src/variant.rs b/rust/kona/crates/batcher/comp/src/variant.rs similarity index 83% rename from kona/crates/batcher/comp/src/variant.rs rename to rust/kona/crates/batcher/comp/src/variant.rs index 969aecaf813ea..c023698be8dbf 100644 --- a/kona/crates/batcher/comp/src/variant.rs +++ b/rust/kona/crates/batcher/comp/src/variant.rs @@ -1,4 +1,4 @@ -//! A variant over the different implementations of [ChannelCompressor]. +//! A variant over the different implementations of [`ChannelCompressor`]. use crate::{ BrotliCompressor, ChannelCompressor, CompressionAlgo, CompressorResult, CompressorWriter, @@ -7,7 +7,7 @@ use crate::{ use kona_genesis::RollupConfig; /// The channel compressor wraps the brotli and zlib compressor types, -/// implementing the [ChannelCompressor] trait itself. +/// implementing the [`ChannelCompressor`] trait itself. #[derive(Debug, Clone)] pub enum VariantCompressor { /// The brotli compressor. @@ -17,7 +17,7 @@ pub enum VariantCompressor { } impl VariantCompressor { - /// Constructs a [VariantCompressor] using the given [RollupConfig] and timestamp. + /// Constructs a [`VariantCompressor`] using the given [`RollupConfig`] and timestamp. pub fn from_timestamp(config: &RollupConfig, timestamp: u64) -> Self { if config.is_fjord_active(timestamp) { Self::Brotli(BrotliCompressor::new(CompressionAlgo::Brotli10)) @@ -83,9 +83,9 @@ impl ChannelCompressor for VariantCompressor { impl From for VariantCompressor { fn from(algo: CompressionAlgo) -> Self { match algo { - lvl @ CompressionAlgo::Brotli9 => Self::Brotli(BrotliCompressor::new(lvl)), - lvl @ CompressionAlgo::Brotli10 => Self::Brotli(BrotliCompressor::new(lvl)), - lvl @ CompressionAlgo::Brotli11 => Self::Brotli(BrotliCompressor::new(lvl)), + lvl @ (CompressionAlgo::Brotli9 | + CompressionAlgo::Brotli10 | + CompressionAlgo::Brotli11) => Self::Brotli(BrotliCompressor::new(lvl)), CompressionAlgo::Zlib => Self::Zlib(ZlibCompressor::new()), } } diff --git a/kona/crates/batcher/comp/src/zlib.rs b/rust/kona/crates/batcher/comp/src/zlib.rs similarity index 100% rename from kona/crates/batcher/comp/src/zlib.rs rename to rust/kona/crates/batcher/comp/src/zlib.rs diff --git a/kona/crates/node/disc/Cargo.toml b/rust/kona/crates/node/disc/Cargo.toml similarity index 100% rename from kona/crates/node/disc/Cargo.toml rename to rust/kona/crates/node/disc/Cargo.toml diff --git a/kona/crates/node/disc/src/builder.rs b/rust/kona/crates/node/disc/src/builder.rs similarity index 100% rename from kona/crates/node/disc/src/builder.rs rename to rust/kona/crates/node/disc/src/builder.rs diff --git a/kona/crates/node/disc/src/driver.rs b/rust/kona/crates/node/disc/src/driver.rs similarity index 99% rename from kona/crates/node/disc/src/driver.rs rename to rust/kona/crates/node/disc/src/driver.rs index 269711e6684f8..094ce8fa4e233 100644 --- a/kona/crates/node/disc/src/driver.rs +++ b/rust/kona/crates/node/disc/src/driver.rs @@ -487,10 +487,10 @@ mod tests { let mainnet: Vec = mainnet .iter() .filter_map(|node| { - if let BootNode::Enr(enr) = node { - if EnrValidation::validate(enr, OP_MAINNET_CHAIN_ID).is_invalid() { - return None; - } + if let BootNode::Enr(enr) = node && + EnrValidation::validate(enr, OP_MAINNET_CHAIN_ID).is_invalid() + { + return None; } let node_contact = NodeContact::try_from_multiaddr(node.to_multiaddr().unwrap()).unwrap(); diff --git a/kona/crates/node/disc/src/error.rs b/rust/kona/crates/node/disc/src/error.rs similarity index 100% rename from kona/crates/node/disc/src/error.rs rename to rust/kona/crates/node/disc/src/error.rs diff --git a/kona/crates/node/disc/src/handler.rs b/rust/kona/crates/node/disc/src/handler.rs similarity index 100% rename from kona/crates/node/disc/src/handler.rs rename to rust/kona/crates/node/disc/src/handler.rs diff --git a/kona/crates/node/disc/src/lib.rs b/rust/kona/crates/node/disc/src/lib.rs similarity index 100% rename from kona/crates/node/disc/src/lib.rs rename to rust/kona/crates/node/disc/src/lib.rs diff --git a/kona/crates/node/disc/src/metrics.rs b/rust/kona/crates/node/disc/src/metrics.rs similarity index 97% rename from kona/crates/node/disc/src/metrics.rs rename to rust/kona/crates/node/disc/src/metrics.rs index ef4ce0fcf1a30..63981a3e78fb3 100644 --- a/kona/crates/node/disc/src/metrics.rs +++ b/rust/kona/crates/node/disc/src/metrics.rs @@ -8,7 +8,7 @@ impl Metrics { /// Identifier for discv5 events. pub const DISCOVERY_EVENT: &str = "kona_node_discovery_events"; - /// Counter for the number of FIND_NODE requests. + /// Counter for the number of `FIND_NODE` requests. pub const FIND_NODE_REQUEST: &str = "kona_node_find_node_requests"; /// Timer for the time taken to store ENRs in the bootstore. diff --git a/kona/crates/node/engine/Cargo.toml b/rust/kona/crates/node/engine/Cargo.toml similarity index 97% rename from kona/crates/node/engine/Cargo.toml rename to rust/kona/crates/node/engine/Cargo.toml index 20113becb8a56..3545fcaf9f9df 100644 --- a/kona/crates/node/engine/Cargo.toml +++ b/rust/kona/crates/node/engine/Cargo.toml @@ -69,4 +69,6 @@ rstest.workspace = true [features] metrics = [ "dep:metrics" ] -test-utils = [] +test-utils = [ + "kona-protocol/test-utils" +] diff --git a/kona/crates/node/engine/README.md b/rust/kona/crates/node/engine/README.md similarity index 100% rename from kona/crates/node/engine/README.md rename to rust/kona/crates/node/engine/README.md diff --git a/kona/crates/node/engine/src/attributes.rs b/rust/kona/crates/node/engine/src/attributes.rs similarity index 99% rename from kona/crates/node/engine/src/attributes.rs rename to rust/kona/crates/node/engine/src/attributes.rs index 5eaf24a3ecdbf..7815362ddeeaa 100644 --- a/kona/crates/node/engine/src/attributes.rs +++ b/rust/kona/crates/node/engine/src/attributes.rs @@ -57,7 +57,7 @@ impl AttributesMatch { block: &Block, ) -> Self { let attr_withdrawals = attributes.attributes().payload_attributes.withdrawals.as_ref(); - let attr_withdrawals = attr_withdrawals.map(|w| Withdrawals::new(w.to_vec())); + let attr_withdrawals = attr_withdrawals.map(|w| Withdrawals::new(w.clone())); let block_withdrawals = block.withdrawals.as_ref(); if config.is_canyon_active(block.header.timestamp) { @@ -288,11 +288,7 @@ impl AttributesMatch { // Let's extract the list of attribute transactions let default_vec = vec![]; - let attributes_txs = attributes - .attributes() - .transactions - .as_ref() - .map_or_else(|| &default_vec, |attrs| attrs); + let attributes_txs = attributes.attributes().transactions.as_ref().unwrap_or(&default_vec); // Check transactions if let mismatch @ Self::Mismatch(_) = Self::check_transactions(attributes_txs, block) { diff --git a/kona/crates/node/engine/src/client.rs b/rust/kona/crates/node/engine/src/client.rs similarity index 99% rename from kona/crates/node/engine/src/client.rs rename to rust/kona/crates/node/engine/src/client.rs index 2f1b49198d437..dd7b4fbc2d0f1 100644 --- a/kona/crates/node/engine/src/client.rs +++ b/rust/kona/crates/node/engine/src/client.rs @@ -64,7 +64,7 @@ pub enum EngineClientError { pub type HyperAuthClient> = HyperClient>>; /// Engine API client used to communicate with L1/L2 ELs and optional rollup-boost. -/// EngineClient trait that is very coupled to its only implementation. +/// `EngineClient` trait that is very coupled to its only implementation. /// The main reason this exists is for mocking/unit testing. #[async_trait] pub trait EngineClient: OpEngineApi> + Send + Sync { @@ -94,7 +94,7 @@ pub trait EngineClient: OpEngineApi> + Send + Sy numtag: BlockNumberOrTag, ) -> Result>, EngineClientError>; - /// Fetches the [L2BlockInfo] by [BlockNumberOrTag]. + /// Fetches the [`L2BlockInfo`] by [`BlockNumberOrTag`]. async fn l2_block_info_by_label( &self, numtag: BlockNumberOrTag, diff --git a/kona/crates/node/engine/src/kinds.rs b/rust/kona/crates/node/engine/src/kinds.rs similarity index 100% rename from kona/crates/node/engine/src/kinds.rs rename to rust/kona/crates/node/engine/src/kinds.rs diff --git a/kona/crates/node/engine/src/lib.rs b/rust/kona/crates/node/engine/src/lib.rs similarity index 98% rename from kona/crates/node/engine/src/lib.rs rename to rust/kona/crates/node/engine/src/lib.rs index 63b564d84e22a..e20793c162bbb 100644 --- a/kona/crates/node/engine/src/lib.rs +++ b/rust/kona/crates/node/engine/src/lib.rs @@ -4,7 +4,7 @@ html_favicon_url = "https://raw.githubusercontent.com/op-rs/kona/main/assets/favicon.ico", issue_tracker_base_url = "https://github.com/op-rs/kona/issues/" )] -#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))] +#![cfg_attr(docsrs, feature(doc_cfg))] //! ## Architecture //! diff --git a/kona/crates/node/engine/src/metrics/mod.rs b/rust/kona/crates/node/engine/src/metrics/mod.rs similarity index 100% rename from kona/crates/node/engine/src/metrics/mod.rs rename to rust/kona/crates/node/engine/src/metrics/mod.rs diff --git a/kona/crates/node/engine/src/query.rs b/rust/kona/crates/node/engine/src/query.rs similarity index 98% rename from kona/crates/node/engine/src/query.rs rename to rust/kona/crates/node/engine/src/query.rs index e30c36ae3146e..aa879d4373cf9 100644 --- a/kona/crates/node/engine/src/query.rs +++ b/rust/kona/crates/node/engine/src/query.rs @@ -34,7 +34,7 @@ pub enum EngineQueries { OutputAtBlock { /// The block number or tag to retrieve the output for. block: BlockNumberOrTag, - /// Response channel for (block_info, output_root, engine_state). + /// Response channel for (`block_info`, `output_root`, `engine_state`). sender: Sender<(L2BlockInfo, OutputRoot, EngineState)>, }, /// Subscribe to engine state updates via a watch channel receiver. diff --git a/kona/crates/node/engine/src/rollup_boost.rs b/rust/kona/crates/node/engine/src/rollup_boost.rs similarity index 92% rename from kona/crates/node/engine/src/rollup_boost.rs rename to rust/kona/crates/node/engine/src/rollup_boost.rs index 57add9b53a00b..9dc2107983964 100644 --- a/kona/crates/node/engine/src/rollup_boost.rs +++ b/rust/kona/crates/node/engine/src/rollup_boost.rs @@ -28,20 +28,20 @@ pub struct RollupBoostServerArgs { /// Configuration for the Flashblocks client. #[derive(Clone, Debug)] pub struct FlashblocksClientArgs { - /// Flashblocks Builder WebSocket URL + /// Flashblocks Builder `WebSocket` URL pub flashblocks_builder_url: Url, - /// Flashblocks WebSocket host for outbound connections + /// Flashblocks `WebSocket` host for outbound connections pub flashblocks_host: String, - /// Flashblocks WebSocket port for outbound connections + /// Flashblocks `WebSocket` port for outbound connections pub flashblocks_port: u16, /// Websocket connection configuration pub flashblocks_ws_config: FlashblocksWebsocketConfig, } -/// Configuration for the Flashblocks WebSocket connection. +/// Configuration for the Flashblocks `WebSocket` connection. #[derive(Debug, Clone, Copy)] pub struct FlashblocksWebsocketConfig { /// Minimum time for exponential backoff for timeout if builder disconnected diff --git a/kona/crates/node/engine/src/state/core.rs b/rust/kona/crates/node/engine/src/state/core.rs similarity index 99% rename from kona/crates/node/engine/src/state/core.rs rename to rust/kona/crates/node/engine/src/state/core.rs index 6f4de6b43b649..70a95aa59b2a8 100644 --- a/kona/crates/node/engine/src/state/core.rs +++ b/rust/kona/crates/node/engine/src/state/core.rs @@ -26,7 +26,7 @@ use serde::{Deserialize, Serialize}; pub struct EngineSyncState { /// Most recent block found on the P2P network (lowest safety level). unsafe_head: L2BlockInfo, - /// Cross-verified unsafe head (equal to unsafe_head pre-interop). + /// Cross-verified unsafe head (equal to `unsafe_head` pre-interop). cross_unsafe_head: L2BlockInfo, /// Derived from L1 data as a completed span-batch, but not yet cross-verified. local_safe_head: L2BlockInfo, diff --git a/kona/crates/node/engine/src/state/mod.rs b/rust/kona/crates/node/engine/src/state/mod.rs similarity index 100% rename from kona/crates/node/engine/src/state/mod.rs rename to rust/kona/crates/node/engine/src/state/mod.rs diff --git a/kona/crates/node/engine/src/sync/error.rs b/rust/kona/crates/node/engine/src/sync/error.rs similarity index 100% rename from kona/crates/node/engine/src/sync/error.rs rename to rust/kona/crates/node/engine/src/sync/error.rs diff --git a/kona/crates/node/engine/src/sync/forkchoice.rs b/rust/kona/crates/node/engine/src/sync/forkchoice.rs similarity index 97% rename from kona/crates/node/engine/src/sync/forkchoice.rs rename to rust/kona/crates/node/engine/src/sync/forkchoice.rs index c1c604d46cbc7..002478e432067 100644 --- a/kona/crates/node/engine/src/sync/forkchoice.rs +++ b/rust/kona/crates/node/engine/src/sync/forkchoice.rs @@ -9,8 +9,8 @@ use kona_protocol::L2BlockInfo; use op_alloy_network::Optimism; use std::fmt::Display; -/// An unsafe, safe, and finalized [L2BlockInfo] returned by the [crate::find_starting_forkchoice] -/// function. +/// An unsafe, safe, and finalized [`L2BlockInfo`] returned by the +/// [`crate::find_starting_forkchoice`] function. #[derive(Debug, Clone, Copy, PartialEq, Eq)] pub struct L2ForkchoiceState { /// The unsafe L2 block. diff --git a/kona/crates/node/engine/src/sync/mod.rs b/rust/kona/crates/node/engine/src/sync/mod.rs similarity index 94% rename from kona/crates/node/engine/src/sync/mod.rs rename to rust/kona/crates/node/engine/src/sync/mod.rs index 3d798f2146a82..90f7d1a83eb15 100644 --- a/kona/crates/node/engine/src/sync/mod.rs +++ b/rust/kona/crates/node/engine/src/sync/mod.rs @@ -100,15 +100,13 @@ pub async fn find_starting_forkchoice( ); current_fc.safe = safe_cursor; break; - } else { - let block = engine_client - .get_l2_block(safe_cursor.block_info.parent_hash.into()) - .full() - .await? - .ok_or(SyncStartError::BlockNotFound(safe_cursor.block_info.parent_hash.into()))?; - safe_cursor = - L2BlockInfo::from_block_and_genesis(&block.into_consensus(), &cfg.genesis)?; } + let block = engine_client + .get_l2_block(safe_cursor.block_info.parent_hash.into()) + .full() + .await? + .ok_or(SyncStartError::BlockNotFound(safe_cursor.block_info.parent_hash.into()))?; + safe_cursor = L2BlockInfo::from_block_and_genesis(&block.into_consensus(), &cfg.genesis)?; } // Leave the finalized block as-is, and return the current forkchoice. diff --git a/kona/crates/node/engine/src/task_queue/core.rs b/rust/kona/crates/node/engine/src/task_queue/core.rs similarity index 98% rename from kona/crates/node/engine/src/task_queue/core.rs rename to rust/kona/crates/node/engine/src/task_queue/core.rs index 50d8f910bb678..9ebad4f9cb9fd 100644 --- a/kona/crates/node/engine/src/task_queue/core.rs +++ b/rust/kona/crates/node/engine/src/task_queue/core.rs @@ -176,7 +176,7 @@ pub enum EngineResetError { /// An error occurred while traversing the L1 for the sync starting point. #[error(transparent)] SyncStart(#[from] SyncStartError), - /// An error occurred while constructing the SystemConfig for the new safe head. + /// An error occurred while constructing the `SystemConfig` for the new safe head. #[error(transparent)] SystemConfigConversion(#[from] OpBlockConversionError), } diff --git a/kona/crates/node/engine/src/task_queue/mod.rs b/rust/kona/crates/node/engine/src/task_queue/mod.rs similarity index 100% rename from kona/crates/node/engine/src/task_queue/mod.rs rename to rust/kona/crates/node/engine/src/task_queue/mod.rs diff --git a/kona/crates/node/engine/src/task_queue/tasks/build/error.rs b/rust/kona/crates/node/engine/src/task_queue/tasks/build/error.rs similarity index 75% rename from kona/crates/node/engine/src/task_queue/tasks/build/error.rs rename to rust/kona/crates/node/engine/src/task_queue/tasks/build/error.rs index dc1c634b45fcb..0448da7a26a55 100644 --- a/kona/crates/node/engine/src/task_queue/tasks/build/error.rs +++ b/rust/kona/crates/node/engine/src/task_queue/tasks/build/error.rs @@ -1,4 +1,4 @@ -//! Contains error types for the [crate::SynchronizeTask]. +//! Contains error types for the [`crate::SynchronizeTask`]. use crate::{EngineTaskError, task_queue::tasks::task::EngineTaskErrorSeverity}; use alloy_rpc_types_engine::{PayloadId, PayloadStatusEnum}; @@ -42,7 +42,7 @@ pub enum EngineBuildError { EngineSyncing, } -/// An error that occurs when running the [crate::BuildTask]. +/// An error that occurs when running the [`crate::BuildTask`]. #[derive(Debug, Error)] pub enum BuildTaskError { /// An error occurred when building the payload attributes in the engine. @@ -59,21 +59,13 @@ impl EngineTaskError for BuildTaskError { Self::EngineBuildError(EngineBuildError::FinalizedAheadOfUnsafe(_, _)) => { EngineTaskErrorSeverity::Critical } - Self::EngineBuildError(EngineBuildError::AttributesInsertionFailed(_)) => { - EngineTaskErrorSeverity::Temporary - } - Self::EngineBuildError(EngineBuildError::InvalidPayload(_)) => { - EngineTaskErrorSeverity::Temporary - } - Self::EngineBuildError(EngineBuildError::UnexpectedPayloadStatus(_)) => { - EngineTaskErrorSeverity::Temporary - } - Self::EngineBuildError(EngineBuildError::MissingPayloadId) => { - EngineTaskErrorSeverity::Temporary - } - Self::EngineBuildError(EngineBuildError::EngineSyncing) => { - EngineTaskErrorSeverity::Temporary - } + Self::EngineBuildError( + EngineBuildError::AttributesInsertionFailed(_) | + EngineBuildError::InvalidPayload(_) | + EngineBuildError::UnexpectedPayloadStatus(_) | + EngineBuildError::MissingPayloadId | + EngineBuildError::EngineSyncing, + ) => EngineTaskErrorSeverity::Temporary, Self::MpscSend(_) => EngineTaskErrorSeverity::Critical, } } diff --git a/kona/crates/node/engine/src/task_queue/tasks/build/mod.rs b/rust/kona/crates/node/engine/src/task_queue/tasks/build/mod.rs similarity index 100% rename from kona/crates/node/engine/src/task_queue/tasks/build/mod.rs rename to rust/kona/crates/node/engine/src/task_queue/tasks/build/mod.rs diff --git a/kona/crates/node/engine/src/task_queue/tasks/build/task.rs b/rust/kona/crates/node/engine/src/task_queue/tasks/build/task.rs similarity index 92% rename from kona/crates/node/engine/src/task_queue/tasks/build/task.rs rename to rust/kona/crates/node/engine/src/task_queue/tasks/build/task.rs index 8fc4ecda7575e..ab634cbfada07 100644 --- a/kona/crates/node/engine/src/task_queue/tasks/build/task.rs +++ b/rust/kona/crates/node/engine/src/task_queue/tasks/build/task.rs @@ -38,9 +38,9 @@ pub struct BuildTask { } impl BuildTask { - /// Validates the provided [PayloadStatusEnum] according to the rules listed below. + /// Validates the provided [`PayloadStatusEnum`] according to the rules listed below. /// - /// ## Observed [PayloadStatusEnum] Variants + /// ## Observed [`PayloadStatusEnum`] Variants /// - `VALID`: Returns Ok(()) - forkchoice update was successful /// - `INVALID`: Returns error with validation details /// - `SYNCING`: Returns temporary error - EL is syncing @@ -71,11 +71,11 @@ impl BuildTask { /// the payload attributes to build. /// /// ### Success (`VALID`) - /// If the build is successful, the [PayloadId] is returned for sealing and the successful + /// If the build is successful, the [`PayloadId`] is returned for sealing and the successful /// forkchoice update identifier is relayed via the stored `payload_id_tx` sender. /// /// ### Failure (`INVALID`) - /// If the forkchoice update fails, the [BuildTaskError]. + /// If the forkchoice update fails, the [`BuildTaskError`]. /// /// ### Syncing (`SYNCING`) /// If the EL is syncing, the payload attributes are buffered and the function returns early. @@ -93,10 +93,12 @@ impl BuildTask { if state.sync_state.unsafe_head().block_info.number < state.sync_state.finalized_head().block_info.number { - return Err(BuildTaskError::EngineBuildError(EngineBuildError::FinalizedAheadOfUnsafe( - state.sync_state.unsafe_head().block_info.number, - state.sync_state.finalized_head().block_info.number, - ))); + return Err(BuildTaskError::EngineBuildError( + EngineBuildError::FinalizedAheadOfUnsafe( + state.sync_state.unsafe_head().block_info.number, + state.sync_state.finalized_head().block_info.number, + ), + )); } // When inserting a payload, we advertise the parent's unsafe head as the current unsafe diff --git a/kona/crates/node/engine/src/task_queue/tasks/build/task_test.rs b/rust/kona/crates/node/engine/src/task_queue/tasks/build/task_test.rs similarity index 92% rename from kona/crates/node/engine/src/task_queue/tasks/build/task_test.rs rename to rust/kona/crates/node/engine/src/task_queue/tasks/build/task_test.rs index f7af1b11af915..ef212a14059ce 100644 --- a/kona/crates/node/engine/src/task_queue/tasks/build/task_test.rs +++ b/rust/kona/crates/node/engine/src/task_queue/tasks/build/task_test.rs @@ -1,4 +1,4 @@ -//! Tests for BuildTask::execute +//! Tests for `BuildTask::execute` use crate::{ BuildTask, BuildTaskError, EngineBuildError, EngineClient, EngineForkchoiceVersion, @@ -64,7 +64,7 @@ enum TestErr { // Wraps real errors, ignoring details so we can easily match on results. async fn wrapped_execute( - task: &mut BuildTask, + task: &BuildTask, state: &mut EngineState, ) -> Result { match task.execute(state).await { @@ -87,7 +87,7 @@ async fn wrapped_execute( #[case::success(Some(PayloadStatusEnum::Valid), true, None)] #[case::missing_id(Some(PayloadStatusEnum::Valid), false, Some(TestErr::MissingPayloadId))] #[case::fcu_fail(None, false, Some(TestErr::AttributesInsertionFailed))] -#[case::fcu_status_fail(Some(PayloadStatusEnum::Invalid{validation_error: "".to_string()}), false, Some(TestErr::InvalidPayload))] +#[case::fcu_status_fail(Some(PayloadStatusEnum::Invalid{validation_error: String::new()}), false, Some(TestErr::InvalidPayload))] #[case::fcu_status_fail(Some(PayloadStatusEnum::Syncing), false, Some(TestErr::EngineSyncing))] #[case::fcu_status_fail(Some(PayloadStatusEnum::Accepted), false, Some(TestErr::Unexpected))] #[tokio::test] @@ -102,7 +102,7 @@ async fn test_execute_variants( #[values(EngineForkchoiceVersion::V2, EngineForkchoiceVersion::V3)] fcu_version: EngineForkchoiceVersion, ) { - let payload_id = if payload_id_present { Some(PayloadId::new([1u8; 8])) } else { None }; + let payload_id = payload_id_present.then(|| PayloadId::new([1u8; 8])); let parent_block = test_block_info(0); let unsafe_block = test_block_info(1); @@ -112,7 +112,7 @@ async fn test_execute_variants( // Configure client with FCU response. If none, it will err on call, which is also a test case. let engine_client = fcu_status - .map_or(test_engine_client_builder(), |status| { + .map_or_else(test_engine_client_builder, |status| { configure_fcu( test_engine_client_builder(), fcu_version, @@ -130,11 +130,11 @@ async fn test_execute_variants( let (tx, mut rx) = mpsc::channel(1); - let mut task = BuildTask::new( + let task = BuildTask::new( Arc::new(engine_client.clone()), Arc::new(cfg), attributes.clone(), - if with_channel { Some(tx) } else { None }, + with_channel.then_some(tx), ); let mut state = TestEngineStateBuilder::new() @@ -144,7 +144,7 @@ async fn test_execute_variants( .build(); // Execute: Call execute - let result = wrapped_execute(&mut task, &mut state).await; + let result = wrapped_execute(&task, &mut state).await; if expected_err.is_some() { assert_eq!(expected_err, result.err()); diff --git a/kona/crates/node/engine/src/task_queue/tasks/consolidate/error.rs b/rust/kona/crates/node/engine/src/task_queue/tasks/consolidate/error.rs similarity index 100% rename from kona/crates/node/engine/src/task_queue/tasks/consolidate/error.rs rename to rust/kona/crates/node/engine/src/task_queue/tasks/consolidate/error.rs diff --git a/kona/crates/node/engine/src/task_queue/tasks/consolidate/mod.rs b/rust/kona/crates/node/engine/src/task_queue/tasks/consolidate/mod.rs similarity index 100% rename from kona/crates/node/engine/src/task_queue/tasks/consolidate/mod.rs rename to rust/kona/crates/node/engine/src/task_queue/tasks/consolidate/mod.rs diff --git a/kona/crates/node/engine/src/task_queue/tasks/consolidate/task.rs b/rust/kona/crates/node/engine/src/task_queue/tasks/consolidate/task.rs similarity index 99% rename from kona/crates/node/engine/src/task_queue/tasks/consolidate/task.rs rename to rust/kona/crates/node/engine/src/task_queue/tasks/consolidate/task.rs index 35c103f9a636d..79e37636b3952 100644 --- a/kona/crates/node/engine/src/task_queue/tasks/consolidate/task.rs +++ b/rust/kona/crates/node/engine/src/task_queue/tasks/consolidate/task.rs @@ -95,7 +95,7 @@ impl ConsolidateTask { Ok(()) } - /// This provides symmetric fallback behavior to with build_and_seal. + /// This provides symmetric fallback behavior to with `build_and_seal`. async fn reconcile_to_safe_head( &self, state: &mut EngineState, diff --git a/kona/crates/node/engine/src/task_queue/tasks/finalize/error.rs b/rust/kona/crates/node/engine/src/task_queue/tasks/finalize/error.rs similarity index 79% rename from kona/crates/node/engine/src/task_queue/tasks/finalize/error.rs rename to rust/kona/crates/node/engine/src/task_queue/tasks/finalize/error.rs index 60a11b4da96e4..c8444c2595efd 100644 --- a/kona/crates/node/engine/src/task_queue/tasks/finalize/error.rs +++ b/rust/kona/crates/node/engine/src/task_queue/tasks/finalize/error.rs @@ -1,4 +1,4 @@ -//! Contains error types for the [crate::FinalizeTask]. +//! Contains error types for the [`crate::FinalizeTask`]. use crate::{ EngineTaskError, SynchronizeTaskError, task_queue::tasks::task::EngineTaskErrorSeverity, @@ -7,7 +7,7 @@ use alloy_transport::{RpcError, TransportErrorKind}; use kona_protocol::FromBlockError; use thiserror::Error; -/// An error that occurs when running the [crate::FinalizeTask]. +/// An error that occurs when running the [`crate::FinalizeTask`]. #[derive(Debug, Error)] pub enum FinalizeTaskError { /// The block is not safe, and therefore cannot be finalized. @@ -32,9 +32,9 @@ pub enum FinalizeTaskError { impl EngineTaskError for FinalizeTaskError { fn severity(&self) -> EngineTaskErrorSeverity { match self { - Self::BlockNotSafe => EngineTaskErrorSeverity::Critical, - Self::BlockNotFound(_) => EngineTaskErrorSeverity::Critical, - Self::FromBlock(_) => EngineTaskErrorSeverity::Critical, + Self::BlockNotSafe | Self::BlockNotFound(_) | Self::FromBlock(_) => { + EngineTaskErrorSeverity::Critical + } Self::TransportError(_) => EngineTaskErrorSeverity::Temporary, Self::ForkchoiceUpdateFailed(inner) => inner.severity(), } diff --git a/kona/crates/node/engine/src/task_queue/tasks/finalize/mod.rs b/rust/kona/crates/node/engine/src/task_queue/tasks/finalize/mod.rs similarity index 100% rename from kona/crates/node/engine/src/task_queue/tasks/finalize/mod.rs rename to rust/kona/crates/node/engine/src/task_queue/tasks/finalize/mod.rs diff --git a/kona/crates/node/engine/src/task_queue/tasks/finalize/task.rs b/rust/kona/crates/node/engine/src/task_queue/tasks/finalize/task.rs similarity index 100% rename from kona/crates/node/engine/src/task_queue/tasks/finalize/task.rs rename to rust/kona/crates/node/engine/src/task_queue/tasks/finalize/task.rs diff --git a/kona/crates/node/engine/src/task_queue/tasks/insert/error.rs b/rust/kona/crates/node/engine/src/task_queue/tasks/insert/error.rs similarity index 71% rename from kona/crates/node/engine/src/task_queue/tasks/insert/error.rs rename to rust/kona/crates/node/engine/src/task_queue/tasks/insert/error.rs index 8d0cfc021640a..2d4d4512ea06a 100644 --- a/kona/crates/node/engine/src/task_queue/tasks/insert/error.rs +++ b/rust/kona/crates/node/engine/src/task_queue/tasks/insert/error.rs @@ -1,6 +1,4 @@ -//! Contains the error types for the [InsertTask]. -//! -//! [InsertTask]: crate::InsertTask +//! Contains the error types for the [`InsertTask`](crate::InsertTask). use crate::{ EngineTaskError, SynchronizeTaskError, task_queue::tasks::task::EngineTaskErrorSeverity, @@ -10,9 +8,7 @@ use alloy_transport::{RpcError, TransportErrorKind}; use kona_protocol::FromBlockError; use op_alloy_rpc_types_engine::OpPayloadError; -/// An error that occurs when running the [InsertTask]. -/// -/// [InsertTask]: crate::InsertTask +/// An error that occurs when running the [`InsertTask`](crate::InsertTask). #[derive(Debug, thiserror::Error)] pub enum InsertTaskError { /// Error converting a payload into a block. @@ -35,10 +31,12 @@ pub enum InsertTaskError { impl EngineTaskError for InsertTaskError { fn severity(&self) -> EngineTaskErrorSeverity { match self { - Self::FromBlockError(_) => EngineTaskErrorSeverity::Critical, - Self::InsertFailed(_) => EngineTaskErrorSeverity::Temporary, - Self::UnexpectedPayloadStatus(_) => EngineTaskErrorSeverity::Temporary, - Self::L2BlockInfoConstruction(_) => EngineTaskErrorSeverity::Critical, + Self::FromBlockError(_) | Self::L2BlockInfoConstruction(_) => { + EngineTaskErrorSeverity::Critical + } + Self::InsertFailed(_) | Self::UnexpectedPayloadStatus(_) => { + EngineTaskErrorSeverity::Temporary + } Self::ForkchoiceUpdateFailed(inner) => inner.severity(), } } diff --git a/kona/crates/node/engine/src/task_queue/tasks/insert/mod.rs b/rust/kona/crates/node/engine/src/task_queue/tasks/insert/mod.rs similarity index 100% rename from kona/crates/node/engine/src/task_queue/tasks/insert/mod.rs rename to rust/kona/crates/node/engine/src/task_queue/tasks/insert/mod.rs diff --git a/kona/crates/node/engine/src/task_queue/tasks/insert/task.rs b/rust/kona/crates/node/engine/src/task_queue/tasks/insert/task.rs similarity index 100% rename from kona/crates/node/engine/src/task_queue/tasks/insert/task.rs rename to rust/kona/crates/node/engine/src/task_queue/tasks/insert/task.rs diff --git a/kona/crates/node/engine/src/task_queue/tasks/mod.rs b/rust/kona/crates/node/engine/src/task_queue/tasks/mod.rs similarity index 100% rename from kona/crates/node/engine/src/task_queue/tasks/mod.rs rename to rust/kona/crates/node/engine/src/task_queue/tasks/mod.rs diff --git a/kona/crates/node/engine/src/task_queue/tasks/seal/error.rs b/rust/kona/crates/node/engine/src/task_queue/tasks/seal/error.rs similarity index 80% rename from kona/crates/node/engine/src/task_queue/tasks/seal/error.rs rename to rust/kona/crates/node/engine/src/task_queue/tasks/seal/error.rs index 736fa24aea2a0..a283b910ce088 100644 --- a/kona/crates/node/engine/src/task_queue/tasks/seal/error.rs +++ b/rust/kona/crates/node/engine/src/task_queue/tasks/seal/error.rs @@ -1,4 +1,4 @@ -//! Contains error types for the [crate::SynchronizeTask]. +//! Contains error types for the [`crate::SynchronizeTask`]. use crate::{EngineTaskError, InsertTaskError, task_queue::tasks::task::EngineTaskErrorSeverity}; use alloy_transport::{RpcError, TransportErrorKind}; @@ -7,7 +7,7 @@ use op_alloy_rpc_types_engine::OpExecutionPayloadEnvelope; use thiserror::Error; use tokio::sync::mpsc; -/// An error that occurs when running the [crate::SealTask]. +/// An error that occurs when running the [`crate::SealTask`]. #[derive(Debug, Error)] pub enum SealTaskError { /// Impossible to insert the payload into the engine. @@ -34,9 +34,7 @@ pub enum SealTaskError { FromBlock(#[from] FromBlockError), /// Error sending the built payload envelope. #[error(transparent)] - MpscSend( - #[from] Box>>, - ), + MpscSend(#[from] Box>>), /// The clock went backwards. #[error("The clock went backwards")] ClockWentBackwards, @@ -56,11 +54,11 @@ impl EngineTaskError for SealTaskError { Self::PayloadInsertionFailed(inner) => inner.severity(), Self::GetPayloadFailed(_) => EngineTaskErrorSeverity::Temporary, Self::HoloceneInvalidFlush => EngineTaskErrorSeverity::Flush, - Self::DepositOnlyPayloadReattemptFailed => EngineTaskErrorSeverity::Critical, - Self::DepositOnlyPayloadFailed => EngineTaskErrorSeverity::Critical, - Self::FromBlock(_) => EngineTaskErrorSeverity::Critical, - Self::MpscSend(_) => EngineTaskErrorSeverity::Critical, - Self::ClockWentBackwards => EngineTaskErrorSeverity::Critical, + Self::DepositOnlyPayloadReattemptFailed | + Self::DepositOnlyPayloadFailed | + Self::FromBlock(_) | + Self::MpscSend(_) | + Self::ClockWentBackwards | Self::UnsafeHeadChangedSinceBuild => EngineTaskErrorSeverity::Critical, } } diff --git a/kona/crates/node/engine/src/task_queue/tasks/seal/mod.rs b/rust/kona/crates/node/engine/src/task_queue/tasks/seal/mod.rs similarity index 100% rename from kona/crates/node/engine/src/task_queue/tasks/seal/mod.rs rename to rust/kona/crates/node/engine/src/task_queue/tasks/seal/mod.rs diff --git a/kona/crates/node/engine/src/task_queue/tasks/seal/task.rs b/rust/kona/crates/node/engine/src/task_queue/tasks/seal/task.rs similarity index 98% rename from kona/crates/node/engine/src/task_queue/tasks/seal/task.rs rename to rust/kona/crates/node/engine/src/task_queue/tasks/seal/task.rs index 86885c0e4d183..4fe640779b220 100644 --- a/kona/crates/node/engine/src/task_queue/tasks/seal/task.rs +++ b/rust/kona/crates/node/engine/src/task_queue/tasks/seal/task.rs @@ -118,9 +118,9 @@ impl SealTask { /// Inserts a payload into the engine with Holocene fallback support. /// /// This function handles: - /// 1. Executing the InsertTask to import the payload + /// 1. Executing the `InsertTask` to import the payload /// 2. Handling deposits-only payload failures - /// 3. Holocene fallback via build_and_seal if needed + /// 3. Holocene fallback via `build_and_seal` if needed /// /// Returns Ok(()) if the payload is successfully inserted, or an error if insertion fails. async fn insert_payload( @@ -169,7 +169,7 @@ impl SealTask { Err(SealTaskError::HoloceneInvalidFlush) } Err(_) => Err(SealTaskError::DepositOnlyPayloadReattemptFailed), - } + }; } Err(e) => { error!(target: "engine", "Payload import failed: {e}"); @@ -239,7 +239,7 @@ impl SealTask { if let Some(tx) = &self.result_tx { tx.send(res).await.map_err(|e| SealTaskError::MpscSend(Box::new(e)))?; } else if let Err(x) = res { - return Err(x) + return Err(x); } Ok(()) diff --git a/kona/crates/node/engine/src/task_queue/tasks/synchronize/error.rs b/rust/kona/crates/node/engine/src/task_queue/tasks/synchronize/error.rs similarity index 80% rename from kona/crates/node/engine/src/task_queue/tasks/synchronize/error.rs rename to rust/kona/crates/node/engine/src/task_queue/tasks/synchronize/error.rs index 2b3b971204283..90052efed4a73 100644 --- a/kona/crates/node/engine/src/task_queue/tasks/synchronize/error.rs +++ b/rust/kona/crates/node/engine/src/task_queue/tasks/synchronize/error.rs @@ -1,11 +1,11 @@ -//! Contains error types for the [crate::SynchronizeTask]. +//! Contains error types for the [`crate::SynchronizeTask`]. use crate::{EngineTaskError, task_queue::tasks::task::EngineTaskErrorSeverity}; use alloy_rpc_types_engine::PayloadStatusEnum; use alloy_transport::{RpcError, TransportErrorKind}; use thiserror::Error; -/// An error that occurs when running the [crate::SynchronizeTask]. +/// An error that occurs when running the [`crate::SynchronizeTask`]. #[derive(Debug, Error)] pub enum SynchronizeTaskError { /// The forkchoice update call to the engine api failed. @@ -26,8 +26,9 @@ impl EngineTaskError for SynchronizeTaskError { fn severity(&self) -> EngineTaskErrorSeverity { match self { Self::FinalizedAheadOfUnsafe(_, _) => EngineTaskErrorSeverity::Critical, - Self::ForkchoiceUpdateFailed(_) => EngineTaskErrorSeverity::Temporary, - Self::UnexpectedPayloadStatus(_) => EngineTaskErrorSeverity::Temporary, + Self::ForkchoiceUpdateFailed(_) | Self::UnexpectedPayloadStatus(_) => { + EngineTaskErrorSeverity::Temporary + } Self::InvalidForkchoiceState => EngineTaskErrorSeverity::Reset, } } diff --git a/kona/crates/node/engine/src/task_queue/tasks/synchronize/mod.rs b/rust/kona/crates/node/engine/src/task_queue/tasks/synchronize/mod.rs similarity index 100% rename from kona/crates/node/engine/src/task_queue/tasks/synchronize/mod.rs rename to rust/kona/crates/node/engine/src/task_queue/tasks/synchronize/mod.rs diff --git a/kona/crates/node/engine/src/task_queue/tasks/synchronize/task.rs b/rust/kona/crates/node/engine/src/task_queue/tasks/synchronize/task.rs similarity index 100% rename from kona/crates/node/engine/src/task_queue/tasks/synchronize/task.rs rename to rust/kona/crates/node/engine/src/task_queue/tasks/synchronize/task.rs diff --git a/kona/crates/node/engine/src/task_queue/tasks/task.rs b/rust/kona/crates/node/engine/src/task_queue/tasks/task.rs similarity index 96% rename from kona/crates/node/engine/src/task_queue/tasks/task.rs rename to rust/kona/crates/node/engine/src/task_queue/tasks/task.rs index 5a60cc63c75a0..206f0dafb74d3 100644 --- a/kona/crates/node/engine/src/task_queue/tasks/task.rs +++ b/rust/kona/crates/node/engine/src/task_queue/tasks/task.rs @@ -169,10 +169,10 @@ impl Ord for EngineTask { // - Finalize tasks have the lowest priority, as they only update finalized status. match (self, other) { // Same variant cases - (Self::Insert(_), Self::Insert(_)) => Ordering::Equal, - (Self::Consolidate(_), Self::Consolidate(_)) => Ordering::Equal, - (Self::Build(_), Self::Build(_)) => Ordering::Equal, - (Self::Seal(_), Self::Seal(_)) => Ordering::Equal, + (Self::Insert(_), Self::Insert(_)) | + (Self::Consolidate(_), Self::Consolidate(_)) | + (Self::Build(_), Self::Build(_)) | + (Self::Seal(_), Self::Seal(_)) | (Self::Finalize(_), Self::Finalize(_)) => Ordering::Equal, // SealBlock tasks are prioritized over all others @@ -217,8 +217,6 @@ impl EngineTaskExt for EngineTask { // Yield the task to allow other tasks to execute to avoid starvation. yield_now().await; - - continue; } EngineTaskErrorSeverity::Critical => { error!(target: "engine", "{e}"); diff --git a/kona/crates/node/engine/src/task_queue/tasks/util.rs b/rust/kona/crates/node/engine/src/task_queue/tasks/util.rs similarity index 100% rename from kona/crates/node/engine/src/task_queue/tasks/util.rs rename to rust/kona/crates/node/engine/src/task_queue/tasks/util.rs diff --git a/kona/crates/node/engine/src/test_utils/attributes.rs b/rust/kona/crates/node/engine/src/test_utils/attributes.rs similarity index 96% rename from kona/crates/node/engine/src/test_utils/attributes.rs rename to rust/kona/crates/node/engine/src/test_utils/attributes.rs index 09c2cbe8143b8..fae84e4fd5907 100644 --- a/kona/crates/node/engine/src/test_utils/attributes.rs +++ b/rust/kona/crates/node/engine/src/test_utils/attributes.rs @@ -3,7 +3,7 @@ use alloy_primitives::{B256, b256}; use kona_protocol::{BlockInfo, L2BlockInfo, OpAttributesWithParent}; use op_alloy_rpc_types_engine::OpPayloadAttributes; -/// Builder for creating test OpAttributesWithParent instances with sensible defaults +/// Builder for creating test `OpAttributesWithParent` instances with sensible defaults #[derive(Debug)] pub struct TestAttributesBuilder { timestamp: u64, @@ -78,7 +78,7 @@ impl TestAttributesBuilder { self } - /// Builds the OpAttributesWithParent + /// Builds the `OpAttributesWithParent` pub fn build(self) -> OpAttributesWithParent { let attributes = OpPayloadAttributes { payload_attributes: alloy_rpc_types_engine::PayloadAttributes { diff --git a/kona/crates/node/engine/src/test_utils/engine_client.rs b/rust/kona/crates/node/engine/src/test_utils/engine_client.rs similarity index 92% rename from kona/crates/node/engine/src/test_utils/engine_client.rs rename to rust/kona/crates/node/engine/src/test_utils/engine_client.rs index 5fedc431b5695..c2f1a823d40f8 100644 --- a/kona/crates/node/engine/src/test_utils/engine_client.rs +++ b/rust/kona/crates/node/engine/src/test_utils/engine_client.rs @@ -28,7 +28,7 @@ use tokio::sync::RwLock; use crate::EngineClientError; -/// Builder for creating test MockEngineClient instances with sensible defaults +/// Builder for creating test `MockEngineClient` instances with sensible defaults pub fn test_engine_client_builder() -> MockEngineClientBuilder { MockEngineClientBuilder::new().with_config(Arc::new(RollupConfig::default())) } @@ -45,19 +45,19 @@ pub struct MockEngineStorage { pub block_info_by_tag: HashMap, // Version-specific new_payload responses - /// Storage for new_payload_v1 responses. + /// Storage for `new_payload_v1` responses. pub new_payload_v1_response: Option, - /// Storage for new_payload_v2 responses. + /// Storage for `new_payload_v2` responses. pub new_payload_v2_response: Option, - /// Storage for new_payload_v3 responses. + /// Storage for `new_payload_v3` responses. pub new_payload_v3_response: Option, - /// Storage for new_payload_v4 responses. + /// Storage for `new_payload_v4` responses. pub new_payload_v4_response: Option, // Version-specific fork_choice_updated responses - /// Storage for fork_choice_updated_v2 responses. + /// Storage for `fork_choice_updated_v2` responses. pub fork_choice_updated_v2_response: Option, - /// Storage for fork_choice_updated_v3 responses. + /// Storage for `fork_choice_updated_v3` responses. pub fork_choice_updated_v3_response: Option, // Version-specific get_payload responses @@ -69,9 +69,9 @@ pub struct MockEngineStorage { pub execution_payload_v4: Option, // Version-specific get_payload_bodies responses - /// Storage for get_payload_bodies_by_hash_v1 responses. + /// Storage for `get_payload_bodies_by_hash_v1` responses. pub get_payload_bodies_by_hash_v1_response: Option, - /// Storage for get_payload_bodies_by_range_v1 responses. + /// Storage for `get_payload_bodies_by_range_v1` responses. pub get_payload_bodies_by_range_v1_response: Option, // Non-versioned responses @@ -83,13 +83,13 @@ pub struct MockEngineStorage { pub capabilities: Option>, // Storage for get_l1_block, get_l2_block, and get_proof - /// Storage for L1 blocks by stringified BlockId. + /// Storage for L1 blocks by stringified `BlockId`. /// L1 blocks use standard Ethereum transactions. pub l1_blocks_by_id: HashMap>, - /// Storage for L2 blocks by stringified BlockId. + /// Storage for L2 blocks by stringified `BlockId`. /// L2 blocks use OP Stack transactions. pub l2_blocks_by_id: HashMap>, - /// Storage for proofs by (address, stringified BlockId) key. + /// Storage for proofs by (address, stringified `BlockId`) key. pub proofs_by_address: HashMap<(Address, String), EIP1186AccountProofResponse>, } @@ -147,37 +147,37 @@ impl MockEngineClientBuilder { self } - /// Sets the new_payload_v1 response. + /// Sets the `new_payload_v1` response. pub fn with_new_payload_v1_response(mut self, status: PayloadStatus) -> Self { self.storage.new_payload_v1_response = Some(status); self } - /// Sets the new_payload_v2 response. + /// Sets the `new_payload_v2` response. pub fn with_new_payload_v2_response(mut self, status: PayloadStatus) -> Self { self.storage.new_payload_v2_response = Some(status); self } - /// Sets the new_payload_v3 response. + /// Sets the `new_payload_v3` response. pub fn with_new_payload_v3_response(mut self, status: PayloadStatus) -> Self { self.storage.new_payload_v3_response = Some(status); self } - /// Sets the new_payload_v4 response. + /// Sets the `new_payload_v4` response. pub fn with_new_payload_v4_response(mut self, status: PayloadStatus) -> Self { self.storage.new_payload_v4_response = Some(status); self } - /// Sets the fork_choice_updated_v2 response. + /// Sets the `fork_choice_updated_v2` response. pub fn with_fork_choice_updated_v2_response(mut self, response: ForkchoiceUpdated) -> Self { self.storage.fork_choice_updated_v2_response = Some(response); self } - /// Sets the fork_choice_updated_v3 response. + /// Sets the `fork_choice_updated_v3` response. pub fn with_fork_choice_updated_v3_response(mut self, response: ForkchoiceUpdated) -> Self { self.storage.fork_choice_updated_v3_response = Some(response); self @@ -201,7 +201,7 @@ impl MockEngineClientBuilder { self } - /// Sets the get_payload_bodies_by_hash_v1 response. + /// Sets the `get_payload_bodies_by_hash_v1` response. pub fn with_payload_bodies_by_hash_response( mut self, bodies: ExecutionPayloadBodiesV1, @@ -210,7 +210,7 @@ impl MockEngineClientBuilder { self } - /// Sets the get_payload_bodies_by_range_v1 response. + /// Sets the `get_payload_bodies_by_range_v1` response. pub fn with_payload_bodies_by_range_response( mut self, bodies: ExecutionPayloadBodiesV1, @@ -237,21 +237,21 @@ impl MockEngineClientBuilder { self } - /// Sets an L1 block response for a specific BlockId. + /// Sets an L1 block response for a specific `BlockId`. pub fn with_l1_block(mut self, block_id: BlockId, block: Block) -> Self { let key = block_id_to_key(&block_id); self.storage.l1_blocks_by_id.insert(key, block); self } - /// Sets an L2 block response for a specific BlockId. + /// Sets an L2 block response for a specific `BlockId`. pub fn with_l2_block(mut self, block_id: BlockId, block: Block) -> Self { let key = block_id_to_key(&block_id); self.storage.l2_blocks_by_id.insert(key, block); self } - /// Sets a proof response for a specific address and BlockId. + /// Sets a proof response for a specific address and `BlockId`. pub fn with_proof( mut self, address: Address, @@ -281,11 +281,11 @@ impl Default for MockEngineClientBuilder { } } -/// Mock implementation of the EngineClient trait for testing. +/// Mock implementation of the `EngineClient` trait for testing. /// -/// This mock allows tests to configure expected responses for all EngineClient -/// and OpEngineApi methods. All responses are stored in a shared [`MockEngineStorage`] -/// protected by an RwLock for thread-safe access. +/// This mock allows tests to configure expected responses for all `EngineClient` +/// and `OpEngineApi` methods. All responses are stored in a shared [`MockEngineStorage`] +/// protected by an `RwLock` for thread-safe access. #[derive(Debug, Clone)] pub struct MockEngineClient { /// The rollup configuration. @@ -320,32 +320,32 @@ impl MockEngineClient { self.storage.write().await.block_info_by_tag.insert(tag, info); } - /// Sets the new_payload_v1 response. + /// Sets the `new_payload_v1` response. pub async fn set_new_payload_v1_response(&self, status: PayloadStatus) { self.storage.write().await.new_payload_v1_response = Some(status); } - /// Sets the new_payload_v2 response. + /// Sets the `new_payload_v2` response. pub async fn set_new_payload_v2_response(&self, status: PayloadStatus) { self.storage.write().await.new_payload_v2_response = Some(status); } - /// Sets the new_payload_v3 response. + /// Sets the `new_payload_v3` response. pub async fn set_new_payload_v3_response(&self, status: PayloadStatus) { self.storage.write().await.new_payload_v3_response = Some(status); } - /// Sets the new_payload_v4 response. + /// Sets the `new_payload_v4` response. pub async fn set_new_payload_v4_response(&self, status: PayloadStatus) { self.storage.write().await.new_payload_v4_response = Some(status); } - /// Sets the fork_choice_updated_v2 response. + /// Sets the `fork_choice_updated_v2` response. pub async fn set_fork_choice_updated_v2_response(&self, response: ForkchoiceUpdated) { self.storage.write().await.fork_choice_updated_v2_response = Some(response); } - /// Sets the fork_choice_updated_v3 response. + /// Sets the `fork_choice_updated_v3` response. pub async fn set_fork_choice_updated_v3_response(&self, response: ForkchoiceUpdated) { self.storage.write().await.fork_choice_updated_v3_response = Some(response); } @@ -365,12 +365,12 @@ impl MockEngineClient { self.storage.write().await.execution_payload_v4 = Some(payload); } - /// Sets the get_payload_bodies_by_hash_v1 response. + /// Sets the `get_payload_bodies_by_hash_v1` response. pub async fn set_payload_bodies_by_hash_response(&self, bodies: ExecutionPayloadBodiesV1) { self.storage.write().await.get_payload_bodies_by_hash_v1_response = Some(bodies); } - /// Sets the get_payload_bodies_by_range_v1 response. + /// Sets the `get_payload_bodies_by_range_v1` response. pub async fn set_payload_bodies_by_range_response(&self, bodies: ExecutionPayloadBodiesV1) { self.storage.write().await.get_payload_bodies_by_range_v1_response = Some(bodies); } @@ -390,19 +390,19 @@ impl MockEngineClient { self.storage.write().await.capabilities = Some(capabilities); } - /// Sets an L1 block response for a specific BlockId. + /// Sets an L1 block response for a specific `BlockId`. pub async fn set_l1_block(&self, block_id: BlockId, block: Block) { let key = block_id_to_key(&block_id); self.storage.write().await.l1_blocks_by_id.insert(key, block); } - /// Sets an L2 block response for a specific BlockId. + /// Sets an L2 block response for a specific `BlockId`. pub async fn set_l2_block(&self, block_id: BlockId, block: Block) { let key = block_id_to_key(&block_id); self.storage.write().await.l2_blocks_by_id.insert(key, block); } - /// Sets a proof response for a specific address and BlockId. + /// Sets a proof response for a specific address and `BlockId`. pub async fn set_proof( &self, address: Address, @@ -505,7 +505,7 @@ impl EngineClient for MockEngineClient { numtag: BlockNumberOrTag, ) -> Result, EngineClientError> { let storage = self.storage.read().await; - Ok(storage.block_info_by_tag.get(&numtag).cloned()) + Ok(storage.block_info_by_tag.get(&numtag).copied()) } } @@ -675,8 +675,8 @@ impl OpEngineApi> for MockEngineClient { } } -/// Helper function to convert BlockId to a string key for HashMap storage. -/// This is necessary because BlockId doesn't implement Hash. +/// Helper function to convert `BlockId` to a string key for `HashMap` storage. +/// This is necessary because `BlockId` doesn't implement Hash. fn block_id_to_key(block_id: &BlockId) -> String { match block_id { BlockId::Hash(hash) => format!("hash:{}", hash.block_hash), diff --git a/kona/crates/node/engine/src/test_utils/engine_state.rs b/rust/kona/crates/node/engine/src/test_utils/engine_state.rs similarity index 96% rename from kona/crates/node/engine/src/test_utils/engine_state.rs rename to rust/kona/crates/node/engine/src/test_utils/engine_state.rs index 214c998672191..20abf4fc8ec82 100644 --- a/kona/crates/node/engine/src/test_utils/engine_state.rs +++ b/rust/kona/crates/node/engine/src/test_utils/engine_state.rs @@ -3,7 +3,7 @@ use alloy_eips::BlockNumHash; use alloy_primitives::{B256, b256}; use kona_protocol::{BlockInfo, L2BlockInfo}; -/// Builder for creating test EngineState instances with sensible defaults +/// Builder for creating test `EngineState` instances with sensible defaults #[derive(Debug)] pub struct TestEngineStateBuilder { unsafe_head: L2BlockInfo, @@ -71,7 +71,7 @@ impl TestEngineStateBuilder { self } - /// Builds the EngineState + /// Builds the `EngineState` pub fn build(self) -> EngineState { let mut state = EngineState::default(); diff --git a/kona/crates/node/engine/src/test_utils/misc.rs b/rust/kona/crates/node/engine/src/test_utils/misc.rs similarity index 85% rename from kona/crates/node/engine/src/test_utils/misc.rs rename to rust/kona/crates/node/engine/src/test_utils/misc.rs index f3e826f63a05a..fd77bf7ccf417 100644 --- a/kona/crates/node/engine/src/test_utils/misc.rs +++ b/rust/kona/crates/node/engine/src/test_utils/misc.rs @@ -2,7 +2,7 @@ use alloy_eips::BlockNumHash; use alloy_primitives::B256; use kona_protocol::{BlockInfo, L2BlockInfo}; -/// Helper to create a test L2BlockInfo at a specific block number +/// Helper to create a test `L2BlockInfo` at a specific block number pub fn test_block_info(number: u64) -> L2BlockInfo { L2BlockInfo { block_info: BlockInfo { diff --git a/kona/crates/node/engine/src/test_utils/mod.rs b/rust/kona/crates/node/engine/src/test_utils/mod.rs similarity index 100% rename from kona/crates/node/engine/src/test_utils/mod.rs rename to rust/kona/crates/node/engine/src/test_utils/mod.rs diff --git a/kona/crates/node/engine/src/test_utils/provider.rs b/rust/kona/crates/node/engine/src/test_utils/provider.rs similarity index 81% rename from kona/crates/node/engine/src/test_utils/provider.rs rename to rust/kona/crates/node/engine/src/test_utils/provider.rs index d7d4adc51ac84..9cb92e31cd98e 100644 --- a/kona/crates/node/engine/src/test_utils/provider.rs +++ b/rust/kona/crates/node/engine/src/test_utils/provider.rs @@ -6,7 +6,8 @@ use op_alloy_network::Optimism; /// Mock L1 Provider that implements the Provider trait for testing. /// /// This is a minimal no-op provider that satisfies the trait bounds required -/// by [`MockEngineClient`]. All provider methods return empty/default values. +/// by [`MockEngineClient`](super::MockEngineClient). All provider methods return empty/default +/// values. #[derive(Debug, Clone)] pub struct MockL1Provider; @@ -20,7 +21,8 @@ impl Provider for MockL1Provider { /// Mock L2 Provider that implements the Provider trait for Optimism network. /// /// This is a minimal no-op provider that satisfies the trait bounds required -/// by [`MockEngineClient`]. All provider methods return empty/default values. +/// by [`MockEngineClient`](super::MockEngineClient). All provider methods return empty/default +/// values. #[derive(Debug, Clone)] pub struct MockL2Provider; diff --git a/kona/crates/node/engine/src/versions.rs b/rust/kona/crates/node/engine/src/versions.rs similarity index 100% rename from kona/crates/node/engine/src/versions.rs rename to rust/kona/crates/node/engine/src/versions.rs diff --git a/kona/crates/node/gossip/Cargo.toml b/rust/kona/crates/node/gossip/Cargo.toml similarity index 100% rename from kona/crates/node/gossip/Cargo.toml rename to rust/kona/crates/node/gossip/Cargo.toml diff --git a/kona/crates/node/gossip/src/behaviour.rs b/rust/kona/crates/node/gossip/src/behaviour.rs similarity index 98% rename from kona/crates/node/gossip/src/behaviour.rs rename to rust/kona/crates/node/gossip/src/behaviour.rs index 49869f031ebab..bdae9b7ca02bf 100644 --- a/kona/crates/node/gossip/src/behaviour.rs +++ b/rust/kona/crates/node/gossip/src/behaviour.rs @@ -54,7 +54,7 @@ impl Behaviour { .map_err(|_| BehaviourError::GossipsubCreationFailed)?; let identify = libp2p::identify::Behaviour::new( - libp2p::identify::Config::new("".to_string(), public_key) + libp2p::identify::Config::new(String::new(), public_key) .with_agent_version("kona".to_string()), ); diff --git a/kona/crates/node/gossip/src/block_validity.rs b/rust/kona/crates/node/gossip/src/block_validity.rs similarity index 99% rename from kona/crates/node/gossip/src/block_validity.rs rename to rust/kona/crates/node/gossip/src/block_validity.rs index 49aa85f04c958..c6c78731dd9c9 100644 --- a/kona/crates/node/gossip/src/block_validity.rs +++ b/rust/kona/crates/node/gossip/src/block_validity.rs @@ -171,12 +171,12 @@ impl BlockHandler { BlockInvalidError::Signer { .. } => "invalid_signer", BlockInvalidError::TooManyBlocks { .. } => "too_many_blocks", BlockInvalidError::BlockSeen { .. } => "block_seen", - BlockInvalidError::InvalidBlock(_) => "invalid_block", + BlockInvalidError::InvalidBlock(_) | + BlockInvalidError::BaseFeePerGasOverflow(_) => "invalid_block", BlockInvalidError::ParentBeaconRoot => "parent_beacon_root", BlockInvalidError::BlobGasUsed => "blob_gas_used", BlockInvalidError::ExcessBlobGas => "excess_blob_gas", BlockInvalidError::WithdrawalsRoot => "withdrawals_root", - BlockInvalidError::BaseFeePerGasOverflow(_) => "invalid_block", }; kona_macros::inc!(counter, Metrics::BLOCK_VALIDATION_FAILED, "reason" => reason); } @@ -324,8 +324,7 @@ impl BlockHandler { } match &envelope.payload { - OpExecutionPayload::V1(_) => Ok(()), - OpExecutionPayload::V2(_) => Ok(()), + OpExecutionPayload::V1(_) | OpExecutionPayload::V2(_) => Ok(()), OpExecutionPayload::V3(payload) => { validate_v3(&self.rollup_config, payload, envelope.parent_beacon_block_root) } @@ -622,7 +621,7 @@ pub(crate) mod tests { }) .collect::>(); - for envelope in next_payloads[..next_payloads.len() - 1].iter() { + for envelope in &next_payloads[..next_payloads.len() - 1] { assert!(handler.block_valid(envelope).is_ok()); } diff --git a/kona/crates/node/gossip/src/builder.rs b/rust/kona/crates/node/gossip/src/builder.rs similarity index 98% rename from kona/crates/node/gossip/src/builder.rs rename to rust/kona/crates/node/gossip/src/builder.rs index e77c333be822b..5a3e0aa1b5119 100644 --- a/kona/crates/node/gossip/src/builder.rs +++ b/rust/kona/crates/node/gossip/src/builder.rs @@ -8,7 +8,7 @@ use libp2p::{ noise::Config as NoiseConfig, tcp::Config as TcpConfig, yamux::Config as YamuxConfig, }; use std::time::Duration; -use tokio::sync::watch::{self}; +use tokio::sync::watch; use crate::{Behaviour, BlockHandler, GaterConfig, GossipDriver, GossipDriverBuilderError}; @@ -144,7 +144,7 @@ impl GossipDriverBuilder { let handler = BlockHandler::new(rollup_config, signer_rx); // Construct the gossip behaviour - let config = self.config.unwrap_or(crate::default_config()); + let config = self.config.unwrap_or_else(crate::default_config); info!( target: "gossip", "CONFIG: [Mesh D: {}] [Mesh L: {}] [Mesh H: {}] [Gossip Lazy: {}] [Flood Publish: {}]", diff --git a/kona/crates/node/gossip/src/config.rs b/rust/kona/crates/node/gossip/src/config.rs similarity index 95% rename from kona/crates/node/gossip/src/config.rs rename to rust/kona/crates/node/gossip/src/config.rs index 0193d9d8f0088..3b33f20486c63 100644 --- a/kona/crates/node/gossip/src/config.rs +++ b/rust/kona/crates/node/gossip/src/config.rs @@ -63,8 +63,8 @@ lazy_static! { /// Builds the default gossipsub configuration. /// /// Notable defaults: -/// - flood_publish: false (call `.flood_publish(true)` on the [ConfigBuilder] to enable) -/// - backoff_slack: 1 +/// - `flood_publish`: false (call `.flood_publish(true)` on the [`ConfigBuilder`] to enable) +/// - `backoff_slack`: 1 /// - heart beat interval: 1 second /// - peer exchange is disabled /// - maximum byte size for gossip messages: 2048 bytes @@ -72,7 +72,7 @@ lazy_static! { /// # Returns /// /// A [`ConfigBuilder`] with the default gossipsub configuration already set. -/// Call `.build()` on the returned builder to get the final [libp2p::gossipsub::Config]. +/// Call `.build()` on the returned builder to get the final [`libp2p::gossipsub::Config`]. pub fn default_config_builder() -> ConfigBuilder { let mut builder = ConfigBuilder::default(); builder @@ -100,7 +100,7 @@ pub fn default_config() -> Config { default_config_builder().build().expect("default gossipsub config must be valid") } -/// Computes the [MessageId] of a `gossipsub` message. +/// Computes the [`MessageId`] of a `gossipsub` message. fn compute_message_id(msg: &Message) -> MessageId { let mut decoder = Decoder::new(); let id = decoder.decompress_vec(&msg.data).map_or_else( diff --git a/kona/crates/node/gossip/src/driver.rs b/rust/kona/crates/node/gossip/src/driver.rs similarity index 98% rename from kona/crates/node/gossip/src/driver.rs rename to rust/kona/crates/node/gossip/src/driver.rs index db1e9f90e8057..ce212b25223d1 100644 --- a/kona/crates/node/gossip/src/driver.rs +++ b/rust/kona/crates/node/gossip/src/driver.rs @@ -192,15 +192,14 @@ where match self.swarm.listen_on(self.addr.clone()) { Ok(id) => loop { if let SwarmEvent::NewListenAddr { address, listener_id } = - self.swarm.select_next_some().await + self.swarm.select_next_some().await && + id == listener_id { - if id == listener_id { - info!(target: "gossip", "Swarm now listening on: {address}"); + info!(target: "gossip", "Swarm now listening on: {address}"); - self.addr = address.clone(); + self.addr = address.clone(); - return Ok(address); - } + return Ok(address); } }, Err(err) => { diff --git a/kona/crates/node/gossip/src/error.rs b/rust/kona/crates/node/gossip/src/error.rs similarity index 91% rename from kona/crates/node/gossip/src/error.rs rename to rust/kona/crates/node/gossip/src/error.rs index 36b165af7bd74..99cd64e6df810 100644 --- a/kona/crates/node/gossip/src/error.rs +++ b/rust/kona/crates/node/gossip/src/error.rs @@ -12,7 +12,7 @@ use thiserror::Error; /// network-level publishing errors and payload encoding issues. #[derive(Debug, Error)] pub enum PublishError { - /// Failed to publish the payload via GossipSub protocol. + /// Failed to publish the payload via `GossipSub` protocol. /// /// This can occur due to network connectivity issues, mesh topology /// problems, or protocol-level errors in the libp2p stack. @@ -42,7 +42,7 @@ pub enum HandlerEncodeError { /// Attempted to publish to an unknown or unsubscribed topic. /// - /// This error occurs when trying to publish to a GossipSub topic that + /// This error occurs when trying to publish to a `GossipSub` topic that /// is not recognized or that the node is not subscribed to. #[error("Unknown topic: {0}")] UnknownTopic(libp2p::gossipsub::TopicHash), @@ -71,16 +71,17 @@ pub enum GossipDriverBuilderError { /// An error type representing reasons why a peer cannot be dialed. #[derive(Debug, Clone, Error)] pub enum DialError { - /// Failed to extract PeerId from Multiaddr. + /// Failed to extract `PeerId` from Multiaddr. #[error("Failed to extract PeerId from Multiaddr: {addr}")] InvalidMultiaddr { - /// The multiaddress that failed to be parsed or does not contain a valid PeerId component + /// The multiaddress that failed to be parsed or does not contain a valid `PeerId` + /// component addr: Multiaddr, }, /// Already dialing this peer. #[error("Already dialing peer: {peer_id}")] AlreadyDialing { - /// The PeerId of the peer that is already being dialed + /// The `PeerId` of the peer that is already being dialed peer_id: PeerId, }, /// Dial threshold reached for this peer. @@ -92,7 +93,7 @@ pub enum DialError { /// Peer is blocked. #[error("Peer is blocked: {peer_id}")] PeerBlocked { - /// The PeerId of the peer that is on the blocklist + /// The `PeerId` of the peer that is on the blocklist peer_id: PeerId, }, /// Failed to extract IP address from Multiaddr. diff --git a/kona/crates/node/gossip/src/event.rs b/rust/kona/crates/node/gossip/src/event.rs similarity index 89% rename from kona/crates/node/gossip/src/event.rs rename to rust/kona/crates/node/gossip/src/event.rs index c8e0c877bf357..ee3dff9d66f8a 100644 --- a/kona/crates/node/gossip/src/event.rs +++ b/rust/kona/crates/node/gossip/src/event.rs @@ -16,7 +16,7 @@ pub enum Event { #[allow(dead_code)] Ping(ping::Event), - /// GossipSub mesh networking event. + /// `GossipSub` mesh networking event. /// /// Includes message reception, peer subscription changes, and mesh /// topology updates. This is the primary event type for consensus @@ -38,21 +38,21 @@ pub enum Event { } impl From for Event { - /// Converts [ping::Event] to [Event] + /// Converts [`ping::Event`] to [Event] fn from(value: ping::Event) -> Self { Self::Ping(value) } } impl From for Event { - /// Converts [gossipsub::Event] to [Event] + /// Converts [`gossipsub::Event`] to [Event] fn from(value: gossipsub::Event) -> Self { Self::Gossipsub(Box::new(value)) } } impl From for Event { - /// Converts [identify::Event] to [Event] + /// Converts [`identify::Event`] to [Event] fn from(value: identify::Event) -> Self { Self::Identify(Box::new(value)) } @@ -84,9 +84,10 @@ mod tests { let event = Event::from(gossipsub_event); match event { Event::Gossipsub(e) => { - if !matches!(*e, libp2p::gossipsub::Event::Message { .. }) { - panic!("Event conversion failed"); - } + assert!( + matches!(*e, libp2p::gossipsub::Event::Message { .. }), + "Event conversion failed" + ); } _ => panic!("Event conversion failed"), } diff --git a/kona/crates/node/gossip/src/gate.rs b/rust/kona/crates/node/gossip/src/gate.rs similarity index 100% rename from kona/crates/node/gossip/src/gate.rs rename to rust/kona/crates/node/gossip/src/gate.rs diff --git a/kona/crates/node/gossip/src/gater.rs b/rust/kona/crates/node/gossip/src/gater.rs similarity index 99% rename from kona/crates/node/gossip/src/gater.rs rename to rust/kona/crates/node/gossip/src/gater.rs index 3c871e4be447b..9b53d1379b884 100644 --- a/kona/crates/node/gossip/src/gater.rs +++ b/rust/kona/crates/node/gossip/src/gater.rs @@ -277,7 +277,7 @@ impl ConnectionGate for ConnectionGater { } fn connectedness(&self, peer_id: &PeerId) -> Connectedness { - self.connectedness.get(peer_id).cloned().unwrap_or(Connectedness::NotConnected) + self.connectedness.get(peer_id).copied().unwrap_or(Connectedness::NotConnected) } fn list_protected_peers(&self) -> Vec { @@ -297,7 +297,7 @@ impl ConnectionGate for ConnectionGater { let dial_info = self .dialed_peers .entry(addr.clone()) - .or_insert(DialInfo { num_dials: 0, last_dial: Instant::now() }); + .or_insert_with(|| DialInfo { num_dials: 0, last_dial: Instant::now() }); // If the last dial was longer than the dial period, reset the number of dials. if dial_info.last_dial.elapsed() > self.config.dial_period { @@ -354,7 +354,7 @@ impl ConnectionGate for ConnectionGater { } fn list_blocked_addrs(&self) -> Vec { - self.blocked_addrs.iter().cloned().collect() + self.blocked_addrs.iter().copied().collect() } fn block_subnet(&mut self, subnet: IpNet) { diff --git a/kona/crates/node/gossip/src/handler.rs b/rust/kona/crates/node/gossip/src/handler.rs similarity index 100% rename from kona/crates/node/gossip/src/handler.rs rename to rust/kona/crates/node/gossip/src/handler.rs diff --git a/kona/crates/node/gossip/src/lib.rs b/rust/kona/crates/node/gossip/src/lib.rs similarity index 96% rename from kona/crates/node/gossip/src/lib.rs rename to rust/kona/crates/node/gossip/src/lib.rs index 79a695e8c4b54..4b44964b7b2b1 100644 --- a/kona/crates/node/gossip/src/lib.rs +++ b/rust/kona/crates/node/gossip/src/lib.rs @@ -7,7 +7,7 @@ //! ## Key Components //! //! - [`GossipDriver`]: Main driver managing the libp2p swarm and event handling -//! - [`Behaviour`]: Custom libp2p behavior combining GossipSub, Ping, and Identify +//! - [`Behaviour`]: Custom libp2p behavior combining `GossipSub`, Ping, and Identify //! - [`BlockHandler`]: Validates and processes incoming block payloads //! - [`ConnectionGater`]: Sophisticated connection management and rate limiting //! - [`P2pRpcRequest`]: RPC interface for network administration diff --git a/kona/crates/node/gossip/src/metrics/mod.rs b/rust/kona/crates/node/gossip/src/metrics/mod.rs similarity index 100% rename from kona/crates/node/gossip/src/metrics/mod.rs rename to rust/kona/crates/node/gossip/src/metrics/mod.rs diff --git a/kona/crates/node/gossip/src/mod.rs b/rust/kona/crates/node/gossip/src/mod.rs similarity index 100% rename from kona/crates/node/gossip/src/mod.rs rename to rust/kona/crates/node/gossip/src/mod.rs diff --git a/kona/crates/node/gossip/src/rpc/mod.rs b/rust/kona/crates/node/gossip/src/rpc/mod.rs similarity index 100% rename from kona/crates/node/gossip/src/rpc/mod.rs rename to rust/kona/crates/node/gossip/src/rpc/mod.rs diff --git a/kona/crates/node/gossip/src/rpc/request.rs b/rust/kona/crates/node/gossip/src/rpc/request.rs similarity index 98% rename from kona/crates/node/gossip/src/rpc/request.rs rename to rust/kona/crates/node/gossip/src/rpc/request.rs index 5bd36c4e7fa00..b53f0e3a1435f 100644 --- a/kona/crates/node/gossip/src/rpc/request.rs +++ b/rust/kona/crates/node/gossip/src/rpc/request.rs @@ -236,14 +236,14 @@ impl P2pRpcRequest { }; let peer_ids: Vec = if connected { - gossip.swarm.connected_peers().cloned().collect() + gossip.swarm.connected_peers().copied().collect() } else { - gossip.peerstore.keys().cloned().collect() + gossip.peerstore.keys().copied().collect() }; // Get the set of actually connected peers from the swarm for accurate connectedness // reporting. - let actually_connected: HashSet = gossip.swarm.connected_peers().cloned().collect(); + let actually_connected: HashSet = gossip.swarm.connected_peers().copied().collect(); // Get connection gate information. let banned_subnets = gossip.connection_gate.list_blocked_subnets(); @@ -336,11 +336,7 @@ impl P2pRpcRequest { gossip.handler.blocks_v4_topic.hash(), ]); - if topics.iter().any(|topic| supported_topics.contains(topic)) { - Some(*peer_id) - } else { - None - } + topics.iter().any(|topic| supported_topics.contains(topic)).then_some(*peer_id) }) .collect::>(); @@ -602,7 +598,7 @@ impl P2pRpcRequest { Ok::( topics .get(topic) - .cloned() + .copied() .map(|v| v.try_into()) .transpose()? .unwrap_or_default(), diff --git a/kona/crates/node/gossip/src/rpc/types.rs b/rust/kona/crates/node/gossip/src/rpc/types.rs similarity index 97% rename from kona/crates/node/gossip/src/rpc/types.rs rename to rust/kona/crates/node/gossip/src/rpc/types.rs index 48cddaf09f63a..ad63072b76605 100644 --- a/kona/crates/node/gossip/src/rpc/types.rs +++ b/rust/kona/crates/node/gossip/src/rpc/types.rs @@ -53,10 +53,10 @@ pub struct PeerInfo { pub peer_scores: PeerScores, } -/// GossipSub topic-specific scoring metrics. +/// `GossipSub` topic-specific scoring metrics. /// /// Tracks peer performance within specific gossip topics, used by the -/// GossipSub protocol to maintain mesh quality and route messages efficiently. +/// `GossipSub` protocol to maintain mesh quality and route messages efficiently. /// These scores influence peer selection for the gossip mesh topology. /// /// Reference: @@ -88,9 +88,9 @@ pub struct TopicScores { pub invalid_message_deliveries: f64, } -/// Comprehensive GossipSub scoring metrics for peer quality assessment. +/// Comprehensive `GossipSub` scoring metrics for peer quality assessment. /// -/// Aggregates various scoring factors used by the GossipSub protocol to +/// Aggregates various scoring factors used by the `GossipSub` protocol to /// evaluate peer quality and determine mesh topology. Higher scores indicate /// more reliable and well-behaved peers. /// @@ -224,6 +224,7 @@ pub struct PeerStats { Debug, Display, PartialEq, + Eq, Copy, Default, // We need to use `serde_repr` to serialize the enum as an integer to match the `op-node` API. @@ -259,7 +260,6 @@ pub enum Connectedness { impl From for Connectedness { fn from(value: u8) -> Self { match value { - 0 => Self::NotConnected, 1 => Self::Connected, 2 => Self::CanConnect, 3 => Self::CannotConnect, diff --git a/kona/crates/node/peers/Cargo.toml b/rust/kona/crates/node/peers/Cargo.toml similarity index 100% rename from kona/crates/node/peers/Cargo.toml rename to rust/kona/crates/node/peers/Cargo.toml diff --git a/kona/crates/node/peers/README.md b/rust/kona/crates/node/peers/README.md similarity index 100% rename from kona/crates/node/peers/README.md rename to rust/kona/crates/node/peers/README.md diff --git a/kona/crates/node/peers/src/any.rs b/rust/kona/crates/node/peers/src/any.rs similarity index 100% rename from kona/crates/node/peers/src/any.rs rename to rust/kona/crates/node/peers/src/any.rs diff --git a/kona/crates/node/peers/src/boot.rs b/rust/kona/crates/node/peers/src/boot.rs similarity index 100% rename from kona/crates/node/peers/src/boot.rs rename to rust/kona/crates/node/peers/src/boot.rs diff --git a/kona/crates/node/peers/src/enr.rs b/rust/kona/crates/node/peers/src/enr.rs similarity index 97% rename from kona/crates/node/peers/src/enr.rs rename to rust/kona/crates/node/peers/src/enr.rs index b091ae65a8543..b2f6886ae9932 100644 --- a/kona/crates/node/peers/src/enr.rs +++ b/rust/kona/crates/node/peers/src/enr.rs @@ -131,7 +131,7 @@ mod tests { fn roundtrip_op_stack_enr() { arbtest::arbtest(|u| { let op_stack_enr = OpStackEnr::from_chain_id(u.arbitrary()?); - let bytes = alloy_rlp::encode(op_stack_enr).to_vec(); + let bytes = alloy_rlp::encode(op_stack_enr); let decoded = OpStackEnr::decode(&mut &bytes[..]).unwrap(); assert_eq!(decoded, op_stack_enr); Ok(()) @@ -165,7 +165,7 @@ mod tests { #[test] fn test_op_mainnet_enr() { let op_enr = OpStackEnr::from_chain_id(10); - let bytes = alloy_rlp::encode(op_enr).to_vec(); + let bytes = alloy_rlp::encode(op_enr); assert_eq!(Bytes::from(bytes.clone()), bytes!("820A00")); let decoded = OpStackEnr::decode(&mut &bytes[..]).unwrap(); assert_eq!(decoded, op_enr); @@ -174,7 +174,7 @@ mod tests { #[test] fn test_base_mainnet_enr() { let base_enr = OpStackEnr::from_chain_id(8453); - let bytes = alloy_rlp::encode(base_enr).to_vec(); + let bytes = alloy_rlp::encode(base_enr); assert_eq!(Bytes::from(bytes.clone()), bytes!("83854200")); let decoded = OpStackEnr::decode(&mut &bytes[..]).unwrap(); assert_eq!(decoded, base_enr); diff --git a/kona/crates/node/peers/src/lib.rs b/rust/kona/crates/node/peers/src/lib.rs similarity index 95% rename from kona/crates/node/peers/src/lib.rs rename to rust/kona/crates/node/peers/src/lib.rs index 46f96edd39bc0..ced9fd08b9e8e 100644 --- a/kona/crates/node/peers/src/lib.rs +++ b/rust/kona/crates/node/peers/src/lib.rs @@ -5,7 +5,7 @@ issue_tracker_base_url = "https://github.com/op-rs/kona/issues/" )] #![cfg_attr(not(test), warn(unused_crate_dependencies))] -#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))] +#![cfg_attr(docsrs, feature(doc_cfg))] #[macro_use] extern crate tracing; diff --git a/kona/crates/node/peers/src/monitoring.rs b/rust/kona/crates/node/peers/src/monitoring.rs similarity index 100% rename from kona/crates/node/peers/src/monitoring.rs rename to rust/kona/crates/node/peers/src/monitoring.rs diff --git a/kona/crates/node/peers/src/nodes.rs b/rust/kona/crates/node/peers/src/nodes.rs similarity index 99% rename from kona/crates/node/peers/src/nodes.rs rename to rust/kona/crates/node/peers/src/nodes.rs index 78bed713a4c22..d2c62b6dabce6 100644 --- a/kona/crates/node/peers/src/nodes.rs +++ b/rust/kona/crates/node/peers/src/nodes.rs @@ -125,11 +125,11 @@ mod tests { #[test] fn test_parse_raw_bootnodes() { - for raw in OP_RAW_BOOTNODES.iter() { + for raw in OP_RAW_BOOTNODES { BootNode::parse_bootnode(raw); } - for raw in OP_RAW_TESTNET_BOOTNODES.iter() { + for raw in OP_RAW_TESTNET_BOOTNODES { BootNode::parse_bootnode(raw); } } diff --git a/kona/crates/node/peers/src/record.rs b/rust/kona/crates/node/peers/src/record.rs similarity index 97% rename from kona/crates/node/peers/src/record.rs rename to rust/kona/crates/node/peers/src/record.rs index 3ea22342ff5cd..1affc59c18ade 100644 --- a/kona/crates/node/peers/src/record.rs +++ b/rust/kona/crates/node/peers/src/record.rs @@ -38,11 +38,11 @@ impl NodeRecord { /// See also [`std::net::Ipv6Addr::to_ipv4_mapped`] pub fn convert_ipv4_mapped(&mut self) -> bool { // convert IPv4 mapped IPv6 address - if let IpAddr::V6(v6) = self.address { - if let Some(v4) = v6.to_ipv4_mapped() { - self.address = v4.into(); - return true; - } + if let IpAddr::V6(v6) = self.address && + let Some(v4) = v6.to_ipv4_mapped() + { + self.address = v4.into(); + return true; } false } diff --git a/kona/crates/node/peers/src/score.rs b/rust/kona/crates/node/peers/src/score.rs similarity index 100% rename from kona/crates/node/peers/src/score.rs rename to rust/kona/crates/node/peers/src/score.rs diff --git a/kona/crates/node/peers/src/store.rs b/rust/kona/crates/node/peers/src/store.rs similarity index 98% rename from kona/crates/node/peers/src/store.rs rename to rust/kona/crates/node/peers/src/store.rs index 57da34fd69adc..f36fd744d369c 100644 --- a/kona/crates/node/peers/src/store.rs +++ b/rust/kona/crates/node/peers/src/store.rs @@ -73,7 +73,7 @@ impl TryInto for BootStoreFile { match self { Self::Default { chain_id } => { let mut path = dirs::home_dir() - .ok_or(std::io::Error::other("Failed to get home directory"))?; + .ok_or_else(|| std::io::Error::other("Failed to get home directory"))?; path.push(".kona"); path.push(chain_id.to_string()); path.push("bootstore.json"); diff --git a/kona/crates/node/peers/src/utils.rs b/rust/kona/crates/node/peers/src/utils.rs similarity index 98% rename from kona/crates/node/peers/src/utils.rs rename to rust/kona/crates/node/peers/src/utils.rs index c76d523ede365..150ba7d6c9c45 100644 --- a/kona/crates/node/peers/src/utils.rs +++ b/rust/kona/crates/node/peers/src/utils.rs @@ -104,7 +104,7 @@ mod tests { let mut received_tcp_port = None; let mut received_p2p_id = None; - for protocol in multiaddr.iter() { + for protocol in &multiaddr { match protocol { Protocol::Ip4(ip) => { received_ip = Some(ip); @@ -145,7 +145,7 @@ mod tests { let mut received_tcp_port = None; let mut received_p2p_id = None; - for protocol in multiaddr.iter() { + for protocol in &multiaddr { match protocol { Protocol::Ip6(ip) => { received_ip = Some(ip); diff --git a/kona/crates/node/rpc/Cargo.toml b/rust/kona/crates/node/rpc/Cargo.toml similarity index 100% rename from kona/crates/node/rpc/Cargo.toml rename to rust/kona/crates/node/rpc/Cargo.toml diff --git a/kona/crates/node/rpc/README.md b/rust/kona/crates/node/rpc/README.md similarity index 100% rename from kona/crates/node/rpc/README.md rename to rust/kona/crates/node/rpc/README.md diff --git a/kona/crates/node/rpc/src/admin.rs b/rust/kona/crates/node/rpc/src/admin.rs similarity index 100% rename from kona/crates/node/rpc/src/admin.rs rename to rust/kona/crates/node/rpc/src/admin.rs diff --git a/kona/crates/node/rpc/src/client.rs b/rust/kona/crates/node/rpc/src/client.rs similarity index 96% rename from kona/crates/node/rpc/src/client.rs rename to rust/kona/crates/node/rpc/src/client.rs index c3aa834a798b4..1505e48f70fc7 100644 --- a/kona/crates/node/rpc/src/client.rs +++ b/rust/kona/crates/node/rpc/src/client.rs @@ -10,7 +10,7 @@ use std::fmt::Debug; use thiserror::Error; use tokio::sync::watch; -/// Client trait wrapping RPC implementation for the EngineActor. +/// Client trait wrapping RPC implementation for the `EngineActor`. #[async_trait] pub trait EngineRpcClient: Debug + Send + Sync + Clone { /// Request the current [`RollupConfig`]. @@ -85,8 +85,8 @@ pub enum SequencerAdminAPIError { /// Error receiving response. /// Note: this error message is not future-proof, in that it may not be a safe assumption that - /// communication is channel-based. If/when that changes the enum will likely need to be updated - /// to take a parameter, so we can change it then. + /// communication is channel-based. If/when that changes the enum will likely need to be + /// updated to take a parameter, so we can change it then. #[error("Error receiving response: response channel closed.")] ResponseError, diff --git a/kona/crates/node/rpc/src/config.rs b/rust/kona/crates/node/rpc/src/config.rs similarity index 95% rename from kona/crates/node/rpc/src/config.rs rename to rust/kona/crates/node/rpc/src/config.rs index 056e393f54ef8..a72f08c6ef086 100644 --- a/kona/crates/node/rpc/src/config.rs +++ b/rust/kona/crates/node/rpc/src/config.rs @@ -21,7 +21,7 @@ pub struct RpcBuilder { } impl RpcBuilder { - /// Returns whether WebSocket RPC endpoint is enabled + /// Returns whether `WebSocket` RPC endpoint is enabled pub const fn ws_enabled(&self) -> bool { self.ws_enabled } diff --git a/kona/crates/node/rpc/src/dev.rs b/rust/kona/crates/node/rpc/src/dev.rs similarity index 100% rename from kona/crates/node/rpc/src/dev.rs rename to rust/kona/crates/node/rpc/src/dev.rs diff --git a/kona/crates/node/rpc/src/health.rs b/rust/kona/crates/node/rpc/src/health.rs similarity index 93% rename from kona/crates/node/rpc/src/health.rs rename to rust/kona/crates/node/rpc/src/health.rs index f0a32e47ccf0a..777c5c781e657 100644 --- a/kona/crates/node/rpc/src/health.rs +++ b/rust/kona/crates/node/rpc/src/health.rs @@ -7,7 +7,7 @@ use crate::jsonrpsee::HealthzApiServer; /// Key for the rollup boost health status. /// +----------------+-------------------------------+--------------------------------------+-------------------------------+ -/// | Execution Mode | Healthy | PartialContent | Service Unavailable | +/// | Execution Mode | Healthy | `PartialContent` | Service Unavailable | /// +----------------+-------------------------------+--------------------------------------+-------------------------------+ /// | Enabled | - Request-path: L2 succeeds | - Request-path: builder fails/stale | - Request-path: L2 fails | /// | | (get/new payload) → 200 | while L2 succeeds → 206 | (error from L2) → 503 | @@ -15,7 +15,7 @@ use crate::jsonrpsee::HealthzApiServer; /// | | latest-unsafe is fresh → | latest-unsafe is stale → 206 | | /// | | 200 | | | /// +----------------+-------------------------------+--------------------------------------+-------------------------------+ -/// | DryRun | - Request-path: L2 succeeds | - Never set in DryRun | - Request-path: L2 fails | +/// | `DryRun` | - Request-path: L2 succeeds | - Never set in `DryRun` | - Request-path: L2 fails | /// | | (always returns L2) → 200 | (degrade only in Enabled) | (error from L2) → 503 | /// | | - Background: builder stale | | - Background: never sets 503 | /// | | ignored (remains 200) | | | diff --git a/kona/crates/node/rpc/src/jsonrpsee.rs b/rust/kona/crates/node/rpc/src/jsonrpsee.rs similarity index 100% rename from kona/crates/node/rpc/src/jsonrpsee.rs rename to rust/kona/crates/node/rpc/src/jsonrpsee.rs diff --git a/kona/crates/node/rpc/src/l1_watcher.rs b/rust/kona/crates/node/rpc/src/l1_watcher.rs similarity index 100% rename from kona/crates/node/rpc/src/l1_watcher.rs rename to rust/kona/crates/node/rpc/src/l1_watcher.rs diff --git a/kona/crates/node/rpc/src/lib.rs b/rust/kona/crates/node/rpc/src/lib.rs similarity index 96% rename from kona/crates/node/rpc/src/lib.rs rename to rust/kona/crates/node/rpc/src/lib.rs index 0e9ccd58141de..5ff181e7a6606 100644 --- a/kona/crates/node/rpc/src/lib.rs +++ b/rust/kona/crates/node/rpc/src/lib.rs @@ -4,7 +4,7 @@ html_favicon_url = "https://raw.githubusercontent.com/op-rs/kona/main/assets/favicon.ico", issue_tracker_base_url = "https://github.com/op-rs/kona/issues/" )] -#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))] +#![cfg_attr(docsrs, feature(doc_cfg))] #[macro_use] extern crate tracing; diff --git a/kona/crates/node/rpc/src/net.rs b/rust/kona/crates/node/rpc/src/net.rs similarity index 97% rename from kona/crates/node/rpc/src/net.rs rename to rust/kona/crates/node/rpc/src/net.rs index 7732b80820b8e..c65600f9b72a5 100644 --- a/kona/crates/node/rpc/src/net.rs +++ b/rust/kona/crates/node/rpc/src/net.rs @@ -5,7 +5,7 @@ use kona_gossip::P2pRpcRequest; /// A type alias for the sender of a [`P2pRpcRequest`]. type P2pReqSender = tokio::sync::mpsc::Sender; -/// P2pRpc +/// `P2pRpc` /// /// This is a server implementation of [`crate::OpP2PApiServer`]. #[derive(Debug)] diff --git a/kona/crates/node/rpc/src/output.rs b/rust/kona/crates/node/rpc/src/output.rs similarity index 100% rename from kona/crates/node/rpc/src/output.rs rename to rust/kona/crates/node/rpc/src/output.rs diff --git a/kona/crates/node/rpc/src/p2p.rs b/rust/kona/crates/node/rpc/src/p2p.rs similarity index 100% rename from kona/crates/node/rpc/src/p2p.rs rename to rust/kona/crates/node/rpc/src/p2p.rs diff --git a/kona/crates/node/rpc/src/response.rs b/rust/kona/crates/node/rpc/src/response.rs similarity index 100% rename from kona/crates/node/rpc/src/response.rs rename to rust/kona/crates/node/rpc/src/response.rs diff --git a/kona/crates/node/rpc/src/rollup.rs b/rust/kona/crates/node/rpc/src/rollup.rs similarity index 99% rename from kona/crates/node/rpc/src/rollup.rs rename to rust/kona/crates/node/rpc/src/rollup.rs index 42ef0e70909b3..cf9a79f5836a2 100644 --- a/kona/crates/node/rpc/src/rollup.rs +++ b/rust/kona/crates/node/rpc/src/rollup.rs @@ -18,7 +18,7 @@ use crate::{ SafeHeadResponse, l1_watcher::L1WatcherQuerySender, }; -/// RollupRpc +/// `RollupRpc` /// /// This is a server implementation of [`crate::RollupNodeApiServer`]. #[derive(Debug)] diff --git a/kona/crates/node/rpc/src/ws.rs b/rust/kona/crates/node/rpc/src/ws.rs similarity index 100% rename from kona/crates/node/rpc/src/ws.rs rename to rust/kona/crates/node/rpc/src/ws.rs diff --git a/kona/crates/node/service/Cargo.toml b/rust/kona/crates/node/service/Cargo.toml similarity index 99% rename from kona/crates/node/service/Cargo.toml rename to rust/kona/crates/node/service/Cargo.toml index 52f03fab5be2a..9014f105fca1d 100644 --- a/kona/crates/node/service/Cargo.toml +++ b/rust/kona/crates/node/service/Cargo.toml @@ -75,7 +75,7 @@ arbitrary.workspace = true rand.workspace = true anyhow.workspace = true backon.workspace = true -http = "1" +http.workspace = true mockall.workspace = true alloy-primitives = { workspace = true, features = ["k256"] } alloy-rpc-types-engine = { workspace = true, features = ["arbitrary"] } diff --git a/kona/crates/node/service/README.md b/rust/kona/crates/node/service/README.md similarity index 100% rename from kona/crates/node/service/README.md rename to rust/kona/crates/node/service/README.md diff --git a/kona/crates/node/service/src/actors/derivation/actor.rs b/rust/kona/crates/node/service/src/actors/derivation/actor.rs similarity index 97% rename from kona/crates/node/service/src/actors/derivation/actor.rs rename to rust/kona/crates/node/service/src/actors/derivation/actor.rs index 77275dc520595..1df73b7814503 100644 --- a/kona/crates/node/service/src/actors/derivation/actor.rs +++ b/rust/kona/crates/node/service/src/actors/derivation/actor.rs @@ -1,4 +1,4 @@ -//! [NodeActor] implementation for the derivation sub-routine. +//! [`NodeActor`] implementation for the derivation sub-routine. use crate::{ CancellableContext, DerivationActorRequest, DerivationEngineClient, DerivationState, @@ -15,11 +15,11 @@ use thiserror::Error; use tokio::{select, sync::mpsc}; use tokio_util::sync::{CancellationToken, WaitForCancellationFuture}; -/// The [NodeActor] for the derivation sub-routine. +/// The [`NodeActor`] for the derivation sub-routine. /// -/// This actor is responsible for receiving messages from [NodeActor]s and stepping the +/// This actor is responsible for receiving messages from [`NodeActor`]s and stepping the /// derivation pipeline forward to produce new payload attributes. The actor then sends the payload -/// to the [NodeActor] responsible for the execution sub-routine. +/// to the [`NodeActor`] responsible for the execution sub-routine. #[derive(Debug)] pub struct DerivationActor where @@ -58,7 +58,7 @@ where DerivationEngineClient_: DerivationEngineClient, PipelineSignalReceiver: Pipeline + SignalReceiver, { - /// Creates a new instance of the [DerivationActor]. + /// Creates a new instance of the [`DerivationActor`]. pub fn new( engine_client: DerivationEngineClient_, cancellation_token: CancellationToken, @@ -320,7 +320,7 @@ where } } -/// An error from the [DerivationActor]. +/// An error from the [`DerivationActor`]. #[derive(Error, Debug)] pub enum DerivationError { /// An error originating from the derivation pipeline. diff --git a/kona/crates/node/service/src/actors/derivation/delegated/actor.rs b/rust/kona/crates/node/service/src/actors/derivation/delegated/actor.rs similarity index 97% rename from kona/crates/node/service/src/actors/derivation/delegated/actor.rs rename to rust/kona/crates/node/service/src/actors/derivation/delegated/actor.rs index 0e1c30a073ea4..bbe03d3705257 100644 --- a/kona/crates/node/service/src/actors/derivation/delegated/actor.rs +++ b/rust/kona/crates/node/service/src/actors/derivation/delegated/actor.rs @@ -10,15 +10,15 @@ use thiserror::Error; use tokio::{select, sync::mpsc, time}; use tokio_util::sync::{CancellationToken, WaitForCancellationFuture}; -/// The [NodeActor] for the delegate derivation sub-routine. +/// The [`NodeActor`] for the delegate derivation sub-routine. /// -/// This actor is responsible for receiving messages from [NodeActor]s and polls +/// This actor is responsible for receiving messages from [`NodeActor`]s and polls /// an external derivation delegation provider for derivation state. It validates /// the canonicality of the L1 information associated with delegated derivation /// results against the canonical L1 chain before forwarding updates. /// /// Once validated, the actor sends the derived safe and finalized L2 info -/// to the [NodeActor] responsible for the execution sub-routine. +/// to the [`NodeActor`] responsible for the execution sub-routine. #[derive(Debug)] pub struct DelegateDerivationActor where @@ -56,7 +56,7 @@ impl DelegateDerivationActor where DerivationEngineClient_: DerivationEngineClient, { - /// Creates a new instance of the [DelegateDerivationActor]. + /// Creates a new instance of the [`DelegateDerivationActor`]. pub fn new( engine_client: DerivationEngineClient_, cancellation_token: CancellationToken, diff --git a/kona/crates/node/service/src/actors/derivation/delegated/client.rs b/rust/kona/crates/node/service/src/actors/derivation/delegated/client.rs similarity index 100% rename from kona/crates/node/service/src/actors/derivation/delegated/client.rs rename to rust/kona/crates/node/service/src/actors/derivation/delegated/client.rs diff --git a/kona/crates/node/service/src/actors/derivation/delegated/mod.rs b/rust/kona/crates/node/service/src/actors/derivation/delegated/mod.rs similarity index 100% rename from kona/crates/node/service/src/actors/derivation/delegated/mod.rs rename to rust/kona/crates/node/service/src/actors/derivation/delegated/mod.rs diff --git a/kona/crates/node/service/src/actors/derivation/engine_client.rs b/rust/kona/crates/node/service/src/actors/derivation/engine_client.rs similarity index 99% rename from kona/crates/node/service/src/actors/derivation/engine_client.rs rename to rust/kona/crates/node/service/src/actors/derivation/engine_client.rs index d27546eba1e1d..b1b36500b424d 100644 --- a/kona/crates/node/service/src/actors/derivation/engine_client.rs +++ b/rust/kona/crates/node/service/src/actors/derivation/engine_client.rs @@ -29,7 +29,7 @@ pub trait DerivationEngineClient: Debug + Send + Sync { /// Client to use to send messages to the Engine Actor's inbound channel. #[derive(Constructor, Debug)] pub struct QueuedDerivationEngineClient { - /// A channel to use to send the [`EngineActorRequest`]s to the EngineActor. + /// A channel to use to send the [`EngineActorRequest`]s to the `EngineActor`. pub engine_actor_request_tx: mpsc::Sender, } diff --git a/kona/crates/node/service/src/actors/derivation/finalizer.rs b/rust/kona/crates/node/service/src/actors/derivation/finalizer.rs similarity index 98% rename from kona/crates/node/service/src/actors/derivation/finalizer.rs rename to rust/kona/crates/node/service/src/actors/derivation/finalizer.rs index 354e98489c344..5fbbb46d8d707 100644 --- a/kona/crates/node/service/src/actors/derivation/finalizer.rs +++ b/rust/kona/crates/node/service/src/actors/derivation/finalizer.rs @@ -35,7 +35,7 @@ impl L2Finalizer { ), ) .and_modify(|n| *n = (*n).max(attributes.block_number())) - .or_insert(attributes.block_number()); + .or_insert_with(|| attributes.block_number()); } /// Clears the finalization queue. diff --git a/kona/crates/node/service/src/actors/derivation/mod.rs b/rust/kona/crates/node/service/src/actors/derivation/mod.rs similarity index 100% rename from kona/crates/node/service/src/actors/derivation/mod.rs rename to rust/kona/crates/node/service/src/actors/derivation/mod.rs diff --git a/kona/crates/node/service/src/actors/derivation/request.rs b/rust/kona/crates/node/service/src/actors/derivation/request.rs similarity index 94% rename from kona/crates/node/service/src/actors/derivation/request.rs rename to rust/kona/crates/node/service/src/actors/derivation/request.rs index 3ee764324e6a3..9482eef558239 100644 --- a/kona/crates/node/service/src/actors/derivation/request.rs +++ b/rust/kona/crates/node/service/src/actors/derivation/request.rs @@ -27,7 +27,7 @@ pub enum DerivationActorRequest { /// Request to process the provided L2 engine safe head update. ProcessEngineSafeHeadUpdateRequest(Box), /// A request containing a [`Signal`] to the derivation pipeline. - /// This allows the Engine to send the DerivationActor signals (e.g. to Flush or Reset). + /// This allows the Engine to send the `DerivationActor` signals (e.g. to Flush or Reset). ProcessEngineSignalRequest(Box), /// A request to process the provided finalized L1 [`BlockInfo`]. ProcessFinalizedL1Block(Box), diff --git a/kona/crates/node/service/src/actors/derivation/state_machine.rs b/rust/kona/crates/node/service/src/actors/derivation/state_machine.rs similarity index 97% rename from kona/crates/node/service/src/actors/derivation/state_machine.rs rename to rust/kona/crates/node/service/src/actors/derivation/state_machine.rs index a33c8534c21f6..3b5cef5d88bce 100644 --- a/kona/crates/node/service/src/actors/derivation/state_machine.rs +++ b/rust/kona/crates/node/service/src/actors/derivation/state_machine.rs @@ -16,8 +16,8 @@ pub enum DerivationState { /// [`crate::DerivationActor`] is waiting for confirmation that they were processed into a safe /// head. AwaitingSafeHeadConfirmation, - /// A reorg or some other inconsistency was detected, necessitating a [`kona_derive::Signal`] to - /// be processed before continuing derivation. + /// A reorg or some other inconsistency was detected, necessitating a [`kona_derive::Signal`] + /// to be processed before continuing derivation. AwaitingSignal, /// After receiving a [`kona_derive::Signal`], we need an update of L1 data or a new engine /// safe head to start deriving again. This represents the state waiting for one of the two. @@ -28,7 +28,7 @@ pub enum DerivationState { /// The possible updates of the [`DerivationStateMachine`] implemented by the /// [`crate::DerivationActor`]. -#[derive(Clone, Debug, PartialEq)] +#[derive(Clone, Debug, PartialEq, Eq)] pub enum DerivationStateUpdate { /// The initial EL sync has completed along with the current safe head, allowing derivation to /// start. @@ -49,7 +49,7 @@ pub enum DerivationStateUpdate { SignalProcessed, } -/// An error processing a [DerivationStateMachine] state transition. +/// An error processing a [`DerivationStateMachine`] state transition. #[derive(Debug, Error)] pub enum DerivationStateTransitionError { /// An invalid state transition was attempted. @@ -194,10 +194,10 @@ impl DerivationStateMachine { &mut self, state_update: &DerivationStateUpdate, ) -> Result<(), DerivationStateTransitionError> { - if let DerivationStateUpdate::NewAttributesConfirmed(safe_head) = state_update { - if safe_head.block_info.hash == self.confirmed_safe_head.block_info.hash { - info!(target: "derivation", ?safe_head, "Re-received safe head. Skipping state transition."); - } + if let DerivationStateUpdate::NewAttributesConfirmed(safe_head) = state_update && + safe_head.block_info.hash == self.confirmed_safe_head.block_info.hash + { + info!(target: "derivation", ?safe_head, "Re-received safe head. Skipping state transition."); } info!(target: "derivation", state=?self.state, ?state_update, "Executing derivation state update."); @@ -225,7 +225,7 @@ mod tests { use op_alloy_rpc_types_engine::OpPayloadAttributes; use rstest::rstest; - /// Creates a dummy L2BlockInfo for testing + /// Creates a dummy `L2BlockInfo` for testing fn dummy_l2_block_info() -> L2BlockInfo { L2BlockInfo { block_info: BlockInfo { @@ -239,7 +239,7 @@ mod tests { } } - /// Creates a dummy OpAttributesWithParent for testing + /// Creates a dummy `OpAttributesWithParent` for testing fn dummy_op_attributes() -> OpAttributesWithParent { OpAttributesWithParent { attributes: OpPayloadAttributes::default(), diff --git a/kona/crates/node/service/src/actors/engine/actor.rs b/rust/kona/crates/node/service/src/actors/engine/actor.rs similarity index 100% rename from kona/crates/node/service/src/actors/engine/actor.rs rename to rust/kona/crates/node/service/src/actors/engine/actor.rs diff --git a/kona/crates/node/service/src/actors/engine/client.rs b/rust/kona/crates/node/service/src/actors/engine/client.rs similarity index 97% rename from kona/crates/node/service/src/actors/engine/client.rs rename to rust/kona/crates/node/service/src/actors/engine/client.rs index a4af93ff22e4f..25322a5a7f284 100644 --- a/kona/crates/node/service/src/actors/engine/client.rs +++ b/rust/kona/crates/node/service/src/actors/engine/client.rs @@ -14,7 +14,7 @@ pub trait EngineDerivationClient: Debug + Send + Sync { /// Note: Does not wait for the derivation client to process this message. async fn notify_sync_completed(&self, safe_head: L2BlockInfo) -> DerivationClientResult<()>; - /// Sends the new engine safe_head to the [`crate::DerivationActor`]. + /// Sends the new engine `safe_head` to the [`crate::DerivationActor`]. /// Note: Does not wait for the derivation client to process this message. async fn send_new_engine_safe_head(&self, safe_head: L2BlockInfo) -> DerivationClientResult<()>; diff --git a/kona/crates/node/service/src/actors/engine/config.rs b/rust/kona/crates/node/service/src/actors/engine/config.rs similarity index 100% rename from kona/crates/node/service/src/actors/engine/config.rs rename to rust/kona/crates/node/service/src/actors/engine/config.rs diff --git a/kona/crates/node/service/src/actors/engine/engine_request_processor.rs b/rust/kona/crates/node/service/src/actors/engine/engine_request_processor.rs similarity index 100% rename from kona/crates/node/service/src/actors/engine/engine_request_processor.rs rename to rust/kona/crates/node/service/src/actors/engine/engine_request_processor.rs diff --git a/kona/crates/node/service/src/actors/engine/error.rs b/rust/kona/crates/node/service/src/actors/engine/error.rs similarity index 100% rename from kona/crates/node/service/src/actors/engine/error.rs rename to rust/kona/crates/node/service/src/actors/engine/error.rs diff --git a/kona/crates/node/service/src/actors/engine/mod.rs b/rust/kona/crates/node/service/src/actors/engine/mod.rs similarity index 100% rename from kona/crates/node/service/src/actors/engine/mod.rs rename to rust/kona/crates/node/service/src/actors/engine/mod.rs diff --git a/kona/crates/node/service/src/actors/engine/request.rs b/rust/kona/crates/node/service/src/actors/engine/request.rs similarity index 98% rename from kona/crates/node/service/src/actors/engine/request.rs rename to rust/kona/crates/node/service/src/actors/engine/request.rs index ecca9ee1c6cdb..5b058d8bfed45 100644 --- a/kona/crates/node/service/src/actors/engine/request.rs +++ b/rust/kona/crates/node/service/src/actors/engine/request.rs @@ -9,7 +9,7 @@ use tokio::sync::mpsc; /// The result of an Engine client call. pub type EngineClientResult = Result; -/// Error making requests to the BlockEngine. +/// Error making requests to the `BlockEngine`. #[derive(Debug, Error)] pub enum EngineClientError { /// Error making a request to the engine. The request never made it there. diff --git a/kona/crates/node/service/src/actors/engine/rollup_boost.rs b/rust/kona/crates/node/service/src/actors/engine/rollup_boost.rs similarity index 100% rename from kona/crates/node/service/src/actors/engine/rollup_boost.rs rename to rust/kona/crates/node/service/src/actors/engine/rollup_boost.rs diff --git a/kona/crates/node/service/src/actors/engine/rpc_request_processor.rs b/rust/kona/crates/node/service/src/actors/engine/rpc_request_processor.rs similarity index 100% rename from kona/crates/node/service/src/actors/engine/rpc_request_processor.rs rename to rust/kona/crates/node/service/src/actors/engine/rpc_request_processor.rs diff --git a/kona/crates/node/service/src/actors/l1_watcher/actor.rs b/rust/kona/crates/node/service/src/actors/l1_watcher/actor.rs similarity index 100% rename from kona/crates/node/service/src/actors/l1_watcher/actor.rs rename to rust/kona/crates/node/service/src/actors/l1_watcher/actor.rs diff --git a/kona/crates/node/service/src/actors/l1_watcher/blockstream.rs b/rust/kona/crates/node/service/src/actors/l1_watcher/blockstream.rs similarity index 100% rename from kona/crates/node/service/src/actors/l1_watcher/blockstream.rs rename to rust/kona/crates/node/service/src/actors/l1_watcher/blockstream.rs diff --git a/kona/crates/node/service/src/actors/l1_watcher/client.rs b/rust/kona/crates/node/service/src/actors/l1_watcher/client.rs similarity index 100% rename from kona/crates/node/service/src/actors/l1_watcher/client.rs rename to rust/kona/crates/node/service/src/actors/l1_watcher/client.rs diff --git a/kona/crates/node/service/src/actors/l1_watcher/error.rs b/rust/kona/crates/node/service/src/actors/l1_watcher/error.rs similarity index 100% rename from kona/crates/node/service/src/actors/l1_watcher/error.rs rename to rust/kona/crates/node/service/src/actors/l1_watcher/error.rs diff --git a/kona/crates/node/service/src/actors/l1_watcher/mod.rs b/rust/kona/crates/node/service/src/actors/l1_watcher/mod.rs similarity index 100% rename from kona/crates/node/service/src/actors/l1_watcher/mod.rs rename to rust/kona/crates/node/service/src/actors/l1_watcher/mod.rs diff --git a/kona/crates/node/service/src/actors/mod.rs b/rust/kona/crates/node/service/src/actors/mod.rs similarity index 98% rename from kona/crates/node/service/src/actors/mod.rs rename to rust/kona/crates/node/service/src/actors/mod.rs index eb63a0b280cee..5002b554cf47e 100644 --- a/kona/crates/node/service/src/actors/mod.rs +++ b/rust/kona/crates/node/service/src/actors/mod.rs @@ -1,4 +1,4 @@ -//! [NodeActor] services for the node. +//! [`NodeActor`] services for the node. //! //! [NodeActor]: super::NodeActor diff --git a/kona/crates/node/service/src/actors/network/README.md b/rust/kona/crates/node/service/src/actors/network/README.md similarity index 100% rename from kona/crates/node/service/src/actors/network/README.md rename to rust/kona/crates/node/service/src/actors/network/README.md diff --git a/kona/crates/node/service/src/actors/network/actor.rs b/rust/kona/crates/node/service/src/actors/network/actor.rs similarity index 98% rename from kona/crates/node/service/src/actors/network/actor.rs rename to rust/kona/crates/node/service/src/actors/network/actor.rs index 58156f12555d4..c4b51caa73e57 100644 --- a/kona/crates/node/service/src/actors/network/actor.rs +++ b/rust/kona/crates/node/service/src/actors/network/actor.rs @@ -221,10 +221,10 @@ impl NodeActor return Err(NetworkActorError::ChannelClosed); }; - if let Some(payload) = handler.gossip.handle_event(event) { - if unsafe_block_tx.send(payload.into()).is_err() { - warn!(target: "node::p2p", "Failed to send unsafe block to network handler"); - } + if let Some(payload) = handler.gossip.handle_event(event) + && unsafe_block_tx.send(payload.into()).is_err() + { + warn!(target: "node::p2p", "Failed to send unsafe block to network handler"); } }, enr = handler.enr_receiver.recv() => { diff --git a/kona/crates/node/service/src/actors/network/builder.rs b/rust/kona/crates/node/service/src/actors/network/builder.rs similarity index 100% rename from kona/crates/node/service/src/actors/network/builder.rs rename to rust/kona/crates/node/service/src/actors/network/builder.rs diff --git a/kona/crates/node/service/src/actors/network/config.rs b/rust/kona/crates/node/service/src/actors/network/config.rs similarity index 100% rename from kona/crates/node/service/src/actors/network/config.rs rename to rust/kona/crates/node/service/src/actors/network/config.rs diff --git a/kona/crates/node/service/src/actors/network/driver.rs b/rust/kona/crates/node/service/src/actors/network/driver.rs similarity index 100% rename from kona/crates/node/service/src/actors/network/driver.rs rename to rust/kona/crates/node/service/src/actors/network/driver.rs diff --git a/kona/crates/node/service/src/actors/network/engine_client.rs b/rust/kona/crates/node/service/src/actors/network/engine_client.rs similarity index 95% rename from kona/crates/node/service/src/actors/network/engine_client.rs rename to rust/kona/crates/node/service/src/actors/network/engine_client.rs index 226b93063fc7c..b677e8a511f08 100644 --- a/kona/crates/node/service/src/actors/network/engine_client.rs +++ b/rust/kona/crates/node/service/src/actors/network/engine_client.rs @@ -16,7 +16,7 @@ pub trait NetworkEngineClient: Debug + Send + Sync { /// Client to use to send unsafe blocks to the Engine's inbound channel. #[derive(Debug)] pub struct QueuedNetworkEngineClient { - /// A channel to use to send the EngineActor requests. + /// A channel to use to send the `EngineActor` requests. pub engine_actor_request_tx: mpsc::Sender, } diff --git a/kona/crates/node/service/src/actors/network/error.rs b/rust/kona/crates/node/service/src/actors/network/error.rs similarity index 100% rename from kona/crates/node/service/src/actors/network/error.rs rename to rust/kona/crates/node/service/src/actors/network/error.rs diff --git a/kona/crates/node/service/src/actors/network/gossip.rs b/rust/kona/crates/node/service/src/actors/network/gossip.rs similarity index 100% rename from kona/crates/node/service/src/actors/network/gossip.rs rename to rust/kona/crates/node/service/src/actors/network/gossip.rs diff --git a/kona/crates/node/service/src/actors/network/handler.rs b/rust/kona/crates/node/service/src/actors/network/handler.rs similarity index 100% rename from kona/crates/node/service/src/actors/network/handler.rs rename to rust/kona/crates/node/service/src/actors/network/handler.rs diff --git a/kona/crates/node/service/src/actors/network/mod.rs b/rust/kona/crates/node/service/src/actors/network/mod.rs similarity index 100% rename from kona/crates/node/service/src/actors/network/mod.rs rename to rust/kona/crates/node/service/src/actors/network/mod.rs diff --git a/kona/crates/node/service/src/actors/rpc/actor.rs b/rust/kona/crates/node/service/src/actors/rpc/actor.rs similarity index 100% rename from kona/crates/node/service/src/actors/rpc/actor.rs rename to rust/kona/crates/node/service/src/actors/rpc/actor.rs diff --git a/kona/crates/node/service/src/actors/rpc/engine_rpc_client.rs b/rust/kona/crates/node/service/src/actors/rpc/engine_rpc_client.rs similarity index 98% rename from kona/crates/node/service/src/actors/rpc/engine_rpc_client.rs rename to rust/kona/crates/node/service/src/actors/rpc/engine_rpc_client.rs index 4222082250f04..bbf02f130ef27 100644 --- a/kona/crates/node/service/src/actors/rpc/engine_rpc_client.rs +++ b/rust/kona/crates/node/service/src/actors/rpc/engine_rpc_client.rs @@ -18,7 +18,7 @@ use tokio::sync::{mpsc, oneshot, watch}; /// supported [`EngineActorRequest`] operations to limit the power of callers to RPC-type requests. #[derive(Clone, Constructor, Debug)] pub struct QueuedEngineRpcClient { - /// A channel to use to send the EngineActor requests. + /// A channel to use to send the `EngineActor` requests. pub engine_actor_request_tx: mpsc::Sender, } diff --git a/kona/crates/node/service/src/actors/rpc/error.rs b/rust/kona/crates/node/service/src/actors/rpc/error.rs similarity index 100% rename from kona/crates/node/service/src/actors/rpc/error.rs rename to rust/kona/crates/node/service/src/actors/rpc/error.rs diff --git a/kona/crates/node/service/src/actors/rpc/mod.rs b/rust/kona/crates/node/service/src/actors/rpc/mod.rs similarity index 100% rename from kona/crates/node/service/src/actors/rpc/mod.rs rename to rust/kona/crates/node/service/src/actors/rpc/mod.rs diff --git a/kona/crates/node/service/src/actors/rpc/rollup_boost_rpc_client.rs b/rust/kona/crates/node/service/src/actors/rpc/rollup_boost_rpc_client.rs similarity index 94% rename from kona/crates/node/service/src/actors/rpc/rollup_boost_rpc_client.rs rename to rust/kona/crates/node/service/src/actors/rpc/rollup_boost_rpc_client.rs index 5eb8bd94e80da..dee64408b9270 100644 --- a/kona/crates/node/service/src/actors/rpc/rollup_boost_rpc_client.rs +++ b/rust/kona/crates/node/service/src/actors/rpc/rollup_boost_rpc_client.rs @@ -9,11 +9,11 @@ use rollup_boost::{GetExecutionModeResponse, SetExecutionModeRequest, SetExecuti use std::fmt::Debug; use tokio::sync::{mpsc, oneshot}; -/// [`RollupBoostHealthzApiServer`] implementation to send the request to EngineActor's request +/// [`RollupBoostHealthzApiServer`] implementation to send the request to `EngineActor`'s request /// channel. #[derive(Debug)] pub struct RollupBoostHealthRpcClient { - /// A channel to use to send the EngineActor requests. + /// A channel to use to send the `EngineActor` requests. pub engine_actor_request_tx: mpsc::Sender, } @@ -38,10 +38,11 @@ impl RollupBoostHealthzApiServer for RollupBoostHealthRpcClient { } } -/// [`RollupBoostAdminClient`] implementation to send the request to EngineActor's request channel. +/// [`RollupBoostAdminClient`] implementation to send the request to `EngineActor`'s request +/// channel. #[derive(Debug)] pub struct RollupBoostAdminApiClient { - /// A channel to use to send the EngineActor requests. + /// A channel to use to send the `EngineActor` requests. pub engine_actor_request_tx: mpsc::Sender, } diff --git a/kona/crates/node/service/src/actors/rpc/sequencer_rpc_client.rs b/rust/kona/crates/node/service/src/actors/rpc/sequencer_rpc_client.rs similarity index 100% rename from kona/crates/node/service/src/actors/rpc/sequencer_rpc_client.rs rename to rust/kona/crates/node/service/src/actors/rpc/sequencer_rpc_client.rs diff --git a/kona/crates/node/service/src/actors/sequencer/actor.rs b/rust/kona/crates/node/service/src/actors/sequencer/actor.rs similarity index 95% rename from kona/crates/node/service/src/actors/sequencer/actor.rs rename to rust/kona/crates/node/service/src/actors/sequencer/actor.rs index 59b4b8efd7c82..194766cf01d18 100644 --- a/kona/crates/node/service/src/actors/sequencer/actor.rs +++ b/rust/kona/crates/node/service/src/actors/sequencer/actor.rs @@ -136,7 +136,7 @@ where /// Sends a seal request to seal the provided [`UnsealedPayloadHandle`], committing and /// gossiping the resulting block, if one is built. async fn seal_and_commit_payload_if_applicable( - &mut self, + &self, unsealed_payload_handle: &UnsealedPayloadHandle, ) -> Result<(), SequencerActorError> { let seal_request_start = Instant::now(); @@ -251,7 +251,7 @@ where Ok(Some(l1_origin)) } - /// Builds the OpAttributesWithParent for the next block to build. If None is returned, it + /// Builds the `OpAttributesWithParent` for the next block to build. If None is returned, it /// indicates that no attributes could be built at this time but future attempts may be made. async fn build_attributes( &mut self, @@ -357,7 +357,7 @@ where } /// Schedules the initial engine reset request and waits for the unsafe head to be updated. - async fn schedule_initial_reset(&mut self) -> Result<(), SequencerActorError> { + async fn schedule_initial_reset(&self) -> Result<(), SequencerActorError> { // Reset the engine, in order to initialize the engine state. // NB: this call waits for confirmation that the reset succeeded and we can proceed with // post-reset logic. @@ -439,9 +439,8 @@ where error!(target: "sequencer", err=?err, "Critical seal task error occurred"); self.cancellation_token.cancel(); return Err(SequencerActorError::EngineError(EngineClientError::SealError(err))); - } else { - next_payload_to_seal = None; } + next_payload_to_seal = None; }, Err(other_err) => { error!(target: "sequencer", err = ?other_err, "Unexpected error building or sealing payload"); @@ -504,22 +503,22 @@ fn is_seal_task_err_fatal(err: &SealTaskError) -> bool { SealTaskError::PayloadInsertionFailed(insert_err) => match &**insert_err { InsertTaskError::ForkchoiceUpdateFailed(synchronize_error) => match synchronize_error { SynchronizeTaskError::FinalizedAheadOfUnsafe(_, _) => true, - SynchronizeTaskError::ForkchoiceUpdateFailed(_) => false, - SynchronizeTaskError::InvalidForkchoiceState => false, + SynchronizeTaskError::ForkchoiceUpdateFailed(_) | + SynchronizeTaskError::InvalidForkchoiceState | SynchronizeTaskError::UnexpectedPayloadStatus(_) => false, }, - InsertTaskError::FromBlockError(_) => true, - InsertTaskError::InsertFailed(_) => false, - InsertTaskError::UnexpectedPayloadStatus(_) => false, - InsertTaskError::L2BlockInfoConstruction(_) => true, + InsertTaskError::FromBlockError(_) | InsertTaskError::L2BlockInfoConstruction(_) => { + true + } + InsertTaskError::InsertFailed(_) | InsertTaskError::UnexpectedPayloadStatus(_) => false, }, - SealTaskError::GetPayloadFailed(_) => false, - SealTaskError::DepositOnlyPayloadFailed => true, - SealTaskError::DepositOnlyPayloadReattemptFailed => true, - SealTaskError::HoloceneInvalidFlush => false, - SealTaskError::FromBlock(_) => true, - SealTaskError::MpscSend(_) => true, - SealTaskError::ClockWentBackwards => true, + SealTaskError::GetPayloadFailed(_) | + SealTaskError::HoloceneInvalidFlush | SealTaskError::UnsafeHeadChangedSinceBuild => false, + SealTaskError::DepositOnlyPayloadFailed | + SealTaskError::DepositOnlyPayloadReattemptFailed | + SealTaskError::FromBlock(_) | + SealTaskError::MpscSend(_) | + SealTaskError::ClockWentBackwards => true, } } diff --git a/kona/crates/node/service/src/actors/sequencer/admin_api_impl.rs b/rust/kona/crates/node/service/src/actors/sequencer/admin_api_impl.rs similarity index 98% rename from kona/crates/node/service/src/actors/sequencer/admin_api_impl.rs rename to rust/kona/crates/node/service/src/actors/sequencer/admin_api_impl.rs index b9bc76c1fe1d0..ecf7e6a231c77 100644 --- a/kona/crates/node/service/src/actors/sequencer/admin_api_impl.rs +++ b/rust/kona/crates/node/service/src/actors/sequencer/admin_api_impl.rs @@ -173,7 +173,7 @@ where Ok(()) } - pub(super) async fn reset_derivation_pipeline(&mut self) -> Result<(), SequencerAdminAPIError> { + pub(super) async fn reset_derivation_pipeline(&self) -> Result<(), SequencerAdminAPIError> { info!(target: "sequencer", "Resetting derivation pipeline"); self.engine_client.reset_engine_forkchoice().await.map_err(|e| { error!(target: "sequencer", err=?e, "Failed to reset engine forkchoice"); diff --git a/kona/crates/node/service/src/actors/sequencer/conductor.rs b/rust/kona/crates/node/service/src/actors/sequencer/conductor.rs similarity index 100% rename from kona/crates/node/service/src/actors/sequencer/conductor.rs rename to rust/kona/crates/node/service/src/actors/sequencer/conductor.rs diff --git a/kona/crates/node/service/src/actors/sequencer/config.rs b/rust/kona/crates/node/service/src/actors/sequencer/config.rs similarity index 100% rename from kona/crates/node/service/src/actors/sequencer/config.rs rename to rust/kona/crates/node/service/src/actors/sequencer/config.rs diff --git a/kona/crates/node/service/src/actors/sequencer/engine_client.rs b/rust/kona/crates/node/service/src/actors/sequencer/engine_client.rs similarity index 98% rename from kona/crates/node/service/src/actors/sequencer/engine_client.rs rename to rust/kona/crates/node/service/src/actors/sequencer/engine_client.rs index 4b49aad6b0021..638f0603a3133 100644 --- a/kona/crates/node/service/src/actors/sequencer/engine_client.rs +++ b/rust/kona/crates/node/service/src/actors/sequencer/engine_client.rs @@ -45,7 +45,7 @@ pub trait SequencerEngineClient: Debug + Send + Sync { /// channel-based communication. #[derive(Constructor, Debug)] pub struct QueuedSequencerEngineClient { - /// A channel to use to send the EngineActor requests. + /// A channel to use to send the `EngineActor` requests. pub engine_actor_request_tx: mpsc::Sender, /// A channel to receive the latest unsafe head [`L2BlockInfo`]. pub unsafe_head_rx: watch::Receiver, diff --git a/kona/crates/node/service/src/actors/sequencer/error.rs b/rust/kona/crates/node/service/src/actors/sequencer/error.rs similarity index 100% rename from kona/crates/node/service/src/actors/sequencer/error.rs rename to rust/kona/crates/node/service/src/actors/sequencer/error.rs diff --git a/kona/crates/node/service/src/actors/sequencer/metrics.rs b/rust/kona/crates/node/service/src/actors/sequencer/metrics.rs similarity index 97% rename from kona/crates/node/service/src/actors/sequencer/metrics.rs rename to rust/kona/crates/node/service/src/actors/sequencer/metrics.rs index 49fc0db02d5ec..07c42b3db2ba0 100644 --- a/kona/crates/node/service/src/actors/sequencer/metrics.rs +++ b/rust/kona/crates/node/service/src/actors/sequencer/metrics.rs @@ -5,7 +5,7 @@ use crate::{ }; use kona_derive::AttributesBuilder; -/// SequencerActor metrics-related method implementations. +/// `SequencerActor` metrics-related method implementations. impl< AttributesBuilder_, Conductor_, diff --git a/kona/crates/node/service/src/actors/sequencer/mod.rs b/rust/kona/crates/node/service/src/actors/sequencer/mod.rs similarity index 100% rename from kona/crates/node/service/src/actors/sequencer/mod.rs rename to rust/kona/crates/node/service/src/actors/sequencer/mod.rs diff --git a/kona/crates/node/service/src/actors/sequencer/origin_selector.rs b/rust/kona/crates/node/service/src/actors/sequencer/origin_selector.rs similarity index 98% rename from kona/crates/node/service/src/actors/sequencer/origin_selector.rs rename to rust/kona/crates/node/service/src/actors/sequencer/origin_selector.rs index e2e70a1f3c7b3..5ff8cdd863166 100644 --- a/kona/crates/node/service/src/actors/sequencer/origin_selector.rs +++ b/rust/kona/crates/node/service/src/actors/sequencer/origin_selector.rs @@ -63,10 +63,10 @@ impl OriginSelector for L1OriginSelec // Start building on the next L1 origin block if the next L2 block's timestamp is // greater than or equal to the next L1 origin's timestamp. - if let Some(next) = self.next { - if unsafe_head.block_info.timestamp + self.cfg.block_time >= next.timestamp { - return Ok(next); - } + if let Some(next) = self.next && + unsafe_head.block_info.timestamp + self.cfg.block_time >= next.timestamp + { + return Ok(next); } let Some(current) = self.current else { @@ -473,16 +473,15 @@ mod test { }; if next_available { + let next = selector.next_l1_origin(unsafe_head, false).await.unwrap(); if next_ahead_of_unsafe { // If the next L1 origin is available and ahead of the unsafe head, the L1 origin // should not change. - let next = selector.next_l1_origin(unsafe_head, false).await.unwrap(); assert_eq!(next.hash, B256::ZERO); assert_eq!(next.number, 0); } else { // If the next L1 origin is available and behind the unsafe head, the L1 origin // should advance. - let next = selector.next_l1_origin(unsafe_head, false).await.unwrap(); assert_eq!(next.hash, B256::with_last_byte(1)); assert_eq!(next.number, 1); } diff --git a/kona/crates/node/service/src/actors/sequencer/tests/actor_test.rs b/rust/kona/crates/node/service/src/actors/sequencer/tests/actor_test.rs similarity index 88% rename from kona/crates/node/service/src/actors/sequencer/tests/actor_test.rs rename to rust/kona/crates/node/service/src/actors/sequencer/tests/actor_test.rs index a8f0ea0423c64..8c1687cd503ad 100644 --- a/kona/crates/node/service/src/actors/sequencer/tests/actor_test.rs +++ b/rust/kona/crates/node/service/src/actors/sequencer/tests/actor_test.rs @@ -10,9 +10,9 @@ use kona_protocol::{BlockInfo, L2BlockInfo}; use rstest::rstest; #[rstest] -#[case::temp(PipelineErrorKind::Temporary(BuilderError::Custom("".into()).into()), false)] -#[case::reset(PipelineErrorKind::Reset(BuilderError::Custom("".into()).into()), false)] -#[case::critical(PipelineErrorKind::Critical(BuilderError::Custom("".into()).into()), true)] +#[case::temp(PipelineErrorKind::Temporary(BuilderError::Custom(String::new()).into()), false)] +#[case::reset(PipelineErrorKind::Reset(BuilderError::Custom(String::new()).into()), false)] +#[case::critical(PipelineErrorKind::Critical(BuilderError::Custom(String::new()).into()), true)] #[tokio::test] async fn test_build_unsealed_payload_prepare_payload_attributes_error( #[case] forced_error: PipelineErrorKind, diff --git a/kona/crates/node/service/src/actors/sequencer/tests/admin_api_impl_test.rs b/rust/kona/crates/node/service/src/actors/sequencer/tests/admin_api_impl_test.rs similarity index 100% rename from kona/crates/node/service/src/actors/sequencer/tests/admin_api_impl_test.rs rename to rust/kona/crates/node/service/src/actors/sequencer/tests/admin_api_impl_test.rs diff --git a/kona/crates/node/service/src/actors/sequencer/tests/mod.rs b/rust/kona/crates/node/service/src/actors/sequencer/tests/mod.rs similarity index 100% rename from kona/crates/node/service/src/actors/sequencer/tests/mod.rs rename to rust/kona/crates/node/service/src/actors/sequencer/tests/mod.rs diff --git a/kona/crates/node/service/src/actors/sequencer/tests/test_util.rs b/rust/kona/crates/node/service/src/actors/sequencer/tests/test_util.rs similarity index 100% rename from kona/crates/node/service/src/actors/sequencer/tests/test_util.rs rename to rust/kona/crates/node/service/src/actors/sequencer/tests/test_util.rs diff --git a/kona/crates/node/service/src/actors/traits.rs b/rust/kona/crates/node/service/src/actors/traits.rs similarity index 90% rename from kona/crates/node/service/src/actors/traits.rs rename to rust/kona/crates/node/service/src/actors/traits.rs index 38fdf47d12630..d68a5b12066e4 100644 --- a/kona/crates/node/service/src/actors/traits.rs +++ b/rust/kona/crates/node/service/src/actors/traits.rs @@ -1,4 +1,4 @@ -//! [NodeActor] trait. +//! [`NodeActor`] trait. use async_trait::async_trait; use tokio_util::sync::WaitForCancellationFuture; @@ -9,7 +9,7 @@ pub trait CancellableContext: Send { fn cancelled(&self) -> WaitForCancellationFuture<'_>; } -/// The [NodeActor] is an actor-like service for the node. +/// The [`NodeActor`] is an actor-like service for the node. /// /// Actors may: /// - Handle incoming messages. diff --git a/kona/crates/node/service/src/lib.rs b/rust/kona/crates/node/service/src/lib.rs similarity index 97% rename from kona/crates/node/service/src/lib.rs rename to rust/kona/crates/node/service/src/lib.rs index bc73912f786dc..d857953ab02d4 100644 --- a/kona/crates/node/service/src/lib.rs +++ b/rust/kona/crates/node/service/src/lib.rs @@ -4,7 +4,7 @@ html_favicon_url = "https://raw.githubusercontent.com/op-rs/kona/main/assets/favicon.ico", issue_tracker_base_url = "https://github.com/op-rs/kona/issues/" )] -#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))] +#![cfg_attr(docsrs, feature(doc_cfg))] #[macro_use] extern crate tracing; diff --git a/kona/crates/node/service/src/metrics/mod.rs b/rust/kona/crates/node/service/src/metrics/mod.rs similarity index 100% rename from kona/crates/node/service/src/metrics/mod.rs rename to rust/kona/crates/node/service/src/metrics/mod.rs diff --git a/kona/crates/node/service/src/service/builder.rs b/rust/kona/crates/node/service/src/service/builder.rs similarity index 100% rename from kona/crates/node/service/src/service/builder.rs rename to rust/kona/crates/node/service/src/service/builder.rs diff --git a/kona/crates/node/service/src/service/mod.rs b/rust/kona/crates/node/service/src/service/mod.rs similarity index 100% rename from kona/crates/node/service/src/service/mod.rs rename to rust/kona/crates/node/service/src/service/mod.rs diff --git a/kona/crates/node/service/src/service/mode.rs b/rust/kona/crates/node/service/src/service/mode.rs similarity index 100% rename from kona/crates/node/service/src/service/mode.rs rename to rust/kona/crates/node/service/src/service/mode.rs diff --git a/kona/crates/node/service/src/service/node.rs b/rust/kona/crates/node/service/src/service/node.rs similarity index 98% rename from kona/crates/node/service/src/service/node.rs rename to rust/kona/crates/node/service/src/service/node.rs index 3690858eaeb15..7c130b212207d 100644 --- a/kona/crates/node/service/src/service/node.rs +++ b/rust/kona/crates/node/service/src/service/node.rs @@ -43,8 +43,8 @@ pub struct L1Config { pub engine_provider: RootProvider, } -/// The standard implementation of the [RollupNode] service, using the governance approved OP Stack -/// configuration of components. +/// The standard implementation of the [`RollupNode`] service, using the governance approved OP +/// Stack configuration of components. #[derive(Debug)] pub struct RollupNode { /// The rollup configuration. @@ -72,10 +72,10 @@ pub struct RollupNode { /// A RollupNode-level derivation actor wrapper. /// /// This type selects the concrete derivation actor implementation -/// based on RollupNode configuration. +/// based on `RollupNode` configuration. /// /// It is not intended to be generic or reusable outside the -/// RollupNode wiring logic. +/// `RollupNode` wiring logic. enum ConfiguredDerivationActor { Delegate(Box>), Normal(Box>), @@ -213,7 +213,7 @@ impl RollupNode { self.config.clone(), derivation_client, engine, - if self.mode().is_sequencer() { Some(unsafe_head_tx) } else { None }, + self.mode().is_sequencer().then_some(unsafe_head_tx), ); let engine_rpc_processor = EngineRpcProcessor::new( diff --git a/kona/crates/node/service/src/service/util.rs b/rust/kona/crates/node/service/src/service/util.rs similarity index 92% rename from kona/crates/node/service/src/service/util.rs rename to rust/kona/crates/node/service/src/service/util.rs index d9d568595a1bc..3a6ab08064d1e 100644 --- a/kona/crates/node/service/src/service/util.rs +++ b/rust/kona/crates/node/service/src/service/util.rs @@ -1,16 +1,13 @@ //! Utilities for the rollup node service, internal to the crate. -/// Spawns a set of parallel actors in a [JoinSet], and cancels all actors if any of them fail. The -/// type of the error in the [NodeActor]s is erased to avoid having to specify a common error type -/// between actors. +/// Spawns a set of parallel actors in a [`JoinSet`](tokio::task::JoinSet), and cancels all actors +/// if any of them fail. The type of the error in the [`NodeActor`](crate::NodeActor)s is erased to +/// avoid having to specify a common error type between actors. /// /// Actors are passed in as optional arguments, in case a given actor is not needed. /// /// This macro also handles OS shutdown signals (SIGTERM, SIGINT) and triggers graceful shutdown /// when received. -/// -/// [JoinSet]: tokio::task::JoinSet -/// [NodeActor]: crate::NodeActor macro_rules! spawn_and_wait { ($cancellation:expr, actors = [$($actor:expr$(,)?)*]) => { let mut task_handles = tokio::task::JoinSet::new(); diff --git a/kona/crates/node/service/tests/actors/generator/block_builder.rs b/rust/kona/crates/node/service/tests/actors/generator/block_builder.rs similarity index 100% rename from kona/crates/node/service/tests/actors/generator/block_builder.rs rename to rust/kona/crates/node/service/tests/actors/generator/block_builder.rs diff --git a/kona/crates/node/service/tests/actors/generator/mod.rs b/rust/kona/crates/node/service/tests/actors/generator/mod.rs similarity index 100% rename from kona/crates/node/service/tests/actors/generator/mod.rs rename to rust/kona/crates/node/service/tests/actors/generator/mod.rs diff --git a/kona/crates/node/service/tests/actors/generator/seed.rs b/rust/kona/crates/node/service/tests/actors/generator/seed.rs similarity index 100% rename from kona/crates/node/service/tests/actors/generator/seed.rs rename to rust/kona/crates/node/service/tests/actors/generator/seed.rs diff --git a/kona/crates/node/service/tests/actors/mod.rs b/rust/kona/crates/node/service/tests/actors/mod.rs similarity index 100% rename from kona/crates/node/service/tests/actors/mod.rs rename to rust/kona/crates/node/service/tests/actors/mod.rs diff --git a/kona/crates/node/service/tests/actors/network/mocks/builder.rs b/rust/kona/crates/node/service/tests/actors/network/mocks/builder.rs similarity index 98% rename from kona/crates/node/service/tests/actors/network/mocks/builder.rs rename to rust/kona/crates/node/service/tests/actors/network/mocks/builder.rs index 618bfe5139f8f..55e5b84a30fa0 100644 --- a/kona/crates/node/service/tests/actors/network/mocks/builder.rs +++ b/rust/kona/crates/node/service/tests/actors/network/mocks/builder.rs @@ -60,7 +60,7 @@ impl TestNetworkBuilder { /// Minimal network configuration. /// Only allows loopback addresses in the discovery table. pub(crate) fn build(&mut self, bootnodes: Vec) -> TestNetwork { - let keypair = self.custom_keypair.take().unwrap_or(Keypair::generate_secp256k1()); + let keypair = self.custom_keypair.take().unwrap_or_else(Keypair::generate_secp256k1); let secp256k1_key = keypair.clone().try_into_secp256k1() .map_err(|e| anyhow::anyhow!("Impossible to convert keypair to secp256k1. This is a bug since we only support secp256k1 keys: {e}")).unwrap() diff --git a/kona/crates/node/service/tests/actors/network/mocks/mod.rs b/rust/kona/crates/node/service/tests/actors/network/mocks/mod.rs similarity index 100% rename from kona/crates/node/service/tests/actors/network/mocks/mod.rs rename to rust/kona/crates/node/service/tests/actors/network/mocks/mod.rs diff --git a/kona/crates/node/service/tests/actors/network/mod.rs b/rust/kona/crates/node/service/tests/actors/network/mod.rs similarity index 100% rename from kona/crates/node/service/tests/actors/network/mod.rs rename to rust/kona/crates/node/service/tests/actors/network/mod.rs diff --git a/kona/crates/node/service/tests/actors/network/p2p.rs b/rust/kona/crates/node/service/tests/actors/network/p2p.rs similarity index 93% rename from kona/crates/node/service/tests/actors/network/p2p.rs rename to rust/kona/crates/node/service/tests/actors/network/p2p.rs index 75e9a94481870..768bdb3d5ad23 100644 --- a/kona/crates/node/service/tests/actors/network/p2p.rs +++ b/rust/kona/crates/node/service/tests/actors/network/p2p.rs @@ -30,8 +30,8 @@ async fn test_large_network_conn() -> anyhow::Result<()> { bootnodes.push(enr); } - for network in networks.iter() { - for other_network in networks.iter() { + for network in &networks { + for other_network in &networks { if network.peer_id().await? == other_network.peer_id().await? { continue; } diff --git a/kona/crates/node/service/tests/actors/network/sequencer.rs b/rust/kona/crates/node/service/tests/actors/network/sequencer.rs similarity index 89% rename from kona/crates/node/service/tests/actors/network/sequencer.rs rename to rust/kona/crates/node/service/tests/actors/network/sequencer.rs index b864c9b5a56d3..7e868eac45c8b 100644 --- a/kona/crates/node/service/tests/actors/network/sequencer.rs +++ b/rust/kona/crates/node/service/tests/actors/network/sequencer.rs @@ -23,8 +23,11 @@ async fn test_sequencer_network_conn() -> anyhow::Result<()> { sequencer_network.inbound_data.gossip_payload_tx.send(envelope.clone()).await?; - let block = - validator_network.blocks_rx.recv().await.ok_or(anyhow::anyhow!("No block received"))?; + let block = validator_network + .blocks_rx + .recv() + .await + .ok_or_else(|| anyhow::anyhow!("No block received"))?; assert_eq!(block.parent_beacon_block_root, envelope.parent_beacon_block_root); assert_eq!(block.execution_payload, envelope.execution_payload); @@ -55,7 +58,7 @@ async fn test_sequencer_network_propagation() -> anyhow::Result<()> { } // Check that all networks are connected to the sequencer. - for network in validator_networks.iter() { + for network in &validator_networks { network.is_connected_to_with_retries(&sequencer_network).await?; } @@ -67,8 +70,9 @@ async fn test_sequencer_network_propagation() -> anyhow::Result<()> { sequencer_network.inbound_data.gossip_payload_tx.send(envelope.clone()).await?; // Check that the block propagates to all networks. - for network in validator_networks.iter_mut() { - let block = network.blocks_rx.recv().await.ok_or(anyhow::anyhow!("No block received"))?; + for network in &mut validator_networks { + let block = + network.blocks_rx.recv().await.ok_or_else(|| anyhow::anyhow!("No block received"))?; assert_eq!(block.parent_beacon_block_root, envelope.parent_beacon_block_root); assert_eq!(block.execution_payload, envelope.execution_payload); diff --git a/kona/crates/node/service/tests/integration.rs b/rust/kona/crates/node/service/tests/integration.rs similarity index 100% rename from kona/crates/node/service/tests/integration.rs rename to rust/kona/crates/node/service/tests/integration.rs diff --git a/kona/crates/node/service/tests/rollup_boost_missing_jwt.rs b/rust/kona/crates/node/service/tests/rollup_boost_missing_jwt.rs similarity index 100% rename from kona/crates/node/service/tests/rollup_boost_missing_jwt.rs rename to rust/kona/crates/node/service/tests/rollup_boost_missing_jwt.rs diff --git a/kona/crates/node/sources/Cargo.toml b/rust/kona/crates/node/sources/Cargo.toml similarity index 93% rename from kona/crates/node/sources/Cargo.toml rename to rust/kona/crates/node/sources/Cargo.toml index 5bf381e40ff8d..ae53a6a2bff81 100644 --- a/kona/crates/node/sources/Cargo.toml +++ b/rust/kona/crates/node/sources/Cargo.toml @@ -35,7 +35,6 @@ thiserror.workspace = true derive_more.workspace = true # HTTP client and TLS for remote signer -reqwest = { workspace = true, features = ["json", "rustls-tls", "stream"] } url.workspace = true serde.workspace = true serde_json.workspace = true diff --git a/kona/crates/node/sources/README.md b/rust/kona/crates/node/sources/README.md similarity index 100% rename from kona/crates/node/sources/README.md rename to rust/kona/crates/node/sources/README.md diff --git a/kona/crates/node/sources/src/lib.rs b/rust/kona/crates/node/sources/src/lib.rs similarity index 91% rename from kona/crates/node/sources/src/lib.rs rename to rust/kona/crates/node/sources/src/lib.rs index 4dac96280152b..5fde9d2fc5103 100644 --- a/kona/crates/node/sources/src/lib.rs +++ b/rust/kona/crates/node/sources/src/lib.rs @@ -5,7 +5,7 @@ issue_tracker_base_url = "https://github.com/op-rs/kona/issues/" )] #![cfg_attr(not(test), warn(unused_crate_dependencies))] -#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))] +#![cfg_attr(docsrs, feature(doc_cfg))] mod signer; pub use signer::{ diff --git a/kona/crates/node/sources/src/signer/mod.rs b/rust/kona/crates/node/sources/src/signer/mod.rs similarity index 100% rename from kona/crates/node/sources/src/signer/mod.rs rename to rust/kona/crates/node/sources/src/signer/mod.rs diff --git a/kona/crates/node/sources/src/signer/remote/cert.rs b/rust/kona/crates/node/sources/src/signer/remote/cert.rs similarity index 100% rename from kona/crates/node/sources/src/signer/remote/cert.rs rename to rust/kona/crates/node/sources/src/signer/remote/cert.rs diff --git a/kona/crates/node/sources/src/signer/remote/client.rs b/rust/kona/crates/node/sources/src/signer/remote/client.rs similarity index 99% rename from kona/crates/node/sources/src/signer/remote/client.rs rename to rust/kona/crates/node/sources/src/signer/remote/client.rs index 0bc8db6676bd7..4cab1294eff6b 100644 --- a/kona/crates/node/sources/src/signer/remote/client.rs +++ b/rust/kona/crates/node/sources/src/signer/remote/client.rs @@ -1,6 +1,6 @@ use alloy_primitives::Address; use alloy_rpc_client::ClientBuilder; -use alloy_transport_http::Http; +use alloy_transport_http::{Http, reqwest}; use reqwest::header::HeaderMap; use std::sync::Arc; use thiserror::Error; diff --git a/kona/crates/node/sources/src/signer/remote/handler.rs b/rust/kona/crates/node/sources/src/signer/remote/handler.rs similarity index 100% rename from kona/crates/node/sources/src/signer/remote/handler.rs rename to rust/kona/crates/node/sources/src/signer/remote/handler.rs diff --git a/kona/crates/node/sources/src/signer/remote/mod.rs b/rust/kona/crates/node/sources/src/signer/remote/mod.rs similarity index 100% rename from kona/crates/node/sources/src/signer/remote/mod.rs rename to rust/kona/crates/node/sources/src/signer/remote/mod.rs diff --git a/kona/crates/proof/driver/CHANGELOG.md b/rust/kona/crates/proof/driver/CHANGELOG.md similarity index 100% rename from kona/crates/proof/driver/CHANGELOG.md rename to rust/kona/crates/proof/driver/CHANGELOG.md diff --git a/kona/crates/proof/driver/Cargo.toml b/rust/kona/crates/proof/driver/Cargo.toml similarity index 100% rename from kona/crates/proof/driver/Cargo.toml rename to rust/kona/crates/proof/driver/Cargo.toml diff --git a/kona/crates/proof/driver/README.md b/rust/kona/crates/proof/driver/README.md similarity index 100% rename from kona/crates/proof/driver/README.md rename to rust/kona/crates/proof/driver/README.md diff --git a/kona/crates/proof/driver/src/core.rs b/rust/kona/crates/proof/driver/src/core.rs similarity index 95% rename from kona/crates/proof/driver/src/core.rs rename to rust/kona/crates/proof/driver/src/core.rs index b5b315205e2e4..4aef06f0af80b 100644 --- a/kona/crates/proof/driver/src/core.rs +++ b/rust/kona/crates/proof/driver/src/core.rs @@ -151,7 +151,7 @@ where /// This method can fail with several error types: /// /// ## Pipeline Errors - /// - **EndOfSource (Critical)**: L1 data source exhausted + /// - **`EndOfSource` (Critical)**: L1 data source exhausted /// - In interop mode: Returns error immediately for caller handling /// - In normal mode: Adjusts target to current safe head and halts gracefully /// - **Temporary**: Insufficient data, automatically retried @@ -165,8 +165,8 @@ where /// - If deposit-only block also fails, returns critical error /// /// ## Other Errors - /// - **MissingOrigin**: Pipeline origin not available when expected - /// - **BlockConversion**: Failed to convert block format + /// - **`MissingOrigin`**: Pipeline origin not available when expected + /// - **`BlockConversion`**: Failed to convert block format /// - **RLP**: Failed to decode transaction data /// /// # Behavior Details @@ -207,7 +207,7 @@ where /// /// # Panics /// This method does not explicitly panic, but may propagate panics from: - /// - RwLock poisoning (if another thread panicked while holding the cursor lock) + /// - `RwLock` poisoning (if another thread panicked while holding the cursor lock) /// - Executor or pipeline implementation panics /// - Arithmetic overflow in block number operations (highly unlikely) pub async fn advance_to_target( @@ -219,11 +219,11 @@ where // Check if we have reached the target block number. let pipeline_cursor = self.cursor.read(); let tip_cursor = pipeline_cursor.tip(); - if let Some(tb) = target { - if tip_cursor.l2_safe_head.block_info.number >= tb { - info!(target: "client", "Derivation complete, reached L2 safe head."); - return Ok((tip_cursor.l2_safe_head, tip_cursor.l2_safe_head_output_root)); - } + if let Some(tb) = target && + tip_cursor.l2_safe_head.block_info.number >= tb + { + info!(target: "client", "Derivation complete, reached L2 safe head."); + return Ok((tip_cursor.l2_safe_head, tip_cursor.l2_safe_head_output_root)); } let mut attributes = match self.pipeline.produce_payload(tip_cursor.l2_safe_head).await @@ -242,9 +242,8 @@ where // Otherwise, we continue the loop to halt derivation on the next iteration. if cfg.is_interop_active(self.cursor.read().l2_safe_head().block_info.number) { return Err(PipelineError::EndOfSource.crit().into()); - } else { - continue; } + continue; } Err(e) => { error!(target: "client", "Failed to produce payload: {:?}", e); diff --git a/kona/crates/proof/driver/src/cursor.rs b/rust/kona/crates/proof/driver/src/cursor.rs similarity index 100% rename from kona/crates/proof/driver/src/cursor.rs rename to rust/kona/crates/proof/driver/src/cursor.rs diff --git a/kona/crates/proof/driver/src/errors.rs b/rust/kona/crates/proof/driver/src/errors.rs similarity index 100% rename from kona/crates/proof/driver/src/errors.rs rename to rust/kona/crates/proof/driver/src/errors.rs diff --git a/kona/crates/proof/driver/src/executor.rs b/rust/kona/crates/proof/driver/src/executor.rs similarity index 100% rename from kona/crates/proof/driver/src/executor.rs rename to rust/kona/crates/proof/driver/src/executor.rs diff --git a/kona/crates/proof/driver/src/lib.rs b/rust/kona/crates/proof/driver/src/lib.rs similarity index 92% rename from kona/crates/proof/driver/src/lib.rs rename to rust/kona/crates/proof/driver/src/lib.rs index f83e3410a528e..7f449a41f3ea6 100644 --- a/kona/crates/proof/driver/src/lib.rs +++ b/rust/kona/crates/proof/driver/src/lib.rs @@ -4,7 +4,7 @@ html_favicon_url = "https://raw.githubusercontent.com/op-rs/kona/main/assets/favicon.ico", issue_tracker_base_url = "https://github.com/op-rs/kona/issues/" )] -#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))] +#![cfg_attr(docsrs, feature(doc_cfg))] #![cfg_attr(not(test), no_std)] extern crate alloc; diff --git a/kona/crates/proof/driver/src/pipeline.rs b/rust/kona/crates/proof/driver/src/pipeline.rs similarity index 98% rename from kona/crates/proof/driver/src/pipeline.rs rename to rust/kona/crates/proof/driver/src/pipeline.rs index a13b15eac0af0..40c8fe1ec5902 100644 --- a/kona/crates/proof/driver/src/pipeline.rs +++ b/rust/kona/crates/proof/driver/src/pipeline.rs @@ -81,8 +81,8 @@ where /// /// ## Step Results /// The pipeline can return different step results: - /// - **PreparedAttributes**: Attributes ready for the next block - /// - **AdvancedOrigin**: L1 origin moved forward + /// - **`PreparedAttributes`**: Attributes ready for the next block + /// - **`AdvancedOrigin`**: L1 origin moved forward /// - **OriginAdvanceErr/StepFailed**: Various error conditions async fn produce_payload( &mut self, diff --git a/kona/crates/proof/driver/src/tip.rs b/rust/kona/crates/proof/driver/src/tip.rs similarity index 100% rename from kona/crates/proof/driver/src/tip.rs rename to rust/kona/crates/proof/driver/src/tip.rs diff --git a/kona/crates/proof/executor/CHANGELOG.md b/rust/kona/crates/proof/executor/CHANGELOG.md similarity index 100% rename from kona/crates/proof/executor/CHANGELOG.md rename to rust/kona/crates/proof/executor/CHANGELOG.md diff --git a/kona/crates/proof/executor/Cargo.toml b/rust/kona/crates/proof/executor/Cargo.toml similarity index 100% rename from kona/crates/proof/executor/Cargo.toml rename to rust/kona/crates/proof/executor/Cargo.toml diff --git a/kona/crates/proof/executor/README.md b/rust/kona/crates/proof/executor/README.md similarity index 100% rename from kona/crates/proof/executor/README.md rename to rust/kona/crates/proof/executor/README.md diff --git a/kona/crates/proof/executor/src/builder/assemble.rs b/rust/kona/crates/proof/executor/src/builder/assemble.rs similarity index 97% rename from kona/crates/proof/executor/src/builder/assemble.rs rename to rust/kona/crates/proof/executor/src/builder/assemble.rs index 597fe5e96afeb..29e22684e11e0 100644 --- a/kona/crates/proof/executor/src/builder/assemble.rs +++ b/rust/kona/crates/proof/executor/src/builder/assemble.rs @@ -1,4 +1,4 @@ -//! [Header] assembly logic for the [StatelessL2Builder]. +//! [Header] assembly logic for the [`StatelessL2Builder`]. use super::StatelessL2Builder; use crate::{ @@ -24,8 +24,8 @@ where H: TrieHinter, Evm: EvmFactory, { - /// Seals the block executed from the given [OpPayloadAttributes] and [BlockEnv], returning the - /// computed [Header]. + /// Seals the block executed from the given [`OpPayloadAttributes`] and [`BlockEnv`], returning + /// the computed [Header]. pub(crate) fn seal_block( &mut self, attrs: &OpPayloadAttributes, diff --git a/kona/crates/proof/executor/src/builder/core.rs b/rust/kona/crates/proof/executor/src/builder/core.rs similarity index 98% rename from kona/crates/proof/executor/src/builder/core.rs rename to rust/kona/crates/proof/executor/src/builder/core.rs index 407c82a7c549d..dc141dee1e160 100644 --- a/kona/crates/proof/executor/src/builder/core.rs +++ b/rust/kona/crates/proof/executor/src/builder/core.rs @@ -1,8 +1,8 @@ //! Stateless OP Stack L2 block builder implementation. //! -//! The [StatelessL2Builder] provides a complete block building and execution engine +//! The [`StatelessL2Builder`] provides a complete block building and execution engine //! for OP Stack L2 chains that operates in a stateless manner, pulling required state -//! data from a [TrieDB] during execution rather than maintaining full state. +//! data from a [`TrieDB`] during execution rather than maintaining full state. use crate::{ExecutorError, ExecutorResult, TrieDB, TrieDBError, TrieDBProvider}; use alloc::{string::ToString, vec::Vec}; diff --git a/kona/crates/proof/executor/src/builder/env.rs b/rust/kona/crates/proof/executor/src/builder/env.rs similarity index 95% rename from kona/crates/proof/executor/src/builder/env.rs rename to rust/kona/crates/proof/executor/src/builder/env.rs index 7ecfe57598c40..0671a6ac40185 100644 --- a/kona/crates/proof/executor/src/builder/env.rs +++ b/rust/kona/crates/proof/executor/src/builder/env.rs @@ -1,4 +1,4 @@ -//! Environment utility functions for [StatelessL2Builder]. +//! Environment utility functions for [`StatelessL2Builder`]. use super::StatelessL2Builder; use crate::{ @@ -49,11 +49,11 @@ where Ok(EvmEnv::new(cfg_env, block_env)) } - /// Returns the active [CfgEnv] for the executor. + /// Returns the active [`CfgEnv`] for the executor. pub(crate) fn evm_cfg_env(&self, timestamp: u64) -> CfgEnv { CfgEnv::new() .with_chain_id(self.config.l2_chain_id.id()) - .with_spec(self.config.spec_id(timestamp)) + .with_spec_and_mainnet_gas_params(self.config.spec_id(timestamp)) } fn next_block_base_fee( @@ -91,7 +91,7 @@ where Some(next_block_base_fee) } - /// Prepares a [BlockEnv] with the given [OpPayloadAttributes]. + /// Prepares a [`BlockEnv`] with the given [`OpPayloadAttributes`]. pub(crate) fn prepare_block_env( &self, spec_id: OpSpecId, diff --git a/kona/crates/proof/executor/src/builder/mod.rs b/rust/kona/crates/proof/executor/src/builder/mod.rs similarity index 100% rename from kona/crates/proof/executor/src/builder/mod.rs rename to rust/kona/crates/proof/executor/src/builder/mod.rs diff --git a/kona/crates/proof/executor/src/db/mod.rs b/rust/kona/crates/proof/executor/src/db/mod.rs similarity index 94% rename from kona/crates/proof/executor/src/db/mod.rs rename to rust/kona/crates/proof/executor/src/db/mod.rs index 5141b8aa1d2cc..45942c0b4c641 100644 --- a/kona/crates/proof/executor/src/db/mod.rs +++ b/rust/kona/crates/proof/executor/src/db/mod.rs @@ -29,19 +29,19 @@ pub use traits::{NoopTrieDBProvider, TrieDBProvider}; /// capture state transitions during block execution. /// /// **Behavior**: -/// - When an account is queried and the trie path has not already been opened by [Self::basic], we -/// fall through to the `PreimageFetcher` to fetch the preimages of the trie nodes on the path to -/// the account. After it has been fetched, the path will be cached until the next call to -/// [Self::state_root]. +/// - When an account is queried and the trie path has not already been opened by [`Self::basic`], +/// we fall through to the `PreimageFetcher` to fetch the preimages of the trie nodes on the path +/// to the account. After it has been fetched, the path will be cached until the next call to +/// [`Self::state_root`]. /// - When querying for the code hash of an account, the [`TrieDBProvider`] is consulted to fetch /// the code hash of the account. /// - When a [`BundleState`] changeset is committed to the parent [`State`] database, the changes /// are first applied to the [`State`]'s cache, then the trie hash is recomputed with -/// [Self::state_root]. -/// - When the block hash of a block number is needed via [Self::block_hash], the +/// [`Self::state_root`]. +/// - When the block hash of a block number is needed via [`Self::block_hash`], the /// `HeaderByHashFetcher` is consulted to walk back to the desired block number by revealing the /// parent hash of block headers until the desired block number is reached, up to a maximum of -/// [BLOCK_HASH_HISTORY] blocks back relative to the current parent block hash. +/// [`BLOCK_HASH_HISTORY`] blocks back relative to the current parent block hash. /// /// **Example Construction**: /// ```rust @@ -100,7 +100,7 @@ where F: TrieDBProvider, H: TrieHinter, { - /// Creates a new [TrieDB] with the given root node. + /// Creates a new [`TrieDB`] with the given root node. pub fn new(parent_block_header: Sealed
, fetcher: F, hinter: H) -> Self { Self { root_node: TrieNode::new_blinded(parent_block_header.state_root), @@ -116,7 +116,7 @@ where self.root_node } - /// Returns a shared reference to the root [TrieNode] of the trie DB. + /// Returns a shared reference to the root [`TrieNode`] of the trie DB. pub const fn root(&self) -> &TrieNode { &self.root_node } @@ -140,10 +140,10 @@ where self.parent_block_header = parent_block_header; } - /// Applies a [BundleState] changeset to the [TrieNode] and recomputes the state root hash. + /// Applies a [`BundleState`] changeset to the [`TrieNode`] and recomputes the state root hash. /// /// ## Takes - /// - `bundle`: The [BundleState] changeset to apply to the trie DB. + /// - `bundle`: The [`BundleState`] changeset to apply to the trie DB. /// /// ## Returns /// - `Ok(B256)`: The new state root hash of the trie DB. @@ -166,13 +166,13 @@ where Ok(root) } - /// Fetches the [TrieAccount] of an account from the trie DB. + /// Fetches the [`TrieAccount`] of an account from the trie DB. /// /// ## Takes /// - `address`: The address of the account. /// /// ## Returns - /// - `Ok(Some(TrieAccount))`: The [TrieAccount] of the account. + /// - `Ok(Some(TrieAccount))`: The [`TrieAccount`] of the account. /// - `Ok(None)`: If the account does not exist in the trie. /// - `Err(_)`: If the account could not be fetched. pub fn get_trie_account( @@ -199,10 +199,10 @@ where .map(Some) } - /// Modifies the accounts in the storage trie with the given [BundleState] changeset. + /// Modifies the accounts in the storage trie with the given [`BundleState`] changeset. /// /// ## Takes - /// - `bundle`: The [BundleState] changeset to apply to the trie DB. + /// - `bundle`: The [`BundleState`] changeset to apply to the trie DB. /// /// ## Returns /// - `Ok(())` if the accounts were successfully updated. @@ -346,6 +346,7 @@ where nonce: trie_account.nonce, code_hash: trie_account.code_hash, code: None, + account_id: None, })) } diff --git a/kona/crates/proof/executor/src/db/traits.rs b/rust/kona/crates/proof/executor/src/db/traits.rs similarity index 75% rename from kona/crates/proof/executor/src/db/traits.rs rename to rust/kona/crates/proof/executor/src/db/traits.rs index 99368547c8ee7..fd847f85fbe0f 100644 --- a/kona/crates/proof/executor/src/db/traits.rs +++ b/rust/kona/crates/proof/executor/src/db/traits.rs @@ -1,12 +1,12 @@ -//! Contains the [TrieDBProvider] trait for fetching EVM bytecode hash preimages as well as [Header] -//! preimages. +//! Contains the [`TrieDBProvider`] trait for fetching EVM bytecode hash preimages as well as +//! [Header] preimages. use alloc::string::String; use alloy_consensus::Header; use alloy_primitives::{B256, Bytes}; use kona_mpt::{TrieNode, TrieProvider}; -/// The [TrieDBProvider] trait defines the synchronous interface for fetching EVM bytecode hash +/// The [`TrieDBProvider`] trait defines the synchronous interface for fetching EVM bytecode hash /// preimages as well as [Header] preimages. pub trait TrieDBProvider: TrieProvider { /// Fetches the preimage of the bytecode hash provided. @@ -16,7 +16,7 @@ pub trait TrieDBProvider: TrieProvider { /// /// ## Returns /// - Ok(Bytes): The bytecode of the contract. - /// - Err(Self::Error): If the bytecode hash could not be fetched. + /// - `Err(Self::Error)`: If the bytecode hash could not be fetched. /// /// [TrieDB]: crate::TrieDB fn bytecode_by_hash(&self, code_hash: B256) -> Result; @@ -28,13 +28,13 @@ pub trait TrieDBProvider: TrieProvider { /// /// ## Returns /// - Ok(Bytes): The [Header]. - /// - Err(Self::Error): If the [Header] could not be fetched. + /// - `Err(Self::Error)`: If the [Header] could not be fetched. /// /// [TrieDB]: crate::TrieDB fn header_by_hash(&self, hash: B256) -> Result; } -/// The default, no-op implementation of the [TrieDBProvider] trait, used for testing. +/// The default, no-op implementation of the [`TrieDBProvider`] trait, used for testing. #[derive(Debug, Clone, Copy)] pub struct NoopTrieDBProvider; diff --git a/kona/crates/proof/executor/src/errors.rs b/rust/kona/crates/proof/executor/src/errors.rs similarity index 100% rename from kona/crates/proof/executor/src/errors.rs rename to rust/kona/crates/proof/executor/src/errors.rs diff --git a/kona/crates/proof/executor/src/lib.rs b/rust/kona/crates/proof/executor/src/lib.rs similarity index 93% rename from kona/crates/proof/executor/src/lib.rs rename to rust/kona/crates/proof/executor/src/lib.rs index d92219745930d..59b8f35145a3c 100644 --- a/kona/crates/proof/executor/src/lib.rs +++ b/rust/kona/crates/proof/executor/src/lib.rs @@ -4,7 +4,7 @@ html_favicon_url = "https://raw.githubusercontent.com/op-rs/kona/main/assets/favicon.ico", issue_tracker_base_url = "https://github.com/op-rs/kona/issues/" )] -#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))] +#![cfg_attr(docsrs, feature(doc_cfg))] #![cfg_attr(not(any(test, feature = "test-utils")), no_std)] extern crate alloc; diff --git a/kona/crates/proof/executor/src/test_utils.rs b/rust/kona/crates/proof/executor/src/test_utils.rs similarity index 99% rename from kona/crates/proof/executor/src/test_utils.rs rename to rust/kona/crates/proof/executor/src/test_utils.rs index 0669392ab5a0e..e9d01490cc31e 100644 --- a/kona/crates/proof/executor/src/test_utils.rs +++ b/rust/kona/crates/proof/executor/src/test_utils.rs @@ -18,7 +18,7 @@ use serde::{Deserialize, Serialize}; use std::{path::PathBuf, sync::Arc}; use tokio::{fs, runtime::Handle, sync::Mutex}; -/// Executes a [ExecutorTestFixture] stored at the passed `fixture_path` and asserts that the +/// Executes a [`ExecutorTestFixture`] stored at the passed `fixture_path` and asserts that the /// produced block hash matches the expected block hash. pub async fn run_test_fixture(fixture_path: PathBuf) { // First, untar the fixture. diff --git a/kona/crates/proof/executor/src/util.rs b/rust/kona/crates/proof/executor/src/util.rs similarity index 97% rename from kona/crates/proof/executor/src/util.rs rename to rust/kona/crates/proof/executor/src/util.rs index a0e86ad429819..6170d11ed438a 100644 --- a/kona/crates/proof/executor/src/util.rs +++ b/rust/kona/crates/proof/executor/src/util.rs @@ -61,8 +61,8 @@ pub(crate) fn decode_jovian_eip_1559_params_block_header( /// Encode Holocene [Header] extra data. /// /// ## Takes -/// - `config`: The [RollupConfig] for the chain. -/// - `attributes`: The [OpPayloadAttributes] for the block. +/// - `config`: The [`RollupConfig`] for the chain. +/// - `attributes`: The [`OpPayloadAttributes`] for the block. /// /// ## Returns /// - `Ok(data)`: The encoded extra data. @@ -80,8 +80,8 @@ pub(crate) fn encode_holocene_eip_1559_params( /// Encode Jovian [Header] extra data. /// /// ## Takes -/// - `config`: The [RollupConfig] for the chain. -/// - `attributes`: The [OpPayloadAttributes] for the block. +/// - `config`: The [`RollupConfig`] for the chain. +/// - `attributes`: The [`OpPayloadAttributes`] for the block. /// /// ## Returns /// - `Ok(data)`: The encoded extra data. diff --git a/kona/crates/proof/executor/testdata/block-26207960.tar.gz b/rust/kona/crates/proof/executor/testdata/block-26207960.tar.gz similarity index 100% rename from kona/crates/proof/executor/testdata/block-26207960.tar.gz rename to rust/kona/crates/proof/executor/testdata/block-26207960.tar.gz diff --git a/kona/crates/proof/executor/testdata/block-26207961.tar.gz b/rust/kona/crates/proof/executor/testdata/block-26207961.tar.gz similarity index 100% rename from kona/crates/proof/executor/testdata/block-26207961.tar.gz rename to rust/kona/crates/proof/executor/testdata/block-26207961.tar.gz diff --git a/kona/crates/proof/executor/testdata/block-26207962.tar.gz b/rust/kona/crates/proof/executor/testdata/block-26207962.tar.gz similarity index 100% rename from kona/crates/proof/executor/testdata/block-26207962.tar.gz rename to rust/kona/crates/proof/executor/testdata/block-26207962.tar.gz diff --git a/kona/crates/proof/executor/testdata/block-26207963.tar.gz b/rust/kona/crates/proof/executor/testdata/block-26207963.tar.gz similarity index 100% rename from kona/crates/proof/executor/testdata/block-26207963.tar.gz rename to rust/kona/crates/proof/executor/testdata/block-26207963.tar.gz diff --git a/kona/crates/proof/executor/testdata/block-26208384.tar.gz b/rust/kona/crates/proof/executor/testdata/block-26208384.tar.gz similarity index 100% rename from kona/crates/proof/executor/testdata/block-26208384.tar.gz rename to rust/kona/crates/proof/executor/testdata/block-26208384.tar.gz diff --git a/kona/crates/proof/executor/testdata/block-26208858.tar.gz b/rust/kona/crates/proof/executor/testdata/block-26208858.tar.gz similarity index 100% rename from kona/crates/proof/executor/testdata/block-26208858.tar.gz rename to rust/kona/crates/proof/executor/testdata/block-26208858.tar.gz diff --git a/kona/crates/proof/executor/testdata/block-26208927.tar.gz b/rust/kona/crates/proof/executor/testdata/block-26208927.tar.gz similarity index 100% rename from kona/crates/proof/executor/testdata/block-26208927.tar.gz rename to rust/kona/crates/proof/executor/testdata/block-26208927.tar.gz diff --git a/kona/crates/proof/executor/testdata/block-26211680.tar.gz b/rust/kona/crates/proof/executor/testdata/block-26211680.tar.gz similarity index 100% rename from kona/crates/proof/executor/testdata/block-26211680.tar.gz rename to rust/kona/crates/proof/executor/testdata/block-26211680.tar.gz diff --git a/kona/crates/proof/mpt/CHANGELOG.md b/rust/kona/crates/proof/mpt/CHANGELOG.md similarity index 100% rename from kona/crates/proof/mpt/CHANGELOG.md rename to rust/kona/crates/proof/mpt/CHANGELOG.md diff --git a/kona/crates/proof/mpt/Cargo.toml b/rust/kona/crates/proof/mpt/Cargo.toml similarity index 93% rename from kona/crates/proof/mpt/Cargo.toml rename to rust/kona/crates/proof/mpt/Cargo.toml index 757b54af4de54..42ed5a2c44a78 100644 --- a/kona/crates/proof/mpt/Cargo.toml +++ b/rust/kona/crates/proof/mpt/Cargo.toml @@ -37,7 +37,6 @@ reqwest.workspace = true proptest.workspace = true tokio = { workspace = true, features = ["full"] } criterion = { workspace = true, features = ["html_reports"] } -pprof = { workspace = true, features = ["criterion", "flamegraph", "frame-pointer"] } [features] default = [ "serde" ] diff --git a/kona/crates/proof/mpt/README.md b/rust/kona/crates/proof/mpt/README.md similarity index 100% rename from kona/crates/proof/mpt/README.md rename to rust/kona/crates/proof/mpt/README.md diff --git a/kona/crates/proof/mpt/benches/trie_node.rs b/rust/kona/crates/proof/mpt/benches/trie_node.rs similarity index 96% rename from kona/crates/proof/mpt/benches/trie_node.rs rename to rust/kona/crates/proof/mpt/benches/trie_node.rs index a177ca0f1140a..6f1dd172e0b55 100644 --- a/kona/crates/proof/mpt/benches/trie_node.rs +++ b/rust/kona/crates/proof/mpt/benches/trie_node.rs @@ -1,10 +1,9 @@ #![allow(missing_docs)] -//! Contains benchmarks for the [TrieNode]. +//! Contains benchmarks for the [`TrieNode`]. use alloy_trie::Nibbles; use criterion::{Criterion, criterion_group, criterion_main}; use kona_mpt::{NoopTrieHinter, NoopTrieProvider, TrieNode}; -use pprof::criterion::{Output, PProfProfiler}; use rand::{Rng, SeedableRng, rngs::StdRng, seq::IteratorRandom}; fn trie(c: &mut Criterion) { @@ -152,7 +151,7 @@ fn trie(c: &mut Criterion) { criterion_group! { name = trie_benches; - config = Criterion::default().with_profiler(PProfProfiler::new(100, Output::Flamegraph(None))); + config = Criterion::default(); targets = trie } criterion_main!(trie_benches); diff --git a/kona/crates/proof/mpt/src/errors.rs b/rust/kona/crates/proof/mpt/src/errors.rs similarity index 78% rename from kona/crates/proof/mpt/src/errors.rs rename to rust/kona/crates/proof/mpt/src/errors.rs index 53c66d54b85d3..cc07e3c7d97f7 100644 --- a/kona/crates/proof/mpt/src/errors.rs +++ b/rust/kona/crates/proof/mpt/src/errors.rs @@ -3,12 +3,10 @@ use alloc::string::String; use thiserror::Error; -/// A [Result] type alias where the error is [TrieNodeError]. +/// A [Result] type alias where the error is [`TrieNodeError`]. pub type TrieNodeResult = Result; -/// An error type for [TrieNode] operations. -/// -/// [TrieNode]: crate::TrieNode +/// An error type for [`TrieNode`](crate::TrieNode) operations. #[derive(Error, Debug, PartialEq, Eq)] pub enum TrieNodeError { /// Invalid trie node type encountered. @@ -28,12 +26,10 @@ pub enum TrieNodeError { Provider(String), } -/// A [Result] type alias where the error is [OrderedListWalkerError]. +/// A [Result] type alias where the error is [`OrderedListWalkerError`]. pub type OrderedListWalkerResult = Result; -/// An error type for [OrderedListWalker] operations. -/// -/// [OrderedListWalker]: crate::OrderedListWalker +/// An error type for [`OrderedListWalker`](crate::OrderedListWalker) operations. #[derive(Error, Debug, PartialEq, Eq)] pub enum OrderedListWalkerError { /// Iterator has already been hydrated, and cannot be re-hydrated until it is exhausted. diff --git a/kona/crates/proof/mpt/src/lib.rs b/rust/kona/crates/proof/mpt/src/lib.rs similarity index 93% rename from kona/crates/proof/mpt/src/lib.rs rename to rust/kona/crates/proof/mpt/src/lib.rs index 61552e733c8b8..b01c6fc38eef7 100644 --- a/kona/crates/proof/mpt/src/lib.rs +++ b/rust/kona/crates/proof/mpt/src/lib.rs @@ -4,7 +4,7 @@ html_favicon_url = "https://raw.githubusercontent.com/op-rs/kona/main/assets/favicon.ico", issue_tracker_base_url = "https://github.com/op-rs/kona/issues/" )] -#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))] +#![cfg_attr(docsrs, feature(doc_cfg))] #![cfg_attr(not(test), no_std)] extern crate alloc; diff --git a/kona/crates/proof/mpt/src/list_walker.rs b/rust/kona/crates/proof/mpt/src/list_walker.rs similarity index 89% rename from kona/crates/proof/mpt/src/list_walker.rs rename to rust/kona/crates/proof/mpt/src/list_walker.rs index 2a2104c148767..1d18c34c6e7a4 100644 --- a/kona/crates/proof/mpt/src/list_walker.rs +++ b/rust/kona/crates/proof/mpt/src/list_walker.rs @@ -1,5 +1,5 @@ -//! This module contains the [OrderedListWalker] struct, which allows for traversing an MPT root of -//! a derivable ordered list. +//! This module contains the [`OrderedListWalker`] struct, which allows for traversing an MPT root +//! of a derivable ordered list. use crate::{ TrieNode, TrieNodeError, TrieProvider, @@ -10,17 +10,17 @@ use alloy_primitives::{B256, Bytes}; use alloy_rlp::EMPTY_STRING_CODE; use core::marker::PhantomData; -/// A [OrderedListWalker] allows for traversing over a Merkle Patricia Trie containing a derivable +/// A [`OrderedListWalker`] allows for traversing over a Merkle Patricia Trie containing a derivable /// ordered list. /// -/// Once it has been hydrated with [Self::hydrate], the elements in the derivable list can be +/// Once it has been hydrated with [`Self::hydrate`], the elements in the derivable list can be /// iterated over using the [Iterator] implementation. #[derive(Debug, Clone, Eq, PartialEq)] pub struct OrderedListWalker { /// The Merkle Patricia Trie root. root: B256, /// The leaf nodes of the derived list, in order. [None] if the tree has yet to be fully - /// traversed with [Self::hydrate]. + /// traversed with [`Self::hydrate`]. inner: Option>, /// Phantom data _phantom: PhantomData, @@ -30,20 +30,20 @@ impl OrderedListWalker where F: TrieProvider, { - /// Creates a new [OrderedListWalker], yet to be hydrated. + /// Creates a new [`OrderedListWalker`], yet to be hydrated. pub const fn new(root: B256) -> Self { Self { root, inner: None, _phantom: PhantomData } } - /// Creates a new [OrderedListWalker] and hydrates it with [Self::hydrate] and the given fetcher - /// immediately. + /// Creates a new [`OrderedListWalker`] and hydrates it with [`Self::hydrate`] and the given + /// fetcher immediately. pub fn try_new_hydrated(root: B256, fetcher: &F) -> OrderedListWalkerResult { let mut walker = Self { root, inner: None, _phantom: PhantomData }; walker.hydrate(fetcher)?; Ok(walker) } - /// Hydrates the [OrderedListWalker]'s iterator with the leaves of the derivable list. If + /// Hydrates the [`OrderedListWalker`]'s iterator with the leaves of the derivable list. If /// `Self::inner` is [Some], this function will fail fast. pub fn hydrate(&mut self, fetcher: &F) -> OrderedListWalkerResult<()> { // Do not allow for re-hydration if `inner` is `Some` and still contains elements. @@ -75,13 +75,13 @@ where Ok(()) } - /// Takes the inner list of the [OrderedListWalker], returning it and setting the inner list to - /// [None]. + /// Takes the inner list of the [`OrderedListWalker`], returning it and setting the inner list + /// to [None]. pub const fn take_inner(&mut self) -> Option> { self.inner.take() } - /// Traverses a [TrieNode], returning all values of child [TrieNode::Leaf] variants. + /// Traverses a [`TrieNode`], returning all values of child [`TrieNode::Leaf`] variants. fn fetch_leaves( trie_node: &TrieNode, fetcher: &F, @@ -89,7 +89,7 @@ where match trie_node { TrieNode::Branch { stack } => { let mut leaf_values = VecDeque::with_capacity(stack.len()); - for item in stack.iter() { + for item in stack { match item { TrieNode::Blinded { commitment } => { // If the string is a hash, we need to grab the preimage for it and @@ -127,7 +127,7 @@ where } /// Grabs the preimage of `hash` using `fetcher`, and attempts to decode the preimage data into - /// a [TrieNode]. Will error if the conversion of `T` into [B256] fails. + /// a [`TrieNode`]. Will error if the conversion of `T` into [B256] fails. fn get_trie_node(hash: T, fetcher: &F) -> OrderedListWalkerResult where T: Into, diff --git a/kona/crates/proof/mpt/src/node.rs b/rust/kona/crates/proof/mpt/src/node.rs similarity index 92% rename from kona/crates/proof/mpt/src/node.rs rename to rust/kona/crates/proof/mpt/src/node.rs index 298e122326c52..7914b4e8df702 100644 --- a/kona/crates/proof/mpt/src/node.rs +++ b/rust/kona/crates/proof/mpt/src/node.rs @@ -1,4 +1,4 @@ -//! This module contains the [TrieNode] type, which represents a node within a standard Merkle +//! This module contains the [`TrieNode`] type, which represents a node within a standard Merkle //! Patricia Trie. use crate::{ @@ -35,35 +35,36 @@ const PREFIX_LEAF_ODD: u8 = 3; /// Nibble bit width. const NIBBLE_WIDTH: usize = 4; -/// A [TrieNode] is a node within a standard Ethereum Merkle Patricia Trie. In this implementation, -/// keys are expected to be fixed-size nibble sequences, and values are arbitrary byte sequences. +/// A [`TrieNode`] is a node within a standard Ethereum Merkle Patricia Trie. In this +/// implementation, keys are expected to be fixed-size nibble sequences, and values are arbitrary +/// byte sequences. /// -/// The [TrieNode] has several variants: -/// - [TrieNode::Empty] represents an empty node. -/// - [TrieNode::Blinded] represents a node that has been blinded by a commitment. -/// - [TrieNode::Leaf] represents a 2-item node with the encoding `rlp([encoded_path, value])`. -/// - [TrieNode::Extension] represents a 2-item pointer node with the encoding `rlp([encoded_path, +/// The [`TrieNode`] has several variants: +/// - [`TrieNode::Empty`] represents an empty node. +/// - [`TrieNode::Blinded`] represents a node that has been blinded by a commitment. +/// - [`TrieNode::Leaf`] represents a 2-item node with the encoding `rlp([encoded_path, value])`. +/// - [`TrieNode::Extension`] represents a 2-item pointer node with the encoding `rlp([encoded_path, /// key])`. -/// - [TrieNode::Branch] represents a node that refers to up to 16 child nodes with the encoding +/// - [`TrieNode::Branch`] represents a node that refers to up to 16 child nodes with the encoding /// `rlp([ v0, ..., v15, value ])`. /// /// In the Ethereum Merkle Patricia Trie, nodes longer than an encoded 32 byte string (33 total /// bytes) are blinded with [keccak256] hashes. When a node is "opened", it is replaced with the -/// [TrieNode] that is decoded from to the preimage of the hash. +/// [`TrieNode`] that is decoded from to the preimage of the hash. /// -/// The [alloy_rlp::Encodable] and [alloy_rlp::Decodable] traits are implemented for [TrieNode], -/// allowing for RLP encoding and decoding of the types for storage and retrieval. The +/// The [`alloy_rlp::Encodable`] and [`alloy_rlp::Decodable`] traits are implemented for +/// [`TrieNode`], allowing for RLP encoding and decoding of the types for storage and retrieval. The /// implementation of these traits will implicitly blind nodes that are longer than 32 bytes in /// length when encoding. When decoding, the implementation will leave blinded nodes in place. /// /// ## SAFETY -/// As this implementation only supports uniform key sizes, the [TrieNode] data structure will fail -/// to behave correctly if confronted with keys of varying lengths. Namely, this is because it does -/// not support the `value` field in branch nodes, just like the Ethereum Merkle Patricia Trie. +/// As this implementation only supports uniform key sizes, the [`TrieNode`] data structure will +/// fail to behave correctly if confronted with keys of varying lengths. Namely, this is because it +/// does not support the `value` field in branch nodes, just like the Ethereum Merkle Patricia Trie. #[derive(Debug, Clone, Eq, PartialEq)] #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] pub enum TrieNode { - /// An empty [TrieNode] is represented as an [EMPTY_STRING_CODE] (0x80). + /// An empty [`TrieNode`] is represented as an [`EMPTY_STRING_CODE`] (0x80). Empty, /// A blinded node is a node that has been blinded by a [keccak256] commitment. Blinded { @@ -82,29 +83,29 @@ pub enum TrieNode { /// The path prefix of the extension prefix: Nibbles, /// The pointer to the child node - node: Box, + node: Box, }, /// A branch node refers to up to 16 child nodes with the encoding /// `rlp([ v0, ..., v15, value ])` Branch { /// The 16 child nodes and value of the branch. - stack: Vec, + stack: Vec, }, } impl TrieNode { - /// Creates a new [TrieNode::Blinded] node. + /// Creates a new [`TrieNode::Blinded`] node. /// /// ## Takes /// - `commitment` - The commitment that blinds the node /// /// ## Returns - /// - `Self` - The new blinded [TrieNode]. + /// - `Self` - The new blinded [`TrieNode`]. pub const fn new_blinded(commitment: B256) -> Self { Self::Blinded { commitment } } - /// Blinds the [TrieNode].. Alternatively, if the [TrieNode] is a [TrieNode::Blinded] node + /// Blinds the [`TrieNode`].. Alternatively, if the [`TrieNode`] is a [`TrieNode::Blinded`] node /// already, its commitment is returned directly. pub fn blind(&self) -> B256 { match self { @@ -118,7 +119,7 @@ impl TrieNode { } } - /// Unblinds the [TrieNode] if it is a [TrieNode::Blinded] node. + /// Unblinds the [`TrieNode`] if it is a [`TrieNode::Blinded`] node. pub fn unblind(&mut self, fetcher: &F) -> TrieNodeResult<()> { if let Self::Blinded { commitment } = self { if *commitment == EMPTY_ROOT_HASH { @@ -136,7 +137,7 @@ impl TrieNode { /// Walks down the trie to a leaf value with the given key, if it exists. Preimages for blinded /// nodes along the path are fetched using the `fetcher` function, and persisted in the inner - /// [TrieNode] elements. + /// [`TrieNode`] elements. /// /// ## Takes /// - `self` - The root trie node @@ -178,7 +179,7 @@ impl TrieNode { } } - /// Inserts a [TrieNode] at the given path into the trie rooted at Self. + /// Inserts a [`TrieNode`] at the given path into the trie rooted at Self. /// /// ## Takes /// - `self` - The root trie node @@ -444,11 +445,11 @@ impl TrieNode { Ok(()) } - /// Attempts to convert a `path` and `value` into a [TrieNode], if they correspond to a - /// [TrieNode::Leaf] or [TrieNode::Extension]. + /// Attempts to convert a `path` and `value` into a [`TrieNode`], if they correspond to a + /// [`TrieNode::Leaf`] or [`TrieNode::Extension`]. /// /// **Note:** This function assumes that the passed reader has already consumed the RLP header - /// of the [TrieNode::Leaf] or [TrieNode::Extension] node. + /// of the [`TrieNode::Leaf`] or [`TrieNode::Extension`] node. fn try_decode_leaf_or_extension_payload(buf: &mut &[u8]) -> TrieNodeResult { // Decode the path and value of the leaf or extension node. let path = Bytes::decode(buf).map_err(TrieNodeError::RLPError)?; @@ -478,7 +479,7 @@ impl TrieNode { } } - /// Returns the RLP payload length of the [TrieNode]. + /// Returns the RLP payload length of the [`TrieNode`]. pub(crate) fn payload_length(&self) -> usize { match self { Self::Empty => 0, @@ -550,14 +551,14 @@ impl Encodable for TrieNode { // Assuming we have an open trie node, we must re-hash the elements // that are longer than 32 bytes in length. Header { list: true, payload_length }.encode(out); - stack.iter().for_each(|node| { + for node in stack { if node.length() >= B256::ZERO.len() { let hash = node.blind(); hash.encode(out); } else { node.encode(out); } - }); + } } } } @@ -566,15 +567,7 @@ impl Encodable for TrieNode { match self { Self::Empty => 1, Self::Blinded { commitment } => commitment.length(), - Self::Leaf { .. } => { - let payload_length = self.payload_length(); - Header { list: true, payload_length }.length() + payload_length - } - Self::Extension { .. } => { - let payload_length = self.payload_length(); - Header { list: true, payload_length }.length() + payload_length - } - Self::Branch { .. } => { + Self::Leaf { .. } | Self::Extension { .. } | Self::Branch { .. } => { let payload_length = self.payload_length(); Header { list: true, payload_length }.length() + payload_length } @@ -583,7 +576,7 @@ impl Encodable for TrieNode { } impl Decodable for TrieNode { - /// Attempts to decode the [TrieNode]. + /// Attempts to decode the [`TrieNode`]. fn decode(buf: &mut &[u8]) -> alloy_rlp::Result { // Peek at the header to determine the type of Trie node we're currently decoding. let header = Header::decode(&mut (**buf).as_ref())?; diff --git a/kona/crates/proof/mpt/src/noop.rs b/rust/kona/crates/proof/mpt/src/noop.rs similarity index 89% rename from kona/crates/proof/mpt/src/noop.rs rename to rust/kona/crates/proof/mpt/src/noop.rs index a3930ee0315d5..7bd7f2ec9679d 100644 --- a/kona/crates/proof/mpt/src/noop.rs +++ b/rust/kona/crates/proof/mpt/src/noop.rs @@ -6,7 +6,7 @@ use alloc::string::String; use alloy_primitives::{Address, B256, U256}; use core::fmt::Debug; -/// The default, no-op implementation of the [TrieProvider] trait, used for testing. +/// The default, no-op implementation of the [`TrieProvider`] trait, used for testing. #[derive(Debug, Clone, Copy)] pub struct NoopTrieProvider; @@ -18,7 +18,7 @@ impl TrieProvider for NoopTrieProvider { } } -/// The default, no-op implementation of the [TrieHinter] trait, used for testing. +/// The default, no-op implementation of the [`TrieHinter`] trait, used for testing. #[derive(Debug, Clone, Copy)] pub struct NoopTrieHinter; diff --git a/kona/crates/proof/mpt/src/test_util.rs b/rust/kona/crates/proof/mpt/src/test_util.rs similarity index 98% rename from kona/crates/proof/mpt/src/test_util.rs rename to rust/kona/crates/proof/mpt/src/test_util.rs index c980d684ebb84..188bc32e64af0 100644 --- a/kona/crates/proof/mpt/src/test_util.rs +++ b/rust/kona/crates/proof/mpt/src/test_util.rs @@ -126,7 +126,7 @@ pub(crate) async fn get_live_derivable_transactions_list() Ok((root, preimages, consensus_txs)) } -/// A mock [TrieProvider] for testing that serves in-memory preimages. +/// A mock [`TrieProvider`] for testing that serves in-memory preimages. pub(crate) struct TrieNodeProvider { preimages: BTreeMap, } diff --git a/kona/crates/proof/mpt/src/traits.rs b/rust/kona/crates/proof/mpt/src/traits.rs similarity index 79% rename from kona/crates/proof/mpt/src/traits.rs rename to rust/kona/crates/proof/mpt/src/traits.rs index acf3342155135..92fd4047ef623 100644 --- a/kona/crates/proof/mpt/src/traits.rs +++ b/rust/kona/crates/proof/mpt/src/traits.rs @@ -1,4 +1,4 @@ -//! Contains the [TrieProvider] trait for fetching trie node preimages, contract bytecode, and +//! Contains the [`TrieProvider`] trait for fetching trie node preimages, contract bytecode, and //! headers. use crate::TrieNode; @@ -6,7 +6,7 @@ use alloy_primitives::{Address, B256, U256}; use core::fmt::Display; use op_alloy_rpc_types_engine::OpPayloadAttributes; -/// The [TrieProvider] trait defines the synchronous interface for fetching trie node preimages. +/// The [`TrieProvider`] trait defines the synchronous interface for fetching trie node preimages. pub trait TrieProvider { /// The error type for fetching trie node preimages. type Error: Display; @@ -18,11 +18,11 @@ pub trait TrieProvider { /// /// ## Returns /// - Ok(TrieNode): The trie node preimage. - /// - Err(Self::Error): If the trie node preimage could not be fetched. + /// - `Err(Self::Error)`: If the trie node preimage could not be fetched. fn trie_node_by_hash(&self, key: B256) -> Result; } -/// The [TrieHinter] trait defines the synchronous interface for hinting the host to fetch trie +/// The [`TrieHinter`] trait defines the synchronous interface for hinting the host to fetch trie /// node preimages. pub trait TrieHinter { /// The error type for hinting trie node preimages. @@ -45,7 +45,7 @@ pub trait TrieHinter { /// /// ## Returns /// - Ok(()): If the hint was successful. - /// - Err(Self::Error): If the hint was unsuccessful. + /// - `Err(Self::Error)`: If the hint was unsuccessful. fn hint_account_proof(&self, address: Address, block_number: u64) -> Result<(), Self::Error>; /// Hints the host to fetch the trie node preimages on the path to the storage slot within the @@ -58,7 +58,7 @@ pub trait TrieHinter { /// /// ## Returns /// - Ok(()): If the hint was successful. - /// - Err(Self::Error): If the hint was unsuccessful. + /// - `Err(Self::Error)`: If the hint was unsuccessful. fn hint_storage_proof( &self, address: Address, @@ -66,7 +66,7 @@ pub trait TrieHinter { block_number: u64, ) -> Result<(), Self::Error>; - /// Hints the host to fetch the execution witness for the [OpPayloadAttributes] applied on top + /// Hints the host to fetch the execution witness for the [`OpPayloadAttributes`] applied on top /// of the parent block's state. /// /// ## Takes @@ -75,7 +75,7 @@ pub trait TrieHinter { /// /// ## Returns /// - Ok(()): If the hint was successful. - /// - Err(Self::Error): If the hint was unsuccessful. + /// - `Err(Self::Error)`: If the hint was unsuccessful. fn hint_execution_witness( &self, parent_hash: B256, diff --git a/kona/crates/proof/mpt/src/util.rs b/rust/kona/crates/proof/mpt/src/util.rs similarity index 96% rename from kona/crates/proof/mpt/src/util.rs rename to rust/kona/crates/proof/mpt/src/util.rs index 23fd1f8bc11e8..6ac9d6df68172 100644 --- a/kona/crates/proof/mpt/src/util.rs +++ b/rust/kona/crates/proof/mpt/src/util.rs @@ -51,7 +51,7 @@ pub(crate) const fn adjust_index_for_rlp(i: usize, len: usize) -> usize { } /// Walks through a RLP list's elements and returns the total number of elements in the list. -/// Returns [alloy_rlp::Error::UnexpectedString] if the RLP stream is not a list. +/// Returns [`alloy_rlp::Error::UnexpectedString`] if the RLP stream is not a list. /// /// ## Takes /// - `buf` - The RLP stream to walk through diff --git a/kona/crates/proof/preimage/CHANGELOG.md b/rust/kona/crates/proof/preimage/CHANGELOG.md similarity index 100% rename from kona/crates/proof/preimage/CHANGELOG.md rename to rust/kona/crates/proof/preimage/CHANGELOG.md diff --git a/kona/crates/proof/preimage/Cargo.toml b/rust/kona/crates/proof/preimage/Cargo.toml similarity index 100% rename from kona/crates/proof/preimage/Cargo.toml rename to rust/kona/crates/proof/preimage/Cargo.toml diff --git a/kona/crates/proof/preimage/README.md b/rust/kona/crates/proof/preimage/README.md similarity index 100% rename from kona/crates/proof/preimage/README.md rename to rust/kona/crates/proof/preimage/README.md diff --git a/kona/crates/proof/preimage/src/errors.rs b/rust/kona/crates/proof/preimage/src/errors.rs similarity index 71% rename from kona/crates/proof/preimage/src/errors.rs rename to rust/kona/crates/proof/preimage/src/errors.rs index 16b5aae033e19..32659fc72291a 100644 --- a/kona/crates/proof/preimage/src/errors.rs +++ b/rust/kona/crates/proof/preimage/src/errors.rs @@ -3,11 +3,9 @@ use alloc::string::String; use thiserror::Error; -/// A [PreimageOracleError] is an enum that differentiates pipe-related errors from other errors -/// in the [PreimageOracleServer] and [HintReaderServer] implementations. -/// -/// [PreimageOracleServer]: crate::PreimageOracleServer -/// [HintReaderServer]: crate::HintReaderServer +/// A [`PreimageOracleError`] is an enum that differentiates pipe-related errors from other errors +/// in the [`PreimageOracleServer`](crate::PreimageOracleServer) and +/// [`HintReaderServer`](crate::HintReaderServer) implementations. #[derive(Error, Debug)] pub enum PreimageOracleError { /// The pipe has been broken. @@ -33,10 +31,11 @@ pub enum PreimageOracleError { Other(String), } -/// A [Result] type for the [PreimageOracleError] enum. +/// A [Result] type for the [`PreimageOracleError`] enum. pub type PreimageOracleResult = Result; -/// A [ChannelError] is an enum that describes the error cases of a [Channel] trait implementation. +/// A [`ChannelError`] is an enum that describes the error cases of a [Channel] trait +/// implementation. /// /// [Channel]: crate::Channel #[derive(Error, Debug)] @@ -49,5 +48,5 @@ pub enum ChannelError { UnexpectedEOF, } -/// A [Result] type for the [ChannelError] enum. +/// A [Result] type for the [`ChannelError`] enum. pub type ChannelResult = Result; diff --git a/kona/crates/proof/preimage/src/hint.rs b/rust/kona/crates/proof/preimage/src/hint.rs similarity index 95% rename from kona/crates/proof/preimage/src/hint.rs rename to rust/kona/crates/proof/preimage/src/hint.rs index 227d1dacdd7be..df821c3947ff2 100644 --- a/kona/crates/proof/preimage/src/hint.rs +++ b/rust/kona/crates/proof/preimage/src/hint.rs @@ -6,7 +6,7 @@ use crate::{ use alloc::{boxed::Box, format, string::String, vec}; use async_trait::async_trait; -/// A [HintWriter] is a high-level interface to the hint channel. It provides a way to write hints +/// A [`HintWriter`] is a high-level interface to the hint channel. It provides a way to write hints /// to the host. #[derive(Debug, Clone, Copy)] pub struct HintWriter { @@ -14,7 +14,7 @@ pub struct HintWriter { } impl HintWriter { - /// Create a new [HintWriter] from a [Channel]. + /// Create a new [`HintWriter`] from a [`Channel`]. pub const fn new(channel: C) -> Self { Self { channel } } @@ -47,7 +47,7 @@ where } } -/// A [HintReader] is a router for hints sent by the [HintWriter] from the client program. It +/// A [`HintReader`] is a router for hints sent by the [`HintWriter`] from the client program. It /// provides a way for the host to prepare preimages for reading. #[derive(Debug, Clone, Copy)] pub struct HintReader { @@ -58,7 +58,7 @@ impl HintReader where C: Channel, { - /// Create a new [HintReader] from a [Channel]. + /// Create a new [`HintReader`] from a [`Channel`]. pub const fn new(channel: C) -> Self { Self { channel } } diff --git a/kona/crates/proof/preimage/src/key.rs b/rust/kona/crates/proof/preimage/src/key.rs similarity index 88% rename from kona/crates/proof/preimage/src/key.rs rename to rust/kona/crates/proof/preimage/src/key.rs index 0ef1a383ff258..14925723c260a 100644 --- a/kona/crates/proof/preimage/src/key.rs +++ b/rust/kona/crates/proof/preimage/src/key.rs @@ -1,4 +1,4 @@ -//! Contains the [PreimageKey] type, which is used to identify preimages that may be fetched from +//! Contains the [`PreimageKey`] type, which is used to identify preimages that may be fetched from //! the preimage oracle. use alloy_primitives::{B256, Keccak256, U256}; @@ -26,7 +26,7 @@ pub enum PreimageKeyType { /// low-order 31 bytes of the preimage's `keccak256` digest to the preimage itself. #[default] Keccak256 = 2, - /// GlobalGeneric key types are reserved for future use. + /// `GlobalGeneric` key types are reserved for future use. GlobalGeneric = 3, /// Sha256 key types are global and context independent. Preimages are mapped from the /// low-order 31 bytes of the preimage's `sha256` digest to the preimage itself. @@ -79,31 +79,31 @@ pub struct PreimageKey { } impl PreimageKey { - /// Creates a new [PreimageKey] from a 32-byte value and a [PreimageKeyType]. The 32-byte value - /// will be truncated to 31 bytes by taking the low-order 31 bytes. + /// Creates a new [`PreimageKey`] from a 32-byte value and a [`PreimageKeyType`]. The 32-byte + /// value will be truncated to 31 bytes by taking the low-order 31 bytes. pub fn new(key: [u8; 32], key_type: PreimageKeyType) -> Self { let mut data = [0u8; 31]; data.copy_from_slice(&key[1..]); Self { data, key_type } } - /// Creates a new local [PreimageKey] from a 64-bit local identifier. The local identifier will - /// be written into the low-order 8 bytes of the big-endian 31-byte data field. + /// Creates a new local [`PreimageKey`] from a 64-bit local identifier. The local identifier + /// will be written into the low-order 8 bytes of the big-endian 31-byte data field. pub fn new_local(local_ident: u64) -> Self { let mut data = [0u8; 31]; data[23..].copy_from_slice(&local_ident.to_be_bytes()); Self { data, key_type: PreimageKeyType::Local } } - /// Creates a new keccak256 [PreimageKey] from a 32-byte keccak256 digest. The digest will be + /// Creates a new keccak256 [`PreimageKey`] from a 32-byte keccak256 digest. The digest will be /// truncated to 31 bytes by taking the low-order 31 bytes. pub fn new_keccak256(digest: [u8; 32]) -> Self { Self::new(digest, PreimageKeyType::Keccak256) } - /// Creates a new precompile [PreimageKey] from a precompile address and input. The key will be - /// constructed as `keccak256(precompile_addr ++ input)`, and then the high-order byte of the - /// digest will be set to the type byte. + /// Creates a new precompile [`PreimageKey`] from a precompile address and input. The key will + /// be constructed as `keccak256(precompile_addr ++ input)`, and then the high-order byte of + /// the digest will be set to the type byte. pub fn new_precompile(precompile_addr: [u8; 20], input: &[u8]) -> Self { let mut data = [0u8; 31]; @@ -115,12 +115,12 @@ impl PreimageKey { Self { data, key_type: PreimageKeyType::Precompile } } - /// Returns the [PreimageKeyType] for the [PreimageKey]. + /// Returns the [`PreimageKeyType`] for the [`PreimageKey`]. pub const fn key_type(&self) -> PreimageKeyType { self.key_type } - /// Returns the value of the [PreimageKey] as a [U256]. + /// Returns the value of the [`PreimageKey`] as a [`U256`]. pub const fn key_value(&self) -> U256 { U256::from_be_slice(self.data.as_slice()) } diff --git a/kona/crates/proof/preimage/src/lib.rs b/rust/kona/crates/proof/preimage/src/lib.rs similarity index 94% rename from kona/crates/proof/preimage/src/lib.rs rename to rust/kona/crates/proof/preimage/src/lib.rs index f9327992ec2a2..0cf4a012a6161 100644 --- a/kona/crates/proof/preimage/src/lib.rs +++ b/rust/kona/crates/proof/preimage/src/lib.rs @@ -4,7 +4,7 @@ html_favicon_url = "https://raw.githubusercontent.com/op-rs/kona/main/assets/favicon.ico", issue_tracker_base_url = "https://github.com/op-rs/kona/issues/" )] -#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))] +#![cfg_attr(docsrs, feature(doc_cfg))] #![cfg_attr(not(feature = "std"), no_std)] extern crate alloc; diff --git a/kona/crates/proof/preimage/src/native_channel.rs b/rust/kona/crates/proof/preimage/src/native_channel.rs similarity index 92% rename from kona/crates/proof/preimage/src/native_channel.rs rename to rust/kona/crates/proof/preimage/src/native_channel.rs index db02e513e69aa..d1b93270a084c 100644 --- a/kona/crates/proof/preimage/src/native_channel.rs +++ b/rust/kona/crates/proof/preimage/src/native_channel.rs @@ -1,4 +1,4 @@ -//! Native implementation of the [Channel] trait, backed by [async_channel]'s unbounded +//! Native implementation of the [Channel] trait, backed by [`async_channel`]'s unbounded //! channel primitives. use crate::{ @@ -19,7 +19,7 @@ pub struct BidirectionalChannel { } impl BidirectionalChannel { - /// Creates a [BidirectionalChannel] instance. + /// Creates a [`BidirectionalChannel`] instance. pub fn new() -> Result { let (bw, ar) = unbounded(); let (aw, br) = unbounded(); diff --git a/kona/crates/proof/preimage/src/oracle.rs b/rust/kona/crates/proof/preimage/src/oracle.rs similarity index 96% rename from kona/crates/proof/preimage/src/oracle.rs rename to rust/kona/crates/proof/preimage/src/oracle.rs index 076313049e45f..f049273070f87 100644 --- a/kona/crates/proof/preimage/src/oracle.rs +++ b/rust/kona/crates/proof/preimage/src/oracle.rs @@ -5,7 +5,7 @@ use crate::{ }; use alloc::{boxed::Box, vec::Vec}; -/// An [OracleReader] is a high-level interface to the preimage oracle channel. +/// An [`OracleReader`] is a high-level interface to the preimage oracle channel. #[derive(Debug, Clone, Copy)] pub struct OracleReader { channel: C, @@ -15,7 +15,7 @@ impl OracleReader where C: Channel, { - /// Create a new [OracleReader] from a [Channel]. + /// Create a new [`OracleReader`] from a [`Channel`]. pub const fn new(channel: C) -> Self { Self { channel } } @@ -90,7 +90,7 @@ where } } -/// An [OracleServer] is a router for the host to serve data back to the client [OracleReader]. +/// An [`OracleServer`] is a router for the host to serve data back to the client [`OracleReader`]. #[derive(Debug, Clone, Copy)] pub struct OracleServer { channel: C, @@ -100,7 +100,7 @@ impl OracleServer where C: Channel, { - /// Create a new [OracleServer] from a [Channel]. + /// Create a new [`OracleServer`] from a [`Channel`]. pub const fn new(channel: C) -> Self { Self { channel } } diff --git a/kona/crates/proof/preimage/src/traits.rs b/rust/kona/crates/proof/preimage/src/traits.rs similarity index 82% rename from kona/crates/proof/preimage/src/traits.rs rename to rust/kona/crates/proof/preimage/src/traits.rs index affa8fe974b52..7f8f8345ba8e4 100644 --- a/kona/crates/proof/preimage/src/traits.rs +++ b/rust/kona/crates/proof/preimage/src/traits.rs @@ -5,8 +5,8 @@ use crate::{ use alloc::{boxed::Box, string::String, vec::Vec}; use async_trait::async_trait; -/// A [PreimageOracleClient] is a high-level interface to read data from the host, keyed by a -/// [PreimageKey]. +/// A [`PreimageOracleClient`] is a high-level interface to read data from the host, keyed by a +/// [`PreimageKey`]. #[async_trait] pub trait PreimageOracleClient { /// Get the data corresponding to the currently set key from the host. Return the data in a new @@ -26,7 +26,7 @@ pub trait PreimageOracleClient { async fn get_exact(&self, key: PreimageKey, buf: &mut [u8]) -> PreimageOracleResult<()>; } -/// A [HintWriterClient] is a high-level interface to the hint pipe. It provides a way to write +/// A [`HintWriterClient`] is a high-level interface to the hint pipe. It provides a way to write /// hints to the host. #[async_trait] pub trait HintWriterClient { @@ -39,13 +39,13 @@ pub trait HintWriterClient { async fn write(&self, hint: &str) -> PreimageOracleResult<()>; } -/// A [CommsClient] is a trait that combines the [PreimageOracleClient] and [HintWriterClient] +/// A [`CommsClient`] is a trait that combines the [`PreimageOracleClient`] and [`HintWriterClient`] pub trait CommsClient: PreimageOracleClient + Clone + HintWriterClient {} // Implement the super trait for any type that satisfies the bounds impl CommsClient for T {} -/// A [PreimageOracleServer] is a high-level interface to accept read requests from the client and +/// A [`PreimageOracleServer`] is a high-level interface to accept read requests from the client and /// write the preimage data to the client pipe. #[async_trait] pub trait PreimageOracleServer { @@ -59,8 +59,8 @@ pub trait PreimageOracleServer { F: PreimageFetcher + Send + Sync; } -/// A [HintReaderServer] is a high-level interface to read preimage hints from the -/// [HintWriterClient] and prepare them for consumption by the client program. +/// A [`HintReaderServer`] is a high-level interface to read preimage hints from the +/// [`HintWriterClient`] and prepare them for consumption by the client program. #[async_trait] pub trait HintReaderServer { /// Get the next hint request and return the acknowledgement to the client. @@ -74,7 +74,7 @@ pub trait HintReaderServer { R: HintRouter + Send + Sync; } -/// A [HintRouter] is a high-level interface to route hints to the appropriate handler. +/// A [`HintRouter`] is a high-level interface to route hints to the appropriate handler. #[async_trait] pub trait HintRouter { /// Routes a hint to the appropriate handler. @@ -88,7 +88,7 @@ pub trait HintRouter { async fn route_hint(&self, hint: String) -> PreimageOracleResult<()>; } -/// A [PreimageFetcher] is a high-level interface to fetch preimages during preimage requests. +/// A [`PreimageFetcher`] is a high-level interface to fetch preimages during preimage requests. #[async_trait] pub trait PreimageFetcher { /// Get the preimage corresponding to the given key. @@ -102,14 +102,14 @@ pub trait PreimageFetcher { async fn get_preimage(&self, key: PreimageKey) -> PreimageOracleResult>; } -/// A [PreimageServerBackend] is a trait that combines the [PreimageFetcher] and [HintRouter] +/// A [`PreimageServerBackend`] is a trait that combines the [`PreimageFetcher`] and [`HintRouter`] /// traits. pub trait PreimageServerBackend: PreimageFetcher + HintRouter {} // Implement the super trait for any type that satisfies the bounds impl PreimageServerBackend for T {} -/// A [Channel] is a high-level interface to read and write data to a counterparty. +/// A [`Channel`] is a high-level interface to read and write data to a counterparty. #[async_trait] pub trait Channel { /// Asynchronously read data from the channel into the provided buffer. diff --git a/kona/crates/proof/proof-interop/CHANGELOG.md b/rust/kona/crates/proof/proof-interop/CHANGELOG.md similarity index 100% rename from kona/crates/proof/proof-interop/CHANGELOG.md rename to rust/kona/crates/proof/proof-interop/CHANGELOG.md diff --git a/kona/crates/proof/proof-interop/Cargo.toml b/rust/kona/crates/proof/proof-interop/Cargo.toml similarity index 92% rename from kona/crates/proof/proof-interop/Cargo.toml rename to rust/kona/crates/proof/proof-interop/Cargo.toml index 2d7fdf808d54d..fd3fc6f589863 100644 --- a/kona/crates/proof/proof-interop/Cargo.toml +++ b/rust/kona/crates/proof/proof-interop/Cargo.toml @@ -48,12 +48,12 @@ spin.workspace = true thiserror.workspace = true # Arbitrary -arbitrary = { version = "1.4", features = ["derive"], optional = true } +arbitrary = { workspace = true, features = ["derive"], optional = true } [dev-dependencies] alloy-primitives = { workspace = true, features = ["rlp", "arbitrary"] } kona-interop = { workspace = true, features = ["arbitrary"] } -arbitrary = { version = "1.4", features = ["derive"] } +arbitrary = { workspace = true, features = ["derive"] } rand.workspace = true [features] diff --git a/kona/crates/proof/proof-interop/README.md b/rust/kona/crates/proof/proof-interop/README.md similarity index 100% rename from kona/crates/proof/proof-interop/README.md rename to rust/kona/crates/proof/proof-interop/README.md diff --git a/kona/crates/proof/proof-interop/src/boot.rs b/rust/kona/crates/proof/proof-interop/src/boot.rs similarity index 95% rename from kona/crates/proof/proof-interop/src/boot.rs rename to rust/kona/crates/proof/proof-interop/src/boot.rs index 8cd244a7c8101..2f9652bfca5ad 100644 --- a/kona/crates/proof/proof-interop/src/boot.rs +++ b/rust/kona/crates/proof/proof-interop/src/boot.rs @@ -103,9 +103,8 @@ impl BootInfo { if l2_post == INVALID_TRANSITION_HASH { return Err(BootstrapError::InvalidToInvalid); - } else { - return Err(BootstrapError::InvalidPostState(l2_post)); } + return Err(BootstrapError::InvalidPostState(l2_post)); } let agreed_pre_state = @@ -178,19 +177,19 @@ impl BootInfo { }) } - /// Returns the [RollupConfig] corresponding to the [PreState::active_l2_chain_id]. + /// Returns the [`RollupConfig`] corresponding to the [`PreState::active_l2_chain_id`]. pub fn active_rollup_config(&self) -> Option { let active_l2_chain_id = self.agreed_pre_state.active_l2_chain_id()?; self.rollup_configs.get(&active_l2_chain_id).cloned() } - /// Returns the [L1ChainConfig] corresponding to the [PreState::active_l2_chain_id] through the - /// l2 [RollupConfig]. + /// Returns the [`L1ChainConfig`] corresponding to the [`PreState::active_l2_chain_id`] through + /// the l2 [`RollupConfig`]. pub fn active_l1_config(&self) -> L1ChainConfig { self.l1_config.clone() } - /// Returns the [RollupConfig] corresponding to the given `chain_id`. + /// Returns the [`RollupConfig`] corresponding to the given `chain_id`. pub fn rollup_config(&self, chain_id: u64) -> Option { self.rollup_configs.get(&chain_id).cloned() } diff --git a/kona/crates/proof/proof-interop/src/consolidation.rs b/rust/kona/crates/proof/proof-interop/src/consolidation.rs similarity index 95% rename from kona/crates/proof/proof-interop/src/consolidation.rs rename to rust/kona/crates/proof/proof-interop/src/consolidation.rs index 109735e6b41aa..57874b0c4847a 100644 --- a/kona/crates/proof/proof-interop/src/consolidation.rs +++ b/rust/kona/crates/proof/proof-interop/src/consolidation.rs @@ -23,7 +23,7 @@ use revm::context::BlockEnv; use thiserror::Error; use tracing::{error, info}; -/// The [SuperchainConsolidator] holds a [MessageGraph] and is responsible for recursively +/// The [`SuperchainConsolidator`] holds a [`MessageGraph`] and is responsible for recursively /// consolidating the blocks within the graph, per [message validity rules]. /// /// [message validity rules]: https://specs.optimism.io/interop/messaging.html#invalid-messages @@ -32,11 +32,11 @@ pub struct SuperchainConsolidator<'a, C, Evm> where C: CommsClient, { - /// The [BootInfo] of the program. + /// The [`BootInfo`] of the program. boot_info: &'a mut BootInfo, - /// The [OracleInteropProvider] used for the message graph. + /// The [`OracleInteropProvider`] used for the message graph. interop_provider: OracleInteropProvider, - /// The [OracleL2ChainProvider]s used for re-execution of invalid blocks, keyed by chain ID. + /// The [`OracleL2ChainProvider`]s used for re-execution of invalid blocks, keyed by chain ID. l2_providers: HashMap>, /// The inner [`EvmFactory`] to create EVM instances for re-execution of bad blocks. evm_factory: Evm, @@ -49,7 +49,7 @@ where ::Tx: FromTxWithEncoded + FromRecoveredTx + OpTxEnv, { - /// Creates a new [SuperchainConsolidator] with the given providers and [Header]s. + /// Creates a new [`SuperchainConsolidator`] with the given providers and [Header]s. /// /// [Header]: alloy_consensus::Header pub const fn new( @@ -61,7 +61,7 @@ where Self { boot_info, interop_provider, l2_providers, evm_factory } } - /// Recursively consolidates the dependencies of the blocks within the [MessageGraph]. + /// Recursively consolidates the dependencies of the blocks within the [`MessageGraph`]. /// /// This method will recurse until all invalid cross-chain dependencies have been resolved, /// re-executing deposit-only blocks for chains with invalid dependencies as needed. @@ -76,7 +76,6 @@ where } Err(ConsolidationError::MessageGraph(MessageGraphError::InvalidMessages(_))) => { // If invalid messages are still present in the graph, continue the loop. - continue; } Err(e) => { error!(target: "superchain_consolidator", "Error consolidating superchain: {:?}", e); @@ -89,8 +88,8 @@ where /// Performs a single iteration of the consolidation process. /// /// Step-wise: - /// 1. Derive a new [MessageGraph] from the current set of local safe [Header]s. - /// 2. Resolve the [MessageGraph]. + /// 1. Derive a new [`MessageGraph`] from the current set of local safe [Header]s. + /// 2. Resolve the [`MessageGraph`]. /// 3. If any invalid messages are found, re-execute the bad block(s) only deposit transactions, /// and bubble up the error. /// @@ -279,7 +278,7 @@ where } } -/// An error type for the [SuperchainConsolidator] struct. +/// An error type for the [`SuperchainConsolidator`] struct. #[derive(Debug, Error)] pub enum ConsolidationError { /// An invalid pre-state variant was passed to the consolidator. diff --git a/kona/crates/proof/proof-interop/src/hint.rs b/rust/kona/crates/proof/proof-interop/src/hint.rs similarity index 98% rename from kona/crates/proof/proof-interop/src/hint.rs rename to rust/kona/crates/proof/proof-interop/src/hint.rs index 1b02b4c282caa..cafa6ab5f5e1d 100644 --- a/kona/crates/proof/proof-interop/src/hint.rs +++ b/rust/kona/crates/proof/proof-interop/src/hint.rs @@ -1,10 +1,10 @@ -//! This module contains the [HintType] enum. +//! This module contains the [`HintType`] enum. use alloc::{string::ToString, vec::Vec}; use core::{fmt::Display, str::FromStr}; use kona_proof::{Hint, errors::HintParsingError}; -/// The [HintType] enum is used to specify the type of hint that was received. +/// The [`HintType`] enum is used to specify the type of hint that was received. #[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)] pub enum HintType { /// A hint that specifies the block header of a layer 1 block. diff --git a/kona/crates/proof/proof-interop/src/lib.rs b/rust/kona/crates/proof/proof-interop/src/lib.rs similarity index 93% rename from kona/crates/proof/proof-interop/src/lib.rs rename to rust/kona/crates/proof/proof-interop/src/lib.rs index 593b89097c06a..ef7ffb23aaed5 100644 --- a/kona/crates/proof/proof-interop/src/lib.rs +++ b/rust/kona/crates/proof/proof-interop/src/lib.rs @@ -4,7 +4,7 @@ html_favicon_url = "https://raw.githubusercontent.com/op-rs/kona/main/assets/favicon.ico", issue_tracker_base_url = "https://github.com/op-rs/kona/issues/" )] -#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))] +#![cfg_attr(docsrs, feature(doc_cfg))] #![cfg_attr(not(feature = "arbitrary"), no_std)] extern crate alloc; diff --git a/kona/crates/proof/proof-interop/src/pre_state.rs b/rust/kona/crates/proof/proof-interop/src/pre_state.rs similarity index 92% rename from kona/crates/proof/proof-interop/src/pre_state.rs rename to rust/kona/crates/proof/proof-interop/src/pre_state.rs index 36d473802b190..8052d5088ff08 100644 --- a/kona/crates/proof/proof-interop/src/pre_state.rs +++ b/rust/kona/crates/proof/proof-interop/src/pre_state.rs @@ -6,10 +6,10 @@ use alloy_rlp::{Buf, Decodable, Encodable, Header, RlpDecodable, RlpEncodable}; use kona_interop::{OutputRootWithChain, SUPER_ROOT_VERSION, SuperRoot}; use serde::{Deserialize, Serialize}; -/// The current [TransitionState] encoding format version. +/// The current [`TransitionState`] encoding format version. pub(crate) const TRANSITION_STATE_VERSION: u8 = 255; -/// The maximum number of steps allowed in a [TransitionState]. +/// The maximum number of steps allowed in a [`TransitionState`]. pub const TRANSITION_STATE_MAX_STEPS: u64 = 2u64.pow(7) - 1; /// The [Bytes] representation of the string "invalid". @@ -19,10 +19,10 @@ pub const INVALID_TRANSITION: Bytes = Bytes::from_static(b"invalid"); pub const INVALID_TRANSITION_HASH: B256 = b256!("ffd7db0f9d5cdeb49c4c9eba649d4dc6d852d64671e65488e57f58584992ac68"); -/// The [PreState] of the interop proof program can be one of two types: a [SuperRoot] or a -/// [TransitionState]. The [SuperRoot] is the canonical state of the superchain, while the -/// [TransitionState] is a super-structure of the [SuperRoot] that represents the progress of a -/// pending superchain state transition from one [SuperRoot] to the next. +/// The [`PreState`] of the interop proof program can be one of two types: a [`SuperRoot`] or a +/// [`TransitionState`]. The [`SuperRoot`] is the canonical state of the superchain, while the +/// [`TransitionState`] is a super-structure of the [`SuperRoot`] that represents the progress of a +/// pending superchain state transition from one [`SuperRoot`] to the next. #[derive(Debug, Clone, Eq, PartialEq, Serialize, Deserialize)] #[cfg_attr(feature = "arbitrary", derive(arbitrary::Arbitrary))] pub enum PreState { @@ -33,14 +33,14 @@ pub enum PreState { } impl PreState { - /// Hashes the encoded [PreState] using [keccak256]. + /// Hashes the encoded [`PreState`] using [keccak256]. pub fn hash(&self) -> B256 { let mut rlp_buf = Vec::with_capacity(self.length()); self.encode(&mut rlp_buf); keccak256(&rlp_buf) } - /// Returns the timestamp of the [PreState]. + /// Returns the timestamp of the [`PreState`]. pub const fn timestamp(&self) -> u64 { match self { Self::SuperRoot(super_root) => super_root.timestamp, @@ -48,9 +48,9 @@ impl PreState { } } - /// Returns the active L2 output root hash of the [PreState]. This is the output root that + /// Returns the active L2 output root hash of the [`PreState`]. This is the output root that /// represents the pre-state of the chain that is to be committed to in the next transition - /// step, or [None] if the [PreState] has already been fully saturated. + /// step, or [None] if the [`PreState`] has already been fully saturated. pub fn active_l2_output_root(&self) -> Option<&OutputRootWithChain> { match self { Self::SuperRoot(super_root) => super_root.output_roots.first(), @@ -60,14 +60,14 @@ impl PreState { } } - /// Returns the active L2 chain ID of the [PreState]. This is the chain ID of the output root - /// that is to be committed to in the next transition step, or [None] if the [PreState] + /// Returns the active L2 chain ID of the [`PreState`]. This is the chain ID of the output root + /// that is to be committed to in the next transition step, or [None] if the [`PreState`] /// has already been fully saturated. pub fn active_l2_chain_id(&self) -> Option { self.active_l2_output_root().map(|output_root| output_root.chain_id) } - /// Transitions to the next state, appending the [OptimisticBlock] to the pending progress. + /// Transitions to the next state, appending the [`OptimisticBlock`] to the pending progress. pub fn transition(self, optimistic_block: Option) -> Option { match self { Self::SuperRoot(super_root) => Some(Self::TransitionState(TransitionState::new( @@ -98,10 +98,9 @@ impl PreState { .collect(), ); return Some(Self::SuperRoot(super_root)); - } else { - transition_state.step += 1; - return Some(Self::TransitionState(transition_state)); - }; + } + transition_state.step += 1; + return Some(Self::TransitionState(transition_state)); } transition_state.pending_progress.push(optimistic_block?); @@ -146,8 +145,8 @@ impl Decodable for PreState { } } -/// The [TransitionState] is a super-structure of the [SuperRoot] that represents the progress of a -/// pending superchain state transition from one [SuperRoot] to the next. +/// The [`TransitionState`] is a super-structure of the [`SuperRoot`] that represents the progress +/// of a pending superchain state transition from one [`SuperRoot`] to the next. #[derive(Debug, Clone, Eq, PartialEq, Serialize, Deserialize)] #[cfg_attr(feature = "arbitrary", derive(arbitrary::Arbitrary))] pub struct TransitionState { @@ -160,7 +159,8 @@ pub struct TransitionState { } impl TransitionState { - /// Create a new [TransitionState] with the given pre-state, pending progress, and step number. + /// Create a new [`TransitionState`] with the given pre-state, pending progress, and step + /// number. pub const fn new( pre_state: SuperRoot, pending_progress: Vec, @@ -169,14 +169,14 @@ impl TransitionState { Self { pre_state, pending_progress, step } } - /// Hashes the encoded [TransitionState] using [keccak256]. + /// Hashes the encoded [`TransitionState`] using [keccak256]. pub fn hash(&self) -> B256 { let mut rlp_buf = Vec::with_capacity(self.length()); self.encode(&mut rlp_buf); keccak256(&rlp_buf) } - /// Returns the RLP payload length of the [TransitionState]. + /// Returns the RLP payload length of the [`TransitionState`]. pub fn payload_length(&self) -> usize { Header { list: false, payload_length: self.pre_state.encoded_length() }.length() + self.pre_state.encoded_length() + @@ -247,7 +247,7 @@ pub struct OptimisticBlock { } impl OptimisticBlock { - /// Create a new [OptimisticBlock] with the given block hash and output root hash. + /// Create a new [`OptimisticBlock`] with the given block hash and output root hash. pub const fn new(block_hash: B256, output_root: B256) -> Self { Self { block_hash, output_root } } @@ -311,7 +311,7 @@ mod test { assert_eq!(transition_state, TransitionState::decode(&mut rlp_buf.as_slice()).unwrap()); } - /// Helper function to create a test TransitionState with three output roots + /// Helper function to create a test `TransitionState` with three output roots fn create_test_transition_state(step: u64, chain_count: u64) -> TransitionState { const TIMESTAMP: u64 = 10; diff --git a/kona/crates/proof/proof-interop/src/provider.rs b/rust/kona/crates/proof/proof-interop/src/provider.rs similarity index 96% rename from kona/crates/proof/proof-interop/src/provider.rs rename to rust/kona/crates/proof/proof-interop/src/provider.rs index ada827d2a0dcd..72c314a11888e 100644 --- a/kona/crates/proof/proof-interop/src/provider.rs +++ b/rust/kona/crates/proof/proof-interop/src/provider.rs @@ -1,4 +1,4 @@ -//! [InteropProvider] trait implementation using a [CommsClient] data source. +//! [`InteropProvider`] trait implementation using a [`CommsClient`] data source. use crate::{BootInfo, HintType}; use alloc::{boxed::Box, string::ToString, sync::Arc, vec::Vec}; @@ -15,12 +15,12 @@ use kona_registry::HashMap; use op_alloy_consensus::OpReceiptEnvelope; use spin::RwLock; -/// A [CommsClient] backed [InteropProvider] implementation. +/// A [`CommsClient`] backed [`InteropProvider`] implementation. #[derive(Debug, Clone)] pub struct OracleInteropProvider { /// The oracle client. oracle: Arc, - /// The [BootInfo] for the current program execution. + /// The [`BootInfo`] for the current program execution. boot: BootInfo, /// The local safe head block header cache. local_safe_heads: HashMap>, @@ -32,7 +32,7 @@ impl OracleInteropProvider where C: CommsClient + Send + Sync, { - /// Creates a new [OracleInteropProvider] with the given oracle client and [BootInfo]. + /// Creates a new [`OracleInteropProvider`] with the given oracle client and [`BootInfo`]. pub fn new( oracle: Arc, boot: BootInfo, @@ -76,7 +76,7 @@ where Header::decode(&mut header_rlp.as_ref()).map_err(OracleProviderError::Rlp) } - /// Fetch the [OpReceiptEnvelope]s for the block with the given hash. + /// Fetch the [`OpReceiptEnvelope`]s for the block with the given hash. async fn derive_receipts( &self, chain_id: u64, diff --git a/kona/crates/proof/proof/CHANGELOG.md b/rust/kona/crates/proof/proof/CHANGELOG.md similarity index 100% rename from kona/crates/proof/proof/CHANGELOG.md rename to rust/kona/crates/proof/proof/CHANGELOG.md diff --git a/kona/crates/proof/proof/Cargo.toml b/rust/kona/crates/proof/proof/Cargo.toml similarity index 100% rename from kona/crates/proof/proof/Cargo.toml rename to rust/kona/crates/proof/proof/Cargo.toml diff --git a/kona/crates/proof/proof/README.md b/rust/kona/crates/proof/proof/README.md similarity index 100% rename from kona/crates/proof/proof/README.md rename to rust/kona/crates/proof/proof/README.md diff --git a/kona/crates/proof/proof/src/blocking_runtime.rs b/rust/kona/crates/proof/proof/src/blocking_runtime.rs similarity index 100% rename from kona/crates/proof/proof/src/blocking_runtime.rs rename to rust/kona/crates/proof/proof/src/blocking_runtime.rs diff --git a/kona/crates/proof/proof/src/boot.rs b/rust/kona/crates/proof/proof/src/boot.rs similarity index 100% rename from kona/crates/proof/proof/src/boot.rs rename to rust/kona/crates/proof/proof/src/boot.rs diff --git a/kona/crates/proof/proof/src/caching_oracle.rs b/rust/kona/crates/proof/proof/src/caching_oracle.rs similarity index 78% rename from kona/crates/proof/proof/src/caching_oracle.rs rename to rust/kona/crates/proof/proof/src/caching_oracle.rs index 25e437fabe50e..a3995d23f6990 100644 --- a/kona/crates/proof/proof/src/caching_oracle.rs +++ b/rust/kona/crates/proof/proof/src/caching_oracle.rs @@ -1,8 +1,6 @@ -//! Contains the [CachingOracle], which is a wrapper around an [OracleReader] and [HintWriter] that -//! stores a configurable number of responses in an [LruCache] for quick retrieval. -//! -//! [OracleReader]: kona_preimage::OracleReader -//! [HintWriter]: kona_preimage::HintWriter +//! Contains the [`CachingOracle`], which is a wrapper around an +//! [`OracleReader`](kona_preimage::OracleReader) and [`HintWriter`](kona_preimage::HintWriter) +//! that stores a configurable number of responses in an [`LruCache`] for quick retrieval. use alloc::{boxed::Box, sync::Arc, vec::Vec}; use async_trait::async_trait; @@ -13,11 +11,9 @@ use kona_preimage::{ use lru::LruCache; use spin::Mutex; -/// A wrapper around an [OracleReader] and [HintWriter] that stores a configurable number of -/// responses in an [LruCache] for quick retrieval. -/// -/// [OracleReader]: kona_preimage::OracleReader -/// [HintWriter]: kona_preimage::HintWriter +/// A wrapper around an [`OracleReader`](kona_preimage::OracleReader) and +/// [`HintWriter`](kona_preimage::HintWriter) that stores a configurable number of responses in an +/// [`LruCache`] for quick retrieval. #[allow(unreachable_pub)] #[derive(Debug, Clone)] pub struct CachingOracle @@ -38,10 +34,8 @@ where OR: PreimageOracleClient, HW: HintWriterClient, { - /// Creates a new [CachingOracle] that wraps the given [OracleReader] and stores up to `N` - /// responses in the cache. - /// - /// [OracleReader]: kona_preimage::OracleReader + /// Creates a new [`CachingOracle`] that wraps the given + /// [`OracleReader`](kona_preimage::OracleReader) and stores up to `N` responses in the cache. pub fn new(cache_size: usize, oracle_reader: OR, hint_writer: HW) -> Self { Self { cache: Arc::new(Mutex::new(LruCache::new( @@ -91,12 +85,11 @@ where // SAFETY: The value never enters the cache unless the preimage length matches the // buffer length, due to the checks in the OracleReader. buf.copy_from_slice(value.as_slice()); - Ok(()) } else { self.oracle_reader.get_exact(key, buf).await?; self.cache.lock().put(key, buf.to_vec()); - Ok(()) } + Ok(()) } } diff --git a/kona/crates/proof/proof/src/eip2935.rs b/rust/kona/crates/proof/proof/src/eip2935.rs similarity index 100% rename from kona/crates/proof/proof/src/eip2935.rs rename to rust/kona/crates/proof/proof/src/eip2935.rs diff --git a/kona/crates/proof/proof/src/errors.rs b/rust/kona/crates/proof/proof/src/errors.rs similarity index 100% rename from kona/crates/proof/proof/src/errors.rs rename to rust/kona/crates/proof/proof/src/errors.rs diff --git a/kona/crates/proof/proof/src/executor.rs b/rust/kona/crates/proof/proof/src/executor.rs similarity index 100% rename from kona/crates/proof/proof/src/executor.rs rename to rust/kona/crates/proof/proof/src/executor.rs diff --git a/kona/crates/proof/proof/src/hint.rs b/rust/kona/crates/proof/proof/src/hint.rs similarity index 96% rename from kona/crates/proof/proof/src/hint.rs rename to rust/kona/crates/proof/proof/src/hint.rs index 6291a03746667..dba61d1b36395 100644 --- a/kona/crates/proof/proof/src/hint.rs +++ b/rust/kona/crates/proof/proof/src/hint.rs @@ -1,4 +1,4 @@ -//! This module contains the [HintType] enum. +//! This module contains the [`HintType`] enum. use crate::errors::{HintParsingError, OracleProviderError}; use alloc::{ @@ -34,7 +34,7 @@ where (self.ty, self.data) } - /// Appends more data to [Hint::data]. + /// Appends more data to [`Hint::data`]. pub fn with_data>(self, data: T) -> Self { // No-op if the data is empty. if data.as_ref().is_empty() { @@ -48,7 +48,7 @@ where Self { data: hint_data.into(), ..self } } - /// Sends the hint to the passed [HintWriterClient]. + /// Sends the hint to the passed [`HintWriterClient`]. pub async fn send(&self, comms: &T) -> Result<(), OracleProviderError> { comms.write(&self.encode()).await.map_err(OracleProviderError::Preimage) } @@ -80,7 +80,7 @@ where } } -/// The [HintType] enum is used to specify the type of hint that was received. +/// The [`HintType`] enum is used to specify the type of hint that was received. #[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)] pub enum HintType { /// A hint that specifies the block header of a layer 1 block. diff --git a/kona/crates/proof/proof/src/l1/blob_provider.rs b/rust/kona/crates/proof/proof/src/l1/blob_provider.rs similarity index 95% rename from kona/crates/proof/proof/src/l1/blob_provider.rs rename to rust/kona/crates/proof/proof/src/l1/blob_provider.rs index 434652831b701..afbfbdf246853 100644 --- a/kona/crates/proof/proof/src/l1/blob_provider.rs +++ b/rust/kona/crates/proof/proof/src/l1/blob_provider.rs @@ -1,4 +1,4 @@ -//! Contains the concrete implementation of the [BlobProvider] trait for the client program. +//! Contains the concrete implementation of the [`BlobProvider`] trait for the client program. use crate::{HintType, errors::OracleProviderError}; use alloc::{boxed::Box, sync::Arc, vec::Vec}; @@ -35,6 +35,7 @@ impl OracleBlobProvider { /// ## Returns /// - `Ok(blob)`: The blob. /// - `Err(e)`: The blob could not be retrieved. + #[allow(clippy::large_stack_frames)] async fn get_blob( &self, block_ref: &BlockInfo, @@ -89,6 +90,7 @@ impl OracleBlobProvider { impl BlobProvider for OracleBlobProvider { type Error = OracleProviderError; + #[allow(clippy::large_stack_frames)] async fn get_and_validate_blobs( &mut self, block_ref: &BlockInfo, @@ -112,7 +114,7 @@ pub static ROOTS_OF_UNITY: Lazy<[Fr; FIELD_ELEMENTS_PER_BLOB as usize]> = /// points. To compute the field element at index i in a blob, the blob polynomial is evaluated at /// the i'th root of unity. Based on go-kzg-4844: /// Also, see the consensus specs: -/// - compute_roots_of_unity +/// - `compute_roots_of_unity` /// - bit-reversal permutation: fn generate_roots_of_unity() -> [Fr; FIELD_ELEMENTS_PER_BLOB as usize] { const MAX_ORDER_ROOT: u64 = 32; diff --git a/kona/crates/proof/proof/src/l1/chain_provider.rs b/rust/kona/crates/proof/proof/src/l1/chain_provider.rs similarity index 96% rename from kona/crates/proof/proof/src/l1/chain_provider.rs rename to rust/kona/crates/proof/proof/src/l1/chain_provider.rs index 32cffd9365f4a..8eaf2c7eb6523 100644 --- a/kona/crates/proof/proof/src/l1/chain_provider.rs +++ b/rust/kona/crates/proof/proof/src/l1/chain_provider.rs @@ -1,4 +1,4 @@ -//! Contains the concrete implementation of the [ChainProvider] trait for the proof. +//! Contains the concrete implementation of the [`ChainProvider`] trait for the proof. use crate::{HintType, errors::OracleProviderError}; use alloc::{boxed::Box, sync::Arc, vec::Vec}; @@ -22,7 +22,7 @@ pub struct OracleL1ChainProvider { } impl OracleL1ChainProvider { - /// Creates a new [OracleL1ChainProvider] with the given boot information and oracle client. + /// Creates a new [`OracleL1ChainProvider`] with the given boot information and oracle client. pub const fn new(l1_head: B256, oracle: Arc) -> Self { Self { l1_head, oracle } } diff --git a/kona/crates/proof/proof/src/l1/mod.rs b/rust/kona/crates/proof/proof/src/l1/mod.rs similarity index 100% rename from kona/crates/proof/proof/src/l1/mod.rs rename to rust/kona/crates/proof/proof/src/l1/mod.rs diff --git a/kona/crates/proof/proof/src/l1/pipeline.rs b/rust/kona/crates/proof/proof/src/l1/pipeline.rs similarity index 97% rename from kona/crates/proof/proof/src/l1/pipeline.rs rename to rust/kona/crates/proof/proof/src/l1/pipeline.rs index a27f7e2262e96..5d954d5e8c0bc 100644 --- a/kona/crates/proof/proof/src/l1/pipeline.rs +++ b/rust/kona/crates/proof/proof/src/l1/pipeline.rs @@ -130,7 +130,7 @@ where L2: L2ChainProvider + Send + Sync + Debug + Clone, DA: DataAvailabilityProvider + Send + Sync + Debug + Clone, { - /// Returns the optional L1 [BlockInfo] origin. + /// Returns the optional L1 [`BlockInfo`] origin. fn origin(&self) -> Option { self.pipeline.origin() } @@ -158,7 +158,7 @@ where L2: L2ChainProvider + Send + Sync + Debug + Clone, DA: DataAvailabilityProvider + Send + Sync + Debug + Clone, { - /// Peeks at the next [OpAttributesWithParent] from the pipeline. + /// Peeks at the next [`OpAttributesWithParent`] from the pipeline. fn peek(&self) -> Option<&OpAttributesWithParent> { self.pipeline.peek() } @@ -173,7 +173,7 @@ where self.pipeline.rollup_config() } - /// Returns the [SystemConfig] by L2 number. + /// Returns the [`SystemConfig`] by L2 number. async fn system_config_by_number( &mut self, number: u64, diff --git a/kona/crates/proof/proof/src/l2/chain_provider.rs b/rust/kona/crates/proof/proof/src/l2/chain_provider.rs similarity index 96% rename from kona/crates/proof/proof/src/l2/chain_provider.rs rename to rust/kona/crates/proof/proof/src/l2/chain_provider.rs index 7533617377781..678f2fea665ff 100644 --- a/kona/crates/proof/proof/src/l2/chain_provider.rs +++ b/rust/kona/crates/proof/proof/src/l2/chain_provider.rs @@ -1,4 +1,4 @@ -//! Contains the concrete implementation of the [L2ChainProvider] trait for the client program. +//! Contains the concrete implementation of the [`L2ChainProvider`] trait for the client program. use crate::{HintType, eip2935::eip_2935_history_lookup, errors::OracleProviderError}; use alloc::{boxed::Box, sync::Arc, vec::Vec}; @@ -33,7 +33,7 @@ pub struct OracleL2ChainProvider { } impl OracleL2ChainProvider { - /// Creates a new [OracleL2ChainProvider] with the given boot information and oracle client. + /// Creates a new [`OracleL2ChainProvider`] with the given boot information and oracle client. pub const fn new(l2_head: B256, rollup_config: Arc, oracle: Arc) -> Self { Self { l2_head, rollup_config, oracle, cursor: None, chain_id: None } } @@ -49,7 +49,7 @@ impl OracleL2ChainProvider { } /// Fetches the latest known safe head block hash according to the derivation pipeline cursor - /// or uses the initial l2_head value if no cursor is set. + /// or uses the initial `l2_head` value if no cursor is set. pub async fn l2_safe_head(&self) -> Result { self.cursor .as_ref() @@ -60,7 +60,7 @@ impl OracleL2ChainProvider { impl OracleL2ChainProvider { /// Returns a [Header] corresponding to the given L2 block number, by walking back from the /// L2 safe head. - async fn header_by_number(&mut self, block_number: u64) -> Result { + async fn header_by_number(&self, block_number: u64) -> Result { // Fetch the starting block header. let mut header = self.header_by_hash(self.l2_safe_head().await?)?; diff --git a/kona/crates/proof/proof/src/l2/mod.rs b/rust/kona/crates/proof/proof/src/l2/mod.rs similarity index 100% rename from kona/crates/proof/proof/src/l2/mod.rs rename to rust/kona/crates/proof/proof/src/l2/mod.rs diff --git a/kona/crates/proof/proof/src/lib.rs b/rust/kona/crates/proof/proof/src/lib.rs similarity index 93% rename from kona/crates/proof/proof/src/lib.rs rename to rust/kona/crates/proof/proof/src/lib.rs index bfb7eda7ecad9..e89dc30731b38 100644 --- a/kona/crates/proof/proof/src/lib.rs +++ b/rust/kona/crates/proof/proof/src/lib.rs @@ -4,7 +4,7 @@ html_favicon_url = "https://raw.githubusercontent.com/op-rs/kona/main/assets/favicon.ico", issue_tracker_base_url = "https://github.com/op-rs/kona/issues/" )] -#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))] +#![cfg_attr(docsrs, feature(doc_cfg))] #![no_std] extern crate alloc; diff --git a/kona/crates/proof/proof/src/sync.rs b/rust/kona/crates/proof/proof/src/sync.rs similarity index 100% rename from kona/crates/proof/proof/src/sync.rs rename to rust/kona/crates/proof/proof/src/sync.rs diff --git a/kona/crates/proof/std-fpvm-proc/CHANGELOG.md b/rust/kona/crates/proof/std-fpvm-proc/CHANGELOG.md similarity index 100% rename from kona/crates/proof/std-fpvm-proc/CHANGELOG.md rename to rust/kona/crates/proof/std-fpvm-proc/CHANGELOG.md diff --git a/kona/crates/proof/std-fpvm-proc/Cargo.toml b/rust/kona/crates/proof/std-fpvm-proc/Cargo.toml similarity index 82% rename from kona/crates/proof/std-fpvm-proc/Cargo.toml rename to rust/kona/crates/proof/std-fpvm-proc/Cargo.toml index 533b386087d0c..994e81b926a72 100644 --- a/kona/crates/proof/std-fpvm-proc/Cargo.toml +++ b/rust/kona/crates/proof/std-fpvm-proc/Cargo.toml @@ -19,9 +19,9 @@ cfg-if.workspace = true kona-std-fpvm.workspace = true # Proc Macros -quote = "1.0" -proc-macro2 = "1.0" -syn = { version = "2.0", features = ["full"] } +quote.workspace = true +proc-macro2.workspace = true +syn = { workspace = true, features = ["full"] } [package.metadata.cargo-udeps.ignore] normal = ["kona-std-fpvm"] diff --git a/kona/crates/proof/std-fpvm-proc/src/lib.rs b/rust/kona/crates/proof/std-fpvm-proc/src/lib.rs similarity index 100% rename from kona/crates/proof/std-fpvm-proc/src/lib.rs rename to rust/kona/crates/proof/std-fpvm-proc/src/lib.rs diff --git a/kona/crates/proof/std-fpvm/CHANGELOG.md b/rust/kona/crates/proof/std-fpvm/CHANGELOG.md similarity index 100% rename from kona/crates/proof/std-fpvm/CHANGELOG.md rename to rust/kona/crates/proof/std-fpvm/CHANGELOG.md diff --git a/kona/crates/proof/std-fpvm/Cargo.toml b/rust/kona/crates/proof/std-fpvm/Cargo.toml similarity index 100% rename from kona/crates/proof/std-fpvm/Cargo.toml rename to rust/kona/crates/proof/std-fpvm/Cargo.toml diff --git a/kona/crates/proof/std-fpvm/README.md b/rust/kona/crates/proof/std-fpvm/README.md similarity index 100% rename from kona/crates/proof/std-fpvm/README.md rename to rust/kona/crates/proof/std-fpvm/README.md diff --git a/kona/crates/proof/std-fpvm/src/channel.rs b/rust/kona/crates/proof/std-fpvm/src/channel.rs similarity index 86% rename from kona/crates/proof/std-fpvm/src/channel.rs rename to rust/kona/crates/proof/std-fpvm/src/channel.rs index 7d0abc91a1165..80fe03fd05bc9 100644 --- a/kona/crates/proof/std-fpvm/src/channel.rs +++ b/rust/kona/crates/proof/std-fpvm/src/channel.rs @@ -1,4 +1,4 @@ -//! This module contains a rudimentary channel between two file descriptors, using [crate::io] +//! This module contains a rudimentary channel between two file descriptors, using [`crate::io`] //! for reading and writing from the file descriptors. use crate::{FileDescriptor, io}; @@ -16,7 +16,7 @@ use kona_preimage::{ errors::{ChannelError, ChannelResult}, }; -/// [FileChannel] is a handle for one end of a bidirectional channel. +/// [`FileChannel`] is a handle for one end of a bidirectional channel. #[derive(Debug, Clone, Copy)] pub struct FileChannel { /// File descriptor to read from @@ -26,17 +26,17 @@ pub struct FileChannel { } impl FileChannel { - /// Create a new [FileChannel] from two file descriptors. + /// Create a new [`FileChannel`] from two file descriptors. pub const fn new(read_handle: FileDescriptor, write_handle: FileDescriptor) -> Self { Self { read_handle, write_handle } } - /// Returns a copy of the [FileDescriptor] used for the read end of the channel. + /// Returns a copy of the [`FileDescriptor`] used for the read end of the channel. pub const fn read_handle(&self) -> FileDescriptor { self.read_handle } - /// Returns a copy of the [FileDescriptor] used for the write end of the channel. + /// Returns a copy of the [`FileDescriptor`] used for the write end of the channel. pub const fn write_handle(&self) -> FileDescriptor { self.write_handle } @@ -57,7 +57,7 @@ impl Channel for FileChannel { } } -/// A future that reads from a channel, returning [Poll::Ready] when the buffer is full. +/// A future that reads from a channel, returning [`Poll::Ready`] when the buffer is full. struct ReadFuture<'a> { /// The channel to read from channel: FileChannel, @@ -68,7 +68,7 @@ struct ReadFuture<'a> { } impl<'a> ReadFuture<'a> { - /// Create a new [ReadFuture] from a channel and a buffer. + /// Create a new [`ReadFuture`] from a channel and a buffer. #[allow(clippy::missing_const_for_fn)] fn new(channel: FileChannel, buf: &'a mut [u8]) -> Self { Self { channel, buf: RefCell::new(buf), read: 0 } @@ -100,7 +100,7 @@ impl Future for ReadFuture<'_> { } } -/// A future that writes to a channel, returning [Poll::Ready] when the full buffer has been +/// A future that writes to a channel, returning [`Poll::Ready`] when the full buffer has been /// written. struct WriteFuture<'a> { /// The channel to write to @@ -112,7 +112,7 @@ struct WriteFuture<'a> { } impl<'a> WriteFuture<'a> { - /// Create a new [WriteFuture] from a channel and a buffer. + /// Create a new [`WriteFuture`] from a channel and a buffer. const fn new(channel: FileChannel, buf: &'a [u8]) -> Self { Self { channel, buf, written: 0 } } diff --git a/kona/crates/proof/std-fpvm/src/errors.rs b/rust/kona/crates/proof/std-fpvm/src/errors.rs similarity index 87% rename from kona/crates/proof/std-fpvm/src/errors.rs rename to rust/kona/crates/proof/std-fpvm/src/errors.rs index a8fbec07c74cd..4f9d7e59b4532 100644 --- a/kona/crates/proof/std-fpvm/src/errors.rs +++ b/rust/kona/crates/proof/std-fpvm/src/errors.rs @@ -7,5 +7,5 @@ use thiserror::Error; #[error("IO error (errno: {_0})")] pub struct IOError(pub i32); -/// A [Result] type for the [IOError]. +/// A [Result] type for the [`IOError`]. pub type IOResult = Result; diff --git a/kona/crates/proof/std-fpvm/src/io.rs b/rust/kona/crates/proof/std-fpvm/src/io.rs similarity index 79% rename from kona/crates/proof/std-fpvm/src/io.rs rename to rust/kona/crates/proof/std-fpvm/src/io.rs index 011b9ad7b86ef..da45a8e6f9fc8 100644 --- a/kona/crates/proof/std-fpvm/src/io.rs +++ b/rust/kona/crates/proof/std-fpvm/src/io.rs @@ -5,16 +5,16 @@ use cfg_if::cfg_if; cfg_if! { if #[cfg(target_arch = "mips64")] { - #[doc = "Concrete implementation of the [BasicKernelInterface] trait for the `MIPS64r2` target architecture."] + #[doc = "Concrete implementation of the [`BasicKernelInterface`] trait for the `MIPS64r2` target architecture."] pub(crate) type ClientIO = crate::mips64::io::Mips64IO; } else if #[cfg(target_arch = "riscv64")] { - #[doc = "Concrete implementation of the [BasicKernelInterface] trait for the `riscv64` target architecture."] + #[doc = "Concrete implementation of the [`BasicKernelInterface`] trait for the `riscv64` target architecture."] pub(crate) type ClientIO = crate::riscv64::io::RiscV64IO; } else { use std::{fs::File, os::fd::FromRawFd, io::{Read, Write}}; use crate::errors::IOError; - #[doc = "Native implementation of the [BasicKernelInterface] trait."] + #[doc = "Native implementation of the [`BasicKernelInterface`] trait."] pub(crate) struct NativeClientIO; impl BasicKernelInterface for NativeClientIO { @@ -45,12 +45,12 @@ cfg_if! { } } - #[doc = "Native implementation of the [BasicKernelInterface] trait."] + #[doc = "Native implementation of the [`BasicKernelInterface`] trait."] pub(crate) type ClientIO = NativeClientIO; } } -/// Print the passed string to the standard output [FileDescriptor]. +/// Print the passed string to the standard output [`FileDescriptor`]. /// /// # Panics /// Panics if the write operation fails. @@ -59,7 +59,7 @@ pub fn print(s: &str) { ClientIO::write(FileDescriptor::StdOut, s.as_bytes()).expect("Error writing to stdout."); } -/// Print the passed string to the standard error [FileDescriptor]. +/// Print the passed string to the standard error [`FileDescriptor`]. /// /// # Panics /// Panics if the write operation fails. @@ -68,13 +68,13 @@ pub fn print_err(s: &str) { ClientIO::write(FileDescriptor::StdErr, s.as_bytes()).expect("Error writing to stderr."); } -/// Write the passed buffer to the given [FileDescriptor]. +/// Write the passed buffer to the given [`FileDescriptor`]. #[inline] pub fn write(fd: FileDescriptor, buf: &[u8]) -> IOResult { ClientIO::write(fd, buf) } -/// Write the passed buffer to the given [FileDescriptor]. +/// Write the passed buffer to the given [`FileDescriptor`]. #[inline] pub fn read(fd: FileDescriptor, buf: &mut [u8]) -> IOResult { ClientIO::read(fd, buf) diff --git a/kona/crates/proof/std-fpvm/src/lib.rs b/rust/kona/crates/proof/std-fpvm/src/lib.rs similarity index 94% rename from kona/crates/proof/std-fpvm/src/lib.rs rename to rust/kona/crates/proof/std-fpvm/src/lib.rs index 6c7c549025ede..d3f3c53387f45 100644 --- a/kona/crates/proof/std-fpvm/src/lib.rs +++ b/rust/kona/crates/proof/std-fpvm/src/lib.rs @@ -4,7 +4,7 @@ html_favicon_url = "https://raw.githubusercontent.com/op-rs/kona/main/assets/favicon.ico", issue_tracker_base_url = "https://github.com/op-rs/kona/issues/" )] -#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))] +#![cfg_attr(docsrs, feature(doc_cfg))] #![cfg_attr(target_arch = "mips64", feature(asm_experimental_arch))] #![cfg_attr(any(target_arch = "mips64", target_arch = "riscv64"), no_std)] diff --git a/kona/crates/proof/std-fpvm/src/linux.rs b/rust/kona/crates/proof/std-fpvm/src/linux.rs similarity index 91% rename from kona/crates/proof/std-fpvm/src/linux.rs rename to rust/kona/crates/proof/std-fpvm/src/linux.rs index 8bb87e9652df0..b2173cdccb3bb 100644 --- a/kona/crates/proof/std-fpvm/src/linux.rs +++ b/rust/kona/crates/proof/std-fpvm/src/linux.rs @@ -2,7 +2,7 @@ use crate::errors::{IOError, IOResult}; -/// Converts a return value from a syscall into a [IOResult] type. +/// Converts a return value from a syscall into a [`IOResult`] type. #[inline(always)] #[allow(unused)] pub(crate) const fn from_ret(value: usize) -> IOResult { diff --git a/kona/crates/proof/std-fpvm/src/malloc.rs b/rust/kona/crates/proof/std-fpvm/src/malloc.rs similarity index 95% rename from kona/crates/proof/std-fpvm/src/malloc.rs rename to rust/kona/crates/proof/std-fpvm/src/malloc.rs index a97a85eeef3cd..2654e2958da4f 100644 --- a/kona/crates/proof/std-fpvm/src/malloc.rs +++ b/rust/kona/crates/proof/std-fpvm/src/malloc.rs @@ -16,7 +16,7 @@ pub mod global_allocator { #[global_allocator] static ALLOCATOR: LockedHeap = LockedHeap::empty(); - /// Initialize the [SpinLockedAllocator] with the following parameters: + /// Initialize the [`SpinLockedAllocator`] with the following parameters: /// * `heap_start_addr` is the starting address of the heap memory region, /// * `heap_size` is the size of the heap memory region in bytes. /// @@ -36,7 +36,7 @@ pub mod global_allocator { /// # Safety #[cfg_attr( any(target_arch = "mips64", target_arch = "riscv64"), - doc = "See [global_allocator::init_allocator] safety comment." + doc = "See [`global_allocator::init_allocator`] safety comment." )] #[cfg_attr( not(any(target_arch = "mips64", target_arch = "riscv64")), diff --git a/kona/crates/proof/std-fpvm/src/mips64/io.rs b/rust/kona/crates/proof/std-fpvm/src/mips64/io.rs similarity index 83% rename from kona/crates/proof/std-fpvm/src/mips64/io.rs rename to rust/kona/crates/proof/std-fpvm/src/mips64/io.rs index 9f6495593b186..be382d19f6373 100644 --- a/kona/crates/proof/std-fpvm/src/mips64/io.rs +++ b/rust/kona/crates/proof/std-fpvm/src/mips64/io.rs @@ -1,6 +1,6 @@ use crate::{BasicKernelInterface, FileDescriptor, errors::IOResult, mips64::syscall}; -/// Concrete implementation of the [BasicKernelInterface] trait for the `MIPS64r2` target +/// Concrete implementation of the [`BasicKernelInterface`] trait for the `MIPS64r2` target /// architecture. Exposes a safe interface for performing IO operations within the kernel. #[derive(Debug)] pub(crate) struct Mips64IO; @@ -10,12 +10,12 @@ pub(crate) struct Mips64IO; /// See [Cannon System Call Specification](https://specs.optimism.io/experimental/fault-proof/cannon-fault-proof-vm.html#syscalls) /// /// **Note**: This is not an exhaustive list of system calls available to the `client` program, -/// only the ones necessary for the [BasicKernelInterface] trait implementation. If an extension -/// trait for the [BasicKernelInterface] trait is created for the `Cannon` kernel, this list should -/// be extended accordingly. +/// only the ones necessary for the [`BasicKernelInterface`] trait implementation. If an extension +/// trait for the [`BasicKernelInterface`] trait is created for the `Cannon` kernel, this list +/// should be extended accordingly. #[repr(usize)] pub(crate) enum SyscallNumber { - /// Sets the Exited and ExitCode states to true and $a0 respectively. + /// Sets the Exited and `ExitCode` states to true and $a0 respectively. Exit = 5205, /// Similar behavior as Linux/MIPS with support for unaligned reads. Read = 5000, diff --git a/kona/crates/proof/std-fpvm/src/mips64/mod.rs b/rust/kona/crates/proof/std-fpvm/src/mips64/mod.rs similarity index 56% rename from kona/crates/proof/std-fpvm/src/mips64/mod.rs rename to rust/kona/crates/proof/std-fpvm/src/mips64/mod.rs index f4f2e06d2ca2c..3505bc3b693c7 100644 --- a/kona/crates/proof/std-fpvm/src/mips64/mod.rs +++ b/rust/kona/crates/proof/std-fpvm/src/mips64/mod.rs @@ -1,5 +1,5 @@ //! This module contains raw syscall bindings for the `MIPS64r2` target architecture, as well as a -//! high-level implementation of the [crate::BasicKernelInterface] trait for the `Cannon` kernel. +//! high-level implementation of the [`crate::BasicKernelInterface`] trait for the `Cannon` kernel. pub(crate) mod io; mod syscall; diff --git a/kona/crates/proof/std-fpvm/src/mips64/syscall.rs b/rust/kona/crates/proof/std-fpvm/src/mips64/syscall.rs similarity index 100% rename from kona/crates/proof/std-fpvm/src/mips64/syscall.rs rename to rust/kona/crates/proof/std-fpvm/src/mips64/syscall.rs diff --git a/kona/crates/proof/std-fpvm/src/riscv64/io.rs b/rust/kona/crates/proof/std-fpvm/src/riscv64/io.rs similarity index 87% rename from kona/crates/proof/std-fpvm/src/riscv64/io.rs rename to rust/kona/crates/proof/std-fpvm/src/riscv64/io.rs index e680d0d50d387..cf0b4a4d9e8ff 100644 --- a/kona/crates/proof/std-fpvm/src/riscv64/io.rs +++ b/rust/kona/crates/proof/std-fpvm/src/riscv64/io.rs @@ -6,15 +6,15 @@ pub(crate) struct RiscV64IO; /// Relevant system call numbers for the `riscv64` target architecture. /// -/// See https://jborza.com/post/2021-05-11-riscv-linux-syscalls/ +/// See /// /// **Note**: This is not an exhaustive list of system calls available to the `client` program, -/// only the ones necessary for the [BasicKernelInterface] trait implementation. If an extension -/// trait for the [BasicKernelInterface] trait is created for the linux kernel, this list +/// only the ones necessary for the [`BasicKernelInterface`] trait implementation. If an extension +/// trait for the [`BasicKernelInterface`] trait is created for the linux kernel, this list /// should be extended accordingly. #[repr(usize)] pub(crate) enum SyscallNumber { - /// Sets the Exited and ExitCode states to true and $a0 respectively. + /// Sets the Exited and `ExitCode` states to true and $a0 respectively. Exit = 93, /// Similar behavior as Linux with support for unaligned reads. Read = 63, diff --git a/kona/crates/proof/std-fpvm/src/riscv64/mod.rs b/rust/kona/crates/proof/std-fpvm/src/riscv64/mod.rs similarity index 58% rename from kona/crates/proof/std-fpvm/src/riscv64/mod.rs rename to rust/kona/crates/proof/std-fpvm/src/riscv64/mod.rs index f90970ea7ccd2..9b7cde55f6fb4 100644 --- a/kona/crates/proof/std-fpvm/src/riscv64/mod.rs +++ b/rust/kona/crates/proof/std-fpvm/src/riscv64/mod.rs @@ -1,5 +1,5 @@ //! This module contains raw syscall bindings for the `riscv64imac` target architecture, as well as -//! a high-level implementation of the [crate::BasicKernelInterface] trait for the kernel. +//! a high-level implementation of the [`crate::BasicKernelInterface`] trait for the kernel. pub(crate) mod io; mod syscall; diff --git a/kona/crates/proof/std-fpvm/src/riscv64/syscall.rs b/rust/kona/crates/proof/std-fpvm/src/riscv64/syscall.rs similarity index 100% rename from kona/crates/proof/std-fpvm/src/riscv64/syscall.rs rename to rust/kona/crates/proof/std-fpvm/src/riscv64/syscall.rs diff --git a/kona/crates/proof/std-fpvm/src/tracing.rs b/rust/kona/crates/proof/std-fpvm/src/tracing.rs similarity index 91% rename from kona/crates/proof/std-fpvm/src/tracing.rs rename to rust/kona/crates/proof/std-fpvm/src/tracing.rs index 4ceb4f3308b59..f8ca17072ceee 100644 --- a/kona/crates/proof/std-fpvm/src/tracing.rs +++ b/rust/kona/crates/proof/std-fpvm/src/tracing.rs @@ -12,15 +12,15 @@ use tracing::{ span::{Attributes, Id, Record}, }; -/// Custom [Subscriber] implementation that uses [crate::io] to write log entries to -/// [crate::FileDescriptor::StdOut]. +/// Custom [`Subscriber`] implementation that uses [`crate::io`] to write log entries to +/// [`crate::FileDescriptor::StdOut`]. #[derive(Debug, Clone)] pub struct FpvmTracingSubscriber { min_level: Level, } impl FpvmTracingSubscriber { - /// Create a new [FpvmTracingSubscriber] with the specified minimum log level. + /// Create a new [`FpvmTracingSubscriber`] with the specified minimum log level. pub const fn new(min_level: Level) -> Self { Self { min_level } } diff --git a/kona/crates/proof/std-fpvm/src/traits/basic.rs b/rust/kona/crates/proof/std-fpvm/src/traits/basic.rs similarity index 82% rename from kona/crates/proof/std-fpvm/src/traits/basic.rs rename to rust/kona/crates/proof/std-fpvm/src/traits/basic.rs index a5763ec418bad..8e4394ab0fb6c 100644 --- a/kona/crates/proof/std-fpvm/src/traits/basic.rs +++ b/rust/kona/crates/proof/std-fpvm/src/traits/basic.rs @@ -1,10 +1,10 @@ -//! Defines the [BasicKernelInterface] trait, which describes the functionality of several system +//! Defines the [`BasicKernelInterface`] trait, which describes the functionality of several system //! calls inside of the kernel. use crate::{FileDescriptor, errors::IOResult}; -/// The [BasicKernelInterface] trait describes the functionality of several core system calls inside -/// of the kernel. +/// The [`BasicKernelInterface`] trait describes the functionality of several core system calls +/// inside of the kernel. /// /// Commonly, embedded proving environments delegate IO operations to custom file descriptors. /// This trait is a safe wrapper around the raw system calls available to the `client` program diff --git a/kona/crates/proof/std-fpvm/src/traits/mod.rs b/rust/kona/crates/proof/std-fpvm/src/traits/mod.rs similarity index 100% rename from kona/crates/proof/std-fpvm/src/traits/mod.rs rename to rust/kona/crates/proof/std-fpvm/src/traits/mod.rs diff --git a/kona/crates/proof/std-fpvm/src/types.rs b/rust/kona/crates/proof/std-fpvm/src/types.rs similarity index 100% rename from kona/crates/proof/std-fpvm/src/types.rs rename to rust/kona/crates/proof/std-fpvm/src/types.rs diff --git a/kona/crates/protocol/derive/CHANGELOG.md b/rust/kona/crates/protocol/derive/CHANGELOG.md similarity index 100% rename from kona/crates/protocol/derive/CHANGELOG.md rename to rust/kona/crates/protocol/derive/CHANGELOG.md diff --git a/kona/crates/protocol/derive/Cargo.toml b/rust/kona/crates/protocol/derive/Cargo.toml similarity index 100% rename from kona/crates/protocol/derive/Cargo.toml rename to rust/kona/crates/protocol/derive/Cargo.toml diff --git a/kona/crates/protocol/derive/README.md b/rust/kona/crates/protocol/derive/README.md similarity index 100% rename from kona/crates/protocol/derive/README.md rename to rust/kona/crates/protocol/derive/README.md diff --git a/rust/kona/crates/protocol/derive/src/attributes/mod.rs b/rust/kona/crates/protocol/derive/src/attributes/mod.rs new file mode 100644 index 0000000000000..7f50337e41b8a --- /dev/null +++ b/rust/kona/crates/protocol/derive/src/attributes/mod.rs @@ -0,0 +1,5 @@ +//! Module containing the [`AttributesBuilder`](crate::traits::AttributesBuilder) trait +//! implementations. + +mod stateful; +pub use stateful::StatefulAttributesBuilder; diff --git a/kona/crates/protocol/derive/src/attributes/stateful.rs b/rust/kona/crates/protocol/derive/src/attributes/stateful.rs similarity index 96% rename from kona/crates/protocol/derive/src/attributes/stateful.rs rename to rust/kona/crates/protocol/derive/src/attributes/stateful.rs index f874c51a6a8fb..8a9f9b744379e 100644 --- a/kona/crates/protocol/derive/src/attributes/stateful.rs +++ b/rust/kona/crates/protocol/derive/src/attributes/stateful.rs @@ -79,7 +79,20 @@ where // If the L1 origin changed in this block, then we are in the first block of the epoch. // In this case we need to fetch all transaction receipts from the L1 origin block so // we can scan for user deposits. - let sequence_number = if l2_parent.l1_origin.number != epoch.number { + let sequence_number = if l2_parent.l1_origin.number == epoch.number { + #[allow(clippy::collapsible_else_if)] + if l2_parent.l1_origin.hash != epoch.hash { + return Err(PipelineErrorKind::Reset( + BuilderError::BlockMismatch(epoch, l2_parent.l1_origin).into(), + )); + } + + let header = + self.receipts_fetcher.header_by_hash(epoch.hash).await.map_err(Into::into)?; + l1_header = header; + deposit_transactions = vec![]; + l2_parent.seq_num + 1 + } else { let header = self.receipts_fetcher.header_by_hash(epoch.hash).await.map_err(Into::into)?; if l2_parent.l1_origin.hash != header.parent_hash { @@ -108,19 +121,6 @@ where l1_header = header; deposit_transactions = deposits; 0 - } else { - #[allow(clippy::collapsible_else_if)] - if l2_parent.l1_origin.hash != epoch.hash { - return Err(PipelineErrorKind::Reset( - BuilderError::BlockMismatch(epoch, l2_parent.l1_origin).into(), - )); - } - - let header = - self.receipts_fetcher.header_by_hash(epoch.hash).await.map_err(Into::into)?; - l1_header = header; - deposit_transactions = vec![]; - l2_parent.seq_num + 1 }; // Sanity check the L1 origin was correctly selected to maintain the time invariant @@ -138,12 +138,14 @@ where )); } - let mut upgrade_transactions: Vec = vec![]; - if self.rollup_cfg.is_ecotone_active(next_l2_time) && - !self.rollup_cfg.is_ecotone_active(l2_parent.block_info.timestamp) - { - upgrade_transactions = Hardforks::ECOTONE.txs().collect(); - } + let mut upgrade_transactions: Vec = + if self.rollup_cfg.is_ecotone_active(next_l2_time) && + !self.rollup_cfg.is_ecotone_active(l2_parent.block_info.timestamp) + { + Hardforks::ECOTONE.txs().collect() + } else { + vec![] + }; if self.rollup_cfg.is_fjord_active(next_l2_time) && !self.rollup_cfg.is_fjord_active(l2_parent.block_info.timestamp) { @@ -186,16 +188,12 @@ where txs.extend(deposit_transactions); txs.extend(upgrade_transactions); - let mut withdrawals = None; - if self.rollup_cfg.is_canyon_active(next_l2_time) { - withdrawals = Some(Vec::default()); - } + let withdrawals = self.rollup_cfg.is_canyon_active(next_l2_time).then(Vec::default); - let mut parent_beacon_root = None; - if self.rollup_cfg.is_ecotone_active(next_l2_time) { - // if the parent beacon root is not available, default to zero hash - parent_beacon_root = Some(l1_header.parent_beacon_block_root.unwrap_or_default()); - } + let parent_beacon_root = self + .rollup_cfg + .is_ecotone_active(next_l2_time) + .then(|| l1_header.parent_beacon_block_root.unwrap_or_default()); Ok(OpPayloadAttributes { payload_attributes: PayloadAttributes { @@ -236,11 +234,11 @@ async fn derive_deposits( ) -> Result, PipelineEncodingError> { let mut global_index = 0; let mut res = Vec::new(); - for r in receipts.iter() { + for r in receipts { if Eip658Value::Eip658(false) == r.status { continue; } - for l in r.logs.iter() { + for l in &r.logs { let curr_index = global_index; global_index += 1; if l.data.topics().first().is_none_or(|i| *i != DEPOSIT_EVENT_ABI_HASH) { diff --git a/kona/crates/protocol/derive/src/errors/attributes.rs b/rust/kona/crates/protocol/derive/src/errors/attributes.rs similarity index 100% rename from kona/crates/protocol/derive/src/errors/attributes.rs rename to rust/kona/crates/protocol/derive/src/errors/attributes.rs diff --git a/kona/crates/protocol/derive/src/errors/mod.rs b/rust/kona/crates/protocol/derive/src/errors/mod.rs similarity index 100% rename from kona/crates/protocol/derive/src/errors/mod.rs rename to rust/kona/crates/protocol/derive/src/errors/mod.rs diff --git a/kona/crates/protocol/derive/src/errors/pipeline.rs b/rust/kona/crates/protocol/derive/src/errors/pipeline.rs similarity index 97% rename from kona/crates/protocol/derive/src/errors/pipeline.rs rename to rust/kona/crates/protocol/derive/src/errors/pipeline.rs index 8253a695c95ba..15b332c504c45 100644 --- a/kona/crates/protocol/derive/src/errors/pipeline.rs +++ b/rust/kona/crates/protocol/derive/src/errors/pipeline.rs @@ -7,7 +7,8 @@ use kona_genesis::SystemConfigUpdateError; use kona_protocol::{DepositError, SpanBatchError}; use thiserror::Error; -/// [crate::ensure] is a short-hand for bubbling up errors in the case of a condition not being met. +/// [`crate::ensure`] is a short-hand for bubbling up errors in the case of a condition not being +/// met. #[macro_export] macro_rules! ensure { ($cond:expr, $err:expr) => { @@ -273,7 +274,7 @@ pub enum PipelineError { } impl PipelineError { - /// Wraps this [`PipelineError`] as a [PipelineErrorKind::Critical]. + /// Wraps this [`PipelineError`] as a [`PipelineErrorKind::Critical`]. /// /// Critical errors indicate fundamental issues that cannot be resolved through /// retries or pipeline resets. They require external intervention to resolve. @@ -292,7 +293,7 @@ impl PipelineError { PipelineErrorKind::Critical(self) } - /// Wraps this [`PipelineError`] as a [PipelineErrorKind::Temporary]. + /// Wraps this [`PipelineError`] as a [`PipelineErrorKind::Temporary`]. /// /// Temporary errors indicate transient conditions that may resolve with /// additional data, time, or retries. The pipeline can attempt to recover @@ -331,7 +332,7 @@ pub enum ResetError { L1OriginMismatch(u64, u64), /// The stage detected a block reorg. /// The first argument is the expected block hash. - /// The second argument is the parent_hash of the next l1 origin block. + /// The second argument is the `parent_hash` of the next l1 origin block. #[error("L1 reorg detected: expected {0}, got {1}")] ReorgDetected(B256, B256), /// Attributes builder error variant, with [`BuilderError`]. @@ -346,7 +347,7 @@ pub enum ResetError { } impl ResetError { - /// Wrap [`ResetError`] as a [PipelineErrorKind::Reset]. + /// Wrap [`ResetError`] as a [`PipelineErrorKind::Reset`]. pub const fn reset(self) -> PipelineErrorKind { PipelineErrorKind::Reset(self) } @@ -431,7 +432,7 @@ mod tests { )), ResetError::HoloceneActivation, ]; - for error in reset_errors.into_iter() { + for error in reset_errors { let expected = PipelineErrorKind::Reset(error.clone()); assert_eq!(error.reset(), expected); } diff --git a/kona/crates/protocol/derive/src/errors/sources.rs b/rust/kona/crates/protocol/derive/src/errors/sources.rs similarity index 90% rename from kona/crates/protocol/derive/src/errors/sources.rs rename to rust/kona/crates/protocol/derive/src/errors/sources.rs index 2a16c80db0928..ab752eae72d35 100644 --- a/kona/crates/protocol/derive/src/errors/sources.rs +++ b/rust/kona/crates/protocol/derive/src/errors/sources.rs @@ -41,10 +41,8 @@ pub enum BlobProviderError { impl From for PipelineErrorKind { fn from(val: BlobProviderError) -> Self { match val { - BlobProviderError::SidecarLengthMismatch(_, _) => { - PipelineError::Provider(val.to_string()).crit() - } - BlobProviderError::SlotDerivation => PipelineError::Provider(val.to_string()).crit(), + BlobProviderError::SidecarLengthMismatch(_, _) | + BlobProviderError::SlotDerivation | BlobProviderError::BlobDecoding(_) => PipelineError::Provider(val.to_string()).crit(), BlobProviderError::Backend(_) => PipelineError::Provider(val.to_string()).temp(), } diff --git a/kona/crates/protocol/derive/src/errors/stages.rs b/rust/kona/crates/protocol/derive/src/errors/stages.rs similarity index 100% rename from kona/crates/protocol/derive/src/errors/stages.rs rename to rust/kona/crates/protocol/derive/src/errors/stages.rs diff --git a/kona/crates/protocol/derive/src/lib.rs b/rust/kona/crates/protocol/derive/src/lib.rs similarity index 97% rename from kona/crates/protocol/derive/src/lib.rs rename to rust/kona/crates/protocol/derive/src/lib.rs index 004a656940549..7803c73e77e37 100644 --- a/kona/crates/protocol/derive/src/lib.rs +++ b/rust/kona/crates/protocol/derive/src/lib.rs @@ -4,7 +4,7 @@ html_favicon_url = "https://raw.githubusercontent.com/op-rs/kona/main/assets/favicon.ico", issue_tracker_base_url = "https://github.com/op-rs/kona/issues/" )] -#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))] +#![cfg_attr(docsrs, feature(doc_cfg))] #![cfg_attr(not(feature = "metrics"), no_std)] extern crate alloc; diff --git a/kona/crates/protocol/derive/src/metrics/mod.rs b/rust/kona/crates/protocol/derive/src/metrics/mod.rs similarity index 100% rename from kona/crates/protocol/derive/src/metrics/mod.rs rename to rust/kona/crates/protocol/derive/src/metrics/mod.rs diff --git a/kona/crates/protocol/derive/src/pipeline/builder.rs b/rust/kona/crates/protocol/derive/src/pipeline/builder.rs similarity index 100% rename from kona/crates/protocol/derive/src/pipeline/builder.rs rename to rust/kona/crates/protocol/derive/src/pipeline/builder.rs diff --git a/kona/crates/protocol/derive/src/pipeline/core.rs b/rust/kona/crates/protocol/derive/src/pipeline/core.rs similarity index 94% rename from kona/crates/protocol/derive/src/pipeline/core.rs rename to rust/kona/crates/protocol/derive/src/pipeline/core.rs index 6071a07d31283..379581aa508a7 100644 --- a/kona/crates/protocol/derive/src/pipeline/core.rs +++ b/rust/kona/crates/protocol/derive/src/pipeline/core.rs @@ -81,7 +81,7 @@ where /// Signals the pipeline by calling the [`SignalReceiver::signal`] method. /// /// During a [`Signal::Reset`], each stage is recursively called from the top-level - /// [crate::stages::AttributesQueue] to the bottom [crate::PollingTraversal] + /// [`crate::stages::AttributesQueue`] to the bottom [`crate::PollingTraversal`] /// with a head-recursion pattern. This effectively clears the internal state /// of each stage in the pipeline from bottom on up. /// @@ -93,8 +93,8 @@ where /// The `signal` is contains the signal variant with any necessary parameters. async fn signal(&mut self, signal: Signal) -> PipelineResult<()> { match signal { - mut s @ Signal::Reset(ResetSignal { l2_safe_head, .. }) | - mut s @ Signal::Activation(ActivationSignal { l2_safe_head, .. }) => { + mut s @ (Signal::Reset(ResetSignal { l2_safe_head, .. }) | + Signal::Activation(ActivationSignal { l2_safe_head, .. })) => { let system_config = self .l2_chain_provider .system_config_by_number( @@ -107,7 +107,7 @@ where match self.attributes.signal(s).await { Ok(()) => trace!(target: "pipeline", "Stages reset"), Err(err) => { - if let PipelineErrorKind::Temporary(PipelineError::Eof) = err { + if err == PipelineErrorKind::Temporary(PipelineError::Eof) { trace!(target: "pipeline", "Stages reset with EOF"); } else { error!(target: "pipeline", "Stage reset errored: {:?}", err); @@ -116,10 +116,7 @@ where } } } - Signal::FlushChannel => { - self.attributes.signal(signal).await?; - } - Signal::ProvideBlock(_) => { + Signal::FlushChannel | Signal::ProvideBlock(_) => { self.attributes.signal(signal).await?; } } @@ -163,12 +160,12 @@ where /// /// ## Returns /// - /// A [PipelineError::Eof] is returned if the pipeline is blocked by waiting for new L1 data. + /// A [`PipelineError::Eof`] is returned if the pipeline is blocked by waiting for new L1 data. /// Any other error is critical and the derivation pipeline should be reset. /// An error is expected when the underlying source closes. /// - /// When [DerivationPipeline::step] returns [Ok(())], it should be called again, to continue the - /// derivation process. + /// When [`DerivationPipeline::step`] returns [Ok(())], it should be called again, to continue + /// the derivation process. /// /// [`PipelineError`]: crate::errors::PipelineError async fn step(&mut self, cursor: L2BlockInfo) -> StepResult { @@ -190,14 +187,14 @@ where crate::metrics::Metrics::PIPELINE_LATEST_PAYLOAD_TX_COUNT, a.attributes.transactions.as_ref().map_or(0.0, |txs| txs.len() as f64) ); - if !a.is_last_in_span { - kona_macros::inc!(gauge, crate::metrics::Metrics::PIPELINE_DERIVED_SPAN_SIZE); - } else { + if a.is_last_in_span { kona_macros::set!( gauge, crate::metrics::Metrics::PIPELINE_DERIVED_SPAN_SIZE, 0 ); + } else { + kona_macros::inc!(gauge, crate::metrics::Metrics::PIPELINE_DERIVED_SPAN_SIZE); } self.prepared.push_back(a); kona_macros::inc!(gauge, crate::metrics::Metrics::PIPELINE_PREPARED_ATTRIBUTES); diff --git a/kona/crates/protocol/derive/src/pipeline/mod.rs b/rust/kona/crates/protocol/derive/src/pipeline/mod.rs similarity index 100% rename from kona/crates/protocol/derive/src/pipeline/mod.rs rename to rust/kona/crates/protocol/derive/src/pipeline/mod.rs diff --git a/kona/crates/protocol/derive/src/pipeline/types.rs b/rust/kona/crates/protocol/derive/src/pipeline/types.rs similarity index 100% rename from kona/crates/protocol/derive/src/pipeline/types.rs rename to rust/kona/crates/protocol/derive/src/pipeline/types.rs diff --git a/kona/crates/protocol/derive/src/sources/blob_data.rs b/rust/kona/crates/protocol/derive/src/sources/blob_data.rs similarity index 100% rename from kona/crates/protocol/derive/src/sources/blob_data.rs rename to rust/kona/crates/protocol/derive/src/sources/blob_data.rs diff --git a/kona/crates/protocol/derive/src/sources/blobs.rs b/rust/kona/crates/protocol/derive/src/sources/blobs.rs similarity index 99% rename from kona/crates/protocol/derive/src/sources/blobs.rs rename to rust/kona/crates/protocol/derive/src/sources/blobs.rs index f258beac5e46d..14b2f42db511c 100644 --- a/kona/crates/protocol/derive/src/sources/blobs.rs +++ b/rust/kona/crates/protocol/derive/src/sources/blobs.rs @@ -147,7 +147,7 @@ where // Fill the blob pointers. let mut blob_index = 0; - for blob in data.iter_mut() { + for blob in &mut data { match blob.fill(&blobs, blob_index) { Ok(should_increment) => { if should_increment { diff --git a/kona/crates/protocol/derive/src/sources/calldata.rs b/rust/kona/crates/protocol/derive/src/sources/calldata.rs similarity index 99% rename from kona/crates/protocol/derive/src/sources/calldata.rs rename to rust/kona/crates/protocol/derive/src/sources/calldata.rs index 2475fe9a86092..be9ad3675b44b 100644 --- a/kona/crates/protocol/derive/src/sources/calldata.rs +++ b/rust/kona/crates/protocol/derive/src/sources/calldata.rs @@ -1,4 +1,4 @@ -//! CallData Source +//! `CallData` Source use crate::{ChainProvider, DataAvailabilityProvider, PipelineError, PipelineResult}; use alloc::{boxed::Box, collections::VecDeque}; diff --git a/kona/crates/protocol/derive/src/sources/ethereum.rs b/rust/kona/crates/protocol/derive/src/sources/ethereum.rs similarity index 97% rename from kona/crates/protocol/derive/src/sources/ethereum.rs rename to rust/kona/crates/protocol/derive/src/sources/ethereum.rs index 6b434d86e8e3d..991ba41cddf25 100644 --- a/kona/crates/protocol/derive/src/sources/ethereum.rs +++ b/rust/kona/crates/protocol/derive/src/sources/ethereum.rs @@ -1,5 +1,5 @@ -//! Contains the [EthereumDataSource], which is a concrete implementation of the -//! [DataAvailabilityProvider] trait for the Ethereum protocol. +//! Contains the [`EthereumDataSource`], which is a concrete implementation of the +//! [`DataAvailabilityProvider`] trait for the Ethereum protocol. use crate::{ BlobProvider, BlobSource, CalldataSource, ChainProvider, DataAvailabilityProvider, diff --git a/kona/crates/protocol/derive/src/sources/mod.rs b/rust/kona/crates/protocol/derive/src/sources/mod.rs similarity index 53% rename from kona/crates/protocol/derive/src/sources/mod.rs rename to rust/kona/crates/protocol/derive/src/sources/mod.rs index d7a5e5f1455bb..5077c1f9bc3dd 100644 --- a/kona/crates/protocol/derive/src/sources/mod.rs +++ b/rust/kona/crates/protocol/derive/src/sources/mod.rs @@ -1,11 +1,9 @@ //! The data source module. //! //! Data sources are data providers for the kona derivation pipeline. -//! They implement the [DataAvailabilityProvider] trait, providing a way -//! to iterate over data for a given (L2) [BlockInfo]. -//! -//! [DataAvailabilityProvider]: crate::traits::DataAvailabilityProvider -//! [BlockInfo]: kona_protocol::BlockInfo +//! They implement the [`DataAvailabilityProvider`](crate::traits::DataAvailabilityProvider) trait, +//! providing a way to iterate over data for a given (L2) +//! [`BlockInfo`](kona_protocol::BlockInfo). mod blob_data; pub use blob_data::BlobData; diff --git a/kona/crates/protocol/derive/src/sources/variant.rs b/rust/kona/crates/protocol/derive/src/sources/variant.rs similarity index 100% rename from kona/crates/protocol/derive/src/sources/variant.rs rename to rust/kona/crates/protocol/derive/src/sources/variant.rs diff --git a/kona/crates/protocol/derive/src/stages/attributes_queue.rs b/rust/kona/crates/protocol/derive/src/stages/attributes_queue.rs similarity index 99% rename from kona/crates/protocol/derive/src/stages/attributes_queue.rs rename to rust/kona/crates/protocol/derive/src/stages/attributes_queue.rs index 2fc54e022f2d2..72e3e72062657 100644 --- a/kona/crates/protocol/derive/src/stages/attributes_queue.rs +++ b/rust/kona/crates/protocol/derive/src/stages/attributes_queue.rs @@ -63,7 +63,7 @@ where self.batch = Some(batch); self.is_last_in_span = self.prev.is_last_in_span(); } - self.batch.as_ref().cloned().ok_or(PipelineError::Eof.temp()) + self.batch.clone().ok_or(PipelineError::Eof.temp()) } /// Returns the next [`OpAttributesWithParent`] from the current batch. @@ -187,7 +187,7 @@ where { async fn signal(&mut self, signal: Signal) -> PipelineResult<()> { match signal { - s @ Signal::Reset(_) | s @ Signal::Activation(_) => { + s @ (Signal::Reset(_) | Signal::Activation(_)) => { self.prev.signal(s).await?; self.batch = None; self.is_last_in_span = false; diff --git a/kona/crates/protocol/derive/src/stages/batch/batch_provider.rs b/rust/kona/crates/protocol/derive/src/stages/batch/batch_provider.rs similarity index 100% rename from kona/crates/protocol/derive/src/stages/batch/batch_provider.rs rename to rust/kona/crates/protocol/derive/src/stages/batch/batch_provider.rs diff --git a/kona/crates/protocol/derive/src/stages/batch/batch_queue.rs b/rust/kona/crates/protocol/derive/src/stages/batch/batch_queue.rs similarity index 98% rename from kona/crates/protocol/derive/src/stages/batch/batch_queue.rs rename to rust/kona/crates/protocol/derive/src/stages/batch/batch_queue.rs index 99b6ff674e6a2..d3e506358d620 100644 --- a/kona/crates/protocol/derive/src/stages/batch/batch_queue.rs +++ b/rust/kona/crates/protocol/derive/src/stages/batch/batch_queue.rs @@ -80,9 +80,7 @@ where /// The parent is used to set the parent hash of the batch. /// The parent is verified when the batch is later validated. pub fn pop_next_batch(&mut self, parent: L2BlockInfo) -> Option { - if self.next_spans.is_empty() { - panic!("Invalid state: must have next spans to pop"); - } + assert!(!self.next_spans.is_empty(), "Invalid state: must have next spans to pop"); let mut next = self.next_spans.remove(0); next.parent_hash = parent.block_info.hash; Some(next) @@ -91,7 +89,7 @@ where /// Derives the next batch to apply on top of the current L2 safe head. /// Follows the validity rules imposed on consecutive batches. /// Based on currently available buffered batch and L1 origin information. - /// A [PipelineError::Eof] is returned if no batch can be derived yet. + /// A [`PipelineError::Eof`] is returned if no batch can be derived yet. pub async fn derive_next_batch( &mut self, empty: bool, @@ -137,11 +135,11 @@ where // Drop Future batches post-holocene. // // See: - if !self.cfg.is_holocene_active(origin.timestamp) { - remaining.push(batch.clone()); - } else { + if self.cfg.is_holocene_active(origin.timestamp) { self.prev.flush(); warn!(target: "batch_queue", "[HOLOCENE] Dropping future batch with parent: {}", parent.block_info.number); + } else { + remaining.push(batch.clone()); } } BatchValidity::Drop(reason) => { @@ -149,7 +147,6 @@ where // stage. self.prev.flush(); warn!(target: "batch_queue", "Dropping batch with parent: {}, reason: {}", parent.block_info, reason); - continue; } BatchValidity::Accept => { next_batch = Some(batch.clone()); @@ -170,7 +167,6 @@ where } warn!(target: "batch_queue", "[HOLOCENE] Dropping outdated batch with parent: {}", parent.block_info.number); - continue; } } } @@ -324,7 +320,13 @@ where // Batches prior to the l1 origin of the l2 safe head are not accepted. if self.origin != self.prev.origin() { self.origin = self.prev.origin(); - if !origin_behind { + if origin_behind { + // This is to handle the special case of startup. + // At startup, the batch queue is reset and includes the + // l1 origin. That is the only time where immediately after + // reset is called, the origin behind is false. + self.l1_blocks.clear(); + } else { let origin = match self.origin.as_ref().ok_or(PipelineError::MissingOrigin.crit()) { Ok(o) => o, Err(e) => { @@ -332,12 +334,6 @@ where } }; self.l1_blocks.push(*origin); - } else { - // This is to handle the special case of startup. - // At startup, the batch queue is reset and includes the - // l1 origin. That is the only time where immediately after - // reset is called, the origin behind is false. - self.l1_blocks.clear(); } info!(target: "batch_queue", "Advancing batch queue origin: {:?}", self.origin); } @@ -346,14 +342,14 @@ where let mut out_of_data = false; match self.prev.next_batch(parent, &self.l1_blocks).await { Ok(b) => { - if !origin_behind { - self.add_batch(b, parent).await.ok(); - } else { + if origin_behind { warn!(target: "batch_queue", "Dropping batch: Origin is behind"); + } else { + self.add_batch(b, parent).await.ok(); } } Err(e) => { - if let PipelineErrorKind::Temporary(PipelineError::Eof) = e { + if e == PipelineErrorKind::Temporary(PipelineError::Eof) { out_of_data = true; } else { return Err(e); @@ -447,7 +443,7 @@ where self.l1_blocks.push(l1_origin); self.next_spans.clear(); } - s @ Signal::Activation(_) | s @ Signal::FlushChannel => { + s @ (Signal::Activation(_) | Signal::FlushChannel) => { self.prev.signal(s).await?; self.batches.clear(); self.next_spans.clear(); diff --git a/kona/crates/protocol/derive/src/stages/batch/batch_stream.rs b/rust/kona/crates/protocol/derive/src/stages/batch/batch_stream.rs similarity index 100% rename from kona/crates/protocol/derive/src/stages/batch/batch_stream.rs rename to rust/kona/crates/protocol/derive/src/stages/batch/batch_stream.rs diff --git a/kona/crates/protocol/derive/src/stages/batch/batch_validator.rs b/rust/kona/crates/protocol/derive/src/stages/batch/batch_validator.rs similarity index 99% rename from kona/crates/protocol/derive/src/stages/batch/batch_validator.rs rename to rust/kona/crates/protocol/derive/src/stages/batch/batch_validator.rs index 45c8d3c51fdaa..9c641e1855c4b 100644 --- a/kona/crates/protocol/derive/src/stages/batch/batch_validator.rs +++ b/rust/kona/crates/protocol/derive/src/stages/batch/batch_validator.rs @@ -1,4 +1,4 @@ -//! Contains the [BatchValidator] stage. +//! Contains the [`BatchValidator`] stage. use super::NextBatchProvider; use crate::{ @@ -77,15 +77,15 @@ where // Batches prior to the l1 origin of the l2 safe head are not accepted. if self.origin != self.prev.origin() { self.origin = self.prev.origin(); - if !origin_behind { - let origin = self.origin.as_ref().ok_or(PipelineError::MissingOrigin.crit())?; - self.l1_blocks.push(*origin); - } else { + if origin_behind { // This is to handle the special case of startup. // At startup, the batch validator is reset and includes the // l1 origin. That is the only time when immediately after // reset is called, the origin behind is false. self.l1_blocks.clear(); + } else { + let origin = self.origin.as_ref().ok_or(PipelineError::MissingOrigin.crit())?; + self.l1_blocks.push(*origin); } debug!( target: "batch_validator", @@ -315,7 +315,7 @@ where self.l1_blocks.clear(); self.l1_blocks.push(l1_origin); } - s @ Signal::Activation(_) | s @ Signal::FlushChannel | s @ Signal::ProvideBlock(_) => { + s @ (Signal::Activation(_) | Signal::FlushChannel | Signal::ProvideBlock(_)) => { self.prev.signal(s).await?; } } diff --git a/kona/crates/protocol/derive/src/stages/batch/mod.rs b/rust/kona/crates/protocol/derive/src/stages/batch/mod.rs similarity index 66% rename from kona/crates/protocol/derive/src/stages/batch/mod.rs rename to rust/kona/crates/protocol/derive/src/stages/batch/mod.rs index dbc052650945e..2cc9b630c866c 100644 --- a/kona/crates/protocol/derive/src/stages/batch/mod.rs +++ b/rust/kona/crates/protocol/derive/src/stages/batch/mod.rs @@ -1,16 +1,11 @@ -//! Contains stages pertaining to the processing of [Batch]es. +//! Contains stages pertaining to the processing of [`Batch`]es. //! -//! Sitting after the [ChannelReader] stage, the [`BatchStream`] and [`BatchProvider`] stages are -//! responsible for validating and ordering the [Batch]es. The [`BatchStream`] stage is -//! responsible for streaming [SingleBatch]es from [SpanBatch]es, while the [`BatchProvider`] -//! stage is responsible for ordering and validating the [Batch]es for the [AttributesQueue] -//! stage. -//! -//! [Batch]: kona_protocol::Batch -//! [SingleBatch]: kona_protocol::SingleBatch -//! [SpanBatch]: kona_protocol::SpanBatch -//! [ChannelReader]: crate::stages::channel::ChannelReader -//! [AttributesQueue]: crate::stages::attributes_queue::AttributesQueue +//! Sitting after the [`ChannelReader`](crate::stages::channel::ChannelReader) stage, the +//! [`BatchStream`] and [`BatchProvider`] stages are responsible for validating and ordering the +//! [`Batch`]es. The [`BatchStream`] stage is responsible for streaming +//! [`SingleBatch`](kona_protocol::SingleBatch)es from [`SpanBatch`](kona_protocol::SpanBatch)es, +//! while the [`BatchProvider`] stage is responsible for ordering and validating the [`Batch`]es +//! for the [`AttributesQueue`](crate::stages::attributes_queue::AttributesQueue) stage. use crate::types::PipelineResult; use alloc::boxed::Box; @@ -52,7 +47,7 @@ pub trait NextBatchProvider { /// [`SingleBatch`]: kona_protocol::SingleBatch fn span_buffer_size(&self) -> usize; - /// Allows the stage to flush the buffer in the [crate::stages::BatchStream] + /// Allows the stage to flush the buffer in the [`crate::stages::BatchStream`] /// if an invalid single batch is found. Pre-holocene hardfork, this will be a no-op. fn flush(&mut self); } diff --git a/kona/crates/protocol/derive/src/stages/channel/channel_assembler.rs b/rust/kona/crates/protocol/derive/src/stages/channel/channel_assembler.rs similarity index 95% rename from kona/crates/protocol/derive/src/stages/channel/channel_assembler.rs rename to rust/kona/crates/protocol/derive/src/stages/channel/channel_assembler.rs index 248149bd9db4b..9741e7743d6bc 100644 --- a/kona/crates/protocol/derive/src/stages/channel/channel_assembler.rs +++ b/rust/kona/crates/protocol/derive/src/stages/channel/channel_assembler.rs @@ -1,4 +1,4 @@ -//! This module contains the [ChannelAssembler] stage. +//! This module contains the [`ChannelAssembler`] stage. use super::{ChannelReaderProvider, NextFrameProvider}; use crate::{ @@ -46,13 +46,9 @@ where /// Returns whether or not the channel currently being assembled has timed out. pub fn is_timed_out(&self) -> PipelineResult { let origin = self.origin().ok_or(PipelineError::MissingOrigin.crit())?; - let is_timed_out = self - .channel - .as_ref() - .map(|c| { - c.open_block_number() + self.cfg.channel_timeout(origin.timestamp) < origin.number - }) - .unwrap_or_default(); + let is_timed_out = self.channel.as_ref().is_some_and(|c| { + c.open_block_number() + self.cfg.channel_timeout(origin.timestamp) < origin.number + }); Ok(is_timed_out) } @@ -67,17 +63,19 @@ where let origin = self.origin().ok_or(PipelineError::MissingOrigin.crit())?; // Time out the channel if it has timed out. - if let Some(channel) = self.channel.as_ref() { - if self.is_timed_out()? { - warn!( - target: "channel_assembler", - "Channel (ID: {}) timed out at L1 origin #{}, open block #{}. Discarding channel.", - hex::encode(channel.id()), - origin.number, - channel.open_block_number() - ); - self.channel = None; - } + if let Some(channel) = self.channel.as_ref() && + self.is_timed_out()? + { + let channel_id = hex::encode(channel.id()); + let open_block = channel.open_block_number(); + warn!( + target: "channel_assembler", + "Channel (ID: {}) timed out at L1 origin #{}, open block #{}. Discarding channel.", + channel_id, + origin.number, + open_block + ); + self.channel = None; } // Grab the next frame from the previous stage. diff --git a/kona/crates/protocol/derive/src/stages/channel/channel_bank.rs b/rust/kona/crates/protocol/derive/src/stages/channel/channel_bank.rs similarity index 100% rename from kona/crates/protocol/derive/src/stages/channel/channel_bank.rs rename to rust/kona/crates/protocol/derive/src/stages/channel/channel_bank.rs diff --git a/kona/crates/protocol/derive/src/stages/channel/channel_provider.rs b/rust/kona/crates/protocol/derive/src/stages/channel/channel_provider.rs similarity index 99% rename from kona/crates/protocol/derive/src/stages/channel/channel_provider.rs rename to rust/kona/crates/protocol/derive/src/stages/channel/channel_provider.rs index 688f9468a8c96..01feda60c1db9 100644 --- a/kona/crates/protocol/derive/src/stages/channel/channel_provider.rs +++ b/rust/kona/crates/protocol/derive/src/stages/channel/channel_provider.rs @@ -1,4 +1,4 @@ -//! This module contains the [ChannelProvider] stage. +//! This module contains the [`ChannelProvider`] stage. use super::{ChannelAssembler, ChannelBank, ChannelReaderProvider, NextFrameProvider}; use crate::{ diff --git a/kona/crates/protocol/derive/src/stages/channel/channel_reader.rs b/rust/kona/crates/protocol/derive/src/stages/channel/channel_reader.rs similarity index 99% rename from kona/crates/protocol/derive/src/stages/channel/channel_reader.rs rename to rust/kona/crates/protocol/derive/src/stages/channel/channel_reader.rs index 48aa0d293ba0f..c80b474540d0b 100644 --- a/kona/crates/protocol/derive/src/stages/channel/channel_reader.rs +++ b/rust/kona/crates/protocol/derive/src/stages/channel/channel_reader.rs @@ -98,7 +98,7 @@ impl

BatchStreamProvider for ChannelReader

where P: ChannelReaderProvider + OriginAdvancer + OriginProvider + SignalReceiver + Send + Debug, { - /// This method is called by the BatchStream if an invalid span batch is found. + /// This method is called by the `BatchStream` if an invalid span batch is found. /// In the case of an invalid span batch, the associated channel must be flushed. /// /// See: diff --git a/kona/crates/protocol/derive/src/stages/channel/mod.rs b/rust/kona/crates/protocol/derive/src/stages/channel/mod.rs similarity index 61% rename from kona/crates/protocol/derive/src/stages/channel/mod.rs rename to rust/kona/crates/protocol/derive/src/stages/channel/mod.rs index 85518fd5481a4..73b0aaa821fad 100644 --- a/kona/crates/protocol/derive/src/stages/channel/mod.rs +++ b/rust/kona/crates/protocol/derive/src/stages/channel/mod.rs @@ -1,15 +1,11 @@ //! Stages pertaining to the reading and decoding of channels. //! -//! Sitting after the [FrameQueue] stage, the [ChannelBank] and [ChannelAssembler] stages are -//! responsible for reading and decoding the [Frame]s into [Channel]s. The [ChannelReader] stage -//! is responsible for decoding the [Channel]s into [Batch]es, forwarding the [Batch]es to the -//! [BatchQueue] stage. -//! -//! [Frame]: kona_protocol::Frame -//! [Channel]: kona_protocol::Channel -//! [Batch]: kona_protocol::Batch -//! [FrameQueue]: crate::stages::FrameQueue -//! [BatchQueue]: crate::stages::BatchQueue +//! Sitting after the [`FrameQueue`](crate::stages::FrameQueue) stage, the [`ChannelBank`] and +//! [`ChannelAssembler`] stages are responsible for reading and decoding the [`Frame`]s into +//! [`Channel`](kona_protocol::Channel)s. The [`ChannelReader`] stage is responsible for decoding +//! the [`Channel`](kona_protocol::Channel)s into [`Batch`](kona_protocol::Batch)es, forwarding +//! the [`Batch`](kona_protocol::Batch)es to the +//! [`BatchQueue`](crate::stages::BatchQueue) stage. use crate::types::PipelineResult; use alloc::boxed::Box; diff --git a/kona/crates/protocol/derive/src/stages/frame_queue.rs b/rust/kona/crates/protocol/derive/src/stages/frame_queue.rs similarity index 99% rename from kona/crates/protocol/derive/src/stages/frame_queue.rs rename to rust/kona/crates/protocol/derive/src/stages/frame_queue.rs index 4a993a65c9ded..92518579a55d1 100644 --- a/kona/crates/protocol/derive/src/stages/frame_queue.rs +++ b/rust/kona/crates/protocol/derive/src/stages/frame_queue.rs @@ -1,4 +1,4 @@ -//! This module contains the [FrameQueue] stage of the derivation pipeline. +//! This module contains the [`FrameQueue`] stage of the derivation pipeline. use crate::{ NextFrameProvider, OriginAdvancer, OriginProvider, PipelineError, PipelineResult, Signal, diff --git a/kona/crates/protocol/derive/src/stages/l1_retrieval.rs b/rust/kona/crates/protocol/derive/src/stages/l1_retrieval.rs similarity index 96% rename from kona/crates/protocol/derive/src/stages/l1_retrieval.rs rename to rust/kona/crates/protocol/derive/src/stages/l1_retrieval.rs index f4c7541a955b7..bc302550ec128 100644 --- a/kona/crates/protocol/derive/src/stages/l1_retrieval.rs +++ b/rust/kona/crates/protocol/derive/src/stages/l1_retrieval.rs @@ -1,4 +1,4 @@ -//! Contains the [L1Retrieval] stage of the derivation pipeline. +//! Contains the [`L1Retrieval`] stage of the derivation pipeline. use crate::{ ActivationSignal, DataAvailabilityProvider, FrameQueueProvider, OriginAdvancer, OriginProvider, @@ -16,13 +16,13 @@ pub trait L1RetrievalProvider { /// Returns the next L1 [`BlockInfo`] in the [`PollingTraversal`] stage, if the stage is not /// complete. This function can only be called once while the stage is in progress, and will /// return [`None`] on subsequent calls unless the stage is reset or complete. If the stage - /// is complete and the [`BlockInfo`] has been consumed, an [PipelineError::Eof] error is + /// is complete and the [`BlockInfo`] has been consumed, a [`PipelineError::Eof`] error is /// returned. /// /// [`PollingTraversal`]: crate::PollingTraversal async fn next_l1_block(&mut self) -> PipelineResult>; - /// Returns the batcher [`Address`] from the [kona_genesis::SystemConfig]. + /// Returns the batcher [`Address`] from the [`kona_genesis::SystemConfig`]. fn batcher_addr(&self) -> Address; } @@ -94,7 +94,7 @@ where match self.provider.next(next, self.prev.batcher_addr()).await { Ok(data) => Ok(data), Err(e) => { - if let PipelineErrorKind::Temporary(PipelineError::Eof) = e { + if e == PipelineErrorKind::Temporary(PipelineError::Eof) { self.next = None; self.provider.clear(); } diff --git a/kona/crates/protocol/derive/src/stages/mod.rs b/rust/kona/crates/protocol/derive/src/stages/mod.rs similarity index 100% rename from kona/crates/protocol/derive/src/stages/mod.rs rename to rust/kona/crates/protocol/derive/src/stages/mod.rs diff --git a/kona/crates/protocol/derive/src/stages/traversal/indexed.rs b/rust/kona/crates/protocol/derive/src/stages/traversal/indexed.rs similarity index 99% rename from kona/crates/protocol/derive/src/stages/traversal/indexed.rs rename to rust/kona/crates/protocol/derive/src/stages/traversal/indexed.rs index c763788f0fcb3..5b940d8a3b033 100644 --- a/kona/crates/protocol/derive/src/stages/traversal/indexed.rs +++ b/rust/kona/crates/protocol/derive/src/stages/traversal/indexed.rs @@ -38,11 +38,11 @@ impl L1RetrievalProvider for IndexedTraversal { } async fn next_l1_block(&mut self) -> PipelineResult> { - if !self.done { + if self.done { + Err(PipelineError::Eof.temp()) + } else { self.done = true; Ok(self.block) - } else { - Err(PipelineError::Eof.temp()) } } } diff --git a/kona/crates/protocol/derive/src/stages/traversal/mod.rs b/rust/kona/crates/protocol/derive/src/stages/traversal/mod.rs similarity index 100% rename from kona/crates/protocol/derive/src/stages/traversal/mod.rs rename to rust/kona/crates/protocol/derive/src/stages/traversal/mod.rs diff --git a/kona/crates/protocol/derive/src/stages/traversal/polling.rs b/rust/kona/crates/protocol/derive/src/stages/traversal/polling.rs similarity index 99% rename from kona/crates/protocol/derive/src/stages/traversal/polling.rs rename to rust/kona/crates/protocol/derive/src/stages/traversal/polling.rs index 1c6fcdd4c2bdb..c31160fa2501e 100644 --- a/kona/crates/protocol/derive/src/stages/traversal/polling.rs +++ b/rust/kona/crates/protocol/derive/src/stages/traversal/polling.rs @@ -38,11 +38,11 @@ impl L1RetrievalProvider for PollingTraversal { } async fn next_l1_block(&mut self) -> PipelineResult> { - if !self.done { + if self.done { + Err(PipelineError::Eof.temp()) + } else { self.done = true; Ok(self.block) - } else { - Err(PipelineError::Eof.temp()) } } } diff --git a/kona/crates/protocol/derive/src/test_utils/attributes_queue.rs b/rust/kona/crates/protocol/derive/src/test_utils/attributes_queue.rs similarity index 100% rename from kona/crates/protocol/derive/src/test_utils/attributes_queue.rs rename to rust/kona/crates/protocol/derive/src/test_utils/attributes_queue.rs diff --git a/kona/crates/protocol/derive/src/test_utils/batch_provider.rs b/rust/kona/crates/protocol/derive/src/test_utils/batch_provider.rs similarity index 100% rename from kona/crates/protocol/derive/src/test_utils/batch_provider.rs rename to rust/kona/crates/protocol/derive/src/test_utils/batch_provider.rs diff --git a/kona/crates/protocol/derive/src/test_utils/batch_stream.rs b/rust/kona/crates/protocol/derive/src/test_utils/batch_stream.rs similarity index 100% rename from kona/crates/protocol/derive/src/test_utils/batch_stream.rs rename to rust/kona/crates/protocol/derive/src/test_utils/batch_stream.rs diff --git a/kona/crates/protocol/derive/src/test_utils/blob_provider.rs b/rust/kona/crates/protocol/derive/src/test_utils/blob_provider.rs similarity index 95% rename from kona/crates/protocol/derive/src/test_utils/blob_provider.rs rename to rust/kona/crates/protocol/derive/src/test_utils/blob_provider.rs index df3e2d9f04981..2fbeda0334733 100644 --- a/kona/crates/protocol/derive/src/test_utils/blob_provider.rs +++ b/rust/kona/crates/protocol/derive/src/test_utils/blob_provider.rs @@ -1,4 +1,4 @@ -//! An implementation of the [BlobProvider] trait for tests. +//! An implementation of the [`BlobProvider`] trait for tests. use crate::{BlobProvider, errors::BlobProviderError}; use alloc::{boxed::Box, vec::Vec}; diff --git a/kona/crates/protocol/derive/src/test_utils/chain_providers.rs b/rust/kona/crates/protocol/derive/src/test_utils/chain_providers.rs similarity index 99% rename from kona/crates/protocol/derive/src/test_utils/chain_providers.rs rename to rust/kona/crates/protocol/derive/src/test_utils/chain_providers.rs index 090eeb9804ffc..57d40ffeef474 100644 --- a/kona/crates/protocol/derive/src/test_utils/chain_providers.rs +++ b/rust/kona/crates/protocol/derive/src/test_utils/chain_providers.rs @@ -185,7 +185,7 @@ impl BatchValidationProvider for TestL2ChainProvider { self.blocks .iter() .find(|b| b.block_info.number == number) - .cloned() + .copied() .ok_or_else(|| TestProviderError::BlockNotFound) } diff --git a/kona/crates/protocol/derive/src/test_utils/channel_provider.rs b/rust/kona/crates/protocol/derive/src/test_utils/channel_provider.rs similarity index 94% rename from kona/crates/protocol/derive/src/test_utils/channel_provider.rs rename to rust/kona/crates/protocol/derive/src/test_utils/channel_provider.rs index 74211a1e5a7ee..e38732957ad6c 100644 --- a/kona/crates/protocol/derive/src/test_utils/channel_provider.rs +++ b/rust/kona/crates/protocol/derive/src/test_utils/channel_provider.rs @@ -1,6 +1,4 @@ -//! Mock testing utilities for the [ChannelBank] stage. -//! -//! [ChannelBank]: crate::stages::ChannelBank +//! Mock testing utilities for the [`ChannelBank`](crate::stages::ChannelBank) stage. use crate::{ errors::PipelineError, diff --git a/kona/crates/protocol/derive/src/test_utils/channel_reader.rs b/rust/kona/crates/protocol/derive/src/test_utils/channel_reader.rs similarity index 94% rename from kona/crates/protocol/derive/src/test_utils/channel_reader.rs rename to rust/kona/crates/protocol/derive/src/test_utils/channel_reader.rs index 5c3f23d1afba8..ae66a2c4a378e 100644 --- a/kona/crates/protocol/derive/src/test_utils/channel_reader.rs +++ b/rust/kona/crates/protocol/derive/src/test_utils/channel_reader.rs @@ -1,6 +1,4 @@ -//! Test utilities for the [ChannelReader] stage. -//! -//! [ChannelReader]: crate::stages::ChannelReader +//! Test utilities for the [`ChannelReader`](crate::stages::ChannelReader) stage. use crate::{ ChannelReaderProvider, OriginAdvancer, OriginProvider, PipelineError, PipelineResult, Signal, diff --git a/kona/crates/protocol/derive/src/test_utils/data_availability_provider.rs b/rust/kona/crates/protocol/derive/src/test_utils/data_availability_provider.rs similarity index 90% rename from kona/crates/protocol/derive/src/test_utils/data_availability_provider.rs rename to rust/kona/crates/protocol/derive/src/test_utils/data_availability_provider.rs index d4445e71750fd..93ab9e6dcce18 100644 --- a/kona/crates/protocol/derive/src/test_utils/data_availability_provider.rs +++ b/rust/kona/crates/protocol/derive/src/test_utils/data_availability_provider.rs @@ -1,4 +1,4 @@ -//! An implementation of the [DataAvailabilityProvider] trait for tests. +//! An implementation of the [`DataAvailabilityProvider`] trait for tests. use crate::{errors::PipelineError, traits::DataAvailabilityProvider, types::PipelineResult}; use alloc::{boxed::Box, vec::Vec}; diff --git a/kona/crates/protocol/derive/src/test_utils/frame_queue.rs b/rust/kona/crates/protocol/derive/src/test_utils/frame_queue.rs similarity index 100% rename from kona/crates/protocol/derive/src/test_utils/frame_queue.rs rename to rust/kona/crates/protocol/derive/src/test_utils/frame_queue.rs diff --git a/kona/crates/protocol/derive/src/test_utils/frames.rs b/rust/kona/crates/protocol/derive/src/test_utils/frames.rs similarity index 97% rename from kona/crates/protocol/derive/src/test_utils/frames.rs rename to rust/kona/crates/protocol/derive/src/test_utils/frames.rs index aee7e783624dc..987bfb9bb1636 100644 --- a/kona/crates/protocol/derive/src/test_utils/frames.rs +++ b/rust/kona/crates/protocol/derive/src/test_utils/frames.rs @@ -22,7 +22,7 @@ pub struct FrameQueueBuilder { fn encode_frames(frames: &[Frame]) -> Bytes { let mut bytes = Vec::new(); bytes.extend_from_slice(&[DERIVATION_VERSION_0]); - for frame in frames.iter() { + for frame in frames { bytes.extend_from_slice(&frame.encode()); } Bytes::from(bytes) @@ -107,10 +107,10 @@ impl FrameQueueAsserter { /// Asserts that holocene is active. pub fn holocene_active(&self, active: bool) { let holocene = self.inner.is_holocene_active(self.inner.origin().unwrap_or_default()); - if !active { - assert!(!holocene); - } else { + if active { assert!(holocene); + } else { + assert!(!holocene); } } @@ -122,7 +122,7 @@ impl FrameQueueAsserter { /// Asserts that the frame queue produces the expected frames. pub async fn next_frames(mut self) { - for eframe in self.expected_frames.into_iter() { + for eframe in self.expected_frames { let frame = self.inner.next_frame().await.expect("unexpected frame"); assert_eq!(frame, eframe); } diff --git a/kona/crates/protocol/derive/src/test_utils/macros.rs b/rust/kona/crates/protocol/derive/src/test_utils/macros.rs similarity index 77% rename from kona/crates/protocol/derive/src/test_utils/macros.rs rename to rust/kona/crates/protocol/derive/src/test_utils/macros.rs index 4fbe58e5ff7cd..559fc2d1a078a 100644 --- a/kona/crates/protocol/derive/src/test_utils/macros.rs +++ b/rust/kona/crates/protocol/derive/src/test_utils/macros.rs @@ -1,6 +1,6 @@ //! Macros used across test utilities. -/// A shorthand syntax for constructing [kona_protocol::Frame]s. +/// A shorthand syntax for constructing [`kona_protocol::Frame`]s. #[macro_export] macro_rules! frame { ($id:expr, $number:expr, $data:expr, $is_last:expr) => { @@ -8,7 +8,7 @@ macro_rules! frame { }; } -/// A shorthand syntax for constructing a list of [kona_protocol::Frame]s. +/// A shorthand syntax for constructing a list of [`kona_protocol::Frame`]s. #[macro_export] macro_rules! frames { ($id:expr, $number:expr, $data:expr, $count:expr) => {{ diff --git a/kona/crates/protocol/derive/src/test_utils/mod.rs b/rust/kona/crates/protocol/derive/src/test_utils/mod.rs similarity index 100% rename from kona/crates/protocol/derive/src/test_utils/mod.rs rename to rust/kona/crates/protocol/derive/src/test_utils/mod.rs diff --git a/kona/crates/protocol/derive/src/test_utils/pipeline.rs b/rust/kona/crates/protocol/derive/src/test_utils/pipeline.rs similarity index 100% rename from kona/crates/protocol/derive/src/test_utils/pipeline.rs rename to rust/kona/crates/protocol/derive/src/test_utils/pipeline.rs diff --git a/kona/crates/protocol/derive/src/test_utils/sys_config_fetcher.rs b/rust/kona/crates/protocol/derive/src/test_utils/sys_config_fetcher.rs similarity index 99% rename from kona/crates/protocol/derive/src/test_utils/sys_config_fetcher.rs rename to rust/kona/crates/protocol/derive/src/test_utils/sys_config_fetcher.rs index 65f1d7d121aca..c10d25144cd87 100644 --- a/kona/crates/protocol/derive/src/test_utils/sys_config_fetcher.rs +++ b/rust/kona/crates/protocol/derive/src/test_utils/sys_config_fetcher.rs @@ -69,7 +69,7 @@ impl L2ChainProvider for TestSystemConfigL2Fetcher { ) -> Result::Error> { self.system_configs .get(&number) - .cloned() + .copied() .ok_or_else(|| TestSystemConfigL2FetcherError::NotFound(number)) } } diff --git a/kona/crates/protocol/derive/src/test_utils/tracing.rs b/rust/kona/crates/protocol/derive/src/test_utils/tracing.rs similarity index 94% rename from kona/crates/protocol/derive/src/test_utils/tracing.rs rename to rust/kona/crates/protocol/derive/src/test_utils/tracing.rs index dec0208410512..d335ad9de674e 100644 --- a/kona/crates/protocol/derive/src/test_utils/tracing.rs +++ b/rust/kona/crates/protocol/derive/src/test_utils/tracing.rs @@ -16,7 +16,8 @@ impl TraceStorage { self.0 .lock() .iter() - .filter_map(|(l, message)| if *l == level { Some(message.clone()) } else { None }) + .filter(|&(l, _message)| *l == level) + .map(|(_l, message)| message.clone()) .collect() } diff --git a/kona/crates/protocol/derive/src/test_utils/traversal.rs b/rust/kona/crates/protocol/derive/src/test_utils/traversal.rs similarity index 100% rename from kona/crates/protocol/derive/src/test_utils/traversal.rs rename to rust/kona/crates/protocol/derive/src/test_utils/traversal.rs diff --git a/kona/crates/protocol/derive/src/traits/attributes.rs b/rust/kona/crates/protocol/derive/src/traits/attributes.rs similarity index 100% rename from kona/crates/protocol/derive/src/traits/attributes.rs rename to rust/kona/crates/protocol/derive/src/traits/attributes.rs diff --git a/kona/crates/protocol/derive/src/traits/data_sources.rs b/rust/kona/crates/protocol/derive/src/traits/data_sources.rs similarity index 93% rename from kona/crates/protocol/derive/src/traits/data_sources.rs rename to rust/kona/crates/protocol/derive/src/traits/data_sources.rs index 6368a72fe0492..c9b68d1d1eb5b 100644 --- a/kona/crates/protocol/derive/src/traits/data_sources.rs +++ b/rust/kona/crates/protocol/derive/src/traits/data_sources.rs @@ -9,7 +9,7 @@ use async_trait::async_trait; use core::fmt::Display; use kona_protocol::BlockInfo; -/// The BlobProvider trait specifies the functionality of a data source that can provide blobs. +/// The `BlobProvider` trait specifies the functionality of a data source that can provide blobs. #[async_trait] pub trait BlobProvider { /// The error type for the [`BlobProvider`]. diff --git a/kona/crates/protocol/derive/src/traits/mod.rs b/rust/kona/crates/protocol/derive/src/traits/mod.rs similarity index 100% rename from kona/crates/protocol/derive/src/traits/mod.rs rename to rust/kona/crates/protocol/derive/src/traits/mod.rs diff --git a/kona/crates/protocol/derive/src/traits/pipeline.rs b/rust/kona/crates/protocol/derive/src/traits/pipeline.rs similarity index 100% rename from kona/crates/protocol/derive/src/traits/pipeline.rs rename to rust/kona/crates/protocol/derive/src/traits/pipeline.rs diff --git a/kona/crates/protocol/derive/src/traits/providers.rs b/rust/kona/crates/protocol/derive/src/traits/providers.rs similarity index 100% rename from kona/crates/protocol/derive/src/traits/providers.rs rename to rust/kona/crates/protocol/derive/src/traits/providers.rs diff --git a/kona/crates/protocol/derive/src/traits/reset.rs b/rust/kona/crates/protocol/derive/src/traits/reset.rs similarity index 100% rename from kona/crates/protocol/derive/src/traits/reset.rs rename to rust/kona/crates/protocol/derive/src/traits/reset.rs diff --git a/kona/crates/protocol/derive/src/traits/stages.rs b/rust/kona/crates/protocol/derive/src/traits/stages.rs similarity index 100% rename from kona/crates/protocol/derive/src/traits/stages.rs rename to rust/kona/crates/protocol/derive/src/traits/stages.rs diff --git a/kona/crates/protocol/derive/src/types/mod.rs b/rust/kona/crates/protocol/derive/src/types/mod.rs similarity index 100% rename from kona/crates/protocol/derive/src/types/mod.rs rename to rust/kona/crates/protocol/derive/src/types/mod.rs diff --git a/kona/crates/protocol/derive/src/types/results.rs b/rust/kona/crates/protocol/derive/src/types/results.rs similarity index 100% rename from kona/crates/protocol/derive/src/types/results.rs rename to rust/kona/crates/protocol/derive/src/types/results.rs diff --git a/kona/crates/protocol/derive/src/types/signals.rs b/rust/kona/crates/protocol/derive/src/types/signals.rs similarity index 96% rename from kona/crates/protocol/derive/src/types/signals.rs rename to rust/kona/crates/protocol/derive/src/types/signals.rs index 0f91294aa8f9f..35185f90d2437 100644 --- a/kona/crates/protocol/derive/src/types/signals.rs +++ b/rust/kona/crates/protocol/derive/src/types/signals.rs @@ -56,7 +56,7 @@ pub struct ResetSignal { } impl ResetSignal { - /// Creates a new [Signal::Reset] from the [`ResetSignal`]. + /// Creates a new [`Signal::Reset`] from the [`ResetSignal`]. pub const fn signal(self) -> Signal { Signal::Reset(self) } @@ -79,7 +79,7 @@ pub struct ActivationSignal { } impl ActivationSignal { - /// Creates a new [Signal::Activation] from the [`ActivationSignal`]. + /// Creates a new [`Signal::Activation`] from the [`ActivationSignal`]. pub const fn signal(self) -> Signal { Signal::Activation(self) } diff --git a/kona/crates/protocol/derive/testdata/batch.hex b/rust/kona/crates/protocol/derive/testdata/batch.hex similarity index 100% rename from kona/crates/protocol/derive/testdata/batch.hex rename to rust/kona/crates/protocol/derive/testdata/batch.hex diff --git a/kona/crates/protocol/derive/testdata/raw_batcher_tx.hex b/rust/kona/crates/protocol/derive/testdata/raw_batcher_tx.hex similarity index 100% rename from kona/crates/protocol/derive/testdata/raw_batcher_tx.hex rename to rust/kona/crates/protocol/derive/testdata/raw_batcher_tx.hex diff --git a/kona/crates/protocol/genesis/Cargo.toml b/rust/kona/crates/protocol/genesis/Cargo.toml similarity index 99% rename from kona/crates/protocol/genesis/Cargo.toml rename to rust/kona/crates/protocol/genesis/Cargo.toml index c41f2e7db4e68..87446eca09059 100644 --- a/kona/crates/protocol/genesis/Cargo.toml +++ b/rust/kona/crates/protocol/genesis/Cargo.toml @@ -64,6 +64,7 @@ std = [ "op-revm?/std", "serde?/std", "thiserror/std", + "tabled?/std" ] arbitrary = [ "alloy-chains/arbitrary", diff --git a/kona/crates/protocol/genesis/README.md b/rust/kona/crates/protocol/genesis/README.md similarity index 100% rename from kona/crates/protocol/genesis/README.md rename to rust/kona/crates/protocol/genesis/README.md diff --git a/kona/crates/protocol/genesis/src/chain/addresses.rs b/rust/kona/crates/protocol/genesis/src/chain/addresses.rs similarity index 100% rename from kona/crates/protocol/genesis/src/chain/addresses.rs rename to rust/kona/crates/protocol/genesis/src/chain/addresses.rs diff --git a/kona/crates/protocol/genesis/src/chain/altda.rs b/rust/kona/crates/protocol/genesis/src/chain/altda.rs similarity index 90% rename from kona/crates/protocol/genesis/src/chain/altda.rs rename to rust/kona/crates/protocol/genesis/src/chain/altda.rs index 42dfcd869b13e..a3cf4815a7ad3 100644 --- a/kona/crates/protocol/genesis/src/chain/altda.rs +++ b/rust/kona/crates/protocol/genesis/src/chain/altda.rs @@ -1,9 +1,9 @@ -//! Contains the AltDA config type. +//! Contains the `AltDA` config type. use alloc::string::String; use alloy_primitives::Address; -/// AltDA configuration. +/// `AltDA` configuration. /// /// See: #[derive(Debug, Clone, Default, Hash, Eq, PartialEq)] @@ -11,14 +11,14 @@ use alloy_primitives::Address; #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] #[cfg_attr(feature = "serde", serde(deny_unknown_fields))] pub struct AltDAConfig { - /// AltDA challenge address + /// `AltDA` challenge address #[cfg_attr(feature = "serde", serde(alias = "da_challenge_contract_address"))] pub da_challenge_address: Option

, - /// AltDA challenge window time (in seconds) + /// `AltDA` challenge window time (in seconds) pub da_challenge_window: Option, - /// AltDA resolution window time (in seconds) + /// `AltDA` resolution window time (in seconds) pub da_resolve_window: Option, - /// AltDA commitment type + /// `AltDA` commitment type pub da_commitment_type: Option, } diff --git a/kona/crates/protocol/genesis/src/chain/config.rs b/rust/kona/crates/protocol/genesis/src/chain/config.rs similarity index 99% rename from kona/crates/protocol/genesis/src/chain/config.rs rename to rust/kona/crates/protocol/genesis/src/chain/config.rs index 29c4e30b2714f..e15b892f2f9d2 100644 --- a/kona/crates/protocol/genesis/src/chain/config.rs +++ b/rust/kona/crates/protocol/genesis/src/chain/config.rs @@ -86,7 +86,7 @@ pub struct ChainConfig { /// The maximum sequencer drift in seconds. #[cfg_attr(feature = "serde", serde(rename = "max_sequencer_drift"))] pub max_sequencer_drift: u64, - /// Gas paying token metadata. Not consumed by downstream OPStack components. + /// Gas paying token metadata. Not consumed by downstream `OPStack` components. #[cfg_attr(feature = "serde", serde(rename = "GasPayingToken", alias = "gas_paying_token"))] pub gas_paying_token: Option
, /// Hardfork Config. These values may override the superchain-wide defaults. diff --git a/kona/crates/protocol/genesis/src/chain/hardfork.rs b/rust/kona/crates/protocol/genesis/src/chain/hardfork.rs similarity index 95% rename from kona/crates/protocol/genesis/src/chain/hardfork.rs rename to rust/kona/crates/protocol/genesis/src/chain/hardfork.rs index b63de5eccce59..7bd2e2bf00189 100644 --- a/kona/crates/protocol/genesis/src/chain/hardfork.rs +++ b/rust/kona/crates/protocol/genesis/src/chain/hardfork.rs @@ -14,37 +14,37 @@ pub struct HardForkConfig { /// `regolith_time` sets the activation time of the Regolith network-upgrade: /// a pre-mainnet Bedrock change that addresses findings of the Sherlock contest related to /// deposit attributes. "Regolith" is the loose deposited rock that sits on top of Bedrock. - /// Active if regolith_time != None && L2 block timestamp >= Some(regolith_time), inactive + /// Active if `regolith_time` != None && L2 block timestamp >= `Some(regolith_time)`, inactive /// otherwise. #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))] pub regolith_time: Option, /// `canyon_time` sets the activation time of the Canyon network upgrade. - /// Active if `canyon_time` != None && L2 block timestamp >= Some(canyon_time), inactive + /// Active if `canyon_time` != None && L2 block timestamp >= `Some(canyon_time)`, inactive /// otherwise. #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))] pub canyon_time: Option, /// `delta_time` sets the activation time of the Delta network upgrade. - /// Active if `delta_time` != None && L2 block timestamp >= Some(delta_time), inactive + /// Active if `delta_time` != None && L2 block timestamp >= `Some(delta_time)`, inactive /// otherwise. #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))] pub delta_time: Option, /// `ecotone_time` sets the activation time of the Ecotone network upgrade. - /// Active if `ecotone_time` != None && L2 block timestamp >= Some(ecotone_time), inactive + /// Active if `ecotone_time` != None && L2 block timestamp >= `Some(ecotone_time)`, inactive /// otherwise. #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))] pub ecotone_time: Option, /// `fjord_time` sets the activation time of the Fjord network upgrade. - /// Active if `fjord_time` != None && L2 block timestamp >= Some(fjord_time), inactive + /// Active if `fjord_time` != None && L2 block timestamp >= `Some(fjord_time)`, inactive /// otherwise. #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))] pub fjord_time: Option, /// `granite_time` sets the activation time for the Granite network upgrade. - /// Active if `granite_time` != None && L2 block timestamp >= Some(granite_time), inactive + /// Active if `granite_time` != None && L2 block timestamp >= `Some(granite_time)`, inactive /// otherwise. #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))] pub granite_time: Option, /// `holocene_time` sets the activation time for the Holocene network upgrade. - /// Active if `holocene_time` != None && L2 block timestamp >= Some(holocene_time), inactive + /// Active if `holocene_time` != None && L2 block timestamp >= `Some(holocene_time)`, inactive /// otherwise. #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))] pub holocene_time: Option, @@ -54,21 +54,21 @@ pub struct HardForkConfig { /// <=v1.11.1 sequencing the network. /// /// Active if `pectra_blob_schedule_time` != None && L2 block timestamp >= - /// Some(pectra_blob_schedule_time), inactive otherwise. + /// `Some(pectra_blob_schedule_time)`, inactive otherwise. #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))] pub pectra_blob_schedule_time: Option, /// `isthmus_time` sets the activation time for the Isthmus network upgrade. - /// Active if `isthmus_time` != None && L2 block timestamp >= Some(isthmus_time), inactive + /// Active if `isthmus_time` != None && L2 block timestamp >= `Some(isthmus_time)`, inactive /// otherwise. #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))] pub isthmus_time: Option, /// `jovian_time` sets the activation time for the Jovian network upgrade. - /// Active if `jovian_time` != None && L2 block timestamp >= Some(jovian_time), inactive + /// Active if `jovian_time` != None && L2 block timestamp >= `Some(jovian_time)`, inactive /// otherwise. #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))] pub jovian_time: Option, /// `interop_time` sets the activation time for the Interop network upgrade. - /// Active if `interop_time` != None && L2 block timestamp >= Some(interop_time), inactive + /// Active if `interop_time` != None && L2 block timestamp >= `Some(interop_time)`, inactive /// otherwise. #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))] pub interop_time: Option, diff --git a/kona/crates/protocol/genesis/src/chain/mod.rs b/rust/kona/crates/protocol/genesis/src/chain/mod.rs similarity index 100% rename from kona/crates/protocol/genesis/src/chain/mod.rs rename to rust/kona/crates/protocol/genesis/src/chain/mod.rs diff --git a/kona/crates/protocol/genesis/src/chain/roles.rs b/rust/kona/crates/protocol/genesis/src/chain/roles.rs similarity index 100% rename from kona/crates/protocol/genesis/src/chain/roles.rs rename to rust/kona/crates/protocol/genesis/src/chain/roles.rs diff --git a/kona/crates/protocol/genesis/src/genesis.rs b/rust/kona/crates/protocol/genesis/src/genesis.rs similarity index 100% rename from kona/crates/protocol/genesis/src/genesis.rs rename to rust/kona/crates/protocol/genesis/src/genesis.rs diff --git a/kona/crates/protocol/genesis/src/lib.rs b/rust/kona/crates/protocol/genesis/src/lib.rs similarity index 98% rename from kona/crates/protocol/genesis/src/lib.rs rename to rust/kona/crates/protocol/genesis/src/lib.rs index ad10131f19534..524c4b4fba3d7 100644 --- a/kona/crates/protocol/genesis/src/lib.rs +++ b/rust/kona/crates/protocol/genesis/src/lib.rs @@ -4,7 +4,7 @@ html_favicon_url = "https://raw.githubusercontent.com/op-rs/kona/main/assets/favicon.ico", issue_tracker_base_url = "https://github.com/op-rs/kona/issues/" )] -#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))] +#![cfg_attr(docsrs, feature(doc_cfg))] #![cfg_attr(not(feature = "std"), no_std)] extern crate alloc; diff --git a/kona/crates/protocol/genesis/src/params.rs b/rust/kona/crates/protocol/genesis/src/params.rs similarity index 95% rename from kona/crates/protocol/genesis/src/params.rs rename to rust/kona/crates/protocol/genesis/src/params.rs index 5b44dd9a8cf77..e16dd3b6332bb 100644 --- a/kona/crates/protocol/genesis/src/params.rs +++ b/rust/kona/crates/protocol/genesis/src/params.rs @@ -2,9 +2,7 @@ use alloy_eips::eip1559::BaseFeeParams; -use crate::{ - BASE_MAINNET_CHAIN_ID, BASE_SEPOLIA_CHAIN_ID, OP_MAINNET_CHAIN_ID, OP_SEPOLIA_CHAIN_ID, -}; +use crate::{BASE_MAINNET_CHAIN_ID, BASE_SEPOLIA_CHAIN_ID, OP_SEPOLIA_CHAIN_ID}; /// Base fee max change denominator for Optimism Mainnet as defined in the Optimism /// [transaction costs](https://docs.optimism.io/app-developers/transactions/fees) doc. @@ -93,9 +91,7 @@ pub const OP_MAINNET_BASE_FEE_PARAMS_CANYON: BaseFeeParams = BaseFeeParams { /// Returns the [`BaseFeeParams`] for the given chain id. pub const fn base_fee_params(chain_id: u64) -> BaseFeeParams { match chain_id { - OP_MAINNET_CHAIN_ID => OP_MAINNET_BASE_FEE_PARAMS, OP_SEPOLIA_CHAIN_ID => OP_SEPOLIA_BASE_FEE_PARAMS, - BASE_MAINNET_CHAIN_ID => OP_MAINNET_BASE_FEE_PARAMS, BASE_SEPOLIA_CHAIN_ID => BASE_SEPOLIA_BASE_FEE_PARAMS, _ => OP_MAINNET_BASE_FEE_PARAMS, } @@ -104,9 +100,7 @@ pub const fn base_fee_params(chain_id: u64) -> BaseFeeParams { /// Returns the [`BaseFeeParams`] for the given chain id, for canyon hardfork. pub const fn base_fee_params_canyon(chain_id: u64) -> BaseFeeParams { match chain_id { - OP_MAINNET_CHAIN_ID => OP_MAINNET_BASE_FEE_PARAMS_CANYON, OP_SEPOLIA_CHAIN_ID => OP_SEPOLIA_BASE_FEE_PARAMS_CANYON, - BASE_MAINNET_CHAIN_ID => OP_MAINNET_BASE_FEE_PARAMS_CANYON, BASE_SEPOLIA_CHAIN_ID => BASE_SEPOLIA_BASE_FEE_PARAMS_CANYON, _ => OP_MAINNET_BASE_FEE_PARAMS_CANYON, } @@ -115,7 +109,6 @@ pub const fn base_fee_params_canyon(chain_id: u64) -> BaseFeeParams { /// Returns the [`BaseFeeConfig`] for the given chain id. pub const fn base_fee_config(chain_id: u64) -> BaseFeeConfig { match chain_id { - OP_MAINNET_CHAIN_ID => OP_MAINNET_BASE_FEE_CONFIG, OP_SEPOLIA_CHAIN_ID => OP_SEPOLIA_BASE_FEE_CONFIG, BASE_MAINNET_CHAIN_ID => BASE_MAINNET_BASE_FEE_CONFIG, BASE_SEPOLIA_CHAIN_ID => BASE_SEPOLIA_BASE_FEE_CONFIG, @@ -186,7 +179,7 @@ impl BaseFeeConfig { } } - /// Returns the [BaseFeeParams] before Canyon hardfork. + /// Returns the [`BaseFeeParams`] before Canyon hardfork. pub const fn pre_canyon_params(&self) -> BaseFeeParams { BaseFeeParams { max_change_denominator: self.eip1559_denominator as u128, @@ -194,7 +187,7 @@ impl BaseFeeConfig { } } - /// Returns the [BaseFeeParams] since Canyon hardfork. + /// Returns the [`BaseFeeParams`] since Canyon hardfork. pub const fn post_canyon_params(&self) -> BaseFeeParams { BaseFeeParams { max_change_denominator: self.eip1559_denominator_canyon as u128, @@ -206,6 +199,7 @@ impl BaseFeeConfig { #[cfg(test)] mod tests { use super::*; + use crate::OP_MAINNET_CHAIN_ID; #[test] fn test_base_fee_params_from_chain_id() { diff --git a/kona/crates/protocol/genesis/src/rollup.rs b/rust/kona/crates/protocol/genesis/src/rollup.rs similarity index 98% rename from kona/crates/protocol/genesis/src/rollup.rs rename to rust/kona/crates/protocol/genesis/src/rollup.rs index a6048d51e5dec..8691197f5cd87 100644 --- a/kona/crates/protocol/genesis/src/rollup.rs +++ b/rust/kona/crates/protocol/genesis/src/rollup.rs @@ -40,7 +40,7 @@ pub struct RollupConfig { pub genesis: ChainGenesis, /// The block time of the L2, in seconds. pub block_time: u64, - /// Sequencer batches may not be more than MaxSequencerDrift seconds after + /// Sequencer batches may not be more than `MaxSequencerDrift` seconds after /// the L1 timestamp of the sequencing window end. /// /// Note: When L1 has many 1 second consecutive blocks, and L2 grows at fixed 2 seconds, @@ -355,7 +355,7 @@ impl RollupConfig { } } - /// Returns the [HardForkConfig] using [RollupConfig] timestamps. + /// Returns the [`HardForkConfig`] using [`RollupConfig`] timestamps. #[deprecated(since = "0.1.0", note = "Use the `hardforks` field instead.")] pub const fn hardfork_config(&self) -> HardForkConfig { self.hardforks @@ -425,37 +425,37 @@ impl OpHardforks for RollupConfig { .hardforks .regolith_time .map(ForkCondition::Timestamp) - .unwrap_or(self.op_fork_activation(OpHardfork::Canyon)), + .unwrap_or_else(|| self.op_fork_activation(OpHardfork::Canyon)), OpHardfork::Canyon => self .hardforks .canyon_time .map(ForkCondition::Timestamp) - .unwrap_or(self.op_fork_activation(OpHardfork::Ecotone)), + .unwrap_or_else(|| self.op_fork_activation(OpHardfork::Ecotone)), OpHardfork::Ecotone => self .hardforks .ecotone_time .map(ForkCondition::Timestamp) - .unwrap_or(self.op_fork_activation(OpHardfork::Fjord)), + .unwrap_or_else(|| self.op_fork_activation(OpHardfork::Fjord)), OpHardfork::Fjord => self .hardforks .fjord_time .map(ForkCondition::Timestamp) - .unwrap_or(self.op_fork_activation(OpHardfork::Granite)), + .unwrap_or_else(|| self.op_fork_activation(OpHardfork::Granite)), OpHardfork::Granite => self .hardforks .granite_time .map(ForkCondition::Timestamp) - .unwrap_or(self.op_fork_activation(OpHardfork::Holocene)), + .unwrap_or_else(|| self.op_fork_activation(OpHardfork::Holocene)), OpHardfork::Holocene => self .hardforks .holocene_time .map(ForkCondition::Timestamp) - .unwrap_or(self.op_fork_activation(OpHardfork::Isthmus)), + .unwrap_or_else(|| self.op_fork_activation(OpHardfork::Isthmus)), OpHardfork::Isthmus => self .hardforks .isthmus_time .map(ForkCondition::Timestamp) - .unwrap_or(self.op_fork_activation(OpHardfork::Jovian)), + .unwrap_or_else(|| self.op_fork_activation(OpHardfork::Jovian)), OpHardfork::Jovian => self .hardforks .jovian_time diff --git a/kona/crates/protocol/genesis/src/superchain/chain.rs b/rust/kona/crates/protocol/genesis/src/superchain/chain.rs similarity index 100% rename from kona/crates/protocol/genesis/src/superchain/chain.rs rename to rust/kona/crates/protocol/genesis/src/superchain/chain.rs diff --git a/kona/crates/protocol/genesis/src/superchain/chain_list.rs b/rust/kona/crates/protocol/genesis/src/superchain/chain_list.rs similarity index 98% rename from kona/crates/protocol/genesis/src/superchain/chain_list.rs rename to rust/kona/crates/protocol/genesis/src/superchain/chain_list.rs index 5ec99d04900fd..8115ba9ec6959 100644 --- a/kona/crates/protocol/genesis/src/superchain/chain_list.rs +++ b/rust/kona/crates/protocol/genesis/src/superchain/chain_list.rs @@ -27,7 +27,7 @@ impl ChainList { self.chains.iter().find(|c| c.chain_id == chain_id) } - /// Fetch a [Chain] by the corresponding [AlloyChain] + /// Fetch a [Chain] by the corresponding [`AlloyChain`] pub fn get_chain_by_alloy_ident(&self, chain: &AlloyChain) -> Option<&Chain> { self.get_chain_by_id(chain.id()) } diff --git a/kona/crates/protocol/genesis/src/superchain/chains.rs b/rust/kona/crates/protocol/genesis/src/superchain/chains.rs similarity index 100% rename from kona/crates/protocol/genesis/src/superchain/chains.rs rename to rust/kona/crates/protocol/genesis/src/superchain/chains.rs diff --git a/kona/crates/protocol/genesis/src/superchain/config.rs b/rust/kona/crates/protocol/genesis/src/superchain/config.rs similarity index 100% rename from kona/crates/protocol/genesis/src/superchain/config.rs rename to rust/kona/crates/protocol/genesis/src/superchain/config.rs diff --git a/kona/crates/protocol/genesis/src/superchain/info.rs b/rust/kona/crates/protocol/genesis/src/superchain/info.rs similarity index 100% rename from kona/crates/protocol/genesis/src/superchain/info.rs rename to rust/kona/crates/protocol/genesis/src/superchain/info.rs diff --git a/kona/crates/protocol/genesis/src/superchain/level.rs b/rust/kona/crates/protocol/genesis/src/superchain/level.rs similarity index 100% rename from kona/crates/protocol/genesis/src/superchain/level.rs rename to rust/kona/crates/protocol/genesis/src/superchain/level.rs diff --git a/kona/crates/protocol/genesis/src/superchain/mod.rs b/rust/kona/crates/protocol/genesis/src/superchain/mod.rs similarity index 100% rename from kona/crates/protocol/genesis/src/superchain/mod.rs rename to rust/kona/crates/protocol/genesis/src/superchain/mod.rs diff --git a/kona/crates/protocol/genesis/src/system/config.rs b/rust/kona/crates/protocol/genesis/src/system/config.rs similarity index 98% rename from kona/crates/protocol/genesis/src/system/config.rs rename to rust/kona/crates/protocol/genesis/src/system/config.rs index bbf94cb955935..2a6b93445ddd0 100644 --- a/kona/crates/protocol/genesis/src/system/config.rs +++ b/rust/kona/crates/protocol/genesis/src/system/config.rs @@ -38,11 +38,11 @@ pub struct SystemConfig { /// The operator fee constant (isthmus hardfork) pub operator_fee_constant: Option, /// Min base fee (jovian hardfork) - /// Note: according to the [spec](https://github.com/ethereum-optimism/specs/blob/main/specs/protocol/jovian/system-config.md#initialization), as long as the MinBaseFee is not + /// Note: according to the [spec](https://github.com/ethereum-optimism/specs/blob/main/specs/protocol/jovian/system-config.md#initialization), as long as the `MinBaseFee` is not /// explicitly set, the default value (`0`) will be systematically applied. pub min_base_fee: Option, /// DA footprint gas scalar (Jovian hardfork) - /// Note: according to the [spec](https://github.com/ethereum-optimism/specs/blob/main/specs/protocol/jovian/system-config.md#initialization), as long as the DAFootprintGasScalar is not + /// Note: according to the [spec](https://github.com/ethereum-optimism/specs/blob/main/specs/protocol/jovian/system-config.md#initialization), as long as the `DAFootprintGasScalar` is not /// explicitly set, the default value (`400`) will be systematically applied. pub da_footprint_gas_scalar: Option, } @@ -147,7 +147,7 @@ impl SystemConfig { Ok(updated) } - /// Returns the eip1559 parameters from a [SystemConfig] encoded as a [B64]. + /// Returns the eip1559 parameters from a [`SystemConfig`] encoded as a [B64]. pub fn eip_1559_params( &self, rollup_config: &RollupConfig, @@ -173,7 +173,7 @@ impl SystemConfig { } /// Decodes an EVM log entry emitted by the system config contract and applies it as a - /// [SystemConfig] change. + /// [`SystemConfig`] change. /// /// Parse log data for: /// diff --git a/kona/crates/protocol/genesis/src/system/errors.rs b/rust/kona/crates/protocol/genesis/src/system/errors.rs similarity index 94% rename from kona/crates/protocol/genesis/src/system/errors.rs rename to rust/kona/crates/protocol/genesis/src/system/errors.rs index c7992d6be0dd9..54e65f4a79867 100644 --- a/kona/crates/protocol/genesis/src/system/errors.rs +++ b/rust/kona/crates/protocol/genesis/src/system/errors.rs @@ -3,7 +3,7 @@ use alloy_primitives::B256; use derive_more::From; -/// An error for processing the [crate::SystemConfig] update log. +/// An error for processing the [`crate::SystemConfig`] update log. #[derive(Debug, From, thiserror::Error, Clone, Copy, PartialEq, Eq)] #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] pub enum SystemConfigUpdateError { @@ -57,7 +57,7 @@ pub enum LogProcessingError { InvalidSystemConfigUpdateType(u64), } -/// An error for updating the batcher address on the [crate::SystemConfig]. +/// An error for updating the batcher address on the [`crate::SystemConfig`]. #[derive(Debug, thiserror::Error, Clone, Copy, PartialEq, Eq)] #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] pub enum BatcherUpdateError { @@ -81,7 +81,7 @@ pub enum BatcherUpdateError { BatcherAddressDecodingError, } -/// An error for updating the unsafe block signer address on the [crate::SystemConfig]. +/// An error for updating the unsafe block signer address on the [`crate::SystemConfig`]. #[derive(Debug, thiserror::Error, Clone, Copy, PartialEq, Eq)] #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] pub enum UnsafeBlockSignerUpdateError { @@ -105,7 +105,7 @@ pub enum UnsafeBlockSignerUpdateError { UnsafeBlockSignerAddressDecodingError, } -/// An error for updating the gas config on the [crate::SystemConfig]. +/// An error for updating the gas config on the [`crate::SystemConfig`]. #[derive(Debug, thiserror::Error, Clone, Copy, PartialEq, Eq)] #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] pub enum GasConfigUpdateError { @@ -132,7 +132,7 @@ pub enum GasConfigUpdateError { ScalarDecodingError, } -/// An error for updating the min base fee on the [crate::SystemConfig]. +/// An error for updating the min base fee on the [`crate::SystemConfig`]. #[derive(Debug, thiserror::Error, Clone, Copy, PartialEq, Eq)] #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] pub enum MinBaseFeeUpdateError { @@ -156,7 +156,7 @@ pub enum MinBaseFeeUpdateError { MinBaseFeeDecodingError, } -/// An error for updating the da footprint gas scalar on the [crate::SystemConfig]. +/// An error for updating the da footprint gas scalar on the [`crate::SystemConfig`]. #[derive(Debug, thiserror::Error, Clone, Copy, PartialEq, Eq)] #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] pub enum DaFootprintGasScalarUpdateError { @@ -181,7 +181,7 @@ pub enum DaFootprintGasScalarUpdateError { DaFootprintGasScalarDecodingError, } -/// An error for updating the gas limit on the [crate::SystemConfig]. +/// An error for updating the gas limit on the [`crate::SystemConfig`]. #[derive(Debug, thiserror::Error, Clone, Copy, PartialEq, Eq)] #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] pub enum GasLimitUpdateError { @@ -205,7 +205,7 @@ pub enum GasLimitUpdateError { GasLimitDecodingError, } -/// An error for updating the EIP-1559 parameters on the [crate::SystemConfig]. +/// An error for updating the EIP-1559 parameters on the [`crate::SystemConfig`]. #[derive(Debug, thiserror::Error, Clone, Copy, PartialEq, Eq)] #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] pub enum EIP1559UpdateError { @@ -229,7 +229,7 @@ pub enum EIP1559UpdateError { EIP1559DecodingError, } -/// An error for updating the operator fee parameters on the [crate::SystemConfig]. +/// An error for updating the operator fee parameters on the [`crate::SystemConfig`]. #[derive(Debug, thiserror::Error, Clone, Copy, PartialEq, Eq)] #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] pub enum OperatorFeeUpdateError { diff --git a/kona/crates/protocol/genesis/src/system/kind.rs b/rust/kona/crates/protocol/genesis/src/system/kind.rs similarity index 100% rename from kona/crates/protocol/genesis/src/system/kind.rs rename to rust/kona/crates/protocol/genesis/src/system/kind.rs diff --git a/kona/crates/protocol/genesis/src/system/log.rs b/rust/kona/crates/protocol/genesis/src/system/log.rs similarity index 100% rename from kona/crates/protocol/genesis/src/system/log.rs rename to rust/kona/crates/protocol/genesis/src/system/log.rs diff --git a/kona/crates/protocol/genesis/src/system/mod.rs b/rust/kona/crates/protocol/genesis/src/system/mod.rs similarity index 100% rename from kona/crates/protocol/genesis/src/system/mod.rs rename to rust/kona/crates/protocol/genesis/src/system/mod.rs diff --git a/kona/crates/protocol/genesis/src/system/update.rs b/rust/kona/crates/protocol/genesis/src/system/update.rs similarity index 100% rename from kona/crates/protocol/genesis/src/system/update.rs rename to rust/kona/crates/protocol/genesis/src/system/update.rs diff --git a/kona/crates/protocol/genesis/src/updates/batcher.rs b/rust/kona/crates/protocol/genesis/src/updates/batcher.rs similarity index 100% rename from kona/crates/protocol/genesis/src/updates/batcher.rs rename to rust/kona/crates/protocol/genesis/src/updates/batcher.rs diff --git a/kona/crates/protocol/genesis/src/updates/common.rs b/rust/kona/crates/protocol/genesis/src/updates/common.rs similarity index 82% rename from kona/crates/protocol/genesis/src/updates/common.rs rename to rust/kona/crates/protocol/genesis/src/updates/common.rs index 959aee4ece0d8..3dbd157efbdf7 100644 --- a/kona/crates/protocol/genesis/src/updates/common.rs +++ b/rust/kona/crates/protocol/genesis/src/updates/common.rs @@ -1,20 +1,20 @@ -//! Common validation utilities for SystemConfig updates. +//! Common validation utilities for `SystemConfig` updates. //! -//! This module provides shared validation logic for decoding SystemConfigLog data +//! This module provides shared validation logic for decoding `SystemConfigLog` data //! that is used across multiple update types. use alloy_sol_types::{SolType, sol}; -/// The expected data length for a standard SystemConfigLog update. +/// The expected data length for a standard `SystemConfigLog` update. pub(crate) const STANDARD_UPDATE_DATA_LEN: usize = 96; -/// The expected pointer value for a standard SystemConfigLog update. +/// The expected pointer value for a standard `SystemConfigLog` update. pub(crate) const EXPECTED_POINTER: u64 = 32; -/// The expected data length value for a standard SystemConfigLog update. +/// The expected data length value for a standard `SystemConfigLog` update. pub(crate) const EXPECTED_DATA_LENGTH: u64 = 32; -/// Validated SystemConfig update data. +/// Validated `SystemConfig` update data. /// /// After validation, this struct provides access to the validated pointer, length, /// and the payload data starting at byte offset 64. @@ -31,7 +31,7 @@ impl<'a> ValidatedUpdateData<'a> { } } -/// Common validation errors for SystemConfig updates. +/// Common validation errors for `SystemConfig` updates. #[derive(Debug, Clone, PartialEq, Eq)] pub(crate) enum ValidationError { /// Invalid data length. Contains (expected, actual). @@ -46,7 +46,7 @@ pub(crate) enum ValidationError { InvalidDataLength(u64), } -/// Validates the common structure of a SystemConfig update log data. +/// Validates the common structure of a `SystemConfig` update log data. /// /// This function performs the following validations: /// 1. Checks that the data length is exactly 96 bytes diff --git a/kona/crates/protocol/genesis/src/updates/da_footprint_gas_scalar.rs b/rust/kona/crates/protocol/genesis/src/updates/da_footprint_gas_scalar.rs similarity index 100% rename from kona/crates/protocol/genesis/src/updates/da_footprint_gas_scalar.rs rename to rust/kona/crates/protocol/genesis/src/updates/da_footprint_gas_scalar.rs diff --git a/kona/crates/protocol/genesis/src/updates/eip1559.rs b/rust/kona/crates/protocol/genesis/src/updates/eip1559.rs similarity index 100% rename from kona/crates/protocol/genesis/src/updates/eip1559.rs rename to rust/kona/crates/protocol/genesis/src/updates/eip1559.rs diff --git a/kona/crates/protocol/genesis/src/updates/gas_config.rs b/rust/kona/crates/protocol/genesis/src/updates/gas_config.rs similarity index 100% rename from kona/crates/protocol/genesis/src/updates/gas_config.rs rename to rust/kona/crates/protocol/genesis/src/updates/gas_config.rs diff --git a/kona/crates/protocol/genesis/src/updates/gas_limit.rs b/rust/kona/crates/protocol/genesis/src/updates/gas_limit.rs similarity index 100% rename from kona/crates/protocol/genesis/src/updates/gas_limit.rs rename to rust/kona/crates/protocol/genesis/src/updates/gas_limit.rs diff --git a/kona/crates/protocol/genesis/src/updates/min_base_fee.rs b/rust/kona/crates/protocol/genesis/src/updates/min_base_fee.rs similarity index 100% rename from kona/crates/protocol/genesis/src/updates/min_base_fee.rs rename to rust/kona/crates/protocol/genesis/src/updates/min_base_fee.rs diff --git a/kona/crates/protocol/genesis/src/updates/mod.rs b/rust/kona/crates/protocol/genesis/src/updates/mod.rs similarity index 88% rename from kona/crates/protocol/genesis/src/updates/mod.rs rename to rust/kona/crates/protocol/genesis/src/updates/mod.rs index 1b2dbdbbc5633..dd94bccb12d62 100644 --- a/kona/crates/protocol/genesis/src/updates/mod.rs +++ b/rust/kona/crates/protocol/genesis/src/updates/mod.rs @@ -1,4 +1,4 @@ -//! Contains all updates to the [crate::SystemConfig] type. +//! Contains all updates to the [`crate::SystemConfig`] type. mod common; diff --git a/kona/crates/protocol/genesis/src/updates/operator_fee.rs b/rust/kona/crates/protocol/genesis/src/updates/operator_fee.rs similarity index 100% rename from kona/crates/protocol/genesis/src/updates/operator_fee.rs rename to rust/kona/crates/protocol/genesis/src/updates/operator_fee.rs diff --git a/kona/crates/protocol/genesis/src/updates/signer.rs b/rust/kona/crates/protocol/genesis/src/updates/signer.rs similarity index 100% rename from kona/crates/protocol/genesis/src/updates/signer.rs rename to rust/kona/crates/protocol/genesis/src/updates/signer.rs diff --git a/kona/crates/protocol/hardforks/Cargo.toml b/rust/kona/crates/protocol/hardforks/Cargo.toml similarity index 88% rename from kona/crates/protocol/hardforks/Cargo.toml rename to rust/kona/crates/protocol/hardforks/Cargo.toml index 4547c63b004b6..0210f18d8c19d 100644 --- a/kona/crates/protocol/hardforks/Cargo.toml +++ b/rust/kona/crates/protocol/hardforks/Cargo.toml @@ -27,8 +27,8 @@ op-alloy-consensus.workspace = true [dev-dependencies] alloy-primitives = { workspace = true, features = ["rand", "arbitrary"] } -revm.workspace = true -op-revm.workspace = true +revm = { version = "34.0.0", default-features = false } +op-revm = { version = "15.0.0", default-features = false } [features] default = [] diff --git a/kona/crates/protocol/hardforks/README.md b/rust/kona/crates/protocol/hardforks/README.md similarity index 100% rename from kona/crates/protocol/hardforks/README.md rename to rust/kona/crates/protocol/hardforks/README.md diff --git a/kona/crates/protocol/hardforks/src/bytecode/crossl2inbox_interop.hex b/rust/kona/crates/protocol/hardforks/src/bytecode/crossl2inbox_interop.hex similarity index 100% rename from kona/crates/protocol/hardforks/src/bytecode/crossl2inbox_interop.hex rename to rust/kona/crates/protocol/hardforks/src/bytecode/crossl2inbox_interop.hex diff --git a/kona/crates/protocol/hardforks/src/bytecode/ecotone_tx_0.hex b/rust/kona/crates/protocol/hardforks/src/bytecode/ecotone_tx_0.hex similarity index 100% rename from kona/crates/protocol/hardforks/src/bytecode/ecotone_tx_0.hex rename to rust/kona/crates/protocol/hardforks/src/bytecode/ecotone_tx_0.hex diff --git a/kona/crates/protocol/hardforks/src/bytecode/ecotone_tx_1.hex b/rust/kona/crates/protocol/hardforks/src/bytecode/ecotone_tx_1.hex similarity index 100% rename from kona/crates/protocol/hardforks/src/bytecode/ecotone_tx_1.hex rename to rust/kona/crates/protocol/hardforks/src/bytecode/ecotone_tx_1.hex diff --git a/kona/crates/protocol/hardforks/src/bytecode/ecotone_tx_2.hex b/rust/kona/crates/protocol/hardforks/src/bytecode/ecotone_tx_2.hex similarity index 100% rename from kona/crates/protocol/hardforks/src/bytecode/ecotone_tx_2.hex rename to rust/kona/crates/protocol/hardforks/src/bytecode/ecotone_tx_2.hex diff --git a/kona/crates/protocol/hardforks/src/bytecode/ecotone_tx_3.hex b/rust/kona/crates/protocol/hardforks/src/bytecode/ecotone_tx_3.hex similarity index 100% rename from kona/crates/protocol/hardforks/src/bytecode/ecotone_tx_3.hex rename to rust/kona/crates/protocol/hardforks/src/bytecode/ecotone_tx_3.hex diff --git a/kona/crates/protocol/hardforks/src/bytecode/ecotone_tx_4.hex b/rust/kona/crates/protocol/hardforks/src/bytecode/ecotone_tx_4.hex similarity index 100% rename from kona/crates/protocol/hardforks/src/bytecode/ecotone_tx_4.hex rename to rust/kona/crates/protocol/hardforks/src/bytecode/ecotone_tx_4.hex diff --git a/kona/crates/protocol/hardforks/src/bytecode/ecotone_tx_5.hex b/rust/kona/crates/protocol/hardforks/src/bytecode/ecotone_tx_5.hex similarity index 100% rename from kona/crates/protocol/hardforks/src/bytecode/ecotone_tx_5.hex rename to rust/kona/crates/protocol/hardforks/src/bytecode/ecotone_tx_5.hex diff --git a/kona/crates/protocol/hardforks/src/bytecode/eip2935_isthmus.hex b/rust/kona/crates/protocol/hardforks/src/bytecode/eip2935_isthmus.hex similarity index 100% rename from kona/crates/protocol/hardforks/src/bytecode/eip2935_isthmus.hex rename to rust/kona/crates/protocol/hardforks/src/bytecode/eip2935_isthmus.hex diff --git a/kona/crates/protocol/hardforks/src/bytecode/eip4788_ecotone.hex b/rust/kona/crates/protocol/hardforks/src/bytecode/eip4788_ecotone.hex similarity index 100% rename from kona/crates/protocol/hardforks/src/bytecode/eip4788_ecotone.hex rename to rust/kona/crates/protocol/hardforks/src/bytecode/eip4788_ecotone.hex diff --git a/kona/crates/protocol/hardforks/src/bytecode/fjord_tx_0.hex b/rust/kona/crates/protocol/hardforks/src/bytecode/fjord_tx_0.hex similarity index 100% rename from kona/crates/protocol/hardforks/src/bytecode/fjord_tx_0.hex rename to rust/kona/crates/protocol/hardforks/src/bytecode/fjord_tx_0.hex diff --git a/kona/crates/protocol/hardforks/src/bytecode/fjord_tx_1.hex b/rust/kona/crates/protocol/hardforks/src/bytecode/fjord_tx_1.hex similarity index 100% rename from kona/crates/protocol/hardforks/src/bytecode/fjord_tx_1.hex rename to rust/kona/crates/protocol/hardforks/src/bytecode/fjord_tx_1.hex diff --git a/kona/crates/protocol/hardforks/src/bytecode/fjord_tx_2.hex b/rust/kona/crates/protocol/hardforks/src/bytecode/fjord_tx_2.hex similarity index 100% rename from kona/crates/protocol/hardforks/src/bytecode/fjord_tx_2.hex rename to rust/kona/crates/protocol/hardforks/src/bytecode/fjord_tx_2.hex diff --git a/kona/crates/protocol/hardforks/src/bytecode/gpo_ecotone.hex b/rust/kona/crates/protocol/hardforks/src/bytecode/gpo_ecotone.hex similarity index 100% rename from kona/crates/protocol/hardforks/src/bytecode/gpo_ecotone.hex rename to rust/kona/crates/protocol/hardforks/src/bytecode/gpo_ecotone.hex diff --git a/kona/crates/protocol/hardforks/src/bytecode/gpo_fjord.hex b/rust/kona/crates/protocol/hardforks/src/bytecode/gpo_fjord.hex similarity index 100% rename from kona/crates/protocol/hardforks/src/bytecode/gpo_fjord.hex rename to rust/kona/crates/protocol/hardforks/src/bytecode/gpo_fjord.hex diff --git a/kona/crates/protocol/hardforks/src/bytecode/gpo_isthmus.hex b/rust/kona/crates/protocol/hardforks/src/bytecode/gpo_isthmus.hex similarity index 100% rename from kona/crates/protocol/hardforks/src/bytecode/gpo_isthmus.hex rename to rust/kona/crates/protocol/hardforks/src/bytecode/gpo_isthmus.hex diff --git a/kona/crates/protocol/hardforks/src/bytecode/interop_tx_0.hex b/rust/kona/crates/protocol/hardforks/src/bytecode/interop_tx_0.hex similarity index 100% rename from kona/crates/protocol/hardforks/src/bytecode/interop_tx_0.hex rename to rust/kona/crates/protocol/hardforks/src/bytecode/interop_tx_0.hex diff --git a/kona/crates/protocol/hardforks/src/bytecode/interop_tx_1.hex b/rust/kona/crates/protocol/hardforks/src/bytecode/interop_tx_1.hex similarity index 100% rename from kona/crates/protocol/hardforks/src/bytecode/interop_tx_1.hex rename to rust/kona/crates/protocol/hardforks/src/bytecode/interop_tx_1.hex diff --git a/kona/crates/protocol/hardforks/src/bytecode/interop_tx_2.hex b/rust/kona/crates/protocol/hardforks/src/bytecode/interop_tx_2.hex similarity index 100% rename from kona/crates/protocol/hardforks/src/bytecode/interop_tx_2.hex rename to rust/kona/crates/protocol/hardforks/src/bytecode/interop_tx_2.hex diff --git a/kona/crates/protocol/hardforks/src/bytecode/interop_tx_3.hex b/rust/kona/crates/protocol/hardforks/src/bytecode/interop_tx_3.hex similarity index 100% rename from kona/crates/protocol/hardforks/src/bytecode/interop_tx_3.hex rename to rust/kona/crates/protocol/hardforks/src/bytecode/interop_tx_3.hex diff --git a/kona/crates/protocol/hardforks/src/bytecode/isthmus_tx_0.hex b/rust/kona/crates/protocol/hardforks/src/bytecode/isthmus_tx_0.hex similarity index 100% rename from kona/crates/protocol/hardforks/src/bytecode/isthmus_tx_0.hex rename to rust/kona/crates/protocol/hardforks/src/bytecode/isthmus_tx_0.hex diff --git a/kona/crates/protocol/hardforks/src/bytecode/isthmus_tx_1.hex b/rust/kona/crates/protocol/hardforks/src/bytecode/isthmus_tx_1.hex similarity index 100% rename from kona/crates/protocol/hardforks/src/bytecode/isthmus_tx_1.hex rename to rust/kona/crates/protocol/hardforks/src/bytecode/isthmus_tx_1.hex diff --git a/kona/crates/protocol/hardforks/src/bytecode/isthmus_tx_2.hex b/rust/kona/crates/protocol/hardforks/src/bytecode/isthmus_tx_2.hex similarity index 100% rename from kona/crates/protocol/hardforks/src/bytecode/isthmus_tx_2.hex rename to rust/kona/crates/protocol/hardforks/src/bytecode/isthmus_tx_2.hex diff --git a/kona/crates/protocol/hardforks/src/bytecode/isthmus_tx_3.hex b/rust/kona/crates/protocol/hardforks/src/bytecode/isthmus_tx_3.hex similarity index 100% rename from kona/crates/protocol/hardforks/src/bytecode/isthmus_tx_3.hex rename to rust/kona/crates/protocol/hardforks/src/bytecode/isthmus_tx_3.hex diff --git a/kona/crates/protocol/hardforks/src/bytecode/isthmus_tx_4.hex b/rust/kona/crates/protocol/hardforks/src/bytecode/isthmus_tx_4.hex similarity index 100% rename from kona/crates/protocol/hardforks/src/bytecode/isthmus_tx_4.hex rename to rust/kona/crates/protocol/hardforks/src/bytecode/isthmus_tx_4.hex diff --git a/kona/crates/protocol/hardforks/src/bytecode/isthmus_tx_5.hex b/rust/kona/crates/protocol/hardforks/src/bytecode/isthmus_tx_5.hex similarity index 100% rename from kona/crates/protocol/hardforks/src/bytecode/isthmus_tx_5.hex rename to rust/kona/crates/protocol/hardforks/src/bytecode/isthmus_tx_5.hex diff --git a/kona/crates/protocol/hardforks/src/bytecode/isthmus_tx_6.hex b/rust/kona/crates/protocol/hardforks/src/bytecode/isthmus_tx_6.hex similarity index 100% rename from kona/crates/protocol/hardforks/src/bytecode/isthmus_tx_6.hex rename to rust/kona/crates/protocol/hardforks/src/bytecode/isthmus_tx_6.hex diff --git a/kona/crates/protocol/hardforks/src/bytecode/isthmus_tx_7.hex b/rust/kona/crates/protocol/hardforks/src/bytecode/isthmus_tx_7.hex similarity index 100% rename from kona/crates/protocol/hardforks/src/bytecode/isthmus_tx_7.hex rename to rust/kona/crates/protocol/hardforks/src/bytecode/isthmus_tx_7.hex diff --git a/kona/crates/protocol/hardforks/src/bytecode/jovian-gas-price-oracle-deployment.hex b/rust/kona/crates/protocol/hardforks/src/bytecode/jovian-gas-price-oracle-deployment.hex similarity index 100% rename from kona/crates/protocol/hardforks/src/bytecode/jovian-gas-price-oracle-deployment.hex rename to rust/kona/crates/protocol/hardforks/src/bytecode/jovian-gas-price-oracle-deployment.hex diff --git a/kona/crates/protocol/hardforks/src/bytecode/jovian-l1-block-deployment.hex b/rust/kona/crates/protocol/hardforks/src/bytecode/jovian-l1-block-deployment.hex similarity index 100% rename from kona/crates/protocol/hardforks/src/bytecode/jovian-l1-block-deployment.hex rename to rust/kona/crates/protocol/hardforks/src/bytecode/jovian-l1-block-deployment.hex diff --git a/kona/crates/protocol/hardforks/src/bytecode/l1_block_ecotone.hex b/rust/kona/crates/protocol/hardforks/src/bytecode/l1_block_ecotone.hex similarity index 100% rename from kona/crates/protocol/hardforks/src/bytecode/l1_block_ecotone.hex rename to rust/kona/crates/protocol/hardforks/src/bytecode/l1_block_ecotone.hex diff --git a/kona/crates/protocol/hardforks/src/bytecode/l1_block_isthmus.hex b/rust/kona/crates/protocol/hardforks/src/bytecode/l1_block_isthmus.hex similarity index 100% rename from kona/crates/protocol/hardforks/src/bytecode/l1_block_isthmus.hex rename to rust/kona/crates/protocol/hardforks/src/bytecode/l1_block_isthmus.hex diff --git a/kona/crates/protocol/hardforks/src/bytecode/l2tol2_xdm_interop.hex b/rust/kona/crates/protocol/hardforks/src/bytecode/l2tol2_xdm_interop.hex similarity index 100% rename from kona/crates/protocol/hardforks/src/bytecode/l2tol2_xdm_interop.hex rename to rust/kona/crates/protocol/hardforks/src/bytecode/l2tol2_xdm_interop.hex diff --git a/kona/crates/protocol/hardforks/src/bytecode/ofv_isthmus.hex b/rust/kona/crates/protocol/hardforks/src/bytecode/ofv_isthmus.hex similarity index 100% rename from kona/crates/protocol/hardforks/src/bytecode/ofv_isthmus.hex rename to rust/kona/crates/protocol/hardforks/src/bytecode/ofv_isthmus.hex diff --git a/kona/crates/protocol/hardforks/src/ecotone.rs b/rust/kona/crates/protocol/hardforks/src/ecotone.rs similarity index 98% rename from kona/crates/protocol/hardforks/src/ecotone.rs rename to rust/kona/crates/protocol/hardforks/src/ecotone.rs index e2b255ac66bb3..0302987e9ec6d 100644 --- a/kona/crates/protocol/hardforks/src/ecotone.rs +++ b/rust/kona/crates/protocol/hardforks/src/ecotone.rs @@ -89,21 +89,21 @@ impl Ecotone { /// Returns the EIP-4788 creation data. pub fn eip4788_creation_data() -> Bytes { - hex::decode(include_str!("./bytecode/eip4788_ecotone.hex").replace("\n", "")) + hex::decode(include_str!("./bytecode/eip4788_ecotone.hex").replace('\n', "")) .expect("Expected hex byte string") .into() } /// Returns the raw bytecode for the L1 Block deployment. pub fn l1_block_deployment_bytecode() -> Bytes { - hex::decode(include_str!("./bytecode/l1_block_ecotone.hex").replace("\n", "")) + hex::decode(include_str!("./bytecode/l1_block_ecotone.hex").replace('\n', "")) .expect("Expected hex byte string") .into() } /// Returns the gas price oracle deployment bytecode. pub fn ecotone_gas_price_oracle_deployment_bytecode() -> Bytes { - hex::decode(include_str!("./bytecode/gpo_ecotone.hex").replace("\n", "")) + hex::decode(include_str!("./bytecode/gpo_ecotone.hex").replace('\n', "")) .expect("Expected hex byte string") .into() } @@ -281,22 +281,22 @@ mod tests { assert_eq!(ecotone_upgrade_tx.len(), 6); let expected_txs: Vec = vec![ - hex::decode(include_str!("./bytecode/ecotone_tx_0.hex").replace("\n", "")) + hex::decode(include_str!("./bytecode/ecotone_tx_0.hex").replace('\n', "")) .unwrap() .into(), - hex::decode(include_str!("./bytecode/ecotone_tx_1.hex").replace("\n", "")) + hex::decode(include_str!("./bytecode/ecotone_tx_1.hex").replace('\n', "")) .unwrap() .into(), - hex::decode(include_str!("./bytecode/ecotone_tx_2.hex").replace("\n", "")) + hex::decode(include_str!("./bytecode/ecotone_tx_2.hex").replace('\n', "")) .unwrap() .into(), - hex::decode(include_str!("./bytecode/ecotone_tx_3.hex").replace("\n", "")) + hex::decode(include_str!("./bytecode/ecotone_tx_3.hex").replace('\n', "")) .unwrap() .into(), - hex::decode(include_str!("./bytecode/ecotone_tx_4.hex").replace("\n", "")) + hex::decode(include_str!("./bytecode/ecotone_tx_4.hex").replace('\n', "")) .unwrap() .into(), - hex::decode(include_str!("./bytecode/ecotone_tx_5.hex").replace("\n", "")) + hex::decode(include_str!("./bytecode/ecotone_tx_5.hex").replace('\n', "")) .unwrap() .into(), ]; diff --git a/kona/crates/protocol/hardforks/src/fjord.rs b/rust/kona/crates/protocol/hardforks/src/fjord.rs similarity index 97% rename from kona/crates/protocol/hardforks/src/fjord.rs rename to rust/kona/crates/protocol/hardforks/src/fjord.rs index 8068d4364b1b0..f71f7fe867042 100644 --- a/kona/crates/protocol/hardforks/src/fjord.rs +++ b/rust/kona/crates/protocol/hardforks/src/fjord.rs @@ -50,7 +50,7 @@ impl Fjord { .source_hash() } - /// [UpgradeDepositSource] for setting the Fjord Gas Price Oracle. + /// [`UpgradeDepositSource`] for setting the Fjord Gas Price Oracle. pub fn enable_fjord_source() -> B256 { UpgradeDepositSource { intent: String::from("Fjord: Gas Price Oracle Set Fjord") } .source_hash() @@ -58,7 +58,7 @@ impl Fjord { /// Returns the fjord gas price oracle deployment bytecode. pub fn gas_price_oracle_deployment_bytecode() -> alloy_primitives::Bytes { - hex::decode(include_str!("./bytecode/gpo_fjord.hex").replace("\n", "")) + hex::decode(include_str!("./bytecode/gpo_fjord.hex").replace('\n', "")) .expect("Expected hex byte string") .into() } @@ -155,13 +155,13 @@ mod tests { assert_eq!(fjord_upgrade_tx.len(), 3); let expected_txs: Vec = vec![ - hex::decode(include_str!("./bytecode/fjord_tx_0.hex").replace("\n", "")) + hex::decode(include_str!("./bytecode/fjord_tx_0.hex").replace('\n', "")) .unwrap() .into(), - hex::decode(include_str!("./bytecode/fjord_tx_1.hex").replace("\n", "")) + hex::decode(include_str!("./bytecode/fjord_tx_1.hex").replace('\n', "")) .unwrap() .into(), - hex::decode(include_str!("./bytecode/fjord_tx_2.hex").replace("\n", "")) + hex::decode(include_str!("./bytecode/fjord_tx_2.hex").replace('\n', "")) .unwrap() .into(), ]; diff --git a/kona/crates/protocol/hardforks/src/forks.rs b/rust/kona/crates/protocol/hardforks/src/forks.rs similarity index 97% rename from kona/crates/protocol/hardforks/src/forks.rs rename to rust/kona/crates/protocol/hardforks/src/forks.rs index aaf111dbcd098..c8c368ac52528 100644 --- a/kona/crates/protocol/hardforks/src/forks.rs +++ b/rust/kona/crates/protocol/hardforks/src/forks.rs @@ -1,4 +1,4 @@ -//! Contains all hardforks represented in the [crate::Hardfork] type. +//! Contains all hardforks represented in the [`crate::Hardfork`] type. use crate::{Ecotone, Fjord, Interop, Isthmus, Jovian}; diff --git a/kona/crates/protocol/hardforks/src/interop.rs b/rust/kona/crates/protocol/hardforks/src/interop.rs similarity index 98% rename from kona/crates/protocol/hardforks/src/interop.rs rename to rust/kona/crates/protocol/hardforks/src/interop.rs index 23ff534215097..10a821907cfab 100644 --- a/kona/crates/protocol/hardforks/src/interop.rs +++ b/rust/kona/crates/protocol/hardforks/src/interop.rs @@ -71,14 +71,14 @@ impl Interop { /// Returns the `CrossL2Inbox` deployment bytecode. pub fn cross_l2_inbox_deployment_bytecode() -> Bytes { - hex::decode(include_str!("./bytecode/crossl2inbox_interop.hex").replace("\n", "")) + hex::decode(include_str!("./bytecode/crossl2inbox_interop.hex").replace('\n', "")) .expect("Expected hex byte string") .into() } /// Returns the `L2ToL2CrossDomainMessenger` proxy upgrade bytecode. pub fn l2_to_l2_xdm_deployment_bytecode() -> Bytes { - hex::decode(include_str!("./bytecode/l2tol2_xdm_interop.hex").replace("\n", "")) + hex::decode(include_str!("./bytecode/l2tol2_xdm_interop.hex").replace('\n', "")) .expect("Expected hex byte string") .into() } @@ -203,16 +203,16 @@ mod test { assert_eq!(interop_upgrade_tx.len(), 4); let expected_txs: Vec = vec![ - hex::decode(include_str!("./bytecode/interop_tx_0.hex").replace("\n", "")) + hex::decode(include_str!("./bytecode/interop_tx_0.hex").replace('\n', "")) .unwrap() .into(), - hex::decode(include_str!("./bytecode/interop_tx_1.hex").replace("\n", "")) + hex::decode(include_str!("./bytecode/interop_tx_1.hex").replace('\n', "")) .unwrap() .into(), - hex::decode(include_str!("./bytecode/interop_tx_2.hex").replace("\n", "")) + hex::decode(include_str!("./bytecode/interop_tx_2.hex").replace('\n', "")) .unwrap() .into(), - hex::decode(include_str!("./bytecode/interop_tx_3.hex").replace("\n", "")) + hex::decode(include_str!("./bytecode/interop_tx_3.hex").replace('\n', "")) .unwrap() .into(), ]; diff --git a/kona/crates/protocol/hardforks/src/isthmus.rs b/rust/kona/crates/protocol/hardforks/src/isthmus.rs similarity index 98% rename from kona/crates/protocol/hardforks/src/isthmus.rs rename to rust/kona/crates/protocol/hardforks/src/isthmus.rs index efdfa84a06827..47c05d2ef5a7c 100644 --- a/kona/crates/protocol/hardforks/src/isthmus.rs +++ b/rust/kona/crates/protocol/hardforks/src/isthmus.rs @@ -119,28 +119,28 @@ impl Isthmus { /// Returns the raw bytecode for the L1 Block deployment. pub fn l1_block_deployment_bytecode() -> Bytes { - hex::decode(include_str!("./bytecode/l1_block_isthmus.hex").replace("\n", "")) + hex::decode(include_str!("./bytecode/l1_block_isthmus.hex").replace('\n', "")) .expect("Expected hex byte string") .into() } /// Returns the gas price oracle deployment bytecode. pub fn gas_price_oracle_deployment_bytecode() -> Bytes { - hex::decode(include_str!("./bytecode/gpo_isthmus.hex").replace("\n", "")) + hex::decode(include_str!("./bytecode/gpo_isthmus.hex").replace('\n', "")) .expect("Expected hex byte string") .into() } /// Returns the gas price oracle deployment bytecode. pub fn operator_fee_vault_deployment_bytecode() -> Bytes { - hex::decode(include_str!("./bytecode/ofv_isthmus.hex").replace("\n", "")) + hex::decode(include_str!("./bytecode/ofv_isthmus.hex").replace('\n', "")) .expect("Expected hex byte string") .into() } /// Returns the EIP-2935 creation data. pub fn eip2935_creation_data() -> Bytes { - hex::decode(include_str!("./bytecode/eip2935_isthmus.hex").replace("\n", "")) + hex::decode(include_str!("./bytecode/eip2935_isthmus.hex").replace('\n', "")) .expect("Expected hex byte string") .into() } @@ -300,28 +300,28 @@ mod tests { assert_eq!(isthmus_upgrade_tx.len(), 8); let expected_txs: Vec = vec![ - hex::decode(include_str!("./bytecode/isthmus_tx_0.hex").replace("\n", "")) + hex::decode(include_str!("./bytecode/isthmus_tx_0.hex").replace('\n', "")) .unwrap() .into(), - hex::decode(include_str!("./bytecode/isthmus_tx_1.hex").replace("\n", "")) + hex::decode(include_str!("./bytecode/isthmus_tx_1.hex").replace('\n', "")) .unwrap() .into(), - hex::decode(include_str!("./bytecode/isthmus_tx_2.hex").replace("\n", "")) + hex::decode(include_str!("./bytecode/isthmus_tx_2.hex").replace('\n', "")) .unwrap() .into(), - hex::decode(include_str!("./bytecode/isthmus_tx_3.hex").replace("\n", "")) + hex::decode(include_str!("./bytecode/isthmus_tx_3.hex").replace('\n', "")) .unwrap() .into(), - hex::decode(include_str!("./bytecode/isthmus_tx_4.hex").replace("\n", "")) + hex::decode(include_str!("./bytecode/isthmus_tx_4.hex").replace('\n', "")) .unwrap() .into(), - hex::decode(include_str!("./bytecode/isthmus_tx_5.hex").replace("\n", "")) + hex::decode(include_str!("./bytecode/isthmus_tx_5.hex").replace('\n', "")) .unwrap() .into(), - hex::decode(include_str!("./bytecode/isthmus_tx_6.hex").replace("\n", "")) + hex::decode(include_str!("./bytecode/isthmus_tx_6.hex").replace('\n', "")) .unwrap() .into(), - hex::decode(include_str!("./bytecode/isthmus_tx_7.hex").replace("\n", "")) + hex::decode(include_str!("./bytecode/isthmus_tx_7.hex").replace('\n', "")) .unwrap() .into(), ]; diff --git a/kona/crates/protocol/hardforks/src/jovian.rs b/rust/kona/crates/protocol/hardforks/src/jovian.rs similarity index 99% rename from kona/crates/protocol/hardforks/src/jovian.rs rename to rust/kona/crates/protocol/hardforks/src/jovian.rs index 7c52fe49c84ad..43c75101de0fb 100644 --- a/kona/crates/protocol/hardforks/src/jovian.rs +++ b/rust/kona/crates/protocol/hardforks/src/jovian.rs @@ -74,7 +74,7 @@ impl Jovian { /// Returns the raw bytecode for the L1 Block deployment. pub fn l1_block_deployment_bytecode() -> Bytes { - hex::decode(include_str!("./bytecode/jovian-l1-block-deployment.hex").replace("\n", "")) + hex::decode(include_str!("./bytecode/jovian-l1-block-deployment.hex").replace('\n', "")) .expect("Expected hex byte string") .into() } @@ -82,7 +82,7 @@ impl Jovian { /// Returns the gas price oracle deployment bytecode. pub fn gas_price_oracle_deployment_bytecode() -> Bytes { hex::decode( - include_str!("./bytecode/jovian-gas-price-oracle-deployment.hex").replace("\n", ""), + include_str!("./bytecode/jovian-gas-price-oracle-deployment.hex").replace('\n', ""), ) .expect("Expected hex byte string") .into() diff --git a/kona/crates/protocol/hardforks/src/lib.rs b/rust/kona/crates/protocol/hardforks/src/lib.rs similarity index 93% rename from kona/crates/protocol/hardforks/src/lib.rs rename to rust/kona/crates/protocol/hardforks/src/lib.rs index 917dc3cd9b18c..25c6b71821178 100644 --- a/kona/crates/protocol/hardforks/src/lib.rs +++ b/rust/kona/crates/protocol/hardforks/src/lib.rs @@ -4,7 +4,7 @@ html_favicon_url = "https://raw.githubusercontent.com/op-rs/kona/main/assets/favicon.ico", issue_tracker_base_url = "https://github.com/op-rs/kona/issues/" )] -#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))] +#![cfg_attr(docsrs, feature(doc_cfg))] #![cfg_attr(not(feature = "std"), no_std)] extern crate alloc; diff --git a/kona/crates/protocol/hardforks/src/test_utils.rs b/rust/kona/crates/protocol/hardforks/src/test_utils.rs similarity index 100% rename from kona/crates/protocol/hardforks/src/test_utils.rs rename to rust/kona/crates/protocol/hardforks/src/test_utils.rs diff --git a/kona/crates/protocol/hardforks/src/traits.rs b/rust/kona/crates/protocol/hardforks/src/traits.rs similarity index 100% rename from kona/crates/protocol/hardforks/src/traits.rs rename to rust/kona/crates/protocol/hardforks/src/traits.rs diff --git a/kona/crates/protocol/hardforks/src/utils.rs b/rust/kona/crates/protocol/hardforks/src/utils.rs similarity index 97% rename from kona/crates/protocol/hardforks/src/utils.rs rename to rust/kona/crates/protocol/hardforks/src/utils.rs index d2a5fe3196a20..55e64505b013e 100644 --- a/kona/crates/protocol/hardforks/src/utils.rs +++ b/rust/kona/crates/protocol/hardforks/src/utils.rs @@ -2,7 +2,7 @@ use alloy_primitives::{Address, Bytes, hex}; -/// UpgradeTo Function 4Byte Signature +/// `UpgradeTo` Function 4Byte Signature pub(crate) const UPGRADE_TO_FUNC_BYTES_4: [u8; 4] = hex!("3659cfe6"); /// Turns the given address into calldata for the `upgradeTo` function. diff --git a/kona/crates/protocol/interop/CHANGELOG.md b/rust/kona/crates/protocol/interop/CHANGELOG.md similarity index 100% rename from kona/crates/protocol/interop/CHANGELOG.md rename to rust/kona/crates/protocol/interop/CHANGELOG.md diff --git a/kona/crates/protocol/interop/Cargo.toml b/rust/kona/crates/protocol/interop/Cargo.toml similarity index 94% rename from kona/crates/protocol/interop/Cargo.toml rename to rust/kona/crates/protocol/interop/Cargo.toml index bae121376dc11..59f982443f6f7 100644 --- a/kona/crates/protocol/interop/Cargo.toml +++ b/rust/kona/crates/protocol/interop/Cargo.toml @@ -33,7 +33,7 @@ alloy-primitives = { workspace = true, features = ["rlp"] } op-alloy-consensus.workspace = true # Arbitrary -arbitrary = { version = "1.4", features = ["derive"], optional = true } +arbitrary = { workspace = true, features = ["derive"], optional = true } # Serde serde = { workspace = true, optional = true } @@ -42,7 +42,7 @@ serde = { workspace = true, optional = true } serde_json.workspace = true tokio = { workspace = true, features = ["full"] } alloy-primitives = { workspace = true, features = ["rlp", "arbitrary"] } -arbitrary = { version = "1.4", features = ["derive"] } +arbitrary = { workspace = true, features = ["derive"] } rand = { workspace = true, features = ["thread_rng"] } [features] diff --git a/kona/crates/protocol/interop/README.md b/rust/kona/crates/protocol/interop/README.md similarity index 100% rename from kona/crates/protocol/interop/README.md rename to rust/kona/crates/protocol/interop/README.md diff --git a/kona/crates/protocol/interop/src/access_list.rs b/rust/kona/crates/protocol/interop/src/access_list.rs similarity index 100% rename from kona/crates/protocol/interop/src/access_list.rs rename to rust/kona/crates/protocol/interop/src/access_list.rs diff --git a/kona/crates/protocol/interop/src/constants.rs b/rust/kona/crates/protocol/interop/src/constants.rs similarity index 75% rename from kona/crates/protocol/interop/src/constants.rs rename to rust/kona/crates/protocol/interop/src/constants.rs index 567b33d46c6c9..ab62c27e5a70c 100644 --- a/kona/crates/protocol/interop/src/constants.rs +++ b/rust/kona/crates/protocol/interop/src/constants.rs @@ -4,7 +4,5 @@ /// pub const MESSAGE_EXPIRY_WINDOW: u64 = 7 * 24 * 60 * 60; -/// The current version of the [SuperRoot] encoding format. -/// -/// [SuperRoot]: crate::SuperRoot +/// The current version of the [`SuperRoot`](crate::SuperRoot) encoding format. pub const SUPER_ROOT_VERSION: u8 = 1; diff --git a/kona/crates/protocol/interop/src/control.rs b/rust/kona/crates/protocol/interop/src/control.rs similarity index 100% rename from kona/crates/protocol/interop/src/control.rs rename to rust/kona/crates/protocol/interop/src/control.rs diff --git a/kona/crates/protocol/interop/src/depset.rs b/rust/kona/crates/protocol/interop/src/depset.rs similarity index 96% rename from kona/crates/protocol/interop/src/depset.rs rename to rust/kona/crates/protocol/interop/src/depset.rs index 86b821dfec034..5b9b29e7efc06 100644 --- a/kona/crates/protocol/interop/src/depset.rs +++ b/rust/kona/crates/protocol/interop/src/depset.rs @@ -12,6 +12,7 @@ pub struct ChainDependency {} #[derive(Debug, Clone, PartialEq, Eq)] #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] #[cfg_attr(feature = "serde", serde(rename_all = "camelCase"))] +#[allow(clippy::zero_sized_map_values)] pub struct DependencySet { /// Dependencies information per chain. pub dependencies: HashMap, @@ -31,6 +32,7 @@ impl DependencySet { } #[cfg(test)] +#[allow(clippy::zero_sized_map_values)] mod tests { use super::*; use alloy_primitives::ChainId; diff --git a/kona/crates/protocol/interop/src/derived.rs b/rust/kona/crates/protocol/interop/src/derived.rs similarity index 100% rename from kona/crates/protocol/interop/src/derived.rs rename to rust/kona/crates/protocol/interop/src/derived.rs diff --git a/kona/crates/protocol/interop/src/errors.rs b/rust/kona/crates/protocol/interop/src/errors.rs similarity index 90% rename from kona/crates/protocol/interop/src/errors.rs rename to rust/kona/crates/protocol/interop/src/errors.rs index 66e61601ec5f4..2184fbe4ff711 100644 --- a/kona/crates/protocol/interop/src/errors.rs +++ b/rust/kona/crates/protocol/interop/src/errors.rs @@ -6,17 +6,13 @@ use core::fmt::Debug; use kona_registry::HashMap; use thiserror::Error; -/// An error type for the [MessageGraph] struct. -/// -/// [MessageGraph]: crate::MessageGraph +/// An error type for the [`MessageGraph`](crate::MessageGraph) struct. #[derive(Debug, Clone, PartialEq, Eq, Error)] pub enum MessageGraphError { /// Dependency set is impossibly empty #[error("Dependency set is impossibly empty")] EmptyDependencySet, - /// Missing a [RollupConfig] for a chain ID - /// - /// [RollupConfig]: kona_genesis::RollupConfig + /// Missing a [`RollupConfig`](kona_genesis::RollupConfig) for a chain ID #[error("Missing a RollupConfig for chain ID {0}")] MissingRollupConfig(u64), /// Interop provider error @@ -84,17 +80,16 @@ pub enum MessageGraphError { }, /// Invalid messages were found #[error("Invalid messages found on chains: {0:?}")] - InvalidMessages(HashMap>), + InvalidMessages(HashMap), } -/// A [Result] alias for the [MessageGraphError] type. +/// A [Result] alias for the [`MessageGraphError`] type. #[allow(type_alias_bounds)] pub type MessageGraphResult = core::result::Result>; -/// An error type for the [SuperRoot] struct's serialization and deserialization. -/// -/// [SuperRoot]: crate::SuperRoot +/// An error type for the [`SuperRoot`](crate::SuperRoot) struct's serialization and +/// deserialization. #[derive(Debug, Clone, Error)] pub enum SuperRootError { /// Invalid super root version byte @@ -108,7 +103,7 @@ pub enum SuperRootError { SliceConversionError(#[from] core::array::TryFromSliceError), } -/// A [Result] alias for the [SuperRootError] type. +/// A [Result] alias for the [`SuperRootError`] type. pub type SuperRootResult = core::result::Result; /// Errors that can occur during interop validation. diff --git a/kona/crates/protocol/interop/src/event.rs b/rust/kona/crates/protocol/interop/src/event.rs similarity index 97% rename from kona/crates/protocol/interop/src/event.rs rename to rust/kona/crates/protocol/interop/src/event.rs index d2b3ee5e19b13..a5bdd511a7065 100644 --- a/kona/crates/protocol/interop/src/event.rs +++ b/rust/kona/crates/protocol/interop/src/event.rs @@ -16,7 +16,7 @@ use kona_protocol::BlockInfo; #[cfg_attr(feature = "serde", serde(rename_all = "camelCase"))] pub struct ManagedEvent { /// This is emitted when the node has determined that it needs a reset. - /// It tells the supervisor to send the interop_reset event with the + /// It tells the supervisor to send the `interop_reset` event with the /// required parameters. pub reset: Option, diff --git a/kona/crates/protocol/interop/src/graph.rs b/rust/kona/crates/protocol/interop/src/graph.rs similarity index 99% rename from kona/crates/protocol/interop/src/graph.rs rename to rust/kona/crates/protocol/interop/src/graph.rs index 5316ac6067df8..92012c05cee8b 100644 --- a/kona/crates/protocol/interop/src/graph.rs +++ b/rust/kona/crates/protocol/interop/src/graph.rs @@ -58,7 +58,7 @@ where ); let mut messages = Vec::with_capacity(blocks.len()); - for (chain_id, header) in blocks.iter() { + for (chain_id, header) in blocks { let receipts = provider.receipts_by_hash(*chain_id, header.hash()).await?; let executing_messages = extract_executing_messages(receipts.as_slice()); @@ -99,7 +99,7 @@ where // Prune all valid messages, collecting errors for any chain whose block contains an invalid // message. Errors are de-duplicated by chain ID in a map, since a single invalid // message is cause for invalidating a block. - for message in self.messages.iter() { + for message in &self.messages { if let Err(e) = self.check_single_dependency(message).await { warn!( target: "message_graph", diff --git a/kona/crates/protocol/interop/src/lib.rs b/rust/kona/crates/protocol/interop/src/lib.rs similarity index 96% rename from kona/crates/protocol/interop/src/lib.rs rename to rust/kona/crates/protocol/interop/src/lib.rs index b6ebf9995be05..e49cd68dda038 100644 --- a/kona/crates/protocol/interop/src/lib.rs +++ b/rust/kona/crates/protocol/interop/src/lib.rs @@ -3,7 +3,7 @@ html_logo_url = "https://raw.githubusercontent.com/op-rs/kona/main/assets/square.png", html_favicon_url = "https://raw.githubusercontent.com/op-rs/kona/main/assets/favicon.ico" )] -#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))] +#![cfg_attr(docsrs, feature(doc_cfg))] #![cfg_attr(not(feature = "std"), no_std)] extern crate alloc; diff --git a/kona/crates/protocol/interop/src/message.rs b/rust/kona/crates/protocol/interop/src/message.rs similarity index 95% rename from kona/crates/protocol/interop/src/message.rs rename to rust/kona/crates/protocol/interop/src/message.rs index 0a05209adf0f3..3ff0d53007852 100644 --- a/kona/crates/protocol/interop/src/message.rs +++ b/rust/kona/crates/protocol/interop/src/message.rs @@ -45,7 +45,7 @@ sol! { ) external; } -/// A [RawMessagePayload] is the raw payload of an initiating message. +/// A [`RawMessagePayload`] is the raw payload of an initiating message. #[derive(Debug, Clone, From, AsRef, PartialEq, Eq)] pub struct RawMessagePayload(Bytes); @@ -104,11 +104,11 @@ pub struct ExecutingDescriptor { pub chain_id: Option, } -/// A wrapper type for [ExecutingMessage] containing the chain ID of the chain that the message was -/// executed on. +/// A wrapper type for [`ExecutingMessage`] containing the chain ID of the chain that the message +/// was executed on. #[derive(Debug)] pub struct EnrichedExecutingMessage { - /// The inner [ExecutingMessage]. + /// The inner [`ExecutingMessage`]. pub inner: ExecutingMessage, /// The chain ID of the chain that the message was executed on. pub executing_chain_id: u64, @@ -117,7 +117,7 @@ pub struct EnrichedExecutingMessage { } impl EnrichedExecutingMessage { - /// Create a new [EnrichedExecutingMessage] from an [ExecutingMessage] and a chain ID. + /// Create a new [`EnrichedExecutingMessage`] from an [`ExecutingMessage`] and a chain ID. pub const fn new( inner: ExecutingMessage, executing_chain_id: u64, @@ -127,7 +127,7 @@ impl EnrichedExecutingMessage { } } -/// Extracts all [ExecutingMessage] events from list of [OpReceiptEnvelope]s. +/// Extracts all [`ExecutingMessage`] events from list of [`OpReceiptEnvelope`]s. /// /// See [`parse_log_to_executing_message`]. /// diff --git a/kona/crates/protocol/interop/src/replacement.rs b/rust/kona/crates/protocol/interop/src/replacement.rs similarity index 100% rename from kona/crates/protocol/interop/src/replacement.rs rename to rust/kona/crates/protocol/interop/src/replacement.rs diff --git a/kona/crates/protocol/interop/src/root.rs b/rust/kona/crates/protocol/interop/src/root.rs similarity index 94% rename from kona/crates/protocol/interop/src/root.rs rename to rust/kona/crates/protocol/interop/src/root.rs index 6ea6217d5ab6f..a5f525bccc87f 100644 --- a/kona/crates/protocol/interop/src/root.rs +++ b/rust/kona/crates/protocol/interop/src/root.rs @@ -1,4 +1,4 @@ -//! The [SuperRoot] type. +//! The [`SuperRoot`] type. //! //! Represents a snapshot of the state of the superchain at a given integer timestamp. @@ -8,7 +8,7 @@ use alloy_eips::BlockNumHash; use alloy_primitives::{B256, Bytes, U256, keccak256}; use alloy_rlp::{Buf, BufMut}; -/// The [SuperRoot] is the snapshot of the superchain at a given timestamp. +/// The [`SuperRoot`] is the snapshot of the superchain at a given timestamp. #[derive(Debug, Clone, Eq, PartialEq)] #[cfg_attr(feature = "arbitrary", derive(arbitrary::Arbitrary))] #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] @@ -20,14 +20,14 @@ pub struct SuperRoot { } impl SuperRoot { - /// Create a new [SuperRoot] with the given timestamp and output roots. + /// Create a new [`SuperRoot`] with the given timestamp and output roots. pub fn new(timestamp: u64, mut output_roots: Vec) -> Self { // Guarantee that the output roots are sorted by chain ID. output_roots.sort_by_key(|r| r.chain_id); Self { timestamp, output_roots } } - /// Decodes a [SuperRoot] from the given buffer. + /// Decodes a [`SuperRoot`] from the given buffer. pub fn decode(buf: &mut &[u8]) -> SuperRootResult { if buf.is_empty() { return Err(SuperRootError::UnexpectedLength); @@ -61,7 +61,7 @@ impl SuperRoot { Ok(Self { timestamp, output_roots }) } - /// Encode the [SuperRoot] into the given buffer. + /// Encode the [`SuperRoot`] into the given buffer. pub fn encode(&self, out: &mut dyn BufMut) { out.put_u8(SUPER_ROOT_VERSION); @@ -72,12 +72,12 @@ impl SuperRoot { } } - /// Returns the encoded length of the [SuperRoot]. + /// Returns the encoded length of the [`SuperRoot`]. pub const fn encoded_length(&self) -> usize { 1 + 8 + 64 * self.output_roots.len() } - /// Hashes the encoded [SuperRoot] using [keccak256]. + /// Hashes the encoded [`SuperRoot`] using [keccak256]. pub fn hash(&self) -> B256 { let mut rlp_buf = Vec::with_capacity(self.encoded_length()); self.encode(&mut rlp_buf); @@ -135,7 +135,7 @@ pub struct OutputRootWithChain { } impl OutputRootWithChain { - /// Create a new [OutputRootWithChain] with the given chain ID and output root hash. + /// Create a new [`OutputRootWithChain`] with the given chain ID and output root hash. pub const fn new(chain_id: u64, output_root: B256) -> Self { Self { chain_id, output_root } } diff --git a/kona/crates/protocol/interop/src/safety.rs b/rust/kona/crates/protocol/interop/src/safety.rs similarity index 97% rename from kona/crates/protocol/interop/src/safety.rs rename to rust/kona/crates/protocol/interop/src/safety.rs index 9fc617436339f..f186043856248 100644 --- a/kona/crates/protocol/interop/src/safety.rs +++ b/rust/kona/crates/protocol/interop/src/safety.rs @@ -2,7 +2,7 @@ use alloc::string::String; use thiserror::Error; -/// Error when parsing SafetyLevel from string. +/// Error when parsing `SafetyLevel` from string. #[derive(Error, Debug)] #[error("Invalid SafetyLevel, error: {0}")] pub struct SafetyLevelParseError(pub String); diff --git a/kona/crates/protocol/interop/src/test_util.rs b/rust/kona/crates/protocol/interop/src/test_util.rs similarity index 100% rename from kona/crates/protocol/interop/src/test_util.rs rename to rust/kona/crates/protocol/interop/src/test_util.rs diff --git a/kona/crates/protocol/interop/src/traits.rs b/rust/kona/crates/protocol/interop/src/traits.rs similarity index 100% rename from kona/crates/protocol/interop/src/traits.rs rename to rust/kona/crates/protocol/interop/src/traits.rs diff --git a/kona/crates/protocol/protocol/Cargo.toml b/rust/kona/crates/protocol/protocol/Cargo.toml similarity index 97% rename from kona/crates/protocol/protocol/Cargo.toml rename to rust/kona/crates/protocol/protocol/Cargo.toml index 993595f9630eb..3362e5bfbab2c 100644 --- a/kona/crates/protocol/protocol/Cargo.toml +++ b/rust/kona/crates/protocol/protocol/Cargo.toml @@ -54,7 +54,7 @@ alloy-serde = { workspace = true, optional = true } # `test-utils` feature spin = { workspace = true, optional = true } tracing-subscriber = { workspace = true, features = ["fmt"], optional = true } -ambassador = "0.4.2" +ambassador.workspace = true [dev-dependencies] brotli = { workspace = true, features = ["std"] } @@ -96,6 +96,7 @@ std = [ "thiserror/std", "tracing/std", "unsigned-varint/std", + "tracing-subscriber?/std" ] test-utils = [ "dep:spin", "dep:tracing-subscriber" ] arbitrary = [ @@ -127,4 +128,5 @@ serde = [ "op-alloy-rpc-types-engine/serde", "op-alloy-rpc-types/serde", "tracing-subscriber?/serde", + "miniz_oxide/serde" ] diff --git a/kona/crates/protocol/protocol/README.md b/rust/kona/crates/protocol/protocol/README.md similarity index 100% rename from kona/crates/protocol/protocol/README.md rename to rust/kona/crates/protocol/protocol/README.md diff --git a/kona/crates/protocol/protocol/examples/frames_to_batch.rs b/rust/kona/crates/protocol/protocol/examples/frames_to_batch.rs similarity index 99% rename from kona/crates/protocol/protocol/examples/frames_to_batch.rs rename to rust/kona/crates/protocol/protocol/examples/frames_to_batch.rs index 0b7535f9d3c90..5d079289df4d5 100644 --- a/kona/crates/protocol/protocol/examples/frames_to_batch.rs +++ b/rust/kona/crates/protocol/protocol/examples/frames_to_batch.rs @@ -1,4 +1,4 @@ -//! This example decodes raw [Frame]s and reads them into a [Channel] and into a [SingleBatch]. +//! This example decodes raw [Frame]s and reads them into a [Channel] and into a [`SingleBatch`]. use alloy_consensus::{SignableTransaction, TxEip1559, TxEnvelope}; use alloy_eips::eip2718::{Decodable2718, Encodable2718}; diff --git a/kona/crates/protocol/protocol/src/attributes.rs b/rust/kona/crates/protocol/protocol/src/attributes.rs similarity index 98% rename from kona/crates/protocol/protocol/src/attributes.rs rename to rust/kona/crates/protocol/protocol/src/attributes.rs index c2ecdb6a0c34a..21374eb7fc769 100644 --- a/kona/crates/protocol/protocol/src/attributes.rs +++ b/rust/kona/crates/protocol/protocol/src/attributes.rs @@ -5,7 +5,7 @@ use op_alloy_consensus::OpTxType; use op_alloy_rpc_types_engine::OpPayloadAttributes; /// Optimism Payload Attributes with parent block reference and the L1 origin block. -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Eq)] #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] pub struct OpAttributesWithParent { /// The payload attributes. @@ -75,7 +75,7 @@ impl OpAttributesWithParent { attributes .transactions .iter_mut() - .for_each(|txs| txs.retain(|tx| tx.first().cloned() == Some(OpTxType::Deposit as u8))); + .for_each(|txs| txs.retain(|tx| tx.first().copied() == Some(OpTxType::Deposit as u8))); Self { attributes, diff --git a/kona/crates/protocol/protocol/src/batch/bits.rs b/rust/kona/crates/protocol/protocol/src/batch/bits.rs similarity index 95% rename from kona/crates/protocol/protocol/src/batch/bits.rs rename to rust/kona/crates/protocol/protocol/src/batch/bits.rs index b25158fb47fd8..815051b659ce7 100644 --- a/kona/crates/protocol/protocol/src/batch/bits.rs +++ b/rust/kona/crates/protocol/protocol/src/batch/bits.rs @@ -26,7 +26,7 @@ impl SpanBatchBits { /// The bitlist is encoded as big-endian integer, left-padded with zeroes to a multiple of 8 /// bits. The encoded bitlist cannot be longer than `bit_length`. pub fn decode(b: &mut &[u8], bit_length: usize) -> Result { - let buffer_len = bit_length / 8 + if !bit_length.is_multiple_of(8) { 1 } else { 0 }; + let buffer_len = bit_length / 8 + if bit_length.is_multiple_of(8) { 0 } else { 1 }; let bits = if b.len() < buffer_len { let mut bits = vec![0; buffer_len]; bits[..b.len()].copy_from_slice(b); @@ -60,7 +60,7 @@ impl SpanBatchBits { // Round up, ensure enough bytes when number of bits is not a multiple of 8. // Alternative of (L+7)/8 is not overflow-safe. - let buf_len = bit_length / 8 + if !bit_length.is_multiple_of(8) { 1 } else { 0 }; + let buf_len = bit_length / 8 + if bit_length.is_multiple_of(8) { 0 } else { 1 }; let mut buf = vec![0; buf_len]; buf[buf_len - bits.0.len()..].copy_from_slice(bits.as_ref()); w.put_slice(&buf); @@ -73,18 +73,15 @@ impl SpanBatchBits { let bit_index = index % 8; // Check if the byte index is within the bounds of the bitlist - if byte_index < self.0.len() { + (byte_index < self.0.len()).then(|| { // Retrieve the specific byte that contains the bit we're interested in let byte = self.0[self.0.len() - byte_index - 1]; // Shift the bits of the byte to the right, based on the bit index, and // mask it with 1 to isolate the bit we're interested in. // If the result is not zero, the bit is set to 1, otherwise it's 0. - Some(if byte & (1 << bit_index) != 0 { 1 } else { 0 }) - } else { - // Return None if the index is out of bounds - None - } + if byte & (1 << bit_index) != 0 { 1 } else { 0 } + }) } /// Sets a bit in the [`SpanBatchBits`] bitlist. diff --git a/kona/crates/protocol/protocol/src/batch/core.rs b/rust/kona/crates/protocol/protocol/src/batch/core.rs similarity index 100% rename from kona/crates/protocol/protocol/src/batch/core.rs rename to rust/kona/crates/protocol/protocol/src/batch/core.rs diff --git a/kona/crates/protocol/protocol/src/batch/element.rs b/rust/kona/crates/protocol/protocol/src/batch/element.rs similarity index 95% rename from kona/crates/protocol/protocol/src/batch/element.rs rename to rust/kona/crates/protocol/protocol/src/batch/element.rs index f5e3cf1da3c75..1ae78b14bbeaf 100644 --- a/kona/crates/protocol/protocol/src/batch/element.rs +++ b/rust/kona/crates/protocol/protocol/src/batch/element.rs @@ -4,7 +4,7 @@ use crate::SingleBatch; use alloc::vec::Vec; use alloy_primitives::Bytes; -/// MAX_SPAN_BATCH_ELEMENTS is the maximum number of blocks, transactions in total, +/// `MAX_SPAN_BATCH_ELEMENTS` is the maximum number of blocks, transactions in total, /// or transaction per block allowed in a span batch. pub const MAX_SPAN_BATCH_ELEMENTS: u64 = 10_000_000; diff --git a/kona/crates/protocol/protocol/src/batch/errors.rs b/rust/kona/crates/protocol/protocol/src/batch/errors.rs similarity index 100% rename from kona/crates/protocol/protocol/src/batch/errors.rs rename to rust/kona/crates/protocol/protocol/src/batch/errors.rs diff --git a/kona/crates/protocol/protocol/src/batch/inclusion.rs b/rust/kona/crates/protocol/protocol/src/batch/inclusion.rs similarity index 94% rename from kona/crates/protocol/protocol/src/batch/inclusion.rs rename to rust/kona/crates/protocol/protocol/src/batch/inclusion.rs index 2c6bb9f1f8266..28d6cf27dee35 100644 --- a/kona/crates/protocol/protocol/src/batch/inclusion.rs +++ b/rust/kona/crates/protocol/protocol/src/batch/inclusion.rs @@ -19,8 +19,8 @@ impl BatchWithInclusionBlock { } /// Validates the batch can be applied on top of the specified L2 safe head. - /// The first entry of the l1_blocks should match the origin of the l2_safe_head. - /// One or more consecutive l1_blocks should be provided. + /// The first entry of the `l1_blocks` should match the origin of the `l2_safe_head`. + /// One or more consecutive `l1_blocks` should be provided. /// In case of only a single L1 block, the decision whether a batch is valid may have to stay /// undecided. pub async fn check_batch( diff --git a/kona/crates/protocol/protocol/src/batch/mod.rs b/rust/kona/crates/protocol/protocol/src/batch/mod.rs similarity index 100% rename from kona/crates/protocol/protocol/src/batch/mod.rs rename to rust/kona/crates/protocol/protocol/src/batch/mod.rs diff --git a/kona/crates/protocol/protocol/src/batch/payload.rs b/rust/kona/crates/protocol/protocol/src/batch/payload.rs similarity index 99% rename from kona/crates/protocol/protocol/src/batch/payload.rs rename to rust/kona/crates/protocol/protocol/src/batch/payload.rs index 62219c9f0fb52..4185867521add 100644 --- a/kona/crates/protocol/protocol/src/batch/payload.rs +++ b/rust/kona/crates/protocol/protocol/src/batch/payload.rs @@ -15,7 +15,7 @@ pub struct SpanBatchPayload { pub origin_bits: SpanBatchBits, /// List of transaction counts for each L2 block pub block_tx_counts: Vec, - /// Transactions encoded in SpanBatch specs + /// Transactions encoded in `SpanBatch` specs pub txs: SpanBatchTransactions, } diff --git a/kona/crates/protocol/protocol/src/batch/prefix.rs b/rust/kona/crates/protocol/protocol/src/batch/prefix.rs similarity index 100% rename from kona/crates/protocol/protocol/src/batch/prefix.rs rename to rust/kona/crates/protocol/protocol/src/batch/prefix.rs diff --git a/kona/crates/protocol/protocol/src/batch/raw.rs b/rust/kona/crates/protocol/protocol/src/batch/raw.rs similarity index 100% rename from kona/crates/protocol/protocol/src/batch/raw.rs rename to rust/kona/crates/protocol/protocol/src/batch/raw.rs diff --git a/kona/crates/protocol/protocol/src/batch/reader.rs b/rust/kona/crates/protocol/protocol/src/batch/reader.rs similarity index 98% rename from kona/crates/protocol/protocol/src/batch/reader.rs rename to rust/kona/crates/protocol/protocol/src/batch/reader.rs index 3c06ab4ec16b0..25582968b4f5c 100644 --- a/kona/crates/protocol/protocol/src/batch/reader.rs +++ b/rust/kona/crates/protocol/protocol/src/batch/reader.rs @@ -28,7 +28,7 @@ pub enum DecompressionError { } /// Batch Reader provides a function that iteratively consumes batches from the reader. -/// The L1Inclusion block is also provided at creation time. +/// The `L1Inclusion` block is also provided at creation time. /// Warning: the batch reader can read every batch-type. /// The caller of the batch-reader should filter the results. #[derive(Debug)] diff --git a/kona/crates/protocol/protocol/src/batch/single.rs b/rust/kona/crates/protocol/protocol/src/batch/single.rs similarity index 99% rename from kona/crates/protocol/protocol/src/batch/single.rs rename to rust/kona/crates/protocol/protocol/src/batch/single.rs index 7d2d62aac54f7..aff2d263f6876 100644 --- a/kona/crates/protocol/protocol/src/batch/single.rs +++ b/rust/kona/crates/protocol/protocol/src/batch/single.rs @@ -146,7 +146,9 @@ impl SingleBatch { let next_origin = l1_blocks[1]; // Check if the next L1 Origin could have been adopted if self.timestamp >= next_origin.timestamp { - return BatchValidity::Drop(BatchDropReason::SequencerDriftNotAdoptedNextOrigin); + return BatchValidity::Drop( + BatchDropReason::SequencerDriftNotAdoptedNextOrigin, + ); } } } @@ -164,7 +166,7 @@ impl SingleBatch { } // We can do this check earlier, but it's intensive so we do it last for the sad-path. - for tx in self.transactions.iter() { + for tx in &self.transactions { if tx.is_empty() { return BatchValidity::Drop(BatchDropReason::EmptyTransaction); } diff --git a/kona/crates/protocol/protocol/src/batch/span.rs b/rust/kona/crates/protocol/protocol/src/batch/span.rs similarity index 99% rename from kona/crates/protocol/protocol/src/batch/span.rs rename to rust/kona/crates/protocol/protocol/src/batch/span.rs index 096d498557e3f..5caaa34ea8bf1 100644 --- a/kona/crates/protocol/protocol/src/batch/span.rs +++ b/rust/kona/crates/protocol/protocol/src/batch/span.rs @@ -341,9 +341,10 @@ impl SpanBatch { seq_num: u64, ) -> Result<(), SpanBatchError> { // If the new element is not ordered with respect to the last element, panic. - if !self.batches.is_empty() && self.peek(0).timestamp > singular_batch.timestamp { - panic!("Batch is not ordered"); - } + assert!( + self.batches.is_empty() || self.peek(0).timestamp <= singular_batch.timestamp, + "Batch is not ordered" + ); let SingleBatch { epoch_hash, parent_hash, .. } = singular_batch; @@ -468,12 +469,11 @@ impl SpanBatch { return BatchValidity::Drop( BatchDropReason::SequencerDriftNotAdoptedNextOrigin, ); - } else { - info!( - target: "batch_span", - "continuing with empty batch before late L1 block to preserve L2 time invariant" - ); } + info!( + target: "batch_span", + "continuing with empty batch before late L1 block to preserve L2 time invariant" + ); } } else { // If the sequencer is ignoring the time drift rule, then drop the batch and @@ -660,6 +660,7 @@ impl SpanBatch { // If the span batch does not overlap the current safe chain, parent block should be the L2 // safe head. let mut parent_num = l2_safe_head.block_info.number; + #[allow(clippy::useless_let_if_seq)] let mut parent_block = l2_safe_head; if self.starting_timestamp() < next_timestamp { if self.starting_timestamp() > l2_safe_head.block_info.timestamp { diff --git a/kona/crates/protocol/protocol/src/batch/testdata/raw_batch.hex b/rust/kona/crates/protocol/protocol/src/batch/testdata/raw_batch.hex similarity index 100% rename from kona/crates/protocol/protocol/src/batch/testdata/raw_batch.hex rename to rust/kona/crates/protocol/protocol/src/batch/testdata/raw_batch.hex diff --git a/kona/crates/protocol/protocol/src/batch/traits.rs b/rust/kona/crates/protocol/protocol/src/batch/traits.rs similarity index 100% rename from kona/crates/protocol/protocol/src/batch/traits.rs rename to rust/kona/crates/protocol/protocol/src/batch/traits.rs diff --git a/kona/crates/protocol/protocol/src/batch/transactions.rs b/rust/kona/crates/protocol/protocol/src/batch/transactions.rs similarity index 98% rename from kona/crates/protocol/protocol/src/batch/transactions.rs rename to rust/kona/crates/protocol/protocol/src/batch/transactions.rs index 852bcf8f07097..3938d31aa1efb 100644 --- a/kona/crates/protocol/protocol/src/batch/transactions.rs +++ b/rust/kona/crates/protocol/protocol/src/batch/transactions.rs @@ -251,7 +251,9 @@ impl SpanBatchTransactions { .ok_or(SpanBatchError::Decoding(SpanDecodingError::InvalidTransactionData))?; let to = if bit == 0 { if self.tx_tos.len() <= to_idx { - return Err(SpanBatchError::Decoding(SpanDecodingError::InvalidTransactionData)); + return Err(SpanBatchError::Decoding( + SpanDecodingError::InvalidTransactionData, + )); } to_idx += 1; Some(self.tx_tos[to_idx - 1]) @@ -311,7 +313,9 @@ impl SpanBatchTransactions { (sig, tx.to(), tx.nonce(), tx.gas_limit(), tx.chain_id()) } _ => { - return Err(SpanBatchError::Decoding(SpanDecodingError::InvalidTransactionData)); + return Err(SpanBatchError::Decoding( + SpanDecodingError::InvalidTransactionData, + )); } }; diff --git a/kona/crates/protocol/protocol/src/batch/tx.rs b/rust/kona/crates/protocol/protocol/src/batch/tx.rs similarity index 85% rename from kona/crates/protocol/protocol/src/batch/tx.rs rename to rust/kona/crates/protocol/protocol/src/batch/tx.rs index a761c1fd82cc2..67a3f3bf9a6f3 100644 --- a/kona/crates/protocol/protocol/src/batch/tx.rs +++ b/rust/kona/crates/protocol/protocol/src/batch/tx.rs @@ -4,7 +4,7 @@ use crate::Frame; use alloc::vec::Vec; use alloy_primitives::Bytes; -/// BatchTransaction is a set of [`Frame`]s that can be [Into::into] [`Bytes`]. +/// `BatchTransaction` is a set of [`Frame`]s that can be [`Into::into`] [`Bytes`]. /// if the size exceeds the desired threshold. #[derive(Debug, Clone)] pub struct BatchTransaction { @@ -47,8 +47,10 @@ mod test { let frame = Frame { id: [0xFF; 16], number: 0xEE, data: vec![0xDD; 50], is_last: true }; let batch = BatchTransaction { frames: vec![frame.clone(); 5], size: 5 * frame.size() }; let bytes: Bytes = batch.to_bytes(); - let bytes = - [crate::DERIVATION_VERSION_0].iter().chain(bytes.iter()).copied().collect::>(); + let bytes = std::iter::once(&crate::DERIVATION_VERSION_0) + .chain(bytes.iter()) + .copied() + .collect::>(); let frames = Frame::parse_frames(&bytes).unwrap(); assert_eq!(frames, vec![frame; 5]); } diff --git a/kona/crates/protocol/protocol/src/batch/tx_data/eip1559.rs b/rust/kona/crates/protocol/protocol/src/batch/tx_data/eip1559.rs similarity index 100% rename from kona/crates/protocol/protocol/src/batch/tx_data/eip1559.rs rename to rust/kona/crates/protocol/protocol/src/batch/tx_data/eip1559.rs diff --git a/kona/crates/protocol/protocol/src/batch/tx_data/eip2930.rs b/rust/kona/crates/protocol/protocol/src/batch/tx_data/eip2930.rs similarity index 100% rename from kona/crates/protocol/protocol/src/batch/tx_data/eip2930.rs rename to rust/kona/crates/protocol/protocol/src/batch/tx_data/eip2930.rs diff --git a/kona/crates/protocol/protocol/src/batch/tx_data/eip7702.rs b/rust/kona/crates/protocol/protocol/src/batch/tx_data/eip7702.rs similarity index 100% rename from kona/crates/protocol/protocol/src/batch/tx_data/eip7702.rs rename to rust/kona/crates/protocol/protocol/src/batch/tx_data/eip7702.rs diff --git a/kona/crates/protocol/protocol/src/batch/tx_data/legacy.rs b/rust/kona/crates/protocol/protocol/src/batch/tx_data/legacy.rs similarity index 100% rename from kona/crates/protocol/protocol/src/batch/tx_data/legacy.rs rename to rust/kona/crates/protocol/protocol/src/batch/tx_data/legacy.rs diff --git a/kona/crates/protocol/protocol/src/batch/tx_data/mod.rs b/rust/kona/crates/protocol/protocol/src/batch/tx_data/mod.rs similarity index 100% rename from kona/crates/protocol/protocol/src/batch/tx_data/mod.rs rename to rust/kona/crates/protocol/protocol/src/batch/tx_data/mod.rs diff --git a/kona/crates/protocol/protocol/src/batch/tx_data/wrapper.rs b/rust/kona/crates/protocol/protocol/src/batch/tx_data/wrapper.rs similarity index 97% rename from kona/crates/protocol/protocol/src/batch/tx_data/wrapper.rs rename to rust/kona/crates/protocol/protocol/src/batch/tx_data/wrapper.rs index 23a08b07e12f0..8ade66108d001 100644 --- a/kona/crates/protocol/protocol/src/batch/tx_data/wrapper.rs +++ b/rust/kona/crates/protocol/protocol/src/batch/tx_data/wrapper.rs @@ -162,7 +162,9 @@ impl SpanBatchTransactionData { } Self::Eip7702(data) => { let Some(addr) = to else { - return Err(SpanBatchError::Decoding(SpanDecodingError::InvalidTransactionData)); + return Err(SpanBatchError::Decoding( + SpanDecodingError::InvalidTransactionData, + )); }; TxEnvelope::Eip7702(data.to_signed_tx(nonce, gas, addr, chain_id, signature)?) } diff --git a/kona/crates/protocol/protocol/src/batch/type.rs b/rust/kona/crates/protocol/protocol/src/batch/type.rs similarity index 100% rename from kona/crates/protocol/protocol/src/batch/type.rs rename to rust/kona/crates/protocol/protocol/src/batch/type.rs diff --git a/kona/crates/protocol/protocol/src/batch/validity.rs b/rust/kona/crates/protocol/protocol/src/batch/validity.rs similarity index 98% rename from kona/crates/protocol/protocol/src/batch/validity.rs rename to rust/kona/crates/protocol/protocol/src/batch/validity.rs index b26e5d6914adb..8d671f174ff2c 100644 --- a/kona/crates/protocol/protocol/src/batch/validity.rs +++ b/rust/kona/crates/protocol/protocol/src/batch/validity.rs @@ -28,7 +28,7 @@ pub enum BatchDropReason { // === Timestamp/origin relationship drops === /// Batch timestamp is before the L1 origin timestamp. TimestampBeforeL1Origin, - /// Sequencer drift overflow (checked_add failed). + /// Sequencer drift overflow (`checked_add` failed). SequencerDriftOverflow, /// Batch exceeded sequencer time drift with non-empty transactions. SequencerDriftExceeded, @@ -62,7 +62,7 @@ pub enum BatchDropReason { OverlappedTxCountMismatch, /// Overlapped block's transaction does not match. OverlappedTxMismatch, - /// Failed to extract L2BlockInfo from execution payload. + /// Failed to extract `L2BlockInfo` from execution payload. L2BlockInfoExtractionFailed, /// Overlapped block's L1 origin number does not match. OverlappedL1OriginMismatch, diff --git a/kona/crates/protocol/protocol/src/block.rs b/rust/kona/crates/protocol/protocol/src/block.rs similarity index 99% rename from kona/crates/protocol/protocol/src/block.rs rename to rust/kona/crates/protocol/protocol/src/block.rs index 0ef02993629cb..832b6e1173f75 100644 --- a/kona/crates/protocol/protocol/src/block.rs +++ b/rust/kona/crates/protocol/protocol/src/block.rs @@ -153,10 +153,10 @@ pub enum FromBlockError { impl PartialEq for FromBlockError { fn eq(&self, other: &Self) -> bool { match (self, other) { - (Self::InvalidGenesisHash, Self::InvalidGenesisHash) => true, - (Self::MissingL1InfoDeposit(a), Self::MissingL1InfoDeposit(b)) => a == b, - (Self::UnexpectedTxType(a), Self::UnexpectedTxType(b)) => a == b, + (Self::InvalidGenesisHash, Self::InvalidGenesisHash) | (Self::TxEnvelopeDecodeError(_), Self::TxEnvelopeDecodeError(_)) => true, + (Self::MissingL1InfoDeposit(a), Self::MissingL1InfoDeposit(b)) => a == b, + (Self::UnexpectedTxType(a), Self::UnexpectedTxType(b)) | (Self::FirstTxNonDeposit(a), Self::FirstTxNonDeposit(b)) => a == b, (Self::BlockInfoDecodeError(a), Self::BlockInfoDecodeError(b)) => a == b, _ => false, @@ -239,7 +239,7 @@ impl L2BlockInfo { #[cfg(test)] mod tests { use super::*; - use alloc::{string::ToString, vec}; + use alloc::string::ToString; use alloy_consensus::{Header, TxEnvelope}; use alloy_primitives::b256; use op_alloy_consensus::OpBlock; diff --git a/kona/crates/protocol/protocol/src/brotli.rs b/rust/kona/crates/protocol/protocol/src/brotli.rs similarity index 98% rename from kona/crates/protocol/protocol/src/brotli.rs rename to rust/kona/crates/protocol/protocol/src/brotli.rs index bd20ece7414b4..ea5d0c43358e6 100644 --- a/kona/crates/protocol/protocol/src/brotli.rs +++ b/rust/kona/crates/protocol/protocol/src/brotli.rs @@ -17,6 +17,7 @@ pub enum BrotliDecompressionError { /// Decompresses the given bytes data using the Brotli decompressor implemented /// in the [`brotli`](https://crates.io/crates/brotli) crate. +#[allow(clippy::large_stack_frames)] pub fn decompress_brotli( data: &[u8], max_rlp_bytes_per_channel: usize, @@ -40,8 +41,8 @@ pub fn decompress_brotli( let mut written = 0; // Decompress the data stream until success or failure - loop { - match brotli::BrotliDecompressStream( + while matches!( + brotli::BrotliDecompressStream( &mut available_in, &mut input_offset, data, @@ -50,23 +51,20 @@ pub fn decompress_brotli( &mut output, &mut written, &mut brotli_state, - ) { - brotli::BrotliResult::ResultSuccess => break, - brotli::BrotliResult::NeedsMoreOutput => { - // Resize the output buffer to double the size, following standard - // practice for buffer resizing in streams. - let old_len = output.len(); - let new_len = old_len * 2; - - if new_len > max_rlp_bytes_per_channel { - return Err(BrotliDecompressionError::BatchTooLarge); - } - - output.resize(new_len, 0); - available_out += old_len; - } - _ => break, + ), + brotli::BrotliResult::NeedsMoreOutput + ) { + // Resize the output buffer to double the size, following standard + // practice for buffer resizing in streams. + let old_len = output.len(); + let new_len = old_len * 2; + + if new_len > max_rlp_bytes_per_channel { + return Err(BrotliDecompressionError::BatchTooLarge); } + + output.resize(new_len, 0); + available_out += old_len; } // Truncate the output buffer to the written bytes diff --git a/kona/crates/protocol/protocol/src/channel.rs b/rust/kona/crates/protocol/protocol/src/channel.rs similarity index 98% rename from kona/crates/protocol/protocol/src/channel.rs rename to rust/kona/crates/protocol/protocol/src/channel.rs index e62689cdd58c6..65e53b1e7aa92 100644 --- a/kona/crates/protocol/protocol/src/channel.rs +++ b/rust/kona/crates/protocol/protocol/src/channel.rs @@ -234,8 +234,8 @@ mod test { assert_eq!(channel.size(), test_case.sizes[i] as usize); } - if test_case.frame_data.is_some() { - assert_eq!(channel.frame_data().unwrap(), test_case.frame_data.unwrap()); + if let Some(test_frame_data) = test_case.frame_data { + assert_eq!(channel.frame_data().unwrap(), test_frame_data); } } diff --git a/kona/crates/protocol/protocol/src/deposits.rs b/rust/kona/crates/protocol/protocol/src/deposits.rs similarity index 99% rename from kona/crates/protocol/protocol/src/deposits.rs rename to rust/kona/crates/protocol/protocol/src/deposits.rs index a1485cd326552..7ed34b53112f6 100644 --- a/kona/crates/protocol/protocol/src/deposits.rs +++ b/rust/kona/crates/protocol/protocol/src/deposits.rs @@ -172,7 +172,7 @@ pub fn decode_deposit(block_hash: B256, index: usize, log: &Log) -> Result u64; - /// The address of the batch new_from_l1_base_feesubmitter + /// The address of the batch `new_from_l1_base_feesubmitter` fn batcher_address(&self) -> Address; } diff --git a/kona/crates/protocol/protocol/src/info/ecotone.rs b/rust/kona/crates/protocol/protocol/src/info/ecotone.rs similarity index 95% rename from kona/crates/protocol/protocol/src/info/ecotone.rs rename to rust/kona/crates/protocol/protocol/src/info/ecotone.rs index cc6fa79079c87..e578a28896f73 100644 --- a/kona/crates/protocol/protocol/src/info/ecotone.rs +++ b/rust/kona/crates/protocol/protocol/src/info/ecotone.rs @@ -21,15 +21,15 @@ use ambassador::Delegate; /// | Bytes | Field | /// +---------+--------------------------+ /// | 4 | Function signature | -/// | 4 | BaseFeeScalar | -/// | 4 | BlobBaseFeeScalar | -/// | 8 | SequenceNumber | +/// | 4 | `BaseFeeScalar` | +/// | 4 | `BlobBaseFeeScalar` | +/// | 8 | `SequenceNumber` | /// | 8 | Timestamp | -/// | 8 | L1BlockNumber | -/// | 32 | BaseFee | -/// | 32 | BlobBaseFee | -/// | 32 | BlockHash | -/// | 32 | BatcherHash | +/// | 8 | `L1BlockNumber` | +/// | 32 | `BaseFee` | +/// | 32 | `BlobBaseFee` | +/// | 32 | `BlockHash` | +/// | 32 | `BatcherHash` | /// +---------+--------------------------+ #[derive(Debug, Clone, Hash, Eq, PartialEq, Default, Copy, Delegate)] #[allow(clippy::duplicated_attributes)] @@ -89,7 +89,7 @@ impl L1BlockInfoEcotone { /// The length of an L1 info transaction in Ecotone. pub const L1_INFO_TX_LEN: usize = 4 + 32 * 5; - /// The 4 byte selector of "setL1BlockValuesEcotone()" + /// The 4 byte selector of "`setL1BlockValuesEcotone()`" pub const L1_INFO_TX_SELECTOR: [u8; 4] = [0x44, 0x0a, 0x5e, 0x20]; /// Encodes the [`L1BlockInfoEcotone`] object into Ethereum transaction calldata. diff --git a/kona/crates/protocol/protocol/src/info/ecotone_base.rs b/rust/kona/crates/protocol/protocol/src/info/ecotone_base.rs similarity index 100% rename from kona/crates/protocol/protocol/src/info/ecotone_base.rs rename to rust/kona/crates/protocol/protocol/src/info/ecotone_base.rs diff --git a/kona/crates/protocol/protocol/src/info/errors.rs b/rust/kona/crates/protocol/protocol/src/info/errors.rs similarity index 100% rename from kona/crates/protocol/protocol/src/info/errors.rs rename to rust/kona/crates/protocol/protocol/src/info/errors.rs diff --git a/kona/crates/protocol/protocol/src/info/isthmus.rs b/rust/kona/crates/protocol/protocol/src/info/isthmus.rs similarity index 94% rename from kona/crates/protocol/protocol/src/info/isthmus.rs rename to rust/kona/crates/protocol/protocol/src/info/isthmus.rs index c51f6a8e67ff9..3d34d067391c4 100644 --- a/kona/crates/protocol/protocol/src/info/isthmus.rs +++ b/rust/kona/crates/protocol/protocol/src/info/isthmus.rs @@ -23,17 +23,17 @@ use crate::{ /// | Bytes | Field | /// +---------+--------------------------+ /// | 4 | Function signature | -/// | 4 | BaseFeeScalar | -/// | 4 | BlobBaseFeeScalar | -/// | 8 | SequenceNumber | +/// | 4 | `BaseFeeScalar` | +/// | 4 | `BlobBaseFeeScalar` | +/// | 8 | `SequenceNumber` | /// | 8 | Timestamp | -/// | 8 | L1BlockNumber | -/// | 32 | BaseFee | -/// | 32 | BlobBaseFee | -/// | 32 | BlockHash | -/// | 32 | BatcherHash | -/// | 4 | OperatorFeeScalar | -/// | 8 | OperatorFeeConstant | +/// | 8 | `L1BlockNumber` | +/// | 32 | `BaseFee` | +/// | 32 | `BlobBaseFee` | +/// | 32 | `BlockHash` | +/// | 32 | `BatcherHash` | +/// | 4 | `OperatorFeeScalar` | +/// | 8 | `OperatorFeeConstant` | /// +---------+--------------------------+ #[derive(Debug, Clone, Hash, Eq, PartialEq, Default, Copy, Delegate)] #[allow(clippy::duplicated_attributes)] @@ -84,7 +84,7 @@ impl L1BlockInfoIsthmus { /// The length of an L1 info transaction in Isthmus. pub const L1_INFO_TX_LEN: usize = 4 + 32 * 5 + 4 + 8; - /// The 4 byte selector of "setL1BlockValuesIsthmus()" + /// The 4 byte selector of "`setL1BlockValuesIsthmus()`" pub const L1_INFO_TX_SELECTOR: [u8; 4] = [0x09, 0x89, 0x99, 0xbe]; /// Encodes the [`L1BlockInfoIsthmus`] object into Ethereum transaction calldata. diff --git a/kona/crates/protocol/protocol/src/info/jovian.rs b/rust/kona/crates/protocol/protocol/src/info/jovian.rs similarity index 93% rename from kona/crates/protocol/protocol/src/info/jovian.rs rename to rust/kona/crates/protocol/protocol/src/info/jovian.rs index 8ea78e875b4cc..0375b506c7b6f 100644 --- a/kona/crates/protocol/protocol/src/info/jovian.rs +++ b/rust/kona/crates/protocol/protocol/src/info/jovian.rs @@ -20,18 +20,18 @@ use ambassador::{self, Delegate}; /// | Bytes | Field | /// +---------+--------------------------+ /// | 4 | Function signature | -/// | 4 | BaseFeeScalar | -/// | 4 | BlobBaseFeeScalar | -/// | 8 | SequenceNumber | +/// | 4 | `BaseFeeScalar` | +/// | 4 | `BlobBaseFeeScalar` | +/// | 8 | `SequenceNumber` | /// | 8 | Timestamp | -/// | 8 | L1BlockNumber | -/// | 32 | BaseFee | -/// | 32 | BlobBaseFee | -/// | 32 | BlockHash | -/// | 32 | BatcherHash | -/// | 4 | OperatorFeeScalar | -/// | 8 | OperatorFeeConstant | -/// | 2 | DAFootprintGasScalar | +/// | 8 | `L1BlockNumber` | +/// | 32 | `BaseFee` | +/// | 32 | `BlobBaseFee` | +/// | 32 | `BlockHash` | +/// | 32 | `BatcherHash` | +/// | 4 | `OperatorFeeScalar` | +/// | 8 | `OperatorFeeConstant` | +/// | 2 | `DAFootprintGasScalar` | /// +---------+--------------------------+ #[derive(Debug, Clone, Hash, Eq, PartialEq, Default, Copy, Delegate)] #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] @@ -77,7 +77,7 @@ impl L1BlockInfoJovian { /// The length of an L1 info transaction in Jovian. pub const L1_INFO_TX_LEN: usize = 4 + 32 * 5 + 4 + 8 + 2; - /// The 4 byte selector of "setL1BlockValuesJovian()" + /// The 4 byte selector of "`setL1BlockValuesJovian()`" /// Those are the first 4 calldata bytes -> `` pub const L1_INFO_TX_SELECTOR: [u8; 4] = [0x3d, 0xb6, 0xbe, 0x2b]; diff --git a/kona/crates/protocol/protocol/src/info/mod.rs b/rust/kona/crates/protocol/protocol/src/info/mod.rs similarity index 87% rename from kona/crates/protocol/protocol/src/info/mod.rs rename to rust/kona/crates/protocol/protocol/src/info/mod.rs index aefc6a2571d5d..67eeb37b3157f 100644 --- a/kona/crates/protocol/protocol/src/info/mod.rs +++ b/rust/kona/crates/protocol/protocol/src/info/mod.rs @@ -15,9 +15,10 @@ //! //! The chains of embedding are: //! -//! 1. L1BlockInfoBedrockBase < L1BlockInfoEcotoneBase < L1BlockInfoIsthmus < L1BlockInfoJovian -//! 2. L1BlockInfoBedrockBase < L1BlockInfoBedrock -//! 3. L1BlockInfoEcotoneBase < L1BlockInfoEcotone +//! 1. `L1BlockInfoBedrockBase` < `L1BlockInfoEcotoneBase` < `L1BlockInfoIsthmus` < +//! `L1BlockInfoJovian` +//! 2. `L1BlockInfoBedrockBase` < `L1BlockInfoBedrock` +//! 3. `L1BlockInfoEcotoneBase` < `L1BlockInfoEcotone` mod variant; pub use variant::L1BlockInfoTx; diff --git a/kona/crates/protocol/protocol/src/info/variant.rs b/rust/kona/crates/protocol/protocol/src/info/variant.rs similarity index 99% rename from kona/crates/protocol/protocol/src/info/variant.rs rename to rust/kona/crates/protocol/protocol/src/info/variant.rs index bfc34d18fa50c..be82398a2cf63 100644 --- a/kona/crates/protocol/protocol/src/info/variant.rs +++ b/rust/kona/crates/protocol/protocol/src/info/variant.rs @@ -852,10 +852,10 @@ mod test { assert_eq!( l1_info.blob_base_fee(), l1_header - .blob_fee(if fork_active != use_wrong_params { - BlobParams::prague() - } else { + .blob_fee(if fork_active == use_wrong_params { BlobParams::cancun() + } else { + BlobParams::prague() }) .unwrap_or(1) ); diff --git a/kona/crates/protocol/protocol/src/lib.rs b/rust/kona/crates/protocol/protocol/src/lib.rs similarity index 97% rename from kona/crates/protocol/protocol/src/lib.rs rename to rust/kona/crates/protocol/protocol/src/lib.rs index 84f292975e338..4a3a75e18d814 100644 --- a/kona/crates/protocol/protocol/src/lib.rs +++ b/rust/kona/crates/protocol/protocol/src/lib.rs @@ -4,7 +4,7 @@ html_favicon_url = "https://raw.githubusercontent.com/op-rs/kona/main/assets/favicon.ico", issue_tracker_base_url = "https://github.com/op-rs/kona/issues/" )] -#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))] +#![cfg_attr(docsrs, feature(doc_cfg))] #![cfg_attr(not(feature = "std"), no_std)] extern crate alloc; diff --git a/kona/crates/protocol/protocol/src/output_root.rs b/rust/kona/crates/protocol/protocol/src/output_root.rs similarity index 94% rename from kona/crates/protocol/protocol/src/output_root.rs rename to rust/kona/crates/protocol/protocol/src/output_root.rs index ce076d2951fd9..5011524565feb 100644 --- a/kona/crates/protocol/protocol/src/output_root.rs +++ b/rust/kona/crates/protocol/protocol/src/output_root.rs @@ -4,12 +4,11 @@ use alloy_primitives::{B256, keccak256}; use derive_more::Display; /// The [`OutputRoot`] is a high-level commitment to an L2 block. It lifts the state root from the -/// block header as well as the storage root of the [Predeploys::L2_TO_L1_MESSAGE_PASSER] account +/// block header as well as the storage root of the +/// [`Predeploys::L2_TO_L1_MESSAGE_PASSER`](crate::Predeploys::L2_TO_L1_MESSAGE_PASSER) account /// into the top-level commitment construction. /// /// -/// -/// [Predeploys::L2_TO_L1_MESSAGE_PASSER]: crate::Predeploys::L2_TO_L1_MESSAGE_PASSER #[derive(Debug, Display, Clone, Copy, PartialEq, Eq, Hash)] #[display("OutputRootV0({}, {}, {})", state_root, bridge_storage_root, block_hash)] pub struct OutputRoot { diff --git a/kona/crates/protocol/protocol/src/predeploys.rs b/rust/kona/crates/protocol/protocol/src/predeploys.rs similarity index 92% rename from kona/crates/protocol/protocol/src/predeploys.rs rename to rust/kona/crates/protocol/protocol/src/predeploys.rs index 6d30ee0ad6066..5921ebe771865 100644 --- a/kona/crates/protocol/protocol/src/predeploys.rs +++ b/rust/kona/crates/protocol/protocol/src/predeploys.rs @@ -39,19 +39,19 @@ impl Predeploys { Self::L2_TO_L2_XDM, ]; - /// The LegacyMessagePasser contract stores commitments to withdrawal transactions before the + /// The `LegacyMessagePasser` contract stores commitments to withdrawal transactions before the /// Bedrock upgrade. /// pub const LEGACY_MESSAGE_PASSER: Address = address!("0x4200000000000000000000000000000000000000"); - /// The DeployerWhitelist was used to provide additional safety during initial phases of + /// The `DeployerWhitelist` was used to provide additional safety during initial phases of /// Optimism. /// pub const DEPLOYER_WHITELIST: Address = address!("0x4200000000000000000000000000000000000002"); - /// The LegacyERC20ETH predeploy represented all ether in the system before the Bedrock upgrade. - /// + /// The `LegacyERC20ETH` predeploy represented all ether in the system before the Bedrock + /// upgrade. pub const LEGACY_ERC20_ETH: Address = address!("0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000"); /// The WETH9 predeploy address. @@ -133,9 +133,9 @@ impl Predeploys { /// The Operator Fee Vault proxy address. pub const OPERATOR_FEE_VAULT: Address = address!("0x420000000000000000000000000000000000001B"); - /// The CrossL2Inbox proxy address. + /// The `CrossL2Inbox` proxy address. pub const CROSS_L2_INBOX: Address = address!("0x4200000000000000000000000000000000000022"); - /// The L2ToL2CrossDomainMessenger proxy address. + /// The `L2ToL2CrossDomainMessenger` proxy address. pub const L2_TO_L2_XDM: Address = address!("0x4200000000000000000000000000000000000023"); } diff --git a/kona/crates/protocol/protocol/src/sync.rs b/rust/kona/crates/protocol/protocol/src/sync.rs similarity index 100% rename from kona/crates/protocol/protocol/src/sync.rs rename to rust/kona/crates/protocol/protocol/src/sync.rs diff --git a/kona/crates/protocol/protocol/src/test_utils.rs b/rust/kona/crates/protocol/protocol/src/test_utils.rs similarity index 97% rename from kona/crates/protocol/protocol/src/test_utils.rs rename to rust/kona/crates/protocol/protocol/src/test_utils.rs index bf1347d40917b..38455129065b1 100644 --- a/kona/crates/protocol/protocol/src/test_utils.rs +++ b/rust/kona/crates/protocol/protocol/src/test_utils.rs @@ -72,7 +72,7 @@ impl BatchValidationProvider for TestBatchValidator { self.blocks .iter() .find(|b| b.block_info.number == number) - .cloned() + .copied() .ok_or_else(|| TestBatchValidatorError::BlockNotFound) } @@ -95,7 +95,8 @@ impl TraceStorage { self.0 .lock() .iter() - .filter_map(|(l, message)| if *l == level { Some(message.clone()) } else { None }) + .filter(|&(l, _message)| *l == level) + .map(|(_l, message)| message.clone()) .collect() } diff --git a/kona/crates/protocol/protocol/src/utils.rs b/rust/kona/crates/protocol/protocol/src/utils.rs similarity index 100% rename from kona/crates/protocol/protocol/src/utils.rs rename to rust/kona/crates/protocol/protocol/src/utils.rs diff --git a/kona/crates/protocol/protocol/testdata/batch.hex b/rust/kona/crates/protocol/protocol/testdata/batch.hex similarity index 100% rename from kona/crates/protocol/protocol/testdata/batch.hex rename to rust/kona/crates/protocol/protocol/testdata/batch.hex diff --git a/kona/crates/protocol/registry/Cargo.toml b/rust/kona/crates/protocol/registry/Cargo.toml similarity index 99% rename from kona/crates/protocol/registry/Cargo.toml rename to rust/kona/crates/protocol/registry/Cargo.toml index f865ad7e569f9..ffe2511d58dc1 100644 --- a/kona/crates/protocol/registry/Cargo.toml +++ b/rust/kona/crates/protocol/registry/Cargo.toml @@ -57,4 +57,5 @@ std = [ "serde/std", "serde_json/std", "tabled?/std", + "toml/std" ] diff --git a/kona/crates/protocol/registry/README.md b/rust/kona/crates/protocol/registry/README.md similarity index 100% rename from kona/crates/protocol/registry/README.md rename to rust/kona/crates/protocol/registry/README.md diff --git a/kona/crates/protocol/registry/build.rs b/rust/kona/crates/protocol/registry/build.rs similarity index 79% rename from kona/crates/protocol/registry/build.rs rename to rust/kona/crates/protocol/registry/build.rs index c362b82655b4a..3e5b3ab89757a 100644 --- a/kona/crates/protocol/registry/build.rs +++ b/rust/kona/crates/protocol/registry/build.rs @@ -24,9 +24,10 @@ fn main() { // Check if the `superchain-registry` directory exists let superchain_registry = format!("{src_dir}/superchain-registry"); - if !std::path::Path::new(&superchain_registry).exists() { - panic!("Git Submodule missing. Please run `just source` to initialize the submodule."); - } + assert!( + std::path::Path::new(&superchain_registry).exists(), + "Git Submodule missing. Please run `just source` to initialize the submodule." + ); // Copy the `superchain-registry/chainList.json` file to `etc/chainList.json` let chain_list = format!("{src_dir}/superchain-registry/chainList.json"); @@ -76,7 +77,7 @@ fn main() { superchains.superchains.sort_by(|a, b| a.name.cmp(&b.name)); // For each superchain, sort the list of chains by chain id. - for superchain in superchains.superchains.iter_mut() { + for superchain in &mut superchains.superchains { superchain.chains.sort_by(|a, b| a.chain_id.cmp(&b.chain_id)); } @@ -106,9 +107,11 @@ fn merge_custom_configs() { .expect("KONA_CUSTOM_CONFIGS_DIR must be set when KONA_CUSTOM_CONFIGS is enabled"); println!("cargo:rerun-if-env-changed=KONA_CUSTOM_CONFIGS_DIR"); let custom_configs_dir = PathBuf::from(custom_configs_dir); - if !custom_configs_dir.exists() { - panic!("Custom configs directory {} does not exist", custom_configs_dir.display()); - } + assert!( + custom_configs_dir.exists(), + "Custom configs directory {} does not exist", + custom_configs_dir.display() + ); let custom_chain_list_path = custom_configs_dir.join("chainList.json"); let custom_configs_path = custom_configs_dir.join("configs.json"); @@ -127,12 +130,8 @@ fn merge_custom_configs() { } fn merge_chain_list(custom_path: &Path, target_path: &Path) { - if !custom_path.exists() { - panic!("Custom chain list {} does not exist", custom_path.display()); - } - if !target_path.exists() { - panic!("Target chain list {} does not exist", target_path.display()); - } + assert!(custom_path.exists(), "Custom chain list {} does not exist", custom_path.display()); + assert!(target_path.exists(), "Target chain list {} does not exist", target_path.display()); let mut merged_chain_list: ChainList = read_json(target_path); let custom_chain_list: ChainList = read_json(custom_path); @@ -140,36 +139,34 @@ fn merge_chain_list(custom_path: &Path, target_path: &Path) { let mut chains_by_id: BTreeMap = BTreeMap::new(); let mut identifiers: BTreeMap = BTreeMap::new(); - for chain in merged_chain_list.chains.iter() { + for chain in &merged_chain_list.chains { let ident_key = chain.identifier.to_ascii_lowercase(); identifiers.insert(ident_key, chain.clone()); chains_by_id.insert(chain.chain_id, chain.clone()); } // preserve ordering of chains in etc/chainList.json - for chain in custom_chain_list.chains.iter() { + for chain in &custom_chain_list.chains { let ident_key = chain.identifier.to_ascii_lowercase(); if let Some(existing_chain) = identifiers.get(&ident_key) { if existing_chain == chain { continue; - } else { - panic!( - "Chain identifier `{}` in {} already exists in the registry with a different config", - chain.identifier, - custom_path.display() - ); } + panic!( + "Chain identifier `{}` in {} already exists in the registry with a different config", + chain.identifier, + custom_path.display() + ); } if let Some(existing_chain) = chains_by_id.get(&chain.chain_id) { if existing_chain == chain { continue; - } else { - panic!( - "Chain id {} in {} already exists in the registry with a different config for identifier `{}`", - chain.chain_id, - custom_path.display(), - existing_chain.identifier - ); } + panic!( + "Chain id {} in {} already exists in the registry with a different config for identifier `{}`", + chain.chain_id, + custom_path.display(), + existing_chain.identifier + ); } identifiers.insert(ident_key, chain.clone()); chains_by_id.insert(chain.chain_id, chain.clone()); @@ -180,12 +177,8 @@ fn merge_chain_list(custom_path: &Path, target_path: &Path) { } fn merge_superchain_configs(custom_path: &Path, target_path: &Path) { - if !custom_path.exists() { - panic!("Custom configs {} does not exist", custom_path.display()); - } - if !target_path.exists() { - panic!("Target configs {} does not exist", target_path.display()); - } + assert!(custom_path.exists(), "Custom configs {} does not exist", custom_path.display()); + assert!(target_path.exists(), "Target configs {} does not exist", target_path.display()); let mut superchains: BTreeMap = read_json::(target_path) .superchains @@ -219,7 +212,7 @@ fn merge_superchain_configs(custom_path: &Path, target_path: &Path) { let mut merged: Vec = superchains.into_values().collect(); merged.sort_by(|a, b| a.name.cmp(&b.name)); - for superchain in merged.iter_mut() { + for superchain in &mut merged { superchain.chains.sort_by(|a, b| a.chain_id.cmp(&b.chain_id)); } @@ -238,12 +231,11 @@ fn merge_superchain_entry(base: Superchain, custom: Superchain) -> Superchain { if let Some(existing_config) = chain_map.get(&chain.chain_id) { if existing_config == &chain { continue; - } else { - panic!( - "conflict merging superchain `{}`: chain id {} has differing configs", - merged.name, chain.chain_id - ); } + panic!( + "conflict merging superchain `{}`: chain id {} has differing configs", + merged.name, chain.chain_id + ); } chain_map.insert(chain.chain_id, chain.clone()); merged.chains.push(chain.clone()); @@ -261,50 +253,46 @@ fn validate_chain_configs(chain_list_path: &Path, superchains_path: &Path) { let mut list_chain_ids = BTreeSet::new(); for chain in &chain_list.chains { - if !list_chain_ids.insert(chain.chain_id) { - panic!( - "Duplicate chain id {} (identifier `{}`) detected in {}", - chain.chain_id, - chain.identifier, - chain_list_path.display() - ); - } + assert!( + list_chain_ids.insert(chain.chain_id), + "Duplicate chain id {} (identifier `{}`) detected in {}", + chain.chain_id, + chain.identifier, + chain_list_path.display() + ); } let mut config_chain_ids = BTreeSet::new(); for superchain in &superchains.superchains { for chain in &superchain.chains { - if !config_chain_ids.insert(chain.chain_id) { - panic!( - "Duplicate chain id {} detected across superchain configs in {}", - chain.chain_id, - superchains_path.display() - ); - } + assert!( + config_chain_ids.insert(chain.chain_id), + "Duplicate chain id {} detected across superchain configs in {}", + chain.chain_id, + superchains_path.display() + ); } } for chain_id in &config_chain_ids { - if !list_chain_ids.contains(chain_id) { - panic!( - "Chain id {} present in {} but missing from {}", - chain_id, - superchains_path.display(), - chain_list_path.display() - ); - } + assert!( + list_chain_ids.contains(chain_id), + "Chain id {} present in {} but missing from {}", + chain_id, + superchains_path.display(), + chain_list_path.display() + ); } for chain in chain_list.chains { - if !config_chain_ids.contains(&chain.chain_id) { - panic!( - "Chain `{}` (chain id {}) present in {} but missing from {}", - chain.identifier, - chain.chain_id, - chain_list_path.display(), - superchains_path.display() - ); - } + assert!( + config_chain_ids.contains(&chain.chain_id), + "Chain `{}` (chain id {}) present in {} but missing from {}", + chain.identifier, + chain.chain_id, + chain_list_path.display(), + superchains_path.display() + ); } } diff --git a/kona/crates/protocol/registry/etc/chainList.json b/rust/kona/crates/protocol/registry/etc/chainList.json similarity index 100% rename from kona/crates/protocol/registry/etc/chainList.json rename to rust/kona/crates/protocol/registry/etc/chainList.json diff --git a/kona/crates/protocol/registry/etc/configs.json b/rust/kona/crates/protocol/registry/etc/configs.json similarity index 100% rename from kona/crates/protocol/registry/etc/configs.json rename to rust/kona/crates/protocol/registry/etc/configs.json diff --git a/kona/crates/protocol/registry/justfile b/rust/kona/crates/protocol/registry/justfile similarity index 100% rename from kona/crates/protocol/registry/justfile rename to rust/kona/crates/protocol/registry/justfile diff --git a/kona/crates/protocol/registry/src/l1/mod.rs b/rust/kona/crates/protocol/registry/src/l1/mod.rs similarity index 100% rename from kona/crates/protocol/registry/src/l1/mod.rs rename to rust/kona/crates/protocol/registry/src/l1/mod.rs diff --git a/kona/crates/protocol/registry/src/lib.rs b/rust/kona/crates/protocol/registry/src/lib.rs similarity index 93% rename from kona/crates/protocol/registry/src/lib.rs rename to rust/kona/crates/protocol/registry/src/lib.rs index d3ab32b16f826..5c4f131f75709 100644 --- a/kona/crates/protocol/registry/src/lib.rs +++ b/rust/kona/crates/protocol/registry/src/lib.rs @@ -4,7 +4,7 @@ html_favicon_url = "https://raw.githubusercontent.com/op-rs/kona/main/assets/favicon.ico", issue_tracker_base_url = "https://github.com/op-rs/kona/issues/" )] -#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))] +#![cfg_attr(docsrs, feature(doc_cfg))] #![cfg_attr(not(feature = "std"), no_std)] extern crate alloc; @@ -41,13 +41,13 @@ lazy_static::lazy_static! { pub static ref L1_CONFIGS: HashMap = _INIT.l1_configs.clone(); } -/// Returns a [RollupConfig] by its identifier. +/// Returns a [`RollupConfig`] by its identifier. pub fn scr_rollup_config_by_ident(ident: &str) -> Option<&RollupConfig> { let chain_id = CHAINS.get_chain_by_ident(ident)?.chain_id; ROLLUP_CONFIGS.get(&chain_id) } -/// Returns a [RollupConfig] by its identifier. +/// Returns a [`RollupConfig`] by its identifier. pub fn scr_rollup_config_by_alloy_ident(chain: &alloy_chains::Chain) -> Option<&RollupConfig> { ROLLUP_CONFIGS.get(&chain.id()) } @@ -152,12 +152,14 @@ mod tests { if CUSTOM_CONFIGS_TEST_ENABLED != Some("true") { return; }; - if CUSTOM_CONFIGS != Some("true") { - panic!("KONA_CUSTOM_CONFIGS is required when KONA_CUSTOM_CONFIGS_TEST is set"); - } - if CUSTOM_CONFIGS_DIR.is_none() { - panic!("KONA_CUSTOM_CONFIGS_DIR is required when KONA_CUSTOM_CONFIGS_TEST is set"); - } + assert!( + CUSTOM_CONFIGS == Some("true"), + "KONA_CUSTOM_CONFIGS is required when KONA_CUSTOM_CONFIGS_TEST is set" + ); + assert!( + CUSTOM_CONFIGS_DIR.is_some(), + "KONA_CUSTOM_CONFIGS_DIR is required when KONA_CUSTOM_CONFIGS_TEST is set" + ); let test1_chain_id = 123999119; let test2_chain_id = 223999119; diff --git a/kona/crates/protocol/registry/src/superchain.rs b/rust/kona/crates/protocol/registry/src/superchain.rs similarity index 100% rename from kona/crates/protocol/registry/src/superchain.rs rename to rust/kona/crates/protocol/registry/src/superchain.rs diff --git a/kona/crates/protocol/registry/src/test_utils/base_mainnet.rs b/rust/kona/crates/protocol/registry/src/test_utils/base_mainnet.rs similarity index 98% rename from kona/crates/protocol/registry/src/test_utils/base_mainnet.rs rename to rust/kona/crates/protocol/registry/src/test_utils/base_mainnet.rs index 7d0c73e77bd5e..0082ad633ba63 100644 --- a/kona/crates/protocol/registry/src/test_utils/base_mainnet.rs +++ b/rust/kona/crates/protocol/registry/src/test_utils/base_mainnet.rs @@ -13,7 +13,7 @@ use kona_genesis::{ HardForkConfig, RollupConfig, SystemConfig, }; -/// The [RollupConfig] for Base Mainnet. +/// The [`RollupConfig`] for Base Mainnet. pub const BASE_MAINNET_CONFIG: RollupConfig = RollupConfig { genesis: ChainGenesis { l1: BlockNumHash { diff --git a/kona/crates/protocol/registry/src/test_utils/base_sepolia.rs b/rust/kona/crates/protocol/registry/src/test_utils/base_sepolia.rs similarity index 98% rename from kona/crates/protocol/registry/src/test_utils/base_sepolia.rs rename to rust/kona/crates/protocol/registry/src/test_utils/base_sepolia.rs index b52d182efb9db..5f5b667d475e9 100644 --- a/kona/crates/protocol/registry/src/test_utils/base_sepolia.rs +++ b/rust/kona/crates/protocol/registry/src/test_utils/base_sepolia.rs @@ -13,7 +13,7 @@ use kona_genesis::{ HardForkConfig, RollupConfig, SystemConfig, }; -/// The [RollupConfig] for Base Sepolia. +/// The [`RollupConfig`] for Base Sepolia. pub const BASE_SEPOLIA_CONFIG: RollupConfig = RollupConfig { genesis: ChainGenesis { l1: BlockNumHash { diff --git a/kona/crates/protocol/registry/src/test_utils/mod.rs b/rust/kona/crates/protocol/registry/src/test_utils/mod.rs similarity index 100% rename from kona/crates/protocol/registry/src/test_utils/mod.rs rename to rust/kona/crates/protocol/registry/src/test_utils/mod.rs diff --git a/kona/crates/protocol/registry/src/test_utils/op_mainnet.rs b/rust/kona/crates/protocol/registry/src/test_utils/op_mainnet.rs similarity index 98% rename from kona/crates/protocol/registry/src/test_utils/op_mainnet.rs rename to rust/kona/crates/protocol/registry/src/test_utils/op_mainnet.rs index 1bb0cbba4e7ea..b6e3eea7417e8 100644 --- a/kona/crates/protocol/registry/src/test_utils/op_mainnet.rs +++ b/rust/kona/crates/protocol/registry/src/test_utils/op_mainnet.rs @@ -13,7 +13,7 @@ use kona_genesis::{ OP_MAINNET_BASE_FEE_CONFIG, RollupConfig, SystemConfig, }; -/// The [RollupConfig] for OP Mainnet. +/// The [`RollupConfig`] for OP Mainnet. pub const OP_MAINNET_CONFIG: RollupConfig = RollupConfig { genesis: ChainGenesis { l1: BlockNumHash { diff --git a/kona/crates/protocol/registry/src/test_utils/op_sepolia.rs b/rust/kona/crates/protocol/registry/src/test_utils/op_sepolia.rs similarity index 98% rename from kona/crates/protocol/registry/src/test_utils/op_sepolia.rs rename to rust/kona/crates/protocol/registry/src/test_utils/op_sepolia.rs index e912d72ca9da1..9c42a29c8c830 100644 --- a/kona/crates/protocol/registry/src/test_utils/op_sepolia.rs +++ b/rust/kona/crates/protocol/registry/src/test_utils/op_sepolia.rs @@ -13,7 +13,7 @@ use kona_genesis::{ OP_SEPOLIA_BASE_FEE_CONFIG, RollupConfig, SystemConfig, }; -/// The [RollupConfig] for OP Sepolia. +/// The [`RollupConfig`] for OP Sepolia. pub const OP_SEPOLIA_CONFIG: RollupConfig = RollupConfig { genesis: ChainGenesis { l1: BlockNumHash { diff --git a/kona/crates/protocol/registry/tests/fixtures/custom/chainList.json b/rust/kona/crates/protocol/registry/tests/fixtures/custom/chainList.json similarity index 100% rename from kona/crates/protocol/registry/tests/fixtures/custom/chainList.json rename to rust/kona/crates/protocol/registry/tests/fixtures/custom/chainList.json diff --git a/kona/crates/protocol/registry/tests/fixtures/custom/configs.json b/rust/kona/crates/protocol/registry/tests/fixtures/custom/configs.json similarity index 100% rename from kona/crates/protocol/registry/tests/fixtures/custom/configs.json rename to rust/kona/crates/protocol/registry/tests/fixtures/custom/configs.json diff --git a/kona/crates/providers/providers-alloy/Cargo.toml b/rust/kona/crates/providers/providers-alloy/Cargo.toml similarity index 96% rename from kona/crates/providers/providers-alloy/Cargo.toml rename to rust/kona/crates/providers/providers-alloy/Cargo.toml index 734dd25508f7c..0eb62c6f63ceb 100644 --- a/kona/crates/providers/providers-alloy/Cargo.toml +++ b/rust/kona/crates/providers/providers-alloy/Cargo.toml @@ -43,7 +43,6 @@ lru.workspace = true serde.workspace = true thiserror.workspace = true async-trait.workspace = true -reqwest = { workspace = true, features = ["json"] } tower.workspace = true http-body-util.workspace = true diff --git a/kona/crates/providers/providers-alloy/README.md b/rust/kona/crates/providers/providers-alloy/README.md similarity index 100% rename from kona/crates/providers/providers-alloy/README.md rename to rust/kona/crates/providers/providers-alloy/README.md diff --git a/kona/crates/providers/providers-alloy/src/beacon_client.rs b/rust/kona/crates/providers/providers-alloy/src/beacon_client.rs similarity index 97% rename from kona/crates/providers/providers-alloy/src/beacon_client.rs rename to rust/kona/crates/providers/providers-alloy/src/beacon_client.rs index cacaf9d511295..ba06919ba69fa 100644 --- a/kona/crates/providers/providers-alloy/src/beacon_client.rs +++ b/rust/kona/crates/providers/providers-alloy/src/beacon_client.rs @@ -6,9 +6,9 @@ use crate::blobs::BoxedBlobWithIndex; use alloy_eips::eip4844::{IndexedBlobHash, env_settings::EnvKzgSettings, kzg_to_versioned_hash}; use alloy_primitives::{B256, FixedBytes}; use alloy_rpc_types_beacon::sidecar::GetBlobsResponse; +use alloy_transport_http::reqwest::{self, Client}; use async_trait::async_trait; use c_kzg::Blob; -use reqwest::Client; use std::{boxed::Box, collections::HashMap, format, string::String, vec::Vec}; use thiserror::Error; @@ -67,10 +67,10 @@ impl APIGenesisResponse { } } -/// The [BeaconClient] is a thin wrapper around the Beacon API. +/// The [`BeaconClient`] is a thin wrapper around the Beacon API. #[async_trait] pub trait BeaconClient { - /// The error type for [BeaconClient] implementations. + /// The error type for [`BeaconClient`] implementations. type Error: core::fmt::Display; /// Returns the slot interval in seconds. @@ -114,7 +114,7 @@ pub enum BeaconClientError { KZG(#[from] c_kzg::Error), } -/// An online implementation of the [BeaconClient] trait. +/// An online implementation of the [`BeaconClient`] trait. #[derive(Debug, Clone)] pub struct OnlineBeaconClient { /// The base URL of the beacon API. @@ -127,10 +127,10 @@ pub struct OnlineBeaconClient { } impl OnlineBeaconClient { - /// Creates a new [OnlineBeaconClient] from the provided base URL string. + /// Creates a new [`OnlineBeaconClient`] from the provided base URL string. pub fn new_http(mut base: String) -> Self { // If base ends with a slash, remove it - if base.ends_with("/") { + if base.ends_with('/') { base.remove(base.len() - 1); } Self { diff --git a/kona/crates/providers/providers-alloy/src/blobs.rs b/rust/kona/crates/providers/providers-alloy/src/blobs.rs similarity index 94% rename from kona/crates/providers/providers-alloy/src/blobs.rs rename to rust/kona/crates/providers/providers-alloy/src/blobs.rs index 022a22ac0d12c..1f73789e0ab31 100644 --- a/kona/crates/providers/providers-alloy/src/blobs.rs +++ b/rust/kona/crates/providers/providers-alloy/src/blobs.rs @@ -21,7 +21,7 @@ pub struct BoxedBlobWithIndex { pub blob: Box, } -/// An online implementation of the [BlobProvider] trait. +/// An online implementation of the [`BlobProvider`] trait. #[derive(Debug, Clone)] pub struct OnlineBlobProvider { /// The Beacon API client. @@ -33,10 +33,10 @@ pub struct OnlineBlobProvider { } impl OnlineBlobProvider { - /// Creates a new instance of the [OnlineBlobProvider]. + /// Creates a new instance of the [`OnlineBlobProvider`]. /// /// The `genesis_time` and `slot_interval` arguments are _optional_ and the - /// [OnlineBlobProvider] will attempt to load them dynamically at runtime if they are not + /// [`OnlineBlobProvider`] will attempt to load them dynamically at runtime if they are not /// provided. /// /// ## Panics @@ -93,7 +93,7 @@ impl OnlineBlobProvider { /// Converts a vector of boxed blobs with index to a vector of blob transaction sidecar items. /// - /// Note: for performance reasons, we need to transmute the blobs to the c_kzg::Blob type to + /// Note: for performance reasons, we need to transmute the blobs to the `c_kzg::Blob` type to /// avoid the overhead of moving the blobs around or reallocating the memory. fn sidecar_from_blobs( blobs: Vec, @@ -164,7 +164,7 @@ where /// Fetches blobs that were confirmed in the specified L1 block with the given indexed /// hashes. The blobs are validated for their index and hashes using the specified - /// [IndexedBlobHash]. + /// [`IndexedBlobHash`]. async fn get_and_validate_blobs( &mut self, block_ref: &BlockInfo, @@ -180,7 +180,7 @@ where .map(|(i, sidecar)| { let hash = blob_hashes .get(i) - .ok_or(BlobProviderError::Backend("Missing blob hash".to_string()))? + .ok_or_else(|| BlobProviderError::Backend("Missing blob hash".to_string()))? .hash .as_slice(); diff --git a/kona/crates/providers/providers-alloy/src/chain_provider.rs b/rust/kona/crates/providers/providers-alloy/src/chain_provider.rs similarity index 94% rename from kona/crates/providers/providers-alloy/src/chain_provider.rs rename to rust/kona/crates/providers/providers-alloy/src/chain_provider.rs index 22f68b7b29acb..b36a0c715fb28 100644 --- a/kona/crates/providers/providers-alloy/src/chain_provider.rs +++ b/rust/kona/crates/providers/providers-alloy/src/chain_provider.rs @@ -7,14 +7,15 @@ use alloy_eips::BlockId; use alloy_primitives::B256; use alloy_provider::{Provider, RootProvider}; use alloy_transport::{RpcError, TransportErrorKind}; +use alloy_transport_http::reqwest; use async_trait::async_trait; use kona_derive::{ChainProvider, PipelineError, PipelineErrorKind}; use kona_protocol::BlockInfo; use lru::LruCache; use std::{boxed::Box, num::NonZeroUsize, vec::Vec}; -/// The [AlloyChainProvider] is a concrete implementation of the [ChainProvider] trait, providing -/// data over Ethereum JSON-RPC using an alloy provider as the backend. +/// The [`AlloyChainProvider`] is a concrete implementation of the [`ChainProvider`] trait, +/// providing data over Ethereum JSON-RPC using an alloy provider as the backend. #[derive(Debug, Clone)] pub struct AlloyChainProvider { /// The inner Ethereum JSON-RPC provider. @@ -30,7 +31,7 @@ pub struct AlloyChainProvider { } impl AlloyChainProvider { - /// Creates a new [AlloyChainProvider] with the given alloy provider. + /// Creates a new [`AlloyChainProvider`] with the given alloy provider. /// /// ## Panics /// - Panics if `cache_size` is zero. @@ -38,7 +39,7 @@ impl AlloyChainProvider { Self::new_with_trust(inner, cache_size, true) } - /// Creates a new [AlloyChainProvider] with the given alloy provider and trust setting. + /// Creates a new [`AlloyChainProvider`] with the given alloy provider and trust setting. /// /// ## Panics /// - Panics if `cache_size` is zero. @@ -54,7 +55,7 @@ impl AlloyChainProvider { } } - /// Creates a new [AlloyChainProvider] from the provided [reqwest::Url]. + /// Creates a new [`AlloyChainProvider`] from the provided [`reqwest::Url`]. pub fn new_http(url: reqwest::Url, cache_size: usize) -> Self { let inner = RootProvider::new_http(url); Self::new(inner, cache_size) @@ -79,7 +80,7 @@ impl AlloyChainProvider { self.inner.get_chain_id().await } - /// Verifies that a header's hash matches the expected hash when trust_rpc is false. + /// Verifies that a header's hash matches the expected hash when `trust_rpc` is false. fn verify_header_hash( &self, header: &Header, @@ -105,7 +106,7 @@ impl AlloyChainProvider { } } -/// An error for the [AlloyChainProvider]. +/// An error for the [`AlloyChainProvider`]. #[allow(clippy::enum_variant_names)] #[derive(Debug, thiserror::Error)] pub enum AlloyChainProviderError { diff --git a/kona/crates/providers/providers-alloy/src/l2_chain_provider.rs b/rust/kona/crates/providers/providers-alloy/src/l2_chain_provider.rs similarity index 92% rename from kona/crates/providers/providers-alloy/src/l2_chain_provider.rs rename to rust/kona/crates/providers/providers-alloy/src/l2_chain_provider.rs index d12ef30852aad..d26f15e4a6031 100644 --- a/kona/crates/providers/providers-alloy/src/l2_chain_provider.rs +++ b/rust/kona/crates/providers/providers-alloy/src/l2_chain_provider.rs @@ -11,6 +11,7 @@ use alloy_transport::{RpcError, TransportErrorKind}; use alloy_transport_http::{ AuthLayer, Http, HyperClient, hyper_util::{client::legacy::Client, rt::TokioExecutor}, + reqwest, }; use async_trait::async_trait; use http_body_util::Full; @@ -23,7 +24,7 @@ use op_alloy_network::Optimism; use std::{num::NonZeroUsize, sync::Arc}; use tower::ServiceBuilder; -/// The [AlloyL2ChainProvider] is a concrete implementation of the [L2ChainProvider] trait, +/// The [`AlloyL2ChainProvider`] is a concrete implementation of the [`L2ChainProvider`] trait, /// providing data over Ethereum JSON-RPC using an alloy provider as the backend. #[derive(Debug, Clone)] pub struct AlloyL2ChainProvider { @@ -38,7 +39,7 @@ pub struct AlloyL2ChainProvider { } impl AlloyL2ChainProvider { - /// Creates a new [AlloyL2ChainProvider] with the given alloy provider and [RollupConfig]. + /// Creates a new [`AlloyL2ChainProvider`] with the given alloy provider and [`RollupConfig`]. /// /// ## Panics /// - Panics if `cache_size` is zero. @@ -50,7 +51,7 @@ impl AlloyL2ChainProvider { Self::new_with_trust(inner, rollup_config, cache_size, true) } - /// Creates a new [AlloyL2ChainProvider] with the given alloy provider, [RollupConfig], and + /// Creates a new [`AlloyL2ChainProvider`] with the given alloy provider, [`RollupConfig`], and /// trust setting. /// /// ## Panics @@ -79,7 +80,7 @@ impl AlloyL2ChainProvider { self.inner.get_block_number().await } - /// Verifies that a block's hash matches the expected hash when trust_rpc is false. + /// Verifies that a block's hash matches the expected hash when `trust_rpc` is false. fn verify_block_hash( &self, block_hash: B256, @@ -98,7 +99,7 @@ impl AlloyL2ChainProvider { Ok(()) } - /// Returns the [L2BlockInfo] for the given [BlockId]. [None] is returned if the block + /// Returns the [`L2BlockInfo`] for the given [`BlockId`]. [None] is returned if the block /// does not exist. pub async fn block_info_by_id( &mut self, @@ -156,7 +157,7 @@ impl AlloyL2ChainProvider { result } - /// Creates a new [AlloyL2ChainProvider] from the provided [reqwest::Url]. + /// Creates a new [`AlloyL2ChainProvider`] from the provided [`reqwest::Url`]. pub fn new_http( url: reqwest::Url, rollup_config: Arc, @@ -177,7 +178,7 @@ impl AlloyL2ChainProvider { } } -/// An error for the [AlloyL2ChainProvider]. +/// An error for the [`AlloyL2ChainProvider`]. #[derive(Debug, thiserror::Error)] pub enum AlloyL2ChainProviderError { /// Transport error @@ -186,10 +187,10 @@ pub enum AlloyL2ChainProviderError { /// Failed to find a block. #[error("Failed to fetch block {0}")] BlockNotFound(u64), - /// Failed to construct [L2BlockInfo] from the block and genesis. + /// Failed to construct [`L2BlockInfo`] from the block and genesis. #[error("Failed to construct L2BlockInfo from block {0} and genesis")] L2BlockInfoConstruction(u64), - /// Failed to convert the block into a [SystemConfig]. + /// Failed to convert the block into a [`SystemConfig`]. #[error("Failed to convert block {0} into SystemConfig")] SystemConfigConversion(u64), } diff --git a/kona/crates/providers/providers-alloy/src/lib.rs b/rust/kona/crates/providers/providers-alloy/src/lib.rs similarity index 94% rename from kona/crates/providers/providers-alloy/src/lib.rs rename to rust/kona/crates/providers/providers-alloy/src/lib.rs index c3559a6dfe1ad..da0d7013a8551 100644 --- a/kona/crates/providers/providers-alloy/src/lib.rs +++ b/rust/kona/crates/providers/providers-alloy/src/lib.rs @@ -4,7 +4,7 @@ html_favicon_url = "https://raw.githubusercontent.com/op-rs/kona/main/assets/favicon.ico", issue_tracker_base_url = "https://github.com/op-rs/kona/issues/" )] -#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))] +#![cfg_attr(docsrs, feature(doc_cfg))] mod metrics; pub use beacon_client::BeaconClientError; diff --git a/kona/crates/providers/providers-alloy/src/metrics.rs b/rust/kona/crates/providers/providers-alloy/src/metrics.rs similarity index 100% rename from kona/crates/providers/providers-alloy/src/metrics.rs rename to rust/kona/crates/providers/providers-alloy/src/metrics.rs diff --git a/kona/crates/providers/providers-alloy/src/pipeline.rs b/rust/kona/crates/providers/providers-alloy/src/pipeline.rs similarity index 97% rename from kona/crates/providers/providers-alloy/src/pipeline.rs rename to rust/kona/crates/providers/providers-alloy/src/pipeline.rs index 818e153d9d781..66d0dbed902bd 100644 --- a/kona/crates/providers/providers-alloy/src/pipeline.rs +++ b/rust/kona/crates/providers/providers-alloy/src/pipeline.rs @@ -171,7 +171,7 @@ impl SignalReceiver for OnlinePipeline { } impl OriginProvider for OnlinePipeline { - /// Returns the optional L1 [BlockInfo] origin. + /// Returns the optional L1 [`BlockInfo`] origin. fn origin(&self) -> Option { match self { Self::Polled(pipeline) => pipeline.origin(), @@ -193,7 +193,7 @@ impl Iterator for OnlinePipeline { #[async_trait] impl Pipeline for OnlinePipeline { - /// Peeks at the next [OpAttributesWithParent] from the pipeline. + /// Peeks at the next [`OpAttributesWithParent`] from the pipeline. fn peek(&self) -> Option<&OpAttributesWithParent> { match self { Self::Polled(pipeline) => pipeline.peek(), @@ -217,7 +217,7 @@ impl Pipeline for OnlinePipeline { } } - /// Returns the [SystemConfig] by L2 number. + /// Returns the [`SystemConfig`] by L2 number. async fn system_config_by_number( &mut self, number: u64, diff --git a/kona/crates/providers/providers-local/Cargo.toml b/rust/kona/crates/providers/providers-local/Cargo.toml similarity index 100% rename from kona/crates/providers/providers-local/Cargo.toml rename to rust/kona/crates/providers/providers-local/Cargo.toml diff --git a/kona/crates/providers/providers-local/README.md b/rust/kona/crates/providers/providers-local/README.md similarity index 95% rename from kona/crates/providers/providers-local/README.md rename to rust/kona/crates/providers/providers-local/README.md index a64dc94d7962b..71cd989fbd196 100644 --- a/kona/crates/providers/providers-local/README.md +++ b/rust/kona/crates/providers/providers-local/README.md @@ -10,8 +10,8 @@ This crate provides a pure in-memory L2 provider implementation for the Kona OP ## Features -- **BufferedL2Provider**: A pure in-memory L2 provider that serves data from cached blocks -- **ChainStateBuffer**: LRU cache for managing chain state with reorganization support +- **`BufferedL2Provider`**: A pure in-memory L2 provider that serves data from cached blocks +- **`ChainStateBuffer`**: LRU cache for managing chain state with reorganization support - **Chain Event Handling**: Support for processing execution extension notifications for chain events (commits, reorgs, reverts) - **No External Dependencies**: Operates entirely from in-memory state without RPC calls diff --git a/kona/crates/providers/providers-local/src/buffer.rs b/rust/kona/crates/providers/providers-local/src/buffer.rs similarity index 100% rename from kona/crates/providers/providers-local/src/buffer.rs rename to rust/kona/crates/providers/providers-local/src/buffer.rs diff --git a/kona/crates/providers/providers-local/src/buffered.rs b/rust/kona/crates/providers/providers-local/src/buffered.rs similarity index 99% rename from kona/crates/providers/providers-local/src/buffered.rs rename to rust/kona/crates/providers/providers-local/src/buffered.rs index 6c1bd84a97880..ae9ee8dfca961 100644 --- a/kona/crates/providers/providers-local/src/buffered.rs +++ b/rust/kona/crates/providers/providers-local/src/buffered.rs @@ -147,7 +147,7 @@ impl BufferedL2Provider { } } -/// Clone implementation for BufferedL2Provider +/// Clone implementation for `BufferedL2Provider` impl Clone for BufferedL2Provider { fn clone(&self) -> Self { Self { @@ -255,10 +255,10 @@ pub enum BufferedProviderError { /// Block not found in cache #[error("Block {0} not found in cache")] BlockNotFound(u64), - /// Failed to construct L2BlockInfo + /// Failed to construct `L2BlockInfo` #[error("Failed to construct L2BlockInfo for block {0}")] L2BlockInfoConstruction(u64), - /// Failed to convert block to SystemConfig + /// Failed to convert block to `SystemConfig` #[error("Failed to convert block {0} to SystemConfig")] SystemConfigConversion(u64), /// System config missing from genesis diff --git a/kona/crates/providers/providers-local/src/lib.rs b/rust/kona/crates/providers/providers-local/src/lib.rs similarity index 91% rename from kona/crates/providers/providers-local/src/lib.rs rename to rust/kona/crates/providers/providers-local/src/lib.rs index 5b7db5d730728..f5e0a99bf9c70 100644 --- a/kona/crates/providers/providers-local/src/lib.rs +++ b/rust/kona/crates/providers/providers-local/src/lib.rs @@ -4,7 +4,7 @@ html_favicon_url = "https://raw.githubusercontent.com/op-rs/kona/main/assets/favicon.ico", issue_tracker_base_url = "https://github.com/op-rs/kona/issues/" )] -#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))] +#![cfg_attr(docsrs, feature(doc_cfg))] mod buffer; pub use buffer::{CacheStats, CachedBlock, ChainBufferError, ChainStateBuffer, ChainStateEvent}; diff --git a/kona/crates/providers/providers-local/src/metrics.rs b/rust/kona/crates/providers/providers-local/src/metrics.rs similarity index 100% rename from kona/crates/providers/providers-local/src/metrics.rs rename to rust/kona/crates/providers/providers-local/src/metrics.rs diff --git a/kona/crates/providers/providers-local/tests/integration.rs b/rust/kona/crates/providers/providers-local/tests/integration.rs similarity index 100% rename from kona/crates/providers/providers-local/tests/integration.rs rename to rust/kona/crates/providers/providers-local/tests/integration.rs diff --git a/kona/crates/supervisor/core/Cargo.toml b/rust/kona/crates/supervisor/core/Cargo.toml similarity index 98% rename from kona/crates/supervisor/core/Cargo.toml rename to rust/kona/crates/supervisor/core/Cargo.toml index 7a673a4742f8d..020aeba6f946c 100644 --- a/kona/crates/supervisor/core/Cargo.toml +++ b/rust/kona/crates/supervisor/core/Cargo.toml @@ -48,7 +48,6 @@ thiserror.workspace = true tokio = { workspace = true, features = ["sync", "macros"] } tokio-util.workspace = true auto_impl.workspace = true -reqwest = { workspace = true } futures = { workspace = true } derive_more = { workspace = true, features = ["try_from"] } diff --git a/kona/crates/supervisor/core/src/chain_processor/chain.rs b/rust/kona/crates/supervisor/core/src/chain_processor/chain.rs similarity index 100% rename from kona/crates/supervisor/core/src/chain_processor/chain.rs rename to rust/kona/crates/supervisor/core/src/chain_processor/chain.rs diff --git a/kona/crates/supervisor/core/src/chain_processor/error.rs b/rust/kona/crates/supervisor/core/src/chain_processor/error.rs similarity index 100% rename from kona/crates/supervisor/core/src/chain_processor/error.rs rename to rust/kona/crates/supervisor/core/src/chain_processor/error.rs diff --git a/kona/crates/supervisor/core/src/chain_processor/handlers/cross_chain.rs b/rust/kona/crates/supervisor/core/src/chain_processor/handlers/cross_chain.rs similarity index 100% rename from kona/crates/supervisor/core/src/chain_processor/handlers/cross_chain.rs rename to rust/kona/crates/supervisor/core/src/chain_processor/handlers/cross_chain.rs diff --git a/kona/crates/supervisor/core/src/chain_processor/handlers/finalized.rs b/rust/kona/crates/supervisor/core/src/chain_processor/handlers/finalized.rs similarity index 100% rename from kona/crates/supervisor/core/src/chain_processor/handlers/finalized.rs rename to rust/kona/crates/supervisor/core/src/chain_processor/handlers/finalized.rs diff --git a/kona/crates/supervisor/core/src/chain_processor/handlers/invalidation.rs b/rust/kona/crates/supervisor/core/src/chain_processor/handlers/invalidation.rs similarity index 100% rename from kona/crates/supervisor/core/src/chain_processor/handlers/invalidation.rs rename to rust/kona/crates/supervisor/core/src/chain_processor/handlers/invalidation.rs diff --git a/kona/crates/supervisor/core/src/chain_processor/handlers/mod.rs b/rust/kona/crates/supervisor/core/src/chain_processor/handlers/mod.rs similarity index 100% rename from kona/crates/supervisor/core/src/chain_processor/handlers/mod.rs rename to rust/kona/crates/supervisor/core/src/chain_processor/handlers/mod.rs diff --git a/kona/crates/supervisor/core/src/chain_processor/handlers/origin.rs b/rust/kona/crates/supervisor/core/src/chain_processor/handlers/origin.rs similarity index 99% rename from kona/crates/supervisor/core/src/chain_processor/handlers/origin.rs rename to rust/kona/crates/supervisor/core/src/chain_processor/handlers/origin.rs index 94f488adea810..b7c4e503e53a2 100644 --- a/kona/crates/supervisor/core/src/chain_processor/handlers/origin.rs +++ b/rust/kona/crates/supervisor/core/src/chain_processor/handlers/origin.rs @@ -219,7 +219,7 @@ mod tests { assert!(result.is_ok()); // The handler should send the reset command - if let Some(ManagedNodeCommand::Reset {}) = rx.recv().await { + if rx.recv().await == Some(ManagedNodeCommand::Reset {}) { // Command received successfully } else { panic!("Expected Reset command"); diff --git a/kona/crates/supervisor/core/src/chain_processor/handlers/safe_block.rs b/rust/kona/crates/supervisor/core/src/chain_processor/handlers/safe_block.rs similarity index 100% rename from kona/crates/supervisor/core/src/chain_processor/handlers/safe_block.rs rename to rust/kona/crates/supervisor/core/src/chain_processor/handlers/safe_block.rs diff --git a/kona/crates/supervisor/core/src/chain_processor/handlers/unsafe_block.rs b/rust/kona/crates/supervisor/core/src/chain_processor/handlers/unsafe_block.rs similarity index 100% rename from kona/crates/supervisor/core/src/chain_processor/handlers/unsafe_block.rs rename to rust/kona/crates/supervisor/core/src/chain_processor/handlers/unsafe_block.rs diff --git a/kona/crates/supervisor/core/src/chain_processor/metrics.rs b/rust/kona/crates/supervisor/core/src/chain_processor/metrics.rs similarity index 100% rename from kona/crates/supervisor/core/src/chain_processor/metrics.rs rename to rust/kona/crates/supervisor/core/src/chain_processor/metrics.rs diff --git a/kona/crates/supervisor/core/src/chain_processor/mod.rs b/rust/kona/crates/supervisor/core/src/chain_processor/mod.rs similarity index 100% rename from kona/crates/supervisor/core/src/chain_processor/mod.rs rename to rust/kona/crates/supervisor/core/src/chain_processor/mod.rs diff --git a/kona/crates/supervisor/core/src/chain_processor/state/mod.rs b/rust/kona/crates/supervisor/core/src/chain_processor/state/mod.rs similarity index 100% rename from kona/crates/supervisor/core/src/chain_processor/state/mod.rs rename to rust/kona/crates/supervisor/core/src/chain_processor/state/mod.rs diff --git a/kona/crates/supervisor/core/src/chain_processor/state/processor.rs b/rust/kona/crates/supervisor/core/src/chain_processor/state/processor.rs similarity index 100% rename from kona/crates/supervisor/core/src/chain_processor/state/processor.rs rename to rust/kona/crates/supervisor/core/src/chain_processor/state/processor.rs diff --git a/kona/crates/supervisor/core/src/config/core_config.rs b/rust/kona/crates/supervisor/core/src/config/core_config.rs similarity index 100% rename from kona/crates/supervisor/core/src/config/core_config.rs rename to rust/kona/crates/supervisor/core/src/config/core_config.rs diff --git a/kona/crates/supervisor/core/src/config/mod.rs b/rust/kona/crates/supervisor/core/src/config/mod.rs similarity index 100% rename from kona/crates/supervisor/core/src/config/mod.rs rename to rust/kona/crates/supervisor/core/src/config/mod.rs diff --git a/kona/crates/supervisor/core/src/config/rollup_config_set.rs b/rust/kona/crates/supervisor/core/src/config/rollup_config_set.rs similarity index 94% rename from kona/crates/supervisor/core/src/config/rollup_config_set.rs rename to rust/kona/crates/supervisor/core/src/config/rollup_config_set.rs index fa5d03ee8e826..66ef32a06f40e 100644 --- a/kona/crates/supervisor/core/src/config/rollup_config_set.rs +++ b/rust/kona/crates/supervisor/core/src/config/rollup_config_set.rs @@ -21,7 +21,7 @@ impl Genesis { Self { l1, l2 } } - /// Creates a new Genesis from a RollupConfig. + /// Creates a new Genesis from a `RollupConfig`. pub const fn new_from_rollup_genesis(genesis: ChainGenesis, l1_block: BlockInfo) -> Self { Self { l1: l1_block, @@ -35,7 +35,7 @@ impl Genesis { } } -/// RollupConfig contains the configuration for the Optimism rollup. +/// `RollupConfig` contains the configuration for the Optimism rollup. #[derive(Debug, Default, Clone)] pub struct RollupConfig { /// Genesis anchor information for the rollup. @@ -49,7 +49,7 @@ pub struct RollupConfig { } impl RollupConfig { - /// Creates a new RollupConfig with the given genesis and block time. + /// Creates a new `RollupConfig` with the given genesis and block time. pub const fn new(genesis: Genesis, block_time: u64, interop_time: Option) -> Self { Self { genesis, block_time, interop_time } } @@ -106,7 +106,7 @@ impl RollupConfig { } } -/// RollupConfigSet contains the configuration for multiple Optimism rollups. +/// `RollupConfigSet` contains the configuration for multiple Optimism rollups. #[derive(Debug, Clone, Default)] pub struct RollupConfigSet { /// The rollup configurations for the Optimism rollups. @@ -114,7 +114,7 @@ pub struct RollupConfigSet { } impl RollupConfigSet { - /// Creates a new RollupConfigSet with the given rollup configurations. + /// Creates a new `RollupConfigSet` with the given rollup configurations. pub const fn new(rollups: HashMap) -> Self { Self { rollups } } @@ -124,7 +124,7 @@ impl RollupConfigSet { self.rollups.get(&chain_id) } - /// adds a new rollup configuration to the set using the provided chain ID and RollupConfig. + /// adds a new rollup configuration to the set using the provided chain ID and `RollupConfig`. pub fn add_from_rollup_config( &mut self, chain_id: u64, diff --git a/kona/crates/supervisor/core/src/error.rs b/rust/kona/crates/supervisor/core/src/error.rs similarity index 94% rename from kona/crates/supervisor/core/src/error.rs rename to rust/kona/crates/supervisor/core/src/error.rs index 08622fb595901..8f188dae46e8a 100644 --- a/kona/crates/supervisor/core/src/error.rs +++ b/rust/kona/crates/supervisor/core/src/error.rs @@ -41,7 +41,7 @@ pub enum SupervisorError { #[error(transparent)] ManagedNodeError(#[from] ManagedNodeError), - /// Indicates the error occurred while parsing the access_list + /// Indicates the error occurred while parsing the `access_list` #[error(transparent)] AccessListError(#[from] AccessListError), @@ -65,10 +65,12 @@ pub enum SupervisorError { impl PartialEq for SupervisorError { fn eq(&self, other: &Self) -> bool { - use SupervisorError::*; + use SupervisorError::{ + AccessListError, EmptyDependencySet, L1BlockMismatch, ManagedNodeError, + ManagedNodeMissing, SerdeJson, SpecError, StorageError, Unimplemented, + }; match (self, other) { - (Unimplemented, Unimplemented) => true, - (EmptyDependencySet, EmptyDependencySet) => true, + (Unimplemented, Unimplemented) | (EmptyDependencySet, EmptyDependencySet) => true, (SpecError(a), SpecError(b)) => a == b, (StorageError(a), StorageError(b)) => a == b, (ManagedNodeMissing(a), ManagedNodeMissing(b)) => a == b, @@ -100,7 +102,7 @@ pub enum SpecError { } impl SpecError { - /// Maps the proper error code from SuperchainDAError. + /// Maps the proper error code from `SuperchainDAError`. /// Introduced a new error code for errors not in the spec. pub const fn code(&self) -> i32 { match self { @@ -143,7 +145,6 @@ impl From for SpecError { StorageError::EntryNotFound(_) => Self::from(SuperchainDAError::MissedData), StorageError::ConflictError => Self::from(SuperchainDAError::ConflictingData), StorageError::BlockOutOfOrder => Self::from(SuperchainDAError::OutOfOrder), - StorageError::DatabaseNotInitialised => Self::ErrorNotInSpec, _ => Self::ErrorNotInSpec, } } diff --git a/kona/crates/supervisor/core/src/event/chain.rs b/rust/kona/crates/supervisor/core/src/event/chain.rs similarity index 98% rename from kona/crates/supervisor/core/src/event/chain.rs rename to rust/kona/crates/supervisor/core/src/event/chain.rs index 69711ae20b421..36f8b2593aed0 100644 --- a/kona/crates/supervisor/core/src/event/chain.rs +++ b/rust/kona/crates/supervisor/core/src/event/chain.rs @@ -20,7 +20,8 @@ pub enum ChainEvent { derived_ref_pair: DerivedRefPair, }, - /// A derivation origin update event, indicating that the origin for derived blocks has changed. + /// A derivation origin update event, indicating that the origin for derived blocks has + /// changed. DerivationOriginUpdate { /// The [`BlockInfo`] of the block that is the new derivation origin. origin: BlockInfo, diff --git a/kona/crates/supervisor/core/src/event/mod.rs b/rust/kona/crates/supervisor/core/src/event/mod.rs similarity index 100% rename from kona/crates/supervisor/core/src/event/mod.rs rename to rust/kona/crates/supervisor/core/src/event/mod.rs diff --git a/kona/crates/supervisor/core/src/l1_watcher/mod.rs b/rust/kona/crates/supervisor/core/src/l1_watcher/mod.rs similarity index 100% rename from kona/crates/supervisor/core/src/l1_watcher/mod.rs rename to rust/kona/crates/supervisor/core/src/l1_watcher/mod.rs diff --git a/kona/crates/supervisor/core/src/l1_watcher/watcher.rs b/rust/kona/crates/supervisor/core/src/l1_watcher/watcher.rs similarity index 98% rename from kona/crates/supervisor/core/src/l1_watcher/watcher.rs rename to rust/kona/crates/supervisor/core/src/l1_watcher/watcher.rs index 00476c970aead..b2d16ceb658c7 100644 --- a/kona/crates/supervisor/core/src/l1_watcher/watcher.rs +++ b/rust/kona/crates/supervisor/core/src/l1_watcher/watcher.rs @@ -329,7 +329,7 @@ mod tests { #[tokio::test] async fn test_handle_new_finalized_block_updates_and_broadcasts() { let (tx, mut rx) = mpsc::channel(1); - let event_txs = [(1, tx)].into_iter().collect(); + let event_txs = std::iter::once((1, tx)).collect(); let mut mock_storage = Mockfinalized_l1_storage::new(); mock_storage.expect_update_finalized_l1().returning(|_block| Ok(())); @@ -376,7 +376,7 @@ mod tests { #[tokio::test] async fn test_handle_new_finalized_block_storage_error() { let (tx, mut rx) = mpsc::channel(1); - let event_txs = [(1, tx)].into_iter().collect(); + let event_txs = std::iter::once((1, tx)).collect(); let mut mock_storage = Mockfinalized_l1_storage::new(); mock_storage @@ -415,7 +415,7 @@ mod tests { #[tokio::test] async fn test_handle_new_latest_block_updates() { let (tx, mut rx) = mpsc::channel(1); - let event_txs = [(1, tx)].into_iter().collect(); + let event_txs = std::iter::once((1, tx)).collect(); let watcher = L1Watcher { rpc_client: mock_rpc_client(), @@ -448,7 +448,7 @@ mod tests { #[tokio::test] async fn test_trigger_reorg_handler() { let (tx, mut rx) = mpsc::channel(1); - let event_txs = [(1, tx)].into_iter().collect(); + let event_txs = std::iter::once((1, tx)).collect(); let watcher = L1Watcher { rpc_client: mock_rpc_client(), diff --git a/kona/crates/supervisor/core/src/lib.rs b/rust/kona/crates/supervisor/core/src/lib.rs similarity index 100% rename from kona/crates/supervisor/core/src/lib.rs rename to rust/kona/crates/supervisor/core/src/lib.rs diff --git a/kona/crates/supervisor/core/src/logindexer/indexer.rs b/rust/kona/crates/supervisor/core/src/logindexer/indexer.rs similarity index 100% rename from kona/crates/supervisor/core/src/logindexer/indexer.rs rename to rust/kona/crates/supervisor/core/src/logindexer/indexer.rs diff --git a/kona/crates/supervisor/core/src/logindexer/mod.rs b/rust/kona/crates/supervisor/core/src/logindexer/mod.rs similarity index 100% rename from kona/crates/supervisor/core/src/logindexer/mod.rs rename to rust/kona/crates/supervisor/core/src/logindexer/mod.rs diff --git a/kona/crates/supervisor/core/src/logindexer/util.rs b/rust/kona/crates/supervisor/core/src/logindexer/util.rs similarity index 100% rename from kona/crates/supervisor/core/src/logindexer/util.rs rename to rust/kona/crates/supervisor/core/src/logindexer/util.rs diff --git a/kona/crates/supervisor/core/src/reorg/error.rs b/rust/kona/crates/supervisor/core/src/reorg/error.rs similarity index 100% rename from kona/crates/supervisor/core/src/reorg/error.rs rename to rust/kona/crates/supervisor/core/src/reorg/error.rs diff --git a/kona/crates/supervisor/core/src/reorg/handler.rs b/rust/kona/crates/supervisor/core/src/reorg/handler.rs similarity index 100% rename from kona/crates/supervisor/core/src/reorg/handler.rs rename to rust/kona/crates/supervisor/core/src/reorg/handler.rs diff --git a/kona/crates/supervisor/core/src/reorg/metrics.rs b/rust/kona/crates/supervisor/core/src/reorg/metrics.rs similarity index 100% rename from kona/crates/supervisor/core/src/reorg/metrics.rs rename to rust/kona/crates/supervisor/core/src/reorg/metrics.rs diff --git a/kona/crates/supervisor/core/src/reorg/mod.rs b/rust/kona/crates/supervisor/core/src/reorg/mod.rs similarity index 100% rename from kona/crates/supervisor/core/src/reorg/mod.rs rename to rust/kona/crates/supervisor/core/src/reorg/mod.rs diff --git a/kona/crates/supervisor/core/src/reorg/task.rs b/rust/kona/crates/supervisor/core/src/reorg/task.rs similarity index 99% rename from kona/crates/supervisor/core/src/reorg/task.rs rename to rust/kona/crates/supervisor/core/src/reorg/task.rs index 3fba4e52ad2b1..4069bbad2d40d 100644 --- a/kona/crates/supervisor/core/src/reorg/task.rs +++ b/rust/kona/crates/supervisor/core/src/reorg/task.rs @@ -60,10 +60,9 @@ where // record metrics if let Some(rewound_state) = rewound_state { let l1_depth = latest_state.source.number - rewound_state.source.number; - let mut l2_depth = 0; - if let Some(derived) = rewound_state.derived { - l2_depth = latest_state.derived.number - derived.number; - } + let l2_depth = rewound_state + .derived + .map_or(0, |derived| latest_state.derived.number - derived.number); Metrics::record_block_depth(self.chain_id, l1_depth, l2_depth); } info!( @@ -138,8 +137,8 @@ where /// Finds the rewind target for a chain during a reorg /// /// Returns `None` if no rewind is needed, or the target block to rewind to. - /// Returns ReorgHandlerError::RewindTargetPreInterop if the rewind target is before the interop - /// activation block. + /// Returns `ReorgHandlerError::RewindTargetPreInterop` if the rewind target is before the + /// interop activation block. async fn find_rewind_target( &self, latest_state: DerivedRefPair, @@ -715,7 +714,6 @@ mod tests { 41 => Ok(latest_state.source), 40 => Ok(reorg_source_info), 39 => Ok(source_39_info), - 38 => Ok(finalized_state.source), _ => Ok(finalized_state.source), }, ); @@ -853,7 +851,6 @@ mod tests { 41 => Ok(latest_state.source), 40 => Ok(reorg_source_info), 39 => Ok(source_39_info), - 38 => Ok(activation_state.source), _ => Ok(activation_state.source), }, ); diff --git a/kona/crates/supervisor/core/src/rpc/admin.rs b/rust/kona/crates/supervisor/core/src/rpc/admin.rs similarity index 100% rename from kona/crates/supervisor/core/src/rpc/admin.rs rename to rust/kona/crates/supervisor/core/src/rpc/admin.rs diff --git a/kona/crates/supervisor/core/src/rpc/metrics.rs b/rust/kona/crates/supervisor/core/src/rpc/metrics.rs similarity index 100% rename from kona/crates/supervisor/core/src/rpc/metrics.rs rename to rust/kona/crates/supervisor/core/src/rpc/metrics.rs diff --git a/kona/crates/supervisor/core/src/rpc/mod.rs b/rust/kona/crates/supervisor/core/src/rpc/mod.rs similarity index 100% rename from kona/crates/supervisor/core/src/rpc/mod.rs rename to rust/kona/crates/supervisor/core/src/rpc/mod.rs diff --git a/kona/crates/supervisor/core/src/rpc/server.rs b/rust/kona/crates/supervisor/core/src/rpc/server.rs similarity index 97% rename from kona/crates/supervisor/core/src/rpc/server.rs rename to rust/kona/crates/supervisor/core/src/rpc/server.rs index 7154ea89e1fb0..fddcd0e6ba2b5 100644 --- a/kona/crates/supervisor/core/src/rpc/server.rs +++ b/rust/kona/crates/supervisor/core/src/rpc/server.rs @@ -242,7 +242,7 @@ where let mut finalized_timestamp = u64::MAX; let mut uninitialized_chain_db_count = 0; - for (id, status) in chains.iter_mut() { + for (id, status) in &mut chains { let head = match self.supervisor.super_head(*id) { Ok(head) => head, Err(SupervisorError::SpecError(SpecError::ErrorNotInSpec)) => { @@ -313,7 +313,7 @@ where .map(|id| (id, Default::default())) .collect::>(); - for (id, block) in chains.iter_mut() { + for (id, block) in &mut chains { *block = self.supervisor.latest_block_from(derived_from, *id)?.id(); } @@ -455,7 +455,6 @@ mod tests { ); // Case 2: Only one chain db is initialized - let mut super_head_map = std::collections::HashMap::new(); let block_info = BlockInfo { number: 42, ..Default::default() }; let super_head = SuperHead { l1_source: Some(block_info), @@ -463,7 +462,6 @@ mod tests { finalized: Some(BlockInfo { timestamp: 50, ..Default::default() }), ..Default::default() }; - super_head_map.insert(chain_id_1, super_head); let mut mock_service = MockSupervisorService::new(); mock_service @@ -482,7 +480,6 @@ mod tests { assert!(result.is_ok()); // Case 3: Both chain dbs are initialized - let mut super_head_map = std::collections::HashMap::new(); let block_info_1 = BlockInfo { number: 42, ..Default::default() }; let super_head_1 = SuperHead { l1_source: Some(block_info_1), @@ -497,9 +494,6 @@ mod tests { finalized: Some(BlockInfo { timestamp: 60, ..Default::default() }), ..Default::default() }; - super_head_map.insert(chain_id_1, super_head_1); - super_head_map.insert(chain_id_2, super_head_2); - let mut mock_service = MockSupervisorService::new(); mock_service .expect_chain_ids() diff --git a/kona/crates/supervisor/core/src/safety_checker/cross.rs b/rust/kona/crates/supervisor/core/src/safety_checker/cross.rs similarity index 99% rename from kona/crates/supervisor/core/src/safety_checker/cross.rs rename to rust/kona/crates/supervisor/core/src/safety_checker/cross.rs index 7fcca42a2f1c4..b15300b0c5b09 100644 --- a/kona/crates/supervisor/core/src/safety_checker/cross.rs +++ b/rust/kona/crates/supervisor/core/src/safety_checker/cross.rs @@ -673,7 +673,6 @@ mod tests { hash: b256(333), }), }]), - ("3", 20) => Ok(vec![]), // No further dependency — traversal ends here _ => Ok(vec![]), } }); diff --git a/kona/crates/supervisor/core/src/safety_checker/error.rs b/rust/kona/crates/supervisor/core/src/safety_checker/error.rs similarity index 100% rename from kona/crates/supervisor/core/src/safety_checker/error.rs rename to rust/kona/crates/supervisor/core/src/safety_checker/error.rs diff --git a/kona/crates/supervisor/core/src/safety_checker/mod.rs b/rust/kona/crates/supervisor/core/src/safety_checker/mod.rs similarity index 100% rename from kona/crates/supervisor/core/src/safety_checker/mod.rs rename to rust/kona/crates/supervisor/core/src/safety_checker/mod.rs diff --git a/kona/crates/supervisor/core/src/safety_checker/promoter.rs b/rust/kona/crates/supervisor/core/src/safety_checker/promoter.rs similarity index 89% rename from kona/crates/supervisor/core/src/safety_checker/promoter.rs rename to rust/kona/crates/supervisor/core/src/safety_checker/promoter.rs index ca8ecdb03307d..3172bd738db06 100644 --- a/kona/crates/supervisor/core/src/safety_checker/promoter.rs +++ b/rust/kona/crates/supervisor/core/src/safety_checker/promoter.rs @@ -4,7 +4,7 @@ use kona_protocol::BlockInfo; use kona_supervisor_storage::CrossChainSafetyProvider; use op_alloy_consensus::interop::SafetyLevel; -/// CrossUnsafePromoter implements [`SafetyPromoter`] for [`SafetyLevel::CrossUnsafe`] +/// `CrossUnsafePromoter` implements [`SafetyPromoter`] for [`SafetyLevel::CrossUnsafe`] #[derive(Debug)] pub struct CrossUnsafePromoter; @@ -28,7 +28,7 @@ impl SafetyPromoter for CrossUnsafePromoter { } } -/// CrossSafePromoter implements [`SafetyPromoter`] for [`SafetyLevel::CrossSafe`] +/// `CrossSafePromoter` implements [`SafetyPromoter`] for [`SafetyLevel::CrossSafe`] #[derive(Debug)] pub struct CrossSafePromoter; diff --git a/kona/crates/supervisor/core/src/safety_checker/task.rs b/rust/kona/crates/supervisor/core/src/safety_checker/task.rs similarity index 100% rename from kona/crates/supervisor/core/src/safety_checker/task.rs rename to rust/kona/crates/supervisor/core/src/safety_checker/task.rs diff --git a/kona/crates/supervisor/core/src/safety_checker/traits.rs b/rust/kona/crates/supervisor/core/src/safety_checker/traits.rs similarity index 100% rename from kona/crates/supervisor/core/src/safety_checker/traits.rs rename to rust/kona/crates/supervisor/core/src/safety_checker/traits.rs diff --git a/kona/crates/supervisor/core/src/state/mod.rs b/rust/kona/crates/supervisor/core/src/state/mod.rs similarity index 100% rename from kona/crates/supervisor/core/src/state/mod.rs rename to rust/kona/crates/supervisor/core/src/state/mod.rs diff --git a/kona/crates/supervisor/core/src/supervisor.rs b/rust/kona/crates/supervisor/core/src/supervisor.rs similarity index 100% rename from kona/crates/supervisor/core/src/supervisor.rs rename to rust/kona/crates/supervisor/core/src/supervisor.rs diff --git a/kona/crates/supervisor/core/src/syncnode/client.rs b/rust/kona/crates/supervisor/core/src/syncnode/client.rs similarity index 99% rename from kona/crates/supervisor/core/src/syncnode/client.rs rename to rust/kona/crates/supervisor/core/src/syncnode/client.rs index 9675636e60548..46b00225f8e06 100644 --- a/kona/crates/supervisor/core/src/syncnode/client.rs +++ b/rust/kona/crates/supervisor/core/src/syncnode/client.rs @@ -130,7 +130,7 @@ impl Client { Ok(headers) } - /// Returns a reference to the WebSocket client, creating it if it doesn't exist. + /// Returns a reference to the `WebSocket` client, creating it if it doesn't exist. // todo: support http client as well pub async fn get_ws_client(&self) -> Result, ClientError> { let mut ws_client_guard = self.ws_client.lock().await; diff --git a/kona/crates/supervisor/core/src/syncnode/command.rs b/rust/kona/crates/supervisor/core/src/syncnode/command.rs similarity index 100% rename from kona/crates/supervisor/core/src/syncnode/command.rs rename to rust/kona/crates/supervisor/core/src/syncnode/command.rs diff --git a/kona/crates/supervisor/core/src/syncnode/error.rs b/rust/kona/crates/supervisor/core/src/syncnode/error.rs similarity index 97% rename from kona/crates/supervisor/core/src/syncnode/error.rs rename to rust/kona/crates/supervisor/core/src/syncnode/error.rs index cd429fe6e4cf9..859938e01cbf9 100644 --- a/kona/crates/supervisor/core/src/syncnode/error.rs +++ b/rust/kona/crates/supervisor/core/src/syncnode/error.rs @@ -54,7 +54,7 @@ pub enum ClientError { impl PartialEq for ClientError { fn eq(&self, other: &Self) -> bool { - use ClientError::*; + use ClientError::{Authentication, ChainIdParseError, Client}; match (self, other) { (Client(a), Client(b)) => a.to_string() == b.to_string(), (Authentication(a), Authentication(b)) => a == b, diff --git a/kona/crates/supervisor/core/src/syncnode/metrics.rs b/rust/kona/crates/supervisor/core/src/syncnode/metrics.rs similarity index 100% rename from kona/crates/supervisor/core/src/syncnode/metrics.rs rename to rust/kona/crates/supervisor/core/src/syncnode/metrics.rs diff --git a/kona/crates/supervisor/core/src/syncnode/mod.rs b/rust/kona/crates/supervisor/core/src/syncnode/mod.rs similarity index 100% rename from kona/crates/supervisor/core/src/syncnode/mod.rs rename to rust/kona/crates/supervisor/core/src/syncnode/mod.rs diff --git a/kona/crates/supervisor/core/src/syncnode/node.rs b/rust/kona/crates/supervisor/core/src/syncnode/node.rs similarity index 99% rename from kona/crates/supervisor/core/src/syncnode/node.rs rename to rust/kona/crates/supervisor/core/src/syncnode/node.rs index b76c89b45851b..610737d3a3002 100644 --- a/kona/crates/supervisor/core/src/syncnode/node.rs +++ b/rust/kona/crates/supervisor/core/src/syncnode/node.rs @@ -23,7 +23,7 @@ use tracing::{debug, error, trace, warn}; /// /// It implements `SubscriptionHandler`, forwards resulting `ChainEvent`s to the chain /// processor, and delegates control operations to the underlying client/resetter. -/// The WebSocket subscription lifecycle (subscription creation, reconnection/restart) +/// The `WebSocket` subscription lifecycle (subscription creation, reconnection/restart) /// is managed by the supervisor actor and the client, not by this type. #[derive(Debug)] pub struct ManagedNode { @@ -205,7 +205,7 @@ where } } -/// Implements [`BlockProvider`] for [`ManagedNode`] by delegating to the underlying WebSocket +/// Implements [`BlockProvider`] for [`ManagedNode`] by delegating to the underlying `WebSocket` /// client. #[async_trait] impl BlockProvider for ManagedNode diff --git a/kona/crates/supervisor/core/src/syncnode/resetter.rs b/rust/kona/crates/supervisor/core/src/syncnode/resetter.rs similarity index 100% rename from kona/crates/supervisor/core/src/syncnode/resetter.rs rename to rust/kona/crates/supervisor/core/src/syncnode/resetter.rs diff --git a/kona/crates/supervisor/core/src/syncnode/traits.rs b/rust/kona/crates/supervisor/core/src/syncnode/traits.rs similarity index 100% rename from kona/crates/supervisor/core/src/syncnode/traits.rs rename to rust/kona/crates/supervisor/core/src/syncnode/traits.rs diff --git a/kona/crates/supervisor/metrics/Cargo.toml b/rust/kona/crates/supervisor/metrics/Cargo.toml similarity index 100% rename from kona/crates/supervisor/metrics/Cargo.toml rename to rust/kona/crates/supervisor/metrics/Cargo.toml diff --git a/kona/crates/supervisor/metrics/src/lib.rs b/rust/kona/crates/supervisor/metrics/src/lib.rs similarity index 100% rename from kona/crates/supervisor/metrics/src/lib.rs rename to rust/kona/crates/supervisor/metrics/src/lib.rs diff --git a/kona/crates/supervisor/metrics/src/macros.rs b/rust/kona/crates/supervisor/metrics/src/macros.rs similarity index 100% rename from kona/crates/supervisor/metrics/src/macros.rs rename to rust/kona/crates/supervisor/metrics/src/macros.rs diff --git a/kona/crates/supervisor/metrics/src/reporter.rs b/rust/kona/crates/supervisor/metrics/src/reporter.rs similarity index 100% rename from kona/crates/supervisor/metrics/src/reporter.rs rename to rust/kona/crates/supervisor/metrics/src/reporter.rs diff --git a/kona/crates/supervisor/rpc/Cargo.toml b/rust/kona/crates/supervisor/rpc/Cargo.toml similarity index 100% rename from kona/crates/supervisor/rpc/Cargo.toml rename to rust/kona/crates/supervisor/rpc/Cargo.toml diff --git a/kona/crates/supervisor/rpc/README.md b/rust/kona/crates/supervisor/rpc/README.md similarity index 100% rename from kona/crates/supervisor/rpc/README.md rename to rust/kona/crates/supervisor/rpc/README.md diff --git a/kona/crates/supervisor/rpc/src/config.rs b/rust/kona/crates/supervisor/rpc/src/config.rs similarity index 100% rename from kona/crates/supervisor/rpc/src/config.rs rename to rust/kona/crates/supervisor/rpc/src/config.rs diff --git a/kona/crates/supervisor/rpc/src/jsonrpsee.rs b/rust/kona/crates/supervisor/rpc/src/jsonrpsee.rs similarity index 97% rename from kona/crates/supervisor/rpc/src/jsonrpsee.rs rename to rust/kona/crates/supervisor/rpc/src/jsonrpsee.rs index 494c6888d1a51..c21c80c1ff70c 100644 --- a/kona/crates/supervisor/rpc/src/jsonrpsee.rs +++ b/rust/kona/crates/supervisor/rpc/src/jsonrpsee.rs @@ -217,11 +217,12 @@ pub trait ManagedModeApi { #[method(name = "chainID")] async fn chain_id(&self) -> RpcResult; - /// Get the state_root, message_parser_storage_root, and block_hash at a given timestamp + /// Get the `state_root`, `message_parser_storage_root`, and `block_hash` at a given timestamp #[method(name = "outputV0AtTimestamp")] async fn output_v0_at_timestamp(&self, timestamp: u64) -> RpcResult; - /// Get the pending state_root, message_parser_storage_root, and block_hash at a given timestamp + /// Get the pending `state_root`, `message_parser_storage_root`, and `block_hash` at a given + /// timestamp #[method(name = "pendingOutputV0AtTimestamp")] async fn pending_output_v0_at_timestamp(&self, timestamp: u64) -> RpcResult; diff --git a/kona/crates/supervisor/rpc/src/lib.rs b/rust/kona/crates/supervisor/rpc/src/lib.rs similarity index 100% rename from kona/crates/supervisor/rpc/src/lib.rs rename to rust/kona/crates/supervisor/rpc/src/lib.rs diff --git a/kona/crates/supervisor/rpc/src/reqwest.rs b/rust/kona/crates/supervisor/rpc/src/reqwest.rs similarity index 100% rename from kona/crates/supervisor/rpc/src/reqwest.rs rename to rust/kona/crates/supervisor/rpc/src/reqwest.rs diff --git a/kona/crates/supervisor/rpc/src/response.rs b/rust/kona/crates/supervisor/rpc/src/response.rs similarity index 100% rename from kona/crates/supervisor/rpc/src/response.rs rename to rust/kona/crates/supervisor/rpc/src/response.rs diff --git a/kona/crates/supervisor/rpc/src/server.rs b/rust/kona/crates/supervisor/rpc/src/server.rs similarity index 100% rename from kona/crates/supervisor/rpc/src/server.rs rename to rust/kona/crates/supervisor/rpc/src/server.rs diff --git a/kona/crates/supervisor/service/Cargo.toml b/rust/kona/crates/supervisor/service/Cargo.toml similarity index 100% rename from kona/crates/supervisor/service/Cargo.toml rename to rust/kona/crates/supervisor/service/Cargo.toml diff --git a/kona/crates/supervisor/service/src/actors/metric.rs b/rust/kona/crates/supervisor/service/src/actors/metric.rs similarity index 100% rename from kona/crates/supervisor/service/src/actors/metric.rs rename to rust/kona/crates/supervisor/service/src/actors/metric.rs diff --git a/kona/crates/supervisor/service/src/actors/mod.rs b/rust/kona/crates/supervisor/service/src/actors/mod.rs similarity index 100% rename from kona/crates/supervisor/service/src/actors/mod.rs rename to rust/kona/crates/supervisor/service/src/actors/mod.rs diff --git a/kona/crates/supervisor/service/src/actors/node.rs b/rust/kona/crates/supervisor/service/src/actors/node.rs similarity index 85% rename from kona/crates/supervisor/service/src/actors/node.rs rename to rust/kona/crates/supervisor/service/src/actors/node.rs index 445bde8bb6e4f..c16a14a83a235 100644 --- a/kona/crates/supervisor/service/src/actors/node.rs +++ b/rust/kona/crates/supervisor/service/src/actors/node.rs @@ -181,72 +181,71 @@ async fn run_subscription_task( } async fn handle_subscription_event(handler: &Arc, event: ManagedEvent) { - if let Some(reset_id) = &event.reset { - if let Err(err) = handler.handle_reset(reset_id).await { - warn!( - target: "supervisor::syncnode", - %err, - %reset_id, - "Failed to handle reset event" - ); - } + if let Some(reset_id) = &event.reset && + let Err(err) = handler.handle_reset(reset_id).await + { + warn!( + target: "supervisor::syncnode", + %err, + %reset_id, + "Failed to handle reset event" + ); } - if let Some(unsafe_block) = &event.unsafe_block { - if let Err(err) = handler.handle_unsafe_block(unsafe_block).await { - warn!( - target: "supervisor::syncnode", - %err, - %unsafe_block, - "Failed to handle unsafe block event" - ); - } + if let Some(unsafe_block) = &event.unsafe_block && + let Err(err) = handler.handle_unsafe_block(unsafe_block).await + { + warn!( + target: "supervisor::syncnode", + %err, + %unsafe_block, + "Failed to handle unsafe block event" + ); } - if let Some(derived_ref_pair) = &event.derivation_update { - if event.derivation_origin_update.is_none() { - if let Err(err) = handler.handle_derivation_update(derived_ref_pair).await { - warn!( - target: "supervisor::syncnode", - %err, - %derived_ref_pair, - "Failed to handle derivation update event" - ); - } - } + if let Some(derived_ref_pair) = &event.derivation_update && + event.derivation_origin_update.is_none() && + let Err(err) = handler.handle_derivation_update(derived_ref_pair).await + { + warn!( + target: "supervisor::syncnode", + %err, + %derived_ref_pair, + "Failed to handle derivation update event" + ); } - if let Some(origin) = &event.derivation_origin_update { - if let Err(err) = handler.handle_derivation_origin_update(origin).await { - warn!( - target: "supervisor::syncnode", - %err, - %origin, - "Failed to handle derivation origin update event" - ); - } + if let Some(origin) = &event.derivation_origin_update && + let Err(err) = handler.handle_derivation_origin_update(origin).await + { + warn!( + target: "supervisor::syncnode", + %err, + %origin, + "Failed to handle derivation origin update event" + ); } - if let Some(derived_ref_pair) = &event.exhaust_l1 { - if let Err(err) = handler.handle_exhaust_l1(derived_ref_pair).await { - warn!( - target: "supervisor::syncnode", - %err, - %derived_ref_pair, - "Failed to handle L1 exhaust event" - ); - } + if let Some(derived_ref_pair) = &event.exhaust_l1 && + let Err(err) = handler.handle_exhaust_l1(derived_ref_pair).await + { + warn!( + target: "supervisor::syncnode", + %err, + %derived_ref_pair, + "Failed to handle L1 exhaust event" + ); } - if let Some(replacement) = &event.replace_block { - if let Err(err) = handler.handle_replace_block(replacement).await { - warn!( - target: "supervisor::syncnode", - %err, - %replacement, - "Failed to handle block replacement event" - ); - } + if let Some(replacement) = &event.replace_block && + let Err(err) = handler.handle_replace_block(replacement).await + { + warn!( + target: "supervisor::syncnode", + %err, + %replacement, + "Failed to handle block replacement event" + ); } } diff --git a/kona/crates/supervisor/service/src/actors/processor.rs b/rust/kona/crates/supervisor/service/src/actors/processor.rs similarity index 100% rename from kona/crates/supervisor/service/src/actors/processor.rs rename to rust/kona/crates/supervisor/service/src/actors/processor.rs diff --git a/kona/crates/supervisor/service/src/actors/rpc.rs b/rust/kona/crates/supervisor/service/src/actors/rpc.rs similarity index 100% rename from kona/crates/supervisor/service/src/actors/rpc.rs rename to rust/kona/crates/supervisor/service/src/actors/rpc.rs diff --git a/kona/crates/supervisor/service/src/actors/traits.rs b/rust/kona/crates/supervisor/service/src/actors/traits.rs similarity index 100% rename from kona/crates/supervisor/service/src/actors/traits.rs rename to rust/kona/crates/supervisor/service/src/actors/traits.rs diff --git a/kona/crates/supervisor/service/src/actors/utils.rs b/rust/kona/crates/supervisor/service/src/actors/utils.rs similarity index 100% rename from kona/crates/supervisor/service/src/actors/utils.rs rename to rust/kona/crates/supervisor/service/src/actors/utils.rs diff --git a/kona/crates/supervisor/service/src/lib.rs b/rust/kona/crates/supervisor/service/src/lib.rs similarity index 100% rename from kona/crates/supervisor/service/src/lib.rs rename to rust/kona/crates/supervisor/service/src/lib.rs diff --git a/kona/crates/supervisor/service/src/service.rs b/rust/kona/crates/supervisor/service/src/service.rs similarity index 100% rename from kona/crates/supervisor/service/src/service.rs rename to rust/kona/crates/supervisor/service/src/service.rs diff --git a/kona/crates/supervisor/storage/Cargo.toml b/rust/kona/crates/supervisor/storage/Cargo.toml similarity index 92% rename from kona/crates/supervisor/storage/Cargo.toml rename to rust/kona/crates/supervisor/storage/Cargo.toml index ea995d1042b80..6239df045e5fb 100644 --- a/kona/crates/supervisor/storage/Cargo.toml +++ b/rust/kona/crates/supervisor/storage/Cargo.toml @@ -38,14 +38,14 @@ metrics.workspace = true #reth reth-db-api = { workspace = true } -reth-db = { workspace = true } +reth-db = { workspace = true, features = ["mdbx"] } reth-codecs = { workspace = true } +reth-primitives-traits = { workspace = true } # HTTP client and TLS for remote signer tokio = { workspace = true, features = ["full"] } [dev-dependencies] -test-fuzz = { workspace = true } tempfile = { workspace = true } tokio.workspace = true kona-cli.workspace = true diff --git a/kona/crates/supervisor/storage/src/chaindb.rs b/rust/kona/crates/supervisor/storage/src/chaindb.rs similarity index 99% rename from kona/crates/supervisor/storage/src/chaindb.rs rename to rust/kona/crates/supervisor/storage/src/chaindb.rs index 376f0fd6ac1b4..9eeca7416dccd 100644 --- a/kona/crates/supervisor/storage/src/chaindb.rs +++ b/rust/kona/crates/supervisor/storage/src/chaindb.rs @@ -528,9 +528,9 @@ impl MetricsReporter for ChainDb { .env .view(|tx| { for table in crate::models::Tables::ALL.iter().map(crate::models::Tables::name) { - let table_db = tx.inner.open_db(Some(table))?; + let table_db = tx.inner().open_db(Some(table))?; - let stats = tx.inner.db_stat(&table_db)?; + let stats = tx.inner().db_stat(table_db.dbi())?; let page_size = stats.page_size() as usize; let leaf_pages = stats.leaf_pages(); diff --git a/kona/crates/supervisor/storage/src/chaindb_factory.rs b/rust/kona/crates/supervisor/storage/src/chaindb_factory.rs similarity index 94% rename from kona/crates/supervisor/storage/src/chaindb_factory.rs rename to rust/kona/crates/supervisor/storage/src/chaindb_factory.rs index db46f02484806..d3ef793f9dd93 100644 --- a/kona/crates/supervisor/storage/src/chaindb_factory.rs +++ b/rust/kona/crates/supervisor/storage/src/chaindb_factory.rs @@ -140,7 +140,7 @@ impl FinalizedL1Storage for ChainDbFactory { error!(target: "supervisor::storage", %err, "Failed to acquire read lock on finalized_l1"); StorageError::LockPoisoned })?; - guard.as_ref().cloned().ok_or(StorageError::FutureData) + guard.as_ref().copied().ok_or(StorageError::FutureData) } ) } @@ -158,15 +158,15 @@ impl FinalizedL1Storage for ChainDbFactory { })?; // Check if the new block number is greater than the current finalized block - if let Some(ref current) = *guard { - if block.number <= current.number { - error!(target: "supervisor::storage", - current_block_number = current.number, - new_block_number = block.number, - "New finalized block number is not greater than current finalized block number", - ); - return Err(StorageError::BlockOutOfOrder); - } + if let Some(ref current) = *guard + && block.number <= current.number + { + error!(target: "supervisor::storage", + current_block_number = current.number, + new_block_number = block.number, + "New finalized block number is not greater than current finalized block number", + ); + return Err(StorageError::BlockOutOfOrder); } *guard = Some(block); Ok(()) diff --git a/kona/crates/supervisor/storage/src/error.rs b/rust/kona/crates/supervisor/storage/src/error.rs similarity index 94% rename from kona/crates/supervisor/storage/src/error.rs rename to rust/kona/crates/supervisor/storage/src/error.rs index f7b0f2b75f0ed..909067117df28 100644 --- a/kona/crates/supervisor/storage/src/error.rs +++ b/rust/kona/crates/supervisor/storage/src/error.rs @@ -56,9 +56,11 @@ pub enum StorageError { impl PartialEq for StorageError { fn eq(&self, other: &Self) -> bool { - use StorageError::*; + use StorageError::{ + ConflictError, Database, DatabaseInit, DatabaseNotInitialised, EntryNotFound, + }; match (self, other) { - (Database(a), Database(b)) => a == b, + (Database(a), Database(b)) => format!("{a}") == format!("{b}"), (DatabaseInit(a), DatabaseInit(b)) => format!("{a}") == format!("{b}"), (EntryNotFound(a), EntryNotFound(b)) => a == b, (DatabaseNotInitialised, DatabaseNotInitialised) | (ConflictError, ConflictError) => { diff --git a/kona/crates/supervisor/storage/src/lib.rs b/rust/kona/crates/supervisor/storage/src/lib.rs similarity index 94% rename from kona/crates/supervisor/storage/src/lib.rs rename to rust/kona/crates/supervisor/storage/src/lib.rs index f7022421f65f4..24e1a0c489a5a 100644 --- a/kona/crates/supervisor/storage/src/lib.rs +++ b/rust/kona/crates/supervisor/storage/src/lib.rs @@ -4,7 +4,7 @@ //! exposing high-level APIs to write and query logs, block metadata, and //! other execution states. //! -//! The storage system is built on top of [`reth-db`], using MDBX, +//! The storage system is built on top of `reth-db`, using MDBX, //! and defines schemas for supervisor-specific data like: //! - L2 log entries //! - Block ancestry metadata diff --git a/kona/crates/supervisor/storage/src/metrics.rs b/rust/kona/crates/supervisor/storage/src/metrics.rs similarity index 99% rename from kona/crates/supervisor/storage/src/metrics.rs rename to rust/kona/crates/supervisor/storage/src/metrics.rs index 5aa8b0b9b124f..56988aa5fab9a 100644 --- a/kona/crates/supervisor/storage/src/metrics.rs +++ b/rust/kona/crates/supervisor/storage/src/metrics.rs @@ -1,6 +1,6 @@ use alloy_primitives::ChainId; -/// Container for ChainDb metrics. +/// Container for `ChainDb` metrics. #[derive(Debug, Clone)] pub(crate) struct Metrics; diff --git a/kona/crates/supervisor/storage/src/models/block.rs b/rust/kona/crates/supervisor/storage/src/models/block.rs similarity index 100% rename from kona/crates/supervisor/storage/src/models/block.rs rename to rust/kona/crates/supervisor/storage/src/models/block.rs diff --git a/kona/crates/supervisor/storage/src/models/common.rs b/rust/kona/crates/supervisor/storage/src/models/common.rs similarity index 100% rename from kona/crates/supervisor/storage/src/models/common.rs rename to rust/kona/crates/supervisor/storage/src/models/common.rs diff --git a/kona/crates/supervisor/storage/src/models/derivation.rs b/rust/kona/crates/supervisor/storage/src/models/derivation.rs similarity index 100% rename from kona/crates/supervisor/storage/src/models/derivation.rs rename to rust/kona/crates/supervisor/storage/src/models/derivation.rs diff --git a/kona/crates/supervisor/storage/src/models/head_ref.rs b/rust/kona/crates/supervisor/storage/src/models/head_ref.rs similarity index 100% rename from kona/crates/supervisor/storage/src/models/head_ref.rs rename to rust/kona/crates/supervisor/storage/src/models/head_ref.rs diff --git a/kona/crates/supervisor/storage/src/models/log.rs b/rust/kona/crates/supervisor/storage/src/models/log.rs similarity index 97% rename from kona/crates/supervisor/storage/src/models/log.rs rename to rust/kona/crates/supervisor/storage/src/models/log.rs index 8e43a312f1d45..0ab2787de5637 100644 --- a/kona/crates/supervisor/storage/src/models/log.rs +++ b/rust/kona/crates/supervisor/storage/src/models/log.rs @@ -11,6 +11,7 @@ use alloy_primitives::B256; use bytes::{Buf, BufMut}; use kona_supervisor_types::{ExecutingMessage, Log}; use reth_codecs::Compact; +use reth_primitives_traits::ValueWithSubKey; use serde::{Deserialize, Serialize}; /// Metadata associated with a single emitted log. @@ -66,18 +67,24 @@ impl Compact for LogEntry { let hash = B256::from_slice(&buf[..32]); buf.advance(32); - let executing_message = if has_msg { + let executing_message = has_msg.then(|| { let (msg, rest) = ExecutingMessageEntry::from_compact(buf, buf.len()); buf = rest; - Some(msg) - } else { - None - }; + msg + }); (Self { index, hash, executing_message }, buf) } } +impl ValueWithSubKey for LogEntry { + type SubKey = u32; + + fn get_subkey(&self) -> Self::SubKey { + self.index + } +} + /// Conversion from [`Log`] to [`LogEntry`] used for internal storage. /// /// Maps fields 1:1, converting `executing_message` using `Into`. diff --git a/kona/crates/supervisor/storage/src/models/mod.rs b/rust/kona/crates/supervisor/storage/src/models/mod.rs similarity index 100% rename from kona/crates/supervisor/storage/src/models/mod.rs rename to rust/kona/crates/supervisor/storage/src/models/mod.rs diff --git a/kona/crates/supervisor/storage/src/providers/derivation_provider.rs b/rust/kona/crates/supervisor/storage/src/providers/derivation_provider.rs similarity index 98% rename from kona/crates/supervisor/storage/src/providers/derivation_provider.rs rename to rust/kona/crates/supervisor/storage/src/providers/derivation_provider.rs index 5f342c8ed68a1..af0099c35f6a4 100644 --- a/kona/crates/supervisor/storage/src/providers/derivation_provider.rs +++ b/rust/kona/crates/supervisor/storage/src/providers/derivation_provider.rs @@ -322,16 +322,15 @@ where if incoming_pair == stored_pair.into() { return Ok(()); - } else { - warn!( - target: "supervisor::storage", - chain_id = %self.chain_id, - %latest_derivation_state, - incoming_derived_block_pair = %incoming_pair, - "Incoming derived block is not consistent with the latest stored derived block" - ); - return Err(StorageError::ConflictError); } + warn!( + target: "supervisor::storage", + chain_id = %self.chain_id, + %latest_derivation_state, + incoming_derived_block_pair = %incoming_pair, + "Incoming derived block is not consistent with the latest stored derived block" + ); + return Err(StorageError::ConflictError); } // Latest source block must be same as the incoming source block @@ -457,16 +456,15 @@ where if source_block == incoming_source { return Ok(()); - } else { - error!( - target: "supervisor::storage", - chain_id = %self.chain_id, - latest_source_block = %latest_source_block, - incoming_source = %incoming_source, - "Incoming source block is not consistent with the latest source block" - ); - return Err(StorageError::ConflictError); } + error!( + target: "supervisor::storage", + chain_id = %self.chain_id, + latest_source_block = %latest_source_block, + incoming_source = %incoming_source, + "Incoming source block is not consistent with the latest source block" + ); + return Err(StorageError::ConflictError); } if !latest_source_block.is_parent_of(&incoming_source) { diff --git a/kona/crates/supervisor/storage/src/providers/head_ref_provider.rs b/rust/kona/crates/supervisor/storage/src/providers/head_ref_provider.rs similarity index 95% rename from kona/crates/supervisor/storage/src/providers/head_ref_provider.rs rename to rust/kona/crates/supervisor/storage/src/providers/head_ref_provider.rs index fe71f13b61f90..ea048e580560d 100644 --- a/kona/crates/supervisor/storage/src/providers/head_ref_provider.rs +++ b/rust/kona/crates/supervisor/storage/src/providers/head_ref_provider.rs @@ -51,18 +51,18 @@ where ) -> Result<(), StorageError> { // Ensure the block_info.number is greater than the stored head reference // If the head reference is not set, this check will be skipped. - if let Ok(current_head_ref) = self.get_safety_head_ref(safety_level) { - if current_head_ref.number > incoming_head_ref.number { - warn!( - target: "supervisor::storage", - chain_id = %self.chain_id, - %current_head_ref, - %incoming_head_ref, - %safety_level, - "Attempting to update head reference with a block that has a lower number than the current head reference", - ); - return Ok(()); - } + if let Ok(current_head_ref) = self.get_safety_head_ref(safety_level) && + current_head_ref.number > incoming_head_ref.number + { + warn!( + target: "supervisor::storage", + chain_id = %self.chain_id, + %current_head_ref, + %incoming_head_ref, + %safety_level, + "Attempting to update head reference with a block that has a lower number than the current head reference", + ); + return Ok(()); } self.tx diff --git a/kona/crates/supervisor/storage/src/providers/log_provider.rs b/rust/kona/crates/supervisor/storage/src/providers/log_provider.rs similarity index 98% rename from kona/crates/supervisor/storage/src/providers/log_provider.rs rename to rust/kona/crates/supervisor/storage/src/providers/log_provider.rs index 3254cfb722ac5..0fb5d442685eb 100644 --- a/kona/crates/supervisor/storage/src/providers/log_provider.rs +++ b/rust/kona/crates/supervisor/storage/src/providers/log_provider.rs @@ -1,7 +1,7 @@ //! Reth's MDBX-backed abstraction of [`LogProvider`] for superchain state. //! //! This module provides the [`LogProvider`] struct, which uses the -//! [`reth-db`] abstraction of reth to store execution logs +//! `reth-db` abstraction of reth to store execution logs //! and block metadata required by the Optimism supervisor. //! //! It supports: @@ -452,17 +452,13 @@ mod tests { Log { index: log_index, hash: B256::from([log_index as u8; 32]), - executing_message: if with_msg { - Some(ExecutingMessage { - chain_id: 10, - block_number: 999, - log_index: 7, - hash: B256::from([0x44; 32]), - timestamp: 88888, - }) - } else { - None - }, + executing_message: with_msg.then_some(ExecutingMessage { + chain_id: 10, + block_number: 999, + log_index: 7, + hash: B256::from([0x44; 32]), + timestamp: 88888, + }), } } diff --git a/kona/crates/supervisor/storage/src/providers/mod.rs b/rust/kona/crates/supervisor/storage/src/providers/mod.rs similarity index 100% rename from kona/crates/supervisor/storage/src/providers/mod.rs rename to rust/kona/crates/supervisor/storage/src/providers/mod.rs diff --git a/kona/crates/supervisor/storage/src/traits.rs b/rust/kona/crates/supervisor/storage/src/traits.rs similarity index 99% rename from kona/crates/supervisor/storage/src/traits.rs rename to rust/kona/crates/supervisor/storage/src/traits.rs index b7a527ccfa199..5880b913c4404 100644 --- a/kona/crates/supervisor/storage/src/traits.rs +++ b/rust/kona/crates/supervisor/storage/src/traits.rs @@ -160,7 +160,7 @@ pub trait LogStorageReader: Debug { /// * `Err(StorageError)` if there is an issue retrieving the block. fn get_block(&self, block_number: u64) -> Result; - /// Finds a [`Log`] by block_number and log_index + /// Finds a [`Log`] by `block_number` and `log_index` /// /// # Arguments /// * `block_number` - The block number to search for the log. @@ -337,7 +337,7 @@ pub trait CrossChainSafetyProvider { /// * `Err(StorageError)` if there is an issue fetching the block. fn get_block(&self, chain_id: ChainId, block_number: u64) -> Result; - /// Retrieves a [`Log`] by block_number and log_index + /// Retrieves a [`Log`] by `block_number` and `log_index` /// /// # Arguments /// * `chain_id` - The [`ChainId`] of the target chain. diff --git a/kona/crates/supervisor/types/Cargo.toml b/rust/kona/crates/supervisor/types/Cargo.toml similarity index 100% rename from kona/crates/supervisor/types/Cargo.toml rename to rust/kona/crates/supervisor/types/Cargo.toml diff --git a/kona/crates/supervisor/types/README.md b/rust/kona/crates/supervisor/types/README.md similarity index 100% rename from kona/crates/supervisor/types/README.md rename to rust/kona/crates/supervisor/types/README.md diff --git a/kona/crates/supervisor/types/src/access_list.rs b/rust/kona/crates/supervisor/types/src/access_list.rs similarity index 98% rename from kona/crates/supervisor/types/src/access_list.rs rename to rust/kona/crates/supervisor/types/src/access_list.rs index 9371e7dbe8b6f..9928f5fa9b47e 100644 --- a/kona/crates/supervisor/types/src/access_list.rs +++ b/rust/kona/crates/supervisor/types/src/access_list.rs @@ -1,7 +1,7 @@ use alloy_primitives::{B256, keccak256}; use thiserror::Error; -/// A structured representation of a parsed CrossL2Inbox message access entry. +/// A structured representation of a parsed `CrossL2Inbox` message access entry. #[derive(Debug, Clone, PartialEq, Eq)] pub struct Access { /// Full 256-bit chain ID (combined from lookup + extension) @@ -218,7 +218,7 @@ pub fn parse_access_list(entries: Vec) -> Result, AccessListEr /// ### Spec References /// /// - [Optimism Access List Format](https://github.com/ethereum-optimism/specs/blob/main/specs/interop/predeploys.md#access-list) -/// - Entry format and layout based on CrossL2Inbox access-list encoding. +/// - Entry format and layout based on `CrossL2Inbox` access-list encoding. fn parse_entry(entry: &B256) -> Result { match entry[0] { PREFIX_LOOKUP => { diff --git a/kona/crates/supervisor/types/src/head.rs b/rust/kona/crates/supervisor/types/src/head.rs similarity index 100% rename from kona/crates/supervisor/types/src/head.rs rename to rust/kona/crates/supervisor/types/src/head.rs diff --git a/kona/crates/supervisor/types/src/hex_string_u64.rs b/rust/kona/crates/supervisor/types/src/hex_string_u64.rs similarity index 100% rename from kona/crates/supervisor/types/src/hex_string_u64.rs rename to rust/kona/crates/supervisor/types/src/hex_string_u64.rs diff --git a/kona/crates/supervisor/types/src/lib.rs b/rust/kona/crates/supervisor/types/src/lib.rs similarity index 100% rename from kona/crates/supervisor/types/src/lib.rs rename to rust/kona/crates/supervisor/types/src/lib.rs diff --git a/kona/crates/supervisor/types/src/log.rs b/rust/kona/crates/supervisor/types/src/log.rs similarity index 100% rename from kona/crates/supervisor/types/src/log.rs rename to rust/kona/crates/supervisor/types/src/log.rs diff --git a/kona/crates/supervisor/types/src/message.rs b/rust/kona/crates/supervisor/types/src/message.rs similarity index 100% rename from kona/crates/supervisor/types/src/message.rs rename to rust/kona/crates/supervisor/types/src/message.rs diff --git a/kona/crates/supervisor/types/src/receipt.rs b/rust/kona/crates/supervisor/types/src/receipt.rs similarity index 100% rename from kona/crates/supervisor/types/src/receipt.rs rename to rust/kona/crates/supervisor/types/src/receipt.rs diff --git a/kona/crates/supervisor/types/src/types.rs b/rust/kona/crates/supervisor/types/src/types.rs similarity index 100% rename from kona/crates/supervisor/types/src/types.rs rename to rust/kona/crates/supervisor/types/src/types.rs diff --git a/kona/crates/utilities/cli/Cargo.toml b/rust/kona/crates/utilities/cli/Cargo.toml similarity index 94% rename from kona/crates/utilities/cli/Cargo.toml rename to rust/kona/crates/utilities/cli/Cargo.toml index d42db96aa7da5..2b44a4dc2a61b 100644 --- a/kona/crates/utilities/cli/Cargo.toml +++ b/rust/kona/crates/utilities/cli/Cargo.toml @@ -23,7 +23,7 @@ alloy-chains.workspace = true tracing.workspace = true serde = { workspace = true, features = ["derive"]} clap = { workspace = true, features = ["derive", "env"] } -tracing-subscriber = { workspace = true, features = ["fmt", "env-filter", "json", "tracing-log"] } +tracing-subscriber = { workspace = true, features = ["fmt", "env-filter", "json", "tracing-log", "ansi"] } tracing-appender.workspace = true metrics-exporter-prometheus = { workspace = true, features = ["http-listener"] } metrics-process.workspace = true @@ -37,7 +37,7 @@ alloy-primitives.workspace = true rstest.workspace = true [target.'cfg(unix)'.dependencies] -libc = "0.2" +libc.workspace = true [features] default = [] diff --git a/kona/crates/utilities/cli/README.md b/rust/kona/crates/utilities/cli/README.md similarity index 100% rename from kona/crates/utilities/cli/README.md rename to rust/kona/crates/utilities/cli/README.md diff --git a/kona/crates/utilities/cli/src/backtrace.rs b/rust/kona/crates/utilities/cli/src/backtrace.rs similarity index 81% rename from kona/crates/utilities/cli/src/backtrace.rs rename to rust/kona/crates/utilities/cli/src/backtrace.rs index 7b88a57ab26f1..8da48f7a0b1f0 100644 --- a/kona/crates/utilities/cli/src/backtrace.rs +++ b/rust/kona/crates/utilities/cli/src/backtrace.rs @@ -1,6 +1,6 @@ //! Helper to set the backtrace env var. -/// Sets the RUST_BACKTRACE environment variable to 1 if it is not already set. +/// Sets the `RUST_BACKTRACE` environment variable to 1 if it is not already set. pub fn enable() { // Enable backtraces unless a RUST_BACKTRACE value has already been explicitly provided. if std::env::var_os("RUST_BACKTRACE").is_none() { diff --git a/kona/crates/utilities/cli/src/clap.rs b/rust/kona/crates/utilities/cli/src/clap.rs similarity index 100% rename from kona/crates/utilities/cli/src/clap.rs rename to rust/kona/crates/utilities/cli/src/clap.rs diff --git a/kona/crates/utilities/cli/src/error.rs b/rust/kona/crates/utilities/cli/src/error.rs similarity index 100% rename from kona/crates/utilities/cli/src/error.rs rename to rust/kona/crates/utilities/cli/src/error.rs diff --git a/kona/crates/utilities/cli/src/flags/globals.rs b/rust/kona/crates/utilities/cli/src/flags/globals.rs similarity index 100% rename from kona/crates/utilities/cli/src/flags/globals.rs rename to rust/kona/crates/utilities/cli/src/flags/globals.rs diff --git a/kona/crates/utilities/cli/src/flags/log.rs b/rust/kona/crates/utilities/cli/src/flags/log.rs similarity index 100% rename from kona/crates/utilities/cli/src/flags/log.rs rename to rust/kona/crates/utilities/cli/src/flags/log.rs diff --git a/kona/crates/utilities/cli/src/flags/metrics.rs b/rust/kona/crates/utilities/cli/src/flags/metrics.rs similarity index 93% rename from kona/crates/utilities/cli/src/flags/metrics.rs rename to rust/kona/crates/utilities/cli/src/flags/metrics.rs index 7333270bb2257..b900c19bf8ef1 100644 --- a/kona/crates/utilities/cli/src/flags/metrics.rs +++ b/rust/kona/crates/utilities/cli/src/flags/metrics.rs @@ -1,8 +1,8 @@ -//! Utility module to house implementation and declaration of MetricsArgs since it's being used in +//! Utility module to house implementation and declaration of `MetricsArgs` since it's being used in //! multiple places, it's just being referenced from this module. use crate::{CliResult, init_prometheus_server}; -use clap::{Parser, arg}; +use clap::Parser; use std::net::IpAddr; /// Configuration for Prometheus metrics. @@ -57,7 +57,7 @@ mod tests { use clap::Parser; use std::net::{IpAddr, Ipv4Addr}; - /// Helper struct to parse MetricsArgs within a test CLI structure. + /// Helper struct to parse `MetricsArgs` within a test CLI structure. #[derive(Parser, Debug)] struct TestCli { #[command(flatten)] diff --git a/kona/crates/utilities/cli/src/flags/mod.rs b/rust/kona/crates/utilities/cli/src/flags/mod.rs similarity index 100% rename from kona/crates/utilities/cli/src/flags/mod.rs rename to rust/kona/crates/utilities/cli/src/flags/mod.rs diff --git a/kona/crates/utilities/cli/src/flags/overrides.rs b/rust/kona/crates/utilities/cli/src/flags/overrides.rs similarity index 100% rename from kona/crates/utilities/cli/src/flags/overrides.rs rename to rust/kona/crates/utilities/cli/src/flags/overrides.rs diff --git a/kona/crates/utilities/cli/src/lib.rs b/rust/kona/crates/utilities/cli/src/lib.rs similarity index 93% rename from kona/crates/utilities/cli/src/lib.rs rename to rust/kona/crates/utilities/cli/src/lib.rs index 4c151dec0a230..6e64f567a3861 100644 --- a/kona/crates/utilities/cli/src/lib.rs +++ b/rust/kona/crates/utilities/cli/src/lib.rs @@ -3,7 +3,7 @@ html_logo_url = "https://raw.githubusercontent.com/op-rs/kona/main/assets/square.png", html_favicon_url = "https://raw.githubusercontent.com/op-rs/kona/main/assets/favicon.ico" )] -#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))] +#![cfg_attr(docsrs, feature(doc_cfg))] mod error; pub use error::{CliError, CliResult}; diff --git a/kona/crates/utilities/cli/src/logs.rs b/rust/kona/crates/utilities/cli/src/logs.rs similarity index 100% rename from kona/crates/utilities/cli/src/logs.rs rename to rust/kona/crates/utilities/cli/src/logs.rs diff --git a/kona/crates/utilities/cli/src/prometheus.rs b/rust/kona/crates/utilities/cli/src/prometheus.rs similarity index 100% rename from kona/crates/utilities/cli/src/prometheus.rs rename to rust/kona/crates/utilities/cli/src/prometheus.rs diff --git a/kona/crates/utilities/cli/src/secrets.rs b/rust/kona/crates/utilities/cli/src/secrets.rs similarity index 100% rename from kona/crates/utilities/cli/src/secrets.rs rename to rust/kona/crates/utilities/cli/src/secrets.rs diff --git a/kona/crates/utilities/cli/src/sigsegv_handler.rs b/rust/kona/crates/utilities/cli/src/sigsegv_handler.rs similarity index 95% rename from kona/crates/utilities/cli/src/sigsegv_handler.rs rename to rust/kona/crates/utilities/cli/src/sigsegv_handler.rs index 374749e1616bb..dcd2e51f663fe 100644 --- a/kona/crates/utilities/cli/src/sigsegv_handler.rs +++ b/rust/kona/crates/utilities/cli/src/sigsegv_handler.rs @@ -121,13 +121,13 @@ pub fn install() { let mut alt_stack: libc::stack_t = mem::zeroed(); alt_stack.ss_sp = alloc(Layout::from_size_align(alt_stack_size, 1).unwrap()).cast(); alt_stack.ss_size = alt_stack_size; - libc::sigaltstack(&alt_stack, ptr::null_mut()); + libc::sigaltstack(&raw const alt_stack, ptr::null_mut()); let mut sa: libc::sigaction = mem::zeroed(); - sa.sa_sigaction = print_stack_trace as libc::sighandler_t; + sa.sa_sigaction = print_stack_trace as *const () as libc::sighandler_t; sa.sa_flags = libc::SA_NODEFER | libc::SA_RESETHAND | libc::SA_ONSTACK; - libc::sigemptyset(&mut sa.sa_mask); - libc::sigaction(libc::SIGSEGV, &sa, ptr::null_mut()); + libc::sigemptyset(&raw mut sa.sa_mask); + libc::sigaction(libc::SIGSEGV, &raw const sa, ptr::null_mut()); } } diff --git a/kona/crates/utilities/cli/src/tracing.rs b/rust/kona/crates/utilities/cli/src/tracing.rs similarity index 98% rename from kona/crates/utilities/cli/src/tracing.rs rename to rust/kona/crates/utilities/cli/src/tracing.rs index 05920d4cbeec3..f637276158354 100644 --- a/kona/crates/utilities/cli/src/tracing.rs +++ b/rust/kona/crates/utilities/cli/src/tracing.rs @@ -1,4 +1,4 @@ -//! [tracing_subscriber] utilities. +//! [`tracing_subscriber`] utilities. use tracing_subscriber::{ Layer, @@ -128,7 +128,7 @@ impl LogConfig { }); let env_filter = env_filter - .unwrap_or(EnvFilter::from_default_env()) + .unwrap_or_else(EnvFilter::from_default_env) .add_directive(self.global_level.into()); tracing_subscriber::registry() diff --git a/kona/crates/utilities/macros/Cargo.toml b/rust/kona/crates/utilities/macros/Cargo.toml similarity index 100% rename from kona/crates/utilities/macros/Cargo.toml rename to rust/kona/crates/utilities/macros/Cargo.toml diff --git a/kona/crates/utilities/macros/README.md b/rust/kona/crates/utilities/macros/README.md similarity index 100% rename from kona/crates/utilities/macros/README.md rename to rust/kona/crates/utilities/macros/README.md diff --git a/kona/crates/utilities/macros/src/lib.rs b/rust/kona/crates/utilities/macros/src/lib.rs similarity index 87% rename from kona/crates/utilities/macros/src/lib.rs rename to rust/kona/crates/utilities/macros/src/lib.rs index f0796b849b71a..ff2235732df1e 100644 --- a/kona/crates/utilities/macros/src/lib.rs +++ b/rust/kona/crates/utilities/macros/src/lib.rs @@ -5,7 +5,7 @@ issue_tracker_base_url = "https://github.com/op-rs/kona/issues/" )] #![cfg_attr(not(test), warn(unused_crate_dependencies))] -#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))] +#![cfg_attr(docsrs, feature(doc_cfg))] #![no_std] mod metrics; diff --git a/kona/crates/utilities/macros/src/metrics.rs b/rust/kona/crates/utilities/macros/src/metrics.rs similarity index 100% rename from kona/crates/utilities/macros/src/metrics.rs rename to rust/kona/crates/utilities/macros/src/metrics.rs diff --git a/kona/crates/utilities/serde/Cargo.toml b/rust/kona/crates/utilities/serde/Cargo.toml similarity index 100% rename from kona/crates/utilities/serde/Cargo.toml rename to rust/kona/crates/utilities/serde/Cargo.toml diff --git a/kona/crates/utilities/serde/README.md b/rust/kona/crates/utilities/serde/README.md similarity index 100% rename from kona/crates/utilities/serde/README.md rename to rust/kona/crates/utilities/serde/README.md diff --git a/kona/crates/utilities/serde/src/lib.rs b/rust/kona/crates/utilities/serde/src/lib.rs similarity index 87% rename from kona/crates/utilities/serde/src/lib.rs rename to rust/kona/crates/utilities/serde/src/lib.rs index 9433e41851f7a..3cc2a89d3a284 100644 --- a/kona/crates/utilities/serde/src/lib.rs +++ b/rust/kona/crates/utilities/serde/src/lib.rs @@ -4,7 +4,7 @@ html_favicon_url = "https://raw.githubusercontent.com/op-rs/kona/main/assets/favicon.ico", issue_tracker_base_url = "https://github.com/op-rs/kona/issues/" )] -#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))] +#![cfg_attr(docsrs, feature(doc_cfg))] #![no_std] extern crate alloc; diff --git a/kona/crates/utilities/serde/src/quantity.rs b/rust/kona/crates/utilities/serde/src/quantity.rs similarity index 100% rename from kona/crates/utilities/serde/src/quantity.rs rename to rust/kona/crates/utilities/serde/src/quantity.rs diff --git a/kona/docker/README.md b/rust/kona/docker/README.md similarity index 100% rename from kona/docker/README.md rename to rust/kona/docker/README.md diff --git a/kona/docker/apps/README.md b/rust/kona/docker/apps/README.md similarity index 100% rename from kona/docker/apps/README.md rename to rust/kona/docker/apps/README.md diff --git a/kona/docker/apps/entrypoint.sh b/rust/kona/docker/apps/entrypoint.sh similarity index 100% rename from kona/docker/apps/entrypoint.sh rename to rust/kona/docker/apps/entrypoint.sh diff --git a/kona/docker/apps/justfile b/rust/kona/docker/apps/justfile similarity index 85% rename from kona/docker/apps/justfile rename to rust/kona/docker/apps/justfile index dc58332131ed1..eff94e1bfaa5c 100644 --- a/kona/docker/apps/justfile +++ b/rust/kona/docker/apps/justfile @@ -21,9 +21,9 @@ build-local bin_name image_tag='kona:local' load_flag='': LOAD_FLAG="--load" fi - (cd {{DOCKER_JUSTFILE}}/../../ && docker buildx bake \ + (cd {{DOCKER_JUSTFILE}}/../../../ && docker buildx bake \ --progress plain \ - -f docker/docker-bake.hcl \ + -f kona/docker/docker-bake.hcl \ $LOAD_FLAG \ generic) @@ -42,7 +42,7 @@ build-remote bin_name git_tag='' image_tag='kona:local': export GIT_REF_NAME="{{git_tag}}" fi - (cd {{DOCKER_JUSTFILE}}/../../ && docker buildx bake \ + (cd {{DOCKER_JUSTFILE}}/../../../ && docker buildx bake \ --progress plain \ - -f docker/docker-bake.hcl \ + -f kona/docker/docker-bake.hcl \ generic) diff --git a/kona/docker/apps/kona_app_generic.dockerfile b/rust/kona/docker/apps/kona_app_generic.dockerfile similarity index 89% rename from kona/docker/apps/kona_app_generic.dockerfile rename to rust/kona/docker/apps/kona_app_generic.dockerfile index 919c1b20cf1ab..1bc5b6289f72d 100644 --- a/kona/docker/apps/kona_app_generic.dockerfile +++ b/rust/kona/docker/apps/kona_app_generic.dockerfile @@ -32,8 +32,8 @@ RUN cargo binstall cargo-chef -y ################################ FROM dep-setup-stage AS app-local-setup-stage -# Copy in the local repository -COPY . /kona +# Copy in the local workspace repository +COPY . /workspace ################################ # Remote Repo Setup Stage # @@ -45,9 +45,10 @@ ARG TAG ARG REPOSITORY # Clone kona at the specified tag -RUN git clone https://github.com/${REPOSITORY} && \ - cd kona && \ - git checkout "${TAG}" +RUN git clone https://github.com/${REPOSITORY} repo && \ + cd repo && \ + git checkout "${TAG}" && \ + mv rust /workspace ################################ # App Build Stage # @@ -64,7 +65,7 @@ WORKDIR /app FROM build-entrypoint AS planner # Triggers a cache invalidation if `app-setup` is modified. -COPY --from=app-setup kona . +COPY --from=app-setup /workspace . RUN cargo chef prepare --recipe-path recipe.json FROM build-entrypoint AS builder @@ -75,7 +76,7 @@ COPY --from=planner /app/recipe.json recipe.json RUN RUSTFLAGS="-C target-cpu=generic" cargo chef cook --bin "${BIN_TARGET}" --profile "${BUILD_PROFILE}" --recipe-path recipe.json # Build application. This step will systematically trigger a cache invalidation if the source code changes. -COPY --from=app-setup kona . +COPY --from=app-setup /workspace . # Build the application binary on the selected tag. Since we build the external dependencies in the previous step, # this step will reuse the target directory from the previous step. RUN RUSTFLAGS="-C target-cpu=generic" cargo build --bin "${BIN_TARGET}" --profile "${BUILD_PROFILE}" @@ -105,10 +106,10 @@ RUN groupadd --gid ${GID} app \ app # Copy in the binary from the build image. -COPY --from=builder "app/target/${BUILD_PROFILE}/${BIN_TARGET}" "/usr/local/bin/${BIN_TARGET}" +COPY --from=builder "/app/target/${BUILD_PROFILE}/${BIN_TARGET}" "/usr/local/bin/${BIN_TARGET}" # Copy in the entrypoint script. -COPY ./docker/apps/entrypoint.sh /entrypoint.sh +COPY ./kona/docker/apps/entrypoint.sh /entrypoint.sh # Ensure the entrypoint and binary are executable and readable by the non-root user RUN chmod 0555 "/usr/local/bin/${BIN_TARGET}" \ diff --git a/kona/docker/asterisc/asterisc.dockerfile b/rust/kona/docker/asterisc/asterisc.dockerfile similarity index 100% rename from kona/docker/asterisc/asterisc.dockerfile rename to rust/kona/docker/asterisc/asterisc.dockerfile diff --git a/kona/docker/cannon/cannon.dockerfile b/rust/kona/docker/cannon/cannon.dockerfile similarity index 100% rename from kona/docker/cannon/cannon.dockerfile rename to rust/kona/docker/cannon/cannon.dockerfile diff --git a/kona/docker/cannon/mips64-unknown-none.json b/rust/kona/docker/cannon/mips64-unknown-none.json similarity index 100% rename from kona/docker/cannon/mips64-unknown-none.json rename to rust/kona/docker/cannon/mips64-unknown-none.json diff --git a/kona/docker/docker-bake.hcl b/rust/kona/docker/docker-bake.hcl similarity index 96% rename from kona/docker/docker-bake.hcl rename to rust/kona/docker/docker-bake.hcl index b6cac2517e1d7..6907ccc26a724 100644 --- a/kona/docker/docker-bake.hcl +++ b/rust/kona/docker/docker-bake.hcl @@ -63,7 +63,7 @@ variable "BUILD_PROFILE" { target "generic" { inherits = ["docker-metadata-action"] context = "." - dockerfile = "docker/apps/kona_app_generic.dockerfile" + dockerfile = "kona/docker/apps/kona_app_generic.dockerfile" args = { REPO_LOCATION = "${REPO_LOCATION}" REPOSITORY = "${REPOSITORY}" @@ -128,7 +128,7 @@ target "cannon-builder" { target "kona-cannon-prestate" { inherits = ["docker-metadata-action"] context = "." - dockerfile = "docker/fpvm-prestates/cannon-repro.dockerfile" + dockerfile = "kona/docker/fpvm-prestates/cannon-repro.dockerfile" contexts = { custom_configs = "${CUSTOM_CONFIGS_CONTEXT}" } diff --git a/kona/docker/fpvm-prestates/README.md b/rust/kona/docker/fpvm-prestates/README.md similarity index 100% rename from kona/docker/fpvm-prestates/README.md rename to rust/kona/docker/fpvm-prestates/README.md diff --git a/kona/docker/fpvm-prestates/cannon-repro.dockerfile b/rust/kona/docker/fpvm-prestates/cannon-repro.dockerfile similarity index 100% rename from kona/docker/fpvm-prestates/cannon-repro.dockerfile rename to rust/kona/docker/fpvm-prestates/cannon-repro.dockerfile diff --git a/kona/docker/fpvm-prestates/justfile b/rust/kona/docker/fpvm-prestates/justfile similarity index 93% rename from kona/docker/fpvm-prestates/justfile rename to rust/kona/docker/fpvm-prestates/justfile index 50f096ece377a..c327a28140e3a 100644 --- a/kona/docker/fpvm-prestates/justfile +++ b/rust/kona/docker/fpvm-prestates/justfile @@ -19,8 +19,8 @@ build-client-prestate-cannon-artifacts \ export CANNON_TAG="{{cannon_tag}}" export DEFAULT_TAG="kona-cannon-prestate:local" - # Navigate to workspace root - cd ../.. + # Navigate to rust workspace root + cd ../../.. if [[ -n "{{custom_config_dir}}" ]]; then export KONA_CUSTOM_CONFIGS="true" @@ -53,6 +53,7 @@ build-client-prestate-cannon-artifacts \ docker buildx bake \ --set "*.output=$OUTPUT_DIR" \ - -f docker/docker-bake.hcl \ $ALLOW_FLAG \ + -f kona/docker/docker-bake.hcl \ + --allow fs=${CUSTOM_CONFIGS_CONTEXT} \ kona-cannon-prestate diff --git a/kona/docker/recipes/kona-node-dev/.gitignore b/rust/kona/docker/recipes/kona-node-dev/.gitignore similarity index 100% rename from kona/docker/recipes/kona-node-dev/.gitignore rename to rust/kona/docker/recipes/kona-node-dev/.gitignore diff --git a/kona/docker/recipes/kona-node-dev/README.md b/rust/kona/docker/recipes/kona-node-dev/README.md similarity index 100% rename from kona/docker/recipes/kona-node-dev/README.md rename to rust/kona/docker/recipes/kona-node-dev/README.md diff --git a/kona/docker/recipes/kona-node-dev/compose.yaml b/rust/kona/docker/recipes/kona-node-dev/compose.yaml similarity index 100% rename from kona/docker/recipes/kona-node-dev/compose.yaml rename to rust/kona/docker/recipes/kona-node-dev/compose.yaml diff --git a/kona/docker/recipes/kona-node-dev/default.env b/rust/kona/docker/recipes/kona-node-dev/default.env similarity index 100% rename from kona/docker/recipes/kona-node-dev/default.env rename to rust/kona/docker/recipes/kona-node-dev/default.env diff --git a/kona/docker/recipes/kona-node-dev/generate-jwt.sh b/rust/kona/docker/recipes/kona-node-dev/generate-jwt.sh similarity index 100% rename from kona/docker/recipes/kona-node-dev/generate-jwt.sh rename to rust/kona/docker/recipes/kona-node-dev/generate-jwt.sh diff --git a/kona/docker/recipes/kona-node-dev/grafana/dashboards/dashboard.yml b/rust/kona/docker/recipes/kona-node-dev/grafana/dashboards/dashboard.yml similarity index 100% rename from kona/docker/recipes/kona-node-dev/grafana/dashboards/dashboard.yml rename to rust/kona/docker/recipes/kona-node-dev/grafana/dashboards/dashboard.yml diff --git a/kona/docker/recipes/kona-node-dev/grafana/dashboards/overview.json b/rust/kona/docker/recipes/kona-node-dev/grafana/dashboards/overview.json similarity index 100% rename from kona/docker/recipes/kona-node-dev/grafana/dashboards/overview.json rename to rust/kona/docker/recipes/kona-node-dev/grafana/dashboards/overview.json diff --git a/kona/docker/recipes/kona-node-dev/grafana/datasources/prometheus.yml b/rust/kona/docker/recipes/kona-node-dev/grafana/datasources/prometheus.yml similarity index 100% rename from kona/docker/recipes/kona-node-dev/grafana/datasources/prometheus.yml rename to rust/kona/docker/recipes/kona-node-dev/grafana/datasources/prometheus.yml diff --git a/kona/docker/recipes/kona-node-dev/justfile b/rust/kona/docker/recipes/kona-node-dev/justfile similarity index 100% rename from kona/docker/recipes/kona-node-dev/justfile rename to rust/kona/docker/recipes/kona-node-dev/justfile diff --git a/kona/docker/recipes/kona-node-dev/kona-node/bootstores/sepolia.json b/rust/kona/docker/recipes/kona-node-dev/kona-node/bootstores/sepolia.json similarity index 100% rename from kona/docker/recipes/kona-node-dev/kona-node/bootstores/sepolia.json rename to rust/kona/docker/recipes/kona-node-dev/kona-node/bootstores/sepolia.json diff --git a/kona/docker/recipes/kona-node-dev/kona-node/kona-node.dockerfile b/rust/kona/docker/recipes/kona-node-dev/kona-node/kona-node.dockerfile similarity index 100% rename from kona/docker/recipes/kona-node-dev/kona-node/kona-node.dockerfile rename to rust/kona/docker/recipes/kona-node-dev/kona-node/kona-node.dockerfile diff --git a/kona/docker/recipes/kona-node-dev/op-reth/op-reth.dockerfile b/rust/kona/docker/recipes/kona-node-dev/op-reth/op-reth.dockerfile similarity index 100% rename from kona/docker/recipes/kona-node-dev/op-reth/op-reth.dockerfile rename to rust/kona/docker/recipes/kona-node-dev/op-reth/op-reth.dockerfile diff --git a/kona/docker/recipes/kona-node-dev/prometheus/prometheus.yml b/rust/kona/docker/recipes/kona-node-dev/prometheus/prometheus.yml similarity index 100% rename from kona/docker/recipes/kona-node-dev/prometheus/prometheus.yml rename to rust/kona/docker/recipes/kona-node-dev/prometheus/prometheus.yml diff --git a/kona/docker/recipes/kona-node-dev/publicnode.env b/rust/kona/docker/recipes/kona-node-dev/publicnode.env similarity index 100% rename from kona/docker/recipes/kona-node-dev/publicnode.env rename to rust/kona/docker/recipes/kona-node-dev/publicnode.env diff --git a/kona/docker/recipes/kona-node/.gitignore b/rust/kona/docker/recipes/kona-node/.gitignore similarity index 100% rename from kona/docker/recipes/kona-node/.gitignore rename to rust/kona/docker/recipes/kona-node/.gitignore diff --git a/kona/docker/recipes/kona-node/README.md b/rust/kona/docker/recipes/kona-node/README.md similarity index 100% rename from kona/docker/recipes/kona-node/README.md rename to rust/kona/docker/recipes/kona-node/README.md diff --git a/kona/docker/recipes/kona-node/cfg.env b/rust/kona/docker/recipes/kona-node/cfg.env similarity index 100% rename from kona/docker/recipes/kona-node/cfg.env rename to rust/kona/docker/recipes/kona-node/cfg.env diff --git a/kona/docker/recipes/kona-node/docker-compose.yaml b/rust/kona/docker/recipes/kona-node/docker-compose.yaml similarity index 100% rename from kona/docker/recipes/kona-node/docker-compose.yaml rename to rust/kona/docker/recipes/kona-node/docker-compose.yaml diff --git a/kona/docker/recipes/kona-node/generate-jwt.sh b/rust/kona/docker/recipes/kona-node/generate-jwt.sh similarity index 100% rename from kona/docker/recipes/kona-node/generate-jwt.sh rename to rust/kona/docker/recipes/kona-node/generate-jwt.sh diff --git a/kona/docker/recipes/kona-node/grafana/dashboards/dashboard.yml b/rust/kona/docker/recipes/kona-node/grafana/dashboards/dashboard.yml similarity index 100% rename from kona/docker/recipes/kona-node/grafana/dashboards/dashboard.yml rename to rust/kona/docker/recipes/kona-node/grafana/dashboards/dashboard.yml diff --git a/kona/docker/recipes/kona-node/grafana/dashboards/overview.json b/rust/kona/docker/recipes/kona-node/grafana/dashboards/overview.json similarity index 100% rename from kona/docker/recipes/kona-node/grafana/dashboards/overview.json rename to rust/kona/docker/recipes/kona-node/grafana/dashboards/overview.json diff --git a/kona/docker/recipes/kona-node/grafana/datasources/prometheus.yml b/rust/kona/docker/recipes/kona-node/grafana/datasources/prometheus.yml similarity index 100% rename from kona/docker/recipes/kona-node/grafana/datasources/prometheus.yml rename to rust/kona/docker/recipes/kona-node/grafana/datasources/prometheus.yml diff --git a/kona/docker/recipes/kona-node/justfile b/rust/kona/docker/recipes/kona-node/justfile similarity index 100% rename from kona/docker/recipes/kona-node/justfile rename to rust/kona/docker/recipes/kona-node/justfile diff --git a/kona/docker/recipes/kona-node/prometheus/prometheus.yml b/rust/kona/docker/recipes/kona-node/prometheus/prometheus.yml similarity index 100% rename from kona/docker/recipes/kona-node/prometheus/prometheus.yml rename to rust/kona/docker/recipes/kona-node/prometheus/prometheus.yml diff --git a/kona/docker/recipes/kona-supervisor/grafana/dashboards/dashboard.yml b/rust/kona/docker/recipes/kona-supervisor/grafana/dashboards/dashboard.yml similarity index 100% rename from kona/docker/recipes/kona-supervisor/grafana/dashboards/dashboard.yml rename to rust/kona/docker/recipes/kona-supervisor/grafana/dashboards/dashboard.yml diff --git a/kona/docker/recipes/kona-supervisor/grafana/dashboards/kona-supervisor.json b/rust/kona/docker/recipes/kona-supervisor/grafana/dashboards/kona-supervisor.json similarity index 100% rename from kona/docker/recipes/kona-supervisor/grafana/dashboards/kona-supervisor.json rename to rust/kona/docker/recipes/kona-supervisor/grafana/dashboards/kona-supervisor.json diff --git a/kona/docs/README.md b/rust/kona/docs/README.md similarity index 100% rename from kona/docs/README.md rename to rust/kona/docs/README.md diff --git a/kona/docs/bun.lock b/rust/kona/docs/bun.lock similarity index 100% rename from kona/docs/bun.lock rename to rust/kona/docs/bun.lock diff --git a/kona/docs/docs/components/CodeGroup.tsx b/rust/kona/docs/docs/components/CodeGroup.tsx similarity index 100% rename from kona/docs/docs/components/CodeGroup.tsx rename to rust/kona/docs/docs/components/CodeGroup.tsx diff --git a/kona/docs/docs/components/SdkShowcase.tsx b/rust/kona/docs/docs/components/SdkShowcase.tsx similarity index 100% rename from kona/docs/docs/components/SdkShowcase.tsx rename to rust/kona/docs/docs/components/SdkShowcase.tsx diff --git a/kona/docs/docs/components/TrustedBy.tsx b/rust/kona/docs/docs/components/TrustedBy.tsx similarity index 100% rename from kona/docs/docs/components/TrustedBy.tsx rename to rust/kona/docs/docs/components/TrustedBy.tsx diff --git a/kona/docs/docs/pages/glossary.mdx b/rust/kona/docs/docs/pages/glossary.mdx similarity index 100% rename from kona/docs/docs/pages/glossary.mdx rename to rust/kona/docs/docs/pages/glossary.mdx diff --git a/kona/docs/docs/pages/index.mdx b/rust/kona/docs/docs/pages/index.mdx similarity index 100% rename from kona/docs/docs/pages/index.mdx rename to rust/kona/docs/docs/pages/index.mdx diff --git a/kona/docs/docs/pages/intro/contributing.mdx b/rust/kona/docs/docs/pages/intro/contributing.mdx similarity index 100% rename from kona/docs/docs/pages/intro/contributing.mdx rename to rust/kona/docs/docs/pages/intro/contributing.mdx diff --git a/kona/docs/docs/pages/intro/lore.mdx b/rust/kona/docs/docs/pages/intro/lore.mdx similarity index 100% rename from kona/docs/docs/pages/intro/lore.mdx rename to rust/kona/docs/docs/pages/intro/lore.mdx diff --git a/kona/docs/docs/pages/intro/overview.mdx b/rust/kona/docs/docs/pages/intro/overview.mdx similarity index 100% rename from kona/docs/docs/pages/intro/overview.mdx rename to rust/kona/docs/docs/pages/intro/overview.mdx diff --git a/kona/docs/docs/pages/intro/why.mdx b/rust/kona/docs/docs/pages/intro/why.mdx similarity index 100% rename from kona/docs/docs/pages/intro/why.mdx rename to rust/kona/docs/docs/pages/intro/why.mdx diff --git a/kona/docs/docs/pages/node/configuration.mdx b/rust/kona/docs/docs/pages/node/configuration.mdx similarity index 100% rename from kona/docs/docs/pages/node/configuration.mdx rename to rust/kona/docs/docs/pages/node/configuration.mdx diff --git a/kona/docs/docs/pages/node/design/derivation.mdx b/rust/kona/docs/docs/pages/node/design/derivation.mdx similarity index 100% rename from kona/docs/docs/pages/node/design/derivation.mdx rename to rust/kona/docs/docs/pages/node/design/derivation.mdx diff --git a/kona/docs/docs/pages/node/design/engine.mdx b/rust/kona/docs/docs/pages/node/design/engine.mdx similarity index 100% rename from kona/docs/docs/pages/node/design/engine.mdx rename to rust/kona/docs/docs/pages/node/design/engine.mdx diff --git a/kona/docs/docs/pages/node/design/intro.mdx b/rust/kona/docs/docs/pages/node/design/intro.mdx similarity index 100% rename from kona/docs/docs/pages/node/design/intro.mdx rename to rust/kona/docs/docs/pages/node/design/intro.mdx diff --git a/kona/docs/docs/pages/node/design/p2p.mdx b/rust/kona/docs/docs/pages/node/design/p2p.mdx similarity index 100% rename from kona/docs/docs/pages/node/design/p2p.mdx rename to rust/kona/docs/docs/pages/node/design/p2p.mdx diff --git a/kona/docs/docs/pages/node/design/sequencer.mdx b/rust/kona/docs/docs/pages/node/design/sequencer.mdx similarity index 100% rename from kona/docs/docs/pages/node/design/sequencer.mdx rename to rust/kona/docs/docs/pages/node/design/sequencer.mdx diff --git a/kona/docs/docs/pages/node/faq/overview.mdx b/rust/kona/docs/docs/pages/node/faq/overview.mdx similarity index 100% rename from kona/docs/docs/pages/node/faq/overview.mdx rename to rust/kona/docs/docs/pages/node/faq/overview.mdx diff --git a/kona/docs/docs/pages/node/faq/ports.mdx b/rust/kona/docs/docs/pages/node/faq/ports.mdx similarity index 100% rename from kona/docs/docs/pages/node/faq/ports.mdx rename to rust/kona/docs/docs/pages/node/faq/ports.mdx diff --git a/kona/docs/docs/pages/node/faq/profiling.mdx b/rust/kona/docs/docs/pages/node/faq/profiling.mdx similarity index 100% rename from kona/docs/docs/pages/node/faq/profiling.mdx rename to rust/kona/docs/docs/pages/node/faq/profiling.mdx diff --git a/kona/docs/docs/pages/node/install/binaries.mdx b/rust/kona/docs/docs/pages/node/install/binaries.mdx similarity index 100% rename from kona/docs/docs/pages/node/install/binaries.mdx rename to rust/kona/docs/docs/pages/node/install/binaries.mdx diff --git a/kona/docs/docs/pages/node/install/docker.mdx b/rust/kona/docs/docs/pages/node/install/docker.mdx similarity index 100% rename from kona/docs/docs/pages/node/install/docker.mdx rename to rust/kona/docs/docs/pages/node/install/docker.mdx diff --git a/kona/docs/docs/pages/node/install/overview.mdx b/rust/kona/docs/docs/pages/node/install/overview.mdx similarity index 100% rename from kona/docs/docs/pages/node/install/overview.mdx rename to rust/kona/docs/docs/pages/node/install/overview.mdx diff --git a/kona/docs/docs/pages/node/install/source.mdx b/rust/kona/docs/docs/pages/node/install/source.mdx similarity index 100% rename from kona/docs/docs/pages/node/install/source.mdx rename to rust/kona/docs/docs/pages/node/install/source.mdx diff --git a/kona/docs/docs/pages/node/monitoring.mdx b/rust/kona/docs/docs/pages/node/monitoring.mdx similarity index 100% rename from kona/docs/docs/pages/node/monitoring.mdx rename to rust/kona/docs/docs/pages/node/monitoring.mdx diff --git a/kona/docs/docs/pages/node/requirements.mdx b/rust/kona/docs/docs/pages/node/requirements.mdx similarity index 100% rename from kona/docs/docs/pages/node/requirements.mdx rename to rust/kona/docs/docs/pages/node/requirements.mdx diff --git a/kona/docs/docs/pages/node/rpc/admin.mdx b/rust/kona/docs/docs/pages/node/rpc/admin.mdx similarity index 100% rename from kona/docs/docs/pages/node/rpc/admin.mdx rename to rust/kona/docs/docs/pages/node/rpc/admin.mdx diff --git a/kona/docs/docs/pages/node/rpc/overview.mdx b/rust/kona/docs/docs/pages/node/rpc/overview.mdx similarity index 100% rename from kona/docs/docs/pages/node/rpc/overview.mdx rename to rust/kona/docs/docs/pages/node/rpc/overview.mdx diff --git a/kona/docs/docs/pages/node/rpc/p2p.mdx b/rust/kona/docs/docs/pages/node/rpc/p2p.mdx similarity index 100% rename from kona/docs/docs/pages/node/rpc/p2p.mdx rename to rust/kona/docs/docs/pages/node/rpc/p2p.mdx diff --git a/kona/docs/docs/pages/node/rpc/rollup.mdx b/rust/kona/docs/docs/pages/node/rpc/rollup.mdx similarity index 100% rename from kona/docs/docs/pages/node/rpc/rollup.mdx rename to rust/kona/docs/docs/pages/node/rpc/rollup.mdx diff --git a/kona/docs/docs/pages/node/run/binary.mdx b/rust/kona/docs/docs/pages/node/run/binary.mdx similarity index 100% rename from kona/docs/docs/pages/node/run/binary.mdx rename to rust/kona/docs/docs/pages/node/run/binary.mdx diff --git a/kona/docs/docs/pages/node/run/docker.mdx b/rust/kona/docs/docs/pages/node/run/docker.mdx similarity index 100% rename from kona/docs/docs/pages/node/run/docker.mdx rename to rust/kona/docs/docs/pages/node/run/docker.mdx diff --git a/kona/docs/docs/pages/node/run/mechanics.mdx b/rust/kona/docs/docs/pages/node/run/mechanics.mdx similarity index 100% rename from kona/docs/docs/pages/node/run/mechanics.mdx rename to rust/kona/docs/docs/pages/node/run/mechanics.mdx diff --git a/kona/docs/docs/pages/node/run/overview.mdx b/rust/kona/docs/docs/pages/node/run/overview.mdx similarity index 100% rename from kona/docs/docs/pages/node/run/overview.mdx rename to rust/kona/docs/docs/pages/node/run/overview.mdx diff --git a/kona/docs/docs/pages/node/subcommands.mdx b/rust/kona/docs/docs/pages/node/subcommands.mdx similarity index 100% rename from kona/docs/docs/pages/node/subcommands.mdx rename to rust/kona/docs/docs/pages/node/subcommands.mdx diff --git a/kona/docs/docs/pages/rfc/active/intro.mdx b/rust/kona/docs/docs/pages/rfc/active/intro.mdx similarity index 100% rename from kona/docs/docs/pages/rfc/active/intro.mdx rename to rust/kona/docs/docs/pages/rfc/active/intro.mdx diff --git a/kona/docs/docs/pages/rfc/archived/monorepo.mdx b/rust/kona/docs/docs/pages/rfc/archived/monorepo.mdx similarity index 100% rename from kona/docs/docs/pages/rfc/archived/monorepo.mdx rename to rust/kona/docs/docs/pages/rfc/archived/monorepo.mdx diff --git a/kona/docs/docs/pages/rfc/archived/umbrellas.mdx b/rust/kona/docs/docs/pages/rfc/archived/umbrellas.mdx similarity index 100% rename from kona/docs/docs/pages/rfc/archived/umbrellas.mdx rename to rust/kona/docs/docs/pages/rfc/archived/umbrellas.mdx diff --git a/kona/docs/docs/pages/run.mdx b/rust/kona/docs/docs/pages/run.mdx similarity index 100% rename from kona/docs/docs/pages/run.mdx rename to rust/kona/docs/docs/pages/run.mdx diff --git a/kona/docs/docs/pages/sdk/examples/batch-to-frames.mdx b/rust/kona/docs/docs/pages/sdk/examples/batch-to-frames.mdx similarity index 100% rename from kona/docs/docs/pages/sdk/examples/batch-to-frames.mdx rename to rust/kona/docs/docs/pages/sdk/examples/batch-to-frames.mdx diff --git a/kona/docs/docs/pages/sdk/examples/custom-derivation-pipeline.mdx b/rust/kona/docs/docs/pages/sdk/examples/custom-derivation-pipeline.mdx similarity index 100% rename from kona/docs/docs/pages/sdk/examples/custom-derivation-pipeline.mdx rename to rust/kona/docs/docs/pages/sdk/examples/custom-derivation-pipeline.mdx diff --git a/kona/docs/docs/pages/sdk/examples/executor-test-fixtures.mdx b/rust/kona/docs/docs/pages/sdk/examples/executor-test-fixtures.mdx similarity index 100% rename from kona/docs/docs/pages/sdk/examples/executor-test-fixtures.mdx rename to rust/kona/docs/docs/pages/sdk/examples/executor-test-fixtures.mdx diff --git a/kona/docs/docs/pages/sdk/examples/frames-to-batch.mdx b/rust/kona/docs/docs/pages/sdk/examples/frames-to-batch.mdx similarity index 100% rename from kona/docs/docs/pages/sdk/examples/frames-to-batch.mdx rename to rust/kona/docs/docs/pages/sdk/examples/frames-to-batch.mdx diff --git a/kona/docs/docs/pages/sdk/examples/intro.mdx b/rust/kona/docs/docs/pages/sdk/examples/intro.mdx similarity index 100% rename from kona/docs/docs/pages/sdk/examples/intro.mdx rename to rust/kona/docs/docs/pages/sdk/examples/intro.mdx diff --git a/kona/docs/docs/pages/sdk/examples/load-a-rollup-config.mdx b/rust/kona/docs/docs/pages/sdk/examples/load-a-rollup-config.mdx similarity index 100% rename from kona/docs/docs/pages/sdk/examples/load-a-rollup-config.mdx rename to rust/kona/docs/docs/pages/sdk/examples/load-a-rollup-config.mdx diff --git a/kona/docs/docs/pages/sdk/examples/new-l1-block-info-tx-hardfork.mdx b/rust/kona/docs/docs/pages/sdk/examples/new-l1-block-info-tx-hardfork.mdx similarity index 100% rename from kona/docs/docs/pages/sdk/examples/new-l1-block-info-tx-hardfork.mdx rename to rust/kona/docs/docs/pages/sdk/examples/new-l1-block-info-tx-hardfork.mdx diff --git a/kona/docs/docs/pages/sdk/examples/p2p-peer-scoring.mdx b/rust/kona/docs/docs/pages/sdk/examples/p2p-peer-scoring.mdx similarity index 100% rename from kona/docs/docs/pages/sdk/examples/p2p-peer-scoring.mdx rename to rust/kona/docs/docs/pages/sdk/examples/p2p-peer-scoring.mdx diff --git a/kona/docs/docs/pages/sdk/fpp-dev/env.mdx b/rust/kona/docs/docs/pages/sdk/fpp-dev/env.mdx similarity index 100% rename from kona/docs/docs/pages/sdk/fpp-dev/env.mdx rename to rust/kona/docs/docs/pages/sdk/fpp-dev/env.mdx diff --git a/kona/docs/docs/pages/sdk/fpp-dev/epilogue.mdx b/rust/kona/docs/docs/pages/sdk/fpp-dev/epilogue.mdx similarity index 100% rename from kona/docs/docs/pages/sdk/fpp-dev/epilogue.mdx rename to rust/kona/docs/docs/pages/sdk/fpp-dev/epilogue.mdx diff --git a/kona/docs/docs/pages/sdk/fpp-dev/execution.mdx b/rust/kona/docs/docs/pages/sdk/fpp-dev/execution.mdx similarity index 100% rename from kona/docs/docs/pages/sdk/fpp-dev/execution.mdx rename to rust/kona/docs/docs/pages/sdk/fpp-dev/execution.mdx diff --git a/kona/docs/docs/pages/sdk/fpp-dev/intro.mdx b/rust/kona/docs/docs/pages/sdk/fpp-dev/intro.mdx similarity index 100% rename from kona/docs/docs/pages/sdk/fpp-dev/intro.mdx rename to rust/kona/docs/docs/pages/sdk/fpp-dev/intro.mdx diff --git a/kona/docs/docs/pages/sdk/fpp-dev/io.mdx b/rust/kona/docs/docs/pages/sdk/fpp-dev/io.mdx similarity index 100% rename from kona/docs/docs/pages/sdk/fpp-dev/io.mdx rename to rust/kona/docs/docs/pages/sdk/fpp-dev/io.mdx diff --git a/kona/docs/docs/pages/sdk/fpp-dev/prologue.mdx b/rust/kona/docs/docs/pages/sdk/fpp-dev/prologue.mdx similarity index 100% rename from kona/docs/docs/pages/sdk/fpp-dev/prologue.mdx rename to rust/kona/docs/docs/pages/sdk/fpp-dev/prologue.mdx diff --git a/kona/docs/docs/pages/sdk/fpp-dev/targets.mdx b/rust/kona/docs/docs/pages/sdk/fpp-dev/targets.mdx similarity index 100% rename from kona/docs/docs/pages/sdk/fpp-dev/targets.mdx rename to rust/kona/docs/docs/pages/sdk/fpp-dev/targets.mdx diff --git a/kona/docs/docs/pages/sdk/overview.mdx b/rust/kona/docs/docs/pages/sdk/overview.mdx similarity index 100% rename from kona/docs/docs/pages/sdk/overview.mdx rename to rust/kona/docs/docs/pages/sdk/overview.mdx diff --git a/kona/docs/docs/pages/sdk/proof/custom-backend.mdx b/rust/kona/docs/docs/pages/sdk/proof/custom-backend.mdx similarity index 100% rename from kona/docs/docs/pages/sdk/proof/custom-backend.mdx rename to rust/kona/docs/docs/pages/sdk/proof/custom-backend.mdx diff --git a/kona/docs/docs/pages/sdk/proof/exec-ext.mdx b/rust/kona/docs/docs/pages/sdk/proof/exec-ext.mdx similarity index 100% rename from kona/docs/docs/pages/sdk/proof/exec-ext.mdx rename to rust/kona/docs/docs/pages/sdk/proof/exec-ext.mdx diff --git a/kona/docs/docs/pages/sdk/proof/fpvm-backend.mdx b/rust/kona/docs/docs/pages/sdk/proof/fpvm-backend.mdx similarity index 100% rename from kona/docs/docs/pages/sdk/proof/fpvm-backend.mdx rename to rust/kona/docs/docs/pages/sdk/proof/fpvm-backend.mdx diff --git a/kona/docs/docs/pages/sdk/proof/intro.mdx b/rust/kona/docs/docs/pages/sdk/proof/intro.mdx similarity index 100% rename from kona/docs/docs/pages/sdk/proof/intro.mdx rename to rust/kona/docs/docs/pages/sdk/proof/intro.mdx diff --git a/kona/docs/docs/pages/sdk/protocol/derive/intro.mdx b/rust/kona/docs/docs/pages/sdk/protocol/derive/intro.mdx similarity index 100% rename from kona/docs/docs/pages/sdk/protocol/derive/intro.mdx rename to rust/kona/docs/docs/pages/sdk/protocol/derive/intro.mdx diff --git a/kona/docs/docs/pages/sdk/protocol/derive/providers.mdx b/rust/kona/docs/docs/pages/sdk/protocol/derive/providers.mdx similarity index 100% rename from kona/docs/docs/pages/sdk/protocol/derive/providers.mdx rename to rust/kona/docs/docs/pages/sdk/protocol/derive/providers.mdx diff --git a/kona/docs/docs/pages/sdk/protocol/derive/signaling.mdx b/rust/kona/docs/docs/pages/sdk/protocol/derive/signaling.mdx similarity index 100% rename from kona/docs/docs/pages/sdk/protocol/derive/signaling.mdx rename to rust/kona/docs/docs/pages/sdk/protocol/derive/signaling.mdx diff --git a/kona/docs/docs/pages/sdk/protocol/derive/stages.mdx b/rust/kona/docs/docs/pages/sdk/protocol/derive/stages.mdx similarity index 100% rename from kona/docs/docs/pages/sdk/protocol/derive/stages.mdx rename to rust/kona/docs/docs/pages/sdk/protocol/derive/stages.mdx diff --git a/kona/docs/docs/pages/sdk/protocol/genesis/intro.mdx b/rust/kona/docs/docs/pages/sdk/protocol/genesis/intro.mdx similarity index 100% rename from kona/docs/docs/pages/sdk/protocol/genesis/intro.mdx rename to rust/kona/docs/docs/pages/sdk/protocol/genesis/intro.mdx diff --git a/kona/docs/docs/pages/sdk/protocol/genesis/rollup-config.mdx b/rust/kona/docs/docs/pages/sdk/protocol/genesis/rollup-config.mdx similarity index 100% rename from kona/docs/docs/pages/sdk/protocol/genesis/rollup-config.mdx rename to rust/kona/docs/docs/pages/sdk/protocol/genesis/rollup-config.mdx diff --git a/kona/docs/docs/pages/sdk/protocol/genesis/system-config.mdx b/rust/kona/docs/docs/pages/sdk/protocol/genesis/system-config.mdx similarity index 100% rename from kona/docs/docs/pages/sdk/protocol/genesis/system-config.mdx rename to rust/kona/docs/docs/pages/sdk/protocol/genesis/system-config.mdx diff --git a/kona/docs/docs/pages/sdk/protocol/hardforks.mdx b/rust/kona/docs/docs/pages/sdk/protocol/hardforks.mdx similarity index 100% rename from kona/docs/docs/pages/sdk/protocol/hardforks.mdx rename to rust/kona/docs/docs/pages/sdk/protocol/hardforks.mdx diff --git a/kona/docs/docs/pages/sdk/protocol/interop.mdx b/rust/kona/docs/docs/pages/sdk/protocol/interop.mdx similarity index 100% rename from kona/docs/docs/pages/sdk/protocol/interop.mdx rename to rust/kona/docs/docs/pages/sdk/protocol/interop.mdx diff --git a/kona/docs/docs/pages/sdk/protocol/intro.mdx b/rust/kona/docs/docs/pages/sdk/protocol/intro.mdx similarity index 100% rename from kona/docs/docs/pages/sdk/protocol/intro.mdx rename to rust/kona/docs/docs/pages/sdk/protocol/intro.mdx diff --git a/kona/docs/docs/pages/sdk/protocol/protocol/batches.mdx b/rust/kona/docs/docs/pages/sdk/protocol/protocol/batches.mdx similarity index 100% rename from kona/docs/docs/pages/sdk/protocol/protocol/batches.mdx rename to rust/kona/docs/docs/pages/sdk/protocol/protocol/batches.mdx diff --git a/kona/docs/docs/pages/sdk/protocol/protocol/block-info.mdx b/rust/kona/docs/docs/pages/sdk/protocol/protocol/block-info.mdx similarity index 100% rename from kona/docs/docs/pages/sdk/protocol/protocol/block-info.mdx rename to rust/kona/docs/docs/pages/sdk/protocol/protocol/block-info.mdx diff --git a/kona/docs/docs/pages/sdk/protocol/protocol/channels.mdx b/rust/kona/docs/docs/pages/sdk/protocol/protocol/channels.mdx similarity index 100% rename from kona/docs/docs/pages/sdk/protocol/protocol/channels.mdx rename to rust/kona/docs/docs/pages/sdk/protocol/protocol/channels.mdx diff --git a/kona/docs/docs/pages/sdk/protocol/protocol/frames.mdx b/rust/kona/docs/docs/pages/sdk/protocol/protocol/frames.mdx similarity index 100% rename from kona/docs/docs/pages/sdk/protocol/protocol/frames.mdx rename to rust/kona/docs/docs/pages/sdk/protocol/protocol/frames.mdx diff --git a/kona/docs/docs/pages/sdk/protocol/protocol/intro.mdx b/rust/kona/docs/docs/pages/sdk/protocol/protocol/intro.mdx similarity index 100% rename from kona/docs/docs/pages/sdk/protocol/protocol/intro.mdx rename to rust/kona/docs/docs/pages/sdk/protocol/protocol/intro.mdx diff --git a/kona/docs/docs/pages/sdk/protocol/protocol/l2-block-info.mdx b/rust/kona/docs/docs/pages/sdk/protocol/protocol/l2-block-info.mdx similarity index 100% rename from kona/docs/docs/pages/sdk/protocol/protocol/l2-block-info.mdx rename to rust/kona/docs/docs/pages/sdk/protocol/protocol/l2-block-info.mdx diff --git a/kona/docs/docs/pages/sdk/protocol/registry.mdx b/rust/kona/docs/docs/pages/sdk/protocol/registry.mdx similarity index 100% rename from kona/docs/docs/pages/sdk/protocol/registry.mdx rename to rust/kona/docs/docs/pages/sdk/protocol/registry.mdx diff --git a/kona/docs/docs/public/banner.png b/rust/kona/docs/docs/public/banner.png similarity index 100% rename from kona/docs/docs/public/banner.png rename to rust/kona/docs/docs/public/banner.png diff --git a/kona/docs/docs/public/favicon.ico b/rust/kona/docs/docs/public/favicon.ico similarity index 100% rename from kona/docs/docs/public/favicon.ico rename to rust/kona/docs/docs/public/favicon.ico diff --git a/kona/docs/docs/public/logo.png b/rust/kona/docs/docs/public/logo.png similarity index 100% rename from kona/docs/docs/public/logo.png rename to rust/kona/docs/docs/public/logo.png diff --git a/kona/docs/docs/public/op-program-fpp.svg b/rust/kona/docs/docs/public/op-program-fpp.svg similarity index 100% rename from kona/docs/docs/public/op-program-fpp.svg rename to rust/kona/docs/docs/public/op-program-fpp.svg diff --git a/kona/docs/docs/styles.css b/rust/kona/docs/docs/styles.css similarity index 100% rename from kona/docs/docs/styles.css rename to rust/kona/docs/docs/styles.css diff --git a/kona/docs/justfile b/rust/kona/docs/justfile similarity index 100% rename from kona/docs/justfile rename to rust/kona/docs/justfile diff --git a/kona/docs/package-lock.json b/rust/kona/docs/package-lock.json similarity index 100% rename from kona/docs/package-lock.json rename to rust/kona/docs/package-lock.json diff --git a/kona/docs/package.json b/rust/kona/docs/package.json similarity index 100% rename from kona/docs/package.json rename to rust/kona/docs/package.json diff --git a/kona/docs/sidebar.ts b/rust/kona/docs/sidebar.ts similarity index 100% rename from kona/docs/sidebar.ts rename to rust/kona/docs/sidebar.ts diff --git a/kona/docs/tsconfig.json b/rust/kona/docs/tsconfig.json similarity index 100% rename from kona/docs/tsconfig.json rename to rust/kona/docs/tsconfig.json diff --git a/kona/docs/vocs.config.ts b/rust/kona/docs/vocs.config.ts similarity index 100% rename from kona/docs/vocs.config.ts rename to rust/kona/docs/vocs.config.ts diff --git a/kona/examples/README.md b/rust/kona/examples/README.md similarity index 100% rename from kona/examples/README.md rename to rust/kona/examples/README.md diff --git a/kona/examples/discovery/Cargo.toml b/rust/kona/examples/discovery/Cargo.toml similarity index 100% rename from kona/examples/discovery/Cargo.toml rename to rust/kona/examples/discovery/Cargo.toml diff --git a/kona/examples/discovery/src/main.rs b/rust/kona/examples/discovery/src/main.rs similarity index 100% rename from kona/examples/discovery/src/main.rs rename to rust/kona/examples/discovery/src/main.rs diff --git a/kona/examples/execution-fixture/Cargo.toml b/rust/kona/examples/execution-fixture/Cargo.toml similarity index 100% rename from kona/examples/execution-fixture/Cargo.toml rename to rust/kona/examples/execution-fixture/Cargo.toml diff --git a/kona/examples/execution-fixture/src/main.rs b/rust/kona/examples/execution-fixture/src/main.rs similarity index 100% rename from kona/examples/execution-fixture/src/main.rs rename to rust/kona/examples/execution-fixture/src/main.rs diff --git a/kona/examples/gossip/Cargo.toml b/rust/kona/examples/gossip/Cargo.toml similarity index 100% rename from kona/examples/gossip/Cargo.toml rename to rust/kona/examples/gossip/Cargo.toml diff --git a/kona/examples/gossip/src/main.rs b/rust/kona/examples/gossip/src/main.rs similarity index 100% rename from kona/examples/gossip/src/main.rs rename to rust/kona/examples/gossip/src/main.rs diff --git a/kona/justfile b/rust/kona/justfile similarity index 75% rename from kona/justfile rename to rust/kona/justfile index f8ef5b5359ca6..c7865a22300e8 100644 --- a/kona/justfile +++ b/rust/kona/justfile @@ -55,11 +55,11 @@ llvm-cov-tests: cargo llvm-cov nextest --no-report --locked --workspace \ --all-features \ --exclude kona-node --exclude kona-p2p --exclude kona-sources \ - --ignore-run-fail --profile ci -E '!test(test_online)' + --ignore-run-fail -E '!test(test_online)' cargo llvm-cov nextest --no-report --locked \ --all-features \ - --ignore-run-fail --profile ci \ + --ignore-run-fail \ --package kona-registry \ -E 'test(custom_chain_is_loaded_when_enabled)' \ --config 'env.KONA_CUSTOM_CONFIGS="true"' \ @@ -99,16 +99,18 @@ lint-native: fmt-native-check lint-docs lint-cannon: docker run \ --rm \ + -e RUSTUP_TOOLCHAIN=nightly \ -v {{KONA_ROOT}}/../:/workdir \ - -w="/workdir/kona" \ + -w="/workdir" \ ghcr.io/op-rs/kona/cannon-builder:0.3.0 cargo clippy -p kona-std-fpvm --all-features -Zbuild-std=core,alloc -- -D warnings # Lint the workspace (risc-v arch). Currently, only the `kona-std-fpvm` crate is linted for the `asterisc` target, as it is the only crate with architecture-specific code. lint-asterisc: docker run \ --rm \ + -e RUSTUP_TOOLCHAIN=nightly \ -v {{KONA_ROOT}}/../:/workdir \ - -w="/workdir/kona" \ + -w="/workdir" \ ghcr.io/op-rs/kona/asterisc-builder:0.3.0 cargo clippy -p kona-std-fpvm --all-features -Zbuild-std=core,alloc -- -D warnings # Lint the Rust documentation @@ -129,7 +131,7 @@ build-cannon-client: docker run \ --rm \ -v {{KONA_ROOT}}/../:/workdir \ - -w="/workdir/kona" \ + -w="/workdir" \ ghcr.io/op-rs/kona/cannon-builder:0.3.0 cargo build -Zbuild-std=core,alloc -p kona-client --bin kona-client --profile release-client-lto # Build `kona-client` for the `asterisc` target. @@ -137,7 +139,7 @@ build-asterisc-client: docker run \ --rm \ -v {{KONA_ROOT}}/../:/workdir \ - -w="/workdir/kona" \ + -w="/workdir" \ ghcr.io/op-rs/kona/asterisc-builder:0.3.0 cargo build -Zbuild-std=core,alloc -p kona-client --bin kona-client --profile release-client-lto # Check for unused dependencies in the crate graph. @@ -189,49 +191,3 @@ check-no-std: echo "Successfully checked no-std build for: $package" done -### TODO(ethereum-optimism/optimism#18654): Remove these recipes once the migration is complete - -build-prestates: build-cannon-prestate build-interop-prestate - -build-cannon-prestate: - @just build-prestate kona-client prestate-artifacts-cannon - -build-interop-prestate: - @just build-prestate kona-client-int prestate-artifacts-cannon-interop - -build-prestate VARIANT OUTPUT_DIR: - #!/usr/bin/env bash - set -euo pipefail - - echo "Building prestate for {{VARIANT}}..." - cd "{{KONA_ROOT}}/docker/fpvm-prestates" - CANNON_TAG=$(cat ../../.config/cannon_tag) - just cannon {{VARIANT}} "${CANNON_TAG}" "{{KONA_ROOT}}/{{OUTPUT_DIR}}" - - cd "{{KONA_ROOT}}" - - # Copy with hash-based name for challenger lookup - HASH=$(jq -r .pre "{{OUTPUT_DIR}}/prestate-proof.json") - cp "{{OUTPUT_DIR}}/prestate.bin.gz" "{{OUTPUT_DIR}}/${HASH}.bin.gz" - echo "Prestate for {{VARIANT}}: ${HASH}" - -build-reproducible-prestate: - @just build-prestates - -output-prestate-hash: - @echo "-------------------- Kona Prestates --------------------" - @echo "" - @echo "Cannon Absolute prestate hash:" - @jq -r .pre {{KONA_ROOT}}/prestate-artifacts-cannon/prestate-proof.json - @echo "" - @echo "Cannon Interop Absolute prestate hash:" - @jq -r .pre {{KONA_ROOT}}/prestate-artifacts-cannon-interop/prestate-proof.json - @echo "" - -reproducible-prestate: build-reproducible-prestate output-prestate-hash - -clean: - #!/usr/bin/env bash - set -euo pipefail - rm -rf "{{KONA_ROOT}}/build" - rm -rf "{{KONA_ROOT}}/prestate-artifacts-cannon" "{{KONA_ROOT}}/prestate-artifacts-cannon-interop" diff --git a/kona/lychee.toml b/rust/kona/lychee.toml similarity index 100% rename from kona/lychee.toml rename to rust/kona/lychee.toml diff --git a/kona/release.toml b/rust/kona/release.toml similarity index 100% rename from kona/release.toml rename to rust/kona/release.toml diff --git a/kona/tests/.gitignore b/rust/kona/tests/.gitignore similarity index 100% rename from kona/tests/.gitignore rename to rust/kona/tests/.gitignore diff --git a/kona/tests/README.md b/rust/kona/tests/README.md similarity index 100% rename from kona/tests/README.md rename to rust/kona/tests/README.md diff --git a/kona/tests/justfile b/rust/kona/tests/justfile similarity index 100% rename from kona/tests/justfile rename to rust/kona/tests/justfile diff --git a/kona/tests/node/common/conductor_test.go b/rust/kona/tests/node/common/conductor_test.go similarity index 98% rename from kona/tests/node/common/conductor_test.go rename to rust/kona/tests/node/common/conductor_test.go index a96a12a8325fb..a414d5946a18f 100644 --- a/kona/tests/node/common/conductor_test.go +++ b/rust/kona/tests/node/common/conductor_test.go @@ -7,12 +7,12 @@ import ( "testing" "time" - node_utils "github.com/ethereum-optimism/optimism/kona/tests/node/utils" "github.com/ethereum-optimism/optimism/op-conductor/consensus" "github.com/ethereum-optimism/optimism/op-devstack/devtest" "github.com/ethereum-optimism/optimism/op-devstack/dsl" "github.com/ethereum-optimism/optimism/op-devstack/stack" "github.com/ethereum-optimism/optimism/op-service/testlog" + node_utils "github.com/ethereum-optimism/optimism/rust/kona/tests/node/utils" "github.com/ethereum/go-ethereum/log" "github.com/stretchr/testify/require" ) diff --git a/kona/tests/node/common/engine_test.go b/rust/kona/tests/node/common/engine_test.go similarity index 93% rename from kona/tests/node/common/engine_test.go rename to rust/kona/tests/node/common/engine_test.go index 0820072f1aadb..e0fb99eed37ff 100644 --- a/kona/tests/node/common/engine_test.go +++ b/rust/kona/tests/node/common/engine_test.go @@ -4,10 +4,10 @@ import ( "sync" "testing" - node_utils "github.com/ethereum-optimism/optimism/kona/tests/node/utils" "github.com/ethereum-optimism/optimism/op-devstack/devtest" "github.com/ethereum-optimism/optimism/op-devstack/dsl" "github.com/ethereum-optimism/optimism/op-supervisor/supervisor/types" + node_utils "github.com/ethereum-optimism/optimism/rust/kona/tests/node/utils" "github.com/stretchr/testify/require" ) diff --git a/kona/tests/node/common/init_test.go b/rust/kona/tests/node/common/init_test.go similarity index 82% rename from kona/tests/node/common/init_test.go rename to rust/kona/tests/node/common/init_test.go index af0d44b16b57e..1a15b2416d06c 100644 --- a/kona/tests/node/common/init_test.go +++ b/rust/kona/tests/node/common/init_test.go @@ -4,8 +4,8 @@ import ( "fmt" "testing" - node_utils "github.com/ethereum-optimism/optimism/kona/tests/node/utils" "github.com/ethereum-optimism/optimism/op-devstack/presets" + node_utils "github.com/ethereum-optimism/optimism/rust/kona/tests/node/utils" ) // TestMain creates the test-setups against the shared backend diff --git a/kona/tests/node/common/p2p_test.go b/rust/kona/tests/node/common/p2p_test.go similarity index 98% rename from kona/tests/node/common/p2p_test.go rename to rust/kona/tests/node/common/p2p_test.go index 288836432fbe6..1d461efdca1bf 100644 --- a/kona/tests/node/common/p2p_test.go +++ b/rust/kona/tests/node/common/p2p_test.go @@ -4,11 +4,11 @@ import ( "fmt" "testing" - node_utils "github.com/ethereum-optimism/optimism/kona/tests/node/utils" "github.com/ethereum-optimism/optimism/op-devstack/devtest" "github.com/ethereum-optimism/optimism/op-devstack/dsl" "github.com/ethereum-optimism/optimism/op-service/apis" "github.com/ethereum-optimism/optimism/op-supervisor/supervisor/types" + node_utils "github.com/ethereum-optimism/optimism/rust/kona/tests/node/utils" "github.com/libp2p/go-libp2p/core/peer" "github.com/stretchr/testify/require" ) diff --git a/kona/tests/node/common/rpc_test.go b/rust/kona/tests/node/common/rpc_test.go similarity index 98% rename from kona/tests/node/common/rpc_test.go rename to rust/kona/tests/node/common/rpc_test.go index 5d36a88e0fd59..34720e92c8fc9 100644 --- a/kona/tests/node/common/rpc_test.go +++ b/rust/kona/tests/node/common/rpc_test.go @@ -4,11 +4,11 @@ import ( "sync" "testing" - node_utils "github.com/ethereum-optimism/optimism/kona/tests/node/utils" "github.com/ethereum-optimism/optimism/op-devstack/devtest" "github.com/ethereum-optimism/optimism/op-devstack/dsl" "github.com/ethereum-optimism/optimism/op-node/rollup" "github.com/ethereum-optimism/optimism/op-service/apis" + node_utils "github.com/ethereum-optimism/optimism/rust/kona/tests/node/utils" "github.com/ethereum/go-ethereum/common" "github.com/stretchr/testify/require" ) diff --git a/kona/tests/node/common/sync_test.go b/rust/kona/tests/node/common/sync_test.go similarity index 95% rename from kona/tests/node/common/sync_test.go rename to rust/kona/tests/node/common/sync_test.go index de3aa0975d22c..5db91b82a45d4 100644 --- a/kona/tests/node/common/sync_test.go +++ b/rust/kona/tests/node/common/sync_test.go @@ -3,10 +3,10 @@ package node import ( "testing" - node_utils "github.com/ethereum-optimism/optimism/kona/tests/node/utils" "github.com/ethereum-optimism/optimism/op-devstack/devtest" "github.com/ethereum-optimism/optimism/op-devstack/dsl" "github.com/ethereum-optimism/optimism/op-supervisor/supervisor/types" + node_utils "github.com/ethereum-optimism/optimism/rust/kona/tests/node/utils" ) // Check that all the nodes in the network are synced to the local safe block and can catch up to the sequencer node. diff --git a/kona/tests/node/common/sync_ws_test.go b/rust/kona/tests/node/common/sync_ws_test.go similarity index 99% rename from kona/tests/node/common/sync_ws_test.go rename to rust/kona/tests/node/common/sync_ws_test.go index 74c74e7643093..a0099a8a80b8a 100644 --- a/kona/tests/node/common/sync_ws_test.go +++ b/rust/kona/tests/node/common/sync_ws_test.go @@ -5,11 +5,11 @@ import ( "testing" "time" - node_utils "github.com/ethereum-optimism/optimism/kona/tests/node/utils" "github.com/ethereum-optimism/optimism/op-devstack/devtest" "github.com/ethereum-optimism/optimism/op-devstack/dsl" "github.com/ethereum-optimism/optimism/op-service/eth" "github.com/ethereum-optimism/optimism/op-supervisor/supervisor/types" + node_utils "github.com/ethereum-optimism/optimism/rust/kona/tests/node/utils" "github.com/stretchr/testify/require" ) diff --git a/kona/tests/node/common/tx_inclusion_test.go b/rust/kona/tests/node/common/tx_inclusion_test.go similarity index 95% rename from kona/tests/node/common/tx_inclusion_test.go rename to rust/kona/tests/node/common/tx_inclusion_test.go index adbc057dd5ff9..089d2de7ae29c 100644 --- a/kona/tests/node/common/tx_inclusion_test.go +++ b/rust/kona/tests/node/common/tx_inclusion_test.go @@ -3,10 +3,10 @@ package node import ( "testing" - node_utils "github.com/ethereum-optimism/optimism/kona/tests/node/utils" "github.com/ethereum-optimism/optimism/op-devstack/devtest" "github.com/ethereum-optimism/optimism/op-devstack/dsl" "github.com/ethereum-optimism/optimism/op-service/eth" + node_utils "github.com/ethereum-optimism/optimism/rust/kona/tests/node/utils" ) func TestL2TransactionInclusion(gt *testing.T) { diff --git a/kona/tests/node/long-running/README.md b/rust/kona/tests/node/long-running/README.md similarity index 100% rename from kona/tests/node/long-running/README.md rename to rust/kona/tests/node/long-running/README.md diff --git a/kona/tests/node/long-running/init_test.go b/rust/kona/tests/node/long-running/init_test.go similarity index 92% rename from kona/tests/node/long-running/init_test.go rename to rust/kona/tests/node/long-running/init_test.go index 4efdc2319df06..610f6bbd8f24b 100644 --- a/kona/tests/node/long-running/init_test.go +++ b/rust/kona/tests/node/long-running/init_test.go @@ -4,8 +4,8 @@ import ( "flag" "testing" - node_utils "github.com/ethereum-optimism/optimism/kona/tests/node/utils" "github.com/ethereum-optimism/optimism/op-devstack/presets" + node_utils "github.com/ethereum-optimism/optimism/rust/kona/tests/node/utils" ) var ( diff --git a/kona/tests/node/long-running/tx_producer_test.go b/rust/kona/tests/node/long-running/tx_producer_test.go similarity index 98% rename from kona/tests/node/long-running/tx_producer_test.go rename to rust/kona/tests/node/long-running/tx_producer_test.go index 7a1b1f9932d45..3b1417c80e573 100644 --- a/kona/tests/node/long-running/tx_producer_test.go +++ b/rust/kona/tests/node/long-running/tx_producer_test.go @@ -6,11 +6,11 @@ import ( "sync/atomic" "testing" - node_utils "github.com/ethereum-optimism/optimism/kona/tests/node/utils" "github.com/ethereum-optimism/optimism/op-devstack/devtest" "github.com/ethereum-optimism/optimism/op-devstack/dsl" "github.com/ethereum-optimism/optimism/op-service/eth" "github.com/ethereum-optimism/optimism/op-service/txplan" + node_utils "github.com/ethereum-optimism/optimism/rust/kona/tests/node/utils" ) // Define a global atomic counter for the number of transactions produced. diff --git a/kona/tests/node/reorgs/init_test.go b/rust/kona/tests/node/reorgs/init_test.go similarity index 83% rename from kona/tests/node/reorgs/init_test.go rename to rust/kona/tests/node/reorgs/init_test.go index ec943d524efbd..ceb5850b8f246 100644 --- a/kona/tests/node/reorgs/init_test.go +++ b/rust/kona/tests/node/reorgs/init_test.go @@ -4,8 +4,8 @@ import ( "fmt" "testing" - node_utils "github.com/ethereum-optimism/optimism/kona/tests/node/utils" "github.com/ethereum-optimism/optimism/op-devstack/presets" + node_utils "github.com/ethereum-optimism/optimism/rust/kona/tests/node/utils" ) // TestMain creates the test-setups against the shared backend diff --git a/kona/tests/node/reorgs/l2_reorg_after_l1_reorgs_test.go b/rust/kona/tests/node/reorgs/l2_reorg_after_l1_reorgs_test.go similarity index 98% rename from kona/tests/node/reorgs/l2_reorg_after_l1_reorgs_test.go rename to rust/kona/tests/node/reorgs/l2_reorg_after_l1_reorgs_test.go index b40ac4584ff5c..366ed16504ae6 100644 --- a/kona/tests/node/reorgs/l2_reorg_after_l1_reorgs_test.go +++ b/rust/kona/tests/node/reorgs/l2_reorg_after_l1_reorgs_test.go @@ -4,7 +4,6 @@ import ( "testing" "time" - node_utils "github.com/ethereum-optimism/optimism/kona/tests/node/utils" "github.com/ethereum-optimism/optimism/op-devstack/devtest" "github.com/ethereum-optimism/optimism/op-devstack/dsl" "github.com/ethereum-optimism/optimism/op-devstack/stack" @@ -13,6 +12,7 @@ import ( "github.com/ethereum-optimism/optimism/op-service/eth" "github.com/ethereum-optimism/optimism/op-supervisor/supervisor/types" "github.com/ethereum-optimism/optimism/op-test-sequencer/sequencer/seqtypes" + node_utils "github.com/ethereum-optimism/optimism/rust/kona/tests/node/utils" "github.com/ethereum/go-ethereum/common" "github.com/stretchr/testify/require" ) diff --git a/kona/tests/node/reorgs/l2_reorg_test.go b/rust/kona/tests/node/reorgs/l2_reorg_test.go similarity index 98% rename from kona/tests/node/reorgs/l2_reorg_test.go rename to rust/kona/tests/node/reorgs/l2_reorg_test.go index dcba40270dd24..5e0a25e5b755d 100644 --- a/kona/tests/node/reorgs/l2_reorg_test.go +++ b/rust/kona/tests/node/reorgs/l2_reorg_test.go @@ -4,13 +4,13 @@ import ( "fmt" "testing" - node_utils "github.com/ethereum-optimism/optimism/kona/tests/node/utils" "github.com/ethereum-optimism/optimism/op-devstack/devtest" "github.com/ethereum-optimism/optimism/op-devstack/dsl" "github.com/ethereum-optimism/optimism/op-service/eth" "github.com/ethereum-optimism/optimism/op-service/txplan" "github.com/ethereum-optimism/optimism/op-supervisor/supervisor/types" "github.com/ethereum-optimism/optimism/op-test-sequencer/sequencer/seqtypes" + node_utils "github.com/ethereum-optimism/optimism/rust/kona/tests/node/utils" "github.com/stretchr/testify/require" ) @@ -60,7 +60,6 @@ func TestL2Reorg(gt *testing.T) { } reorgFun := func() error { - // Stop the batcher out.L2Batcher.Stop() diff --git a/kona/tests/node/restart/conn_drop_test.go b/rust/kona/tests/node/restart/conn_drop_test.go similarity index 98% rename from kona/tests/node/restart/conn_drop_test.go rename to rust/kona/tests/node/restart/conn_drop_test.go index afd813cac3691..41f25ff7b9394 100644 --- a/kona/tests/node/restart/conn_drop_test.go +++ b/rust/kona/tests/node/restart/conn_drop_test.go @@ -4,10 +4,10 @@ import ( "fmt" "testing" - node_utils "github.com/ethereum-optimism/optimism/kona/tests/node/utils" "github.com/ethereum-optimism/optimism/op-devstack/devtest" "github.com/ethereum-optimism/optimism/op-devstack/dsl" "github.com/ethereum-optimism/optimism/op-supervisor/supervisor/types" + node_utils "github.com/ethereum-optimism/optimism/rust/kona/tests/node/utils" ) // Ensure that kona-nodes reconnect to the sequencer and sync properly when the connection is dropped. diff --git a/kona/tests/node/restart/init_test.go b/rust/kona/tests/node/restart/init_test.go similarity index 88% rename from kona/tests/node/restart/init_test.go rename to rust/kona/tests/node/restart/init_test.go index 11763ac7a1092..2d9b0e7cae20a 100644 --- a/kona/tests/node/restart/init_test.go +++ b/rust/kona/tests/node/restart/init_test.go @@ -4,8 +4,8 @@ import ( "fmt" "testing" - node_utils "github.com/ethereum-optimism/optimism/kona/tests/node/utils" "github.com/ethereum-optimism/optimism/op-devstack/presets" + node_utils "github.com/ethereum-optimism/optimism/rust/kona/tests/node/utils" ) // TestMain creates the test-setups against the shared backend diff --git a/kona/tests/node/restart/restart_test.go b/rust/kona/tests/node/restart/restart_test.go similarity index 97% rename from kona/tests/node/restart/restart_test.go rename to rust/kona/tests/node/restart/restart_test.go index 80d5670e09398..f57af1ab4d343 100644 --- a/kona/tests/node/restart/restart_test.go +++ b/rust/kona/tests/node/restart/restart_test.go @@ -6,12 +6,12 @@ import ( "testing" "time" - node_utils "github.com/ethereum-optimism/optimism/kona/tests/node/utils" "github.com/ethereum-optimism/optimism/op-devstack/devtest" "github.com/ethereum-optimism/optimism/op-devstack/dsl" "github.com/ethereum-optimism/optimism/op-service/eth" "github.com/ethereum-optimism/optimism/op-service/retry" "github.com/ethereum-optimism/optimism/op-supervisor/supervisor/types" + node_utils "github.com/ethereum-optimism/optimism/rust/kona/tests/node/utils" ) // Ensure that kona-nodes reconnect to the sequencer and sync properly when the connection is dropped. diff --git a/kona/tests/node/restart/sequencer_restart_test.go b/rust/kona/tests/node/restart/sequencer_restart_test.go similarity index 97% rename from kona/tests/node/restart/sequencer_restart_test.go rename to rust/kona/tests/node/restart/sequencer_restart_test.go index eada3d04f1f17..9a02bde6ec99b 100644 --- a/kona/tests/node/restart/sequencer_restart_test.go +++ b/rust/kona/tests/node/restart/sequencer_restart_test.go @@ -5,11 +5,11 @@ import ( "testing" "time" - node_utils "github.com/ethereum-optimism/optimism/kona/tests/node/utils" "github.com/ethereum-optimism/optimism/op-devstack/devtest" "github.com/ethereum-optimism/optimism/op-devstack/dsl" "github.com/ethereum-optimism/optimism/op-service/retry" "github.com/ethereum-optimism/optimism/op-supervisor/supervisor/types" + node_utils "github.com/ethereum-optimism/optimism/rust/kona/tests/node/utils" ) func TestSequencerRestart(gt *testing.T) { diff --git a/kona/tests/node/utils/mixed_preset.go b/rust/kona/tests/node/utils/mixed_preset.go similarity index 100% rename from kona/tests/node/utils/mixed_preset.go rename to rust/kona/tests/node/utils/mixed_preset.go diff --git a/kona/tests/node/utils/mixed_preset_with_conductor.go b/rust/kona/tests/node/utils/mixed_preset_with_conductor.go similarity index 100% rename from kona/tests/node/utils/mixed_preset_with_conductor.go rename to rust/kona/tests/node/utils/mixed_preset_with_conductor.go diff --git a/kona/tests/node/utils/mod.go b/rust/kona/tests/node/utils/mod.go similarity index 100% rename from kona/tests/node/utils/mod.go rename to rust/kona/tests/node/utils/mod.go diff --git a/kona/tests/node/utils/test_sequencer_preset.go b/rust/kona/tests/node/utils/test_sequencer_preset.go similarity index 100% rename from kona/tests/node/utils/test_sequencer_preset.go rename to rust/kona/tests/node/utils/test_sequencer_preset.go diff --git a/kona/tests/node/utils/ws.go b/rust/kona/tests/node/utils/ws.go similarity index 100% rename from kona/tests/node/utils/ws.go rename to rust/kona/tests/node/utils/ws.go diff --git a/kona/tests/supervisor/l1reorg/init_test.go b/rust/kona/tests/supervisor/l1reorg/init_test.go similarity index 100% rename from kona/tests/supervisor/l1reorg/init_test.go rename to rust/kona/tests/supervisor/l1reorg/init_test.go diff --git a/kona/tests/supervisor/l1reorg/reorg_test.go b/rust/kona/tests/supervisor/l1reorg/reorg_test.go similarity index 98% rename from kona/tests/supervisor/l1reorg/reorg_test.go rename to rust/kona/tests/supervisor/l1reorg/reorg_test.go index 5321753b52b64..57d09359b5f35 100644 --- a/kona/tests/supervisor/l1reorg/reorg_test.go +++ b/rust/kona/tests/supervisor/l1reorg/reorg_test.go @@ -4,11 +4,11 @@ import ( "testing" "time" - "github.com/ethereum-optimism/optimism/kona/tests/supervisor/utils" "github.com/ethereum-optimism/optimism/op-devstack/devtest" "github.com/ethereum-optimism/optimism/op-devstack/presets" "github.com/ethereum-optimism/optimism/op-service/eth" "github.com/ethereum-optimism/optimism/op-supervisor/supervisor/types" + "github.com/ethereum-optimism/optimism/rust/kona/tests/supervisor/utils" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) diff --git a/kona/tests/supervisor/l2reorg/init_exec_msg_test.go b/rust/kona/tests/supervisor/l2reorg/init_exec_msg_test.go similarity index 100% rename from kona/tests/supervisor/l2reorg/init_exec_msg_test.go rename to rust/kona/tests/supervisor/l2reorg/init_exec_msg_test.go diff --git a/kona/tests/supervisor/l2reorg/init_test.go b/rust/kona/tests/supervisor/l2reorg/init_test.go similarity index 100% rename from kona/tests/supervisor/l2reorg/init_test.go rename to rust/kona/tests/supervisor/l2reorg/init_test.go diff --git a/kona/tests/supervisor/l2reorg/invalid_exec_msgs_test.go b/rust/kona/tests/supervisor/l2reorg/invalid_exec_msgs_test.go similarity index 100% rename from kona/tests/supervisor/l2reorg/invalid_exec_msgs_test.go rename to rust/kona/tests/supervisor/l2reorg/invalid_exec_msgs_test.go diff --git a/kona/tests/supervisor/l2reorg/unsafe_head_test.go b/rust/kona/tests/supervisor/l2reorg/unsafe_head_test.go similarity index 100% rename from kona/tests/supervisor/l2reorg/unsafe_head_test.go rename to rust/kona/tests/supervisor/l2reorg/unsafe_head_test.go diff --git a/kona/tests/supervisor/l2reorgAfterL1reorg/init_test.go b/rust/kona/tests/supervisor/l2reorgAfterL1reorg/init_test.go similarity index 79% rename from kona/tests/supervisor/l2reorgAfterL1reorg/init_test.go rename to rust/kona/tests/supervisor/l2reorgAfterL1reorg/init_test.go index 4764a31a444f4..c2ebd6ccd5924 100644 --- a/kona/tests/supervisor/l2reorgAfterL1reorg/init_test.go +++ b/rust/kona/tests/supervisor/l2reorgAfterL1reorg/init_test.go @@ -3,8 +3,8 @@ package sysgo import ( "testing" - spresets "github.com/ethereum-optimism/optimism/kona/tests/supervisor/presets" "github.com/ethereum-optimism/optimism/op-devstack/presets" + spresets "github.com/ethereum-optimism/optimism/rust/kona/tests/supervisor/presets" ) // TestMain creates the test-setups against the shared backend diff --git a/kona/tests/supervisor/l2reorgAfterL1reorg/reorg_test.go b/rust/kona/tests/supervisor/l2reorgAfterL1reorg/reorg_test.go similarity index 100% rename from kona/tests/supervisor/l2reorgAfterL1reorg/reorg_test.go rename to rust/kona/tests/supervisor/l2reorgAfterL1reorg/reorg_test.go diff --git a/kona/tests/supervisor/message/init_test.go b/rust/kona/tests/supervisor/message/init_test.go similarity index 100% rename from kona/tests/supervisor/message/init_test.go rename to rust/kona/tests/supervisor/message/init_test.go diff --git a/kona/tests/supervisor/message/interop_contract_test.go b/rust/kona/tests/supervisor/message/interop_contract_test.go similarity index 100% rename from kona/tests/supervisor/message/interop_contract_test.go rename to rust/kona/tests/supervisor/message/interop_contract_test.go diff --git a/kona/tests/supervisor/message/interop_happy_tx_test.go b/rust/kona/tests/supervisor/message/interop_happy_tx_test.go similarity index 100% rename from kona/tests/supervisor/message/interop_happy_tx_test.go rename to rust/kona/tests/supervisor/message/interop_happy_tx_test.go diff --git a/kona/tests/supervisor/message/interop_msg_test.go b/rust/kona/tests/supervisor/message/interop_msg_test.go similarity index 100% rename from kona/tests/supervisor/message/interop_msg_test.go rename to rust/kona/tests/supervisor/message/interop_msg_test.go diff --git a/kona/tests/supervisor/pre_interop/init_test.go b/rust/kona/tests/supervisor/pre_interop/init_test.go similarity index 82% rename from kona/tests/supervisor/pre_interop/init_test.go rename to rust/kona/tests/supervisor/pre_interop/init_test.go index b32be2f8b752d..c173e8ce9e7b9 100644 --- a/kona/tests/supervisor/pre_interop/init_test.go +++ b/rust/kona/tests/supervisor/pre_interop/init_test.go @@ -4,8 +4,8 @@ package preinterop import ( "testing" - spresets "github.com/ethereum-optimism/optimism/kona/tests/supervisor/presets" "github.com/ethereum-optimism/optimism/op-devstack/presets" + spresets "github.com/ethereum-optimism/optimism/rust/kona/tests/supervisor/presets" ) // TestMain creates the test-setups against the shared backend diff --git a/kona/tests/supervisor/pre_interop/post_test.go b/rust/kona/tests/supervisor/pre_interop/post_test.go similarity index 100% rename from kona/tests/supervisor/pre_interop/post_test.go rename to rust/kona/tests/supervisor/pre_interop/post_test.go diff --git a/kona/tests/supervisor/pre_interop/pre_test.go b/rust/kona/tests/supervisor/pre_interop/pre_test.go similarity index 100% rename from kona/tests/supervisor/pre_interop/pre_test.go rename to rust/kona/tests/supervisor/pre_interop/pre_test.go diff --git a/kona/tests/supervisor/presets/interop_minimal.go b/rust/kona/tests/supervisor/presets/interop_minimal.go similarity index 100% rename from kona/tests/supervisor/presets/interop_minimal.go rename to rust/kona/tests/supervisor/presets/interop_minimal.go diff --git a/kona/tests/supervisor/rpc/init_test.go b/rust/kona/tests/supervisor/rpc/init_test.go similarity index 100% rename from kona/tests/supervisor/rpc/init_test.go rename to rust/kona/tests/supervisor/rpc/init_test.go diff --git a/kona/tests/supervisor/rpc/rpc_test.go b/rust/kona/tests/supervisor/rpc/rpc_test.go similarity index 100% rename from kona/tests/supervisor/rpc/rpc_test.go rename to rust/kona/tests/supervisor/rpc/rpc_test.go diff --git a/kona/tests/supervisor/sync/init_test.go b/rust/kona/tests/supervisor/sync/init_test.go similarity index 100% rename from kona/tests/supervisor/sync/init_test.go rename to rust/kona/tests/supervisor/sync/init_test.go diff --git a/kona/tests/supervisor/sync/resync_test.go b/rust/kona/tests/supervisor/sync/resync_test.go similarity index 100% rename from kona/tests/supervisor/sync/resync_test.go rename to rust/kona/tests/supervisor/sync/resync_test.go diff --git a/kona/tests/supervisor/sync/sync_test.go b/rust/kona/tests/supervisor/sync/sync_test.go similarity index 100% rename from kona/tests/supervisor/sync/sync_test.go rename to rust/kona/tests/supervisor/sync/sync_test.go diff --git a/kona/tests/supervisor/utils/builder.go b/rust/kona/tests/supervisor/utils/builder.go similarity index 100% rename from kona/tests/supervisor/utils/builder.go rename to rust/kona/tests/supervisor/utils/builder.go diff --git a/kona/tests/supervisor/utils/pos.go b/rust/kona/tests/supervisor/utils/pos.go similarity index 100% rename from kona/tests/supervisor/utils/pos.go rename to rust/kona/tests/supervisor/utils/pos.go diff --git a/kona/tests/supervisor/utils/reorg.go b/rust/kona/tests/supervisor/utils/reorg.go similarity index 100% rename from kona/tests/supervisor/utils/reorg.go rename to rust/kona/tests/supervisor/utils/reorg.go diff --git a/rust/kona/version.json b/rust/kona/version.json new file mode 100644 index 0000000000000..8d8e7807a200a --- /dev/null +++ b/rust/kona/version.json @@ -0,0 +1,5 @@ +{ + "version": "1.2.7", + "prestateHash": "0x0323914d3050e80c3d09da528be54794fde60cd26849cd3410dde0da7cd7d4fa", + "interopPrestateHash": "0x03f03018773fae0603f7c110ef1defa8d19b601b32ee530f9951987baec435b0" +} \ No newline at end of file diff --git a/op-alloy/.config/nextest.toml b/rust/op-alloy/.config/nextest.toml similarity index 100% rename from op-alloy/.config/nextest.toml rename to rust/op-alloy/.config/nextest.toml diff --git a/op-alloy/.config/zepter.yaml b/rust/op-alloy/.config/zepter.yaml similarity index 100% rename from op-alloy/.config/zepter.yaml rename to rust/op-alloy/.config/zepter.yaml diff --git a/op-alloy/.gitignore b/rust/op-alloy/.gitignore similarity index 100% rename from op-alloy/.gitignore rename to rust/op-alloy/.gitignore diff --git a/op-alloy/CHANGELOG.md b/rust/op-alloy/CHANGELOG.md similarity index 100% rename from op-alloy/CHANGELOG.md rename to rust/op-alloy/CHANGELOG.md diff --git a/op-alloy/CONTRIBUTING.md b/rust/op-alloy/CONTRIBUTING.md similarity index 100% rename from op-alloy/CONTRIBUTING.md rename to rust/op-alloy/CONTRIBUTING.md diff --git a/op-alloy/FUNDING.json b/rust/op-alloy/FUNDING.json similarity index 100% rename from op-alloy/FUNDING.json rename to rust/op-alloy/FUNDING.json diff --git a/op-alloy/Justfile b/rust/op-alloy/Justfile similarity index 86% rename from op-alloy/Justfile rename to rust/op-alloy/Justfile index d9782a7bfde19..6e187f0522b07 100644 --- a/op-alloy/Justfile +++ b/rust/op-alloy/Justfile @@ -5,7 +5,6 @@ alias f := fmtf alias b := build alias h := hack alias c := check -alias e := examples # default recipe to display help information default: @@ -73,10 +72,3 @@ check-no-std: rustup target add riscv32imac-unknown-none-elf cargo check -p op-alloy -p op-alloy-consensus -p op-alloy-rpc-types -p op-alloy-rpc-types-engine --target riscv32imac-unknown-none-elf --no-default-features -# List all available examples and run each one -examples: - example_list=$(cargo build --example 2>&1); \ - example_list=$(echo "$example_list" | tail -n +3 | sed 's/^[ \t]*//;s/[ \t]*$//'); \ - for example in $example_list; do \ - cargo run --example $example; \ - done diff --git a/op-alloy/LICENSE-APACHE b/rust/op-alloy/LICENSE-APACHE similarity index 100% rename from op-alloy/LICENSE-APACHE rename to rust/op-alloy/LICENSE-APACHE diff --git a/op-alloy/LICENSE-MIT b/rust/op-alloy/LICENSE-MIT similarity index 100% rename from op-alloy/LICENSE-MIT rename to rust/op-alloy/LICENSE-MIT diff --git a/op-alloy/README.md b/rust/op-alloy/README.md similarity index 93% rename from op-alloy/README.md rename to rust/op-alloy/README.md index 7d9e75dcfcb1c..ffc649dbff680 100644 --- a/op-alloy/README.md +++ b/rust/op-alloy/README.md @@ -6,11 +6,6 @@ License Book -> [!IMPORTANT] -> **This repository is moving to [ethereum-optimism/optimism](https://github.com/ethereum-optimism/optimism).** -> -> The `alloy-rs/op-alloy` repository will be archived (deprecated). All future development will continue in the new location. Your GitHub contributions will be preserved. - Built on [Alloy][alloy], op-alloy aggregates the OP stack's unique primitives from [Maili][maili], to the subset of L1 types used by Optimistic rollups. @@ -100,9 +95,9 @@ shall be dual licensed as above, without any additional terms or conditions. [alloy]: https://github.com/alloy-rs/alloy [contributing]: https://alloy-rs.github.io/op-alloy -[`op-alloy-consensus`]: https://crates.io/crates/op-alloy-consensus -[`op-alloy-network`]: https://crates.io/crates/op-alloy-network -[`op-alloy-rpc-jsonrpsee`]: https://crates.io/crates/op-alloy-rpc-jsonrpsee -[`op-alloy-rpc-types-engine`]: https://crates.io/crates/op-alloy-rpc-types-engine +[`op-alloy-consensus`]: https://crates.io/crates/op-alloy-consensus +[`op-alloy-network`]: https://crates.io/crates/op-alloy-network +[`op-alloy-rpc-jsonrpsee`]: https://crates.io/crates/op-alloy-rpc-jsonrpsee +[`op-alloy-rpc-types-engine`]: https://crates.io/crates/op-alloy-rpc-types-engine [`op-alloy-rpc-types`]: https://crates.io/crates/op-alloy-rpc-types diff --git a/op-alloy/SECURITY.md b/rust/op-alloy/SECURITY.md similarity index 100% rename from op-alloy/SECURITY.md rename to rust/op-alloy/SECURITY.md diff --git a/op-alloy/SNAPPY-LICENSE b/rust/op-alloy/SNAPPY-LICENSE similarity index 100% rename from op-alloy/SNAPPY-LICENSE rename to rust/op-alloy/SNAPPY-LICENSE diff --git a/op-alloy/book/.gitignore b/rust/op-alloy/book/.gitignore similarity index 100% rename from op-alloy/book/.gitignore rename to rust/op-alloy/book/.gitignore diff --git a/op-alloy/book/README.md b/rust/op-alloy/book/README.md similarity index 100% rename from op-alloy/book/README.md rename to rust/op-alloy/book/README.md diff --git a/op-alloy/book/book.toml b/rust/op-alloy/book/book.toml similarity index 100% rename from op-alloy/book/book.toml rename to rust/op-alloy/book/book.toml diff --git a/op-alloy/book/custom.css b/rust/op-alloy/book/custom.css similarity index 100% rename from op-alloy/book/custom.css rename to rust/op-alloy/book/custom.css diff --git a/op-alloy/book/mermaid-init.js b/rust/op-alloy/book/mermaid-init.js similarity index 100% rename from op-alloy/book/mermaid-init.js rename to rust/op-alloy/book/mermaid-init.js diff --git a/op-alloy/book/mermaid.min.js b/rust/op-alloy/book/mermaid.min.js similarity index 100% rename from op-alloy/book/mermaid.min.js rename to rust/op-alloy/book/mermaid.min.js diff --git a/op-alloy/book/src/CONTRIBUTING.md b/rust/op-alloy/book/src/CONTRIBUTING.md similarity index 100% rename from op-alloy/book/src/CONTRIBUTING.md rename to rust/op-alloy/book/src/CONTRIBUTING.md diff --git a/op-alloy/book/src/LICENSE.md b/rust/op-alloy/book/src/LICENSE.md similarity index 100% rename from op-alloy/book/src/LICENSE.md rename to rust/op-alloy/book/src/LICENSE.md diff --git a/op-alloy/book/src/SUMMARY.md b/rust/op-alloy/book/src/SUMMARY.md similarity index 100% rename from op-alloy/book/src/SUMMARY.md rename to rust/op-alloy/book/src/SUMMARY.md diff --git a/op-alloy/book/src/building/README.md b/rust/op-alloy/book/src/building/README.md similarity index 100% rename from op-alloy/book/src/building/README.md rename to rust/op-alloy/book/src/building/README.md diff --git a/op-alloy/book/src/building/consensus.md b/rust/op-alloy/book/src/building/consensus.md similarity index 100% rename from op-alloy/book/src/building/consensus.md rename to rust/op-alloy/book/src/building/consensus.md diff --git a/op-alloy/book/src/building/engine.md b/rust/op-alloy/book/src/building/engine.md similarity index 100% rename from op-alloy/book/src/building/engine.md rename to rust/op-alloy/book/src/building/engine.md diff --git a/op-alloy/book/src/building/rpc_types.md b/rust/op-alloy/book/src/building/rpc_types.md similarity index 100% rename from op-alloy/book/src/building/rpc_types.md rename to rust/op-alloy/book/src/building/rpc_types.md diff --git a/op-alloy/book/src/glossary.md b/rust/op-alloy/book/src/glossary.md similarity index 100% rename from op-alloy/book/src/glossary.md rename to rust/op-alloy/book/src/glossary.md diff --git a/op-alloy/book/src/intro.md b/rust/op-alloy/book/src/intro.md similarity index 100% rename from op-alloy/book/src/intro.md rename to rust/op-alloy/book/src/intro.md diff --git a/op-alloy/book/src/links.md b/rust/op-alloy/book/src/links.md similarity index 100% rename from op-alloy/book/src/links.md rename to rust/op-alloy/book/src/links.md diff --git a/op-alloy/book/src/starting.md b/rust/op-alloy/book/src/starting.md similarity index 100% rename from op-alloy/book/src/starting.md rename to rust/op-alloy/book/src/starting.md diff --git a/op-alloy/book/templates/glossary-link.md b/rust/op-alloy/book/templates/glossary-link.md similarity index 100% rename from op-alloy/book/templates/glossary-link.md rename to rust/op-alloy/book/templates/glossary-link.md diff --git a/op-alloy/book/theme/index.hbs b/rust/op-alloy/book/theme/index.hbs similarity index 100% rename from op-alloy/book/theme/index.hbs rename to rust/op-alloy/book/theme/index.hbs diff --git a/op-alloy/cliff.toml b/rust/op-alloy/cliff.toml similarity index 100% rename from op-alloy/cliff.toml rename to rust/op-alloy/cliff.toml diff --git a/op-alloy/crates/consensus/Cargo.toml b/rust/op-alloy/crates/consensus/Cargo.toml similarity index 58% rename from op-alloy/crates/consensus/Cargo.toml rename to rust/op-alloy/crates/consensus/Cargo.toml index d730a4604bd7f..8d0667a8b3278 100644 --- a/op-alloy/crates/consensus/Cargo.toml +++ b/rust/op-alloy/crates/consensus/Cargo.toml @@ -2,14 +2,14 @@ name = "op-alloy-consensus" description = "Optimism alloy consensus types" -version.workspace = true +version = "0.23.1" edition.workspace = true rust-version.workspace = true -authors.workspace = true +authors = ["Alloy Contributors"] license.workspace = true -homepage.workspace = true -repository.workspace = true -exclude.workspace = true +homepage = "https://github.com/alloy-rs/op-alloy" +repository = "https://github.com/alloy-rs/op-alloy" +exclude = ["benches/", "tests/"] [lints] workspace = true @@ -39,32 +39,50 @@ serde = { workspace = true, features = ["derive"], optional = true } [dev-dependencies] rand.workspace = true -bincode = { workspace = true, features = ["serde"] } +bincode = { workspace = true } serde_json.workspace = true alloy-signer.workspace = true -tokio = { workspace = true, features = ["macros"] } arbitrary = { workspace = true, features = ["derive"] } alloy-primitives = { workspace = true, features = ["rand", "arbitrary"] } [features] default = ["std"] -std = ["alloy-eips/std", "alloy-consensus/std", "derive_more/std"] +std = [ + "alloy-eips/std", + "alloy-consensus/std", + "derive_more/std", + "alloy-primitives/std", + "alloy-rlp/std", + "alloy-rpc-types-eth?/std", + "alloy-serde?/std", + "serde?/std", + "serde_with?/std", + "thiserror/std" +] alloy-compat = ["serde", "dep:alloy-network", "dep:alloy-rpc-types-eth"] k256 = ["alloy-primitives/k256", "alloy-consensus/k256"] kzg = ["alloy-eips/kzg", "alloy-consensus/kzg", "std"] arbitrary = [ - "std", - "dep:arbitrary", - "alloy-consensus/arbitrary", - "alloy-eips/arbitrary", - "alloy-primitives/rand", - "alloy-primitives/arbitrary", + "std", + "dep:arbitrary", + "alloy-consensus/arbitrary", + "alloy-eips/arbitrary", + "alloy-primitives/rand", + "alloy-primitives/arbitrary", + "alloy-rpc-types-eth?/arbitrary", + "alloy-serde?/arbitrary" ] serde = [ - "dep:serde", - "dep:alloy-serde", - "alloy-primitives/serde", - "alloy-consensus/serde", - "alloy-eips/serde", + "dep:serde", + "dep:alloy-serde", + "alloy-primitives/serde", + "alloy-consensus/serde", + "alloy-eips/serde", + "alloy-rpc-types-eth?/serde" +] +serde-bincode-compat = [ + "serde_with", + "alloy-consensus/serde-bincode-compat", + "alloy-eips/serde-bincode-compat", + "alloy-rpc-types-eth?/serde-bincode-compat" ] -serde-bincode-compat = ["serde_with", "alloy-consensus/serde-bincode-compat"] diff --git a/op-alloy/crates/consensus/README.md b/rust/op-alloy/crates/consensus/README.md similarity index 100% rename from op-alloy/crates/consensus/README.md rename to rust/op-alloy/crates/consensus/README.md diff --git a/op-alloy/crates/consensus/src/alloy_compat.rs b/rust/op-alloy/crates/consensus/src/alloy_compat.rs similarity index 100% rename from op-alloy/crates/consensus/src/alloy_compat.rs rename to rust/op-alloy/crates/consensus/src/alloy_compat.rs diff --git a/op-alloy/crates/consensus/src/block.rs b/rust/op-alloy/crates/consensus/src/block.rs similarity index 100% rename from op-alloy/crates/consensus/src/block.rs rename to rust/op-alloy/crates/consensus/src/block.rs diff --git a/op-alloy/crates/consensus/src/eip1559.rs b/rust/op-alloy/crates/consensus/src/eip1559.rs similarity index 100% rename from op-alloy/crates/consensus/src/eip1559.rs rename to rust/op-alloy/crates/consensus/src/eip1559.rs diff --git a/op-alloy/crates/consensus/src/interop.rs b/rust/op-alloy/crates/consensus/src/interop.rs similarity index 98% rename from op-alloy/crates/consensus/src/interop.rs rename to rust/op-alloy/crates/consensus/src/interop.rs index 1fd989215b7d3..21d4ed95582ef 100644 --- a/op-alloy/crates/consensus/src/interop.rs +++ b/rust/op-alloy/crates/consensus/src/interop.rs @@ -45,7 +45,7 @@ impl FromStr for SafetyLevel { } } -/// Error when parsing SafetyLevel from string. +/// Error when parsing `SafetyLevel` from string. #[derive(thiserror::Error, Debug)] #[error("Invalid SafetyLevel, error: {0}")] pub struct SafetyLevelParseError(pub String); diff --git a/op-alloy/crates/consensus/src/lib.rs b/rust/op-alloy/crates/consensus/src/lib.rs similarity index 100% rename from op-alloy/crates/consensus/src/lib.rs rename to rust/op-alloy/crates/consensus/src/lib.rs diff --git a/op-alloy/crates/consensus/src/predeploys.rs b/rust/op-alloy/crates/consensus/src/predeploys.rs similarity index 100% rename from op-alloy/crates/consensus/src/predeploys.rs rename to rust/op-alloy/crates/consensus/src/predeploys.rs diff --git a/op-alloy/crates/consensus/src/receipts/deposit.rs b/rust/op-alloy/crates/consensus/src/receipts/deposit.rs similarity index 98% rename from op-alloy/crates/consensus/src/receipts/deposit.rs rename to rust/op-alloy/crates/consensus/src/receipts/deposit.rs index 0bff384972fa8..66ea786904db7 100644 --- a/op-alloy/crates/consensus/src/receipts/deposit.rs +++ b/rust/op-alloy/crates/consensus/src/receipts/deposit.rs @@ -51,13 +51,13 @@ pub struct OpDepositReceipt { } impl OpDepositReceipt { - /// Calculates [`Log`]'s bloom filter. this is slow operation and [OpDepositReceiptWithBloom] + /// Calculates [`Log`]'s bloom filter. this is slow operation and [`OpDepositReceiptWithBloom`] /// can be used to cache this value. pub fn bloom_slow(&self) -> Bloom { self.inner.logs.iter().collect() } - /// Calculates the bloom filter for the receipt and returns the [OpDepositReceiptWithBloom] + /// Calculates the bloom filter for the receipt and returns the [`OpDepositReceiptWithBloom`] /// container type. pub fn with_bloom(self) -> OpDepositReceiptWithBloom { self.into() @@ -108,9 +108,9 @@ impl OpDepositReceipt { impl OpDepositReceipt { /// Returns length of RLP-encoded receipt fields with the given [`Bloom`] without an RLP header. pub fn rlp_encoded_fields_length_with_bloom(&self, bloom: &Bloom) -> usize { - self.inner.rlp_encoded_fields_length_with_bloom(bloom) - + self.deposit_nonce.map_or(0, |nonce| nonce.length()) - + self.deposit_receipt_version.map_or(0, |version| version.length()) + self.inner.rlp_encoded_fields_length_with_bloom(bloom) + + self.deposit_nonce.map_or(0, |nonce| nonce.length()) + + self.deposit_receipt_version.map_or(0, |version| version.length()) } /// RLP-encodes receipt fields with the given [`Bloom`] without an RLP header. diff --git a/op-alloy/crates/consensus/src/receipts/envelope.rs b/rust/op-alloy/crates/consensus/src/receipts/envelope.rs similarity index 97% rename from op-alloy/crates/consensus/src/receipts/envelope.rs rename to rust/op-alloy/crates/consensus/src/receipts/envelope.rs index 0a8995cca93c7..d0efcea1583cf 100644 --- a/op-alloy/crates/consensus/src/receipts/envelope.rs +++ b/rust/op-alloy/crates/consensus/src/receipts/envelope.rs @@ -144,15 +144,14 @@ impl OpReceiptEnvelope { /// Return the receipt's bloom. pub const fn logs_bloom(&self) -> &Bloom { match self { - Self::Legacy(t) => &t.logs_bloom, - Self::Eip2930(t) => &t.logs_bloom, - Self::Eip1559(t) => &t.logs_bloom, - Self::Eip7702(t) => &t.logs_bloom, + Self::Legacy(t) | Self::Eip2930(t) | Self::Eip1559(t) | Self::Eip7702(t) => { + &t.logs_bloom + } Self::Deposit(t) => &t.logs_bloom, } } - /// Return the receipt's deposit_nonce if it is a deposit receipt. + /// Return the receipt's `deposit_nonce` if it is a deposit receipt. pub fn deposit_nonce(&self) -> Option { self.as_deposit_receipt().and_then(|r| r.deposit_nonce) } @@ -202,10 +201,7 @@ impl OpReceiptEnvelope { /// Get the length of the inner receipt in the 2718 encoding. pub fn inner_length(&self) -> usize { match self { - Self::Legacy(t) => t.length(), - Self::Eip2930(t) => t.length(), - Self::Eip1559(t) => t.length(), - Self::Eip7702(t) => t.length(), + Self::Legacy(t) | Self::Eip2930(t) | Self::Eip1559(t) | Self::Eip7702(t) => t.length(), Self::Deposit(t) => t.length(), } } diff --git a/op-alloy/crates/consensus/src/receipts/mod.rs b/rust/op-alloy/crates/consensus/src/receipts/mod.rs similarity index 100% rename from op-alloy/crates/consensus/src/receipts/mod.rs rename to rust/op-alloy/crates/consensus/src/receipts/mod.rs diff --git a/op-alloy/crates/consensus/src/receipts/receipt.rs b/rust/op-alloy/crates/consensus/src/receipts/receipt.rs similarity index 93% rename from op-alloy/crates/consensus/src/receipts/receipt.rs rename to rust/op-alloy/crates/consensus/src/receipts/receipt.rs index 9777a174b288b..21b2b2ad632e9 100644 --- a/op-alloy/crates/consensus/src/receipts/receipt.rs +++ b/rust/op-alloy/crates/consensus/src/receipts/receipt.rs @@ -53,10 +53,10 @@ impl OpReceipt { /// Returns inner [`Receipt`]. pub const fn as_receipt(&self) -> &Receipt { match self { - Self::Legacy(receipt) - | Self::Eip2930(receipt) - | Self::Eip1559(receipt) - | Self::Eip7702(receipt) => receipt, + Self::Legacy(receipt) | + Self::Eip2930(receipt) | + Self::Eip1559(receipt) | + Self::Eip7702(receipt) => receipt, Self::Deposit(receipt) => &receipt.inner, } } @@ -64,10 +64,10 @@ impl OpReceipt { /// Returns a mutable reference to the inner [`Receipt`]. pub const fn as_receipt_mut(&mut self) -> &mut Receipt { match self { - Self::Legacy(receipt) - | Self::Eip2930(receipt) - | Self::Eip1559(receipt) - | Self::Eip7702(receipt) => receipt, + Self::Legacy(receipt) | + Self::Eip2930(receipt) | + Self::Eip1559(receipt) | + Self::Eip7702(receipt) => receipt, Self::Deposit(receipt) => &mut receipt.inner, } } @@ -75,10 +75,10 @@ impl OpReceipt { /// Consumes this and returns the inner [`Receipt`]. pub fn into_receipt(self) -> Receipt { match self { - Self::Legacy(receipt) - | Self::Eip2930(receipt) - | Self::Eip1559(receipt) - | Self::Eip7702(receipt) => receipt, + Self::Legacy(receipt) | + Self::Eip2930(receipt) | + Self::Eip1559(receipt) | + Self::Eip7702(receipt) => receipt, Self::Deposit(receipt) => receipt.inner, } } @@ -102,10 +102,10 @@ impl OpReceipt { T: Encodable, { match self { - Self::Legacy(receipt) - | Self::Eip2930(receipt) - | Self::Eip1559(receipt) - | Self::Eip7702(receipt) => receipt.rlp_encoded_fields_length_with_bloom(bloom), + Self::Legacy(receipt) | + Self::Eip2930(receipt) | + Self::Eip1559(receipt) | + Self::Eip7702(receipt) => receipt.rlp_encoded_fields_length_with_bloom(bloom), Self::Deposit(receipt) => receipt.rlp_encoded_fields_length_with_bloom(bloom), } } @@ -116,10 +116,10 @@ impl OpReceipt { T: Encodable, { match self { - Self::Legacy(receipt) - | Self::Eip2930(receipt) - | Self::Eip1559(receipt) - | Self::Eip7702(receipt) => receipt.rlp_encode_fields_with_bloom(bloom, out), + Self::Legacy(receipt) | + Self::Eip2930(receipt) | + Self::Eip1559(receipt) | + Self::Eip7702(receipt) => receipt.rlp_encode_fields_with_bloom(bloom, out), Self::Deposit(receipt) => receipt.rlp_encode_fields_with_bloom(bloom, out), } } @@ -185,10 +185,10 @@ impl OpReceipt { { self.tx_type().encode(out); match self { - Self::Legacy(receipt) - | Self::Eip2930(receipt) - | Self::Eip1559(receipt) - | Self::Eip7702(receipt) => { + Self::Legacy(receipt) | + Self::Eip2930(receipt) | + Self::Eip1559(receipt) | + Self::Eip7702(receipt) => { receipt.status.encode(out); receipt.cumulative_gas_used.encode(out); receipt.logs.encode(out); @@ -212,22 +212,22 @@ impl OpReceipt { where T: Encodable, { - self.tx_type().length() - + match self { - Self::Legacy(receipt) - | Self::Eip2930(receipt) - | Self::Eip1559(receipt) - | Self::Eip7702(receipt) => { - receipt.status.length() - + receipt.cumulative_gas_used.length() - + receipt.logs.length() + self.tx_type().length() + + match self { + Self::Legacy(receipt) | + Self::Eip2930(receipt) | + Self::Eip1559(receipt) | + Self::Eip7702(receipt) => { + receipt.status.length() + + receipt.cumulative_gas_used.length() + + receipt.logs.length() } Self::Deposit(receipt) => { - receipt.inner.status.length() - + receipt.inner.cumulative_gas_used.length() - + receipt.inner.logs.length() - + receipt.deposit_nonce.map_or(0, |nonce| nonce.length()) - + receipt.deposit_receipt_version.map_or(0, |version| version.length()) + receipt.inner.status.length() + + receipt.inner.cumulative_gas_used.length() + + receipt.inner.logs.length() + + receipt.deposit_nonce.map_or(0, |nonce| nonce.length()) + + receipt.deposit_receipt_version.map_or(0, |version| version.length()) } } } @@ -399,10 +399,10 @@ impl> TxReceipt for OpReceipt Vec { match self { - Self::Legacy(receipt) - | Self::Eip2930(receipt) - | Self::Eip1559(receipt) - | Self::Eip7702(receipt) => receipt.logs, + Self::Legacy(receipt) | + Self::Eip2930(receipt) | + Self::Eip1559(receipt) | + Self::Eip7702(receipt) => receipt.logs, Self::Deposit(receipt) => receipt.inner.logs, } } diff --git a/op-alloy/crates/consensus/src/source.rs b/rust/op-alloy/crates/consensus/src/source.rs similarity index 96% rename from op-alloy/crates/consensus/src/source.rs rename to rust/op-alloy/crates/consensus/src/source.rs index 61607adaad898..f454dd2403f91 100644 --- a/op-alloy/crates/consensus/src/source.rs +++ b/rust/op-alloy/crates/consensus/src/source.rs @@ -52,7 +52,7 @@ pub struct UserDepositSource { } impl UserDepositSource { - /// Creates a new [UserDepositSource]. + /// Creates a new [`UserDepositSource`]. pub const fn new(l1_block_hash: B256, log_index: u64) -> Self { Self { l1_block_hash, log_index } } @@ -81,7 +81,7 @@ pub struct L1InfoDepositSource { } impl L1InfoDepositSource { - /// Creates a new [L1InfoDepositSource]. + /// Creates a new [`L1InfoDepositSource`]. pub const fn new(l1_block_hash: B256, seq_number: u64) -> Self { Self { l1_block_hash, seq_number } } @@ -115,7 +115,7 @@ pub struct UpgradeDepositSource { } impl UpgradeDepositSource { - /// Creates a new [UpgradeDepositSource]. + /// Creates a new [`UpgradeDepositSource`]. pub const fn new(intent: String) -> Self { Self { intent } } @@ -147,7 +147,7 @@ pub struct InteropBlockReplacementDepositSource { } impl InteropBlockReplacementDepositSource { - /// Creates a new [InteropBlockReplacementDepositSource]. + /// Creates a new [`InteropBlockReplacementDepositSource`]. pub const fn new(output_root: B256) -> Self { Self { output_root } } diff --git a/op-alloy/crates/consensus/src/transaction/deposit.rs b/rust/op-alloy/crates/consensus/src/transaction/deposit.rs similarity index 98% rename from op-alloy/crates/consensus/src/transaction/deposit.rs rename to rust/op-alloy/crates/consensus/src/transaction/deposit.rs index 01c5c83fa7fd1..ba1eec8d51d2a 100644 --- a/op-alloy/crates/consensus/src/transaction/deposit.rs +++ b/rust/op-alloy/crates/consensus/src/transaction/deposit.rs @@ -50,7 +50,7 @@ pub struct TxDeposit { } impl TxDeposit { - /// Decodes the inner [TxDeposit] fields from RLP bytes. + /// Decodes the inner [`TxDeposit`] fields from RLP bytes. /// /// NOTE: This assumes a RLP header has already been decoded, and _just_ decodes the following /// RLP fields in the following order: @@ -100,14 +100,14 @@ impl TxDeposit { /// Outputs the length of the transaction's fields, without a RLP header or length of the /// eip155 fields. pub(crate) fn rlp_encoded_fields_length(&self) -> usize { - self.source_hash.length() - + self.from.length() - + self.to.length() - + self.mint.length() - + self.value.length() - + self.gas_limit.length() - + self.is_system_transaction.length() - + self.input.0.length() + self.source_hash.length() + + self.from.length() + + self.to.length() + + self.mint.length() + + self.value.length() + + self.gas_limit.length() + + self.is_system_transaction.length() + + self.input.0.length() } /// Encodes only the transaction's fields into the desired buffer, without a RLP header. @@ -123,7 +123,7 @@ impl TxDeposit { self.input.encode(out); } - /// Calculates a heuristic for the in-memory size of the [TxDeposit] transaction. + /// Calculates a heuristic for the in-memory size of the [`TxDeposit`] transaction. #[inline] pub fn size(&self) -> usize { mem::size_of::() + // source_hash diff --git a/op-alloy/crates/consensus/src/transaction/envelope.rs b/rust/op-alloy/crates/consensus/src/transaction/envelope.rs similarity index 99% rename from op-alloy/crates/consensus/src/transaction/envelope.rs rename to rust/op-alloy/crates/consensus/src/transaction/envelope.rs index 2f2e0cffc3302..afe73b2474a70 100644 --- a/op-alloy/crates/consensus/src/transaction/envelope.rs +++ b/rust/op-alloy/crates/consensus/src/transaction/envelope.rs @@ -515,7 +515,7 @@ impl alloy_consensus::transaction::SignerRecoverable for OpTxEnvelope { } } -/// Bincode-compatible serde implementation for OpTxEnvelope. +/// Bincode-compatible serde implementation for `OpTxEnvelope`. #[cfg(all(feature = "serde", feature = "serde-bincode-compat"))] pub mod serde_bincode_compat { use crate::serde_bincode_compat::TxDeposit; @@ -527,7 +527,7 @@ pub mod serde_bincode_compat { use serde::{Deserialize, Deserializer, Serialize, Serializer}; use serde_with::{DeserializeAs, SerializeAs}; - /// Bincode-compatible representation of an OpTxEnvelope. + /// Bincode-compatible representation of an `OpTxEnvelope`. #[derive(Debug, Serialize, Deserialize)] pub enum OpTxEnvelope<'a> { /// Legacy variant. @@ -644,7 +644,7 @@ pub mod serde_bincode_compat { use serde::{Deserialize, Serialize}; use serde_with::serde_as; - /// Tests a bincode round-trip for OpTxEnvelope using an arbitrary instance. + /// Tests a bincode round-trip for `OpTxEnvelope` using an arbitrary instance. #[test] fn test_op_tx_envelope_bincode_roundtrip_arbitrary() { #[serde_as] diff --git a/op-alloy/crates/consensus/src/transaction/meta.rs b/rust/op-alloy/crates/consensus/src/transaction/meta.rs similarity index 100% rename from op-alloy/crates/consensus/src/transaction/meta.rs rename to rust/op-alloy/crates/consensus/src/transaction/meta.rs diff --git a/op-alloy/crates/consensus/src/transaction/mod.rs b/rust/op-alloy/crates/consensus/src/transaction/mod.rs similarity index 100% rename from op-alloy/crates/consensus/src/transaction/mod.rs rename to rust/op-alloy/crates/consensus/src/transaction/mod.rs diff --git a/op-alloy/crates/consensus/src/transaction/pooled.rs b/rust/op-alloy/crates/consensus/src/transaction/pooled.rs similarity index 100% rename from op-alloy/crates/consensus/src/transaction/pooled.rs rename to rust/op-alloy/crates/consensus/src/transaction/pooled.rs diff --git a/op-alloy/crates/consensus/src/transaction/tx_type.rs b/rust/op-alloy/crates/consensus/src/transaction/tx_type.rs similarity index 100% rename from op-alloy/crates/consensus/src/transaction/tx_type.rs rename to rust/op-alloy/crates/consensus/src/transaction/tx_type.rs diff --git a/op-alloy/crates/consensus/src/transaction/typed.rs b/rust/op-alloy/crates/consensus/src/transaction/typed.rs similarity index 100% rename from op-alloy/crates/consensus/src/transaction/typed.rs rename to rust/op-alloy/crates/consensus/src/transaction/typed.rs diff --git a/op-alloy/crates/network/Cargo.toml b/rust/op-alloy/crates/network/Cargo.toml similarity index 53% rename from op-alloy/crates/network/Cargo.toml rename to rust/op-alloy/crates/network/Cargo.toml index 398616d9bdcb5..74e3d6a7cd37e 100644 --- a/op-alloy/crates/network/Cargo.toml +++ b/rust/op-alloy/crates/network/Cargo.toml @@ -2,14 +2,14 @@ name = "op-alloy-network" description = "Optimism blockchain RPC behavior abstraction" -version.workspace = true +version = "0.23.1" edition.workspace = true rust-version.workspace = true -authors.workspace = true +authors = ["Alloy Contributors"] license.workspace = true -homepage.workspace = true -repository.workspace = true -exclude.workspace = true +homepage = "https://github.com/alloy-rs/op-alloy" +repository = "https://github.com/alloy-rs/op-alloy" +exclude = ["benches/", "tests/"] [lints] workspace = true @@ -28,5 +28,17 @@ alloy-rpc-types-eth.workspace = true alloy-signer.workspace = true [features] -std = ["op-alloy-consensus/std", "op-alloy-rpc-types/std"] -serde = ["op-alloy-consensus/serde", "op-alloy-rpc-types/serde"] +std = [ + "op-alloy-consensus/std", + "op-alloy-rpc-types/std", + "alloy-consensus/std", + "alloy-primitives/std", + "alloy-rpc-types-eth/std" +] +serde = [ + "op-alloy-consensus/serde", + "op-alloy-rpc-types/serde", + "alloy-consensus/serde", + "alloy-primitives/serde", + "alloy-rpc-types-eth/serde" +] diff --git a/op-alloy/crates/network/README.md b/rust/op-alloy/crates/network/README.md similarity index 100% rename from op-alloy/crates/network/README.md rename to rust/op-alloy/crates/network/README.md diff --git a/op-alloy/crates/network/src/lib.rs b/rust/op-alloy/crates/network/src/lib.rs similarity index 100% rename from op-alloy/crates/network/src/lib.rs rename to rust/op-alloy/crates/network/src/lib.rs diff --git a/op-alloy/crates/op-alloy/Cargo.toml b/rust/op-alloy/crates/op-alloy/Cargo.toml similarity index 89% rename from op-alloy/crates/op-alloy/Cargo.toml rename to rust/op-alloy/crates/op-alloy/Cargo.toml index 198d7d166269c..c7e3dbb0b17ff 100644 --- a/op-alloy/crates/op-alloy/Cargo.toml +++ b/rust/op-alloy/crates/op-alloy/Cargo.toml @@ -1,14 +1,14 @@ [package] name = "op-alloy" description = "Connect applications to the OP Stack" -version.workspace = true +version = "0.23.1" edition.workspace = true rust-version.workspace = true -authors.workspace = true +authors = ["Alloy Contributors"] license.workspace = true -homepage.workspace = true -repository.workspace = true -exclude.workspace = true +homepage = "https://github.com/alloy-rs/op-alloy" +repository = "https://github.com/alloy-rs/op-alloy" +exclude = ["benches/", "tests/"] [package.metadata.docs.rs] all-features = true diff --git a/op-alloy/crates/op-alloy/README.md b/rust/op-alloy/crates/op-alloy/README.md similarity index 98% rename from op-alloy/crates/op-alloy/README.md rename to rust/op-alloy/crates/op-alloy/README.md index cbc299caa7b0c..8caada9935697 100644 --- a/op-alloy/crates/op-alloy/README.md +++ b/rust/op-alloy/crates/op-alloy/README.md @@ -55,7 +55,7 @@ Notice, provider crates do not support `no_std` compatibility. - [`op-alloy-rpc-types-engine`][op-alloy-rpc-types-engine] - [`op-alloy-rpc-types`][op-alloy-rpc-types] -If you would like to add no_std support to a crate, +If you would like to add `no_std` support to a crate, please make sure to update [scripts/check_no_std.sh][check-no-std]. diff --git a/op-alloy/crates/op-alloy/src/lib.rs b/rust/op-alloy/crates/op-alloy/src/lib.rs similarity index 100% rename from op-alloy/crates/op-alloy/src/lib.rs rename to rust/op-alloy/crates/op-alloy/src/lib.rs diff --git a/op-alloy/crates/provider/Cargo.toml b/rust/op-alloy/crates/provider/Cargo.toml similarity index 62% rename from op-alloy/crates/provider/Cargo.toml rename to rust/op-alloy/crates/provider/Cargo.toml index baaca2ddd14e3..cd9ad64619de7 100644 --- a/op-alloy/crates/provider/Cargo.toml +++ b/rust/op-alloy/crates/provider/Cargo.toml @@ -2,14 +2,14 @@ name = "op-alloy-provider" description = "Interface with an OP Stack blockchain" -version.workspace = true +version = "0.23.1" edition.workspace = true rust-version.workspace = true license.workspace = true -homepage.workspace = true -authors.workspace = true -repository.workspace = true -exclude.workspace = true +homepage = "https://github.com/alloy-rs/op-alloy" +authors = ["Alloy Contributors"] +repository = "https://github.com/alloy-rs/op-alloy" +exclude = ["benches/", "tests/"] [lints] workspace = true @@ -30,8 +30,12 @@ async-trait.workspace = true [features] std = [ - "op-alloy-rpc-types-engine/std" + "op-alloy-rpc-types-engine/std", + "alloy-primitives/std", + "alloy-rpc-types-engine/std" ] serde = [ - "op-alloy-rpc-types-engine/serde" + "op-alloy-rpc-types-engine/serde", + "alloy-primitives/serde", + "alloy-rpc-types-engine/serde" ] diff --git a/op-alloy/crates/provider/README.md b/rust/op-alloy/crates/provider/README.md similarity index 100% rename from op-alloy/crates/provider/README.md rename to rust/op-alloy/crates/provider/README.md diff --git a/op-alloy/crates/provider/src/ext/engine.rs b/rust/op-alloy/crates/provider/src/ext/engine.rs similarity index 99% rename from op-alloy/crates/provider/src/ext/engine.rs rename to rust/op-alloy/crates/provider/src/ext/engine.rs index 855927a27c055..4cfcd1069327f 100644 --- a/op-alloy/crates/provider/src/ext/engine.rs +++ b/rust/op-alloy/crates/provider/src/ext/engine.rs @@ -144,7 +144,7 @@ pub trait OpEngineApi { /// Returns the execution payload bodies by the range starting at `start`, containing `count` /// blocks. /// - /// WARNING: This method is associated with the BeaconBlocksByRange message in the consensus + /// WARNING: This method is associated with the `BeaconBlocksByRange` message in the consensus /// layer p2p specification, meaning the input should be treated as untrusted or potentially /// adversarial. /// diff --git a/op-alloy/crates/provider/src/ext/mod.rs b/rust/op-alloy/crates/provider/src/ext/mod.rs similarity index 100% rename from op-alloy/crates/provider/src/ext/mod.rs rename to rust/op-alloy/crates/provider/src/ext/mod.rs diff --git a/op-alloy/crates/provider/src/lib.rs b/rust/op-alloy/crates/provider/src/lib.rs similarity index 100% rename from op-alloy/crates/provider/src/lib.rs rename to rust/op-alloy/crates/provider/src/lib.rs diff --git a/op-alloy/crates/rpc-jsonrpsee/Cargo.toml b/rust/op-alloy/crates/rpc-jsonrpsee/Cargo.toml similarity index 67% rename from op-alloy/crates/rpc-jsonrpsee/Cargo.toml rename to rust/op-alloy/crates/rpc-jsonrpsee/Cargo.toml index 943665c3b2400..22645d9e282d2 100644 --- a/op-alloy/crates/rpc-jsonrpsee/Cargo.toml +++ b/rust/op-alloy/crates/rpc-jsonrpsee/Cargo.toml @@ -2,14 +2,14 @@ name = "op-alloy-rpc-jsonrpsee" description = "Optimism RPC Client" -version.workspace = true +version = "0.23.1" edition.workspace = true rust-version.workspace = true license.workspace = true -homepage.workspace = true -authors.workspace = true -repository.workspace = true -exclude.workspace = true +homepage = "https://github.com/alloy-rs/op-alloy" +authors = ["Alloy Contributors"] +repository = "https://github.com/alloy-rs/op-alloy" +exclude = ["benches/", "tests/"] [lints] workspace = true diff --git a/op-alloy/crates/rpc-jsonrpsee/README.md b/rust/op-alloy/crates/rpc-jsonrpsee/README.md similarity index 100% rename from op-alloy/crates/rpc-jsonrpsee/README.md rename to rust/op-alloy/crates/rpc-jsonrpsee/README.md diff --git a/op-alloy/crates/rpc-jsonrpsee/src/lib.rs b/rust/op-alloy/crates/rpc-jsonrpsee/src/lib.rs similarity index 100% rename from op-alloy/crates/rpc-jsonrpsee/src/lib.rs rename to rust/op-alloy/crates/rpc-jsonrpsee/src/lib.rs diff --git a/op-alloy/crates/rpc-jsonrpsee/src/traits.rs b/rust/op-alloy/crates/rpc-jsonrpsee/src/traits.rs similarity index 100% rename from op-alloy/crates/rpc-jsonrpsee/src/traits.rs rename to rust/op-alloy/crates/rpc-jsonrpsee/src/traits.rs diff --git a/op-alloy/crates/rpc-types-engine/Cargo.toml b/rust/op-alloy/crates/rpc-types-engine/Cargo.toml similarity index 61% rename from op-alloy/crates/rpc-types-engine/Cargo.toml rename to rust/op-alloy/crates/rpc-types-engine/Cargo.toml index 7cab2286fbc2c..ff2d7882433b4 100644 --- a/op-alloy/crates/rpc-types-engine/Cargo.toml +++ b/rust/op-alloy/crates/rpc-types-engine/Cargo.toml @@ -2,14 +2,14 @@ name = "op-alloy-rpc-types-engine" description = "Optimism RPC types for the `engine` namespace" -version.workspace = true +version = "0.23.1" edition.workspace = true rust-version.workspace = true license.workspace = true -homepage.workspace = true -authors.workspace = true -repository.workspace = true -exclude.workspace = true +homepage = "https://github.com/alloy-rs/op-alloy" +authors = ["Alloy Contributors"] +repository = "https://github.com/alloy-rs/op-alloy" +exclude = ["benches/", "tests/"] [lints] workspace = true @@ -52,25 +52,40 @@ alloy-primitives = { workspace = true, features = ["arbitrary", "getrandom"] } [features] default = ["std", "serde"] std = [ - "dep:snap", - "dep:ethereum_ssz", - "dep:ethereum_ssz_derive", - "alloy-rpc-types-engine/ssz", - "alloy-primitives/std", - "alloy-rpc-types-engine/std", - "op-alloy-consensus/std", + "dep:snap", + "dep:ethereum_ssz", + "dep:ethereum_ssz_derive", + "alloy-rpc-types-engine/ssz", + "alloy-primitives/std", + "alloy-rpc-types-engine/std", + "op-alloy-consensus/std", + "alloy-consensus/std", + "alloy-eips/std", + "alloy-rlp/std", + "alloy-serde?/std", + "derive_more/std", + "serde?/std", + "sha2/std", + "thiserror/std" ] serde = [ "dep:serde", "dep:alloy-serde", "alloy-rpc-types-engine/serde", - "op-alloy-consensus/serde" + "op-alloy-consensus/serde", + "alloy-consensus/serde", + "alloy-eips/serde", + "alloy-primitives/serde" ] k256 = ["op-alloy-consensus/k256"] arbitrary = [ - "std", - "dep:arbitrary", - "alloy-primitives/arbitrary", - "alloy-primitives/rand", - "op-alloy-consensus/arbitrary" + "std", + "dep:arbitrary", + "alloy-primitives/arbitrary", + "alloy-primitives/rand", + "op-alloy-consensus/arbitrary", + "alloy-consensus/arbitrary", + "alloy-eips/arbitrary", + "alloy-rpc-types-engine/arbitrary", + "alloy-serde?/arbitrary" ] diff --git a/op-alloy/crates/rpc-types-engine/README.md b/rust/op-alloy/crates/rpc-types-engine/README.md similarity index 100% rename from op-alloy/crates/rpc-types-engine/README.md rename to rust/op-alloy/crates/rpc-types-engine/README.md diff --git a/op-alloy/crates/rpc-types-engine/src/attributes.rs b/rust/op-alloy/crates/rpc-types-engine/src/attributes.rs similarity index 100% rename from op-alloy/crates/rpc-types-engine/src/attributes.rs rename to rust/op-alloy/crates/rpc-types-engine/src/attributes.rs diff --git a/op-alloy/crates/rpc-types-engine/src/envelope.rs b/rust/op-alloy/crates/rpc-types-engine/src/envelope.rs similarity index 99% rename from op-alloy/crates/rpc-types-engine/src/envelope.rs rename to rust/op-alloy/crates/rpc-types-engine/src/envelope.rs index f87afb2f839e9..b1abc900fda8f 100644 --- a/op-alloy/crates/rpc-types-engine/src/envelope.rs +++ b/rust/op-alloy/crates/rpc-types-engine/src/envelope.rs @@ -228,7 +228,7 @@ impl OpExecutionData { let (transactions, withdrawals) = flashblocks.iter().fold((Vec::new(), Vec::new()), |(mut txs, mut withdrawals), p| { txs.extend(p.diff.transactions.iter().cloned()); - withdrawals.extend(p.diff.withdrawals.iter().cloned()); + withdrawals.extend(p.diff.withdrawals.iter().copied()); (txs, withdrawals) }); @@ -734,21 +734,17 @@ mod tests { use alloy_primitives::{Address, Bloom, Bytes, U256}; use alloy_rpc_types_engine::PayloadId; - let base = if with_base { - Some(OpFlashblockPayloadBase { - parent_beacon_block_root: B256::ZERO, - parent_hash: B256::ZERO, - fee_recipient: Address::ZERO, - prev_randao: B256::ZERO, - block_number: 100, - gas_limit: 30_000_000, - timestamp: 1234567890, - extra_data: Bytes::default(), - base_fee_per_gas: U256::from(1000000000u64), - }) - } else { - None - }; + let base = with_base.then(|| OpFlashblockPayloadBase { + parent_beacon_block_root: B256::ZERO, + parent_hash: B256::ZERO, + fee_recipient: Address::ZERO, + prev_randao: B256::ZERO, + block_number: 100, + gas_limit: 30_000_000, + timestamp: 1234567890, + extra_data: Bytes::default(), + base_fee_per_gas: U256::from(1000000000u64), + }); let diff = OpFlashblockPayloadDelta { state_root: B256::ZERO, diff --git a/op-alloy/crates/rpc-types-engine/src/flashblock/base.rs b/rust/op-alloy/crates/rpc-types-engine/src/flashblock/base.rs similarity index 100% rename from op-alloy/crates/rpc-types-engine/src/flashblock/base.rs rename to rust/op-alloy/crates/rpc-types-engine/src/flashblock/base.rs diff --git a/op-alloy/crates/rpc-types-engine/src/flashblock/delta.rs b/rust/op-alloy/crates/rpc-types-engine/src/flashblock/delta.rs similarity index 100% rename from op-alloy/crates/rpc-types-engine/src/flashblock/delta.rs rename to rust/op-alloy/crates/rpc-types-engine/src/flashblock/delta.rs diff --git a/op-alloy/crates/rpc-types-engine/src/flashblock/error.rs b/rust/op-alloy/crates/rpc-types-engine/src/flashblock/error.rs similarity index 100% rename from op-alloy/crates/rpc-types-engine/src/flashblock/error.rs rename to rust/op-alloy/crates/rpc-types-engine/src/flashblock/error.rs diff --git a/op-alloy/crates/rpc-types-engine/src/flashblock/metadata.rs b/rust/op-alloy/crates/rpc-types-engine/src/flashblock/metadata.rs similarity index 100% rename from op-alloy/crates/rpc-types-engine/src/flashblock/metadata.rs rename to rust/op-alloy/crates/rpc-types-engine/src/flashblock/metadata.rs diff --git a/op-alloy/crates/rpc-types-engine/src/flashblock/mod.rs b/rust/op-alloy/crates/rpc-types-engine/src/flashblock/mod.rs similarity index 100% rename from op-alloy/crates/rpc-types-engine/src/flashblock/mod.rs rename to rust/op-alloy/crates/rpc-types-engine/src/flashblock/mod.rs diff --git a/op-alloy/crates/rpc-types-engine/src/flashblock/payload.rs b/rust/op-alloy/crates/rpc-types-engine/src/flashblock/payload.rs similarity index 100% rename from op-alloy/crates/rpc-types-engine/src/flashblock/payload.rs rename to rust/op-alloy/crates/rpc-types-engine/src/flashblock/payload.rs diff --git a/op-alloy/crates/rpc-types-engine/src/lib.rs b/rust/op-alloy/crates/rpc-types-engine/src/lib.rs similarity index 100% rename from op-alloy/crates/rpc-types-engine/src/lib.rs rename to rust/op-alloy/crates/rpc-types-engine/src/lib.rs diff --git a/op-alloy/crates/rpc-types-engine/src/payload/error.rs b/rust/op-alloy/crates/rpc-types-engine/src/payload/error.rs similarity index 100% rename from op-alloy/crates/rpc-types-engine/src/payload/error.rs rename to rust/op-alloy/crates/rpc-types-engine/src/payload/error.rs diff --git a/op-alloy/crates/rpc-types-engine/src/payload/mod.rs b/rust/op-alloy/crates/rpc-types-engine/src/payload/mod.rs similarity index 98% rename from op-alloy/crates/rpc-types-engine/src/payload/mod.rs rename to rust/op-alloy/crates/rpc-types-engine/src/payload/mod.rs index 4367784f5a12f..613251ef6b416 100644 --- a/op-alloy/crates/rpc-types-engine/src/payload/mod.rs +++ b/rust/op-alloy/crates/rpc-types-engine/src/payload/mod.rs @@ -146,6 +146,7 @@ impl<'de> serde::Deserialize<'de> for OpExecutionPayload { let mut excess_blob_gas = None; let mut withdrawals_root = None; + #[allow(clippy::collection_is_never_read)] let mut extra_fields = HashMap::new(); while let Some(key) = map.next_key()? { @@ -520,7 +521,7 @@ impl OpExecutionPayload { /// /// Caution: This does not set fields that are not part of the payload and only part of the /// [`OpExecutionPayloadSidecar`]: - /// - parent_beacon_block_root + /// - `parent_beacon_block_root` /// /// See also: [`OpExecutionPayload::into_block_with_sidecar_raw`] pub fn into_block_raw(self) -> Result, PayloadError> { @@ -543,16 +544,16 @@ impl OpExecutionPayload { self, sidecar: &OpExecutionPayloadSidecar, ) -> Result, OpPayloadError> { - if let Some(payload) = self.as_v2() - && !payload.withdrawals.is_empty() + if let Some(payload) = self.as_v2() && + !payload.withdrawals.is_empty() { return Err(OpPayloadError::NonEmptyL1Withdrawals); } let mut block = self.into_block_raw()?; - if let Some(blobs_hashes) = sidecar.versioned_hashes() - && !blobs_hashes.is_empty() + if let Some(blobs_hashes) = sidecar.versioned_hashes() && + !blobs_hashes.is_empty() { return Err(OpPayloadError::NonEmptyBlobVersionedHashes); } @@ -576,7 +577,7 @@ impl OpExecutionPayload { /// /// Caution: This does not set fields that are not part of the payload and only part of the /// [`OpExecutionPayloadSidecar`]: - /// - parent_beacon_block_root + /// - `parent_beacon_block_root` /// /// See also: [`OpExecutionPayload::try_into_block_with_sidecar`] pub fn try_into_block(self) -> Result, OpPayloadError> { @@ -596,7 +597,7 @@ impl OpExecutionPayload { /// /// Caution: This does not set fields that are not part of the payload and only part of the /// [`OpExecutionPayloadSidecar`]: - /// - parent_beacon_block_root + /// - `parent_beacon_block_root` /// /// See also: [`OpExecutionPayload::try_into_block_with_sidecar_with`] pub fn try_into_block_with(self, f: F) -> Result, OpPayloadError> @@ -605,8 +606,8 @@ impl OpExecutionPayload { F: FnMut(alloy_primitives::Bytes) -> Result, E: Into, { - if let Some(payload) = self.as_v2() - && !payload.withdrawals.is_empty() + if let Some(payload) = self.as_v2() && + !payload.withdrawals.is_empty() { return Err(OpPayloadError::NonEmptyL1Withdrawals); } @@ -664,8 +665,8 @@ impl OpExecutionPayload { E: Into, { let mut base_payload = self.try_into_block_with(f)?; - if let Some(blobs_hashes) = sidecar.versioned_hashes() - && !blobs_hashes.is_empty() + if let Some(blobs_hashes) = sidecar.versioned_hashes() && + !blobs_hashes.is_empty() { return Err(OpPayloadError::NonEmptyBlobVersionedHashes); } diff --git a/op-alloy/crates/rpc-types-engine/src/payload/v3.rs b/rust/op-alloy/crates/rpc-types-engine/src/payload/v3.rs similarity index 100% rename from op-alloy/crates/rpc-types-engine/src/payload/v3.rs rename to rust/op-alloy/crates/rpc-types-engine/src/payload/v3.rs diff --git a/op-alloy/crates/rpc-types-engine/src/payload/v4.rs b/rust/op-alloy/crates/rpc-types-engine/src/payload/v4.rs similarity index 96% rename from op-alloy/crates/rpc-types-engine/src/payload/v4.rs rename to rust/op-alloy/crates/rpc-types-engine/src/payload/v4.rs index b0eb947612c61..24e4059f9b8bc 100644 --- a/op-alloy/crates/rpc-types-engine/src/payload/v4.rs +++ b/rust/op-alloy/crates/rpc-types-engine/src/payload/v4.rs @@ -143,12 +143,12 @@ impl ssz::Encode for OpExecutionPayloadV4 { } fn ssz_append(&self, buf: &mut Vec) { - let offset = ::ssz_fixed_len() * 6 - + ::ssz_fixed_len() - + ::ssz_fixed_len() - + ::ssz_fixed_len() * 6 - + ::ssz_fixed_len() - + ssz::BYTES_PER_LENGTH_OFFSET * 3; + let offset = ::ssz_fixed_len() * 6 + + ::ssz_fixed_len() + + ::ssz_fixed_len() + + ::ssz_fixed_len() * 6 + + ::ssz_fixed_len() + + ssz::BYTES_PER_LENGTH_OFFSET * 3; let mut encoder = ssz::SszEncoder::container(buf, offset); @@ -175,8 +175,8 @@ impl ssz::Encode for OpExecutionPayloadV4 { } fn ssz_bytes_len(&self) -> usize { - ::ssz_bytes_len(&self.payload_inner) - + ::ssz_fixed_len() + ::ssz_bytes_len(&self.payload_inner) + + ::ssz_fixed_len() } } diff --git a/op-alloy/crates/rpc-types-engine/src/sidecar.rs b/rust/op-alloy/crates/rpc-types-engine/src/sidecar.rs similarity index 100% rename from op-alloy/crates/rpc-types-engine/src/sidecar.rs rename to rust/op-alloy/crates/rpc-types-engine/src/sidecar.rs diff --git a/op-alloy/crates/rpc-types-engine/src/superchain.rs b/rust/op-alloy/crates/rpc-types-engine/src/superchain.rs similarity index 98% rename from op-alloy/crates/rpc-types-engine/src/superchain.rs rename to rust/op-alloy/crates/rpc-types-engine/src/superchain.rs index 04635a3a90f15..39b35054af219 100644 --- a/op-alloy/crates/rpc-types-engine/src/superchain.rs +++ b/rust/op-alloy/crates/rpc-types-engine/src/superchain.rs @@ -57,7 +57,7 @@ impl core::fmt::Display for ProtocolVersion { } } -/// An error that can occur when encoding or decoding a ProtocolVersion. +/// An error that can occur when encoding or decoding a `ProtocolVersion`. #[derive(Copy, Clone, thiserror::Error, Debug, Display, From)] pub enum ProtocolVersionError { /// An unsupported version was encountered. @@ -114,14 +114,14 @@ impl ProtocolVersion { } } - /// Returns the inner value of the ProtocolVersion enum + /// Returns the inner value of the `ProtocolVersion` enum pub const fn inner(&self) -> ProtocolVersionFormatV0 { match self { Self::V0(value) => *value, } } - /// Returns the inner value of the ProtocolVersion enum if it is V0, otherwise None + /// Returns the inner value of the `ProtocolVersion` enum if it is V0, otherwise None pub const fn as_v0(&self) -> Option { match self { Self::V0(value) => Some(*value), @@ -163,7 +163,7 @@ impl ProtocolVersion { } } - /// Returns a human-readable string representation of the ProtocolVersion + /// Returns a human-readable string representation of the `ProtocolVersion` pub fn display(&self) -> String { match self { Self::V0(value) => format!("{value}"), diff --git a/op-alloy/crates/rpc-types/Cargo.toml b/rust/op-alloy/crates/rpc-types/Cargo.toml similarity index 63% rename from op-alloy/crates/rpc-types/Cargo.toml rename to rust/op-alloy/crates/rpc-types/Cargo.toml index 501906adbb633..c48fa29741e0a 100644 --- a/op-alloy/crates/rpc-types/Cargo.toml +++ b/rust/op-alloy/crates/rpc-types/Cargo.toml @@ -2,14 +2,14 @@ name = "op-alloy-rpc-types" description = "Optimism RPC types" -version.workspace = true +version = "0.23.1" edition.workspace = true rust-version.workspace = true license.workspace = true -homepage.workspace = true -authors.workspace = true -repository.workspace = true -exclude.workspace = true +homepage = "https://github.com/alloy-rs/op-alloy" +authors = ["Alloy Contributors"] +repository = "https://github.com/alloy-rs/op-alloy" +exclude = ["benches/", "tests/"] [lints] workspace = true @@ -51,19 +51,35 @@ similar-asserts.workspace = true [features] default = ["std"] std = [ - "alloy-network-primitives/std", - "alloy-eips/std", - "alloy-primitives/std", - "alloy-rpc-types-eth/std", - "op-alloy-consensus/std", + "alloy-network-primitives/std", + "alloy-eips/std", + "alloy-primitives/std", + "alloy-rpc-types-eth/std", + "op-alloy-consensus/std", + "alloy-consensus/std", + "alloy-serde/std", + "derive_more/std", + "serde/std", + "serde_json/std", + "thiserror/std" ] arbitrary = [ - "std", - "dep:arbitrary", - "alloy-primitives/arbitrary", - "alloy-rpc-types-eth/arbitrary", - "op-alloy-consensus/arbitrary", + "std", + "dep:arbitrary", + "alloy-primitives/arbitrary", + "alloy-rpc-types-eth/arbitrary", + "op-alloy-consensus/arbitrary", + "alloy-consensus/arbitrary", + "alloy-eips/arbitrary", + "alloy-serde/arbitrary" ] k256 = ["alloy-rpc-types-eth/k256", "op-alloy-consensus/k256"] -serde = ["op-alloy-consensus/serde"] +serde = [ + "op-alloy-consensus/serde", + "alloy-consensus/serde", + "alloy-eips/serde", + "alloy-network-primitives/serde", + "alloy-primitives/serde", + "alloy-rpc-types-eth/serde" +] jsonrpsee = ["dep:jsonrpsee"] diff --git a/op-alloy/crates/rpc-types/README.md b/rust/op-alloy/crates/rpc-types/README.md similarity index 100% rename from op-alloy/crates/rpc-types/README.md rename to rust/op-alloy/crates/rpc-types/README.md diff --git a/op-alloy/crates/rpc-types/src/error.rs b/rust/op-alloy/crates/rpc-types/src/error.rs similarity index 100% rename from op-alloy/crates/rpc-types/src/error.rs rename to rust/op-alloy/crates/rpc-types/src/error.rs diff --git a/op-alloy/crates/rpc-types/src/genesis.rs b/rust/op-alloy/crates/rpc-types/src/genesis.rs similarity index 100% rename from op-alloy/crates/rpc-types/src/genesis.rs rename to rust/op-alloy/crates/rpc-types/src/genesis.rs diff --git a/op-alloy/crates/rpc-types/src/lib.rs b/rust/op-alloy/crates/rpc-types/src/lib.rs similarity index 100% rename from op-alloy/crates/rpc-types/src/lib.rs rename to rust/op-alloy/crates/rpc-types/src/lib.rs diff --git a/op-alloy/crates/rpc-types/src/receipt.rs b/rust/op-alloy/crates/rpc-types/src/receipt.rs similarity index 99% rename from op-alloy/crates/rpc-types/src/receipt.rs rename to rust/op-alloy/crates/rpc-types/src/receipt.rs index 3148f9481453d..5d7be1274463c 100644 --- a/op-alloy/crates/rpc-types/src/receipt.rs +++ b/rust/op-alloy/crates/rpc-types/src/receipt.rs @@ -80,7 +80,7 @@ impl alloy_network_primitives::ReceiptResponse for OpTransactionReceipt { } /// Additional fields for Optimism transaction receipts: -#[derive(Clone, Copy, Debug, Default, PartialEq, Serialize, Deserialize)] +#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] #[doc(alias = "OptimismTxReceiptFields")] pub struct OpTransactionReceiptFields { @@ -205,7 +205,7 @@ impl From for OpReceiptEnvelope { fn from(value: OpTransactionReceipt) -> Self { let inner_envelope = value.inner.inner.into(); - /// Helper function to convert the inner logs within a [ReceiptWithBloom] from RPC to + /// Helper function to convert the inner logs within a [`ReceiptWithBloom`] from RPC to /// consensus types. #[inline(always)] fn convert_standard_receipt( diff --git a/op-alloy/crates/rpc-types/src/transaction.rs b/rust/op-alloy/crates/rpc-types/src/transaction.rs similarity index 99% rename from op-alloy/crates/rpc-types/src/transaction.rs rename to rust/op-alloy/crates/rpc-types/src/transaction.rs index 5b1dac052754d..ae936895d5613 100644 --- a/op-alloy/crates/rpc-types/src/transaction.rs +++ b/rust/op-alloy/crates/rpc-types/src/transaction.rs @@ -316,7 +316,7 @@ mod tx_serde { // Only serialize deposit_nonce if inner transaction is deposit to avoid duplicated keys let deposit_nonce = other.deposit_nonce.filter(|_| inner.is_deposit()); - let effective_gas_price = other.effective_gas_price.or(inner.gas_price()); + let effective_gas_price = other.effective_gas_price.or_else(|| inner.gas_price()); Ok(Self { inner: alloy_rpc_types_eth::Transaction { diff --git a/op-alloy/crates/rpc-types/src/transaction/request.rs b/rust/op-alloy/crates/rpc-types/src/transaction/request.rs similarity index 100% rename from op-alloy/crates/rpc-types/src/transaction/request.rs rename to rust/op-alloy/crates/rpc-types/src/transaction/request.rs diff --git a/op-alloy/release.toml b/rust/op-alloy/release.toml similarity index 100% rename from op-alloy/release.toml rename to rust/op-alloy/release.toml diff --git a/op-alloy/scripts/changelog.sh b/rust/op-alloy/scripts/changelog.sh similarity index 100% rename from op-alloy/scripts/changelog.sh rename to rust/op-alloy/scripts/changelog.sh diff --git a/op-alloy/scripts/check_no_std.sh b/rust/op-alloy/scripts/check_no_std.sh similarity index 100% rename from op-alloy/scripts/check_no_std.sh rename to rust/op-alloy/scripts/check_no_std.sh diff --git a/op-reth/.config/nextest.toml b/rust/op-reth/.config/nextest.toml similarity index 100% rename from op-reth/.config/nextest.toml rename to rust/op-reth/.config/nextest.toml diff --git a/op-reth/.config/zepter.yaml b/rust/op-reth/.config/zepter.yaml similarity index 100% rename from op-reth/.config/zepter.yaml rename to rust/op-reth/.config/zepter.yaml diff --git a/op-reth/Cross.toml b/rust/op-reth/Cross.toml similarity index 100% rename from op-reth/Cross.toml rename to rust/op-reth/Cross.toml diff --git a/op-reth/DockerfileOp b/rust/op-reth/DockerfileOp similarity index 100% rename from op-reth/DockerfileOp rename to rust/op-reth/DockerfileOp diff --git a/op-reth/DockerfileOp.cross b/rust/op-reth/DockerfileOp.cross similarity index 100% rename from op-reth/DockerfileOp.cross rename to rust/op-reth/DockerfileOp.cross diff --git a/op-reth/LICENSE-APACHE b/rust/op-reth/LICENSE-APACHE similarity index 100% rename from op-reth/LICENSE-APACHE rename to rust/op-reth/LICENSE-APACHE diff --git a/op-reth/LICENSE-MIT b/rust/op-reth/LICENSE-MIT similarity index 100% rename from op-reth/LICENSE-MIT rename to rust/op-reth/LICENSE-MIT diff --git a/op-reth/Makefile b/rust/op-reth/Makefile similarity index 100% rename from op-reth/Makefile rename to rust/op-reth/Makefile diff --git a/op-reth/README.md b/rust/op-reth/README.md similarity index 100% rename from op-reth/README.md rename to rust/op-reth/README.md diff --git a/op-reth/bin/Cargo.toml b/rust/op-reth/bin/Cargo.toml similarity index 92% rename from op-reth/bin/Cargo.toml rename to rust/op-reth/bin/Cargo.toml index 4049ee1ecad93..0af1181b4918a 100644 --- a/op-reth/bin/Cargo.toml +++ b/rust/op-reth/bin/Cargo.toml @@ -1,12 +1,12 @@ [package] name = "op-reth" -version.workspace = true +version = "1.10.2" edition.workspace = true rust-version.workspace = true license.workspace = true -homepage.workspace = true -repository.workspace = true -exclude.workspace = true +homepage = "https://paradigmxyz.github.io/reth" +repository = "https://github.com/paradigmxyz/reth" +exclude = [".github/"] [dependencies] reth-cli-util.workspace = true diff --git a/op-reth/bin/src/lib.rs b/rust/op-reth/bin/src/lib.rs similarity index 100% rename from op-reth/bin/src/lib.rs rename to rust/op-reth/bin/src/lib.rs diff --git a/op-reth/bin/src/main.rs b/rust/op-reth/bin/src/main.rs similarity index 90% rename from op-reth/bin/src/main.rs rename to rust/op-reth/bin/src/main.rs index 48452326d8b00..bfd63af539e39 100644 --- a/op-reth/bin/src/main.rs +++ b/rust/op-reth/bin/src/main.rs @@ -1,8 +1,8 @@ #![allow(missing_docs, rustdoc::missing_crate_level_docs)] use clap::Parser; -use reth_optimism_cli::{chainspec::OpChainSpecParser, Cli}; -use reth_optimism_node::{args::RollupArgs, OpNode}; +use reth_optimism_cli::{Cli, chainspec::OpChainSpecParser}; +use reth_optimism_node::{OpNode, args::RollupArgs}; use tracing::info; #[global_allocator] diff --git a/op-reth/crates/chainspec/Cargo.toml b/rust/op-reth/crates/chainspec/Cargo.toml similarity index 95% rename from op-reth/crates/chainspec/Cargo.toml rename to rust/op-reth/crates/chainspec/Cargo.toml index a4ef9263b1c85..0922f102a93f1 100644 --- a/op-reth/crates/chainspec/Cargo.toml +++ b/rust/op-reth/crates/chainspec/Cargo.toml @@ -1,11 +1,11 @@ [package] name = "reth-optimism-chainspec" -version.workspace = true +version = "1.10.2" edition.workspace = true rust-version.workspace = true license.workspace = true -homepage.workspace = true -repository.workspace = true +homepage = "https://paradigmxyz.github.io/reth" +repository = "https://github.com/paradigmxyz/reth" description = "EVM chain spec implementation for optimism." [lints] diff --git a/op-reth/crates/chainspec/res/fetch_superchain_config.sh b/rust/op-reth/crates/chainspec/res/fetch_superchain_config.sh similarity index 100% rename from op-reth/crates/chainspec/res/fetch_superchain_config.sh rename to rust/op-reth/crates/chainspec/res/fetch_superchain_config.sh diff --git a/op-reth/crates/chainspec/res/genesis/base.json b/rust/op-reth/crates/chainspec/res/genesis/base.json similarity index 100% rename from op-reth/crates/chainspec/res/genesis/base.json rename to rust/op-reth/crates/chainspec/res/genesis/base.json diff --git a/op-reth/crates/chainspec/res/genesis/dev.json b/rust/op-reth/crates/chainspec/res/genesis/dev.json similarity index 100% rename from op-reth/crates/chainspec/res/genesis/dev.json rename to rust/op-reth/crates/chainspec/res/genesis/dev.json diff --git a/op-reth/crates/chainspec/res/genesis/optimism.json b/rust/op-reth/crates/chainspec/res/genesis/optimism.json similarity index 100% rename from op-reth/crates/chainspec/res/genesis/optimism.json rename to rust/op-reth/crates/chainspec/res/genesis/optimism.json diff --git a/op-reth/crates/chainspec/res/genesis/sepolia_base.json b/rust/op-reth/crates/chainspec/res/genesis/sepolia_base.json similarity index 100% rename from op-reth/crates/chainspec/res/genesis/sepolia_base.json rename to rust/op-reth/crates/chainspec/res/genesis/sepolia_base.json diff --git a/op-reth/crates/chainspec/res/genesis/sepolia_op.json b/rust/op-reth/crates/chainspec/res/genesis/sepolia_op.json similarity index 100% rename from op-reth/crates/chainspec/res/genesis/sepolia_op.json rename to rust/op-reth/crates/chainspec/res/genesis/sepolia_op.json diff --git a/op-reth/crates/chainspec/res/superchain-configs.tar b/rust/op-reth/crates/chainspec/res/superchain-configs.tar similarity index 100% rename from op-reth/crates/chainspec/res/superchain-configs.tar rename to rust/op-reth/crates/chainspec/res/superchain-configs.tar diff --git a/op-reth/crates/chainspec/res/superchain_registry_commit b/rust/op-reth/crates/chainspec/res/superchain_registry_commit similarity index 100% rename from op-reth/crates/chainspec/res/superchain_registry_commit rename to rust/op-reth/crates/chainspec/res/superchain_registry_commit diff --git a/op-reth/crates/chainspec/src/base.rs b/rust/op-reth/crates/chainspec/src/base.rs similarity index 89% rename from op-reth/crates/chainspec/src/base.rs rename to rust/op-reth/crates/chainspec/src/base.rs index c93d1c4b2ab14..7505e9f590cb3 100644 --- a/op-reth/crates/chainspec/src/base.rs +++ b/rust/op-reth/crates/chainspec/src/base.rs @@ -3,13 +3,13 @@ use alloc::{sync::Arc, vec}; use alloy_chains::Chain; -use alloy_primitives::{b256, U256}; +use alloy_primitives::{U256, b256}; use reth_chainspec::{BaseFeeParams, BaseFeeParamsKind, ChainSpec}; use reth_ethereum_forks::{EthereumHardfork, Hardfork}; -use reth_optimism_forks::{OpHardfork, BASE_MAINNET_HARDFORKS}; +use reth_optimism_forks::{BASE_MAINNET_HARDFORKS, OpHardfork}; use reth_primitives_traits::SealedHeader; -use crate::{make_op_genesis_header, LazyLock, OpChainSpec}; +use crate::{LazyLock, OpChainSpec, make_op_genesis_header}; /// The Base mainnet spec pub static BASE_MAINNET: LazyLock> = LazyLock::new(|| { diff --git a/op-reth/crates/chainspec/src/base_sepolia.rs b/rust/op-reth/crates/chainspec/src/base_sepolia.rs similarity index 89% rename from op-reth/crates/chainspec/src/base_sepolia.rs rename to rust/op-reth/crates/chainspec/src/base_sepolia.rs index 2734bef3fdb1d..62984e675147d 100644 --- a/op-reth/crates/chainspec/src/base_sepolia.rs +++ b/rust/op-reth/crates/chainspec/src/base_sepolia.rs @@ -3,13 +3,13 @@ use alloc::{sync::Arc, vec}; use alloy_chains::Chain; -use alloy_primitives::{b256, U256}; +use alloy_primitives::{U256, b256}; use reth_chainspec::{BaseFeeParams, BaseFeeParamsKind, ChainSpec, Hardfork}; use reth_ethereum_forks::EthereumHardfork; -use reth_optimism_forks::{OpHardfork, BASE_SEPOLIA_HARDFORKS}; +use reth_optimism_forks::{BASE_SEPOLIA_HARDFORKS, OpHardfork}; use reth_primitives_traits::SealedHeader; -use crate::{make_op_genesis_header, LazyLock, OpChainSpec}; +use crate::{LazyLock, OpChainSpec, make_op_genesis_header}; /// The Base Sepolia spec pub static BASE_SEPOLIA: LazyLock> = LazyLock::new(|| { diff --git a/op-reth/crates/chainspec/src/basefee.rs b/rust/op-reth/crates/chainspec/src/basefee.rs similarity index 97% rename from op-reth/crates/chainspec/src/basefee.rs rename to rust/op-reth/crates/chainspec/src/basefee.rs index 3c0dcdfd88d91..83ffca8ec03d6 100644 --- a/op-reth/crates/chainspec/src/basefee.rs +++ b/rust/op-reth/crates/chainspec/src/basefee.rs @@ -4,7 +4,7 @@ use core::cmp::max; use alloy_consensus::BlockHeader; use alloy_eips::calc_next_block_base_fee; -use op_alloy_consensus::{decode_holocene_extra_data, decode_jovian_extra_data, EIP1559ParamError}; +use op_alloy_consensus::{EIP1559ParamError, decode_holocene_extra_data, decode_jovian_extra_data}; use reth_chainspec::{BaseFeeParams, EthChainSpec}; use reth_optimism_forks::OpHardforks; @@ -82,7 +82,7 @@ mod tests { use reth_chainspec::{ChainSpec, ForkCondition, Hardfork}; use reth_optimism_forks::OpHardfork; - use crate::{OpChainSpec, BASE_SEPOLIA}; + use crate::{BASE_SEPOLIA, OpChainSpec}; use super::*; diff --git a/op-reth/crates/chainspec/src/constants.rs b/rust/op-reth/crates/chainspec/src/constants.rs similarity index 100% rename from op-reth/crates/chainspec/src/constants.rs rename to rust/op-reth/crates/chainspec/src/constants.rs diff --git a/op-reth/crates/chainspec/src/dev.rs b/rust/op-reth/crates/chainspec/src/dev.rs similarity index 95% rename from op-reth/crates/chainspec/src/dev.rs rename to rust/op-reth/crates/chainspec/src/dev.rs index ac8eaad24a8f4..5abf93aa5d245 100644 --- a/op-reth/crates/chainspec/src/dev.rs +++ b/rust/op-reth/crates/chainspec/src/dev.rs @@ -8,7 +8,7 @@ use reth_chainspec::{BaseFeeParams, BaseFeeParamsKind, ChainSpec}; use reth_optimism_forks::DEV_HARDFORKS; use reth_primitives_traits::SealedHeader; -use crate::{make_op_genesis_header, LazyLock, OpChainSpec}; +use crate::{LazyLock, OpChainSpec, make_op_genesis_header}; /// OP dev testnet specification /// diff --git a/op-reth/crates/chainspec/src/lib.rs b/rust/op-reth/crates/chainspec/src/lib.rs similarity index 97% rename from op-reth/crates/chainspec/src/lib.rs rename to rust/op-reth/crates/chainspec/src/lib.rs index a91102c4f8952..cfa40ff5732aa 100644 --- a/op-reth/crates/chainspec/src/lib.rs +++ b/rust/op-reth/crates/chainspec/src/lib.rs @@ -58,7 +58,7 @@ pub use reth_optimism_forks::*; use alloc::{boxed::Box, vec, vec::Vec}; use alloy_chains::Chain; -use alloy_consensus::{proofs::storage_root_unhashed, BlockHeader, Header}; +use alloy_consensus::{BlockHeader, Header, proofs::storage_root_unhashed}; use alloy_eips::eip7840::BlobParams; use alloy_genesis::Genesis; use alloy_hardforks::Hardfork; @@ -71,7 +71,7 @@ use reth_chainspec::{ use reth_ethereum_forks::{ChainHardforks, EthereumHardfork, ForkCondition}; use reth_network_peers::NodeRecord; use reth_optimism_primitives::L2_TO_L1_MESSAGE_PASSER_ADDRESS; -use reth_primitives_traits::{sync::LazyLock, SealedHeader}; +use reth_primitives_traits::{SealedHeader, sync::LazyLock}; /// Chain spec builder for a OP stack chain. #[derive(Debug, Default, From)] @@ -465,25 +465,24 @@ impl OpGenesisInfo { optimism_base_fee_info.eip1559_denominator, ) { - let base_fee_params = if let Some(canyon_denominator) = - optimism_base_fee_info.eip1559_denominator_canyon - { - BaseFeeParamsKind::Variable( - vec![ - ( - EthereumHardfork::London.boxed(), - BaseFeeParams::new(denominator as u128, elasticity as u128), - ), - ( - OpHardfork::Canyon.boxed(), - BaseFeeParams::new(canyon_denominator as u128, elasticity as u128), - ), - ] - .into(), - ) - } else { - BaseFeeParams::new(denominator as u128, elasticity as u128).into() - }; + let base_fee_params = optimism_base_fee_info.eip1559_denominator_canyon.map_or_else( + || BaseFeeParams::new(denominator as u128, elasticity as u128).into(), + |canyon_denominator| { + BaseFeeParamsKind::Variable( + vec![ + ( + EthereumHardfork::London.boxed(), + BaseFeeParams::new(denominator as u128, elasticity as u128), + ), + ( + OpHardfork::Canyon.boxed(), + BaseFeeParams::new(canyon_denominator as u128, elasticity as u128), + ), + ] + .into(), + ) + }, + ); info.base_fee_params = base_fee_params; } @@ -502,14 +501,11 @@ pub fn make_op_genesis_header(genesis: &Genesis, hardforks: &ChainHardforks) -> let Some(predeploy) = genesis.alloc.get(&L2_TO_L1_MESSAGE_PASSER_ADDRESS) && let Some(storage) = &predeploy.storage { - header.withdrawals_root = - Some(storage_root_unhashed(storage.iter().filter_map(|(k, v)| { - if v.is_zero() { - None - } else { - Some((*k, (*v).into())) - } - }))); + header.withdrawals_root = Some(storage_root_unhashed(storage.iter().filter_map( + |(k, v)| { + if v.is_zero() { None } else { Some((*k, (*v).into())) } + }, + ))); } header @@ -524,7 +520,7 @@ mod tests { OP_SEPOLIA_JOVIAN_TIMESTAMP, }; use alloy_primitives::{b256, hex}; - use reth_chainspec::{test_fork_ids, BaseFeeParams, BaseFeeParamsKind}; + use reth_chainspec::{BaseFeeParams, BaseFeeParamsKind, test_fork_ids}; use reth_ethereum_forks::{EthereumHardfork, ForkCondition, ForkHash, ForkId, Head}; use reth_optimism_forks::{OpHardfork, OpHardforks}; diff --git a/op-reth/crates/chainspec/src/op.rs b/rust/op-reth/crates/chainspec/src/op.rs similarity index 90% rename from op-reth/crates/chainspec/src/op.rs rename to rust/op-reth/crates/chainspec/src/op.rs index d6ca36be26422..7b463aecf5cf7 100644 --- a/op-reth/crates/chainspec/src/op.rs +++ b/rust/op-reth/crates/chainspec/src/op.rs @@ -1,12 +1,12 @@ //! Chain specification for the Optimism Mainnet network. -use crate::{make_op_genesis_header, LazyLock, OpChainSpec}; +use crate::{LazyLock, OpChainSpec, make_op_genesis_header}; use alloc::{sync::Arc, vec}; use alloy_chains::Chain; -use alloy_primitives::{b256, U256}; +use alloy_primitives::{U256, b256}; use reth_chainspec::{BaseFeeParams, BaseFeeParamsKind, ChainSpec, Hardfork}; use reth_ethereum_forks::EthereumHardfork; -use reth_optimism_forks::{OpHardfork, OP_MAINNET_HARDFORKS}; +use reth_optimism_forks::{OP_MAINNET_HARDFORKS, OpHardfork}; use reth_primitives_traits::SealedHeader; /// The Optimism Mainnet spec diff --git a/op-reth/crates/chainspec/src/op_sepolia.rs b/rust/op-reth/crates/chainspec/src/op_sepolia.rs similarity index 90% rename from op-reth/crates/chainspec/src/op_sepolia.rs rename to rust/op-reth/crates/chainspec/src/op_sepolia.rs index 8f80e6e20946b..d792fbe3004b2 100644 --- a/op-reth/crates/chainspec/src/op_sepolia.rs +++ b/rust/op-reth/crates/chainspec/src/op_sepolia.rs @@ -1,12 +1,12 @@ //! Chain specification for the Optimism Sepolia testnet network. -use crate::{make_op_genesis_header, LazyLock, OpChainSpec}; +use crate::{LazyLock, OpChainSpec, make_op_genesis_header}; use alloc::{sync::Arc, vec}; use alloy_chains::{Chain, NamedChain}; -use alloy_primitives::{b256, U256}; +use alloy_primitives::{U256, b256}; use reth_chainspec::{BaseFeeParams, BaseFeeParamsKind, ChainSpec, Hardfork}; use reth_ethereum_forks::EthereumHardfork; -use reth_optimism_forks::{OpHardfork, OP_SEPOLIA_HARDFORKS}; +use reth_optimism_forks::{OP_SEPOLIA_HARDFORKS, OpHardfork}; use reth_primitives_traits::SealedHeader; /// The OP Sepolia spec diff --git a/op-reth/crates/chainspec/src/superchain/chain_metadata.rs b/rust/op-reth/crates/chainspec/src/superchain/chain_metadata.rs similarity index 100% rename from op-reth/crates/chainspec/src/superchain/chain_metadata.rs rename to rust/op-reth/crates/chainspec/src/superchain/chain_metadata.rs diff --git a/op-reth/crates/chainspec/src/superchain/chain_spec_macro.rs b/rust/op-reth/crates/chainspec/src/superchain/chain_spec_macro.rs similarity index 99% rename from op-reth/crates/chainspec/src/superchain/chain_spec_macro.rs rename to rust/op-reth/crates/chainspec/src/superchain/chain_spec_macro.rs index 1274f243a12ef..b8835954ae9df 100644 --- a/op-reth/crates/chainspec/src/superchain/chain_spec_macro.rs +++ b/rust/op-reth/crates/chainspec/src/superchain/chain_spec_macro.rs @@ -16,7 +16,7 @@ macro_rules! create_chain_spec { /// Generates the key string for a given name and environment pair. #[macro_export] macro_rules! key_for { - ($name:expr, "mainnet") => { + ($name:expr,"mainnet") => { $name }; ($name:expr, $env:expr) => { diff --git a/op-reth/crates/chainspec/src/superchain/chain_specs.rs b/rust/op-reth/crates/chainspec/src/superchain/chain_specs.rs similarity index 100% rename from op-reth/crates/chainspec/src/superchain/chain_specs.rs rename to rust/op-reth/crates/chainspec/src/superchain/chain_specs.rs diff --git a/op-reth/crates/chainspec/src/superchain/configs.rs b/rust/op-reth/crates/chainspec/src/superchain/configs.rs similarity index 96% rename from op-reth/crates/chainspec/src/superchain/configs.rs rename to rust/op-reth/crates/chainspec/src/superchain/configs.rs index b0ebc0fb84dd4..f28b1233fd92b 100644 --- a/op-reth/crates/chainspec/src/superchain/configs.rs +++ b/rust/op-reth/crates/chainspec/src/superchain/configs.rs @@ -1,4 +1,4 @@ -use crate::superchain::chain_metadata::{to_genesis_chain_config, ChainMetadata}; +use crate::superchain::chain_metadata::{ChainMetadata, to_genesis_chain_config}; use alloc::{ format, string::{String, ToString}, @@ -78,7 +78,7 @@ fn read_file( ) -> Result, SuperchainConfigError> { for entry in archive.entries() { if entry.filename().as_str()? == file_path { - return Ok(entry.data().to_vec()) + return Ok(entry.data().to_vec()); } } Err(SuperchainConfigError::FileNotFound(file_path.to_string())) @@ -87,16 +87,16 @@ fn read_file( #[cfg(test)] mod tests { use super::*; - use crate::{generated_chain_value_parser, superchain::Superchain, SUPPORTED_CHAINS}; + use crate::{SUPPORTED_CHAINS, generated_chain_value_parser, superchain::Superchain}; use alloy_chains::NamedChain; use alloy_op_hardforks::{ - OpHardfork, BASE_MAINNET_CANYON_TIMESTAMP, BASE_MAINNET_ECOTONE_TIMESTAMP, + BASE_MAINNET_CANYON_TIMESTAMP, BASE_MAINNET_ECOTONE_TIMESTAMP, BASE_MAINNET_ISTHMUS_TIMESTAMP, BASE_MAINNET_JOVIAN_TIMESTAMP, BASE_SEPOLIA_CANYON_TIMESTAMP, BASE_SEPOLIA_ECOTONE_TIMESTAMP, BASE_SEPOLIA_ISTHMUS_TIMESTAMP, BASE_SEPOLIA_JOVIAN_TIMESTAMP, OP_MAINNET_CANYON_TIMESTAMP, OP_MAINNET_ECOTONE_TIMESTAMP, OP_MAINNET_ISTHMUS_TIMESTAMP, OP_MAINNET_JOVIAN_TIMESTAMP, OP_SEPOLIA_CANYON_TIMESTAMP, OP_SEPOLIA_ECOTONE_TIMESTAMP, OP_SEPOLIA_ISTHMUS_TIMESTAMP, - OP_SEPOLIA_JOVIAN_TIMESTAMP, + OP_SEPOLIA_JOVIAN_TIMESTAMP, OpHardfork, }; use reth_optimism_primitives::L2_TO_L1_MESSAGE_PASSER_ADDRESS; use tar_no_std::TarArchiveRef; @@ -137,7 +137,7 @@ mod tests { .map(|s| s.to_string()) .collect::>(); if filename.first().unwrap().ne(&"genesis") { - continue + continue; } read_superchain_metadata( &filename.get(2).unwrap().replace(".json.zz", ""), diff --git a/op-reth/crates/chainspec/src/superchain/mod.rs b/rust/op-reth/crates/chainspec/src/superchain/mod.rs similarity index 100% rename from op-reth/crates/chainspec/src/superchain/mod.rs rename to rust/op-reth/crates/chainspec/src/superchain/mod.rs diff --git a/op-reth/crates/cli/Cargo.toml b/rust/op-reth/crates/cli/Cargo.toml similarity index 96% rename from op-reth/crates/cli/Cargo.toml rename to rust/op-reth/crates/cli/Cargo.toml index a109c2fc8b0fb..7cd9474a9db27 100644 --- a/op-reth/crates/cli/Cargo.toml +++ b/rust/op-reth/crates/cli/Cargo.toml @@ -1,11 +1,11 @@ [package] name = "reth-optimism-cli" -version.workspace = true +version = "1.10.2" edition.workspace = true rust-version.workspace = true license.workspace = true -homepage.workspace = true -repository.workspace = true +homepage = "https://paradigmxyz.github.io/reth" +repository = "https://github.com/paradigmxyz/reth" [lints] workspace = true diff --git a/op-reth/crates/cli/src/app.rs b/rust/op-reth/crates/cli/src/app.rs similarity index 99% rename from op-reth/crates/cli/src/app.rs rename to rust/op-reth/crates/cli/src/app.rs index 2ef171a47312f..22df73b0d90d8 100644 --- a/op-reth/crates/cli/src/app.rs +++ b/rust/op-reth/crates/cli/src/app.rs @@ -1,5 +1,5 @@ use crate::{Cli, Commands}; -use eyre::{eyre, Result}; +use eyre::{Result, eyre}; use reth_cli::chainspec::ChainSpecParser; use reth_cli_commands::launcher::Launcher; use reth_cli_runner::CliRunner; diff --git a/op-reth/crates/cli/src/chainspec.rs b/rust/op-reth/crates/cli/src/chainspec.rs similarity index 88% rename from op-reth/crates/cli/src/chainspec.rs rename to rust/op-reth/crates/cli/src/chainspec.rs index 14e7450c9e6e4..6af7dcbf32446 100644 --- a/op-reth/crates/cli/src/chainspec.rs +++ b/rust/op-reth/crates/cli/src/chainspec.rs @@ -1,5 +1,5 @@ -use reth_cli::chainspec::{parse_genesis, ChainSpecParser}; -use reth_optimism_chainspec::{generated_chain_value_parser, OpChainSpec, SUPPORTED_CHAINS}; +use reth_cli::chainspec::{ChainSpecParser, parse_genesis}; +use reth_optimism_chainspec::{OpChainSpec, SUPPORTED_CHAINS, generated_chain_value_parser}; use std::sync::Arc; /// Optimism chain specification parser. diff --git a/op-reth/crates/cli/src/commands/import.rs b/rust/op-reth/crates/cli/src/commands/import.rs similarity index 98% rename from op-reth/crates/cli/src/commands/import.rs rename to rust/op-reth/crates/cli/src/commands/import.rs index 74656511af16f..0d7e0cde8cd38 100644 --- a/op-reth/crates/cli/src/commands/import.rs +++ b/rust/op-reth/crates/cli/src/commands/import.rs @@ -13,7 +13,7 @@ use reth_node_builder::BlockTy; use reth_node_core::version::version_metadata; use reth_optimism_chainspec::OpChainSpec; use reth_optimism_evm::OpExecutorProvider; -use reth_optimism_primitives::{bedrock::is_dup_tx, OpPrimitives}; +use reth_optimism_primitives::{OpPrimitives, bedrock::is_dup_tx}; use reth_provider::{BlockNumReader, ChainSpecProvider, HeaderProvider, StageCheckpointReader}; use reth_prune::PruneModes; use reth_stages::StageId; @@ -92,7 +92,7 @@ impl> ImportOpCommand { body.transactions.retain(|_| { if is_dup_tx(block_number) { total_filtered_out_dup_txns += 1; - return false + return false; } true }) diff --git a/op-reth/crates/cli/src/commands/import_receipts.rs b/rust/op-reth/crates/cli/src/commands/import_receipts.rs similarity index 97% rename from op-reth/crates/cli/src/commands/import_receipts.rs rename to rust/op-reth/crates/cli/src/commands/import_receipts.rs index 8ab71f66102af..d2a66fe90d0bd 100644 --- a/op-reth/crates/cli/src/commands/import_receipts.rs +++ b/rust/op-reth/crates/cli/src/commands/import_receipts.rs @@ -14,12 +14,12 @@ use reth_execution_types::ExecutionOutcome; use reth_node_builder::ReceiptTy; use reth_node_core::version::version_metadata; use reth_optimism_chainspec::OpChainSpec; -use reth_optimism_primitives::{bedrock::is_dup_tx, OpPrimitives, OpReceipt}; +use reth_optimism_primitives::{OpPrimitives, OpReceipt, bedrock::is_dup_tx}; use reth_primitives_traits::NodePrimitives; use reth_provider::{ - providers::ProviderNodeTypes, DBProvider, DatabaseProviderFactory, OriginalValuesKnown, - ProviderFactory, StageCheckpointReader, StageCheckpointWriter, StateWriteConfig, StateWriter, - StaticFileProviderFactory, StatsReader, + DBProvider, DatabaseProviderFactory, OriginalValuesKnown, ProviderFactory, + StageCheckpointReader, StageCheckpointWriter, StateWriteConfig, StateWriter, + StaticFileProviderFactory, StatsReader, providers::ProviderNodeTypes, }; use reth_stages::{StageCheckpoint, StageId}; use reth_static_file_types::StaticFileSegment; @@ -174,7 +174,7 @@ where { if highest_block_receipts == highest_block_transactions { warn!(target: "reth::cli", highest_block_receipts, highest_block_transactions, "Ignoring all other blocks in the file since we have reached the desired height"); - break + break; } // create a new file client from chunk read from file diff --git a/op-reth/crates/cli/src/commands/init_state.rs b/rust/op-reth/crates/cli/src/commands/init_state.rs similarity index 98% rename from op-reth/crates/cli/src/commands/init_state.rs rename to rust/op-reth/crates/cli/src/commands/init_state.rs index 93de398675cfe..09e2bd23ab71f 100644 --- a/op-reth/crates/cli/src/commands/init_state.rs +++ b/rust/op-reth/crates/cli/src/commands/init_state.rs @@ -7,10 +7,10 @@ use reth_cli_commands::common::{AccessRights, CliNodeTypes, Environment}; use reth_db_common::init::init_from_state_dump; use reth_optimism_chainspec::OpChainSpec; use reth_optimism_primitives::{ - bedrock::{BEDROCK_HEADER, BEDROCK_HEADER_HASH}, OpPrimitives, + bedrock::{BEDROCK_HEADER, BEDROCK_HEADER_HASH}, }; -use reth_primitives_traits::{header::HeaderMut, SealedHeader}; +use reth_primitives_traits::{SealedHeader, header::HeaderMut}; use reth_provider::{ BlockNumReader, DBProvider, DatabaseProviderFactory, StaticFileProviderFactory, StaticFileWriter, @@ -91,7 +91,7 @@ impl> InitStateCommandOp { } else if last_block_number > 0 && last_block_number < BEDROCK_HEADER.number { return Err(eyre::eyre!( "Data directory should be empty when calling init-state with --without-ovm." - )) + )); } info!(target: "reth::cli", "Initiating state dump"); diff --git a/op-reth/crates/cli/src/commands/mod.rs b/rust/op-reth/crates/cli/src/commands/mod.rs similarity index 95% rename from op-reth/crates/cli/src/commands/mod.rs rename to rust/op-reth/crates/cli/src/commands/mod.rs index 5edd55b0ccb92..3c08400d5dc6f 100644 --- a/op-reth/crates/cli/src/commands/mod.rs +++ b/rust/op-reth/crates/cli/src/commands/mod.rs @@ -64,9 +64,9 @@ pub enum Commands, - Ext: clap::Args + fmt::Debug, - > Commands + C: ChainSpecParser, + Ext: clap::Args + fmt::Debug, +> Commands { /// Returns the underlying chain being used for commands pub fn chain_spec(&self) -> Option<&Arc> { diff --git a/op-reth/crates/cli/src/commands/test_vectors.rs b/rust/op-reth/crates/cli/src/commands/test_vectors.rs similarity index 94% rename from op-reth/crates/cli/src/commands/test_vectors.rs rename to rust/op-reth/crates/cli/src/commands/test_vectors.rs index c018dafedae55..165ca0dac39f9 100644 --- a/op-reth/crates/cli/src/commands/test_vectors.rs +++ b/rust/op-reth/crates/cli/src/commands/test_vectors.rs @@ -9,8 +9,8 @@ use reth_cli_commands::{ test_vectors::{ compact, compact::{ - generate_vector, read_vector, GENERATE_VECTORS as ETH_GENERATE_VECTORS, - READ_VECTORS as ETH_READ_VECTORS, + GENERATE_VECTORS as ETH_GENERATE_VECTORS, READ_VECTORS as ETH_READ_VECTORS, + generate_vector, read_vector, }, tables, }, diff --git a/op-reth/crates/cli/src/lib.rs b/rust/op-reth/crates/cli/src/lib.rs similarity index 98% rename from op-reth/crates/cli/src/lib.rs rename to rust/op-reth/crates/cli/src/lib.rs index 52fdcc2ddd59f..a5951f1e5fa6d 100644 --- a/op-reth/crates/cli/src/lib.rs +++ b/rust/op-reth/crates/cli/src/lib.rs @@ -143,9 +143,9 @@ where #[cfg(test)] mod test { - use crate::{chainspec::OpChainSpecParser, commands::Commands, Cli}; + use crate::{Cli, chainspec::OpChainSpecParser, commands::Commands}; use clap::Parser; - use reth_cli_commands::{node::NoArgs, NodeCommand}; + use reth_cli_commands::{NodeCommand, node::NoArgs}; use reth_optimism_chainspec::{BASE_MAINNET, OP_DEV}; use reth_optimism_node::args::RollupArgs; diff --git a/op-reth/crates/cli/src/ovm_file_codec.rs b/rust/op-reth/crates/cli/src/ovm_file_codec.rs similarity index 98% rename from op-reth/crates/cli/src/ovm_file_codec.rs rename to rust/op-reth/crates/cli/src/ovm_file_codec.rs index 83f3e48728200..9d4704f0a6a7a 100644 --- a/op-reth/crates/cli/src/ovm_file_codec.rs +++ b/rust/op-reth/crates/cli/src/ovm_file_codec.rs @@ -1,15 +1,16 @@ use alloy_consensus::{ - transaction::{from_eip155_value, RlpEcdsaDecodableTx, RlpEcdsaEncodableTx}, Header, TxEip1559, TxEip2930, TxEip7702, TxLegacy, + transaction::{RlpEcdsaDecodableTx, RlpEcdsaEncodableTx, from_eip155_value}, }; use alloy_eips::{ + Typed2718, eip2718::{Decodable2718, Eip2718Error, Eip2718Result, Encodable2718}, eip4895::Withdrawals, - Typed2718, }; use alloy_primitives::{ + B256, Signature, TxHash, U256, bytes::{Buf, BytesMut}, - keccak256, Signature, TxHash, B256, U256, + keccak256, }; use alloy_rlp::{Decodable, Error as RlpError, RlpDecodable}; use derive_more::{AsRef, Deref}; @@ -287,7 +288,7 @@ impl Decodable2718 for OvmTransactionSigned { mod tests { use crate::ovm_file_codec::OvmTransactionSigned; use alloy_consensus::Typed2718; - use alloy_primitives::{address, b256, hex, TxKind, U256}; + use alloy_primitives::{TxKind, U256, address, b256, hex}; use op_alloy_consensus::OpTypedTransaction; const DEPOSIT_FUNCTION_SELECTOR: [u8; 4] = [0xb6, 0xb5, 0x5f, 0x25]; use alloy_rlp::Decodable; diff --git a/op-reth/crates/cli/src/receipt_file_codec.rs b/rust/op-reth/crates/cli/src/receipt_file_codec.rs similarity index 98% rename from op-reth/crates/cli/src/receipt_file_codec.rs rename to rust/op-reth/crates/cli/src/receipt_file_codec.rs index e12af039eacf4..8cbb89abe0975 100644 --- a/op-reth/crates/cli/src/receipt_file_codec.rs +++ b/rust/op-reth/crates/cli/src/receipt_file_codec.rs @@ -2,8 +2,8 @@ use alloy_consensus::Receipt; use alloy_primitives::{ + Address, B256, Bloom, Bytes, Log, bytes::{Buf, BytesMut}, - Address, Bloom, Bytes, Log, B256, }; use alloy_rlp::{Decodable, RlpDecodable}; use op_alloy_consensus::{OpDepositReceipt, OpTxType}; @@ -43,7 +43,7 @@ where fn decode(&mut self, src: &mut BytesMut) -> Result, Self::Error> { if src.is_empty() { - return Ok(None) + return Ok(None); } let buf_slice = &mut src.as_ref(); @@ -121,7 +121,7 @@ impl TryFrom for OpReceipt { #[cfg(test)] pub(crate) mod test { use alloy_consensus::{Receipt, TxReceipt}; - use alloy_primitives::{address, b256, hex, LogData}; + use alloy_primitives::{LogData, address, b256, hex}; use super::*; @@ -149,7 +149,9 @@ pub(crate) mod test { "00000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000400000000000100000000000000200000000002000000000000001000000000000000000004000000000000000000000000000040000400000100400000000000000100000000000000000000000000000020000000000000000000000000000000000000000000000001000000000000000000000100000000000000000000000000000000000000000000000000000000000000088000000080000000000010000000000000000000000000000800008000120000000000000000000000000000000002000" )), logs: receipt.receipt.into_logs(), - tx_hash: b256!("0x5e77a04531c7c107af1882d76cbff9486d0a9aa53701c30888509d4f5f2b003a"), contract_address: Address::ZERO, gas_used: 202813, + tx_hash: b256!("0x5e77a04531c7c107af1882d76cbff9486d0a9aa53701c30888509d4f5f2b003a"), + contract_address: Address::ZERO, + gas_used: 202813, block_hash: b256!("0xbee7192e575af30420cae0c7776304ac196077ee72b048970549e4f08e875453"), block_number: receipt.number, transaction_index: 0, diff --git a/op-reth/crates/consensus/Cargo.toml b/rust/op-reth/crates/consensus/Cargo.toml similarity index 92% rename from op-reth/crates/consensus/Cargo.toml rename to rust/op-reth/crates/consensus/Cargo.toml index 54df0af80d20f..717620cc0a1b4 100644 --- a/op-reth/crates/consensus/Cargo.toml +++ b/rust/op-reth/crates/consensus/Cargo.toml @@ -1,12 +1,12 @@ [package] name = "reth-optimism-consensus" -version.workspace = true +version = "1.10.2" edition.workspace = true rust-version.workspace = true license.workspace = true -homepage.workspace = true -repository.workspace = true -exclude.workspace = true +homepage = "https://paradigmxyz.github.io/reth" +repository = "https://github.com/paradigmxyz/reth" +exclude = [".github/"] [lints] workspace = true diff --git a/op-reth/crates/consensus/src/error.rs b/rust/op-reth/crates/consensus/src/error.rs similarity index 100% rename from op-reth/crates/consensus/src/error.rs rename to rust/op-reth/crates/consensus/src/error.rs diff --git a/op-reth/crates/consensus/src/lib.rs b/rust/op-reth/crates/consensus/src/lib.rs similarity index 98% rename from op-reth/crates/consensus/src/lib.rs rename to rust/op-reth/crates/consensus/src/lib.rs index 1d3cb421c4577..7cf199f3099fc 100644 --- a/op-reth/crates/consensus/src/lib.rs +++ b/rust/op-reth/crates/consensus/src/lib.rs @@ -13,7 +13,7 @@ extern crate alloc; use alloc::{format, sync::Arc}; use alloy_consensus::{ - constants::MAXIMUM_EXTRA_DATA_SIZE, BlockHeader as _, EMPTY_OMMER_ROOT_HASH, + BlockHeader as _, EMPTY_OMMER_ROOT_HASH, constants::MAXIMUM_EXTRA_DATA_SIZE, }; use alloy_primitives::B64; use core::fmt::Debug; @@ -108,12 +108,12 @@ where expected: block.ommers_hash(), } .into(), - )) + )); } // Check transaction root if let Err(error) = block.ensure_transaction_root_valid() { - return Err(ConsensusError::BodyTransactionRootDiff(error.into())) + return Err(ConsensusError::BodyTransactionRootDiff(error.into())); } // Check empty shanghai-withdrawals @@ -122,7 +122,7 @@ where ConsensusError::Other(format!("failed to verify block {}: {err}", block.number())) })? } else { - return Ok(()) + return Ok(()); } // Blob gas used validation @@ -164,11 +164,11 @@ where ); if header.nonce() != Some(B64::ZERO) { - return Err(ConsensusError::TheMergeNonceIsNotZero) + return Err(ConsensusError::TheMergeNonceIsNotZero); } if header.ommers_hash() != EMPTY_OMMER_ROOT_HASH { - return Err(ConsensusError::TheMergeOmmerRootIsNotEmpty) + return Err(ConsensusError::TheMergeOmmerRootIsNotEmpty); } // Post-merge, the consensus layer is expected to perform checks such that the block @@ -226,7 +226,7 @@ where diff: GotExpected { got: excess_blob_gas, expected: 0 }, parent_excess_blob_gas: parent.excess_blob_gas().unwrap_or(0), parent_blob_gas_used: parent.blob_gas_used().unwrap_or(0), - }) + }); } } @@ -242,13 +242,13 @@ mod tests { use alloy_eips::{eip4895::Withdrawals, eip7685::Requests}; use alloy_primitives::{Address, Bytes, Log, Signature, U256}; use op_alloy_consensus::{ - encode_holocene_extra_data, encode_jovian_extra_data, OpTypedTransaction, + OpTypedTransaction, encode_holocene_extra_data, encode_jovian_extra_data, }; use reth_chainspec::BaseFeeParams; use reth_consensus::{Consensus, ConsensusError, FullConsensus, HeaderValidator}; - use reth_optimism_chainspec::{OpChainSpec, OpChainSpecBuilder, OP_MAINNET}; + use reth_optimism_chainspec::{OP_MAINNET, OpChainSpec, OpChainSpecBuilder}; use reth_optimism_primitives::{OpPrimitives, OpReceipt, OpTransactionSigned}; - use reth_primitives_traits::{proofs, RecoveredBlock, SealedBlock, SealedHeader}; + use reth_primitives_traits::{RecoveredBlock, SealedBlock, SealedHeader, proofs}; use reth_provider::BlockExecutionResult; use crate::OpBeaconConsensus; diff --git a/rust/op-reth/crates/consensus/src/proof.rs b/rust/op-reth/crates/consensus/src/proof.rs new file mode 100644 index 0000000000000..196463a694813 --- /dev/null +++ b/rust/op-reth/crates/consensus/src/proof.rs @@ -0,0 +1,493 @@ +//! Helper function for Receipt root calculation for Optimism hardforks. + +use alloc::vec::Vec; +use alloy_consensus::ReceiptWithBloom; +use alloy_eips::eip2718::Encodable2718; +use alloy_primitives::B256; +use alloy_trie::root::ordered_trie_root_with_encoder; +use reth_optimism_forks::OpHardforks; +use reth_optimism_primitives::DepositReceipt; + +/// Calculates the receipt root for a header. +pub(crate) fn calculate_receipt_root_optimism( + receipts: &[ReceiptWithBloom<&R>], + chain_spec: impl OpHardforks, + timestamp: u64, +) -> B256 { + // There is a minor bug in op-geth and op-erigon where in the Regolith hardfork, + // the receipt root calculation does not include the deposit nonce in the receipt + // encoding. In the Regolith Hardfork, we must strip the deposit nonce from the + // receipts before calculating the receipt root. This was corrected in the Canyon + // hardfork. + if chain_spec.is_regolith_active_at_timestamp(timestamp) && + !chain_spec.is_canyon_active_at_timestamp(timestamp) + { + let receipts = receipts + .iter() + .map(|receipt| { + let mut receipt = receipt.clone().map_receipt(|r| r.clone()); + if let Some(receipt) = receipt.receipt.as_deposit_receipt_mut() { + receipt.deposit_nonce = None; + } + receipt + }) + .collect::>(); + + return ordered_trie_root_with_encoder(receipts.as_slice(), |r, buf| r.encode_2718(buf)); + } + + ordered_trie_root_with_encoder(receipts, |r, buf| r.encode_2718(buf)) +} + +/// Calculates the receipt root for a header for the reference type of an OP receipt. +/// +/// NOTE: Prefer calculate receipt root optimism if you have log blooms memoized. +pub fn calculate_receipt_root_no_memo_optimism( + receipts: &[R], + chain_spec: impl OpHardforks, + timestamp: u64, +) -> B256 { + // There is a minor bug in op-geth and op-erigon where in the Regolith hardfork, + // the receipt root calculation does not include the deposit nonce in the receipt + // encoding. In the Regolith Hardfork, we must strip the deposit nonce from the + // receipts before calculating the receipt root. This was corrected in the Canyon + // hardfork. + if chain_spec.is_regolith_active_at_timestamp(timestamp) && + !chain_spec.is_canyon_active_at_timestamp(timestamp) + { + let receipts = receipts + .iter() + .map(|r| { + let mut r = (*r).clone(); + if let Some(receipt) = r.as_deposit_receipt_mut() { + receipt.deposit_nonce = None; + } + r + }) + .collect::>(); + + return ordered_trie_root_with_encoder(&receipts, |r, buf| { + r.with_bloom_ref().encode_2718(buf); + }); + } + + ordered_trie_root_with_encoder(receipts, |r, buf| { + r.with_bloom_ref().encode_2718(buf); + }) +} + +#[cfg(test)] +mod tests { + use super::*; + use alloy_consensus::{Receipt, ReceiptWithBloom, TxReceipt}; + use alloy_primitives::{Address, Bytes, Log, LogData, b256, bloom, hex}; + use op_alloy_consensus::OpDepositReceipt; + use reth_optimism_chainspec::BASE_SEPOLIA; + use reth_optimism_primitives::OpReceipt; + + /// Tests that the receipt root is computed correctly for the regolith block. + /// This was implemented due to a minor bug in op-geth and op-erigon where in + /// the Regolith hardfork, the receipt root calculation does not include the + /// deposit nonce in the receipt encoding. + /// To fix this an op-reth patch was applied to the receipt root calculation + /// to strip the deposit nonce from each receipt before calculating the root. + #[test] + fn check_optimism_receipt_root() { + let cases = [ + // Deposit nonces didn't exist in Bedrock; No need to strip. For the purposes of this + // test, we do have them, so we should get the same root as Canyon. + ( + "bedrock", + 1679079599, + b256!("0xe255fed45eae7ede0556fe4fabc77b0d294d18781a5a581cab09127bc4cd9ffb"), + ), + // Deposit nonces introduced in Regolith. They weren't included in the receipt RLP, + // so we need to strip them - the receipt root will differ. + ( + "regolith", + 1679079600, + b256!("0xe255fed45eae7ede0556fe4fabc77b0d294d18781a5a581cab09127bc4cd9ffb"), + ), + // Receipt root hashing bug fixed in Canyon. Back to including the deposit nonce + // in the receipt RLP when computing the receipt root. + ( + "canyon", + 1699981200, + b256!("0x6eefbb5efb95235476654a8bfbf8cb64a4f5f0b0c80b700b0c5964550beee6d7"), + ), + ]; + + for case in cases { + let receipts = [ + // 0xb0d6ee650637911394396d81172bd1c637d568ed1fbddab0daddfca399c58b53 + OpReceipt::Deposit(OpDepositReceipt { + inner: Receipt { + status: true.into(), + cumulative_gas_used: 46913, + logs: vec![], + }, + deposit_nonce: Some(4012991u64), + deposit_receipt_version: None, + }), + // 0x2f433586bae30573c393adfa02bc81d2a1888a3d6c9869f473fb57245166bd9a + OpReceipt::Eip1559(Receipt { + status: true.into(), + cumulative_gas_used: 118083, + logs: vec![ + Log { + address: hex!("ddb6dcce6b794415145eb5caa6cd335aeda9c272").into(), + data: LogData::new_unchecked( + vec![ + b256!( + "0xc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62" + ), + b256!( + "0x000000000000000000000000c498902843af527e674846bb7edefa8ad62b8fb9" + ), + b256!( + "0x000000000000000000000000c498902843af527e674846bb7edefa8ad62b8fb9" + ), + b256!( + "0x0000000000000000000000000000000000000000000000000000000000000000" + ), + ], + Bytes::from_static(&hex!( + "00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001" + )), + ), + }, + Log { + address: hex!("ddb6dcce6b794415145eb5caa6cd335aeda9c272").into(), + data: LogData::new_unchecked( + vec![ + b256!( + "0xc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62" + ), + b256!( + "0x000000000000000000000000c498902843af527e674846bb7edefa8ad62b8fb9" + ), + b256!( + "0x0000000000000000000000000000000000000000000000000000000000000000" + ), + b256!( + "0x000000000000000000000000c498902843af527e674846bb7edefa8ad62b8fb9" + ), + ], + Bytes::from_static(&hex!( + "00000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000001" + )), + ), + }, + Log { + address: hex!("ddb6dcce6b794415145eb5caa6cd335aeda9c272").into(), + data: LogData::new_unchecked( + vec![ + b256!( + "0x0eb774bb9698a73583fe07b6972cf2dcc08d1d97581a22861f45feb86b395820" + ), + b256!( + "0x000000000000000000000000c498902843af527e674846bb7edefa8ad62b8fb9" + ), + b256!( + "0x000000000000000000000000c498902843af527e674846bb7edefa8ad62b8fb9" + ), + ], + Bytes::from_static(&hex!( + "0000000000000000000000000000000000000000000000000000000000000003" + )), + ), + }, + ], + }), + // 0x6c33676e8f6077f46a62eabab70bc6d1b1b18a624b0739086d77093a1ecf8266 + OpReceipt::Eip1559(Receipt { + status: true.into(), + cumulative_gas_used: 189253, + logs: vec![ + Log { + address: hex!("ddb6dcce6b794415145eb5caa6cd335aeda9c272").into(), + data: LogData::new_unchecked( + vec![ + b256!( + "0xc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62" + ), + b256!( + "0x0000000000000000000000009d521a04bee134ff8136d2ec957e5bc8c50394ec" + ), + b256!( + "0x0000000000000000000000009d521a04bee134ff8136d2ec957e5bc8c50394ec" + ), + b256!( + "0x0000000000000000000000000000000000000000000000000000000000000000" + ), + ], + Bytes::from_static(&hex!( + "00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001" + )), + ), + }, + Log { + address: hex!("ddb6dcce6b794415145eb5caa6cd335aeda9c272").into(), + data: LogData::new_unchecked( + vec![ + b256!( + "0xc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62" + ), + b256!( + "0x0000000000000000000000009d521a04bee134ff8136d2ec957e5bc8c50394ec" + ), + b256!( + "0x0000000000000000000000000000000000000000000000000000000000000000" + ), + b256!( + "0x0000000000000000000000009d521a04bee134ff8136d2ec957e5bc8c50394ec" + ), + ], + Bytes::from_static(&hex!( + "00000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000001" + )), + ), + }, + Log { + address: hex!("ddb6dcce6b794415145eb5caa6cd335aeda9c272").into(), + data: LogData::new_unchecked( + vec![ + b256!( + "0x0eb774bb9698a73583fe07b6972cf2dcc08d1d97581a22861f45feb86b395820" + ), + b256!( + "0x0000000000000000000000009d521a04bee134ff8136d2ec957e5bc8c50394ec" + ), + b256!( + "0x0000000000000000000000009d521a04bee134ff8136d2ec957e5bc8c50394ec" + ), + ], + Bytes::from_static(&hex!( + "0000000000000000000000000000000000000000000000000000000000000003" + )), + ), + }, + ], + }), + // 0x4d3ecbef04ba7ce7f5ab55be0c61978ca97c117d7da448ed9771d4ff0c720a3f + OpReceipt::Eip1559(Receipt { + status: true.into(), + cumulative_gas_used: 346969, + logs: vec![ + Log { + address: hex!("4200000000000000000000000000000000000006").into(), + data: LogData::new_unchecked( + vec![ + b256!( + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef" + ), + b256!( + "0x000000000000000000000000c3feb4ef4c2a5af77add15c95bd98f6b43640cc8" + ), + b256!( + "0x0000000000000000000000002992607c1614484fe6d865088e5c048f0650afd4" + ), + ], + Bytes::from_static(&hex!( + "0000000000000000000000000000000000000000000000000018de76816d8000" + )), + ), + }, + Log { + address: hex!("cf8e7e6b26f407dee615fc4db18bf829e7aa8c09").into(), + data: LogData::new_unchecked( + vec![ + b256!( + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef" + ), + b256!( + "0x0000000000000000000000002992607c1614484fe6d865088e5c048f0650afd4" + ), + b256!( + "0x0000000000000000000000008dbffe4c8bf3caf5deae3a99b50cfcf3648cbc09" + ), + ], + Bytes::from_static(&hex!( + "000000000000000000000000000000000000000000000002d24d8e9ac1aa79e2" + )), + ), + }, + Log { + address: hex!("2992607c1614484fe6d865088e5c048f0650afd4").into(), + data: LogData::new_unchecked( + vec![b256!( + "0x1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1" + )], + Bytes::from_static(&hex!( + "000000000000000000000000000000000000000000000009bd50642785c15736000000000000000000000000000000000000000000011bb7ac324f724a29bbbf" + )), + ), + }, + Log { + address: hex!("2992607c1614484fe6d865088e5c048f0650afd4").into(), + data: LogData::new_unchecked( + vec![ + b256!( + "0xd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822" + ), + b256!( + "0x00000000000000000000000029843613c7211d014f5dd5718cf32bcd314914cb" + ), + b256!( + "0x0000000000000000000000008dbffe4c8bf3caf5deae3a99b50cfcf3648cbc09" + ), + ], + Bytes::from_static(&hex!( + "0000000000000000000000000000000000000000000000000018de76816d800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002d24d8e9ac1aa79e2" + )), + ), + }, + Log { + address: hex!("6d0f8d488b669aa9ba2d0f0b7b75a88bf5051cd3").into(), + data: LogData::new_unchecked( + vec![ + b256!( + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef" + ), + b256!( + "0x0000000000000000000000008dbffe4c8bf3caf5deae3a99b50cfcf3648cbc09" + ), + b256!( + "0x000000000000000000000000c3feb4ef4c2a5af77add15c95bd98f6b43640cc8" + ), + ], + Bytes::from_static(&hex!( + "00000000000000000000000000000000000000000000000014bc73062aea8093" + )), + ), + }, + Log { + address: hex!("8dbffe4c8bf3caf5deae3a99b50cfcf3648cbc09").into(), + data: LogData::new_unchecked( + vec![b256!( + "0x1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1" + )], + Bytes::from_static(&hex!( + "00000000000000000000000000000000000000000000002f122cfadc1ca82a35000000000000000000000000000000000000000000000665879dc0609945d6d1" + )), + ), + }, + Log { + address: hex!("8dbffe4c8bf3caf5deae3a99b50cfcf3648cbc09").into(), + data: LogData::new_unchecked( + vec![ + b256!( + "0xd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822" + ), + b256!( + "0x00000000000000000000000029843613c7211d014f5dd5718cf32bcd314914cb" + ), + b256!( + "0x000000000000000000000000c3feb4ef4c2a5af77add15c95bd98f6b43640cc8" + ), + ], + Bytes::from_static(&hex!( + "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002d24d8e9ac1aa79e200000000000000000000000000000000000000000000000014bc73062aea80930000000000000000000000000000000000000000000000000000000000000000" + )), + ), + }, + ], + }), + // 0xf738af5eb00ba23dbc1be2dbce41dbc0180f0085b7fb46646e90bf737af90351 + OpReceipt::Eip1559(Receipt { + status: true.into(), + cumulative_gas_used: 623249, + logs: vec![ + Log { + address: hex!("ac6564f3718837caadd42eed742d75c12b90a052").into(), + data: LogData::new_unchecked( + vec![ + b256!( + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef" + ), + b256!( + "0x0000000000000000000000000000000000000000000000000000000000000000" + ), + b256!( + "0x000000000000000000000000a4fa7f3fbf0677f254ebdb1646146864c305b76e" + ), + b256!( + "0x000000000000000000000000000000000000000000000000000000000011a1d3" + ), + ], + Default::default(), + ), + }, + Log { + address: hex!("ac6564f3718837caadd42eed742d75c12b90a052").into(), + data: LogData::new_unchecked( + vec![ + b256!( + "0x9d89e36eadf856db0ad9ffb5a569e07f95634dddd9501141ecf04820484ad0dc" + ), + b256!( + "0x000000000000000000000000a4fa7f3fbf0677f254ebdb1646146864c305b76e" + ), + b256!( + "0x000000000000000000000000000000000000000000000000000000000011a1d3" + ), + ], + Bytes::from_static(&hex!( + "00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000037697066733a2f2f516d515141646b33736538396b47716577395256567a316b68643548375562476d4d4a485a62566f386a6d346f4a2f30000000000000000000" + )), + ), + }, + Log { + address: hex!("ac6564f3718837caadd42eed742d75c12b90a052").into(), + data: LogData::new_unchecked( + vec![ + b256!( + "0x110d160a1bedeea919a88fbc4b2a9fb61b7e664084391b6ca2740db66fef80fe" + ), + b256!( + "0x00000000000000000000000084d47f6eea8f8d87910448325519d1bb45c2972a" + ), + b256!( + "0x000000000000000000000000a4fa7f3fbf0677f254ebdb1646146864c305b76e" + ), + b256!( + "0x000000000000000000000000000000000000000000000000000000000011a1d3" + ), + ], + Bytes::from_static(&hex!( + "0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000a4fa7f3fbf0677f254ebdb1646146864c305b76e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007717500762343034303661353035646234633961386163316433306335633332303265370000000000000000000000000000000000000000000000000000000000000037697066733a2f2f516d515141646b33736538396b47716577395256567a316b68643548375562476d4d4a485a62566f386a6d346f4a2f30000000000000000000" + )), + ), + }, + ], + }), + ]; + let root = calculate_receipt_root_optimism( + &receipts.iter().map(TxReceipt::with_bloom_ref).collect::>(), + BASE_SEPOLIA.as_ref(), + case.1, + ); + assert_eq!(root, case.2); + } + } + + #[test] + fn check_receipt_root_optimism() { + let logs = vec![Log { + address: Address::ZERO, + data: LogData::new_unchecked(vec![], Default::default()), + }]; + let logs_bloom = bloom!( + "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001" + ); + let inner = + OpReceipt::Eip2930(Receipt { status: true.into(), cumulative_gas_used: 102068, logs }); + let receipt = ReceiptWithBloom { receipt: &inner, logs_bloom }; + let receipt = vec![receipt]; + let root = calculate_receipt_root_optimism(&receipt, BASE_SEPOLIA.as_ref(), 0); + assert_eq!( + root, + b256!("0xfe70ae4a136d98944951b2123859698d59ad251a381abc9960fa81cae3d0d4a0") + ); + } +} diff --git a/op-reth/crates/consensus/src/validation/canyon.rs b/rust/op-reth/crates/consensus/src/validation/canyon.rs similarity index 95% rename from op-reth/crates/consensus/src/validation/canyon.rs rename to rust/op-reth/crates/consensus/src/validation/canyon.rs index 886f53bb20b9c..432b121a48ff5 100644 --- a/op-reth/crates/consensus/src/validation/canyon.rs +++ b/rust/op-reth/crates/consensus/src/validation/canyon.rs @@ -34,7 +34,7 @@ pub fn ensure_empty_shanghai_withdrawals(body: &T) -> Result<(), O // Canyon rule if !withdrawals.as_ref().is_empty() { - return Err(OpConsensusError::WithdrawalsNonEmpty) + return Err(OpConsensusError::WithdrawalsNonEmpty); } Ok(()) diff --git a/op-reth/crates/consensus/src/validation/isthmus.rs b/rust/op-reth/crates/consensus/src/validation/isthmus.rs similarity index 95% rename from op-reth/crates/consensus/src/validation/isthmus.rs rename to rust/op-reth/crates/consensus/src/validation/isthmus.rs index f35f4ea69a7ea..cf9309b9268a3 100644 --- a/op-reth/crates/consensus/src/validation/isthmus.rs +++ b/rust/op-reth/crates/consensus/src/validation/isthmus.rs @@ -5,7 +5,7 @@ use alloy_consensus::BlockHeader; use alloy_primitives::B256; use alloy_trie::EMPTY_ROOT_HASH; use reth_optimism_primitives::L2_TO_L1_MESSAGE_PASSER_ADDRESS; -use reth_storage_api::{errors::ProviderResult, StorageRootProvider}; +use reth_storage_api::{StorageRootProvider, errors::ProviderResult}; use reth_trie_common::HashedStorage; use revm::database::BundleState; use tracing::warn; @@ -86,7 +86,7 @@ where return Err(OpConsensusError::L2WithdrawalsRootMismatch { header: header_storage_root, exec_res: storage_root, - }) + }); } Ok(()) @@ -118,7 +118,7 @@ where return Err(OpConsensusError::L2WithdrawalsRootMismatch { header: header_storage_root, exec_res: storage_root, - }) + }); } Ok(()) @@ -130,18 +130,18 @@ mod test { use alloc::sync::Arc; use alloy_chains::Chain; use alloy_consensus::Header; - use alloy_primitives::{keccak256, B256, U256}; + use alloy_primitives::{B256, U256, keccak256}; use core::str::FromStr; use reth_db_common::init::init_genesis; use reth_optimism_chainspec::OpChainSpecBuilder; use reth_optimism_node::OpNode; use reth_provider::{ - providers::BlockchainProvider, test_utils::create_test_provider_factory_with_node_types, - StateWriter, + StateWriter, providers::BlockchainProvider, + test_utils::create_test_provider_factory_with_node_types, }; use reth_revm::db::BundleState; use reth_storage_api::StateProviderFactory; - use reth_trie::{test_utils::storage_root_prehashed, HashedStorage}; + use reth_trie::{HashedStorage, test_utils::storage_root_prehashed}; use reth_trie_common::HashedPostState; #[test] diff --git a/op-reth/crates/consensus/src/validation/mod.rs b/rust/op-reth/crates/consensus/src/validation/mod.rs similarity index 97% rename from op-reth/crates/consensus/src/validation/mod.rs rename to rust/op-reth/crates/consensus/src/validation/mod.rs index 2168548608816..10861f5b9c02d 100644 --- a/op-reth/crates/consensus/src/validation/mod.rs +++ b/rust/op-reth/crates/consensus/src/validation/mod.rs @@ -9,14 +9,14 @@ pub use reth_optimism_chainspec::decode_holocene_base_fee; use crate::proof::calculate_receipt_root_optimism; use alloc::vec::Vec; -use alloy_consensus::{BlockHeader, TxReceipt, EMPTY_OMMER_ROOT_HASH}; +use alloy_consensus::{BlockHeader, EMPTY_OMMER_ROOT_HASH, TxReceipt}; use alloy_eips::Encodable2718; -use alloy_primitives::{Bloom, Bytes, B256}; +use alloy_primitives::{B256, Bloom, Bytes}; use alloy_trie::EMPTY_ROOT_HASH; use reth_consensus::ConsensusError; use reth_optimism_forks::OpHardforks; use reth_optimism_primitives::DepositReceipt; -use reth_primitives_traits::{receipt::gas_spent_by_transactions, BlockBody, GotExpected}; +use reth_primitives_traits::{BlockBody, GotExpected, receipt::gas_spent_by_transactions}; /// Ensures the block response data matches the header. /// @@ -41,14 +41,14 @@ where expected: header.ommers_hash(), } .into(), - )) + )); } let tx_root = body.calculate_tx_root(); if header.transactions_root() != tx_root { return Err(ConsensusError::BodyTransactionRootDiff( GotExpected { got: tx_root, expected: header.transactions_root() }.into(), - )) + )); } match (header.withdrawals_root(), body.calculate_withdrawals_root()) { @@ -60,7 +60,7 @@ where if withdrawals_root != EMPTY_ROOT_HASH { return Err(ConsensusError::BodyWithdrawalsRootDiff( GotExpected { got: withdrawals_root, expected: EMPTY_ROOT_HASH }.into(), - )) + )); } } else { // before isthmus we ensure that the header root matches the body @@ -68,7 +68,7 @@ where return Err(ConsensusError::BodyWithdrawalsRootDiff( GotExpected { got: withdrawals_root, expected: header_withdrawals_root } .into(), - )) + )); } } } @@ -138,7 +138,7 @@ pub fn validate_block_post_execution( .map(|r| Bytes::from(r.with_bloom_ref().encoded_2718())) .collect::>(); tracing::debug!(%error, ?receipts, "receipts verification failed"); - return Err(error) + return Err(error); } } @@ -149,7 +149,7 @@ pub fn validate_block_post_execution( return Err(ConsensusError::BlockGasUsed { gas: GotExpected { got: cumulative_gas_used, expected: header.gas_used() }, gas_spent_by_tx: gas_spent_by_transactions(receipts), - }) + }); } Ok(()) @@ -192,13 +192,13 @@ fn compare_receipts_root_and_logs_bloom( if calculated_receipts_root != expected_receipts_root { return Err(ConsensusError::BodyReceiptRootDiff( GotExpected { got: calculated_receipts_root, expected: expected_receipts_root }.into(), - )) + )); } if calculated_logs_bloom != expected_logs_bloom { return Err(ConsensusError::BodyBloomLogDiff( GotExpected { got: calculated_logs_bloom, expected: expected_logs_bloom }.into(), - )) + )); } Ok(()) @@ -209,11 +209,11 @@ mod tests { use super::*; use alloy_consensus::Header; use alloy_eips::eip7685::Requests; - use alloy_primitives::{b256, hex, Bytes, U256}; + use alloy_primitives::{Bytes, U256, b256, hex}; use op_alloy_consensus::OpTxEnvelope; use reth_chainspec::{BaseFeeParams, ChainSpec, EthChainSpec, ForkCondition, Hardfork}; - use reth_optimism_chainspec::{OpChainSpec, BASE_SEPOLIA}; - use reth_optimism_forks::{OpHardfork, BASE_SEPOLIA_HARDFORKS}; + use reth_optimism_chainspec::{BASE_SEPOLIA, OpChainSpec}; + use reth_optimism_forks::{BASE_SEPOLIA_HARDFORKS, OpHardfork}; use reth_optimism_primitives::OpReceipt; use std::sync::Arc; diff --git a/op-reth/crates/evm/Cargo.toml b/rust/op-reth/crates/evm/Cargo.toml similarity index 94% rename from op-reth/crates/evm/Cargo.toml rename to rust/op-reth/crates/evm/Cargo.toml index 724f8555e094c..cf8e964af2f16 100644 --- a/op-reth/crates/evm/Cargo.toml +++ b/rust/op-reth/crates/evm/Cargo.toml @@ -1,11 +1,11 @@ [package] name = "reth-optimism-evm" -version.workspace = true +version = "1.10.2" edition.workspace = true rust-version.workspace = true license.workspace = true -homepage.workspace = true -repository.workspace = true +homepage = "https://paradigmxyz.github.io/reth" +repository = "https://github.com/paradigmxyz/reth" [lints] workspace = true diff --git a/op-reth/crates/evm/src/build.rs b/rust/op-reth/crates/evm/src/build.rs similarity index 93% rename from op-reth/crates/evm/src/build.rs rename to rust/op-reth/crates/evm/src/build.rs index b8fab18833c6e..336967499d239 100644 --- a/op-reth/crates/evm/src/build.rs +++ b/rust/op-reth/crates/evm/src/build.rs @@ -1,7 +1,7 @@ use alloc::sync::Arc; use alloy_consensus::{ - constants::EMPTY_WITHDRAWALS, proofs, Block, BlockBody, Header, TxReceipt, - EMPTY_OMMER_ROOT_HASH, + Block, BlockBody, EMPTY_OMMER_ROOT_HASH, Header, TxReceipt, constants::EMPTY_WITHDRAWALS, + proofs, }; use alloy_eips::{eip7685::EMPTY_REQUESTS_HASH, merge::BEACON_NONCE}; use alloy_evm::block::BlockExecutorFactory; @@ -33,10 +33,10 @@ impl OpBlockAssembler { /// Builds a block for `input` without any bounds on header `H`. pub fn assemble_block< F: for<'a> BlockExecutorFactory< - ExecutionCtx<'a>: Into, - Transaction: SignedTransaction, - Receipt: Receipt + DepositReceipt, - >, + ExecutionCtx<'a>: Into, + Transaction: SignedTransaction, + Receipt: Receipt + DepositReceipt, + >, H, >( &self, @@ -138,10 +138,10 @@ impl BlockAssembler for OpBlockAssembler where ChainSpec: OpHardforks, F: for<'a> BlockExecutorFactory< - ExecutionCtx<'a> = OpBlockExecutionCtx, - Transaction: SignedTransaction, - Receipt: Receipt + DepositReceipt, - >, + ExecutionCtx<'a> = OpBlockExecutionCtx, + Transaction: SignedTransaction, + Receipt: Receipt + DepositReceipt, + >, { type Block = Block; diff --git a/op-reth/crates/evm/src/config.rs b/rust/op-reth/crates/evm/src/config.rs similarity index 97% rename from op-reth/crates/evm/src/config.rs rename to rust/op-reth/crates/evm/src/config.rs index 1f1068c40d95f..9a1f8500c1f44 100644 --- a/op-reth/crates/evm/src/config.rs +++ b/rust/op-reth/crates/evm/src/config.rs @@ -2,7 +2,7 @@ pub use alloy_op_evm::{ spec as revm_spec, spec_by_timestamp_after_bedrock as revm_spec_by_timestamp_after_bedrock, }; use op_alloy_rpc_types_engine::OpFlashblockPayloadBase; -use revm::primitives::{Address, Bytes, B256}; +use revm::primitives::{Address, B256, Bytes}; /// Context relevant for execution of a next block w.r.t OP. #[derive(Debug, Clone, PartialEq, Eq)] diff --git a/op-reth/crates/evm/src/error.rs b/rust/op-reth/crates/evm/src/error.rs similarity index 100% rename from op-reth/crates/evm/src/error.rs rename to rust/op-reth/crates/evm/src/error.rs diff --git a/op-reth/crates/evm/src/execute.rs b/rust/op-reth/crates/evm/src/execute.rs similarity index 98% rename from op-reth/crates/evm/src/execute.rs rename to rust/op-reth/crates/evm/src/execute.rs index ff8a72dc82abd..d0e9df5e19b99 100644 --- a/op-reth/crates/evm/src/execute.rs +++ b/rust/op-reth/crates/evm/src/execute.rs @@ -8,7 +8,7 @@ mod tests { use crate::{OpEvmConfig, OpRethReceiptBuilder}; use alloc::sync::Arc; use alloy_consensus::{Block, BlockBody, Header, SignableTransaction, TxEip1559}; - use alloy_primitives::{b256, Address, Signature, StorageKey, StorageValue, U256}; + use alloy_primitives::{Address, Signature, StorageKey, StorageValue, U256, b256}; use op_alloy_consensus::TxDeposit; use op_revm::constants::L1_BLOCK_CONTRACT; use reth_chainspec::MIN_TRANSACTION_GAS; diff --git a/op-reth/crates/evm/src/l1.rs b/rust/op-reth/crates/evm/src/l1.rs similarity index 99% rename from op-reth/crates/evm/src/l1.rs rename to rust/op-reth/crates/evm/src/l1.rs index 2afe6e9d3a263..ea34b9a77cef5 100644 --- a/op-reth/crates/evm/src/l1.rs +++ b/rust/op-reth/crates/evm/src/l1.rs @@ -1,8 +1,8 @@ //! Optimism-specific implementation and utilities for the executor -use crate::{error::L1BlockInfoError, revm_spec_by_timestamp_after_bedrock, OpBlockExecutionError}; +use crate::{OpBlockExecutionError, error::L1BlockInfoError, revm_spec_by_timestamp_after_bedrock}; use alloy_consensus::Transaction; -use alloy_primitives::{hex, U16, U256}; +use alloy_primitives::{U16, U256, hex}; use op_revm::L1BlockInfo; use reth_execution_errors::BlockExecutionError; use reth_optimism_forks::OpHardforks; @@ -362,7 +362,7 @@ mod tests { #[test] fn sanity_l1_block() { use alloy_consensus::Header; - use alloy_primitives::{hex_literal::hex, Bytes}; + use alloy_primitives::{Bytes, hex_literal::hex}; let bytes = Bytes::from_static(&hex!( "7ef9015aa044bae9d41b8380d781187b426c6fe43df5fb2fb57bd4466ef6a701e1f01e015694deaddeaddeaddeaddeaddeaddeaddeaddead000194420000000000000000000000000000000000001580808408f0d18001b90104015d8eb900000000000000000000000000000000000000000000000000000000008057650000000000000000000000000000000000000000000000000000000063d96d10000000000000000000000000000000000000000000000000000000000009f35273d89754a1e0387b89520d989d3be9c37c1f32495a88faf1ea05c61121ab0d1900000000000000000000000000000000000000000000000000000000000000010000000000000000000000002d679b567db6187c0c8323fa982cfb88b74dbcc7000000000000000000000000000000000000000000000000000000000000083400000000000000000000000000000000000000000000000000000000000f4240" diff --git a/op-reth/crates/evm/src/lib.rs b/rust/op-reth/crates/evm/src/lib.rs similarity index 97% rename from op-reth/crates/evm/src/lib.rs rename to rust/op-reth/crates/evm/src/lib.rs index d7985b8b1c547..54ea9ae7b8479 100644 --- a/op-reth/crates/evm/src/lib.rs +++ b/rust/op-reth/crates/evm/src/lib.rs @@ -14,13 +14,13 @@ extern crate alloc; use alloc::sync::Arc; use alloy_consensus::{BlockHeader, Header}; use alloy_evm::{EvmFactory, FromRecoveredTx, FromTxWithEncoded}; -use alloy_op_evm::block::{receipt_builder::OpReceiptBuilder, OpTxEnv}; +use alloy_op_evm::block::{OpTxEnv, receipt_builder::OpReceiptBuilder}; use core::fmt::Debug; use op_alloy_consensus::EIP1559ParamError; use op_revm::{OpSpecId, OpTransaction}; use reth_chainspec::EthChainSpec; use reth_evm::{ - eth::NextEvmEnvAttributes, precompiles::PrecompilesMap, ConfigureEvm, EvmEnv, TransactionEnv, + ConfigureEvm, EvmEnv, TransactionEnv, eth::NextEvmEnvAttributes, precompiles::PrecompilesMap, }; use reth_optimism_chainspec::OpChainSpec; use reth_optimism_forks::OpHardforks; @@ -46,7 +46,7 @@ use { use reth_evm::{ConfigureEngineEvm, ExecutableTxIterator}; mod config; -pub use config::{revm_spec, revm_spec_by_timestamp_after_bedrock, OpNextBlockEnvAttributes}; +pub use config::{OpNextBlockEnvAttributes, revm_spec, revm_spec_by_timestamp_after_bedrock}; mod execute; pub use execute::*; pub mod l1; @@ -57,7 +57,7 @@ mod build; pub use build::OpBlockAssembler; mod error; -pub use error::OpBlockExecutionError; +pub use error::{L1BlockInfoError, OpBlockExecutionError}; pub use alloy_op_evm::{OpBlockExecutionCtx, OpBlockExecutorFactory, OpEvm, OpEvmFactory}; @@ -126,12 +126,12 @@ impl ConfigureEvm for OpEvmConfig where ChainSpec: EthChainSpec
+ OpHardforks, N: NodePrimitives< - Receipt = R::Receipt, - SignedTx = R::Transaction, - BlockHeader = Header, - BlockBody = alloy_consensus::BlockBody, - Block = alloy_consensus::Block, - >, + Receipt = R::Receipt, + SignedTx = R::Transaction, + BlockHeader = Header, + BlockBody = alloy_consensus::BlockBody, + Block = alloy_consensus::Block, + >, OpTransaction: FromRecoveredTx + FromTxWithEncoded, R: OpReceiptBuilder, EvmF: EvmFactory< @@ -211,12 +211,12 @@ impl ConfigureEngineEvm for OpEvmConfig + OpHardforks, N: NodePrimitives< - Receipt = R::Receipt, - SignedTx = R::Transaction, - BlockHeader = Header, - BlockBody = alloy_consensus::BlockBody, - Block = alloy_consensus::Block, - >, + Receipt = R::Receipt, + SignedTx = R::Transaction, + BlockHeader = Header, + BlockBody = alloy_consensus::BlockBody, + Block = alloy_consensus::Block, + >, OpTransaction: FromRecoveredTx + FromTxWithEncoded, R: OpReceiptBuilder, Self: Send + Sync + Unpin + Clone + 'static, @@ -293,14 +293,14 @@ mod tests { use alloy_consensus::{Header, Receipt}; use alloy_eips::eip7685::Requests; use alloy_genesis::Genesis; - use alloy_primitives::{bytes, map::HashMap, Address, LogData, B256}; + use alloy_primitives::{Address, B256, LogData, bytes, map::HashMap}; use op_revm::OpSpecId; use reth_chainspec::ChainSpec; use reth_evm::execute::ProviderError; use reth_execution_types::{ AccountRevertInit, BundleStateInit, Chain, ExecutionOutcome, RevertsInit, }; - use reth_optimism_chainspec::{OpChainSpec, BASE_MAINNET}; + use reth_optimism_chainspec::{BASE_MAINNET, OpChainSpec}; use reth_optimism_primitives::{OpBlock, OpPrimitives, OpReceipt}; use reth_primitives_traits::{Account, RecoveredBlock}; use revm::{ diff --git a/op-reth/crates/evm/src/receipts.rs b/rust/op-reth/crates/evm/src/receipts.rs similarity index 100% rename from op-reth/crates/evm/src/receipts.rs rename to rust/op-reth/crates/evm/src/receipts.rs diff --git a/op-reth/crates/flashblocks/Cargo.toml b/rust/op-reth/crates/flashblocks/Cargo.toml similarity index 90% rename from op-reth/crates/flashblocks/Cargo.toml rename to rust/op-reth/crates/flashblocks/Cargo.toml index e0754aab95ee1..413bbe0f0311c 100644 --- a/op-reth/crates/flashblocks/Cargo.toml +++ b/rust/op-reth/crates/flashblocks/Cargo.toml @@ -1,11 +1,11 @@ [package] name = "reth-optimism-flashblocks" -version.workspace = true +version = "1.10.2" edition.workspace = true rust-version.workspace = true license.workspace = true -homepage.workspace = true -repository.workspace = true +homepage = "https://paradigmxyz.github.io/reth" +repository = "https://github.com/paradigmxyz/reth" [lints] workspace = true @@ -42,7 +42,7 @@ tokio-tungstenite = { workspace = true, features = ["rustls-tls-native-roots"] } serde_json.workspace = true url.workspace = true futures-util.workspace = true -brotli.workspace = true +brotli = { workspace = true, features = ["std"] } # debug tracing.workspace = true diff --git a/op-reth/crates/flashblocks/src/cache.rs b/rust/op-reth/crates/flashblocks/src/cache.rs similarity index 99% rename from op-reth/crates/flashblocks/src/cache.rs rename to rust/op-reth/crates/flashblocks/src/cache.rs index 9aeed3435e32c..0ddc2e19adfba 100644 --- a/op-reth/crates/flashblocks/src/cache.rs +++ b/rust/op-reth/crates/flashblocks/src/cache.rs @@ -4,9 +4,9 @@ //! and intelligently selects which sequence to build based on the local chain tip. use crate::{ + FlashBlock, FlashBlockCompleteSequence, PendingFlashBlock, sequence::{FlashBlockPendingSequence, SequenceExecutionOutcome}, worker::BuildArgs, - FlashBlock, FlashBlockCompleteSequence, PendingFlashBlock, }; use alloy_eips::eip2718::WithEncoded; use alloy_primitives::B256; @@ -101,7 +101,7 @@ impl SequenceManager { // Bundle completed sequence with its decoded transactions and push to cache // Ring buffer automatically evicts oldest entry when full let txs = std::mem::take(&mut self.pending_transactions); - self.completed_cache.push((completed, txs)); + self.completed_cache.enqueue((completed, txs)); // ensure cache is wiped on new flashblock let _ = self.pending.take_cached_reads(); diff --git a/op-reth/crates/flashblocks/src/consensus.rs b/rust/op-reth/crates/flashblocks/src/consensus.rs similarity index 100% rename from op-reth/crates/flashblocks/src/consensus.rs rename to rust/op-reth/crates/flashblocks/src/consensus.rs diff --git a/op-reth/crates/flashblocks/src/lib.rs b/rust/op-reth/crates/flashblocks/src/lib.rs similarity index 94% rename from op-reth/crates/flashblocks/src/lib.rs rename to rust/op-reth/crates/flashblocks/src/lib.rs index c283d8e221f17..08c7499d58535 100644 --- a/op-reth/crates/flashblocks/src/lib.rs +++ b/rust/op-reth/crates/flashblocks/src/lib.rs @@ -21,7 +21,9 @@ mod payload; pub use payload::{FlashBlock, PendingFlashBlock}; mod sequence; -pub use sequence::{FlashBlockCompleteSequence, FlashBlockPendingSequence}; +pub use sequence::{ + FlashBlockCompleteSequence, FlashBlockPendingSequence, SequenceExecutionOutcome, +}; mod service; pub use service::{FlashBlockBuildInfo, FlashBlockService}; @@ -36,7 +38,7 @@ pub mod validation; mod test_utils; mod ws; -pub use ws::{FlashBlockDecoder, WsConnect, WsFlashBlockStream}; +pub use ws::{FlashBlockDecoder, WsConnect, WsConnector, WsFlashBlockStream}; /// Receiver of the most recent [`PendingFlashBlock`] built out of [`FlashBlock`]s. /// diff --git a/op-reth/crates/flashblocks/src/payload.rs b/rust/op-reth/crates/flashblocks/src/payload.rs similarity index 100% rename from op-reth/crates/flashblocks/src/payload.rs rename to rust/op-reth/crates/flashblocks/src/payload.rs diff --git a/op-reth/crates/flashblocks/src/sequence.rs b/rust/op-reth/crates/flashblocks/src/sequence.rs similarity index 99% rename from op-reth/crates/flashblocks/src/sequence.rs rename to rust/op-reth/crates/flashblocks/src/sequence.rs index abf9e6d514c28..64ac022729054 100644 --- a/op-reth/crates/flashblocks/src/sequence.rs +++ b/rust/op-reth/crates/flashblocks/src/sequence.rs @@ -1,8 +1,8 @@ use crate::{FlashBlock, FlashBlockCompleteSequenceRx}; -use alloy_primitives::{Bytes, B256}; +use alloy_primitives::{B256, Bytes}; use alloy_rpc_types_engine::PayloadId; use core::mem; -use eyre::{bail, OptionExt}; +use eyre::{OptionExt, bail}; use op_alloy_rpc_types_engine::OpFlashblockPayloadBase; use reth_revm::cached::CachedReads; use std::{collections::BTreeMap, ops::Deref}; diff --git a/op-reth/crates/flashblocks/src/service.rs b/rust/op-reth/crates/flashblocks/src/service.rs similarity index 98% rename from op-reth/crates/flashblocks/src/service.rs rename to rust/op-reth/crates/flashblocks/src/service.rs index ee0229d7f0099..490941294196c 100644 --- a/op-reth/crates/flashblocks/src/service.rs +++ b/rust/op-reth/crates/flashblocks/src/service.rs @@ -1,6 +1,6 @@ use crate::{ - cache::SequenceManager, worker::FlashBlockBuilder, FlashBlock, FlashBlockCompleteSequence, - FlashBlockCompleteSequenceRx, InProgressFlashBlockRx, PendingFlashBlock, + FlashBlock, FlashBlockCompleteSequence, FlashBlockCompleteSequenceRx, InProgressFlashBlockRx, + PendingFlashBlock, cache::SequenceManager, worker::FlashBlockBuilder, }; use alloy_primitives::B256; use futures_util::{FutureExt, Stream, StreamExt}; diff --git a/op-reth/crates/flashblocks/src/test_utils.rs b/rust/op-reth/crates/flashblocks/src/test_utils.rs similarity index 99% rename from op-reth/crates/flashblocks/src/test_utils.rs rename to rust/op-reth/crates/flashblocks/src/test_utils.rs index deea2cf52fe70..de33b9f6f40d4 100644 --- a/op-reth/crates/flashblocks/src/test_utils.rs +++ b/rust/op-reth/crates/flashblocks/src/test_utils.rs @@ -49,7 +49,7 @@ //! ``` use crate::FlashBlock; -use alloy_primitives::{Address, Bloom, Bytes, B256, U256}; +use alloy_primitives::{Address, B256, Bloom, Bytes, U256}; use alloy_rpc_types_engine::PayloadId; use op_alloy_rpc_types_engine::{ OpFlashblockPayloadBase, OpFlashblockPayloadDelta, OpFlashblockPayloadMetadata, diff --git a/op-reth/crates/flashblocks/src/validation.rs b/rust/op-reth/crates/flashblocks/src/validation.rs similarity index 100% rename from op-reth/crates/flashblocks/src/validation.rs rename to rust/op-reth/crates/flashblocks/src/validation.rs diff --git a/op-reth/crates/flashblocks/src/worker.rs b/rust/op-reth/crates/flashblocks/src/worker.rs similarity index 96% rename from op-reth/crates/flashblocks/src/worker.rs rename to rust/op-reth/crates/flashblocks/src/worker.rs index e1b29c27296e8..202056ba727d2 100644 --- a/op-reth/crates/flashblocks/src/worker.rs +++ b/rust/op-reth/crates/flashblocks/src/worker.rs @@ -1,18 +1,18 @@ use crate::PendingFlashBlock; -use alloy_eips::{eip2718::WithEncoded, BlockNumberOrTag}; +use alloy_eips::{BlockNumberOrTag, eip2718::WithEncoded}; use alloy_primitives::B256; use op_alloy_rpc_types_engine::OpFlashblockPayloadBase; use reth_chain_state::{ComputedTrieData, ExecutedBlock}; use reth_errors::RethError; use reth_evm::{ - execute::{BlockBuilder, BlockBuilderOutcome}, ConfigureEvm, + execute::{BlockBuilder, BlockBuilderOutcome}, }; use reth_execution_types::BlockExecutionOutput; use reth_primitives_traits::{BlockTy, HeaderTy, NodePrimitives, ReceiptTy, Recovered}; use reth_revm::{cached::CachedReads, database::StateProviderDatabase, db::State}; use reth_rpc_eth_types::{EthApiError, PendingBlock}; -use reth_storage_api::{noop::NoopProvider, BlockReaderIdExt, StateProviderFactory}; +use reth_storage_api::{BlockReaderIdExt, StateProviderFactory, noop::NoopProvider}; use std::{ sync::Arc, time::{Duration, Instant}, @@ -76,7 +76,7 @@ where if args.base.parent_hash != latest_hash { trace!(target: "flashblocks", flashblock_parent = ?args.base.parent_hash, local_latest=?latest.num_hash(),"Skipping non consecutive flashblock"); // doesn't attach to the latest block - return Ok(None) + return Ok(None); } let state_provider = self.provider.history_by_block_hash(latest.hash())?; diff --git a/op-reth/crates/flashblocks/src/ws/decoding.rs b/rust/op-reth/crates/flashblocks/src/ws/decoding.rs similarity index 100% rename from op-reth/crates/flashblocks/src/ws/decoding.rs rename to rust/op-reth/crates/flashblocks/src/ws/decoding.rs diff --git a/op-reth/crates/flashblocks/src/ws/mod.rs b/rust/op-reth/crates/flashblocks/src/ws/mod.rs similarity index 51% rename from op-reth/crates/flashblocks/src/ws/mod.rs rename to rust/op-reth/crates/flashblocks/src/ws/mod.rs index 651d83c916b1a..4412acff24bf2 100644 --- a/op-reth/crates/flashblocks/src/ws/mod.rs +++ b/rust/op-reth/crates/flashblocks/src/ws/mod.rs @@ -1,4 +1,4 @@ -pub use stream::{WsConnect, WsFlashBlockStream}; +pub use stream::{WsConnect, WsConnector, WsFlashBlockStream}; mod decoding; pub use decoding::FlashBlockDecoder; diff --git a/op-reth/crates/flashblocks/src/ws/stream.rs b/rust/op-reth/crates/flashblocks/src/ws/stream.rs similarity index 96% rename from op-reth/crates/flashblocks/src/ws/stream.rs rename to rust/op-reth/crates/flashblocks/src/ws/stream.rs index e46fd6d747f71..f33c75c785c13 100644 --- a/op-reth/crates/flashblocks/src/ws/stream.rs +++ b/rust/op-reth/crates/flashblocks/src/ws/stream.rs @@ -1,19 +1,18 @@ -use crate::{ws::FlashBlockDecoder, FlashBlock}; +use crate::{FlashBlock, ws::FlashBlockDecoder}; use futures_util::{ - stream::{SplitSink, SplitStream}, FutureExt, Sink, Stream, StreamExt, + stream::{SplitSink, SplitStream}, }; use std::{ fmt::{Debug, Formatter}, future::Future, pin::Pin, - task::{ready, Context, Poll}, + task::{Context, Poll, ready}, }; use tokio::net::TcpStream; use tokio_tungstenite::{ - connect_async, - tungstenite::{protocol::CloseFrame, Bytes, Error, Message}, - MaybeTlsStream, WebSocketStream, + MaybeTlsStream, WebSocketStream, connect_async, + tungstenite::{Bytes, Error, Message, protocol::CloseFrame}, }; use tracing::debug; use url::Url; @@ -106,12 +105,12 @@ where let _ = ready!(sink.as_mut().poll_flush(cx)); } - let Some(msg) = ready!(this - .stream - .as_mut() - .expect("Stream state should be unreachable without stream") - .poll_next_unpin(cx)) - else { + let Some(msg) = ready!( + this.stream + .as_mut() + .expect("Stream state should be unreachable without stream") + .poll_next_unpin(cx) + ) else { this.state = State::Initial; continue 'start; @@ -119,10 +118,10 @@ where match msg { Ok(Message::Binary(bytes)) => { - return Poll::Ready(Some(this.decoder.decode(bytes))) + return Poll::Ready(Some(this.decoder.decode(bytes))); } Ok(Message::Text(bytes)) => { - return Poll::Ready(Some(this.decoder.decode(bytes.into()))) + return Poll::Ready(Some(this.decoder.decode(bytes.into()))); } Ok(Message::Ping(bytes)) => this.ping(bytes), Ok(Message::Close(frame)) => this.close(frame), @@ -244,8 +243,8 @@ mod tests { use brotli::enc::BrotliEncoderParams; use std::{future, iter}; use tokio_tungstenite::tungstenite::{ - protocol::frame::{coding::CloseCode, Frame}, Error, + protocol::frame::{Frame, coding::CloseCode}, }; /// A `FakeConnector` creates [`FakeStream`]. diff --git a/op-reth/crates/flashblocks/tests/it/main.rs b/rust/op-reth/crates/flashblocks/tests/it/main.rs similarity index 100% rename from op-reth/crates/flashblocks/tests/it/main.rs rename to rust/op-reth/crates/flashblocks/tests/it/main.rs diff --git a/op-reth/crates/flashblocks/tests/it/stream.rs b/rust/op-reth/crates/flashblocks/tests/it/stream.rs similarity index 82% rename from op-reth/crates/flashblocks/tests/it/stream.rs rename to rust/op-reth/crates/flashblocks/tests/it/stream.rs index 99e78fee23a70..a590d8f0e0c87 100644 --- a/op-reth/crates/flashblocks/tests/it/stream.rs +++ b/rust/op-reth/crates/flashblocks/tests/it/stream.rs @@ -2,7 +2,7 @@ use futures_util::stream::StreamExt; use reth_optimism_flashblocks::WsFlashBlockStream; #[tokio::test] -async fn test_streaming_flashblocks_from_remote_source_is_successful() { +async fn test_online_streaming_flashblocks_from_remote_source_is_successful() { let items = 3; let ws_url = "wss://sepolia.flashblocks.base.org/ws".parse().unwrap(); let stream = WsFlashBlockStream::new(ws_url); diff --git a/op-reth/crates/hardforks/Cargo.toml b/rust/op-reth/crates/hardforks/Cargo.toml similarity index 83% rename from op-reth/crates/hardforks/Cargo.toml rename to rust/op-reth/crates/hardforks/Cargo.toml index 3de01c4b13918..4cf0eff3e3001 100644 --- a/op-reth/crates/hardforks/Cargo.toml +++ b/rust/op-reth/crates/hardforks/Cargo.toml @@ -1,11 +1,11 @@ [package] name = "reth-optimism-forks" -version.workspace = true +version = "1.10.2" edition.workspace = true rust-version.workspace = true license.workspace = true -homepage.workspace = true -repository.workspace = true +homepage = "https://paradigmxyz.github.io/reth" +repository = "https://github.com/paradigmxyz/reth" description = "Optimism hardforks used in op-reth" [lints] diff --git a/op-reth/crates/hardforks/src/lib.rs b/rust/op-reth/crates/hardforks/src/lib.rs similarity index 100% rename from op-reth/crates/hardforks/src/lib.rs rename to rust/op-reth/crates/hardforks/src/lib.rs diff --git a/op-reth/crates/node/Cargo.toml b/rust/op-reth/crates/node/Cargo.toml similarity index 80% rename from op-reth/crates/node/Cargo.toml rename to rust/op-reth/crates/node/Cargo.toml index 062b9c8c810a8..b66a4e431ae65 100644 --- a/op-reth/crates/node/Cargo.toml +++ b/rust/op-reth/crates/node/Cargo.toml @@ -1,11 +1,11 @@ [package] name = "reth-optimism-node" -version.workspace = true +version = "1.10.2" edition.workspace = true rust-version.workspace = true license.workspace = true -homepage.workspace = true -repository.workspace = true +homepage = "https://paradigmxyz.github.io/reth" +repository = "https://github.com/paradigmxyz/reth" [lints] workspace = true @@ -66,6 +66,7 @@ eyre.workspace = true url.workspace = true # test-utils dependencies +reth-db-api = { workspace = true, optional = true } reth-e2e-test-utils = { workspace = true, optional = true } alloy-genesis = { workspace = true, optional = true } serde_json = { workspace = true, optional = true } @@ -108,26 +109,30 @@ js-tracer = [ "reth-rpc-eth-types/js-tracer", ] test-utils = [ - "reth-tasks", - "reth-e2e-test-utils", - "alloy-genesis", - "serde_json", - "reth-node-builder/test-utils", - "reth-chainspec/test-utils", - "reth-consensus/test-utils", - "reth-evm/test-utils", - "reth-network/test-utils", - "reth-payload-builder/test-utils", - "reth-revm/test-utils", - "reth-db/test-utils", - "reth-provider/test-utils", - "reth-transaction-pool/test-utils", - "reth-optimism-node/test-utils", - "reth-optimism-primitives/arbitrary", - "reth-primitives-traits/test-utils", - "reth-trie-common/test-utils", - "reth-trie-db/test-utils", - "reth-stages-types/test-utils", + "reth-codec", + "reth-tasks", + "dep:reth-db-api", + "reth-db-api/op", + "reth-e2e-test-utils", + "alloy-genesis", + "serde_json", + "reth-node-builder/test-utils", + "reth-chainspec/test-utils", + "reth-consensus/test-utils", + "reth-evm/test-utils", + "reth-network/test-utils", + "reth-payload-builder/test-utils", + "reth-revm/test-utils", + "reth-db/test-utils", + "reth-provider/test-utils", + "reth-transaction-pool/test-utils", + "reth-optimism-node/test-utils", + "reth-optimism-primitives/arbitrary", + "reth-primitives-traits/test-utils", + "reth-trie-common/test-utils", + "reth-trie-db/test-utils", + "reth-stages-types/test-utils", + "reth-db-api?/test-utils" ] reth-codec = ["reth-optimism-primitives/reth-codec"] diff --git a/op-reth/crates/node/src/args.rs b/rust/op-reth/crates/node/src/args.rs similarity index 100% rename from op-reth/crates/node/src/args.rs rename to rust/op-reth/crates/node/src/args.rs diff --git a/op-reth/crates/node/src/engine.rs b/rust/op-reth/crates/node/src/engine.rs similarity index 96% rename from op-reth/crates/node/src/engine.rs rename to rust/op-reth/crates/node/src/engine.rs index 652bb44f47344..217cb953e68a6 100644 --- a/op-reth/crates/node/src/engine.rs +++ b/rust/op-reth/crates/node/src/engine.rs @@ -7,18 +7,18 @@ use op_alloy_rpc_types_engine::{ }; use reth_consensus::ConsensusError; use reth_node_api::{ + BuiltPayload, EngineApiValidator, EngineTypes, NodePrimitives, PayloadValidator, payload::{ - validate_parent_beacon_block_root_presence, EngineApiMessageVersion, - EngineObjectValidationError, MessageValidationKind, NewPayloadError, PayloadOrAttributes, - PayloadTypes, VersionSpecificValidationError, + EngineApiMessageVersion, EngineObjectValidationError, MessageValidationKind, + NewPayloadError, PayloadOrAttributes, PayloadTypes, VersionSpecificValidationError, + validate_parent_beacon_block_root_presence, }, - validate_version_specific_fields, BuiltPayload, EngineApiValidator, EngineTypes, - NodePrimitives, PayloadValidator, + validate_version_specific_fields, }; use reth_optimism_consensus::isthmus; use reth_optimism_forks::OpHardforks; use reth_optimism_payload_builder::{OpExecutionPayloadValidator, OpPayloadTypes}; -use reth_optimism_primitives::{OpBlock, L2_TO_L1_MESSAGE_PASSER_ADDRESS}; +use reth_optimism_primitives::{L2_TO_L1_MESSAGE_PASSER_ADDRESS, OpBlock}; use reth_primitives_traits::{Block, RecoveredBlock, SealedBlock, SignedTransaction}; use reth_provider::StateProviderFactory; use reth_trie_common::{HashedPostState, KeyHasher}; @@ -132,7 +132,7 @@ where // FIXME: we don't necessarily have access to the parent block here because the // parent block isn't necessarily part of the canonical chain yet. Instead this // function should receive the list of in memory blocks as input - return Ok(()) + return Ok(()); }; let predeploy_storage_updates = state_updates .storages @@ -163,10 +163,10 @@ where impl EngineApiValidator for OpEngineValidator where Types: PayloadTypes< - PayloadAttributes = OpPayloadAttributes, - ExecutionData = OpExecutionData, - BuiltPayload: BuiltPayload>, - >, + PayloadAttributes = OpPayloadAttributes, + ExecutionData = OpExecutionData, + BuiltPayload: BuiltPayload>, + >, P: StateProviderFactory + Unpin + 'static, Tx: SignedTransaction + Unpin + 'static, ChainSpec: OpHardforks + Send + Sync + 'static, @@ -305,7 +305,7 @@ mod test { use crate::engine; use alloy_op_hardforks::BASE_SEPOLIA_JOVIAN_TIMESTAMP; - use alloy_primitives::{b64, Address, B256, B64}; + use alloy_primitives::{Address, B64, B256, b64}; use alloy_rpc_types_engine::PayloadAttributes; use reth_optimism_chainspec::BASE_SEPOLIA; use reth_provider::noop::NoopProvider; diff --git a/op-reth/crates/node/src/lib.rs b/rust/op-reth/crates/node/src/lib.rs similarity index 86% rename from op-reth/crates/node/src/lib.rs rename to rust/op-reth/crates/node/src/lib.rs index 9fcc8d4e549cb..b0e9cea4c0ba1 100644 --- a/op-reth/crates/node/src/lib.rs +++ b/rust/op-reth/crates/node/src/lib.rs @@ -11,6 +11,10 @@ #![cfg_attr(docsrs, feature(doc_cfg))] #![cfg_attr(not(test), warn(unused_crate_dependencies))] +// Used for feature activation only. +#[cfg(feature = "test-utils")] +use reth_db_api as _; + /// CLI argument parsing for the optimism node. pub mod args; @@ -35,8 +39,8 @@ pub use reth_optimism_txpool as txpool; pub mod utils; pub use reth_optimism_payload_builder::{ - self as payload, config::OpDAConfig, OpBuiltPayload, OpPayloadAttributes, OpPayloadBuilder, - OpPayloadBuilderAttributes, OpPayloadPrimitives, OpPayloadTypes, + self as payload, OpBuiltPayload, OpPayloadAttributes, OpPayloadBuilder, + OpPayloadBuilderAttributes, OpPayloadPrimitives, OpPayloadTypes, config::OpDAConfig, }; pub use reth_optimism_evm::*; diff --git a/op-reth/crates/node/src/node.rs b/rust/op-reth/crates/node/src/node.rs similarity index 95% rename from op-reth/crates/node/src/node.rs rename to rust/op-reth/crates/node/src/node.rs index 51d0ff3022dd4..c483ed08aefe7 100644 --- a/op-reth/crates/node/src/node.rs +++ b/rust/op-reth/crates/node/src/node.rs @@ -1,25 +1,26 @@ //! Optimism Node types config. use crate::{ + OpEngineApiBuilder, OpEngineTypes, args::RollupArgs, engine::OpEngineValidator, txpool::{OpTransactionPool, OpTransactionValidator}, - OpEngineApiBuilder, OpEngineTypes, }; -use op_alloy_consensus::{interop::SafetyLevel, OpPooledTransaction}; +use op_alloy_consensus::{OpPooledTransaction, interop::SafetyLevel}; use op_alloy_rpc_types_engine::OpExecutionData; use reth_chainspec::{ChainSpecProvider, EthChainSpec, Hardforks}; use reth_engine_local::LocalPayloadAttributesBuilder; use reth_evm::ConfigureEvm; use reth_network::{ - types::BasicNetworkPrimitives, NetworkConfig, NetworkHandle, NetworkManager, NetworkPrimitives, - PeersInfo, + NetworkConfig, NetworkHandle, NetworkManager, NetworkPrimitives, PeersInfo, + types::BasicNetworkPrimitives, }; use reth_node_api::{ AddOnsContext, BuildNextEnv, EngineTypes, FullNodeComponents, HeaderTy, NodeAddOns, NodePrimitives, PayloadAttributesBuilder, PayloadTypes, PrimitivesTy, TxTy, }; use reth_node_builder::{ + BuilderContext, DebugNode, Node, NodeAdapter, NodeComponentsBuilder, components::{ BasicPayloadServiceBuilder, ComponentsBuilder, ConsensusBuilder, ExecutorBuilder, NetworkBuilder, PayloadBuilderBuilder, PoolBuilder, PoolBuilderConfigOverrides, @@ -31,37 +32,36 @@ use reth_node_builder::{ EngineValidatorBuilder, EthApiBuilder, Identity, PayloadValidatorBuilder, RethRpcAddOns, RethRpcMiddleware, RethRpcServerHandles, RpcAddOns, RpcContext, RpcHandle, }, - BuilderContext, DebugNode, Node, NodeAdapter, NodeComponentsBuilder, }; use reth_optimism_chainspec::{OpChainSpec, OpHardfork}; use reth_optimism_consensus::OpBeaconConsensus; use reth_optimism_evm::{OpEvmConfig, OpRethReceiptBuilder}; use reth_optimism_forks::OpHardforks; use reth_optimism_payload_builder::{ + OpAttributes, OpBuiltPayload, OpPayloadPrimitives, builder::OpPayloadTransactions, config::{OpBuilderConfig, OpDAConfig, OpGasLimitConfig}, - OpAttributes, OpBuiltPayload, OpPayloadPrimitives, }; use reth_optimism_primitives::{DepositReceipt, OpPrimitives}; use reth_optimism_rpc::{ - eth::{ext::OpEthExtApi, OpEthApiBuilder}, + SequencerClient, + eth::{OpEthApiBuilder, ext::OpEthExtApi}, historical::{HistoricalRpc, HistoricalRpcClient}, miner::{MinerApiExtServer, OpMinerExtApi}, witness::{DebugExecutionWitnessApiServer, OpDebugWitnessApi}, - SequencerClient, }; use reth_optimism_storage::OpStorage; use reth_optimism_txpool::{ - supervisor::{SupervisorClient, DEFAULT_SUPERVISOR_URL}, OpPooledTx, + supervisor::{DEFAULT_SUPERVISOR_URL, SupervisorClient}, }; -use reth_provider::{providers::ProviderFactoryBuilder, CanonStateSubscriptions}; -use reth_rpc_api::{eth::RpcTypes, DebugApiServer, L2EthApiExtServer}; +use reth_provider::{CanonStateSubscriptions, providers::ProviderFactoryBuilder}; +use reth_rpc_api::{DebugApiServer, L2EthApiExtServer, eth::RpcTypes}; use reth_rpc_server_types::RethRpcModule; use reth_tracing::tracing::{debug, info}; use reth_transaction_pool::{ - blobstore::DiskFileBlobStore, EthPoolTransaction, PoolPooledTx, PoolTransaction, - TransactionPool, TransactionValidationTaskExecutor, + EthPoolTransaction, PoolPooledTx, PoolTransaction, TransactionPool, + TransactionValidationTaskExecutor, blobstore::DiskFileBlobStore, }; use reth_trie_common::KeccakKeyHasher; use serde::de::DeserializeOwned; @@ -76,10 +76,10 @@ pub trait OpNodeTypes: /// Blanket impl for all node types that conform to the Optimism spec. impl OpNodeTypes for N where N: NodeTypes< - Payload = OpEngineTypes, - ChainSpec: OpHardforks + Hardforks, - Primitives = OpPrimitives, - > + Payload = OpEngineTypes, + ChainSpec: OpHardforks + Hardforks, + Primitives = OpPrimitives, + > { } @@ -87,16 +87,6 @@ impl OpNodeTypes for N where /// data. pub trait OpFullNodeTypes: NodeTypes< - ChainSpec: OpHardforks, - Primitives: OpPayloadPrimitives, - Storage = OpStorage, - Payload: EngineTypes, -> -{ -} - -impl OpFullNodeTypes for N where - N: NodeTypes< ChainSpec: OpHardforks, Primitives: OpPayloadPrimitives, Storage = OpStorage, @@ -105,6 +95,16 @@ impl OpFullNodeTypes for N where { } +impl OpFullNodeTypes for N where + N: NodeTypes< + ChainSpec: OpHardforks, + Primitives: OpPayloadPrimitives, + Storage = OpStorage, + Payload: EngineTypes, + > +{ +} + /// Type configuration for a regular Optimism node. #[derive(Debug, Default, Clone)] #[non_exhaustive] @@ -496,20 +496,20 @@ impl NodeAddOns for OpAddOns where N: FullNodeComponents< - Types: NodeTypes< - ChainSpec: OpHardforks, - Primitives: OpPayloadPrimitives, - Payload: PayloadTypes, - >, - Evm: ConfigureEvm< - NextBlockEnvCtx: BuildNextEnv< - Attrs, - HeaderTy, - ::ChainSpec, + Types: NodeTypes< + ChainSpec: OpHardforks, + Primitives: OpPayloadPrimitives, + Payload: PayloadTypes, + >, + Evm: ConfigureEvm< + NextBlockEnvCtx: BuildNextEnv< + Attrs, + HeaderTy, + ::ChainSpec, + >, >, + Pool: TransactionPool, >, - Pool: TransactionPool, - >, EthB: EthApiBuilder, PVB: Send, EB: EngineApiBuilder, @@ -625,19 +625,19 @@ impl RethRpcAddOns for OpAddOns where N: FullNodeComponents< - Types: NodeTypes< - ChainSpec: OpHardforks, - Primitives: OpPayloadPrimitives, - Payload: PayloadTypes, - >, - Evm: ConfigureEvm< - NextBlockEnvCtx: BuildNextEnv< - Attrs, - HeaderTy, - ::ChainSpec, + Types: NodeTypes< + ChainSpec: OpHardforks, + Primitives: OpPayloadPrimitives, + Payload: PayloadTypes, + >, + Evm: ConfigureEvm< + NextBlockEnvCtx: BuildNextEnv< + Attrs, + HeaderTy, + ::ChainSpec, + >, >, >, - >, <::Pool as TransactionPool>::Transaction: OpPooledTx, EthB: EthApiBuilder, PVB: PayloadValidatorBuilder, @@ -1110,15 +1110,15 @@ impl OpPayloadBuilder { impl PayloadBuilderBuilder for OpPayloadBuilder where Node: FullNodeTypes< - Provider: ChainSpecProvider, - Types: NodeTypes< - Primitives: OpPayloadPrimitives, - Payload: PayloadTypes< - BuiltPayload = OpBuiltPayload>, - PayloadBuilderAttributes = Attrs, + Provider: ChainSpecProvider, + Types: NodeTypes< + Primitives: OpPayloadPrimitives, + Payload: PayloadTypes< + BuiltPayload = OpBuiltPayload>, + PayloadBuilderAttributes = Attrs, + >, >, >, - >, Evm: ConfigureEvm< Primitives = PrimitivesTy, NextBlockEnvCtx: BuildNextEnv< diff --git a/op-reth/crates/node/src/rpc.rs b/rust/op-reth/crates/node/src/rpc.rs similarity index 97% rename from op-reth/crates/node/src/rpc.rs rename to rust/op-reth/crates/node/src/rpc.rs index 33de471753c14..7268fd4f8091b 100644 --- a/op-reth/crates/node/src/rpc.rs +++ b/rust/op-reth/crates/node/src/rpc.rs @@ -10,10 +10,10 @@ //! use op_alloy_network::Optimism; //! use reth_db::test_utils::create_test_rw_db_with_path; //! use reth_node_builder::{ +//! ConsensusEngineHandle, LaunchContext, NodeConfig, RethFullAdapter, //! components::ComponentsBuilder, //! hooks::OnComponentInitializedHook, //! rpc::{EthApiBuilder, EthApiCtx}, -//! ConsensusEngineHandle, LaunchContext, NodeConfig, RethFullAdapter, //! }; //! use reth_optimism_chainspec::OP_SEPOLIA; //! use reth_optimism_evm::OpEvmConfig; @@ -23,7 +23,7 @@ //! use reth_provider::providers::BlockchainProvider; //! use reth_rpc::TraceApi; //! use reth_rpc_eth_types::{EthConfig, EthStateCache}; -//! use reth_tasks::{pool::BlockingTaskGuard, TaskManager}; +//! use reth_tasks::{TaskManager, pool::BlockingTaskGuard}; //! use reth_trie_db::ChangesetCache; //! use std::sync::Arc; //! @@ -96,7 +96,7 @@ use reth_node_api::{ AddOnsContext, EngineApiValidator, EngineTypes, FullNodeComponents, NodeTypes, }; use reth_node_builder::rpc::{EngineApiBuilder, PayloadValidatorBuilder}; -use reth_node_core::version::{version_metadata, CLIENT_CODE}; +use reth_node_core::version::{CLIENT_CODE, version_metadata}; use reth_optimism_rpc::engine::OP_ENGINE_CAPABILITIES; use reth_payload_builder::PayloadStore; use reth_rpc_engine_api::{EngineApi, EngineCapabilities}; diff --git a/op-reth/crates/node/src/utils.rs b/rust/op-reth/crates/node/src/utils.rs similarity index 96% rename from op-reth/crates/node/src/utils.rs rename to rust/op-reth/crates/node/src/utils.rs index 42104c9df73bb..fa29c8d00c76b 100644 --- a/op-reth/crates/node/src/utils.rs +++ b/rust/op-reth/crates/node/src/utils.rs @@ -3,7 +3,7 @@ use alloy_genesis::Genesis; use alloy_primitives::{Address, B256}; use alloy_rpc_types_engine::PayloadAttributes; use reth_e2e_test_utils::{ - transaction::TransactionTestContext, wallet::Wallet, NodeHelperType, TmpDB, + NodeHelperType, TmpDB, transaction::TransactionTestContext, wallet::Wallet, }; use reth_node_api::NodeTypesWithDBAdapter; use reth_optimism_chainspec::OpChainSpecBuilder; diff --git a/op-reth/crates/node/src/version.rs b/rust/op-reth/crates/node/src/version.rs similarity index 100% rename from op-reth/crates/node/src/version.rs rename to rust/op-reth/crates/node/src/version.rs diff --git a/op-reth/crates/node/tests/assets/genesis.json b/rust/op-reth/crates/node/tests/assets/genesis.json similarity index 100% rename from op-reth/crates/node/tests/assets/genesis.json rename to rust/op-reth/crates/node/tests/assets/genesis.json diff --git a/op-reth/crates/node/tests/e2e-testsuite/main.rs b/rust/op-reth/crates/node/tests/e2e-testsuite/main.rs similarity index 100% rename from op-reth/crates/node/tests/e2e-testsuite/main.rs rename to rust/op-reth/crates/node/tests/e2e-testsuite/main.rs diff --git a/op-reth/crates/node/tests/e2e-testsuite/p2p.rs b/rust/op-reth/crates/node/tests/e2e-testsuite/p2p.rs similarity index 100% rename from op-reth/crates/node/tests/e2e-testsuite/p2p.rs rename to rust/op-reth/crates/node/tests/e2e-testsuite/p2p.rs diff --git a/op-reth/crates/node/tests/e2e-testsuite/testsuite.rs b/rust/op-reth/crates/node/tests/e2e-testsuite/testsuite.rs similarity index 96% rename from op-reth/crates/node/tests/e2e-testsuite/testsuite.rs rename to rust/op-reth/crates/node/tests/e2e-testsuite/testsuite.rs index b031b3a82665f..a95034778cd9b 100644 --- a/op-reth/crates/node/tests/e2e-testsuite/testsuite.rs +++ b/rust/op-reth/crates/node/tests/e2e-testsuite/testsuite.rs @@ -1,12 +1,12 @@ -use alloy_primitives::{Address, B256, B64}; +use alloy_primitives::{Address, B64, B256}; use eyre::Result; use op_alloy_rpc_types_engine::OpPayloadAttributes; use reth_e2e_test_utils::testsuite::{ + TestBuilder, actions::AssertMineBlock, setup::{NetworkSetup, Setup}, - TestBuilder, }; -use reth_optimism_chainspec::{OpChainSpecBuilder, OP_MAINNET}; +use reth_optimism_chainspec::{OP_MAINNET, OpChainSpecBuilder}; use reth_optimism_node::{OpEngineTypes, OpNode}; use std::sync::Arc; diff --git a/op-reth/crates/node/tests/it/builder.rs b/rust/op-reth/crates/node/tests/it/builder.rs similarity index 91% rename from op-reth/crates/node/tests/it/builder.rs rename to rust/op-reth/crates/node/tests/it/builder.rs index 3d4eda33f7553..8a30faaa6b716 100644 --- a/op-reth/crates/node/tests/it/builder.rs +++ b/rust/op-reth/crates/node/tests/it/builder.rs @@ -1,30 +1,30 @@ //! Node builder setup tests. -use alloy_primitives::{address, Bytes}; +use alloy_primitives::{Bytes, address}; use core::marker::PhantomData; use op_revm::{ - precompiles::OpPrecompiles, OpContext, OpHaltReason, OpSpecId, OpTransaction, - OpTransactionError, + OpContext, OpHaltReason, OpSpecId, OpTransaction, OpTransactionError, + precompiles::OpPrecompiles, }; use reth_db::test_utils::create_test_rw_db; -use reth_evm::{precompiles::PrecompilesMap, Database, Evm, EvmEnv, EvmFactory}; +use reth_evm::{Database, Evm, EvmEnv, EvmFactory, precompiles::PrecompilesMap}; use reth_node_api::{FullNodeComponents, NodeTypesWithDBAdapter}; use reth_node_builder::{ - components::ExecutorBuilder, BuilderContext, FullNodeTypes, Node, NodeBuilder, NodeConfig, - NodeTypes, + BuilderContext, FullNodeTypes, Node, NodeBuilder, NodeConfig, NodeTypes, + components::ExecutorBuilder, }; -use reth_optimism_chainspec::{OpChainSpec, BASE_MAINNET, OP_SEPOLIA}; +use reth_optimism_chainspec::{BASE_MAINNET, OP_SEPOLIA, OpChainSpec}; use reth_optimism_evm::{OpBlockExecutorFactory, OpEvm, OpEvmFactory, OpRethReceiptBuilder}; -use reth_optimism_node::{args::RollupArgs, OpEvmConfig, OpExecutorBuilder, OpNode}; +use reth_optimism_node::{OpEvmConfig, OpExecutorBuilder, OpNode, args::RollupArgs}; use reth_optimism_primitives::OpPrimitives; use reth_provider::providers::BlockchainProvider; use revm::{ + Inspector, context::{BlockEnv, ContextTr, TxEnv}, context_interface::result::EVMError, inspector::NoOpInspector, interpreter::interpreter::EthInterpreter, precompile::{Precompile, PrecompileId, PrecompileOutput, PrecompileResult, Precompiles}, - Inspector, }; use std::sync::OnceLock; diff --git a/op-reth/crates/node/tests/it/custom_genesis.rs b/rust/op-reth/crates/node/tests/it/custom_genesis.rs similarity index 82% rename from op-reth/crates/node/tests/it/custom_genesis.rs rename to rust/op-reth/crates/node/tests/it/custom_genesis.rs index da194566507aa..635153746a4f1 100644 --- a/op-reth/crates/node/tests/it/custom_genesis.rs +++ b/rust/op-reth/crates/node/tests/it/custom_genesis.rs @@ -11,8 +11,8 @@ use reth_e2e_test_utils::{ use reth_node_builder::{EngineNodeLauncher, Node, NodeBuilder, NodeConfig}; use reth_node_core::args::DatadirArgs; use reth_optimism_chainspec::OpChainSpecBuilder; -use reth_optimism_node::{utils::optimism_payload_attributes, OpNode}; -use reth_provider::{providers::BlockchainProvider, HeaderProvider, StageCheckpointReader}; +use reth_optimism_node::{OpNode, utils::optimism_payload_attributes}; +use reth_provider::{HeaderProvider, StageCheckpointReader, providers::BlockchainProvider}; use reth_stages_types::StageId; use std::sync::Arc; use tokio::sync::Mutex; @@ -36,10 +36,13 @@ async fn test_op_node_custom_genesis_number() { let wallet = Arc::new(Mutex::new(Wallet::default().with_chain_id(chain_spec.chain().into()))); // Configure and launch the node - let config = NodeConfig::new(chain_spec.clone()).with_datadir_args(DatadirArgs { - datadir: reth_db::test_utils::tempdir_path().into(), - ..Default::default() - }); + let mut config = + NodeConfig::new(chain_spec.clone()).with_unused_ports().with_datadir_args(DatadirArgs { + datadir: reth_db::test_utils::tempdir_path().into(), + ..Default::default() + }); + config.network.discovery.discv5_port = 0; + config.network.discovery.discv5_port_ipv6 = 0; let db = create_test_rw_db_with_path( config .datadir @@ -70,23 +73,22 @@ async fn test_op_node_custom_genesis_number() { // Verify stage checkpoints are initialized to genesis block number (1000) for stage in StageId::ALL { let checkpoint = node.inner.provider.get_stage_checkpoint(stage).unwrap(); - assert!(checkpoint.is_some(), "Stage {:?} checkpoint should exist", stage); + assert!(checkpoint.is_some(), "Stage {stage:?} checkpoint should exist"); assert_eq!( checkpoint.unwrap().block_number, 1000, - "Stage {:?} checkpoint should be at genesis block 1000", - stage + "Stage {stage:?} checkpoint should be at genesis block 1000" ); } // Query genesis block should succeed let genesis_header = node.inner.provider.header_by_number(genesis_number).unwrap(); - assert!(genesis_header.is_some(), "Genesis block at {} should exist", genesis_number); + assert!(genesis_header.is_some(), "Genesis block at {genesis_number} should exist"); // Query blocks before genesis should return None for block_num in [0, 1, genesis_number - 1] { let header = node.inner.provider.header_by_number(block_num).unwrap(); - assert!(header.is_none(), "Block {} before genesis should not exist", block_num); + assert!(header.is_none(), "Block {block_num} before genesis should not exist"); } // Advance the chain with a single block diff --git a/op-reth/crates/node/tests/it/main.rs b/rust/op-reth/crates/node/tests/it/main.rs similarity index 100% rename from op-reth/crates/node/tests/it/main.rs rename to rust/op-reth/crates/node/tests/it/main.rs diff --git a/op-reth/crates/node/tests/it/priority.rs b/rust/op-reth/crates/node/tests/it/priority.rs similarity index 94% rename from op-reth/crates/node/tests/it/priority.rs rename to rust/op-reth/crates/node/tests/it/priority.rs index f831c65ca93e7..f6ff043966f23 100644 --- a/op-reth/crates/node/tests/it/priority.rs +++ b/rust/op-reth/crates/node/tests/it/priority.rs @@ -1,6 +1,6 @@ //! Node builder test that customizes priority of transactions in the block. -use alloy_consensus::{transaction::Recovered, SignableTransaction, Transaction, TxEip1559}; +use alloy_consensus::{SignableTransaction, Transaction, TxEip1559, transaction::Recovered}; use alloy_genesis::Genesis; use alloy_network::TxSignerSync; use alloy_primitives::{Address, ChainId, TxKind}; @@ -11,12 +11,13 @@ use reth_e2e_test_utils::{ }; use reth_node_api::FullNodeTypes; use reth_node_builder::{ - components::{BasicPayloadServiceBuilder, ComponentsBuilder}, EngineNodeLauncher, Node, NodeBuilder, NodeConfig, + components::{BasicPayloadServiceBuilder, ComponentsBuilder}, }; use reth_node_core::args::DatadirArgs; use reth_optimism_chainspec::OpChainSpecBuilder; use reth_optimism_node::{ + OpNode, args::RollupArgs, node::{ OpConsensusBuilder, OpExecutorBuilder, OpNetworkBuilder, OpNodeComponentBuilder, @@ -24,7 +25,6 @@ use reth_optimism_node::{ }, txpool::OpPooledTransaction, utils::optimism_payload_attributes, - OpNode, }; use reth_optimism_payload_builder::builder::OpPayloadTransactions; use reth_payload_util::{ @@ -120,10 +120,13 @@ async fn test_custom_block_priority_config() { let wallet = Arc::new(Mutex::new(Wallet::default().with_chain_id(chain_spec.chain().into()))); // Configure and launch the node. - let config = NodeConfig::new(chain_spec).with_datadir_args(DatadirArgs { - datadir: reth_db::test_utils::tempdir_path().into(), - ..Default::default() - }); + let mut config = + NodeConfig::new(chain_spec).with_unused_ports().with_datadir_args(DatadirArgs { + datadir: reth_db::test_utils::tempdir_path().into(), + ..Default::default() + }); + config.network.discovery.discv5_port = 0; + config.network.discovery.discv5_port_ipv6 = 0; let db = create_test_rw_db_with_path( config .datadir diff --git a/op-reth/crates/node/tests/it/rpc.rs b/rust/op-reth/crates/node/tests/it/rpc.rs similarity index 80% rename from op-reth/crates/node/tests/it/rpc.rs rename to rust/op-reth/crates/node/tests/it/rpc.rs index 8869975ea9cce..72aff692e32e4 100644 --- a/op-reth/crates/node/tests/it/rpc.rs +++ b/rust/op-reth/crates/node/tests/it/rpc.rs @@ -21,11 +21,14 @@ async fn test_admin_external_ip() -> eyre::Result<()> { let external_ip = "10.64.128.71".parse().unwrap(); // Node setup + let mut network_args = NetworkArgs::default() + .with_unused_ports() + .with_nat_resolver(NatResolver::ExternalIp(external_ip)); + network_args.discovery.discv5_port = 0; + network_args.discovery.discv5_port_ipv6 = 0; let node_config = NodeConfig::test() .map_chain(BASE_MAINNET.clone()) - .with_network( - NetworkArgs::default().with_nat_resolver(NatResolver::ExternalIp(external_ip)), - ) + .with_network(network_args) .with_rpc(RpcServerArgs::default().with_unused_ports().with_http()); let NodeHandle { node, node_exit_future: _ } = diff --git a/op-reth/crates/payload/Cargo.toml b/rust/op-reth/crates/payload/Cargo.toml similarity index 92% rename from op-reth/crates/payload/Cargo.toml rename to rust/op-reth/crates/payload/Cargo.toml index 0674ed7cf7309..15d75620e191b 100644 --- a/op-reth/crates/payload/Cargo.toml +++ b/rust/op-reth/crates/payload/Cargo.toml @@ -1,11 +1,11 @@ [package] name = "reth-optimism-payload-builder" -version.workspace = true +version = "1.10.2" edition.workspace = true rust-version.workspace = true license.workspace = true -homepage.workspace = true -repository.workspace = true +homepage = "https://paradigmxyz.github.io/reth" +repository = "https://github.com/paradigmxyz/reth" description = "A payload builder for op-reth that builds optimistic payloads." [lints] diff --git a/op-reth/crates/payload/src/builder.rs b/rust/op-reth/crates/payload/src/builder.rs similarity index 95% rename from op-reth/crates/payload/src/builder.rs rename to rust/op-reth/crates/payload/src/builder.rs index 8503e020a1c88..2477a8bf9a904 100644 --- a/op-reth/crates/payload/src/builder.rs +++ b/rust/op-reth/crates/payload/src/builder.rs @@ -1,7 +1,7 @@ //! Optimism payload builder implementation. use crate::{ - config::OpBuilderConfig, error::OpPayloadBuilderError, payload::OpBuiltPayload, OpAttributes, - OpPayloadBuilderAttributes, OpPayloadPrimitives, + OpAttributes, OpPayloadBuilderAttributes, OpPayloadPrimitives, config::OpBuilderConfig, + error::OpPayloadBuilderError, payload::OpBuiltPayload, }; use alloy_consensus::{BlockHeader, Transaction, Typed2718}; use alloy_evm::Evm as AlloyEvm; @@ -11,20 +11,20 @@ use alloy_rpc_types_engine::PayloadId; use reth_basic_payload_builder::*; use reth_chainspec::{ChainSpecProvider, EthChainSpec}; use reth_evm::{ + ConfigureEvm, Database, block::BlockExecutorFor, execute::{ BlockBuilder, BlockBuilderOutcome, BlockExecutionError, BlockExecutor, BlockValidationError, }, - op_revm::{constants::L1_BLOCK_CONTRACT, L1BlockInfo}, - ConfigureEvm, Database, + op_revm::{L1BlockInfo, constants::L1_BLOCK_CONTRACT}, }; use reth_execution_types::BlockExecutionOutput; use reth_optimism_forks::OpHardforks; -use reth_optimism_primitives::{transaction::OpTransaction, L2_TO_L1_MESSAGE_PASSER_ADDRESS}; +use reth_optimism_primitives::{L2_TO_L1_MESSAGE_PASSER_ADDRESS, transaction::OpTransaction}; use reth_optimism_txpool::{ - estimated_da_size::DataAvailabilitySized, - interop::{is_valid_interop, MaybeInteropTransaction}, OpPooledTx, + estimated_da_size::DataAvailabilitySized, + interop::{MaybeInteropTransaction, is_valid_interop}, }; use reth_payload_builder_primitives::PayloadBuilderError; use reth_payload_primitives::{BuildNextEnv, BuiltPayloadExecutedBlock, PayloadBuilderAttributes}; @@ -36,7 +36,7 @@ use reth_revm::{ cancelled::CancelOnDrop, database::StateProviderDatabase, db::State, witness::ExecutionWitnessRecord, }; -use reth_storage_api::{errors::ProviderError, StateProvider, StateProviderFactory}; +use reth_storage_api::{StateProvider, StateProviderFactory, errors::ProviderError}; use reth_transaction_pool::{BestTransactionsAttributes, PoolTransaction, TransactionPool}; use revm::context::{Block, BlockEnv}; use std::{marker::PhantomData, sync::Arc}; @@ -157,9 +157,9 @@ where Client: StateProviderFactory + ChainSpecProvider, N: OpPayloadPrimitives, Evm: ConfigureEvm< - Primitives = N, - NextBlockEnvCtx: BuildNextEnv, - >, + Primitives = N, + NextBlockEnvCtx: BuildNextEnv, + >, Attrs: OpAttributes>, { /// Constructs an Optimism payload from the transactions sent via the @@ -241,9 +241,9 @@ where Client: StateProviderFactory + ChainSpecProvider + Clone, Pool: TransactionPool>, Evm: ConfigureEvm< - Primitives = N, - NextBlockEnvCtx: BuildNextEnv, - >, + Primitives = N, + NextBlockEnvCtx: BuildNextEnv, + >, Txs: OpPayloadTransactions, Attrs: OpAttributes, { @@ -324,9 +324,9 @@ impl OpBuilder<'_, Txs> { ) -> Result>, PayloadBuilderError> where Evm: ConfigureEvm< - Primitives = N, - NextBlockEnvCtx: BuildNextEnv, - >, + Primitives = N, + NextBlockEnvCtx: BuildNextEnv, + >, ChainSpec: EthChainSpec + OpHardforks, N: OpPayloadPrimitives, Txs: @@ -358,13 +358,13 @@ impl OpBuilder<'_, Txs> { if !ctx.attributes().no_tx_pool() { let best_txs = best(ctx.best_transaction_attributes(builder.evm_mut().block())); if ctx.execute_best_transactions(&mut info, &mut builder, best_txs)?.is_some() { - return Ok(BuildOutcomeKind::Cancelled) + return Ok(BuildOutcomeKind::Cancelled); } // check if the new payload is even more valuable if !ctx.is_better_payload(info.total_fees) { // can skip building the block - return Ok(BuildOutcomeKind::Aborted { fees: info.total_fees }) + return Ok(BuildOutcomeKind::Aborted { fees: info.total_fees }); } } @@ -409,9 +409,9 @@ impl OpBuilder<'_, Txs> { ) -> Result where Evm: ConfigureEvm< - Primitives = N, - NextBlockEnvCtx: BuildNextEnv, - >, + Primitives = N, + NextBlockEnvCtx: BuildNextEnv, + >, ChainSpec: EthChainSpec + OpHardforks, N: OpPayloadPrimitives, Txs: PayloadTransactions>, @@ -558,9 +558,9 @@ pub struct OpPayloadBuilderCtx< impl OpPayloadBuilderCtx where Evm: ConfigureEvm< - Primitives: OpPayloadPrimitives, - NextBlockEnvCtx: BuildNextEnv, ChainSpec>, - >, + Primitives: OpPayloadPrimitives, + NextBlockEnvCtx: BuildNextEnv, ChainSpec>, + >, ChainSpec: EthChainSpec + OpHardforks, Attrs: OpAttributes>, { @@ -598,9 +598,9 @@ where db: &'a mut State, ) -> Result< impl BlockBuilder< - Primitives = Evm::Primitives, - Executor: BlockExecutorFor<'a, Evm::BlockExecutorFactory, DB>, - > + 'a, + Primitives = Evm::Primitives, + Executor: BlockExecutorFor<'a, Evm::BlockExecutorFactory, DB>, + > + 'a, PayloadBuilderError, > { self.evm_config @@ -647,11 +647,11 @@ where .. })) => { trace!(target: "payload_builder", %error, ?sequencer_tx, "Error in sequencer transaction, skipping."); - continue + continue; } Err(err) => { // this is an error that we should treat as fatal for this attempt - return Err(PayloadBuilderError::EvmExecutionError(Box::new(err))) + return Err(PayloadBuilderError::EvmExecutionError(Box::new(err))); } }; @@ -713,13 +713,13 @@ where // invalid which also removes all dependent transaction from // the iterator before we can continue best_txs.mark_invalid(tx.signer(), tx.nonce()); - continue + continue; } // A sequencer's block should never contain blob or deposit transactions from the pool. if tx.is_eip4844() || tx.is_deposit() { best_txs.mark_invalid(tx.signer(), tx.nonce()); - continue + continue; } // We skip invalid cross chain txs, they would be removed on the next block update in @@ -728,11 +728,11 @@ where !is_valid_interop(interop, self.config.attributes.timestamp()) { best_txs.mark_invalid(tx.signer(), tx.nonce()); - continue + continue; } // check if the job was cancelled, if so we can exit early if self.cancel.is_cancelled() { - return Ok(Some(())) + return Ok(Some(())); } let gas_used = match builder.execute_transaction(tx.clone()) { @@ -750,11 +750,11 @@ where trace!(target: "payload_builder", %error, ?tx, "skipping invalid transaction and its descendants"); best_txs.mark_invalid(tx.signer(), tx.nonce()); } - continue + continue; } Err(err) => { // this is an error that we should treat as fatal for this attempt - return Err(PayloadBuilderError::EvmExecutionError(Box::new(err))) + return Err(PayloadBuilderError::EvmExecutionError(Box::new(err))); } }; diff --git a/op-reth/crates/payload/src/config.rs b/rust/op-reth/crates/payload/src/config.rs similarity index 92% rename from op-reth/crates/payload/src/config.rs rename to rust/op-reth/crates/payload/src/config.rs index c79ee0ece4ba1..b5fb48e50b143 100644 --- a/op-reth/crates/payload/src/config.rs +++ b/rust/op-reth/crates/payload/src/config.rs @@ -1,6 +1,6 @@ //! Additional configuration for the OP builder -use std::sync::{atomic::AtomicU64, Arc}; +use std::sync::{Arc, atomic::AtomicU64}; /// Settings for the OP builder. #[derive(Debug, Clone, Default)] @@ -20,11 +20,7 @@ impl OpBuilderConfig { /// Returns the Data Availability configuration for the OP builder, if it has configured /// constraints. pub fn constrained_da_config(&self) -> Option<&OpDAConfig> { - if self.da_config.is_empty() { - None - } else { - Some(&self.da_config) - } + if self.da_config.is_empty() { None } else { Some(&self.da_config) } } } @@ -53,21 +49,13 @@ impl OpDAConfig { /// Returns the max allowed data availability size per transactions, if any. pub fn max_da_tx_size(&self) -> Option { let val = self.inner.max_da_tx_size.load(std::sync::atomic::Ordering::Relaxed); - if val == 0 { - None - } else { - Some(val) - } + if val == 0 { None } else { Some(val) } } /// Returns the max allowed data availability size per block, if any. pub fn max_da_block_size(&self) -> Option { let val = self.inner.max_da_block_size.load(std::sync::atomic::Ordering::Relaxed); - if val == 0 { - None - } else { - Some(val) - } + if val == 0 { None } else { Some(val) } } /// Sets the maximum data availability size currently allowed for inclusion. 0 means no maximum. @@ -124,11 +112,7 @@ impl OpGasLimitConfig { /// Returns the gas limit for a transaction, if any. pub fn gas_limit(&self) -> Option { let val = self.gas_limit.load(std::sync::atomic::Ordering::Relaxed); - if val == 0 { - None - } else { - Some(val) - } + if val == 0 { None } else { Some(val) } } /// Sets the gas limit for a transaction. 0 means use the default gas limit. pub fn set_gas_limit(&self, gas_limit: u64) { diff --git a/op-reth/crates/payload/src/error.rs b/rust/op-reth/crates/payload/src/error.rs similarity index 100% rename from op-reth/crates/payload/src/error.rs rename to rust/op-reth/crates/payload/src/error.rs diff --git a/op-reth/crates/payload/src/lib.rs b/rust/op-reth/crates/payload/src/lib.rs similarity index 95% rename from op-reth/crates/payload/src/lib.rs rename to rust/op-reth/crates/payload/src/lib.rs index 57f21ef967fc5..6ccd90ec3732b 100644 --- a/op-reth/crates/payload/src/lib.rs +++ b/rust/op-reth/crates/payload/src/lib.rs @@ -17,7 +17,7 @@ pub mod error; pub mod payload; use op_alloy_rpc_types_engine::OpExecutionData; pub use payload::{ - payload_id_optimism, OpBuiltPayload, OpPayloadAttributes, OpPayloadBuilderAttributes, + OpBuiltPayload, OpPayloadAttributes, OpPayloadBuilderAttributes, payload_id_optimism, }; mod traits; use reth_optimism_primitives::OpPrimitives; diff --git a/op-reth/crates/payload/src/payload.rs b/rust/op-reth/crates/payload/src/payload.rs similarity index 99% rename from op-reth/crates/payload/src/payload.rs rename to rust/op-reth/crates/payload/src/payload.rs index 3f7b3d401ec6e..516a598ab1e28 100644 --- a/op-reth/crates/payload/src/payload.rs +++ b/rust/op-reth/crates/payload/src/payload.rs @@ -6,13 +6,13 @@ use alloy_consensus::{Block, BlockHeader}; use alloy_eips::{ eip1559::BaseFeeParams, eip2718::Decodable2718, eip4895::Withdrawals, eip7685::Requests, }; -use alloy_primitives::{keccak256, Address, Bytes, B256, B64, U256}; +use alloy_primitives::{Address, B64, B256, Bytes, U256, keccak256}; use alloy_rlp::Encodable; use alloy_rpc_types_engine::{ BlobsBundleV1, ExecutionPayloadEnvelopeV2, ExecutionPayloadFieldV2, ExecutionPayloadV1, ExecutionPayloadV3, PayloadId, }; -use op_alloy_consensus::{encode_holocene_extra_data, encode_jovian_extra_data, EIP1559ParamError}; +use op_alloy_consensus::{EIP1559ParamError, encode_holocene_extra_data, encode_jovian_extra_data}; use op_alloy_rpc_types_engine::{ OpExecutionPayloadEnvelopeV3, OpExecutionPayloadEnvelopeV4, OpExecutionPayloadV4, }; @@ -445,7 +445,7 @@ where mod tests { use super::*; use crate::OpPayloadAttributes; - use alloy_primitives::{address, b256, bytes, FixedBytes}; + use alloy_primitives::{FixedBytes, address, b256, bytes}; use alloy_rpc_types_engine::PayloadAttributes; use reth_optimism_primitives::OpTransactionSigned; use reth_payload_primitives::EngineApiMessageVersion; diff --git a/op-reth/crates/payload/src/traits.rs b/rust/op-reth/crates/payload/src/traits.rs similarity index 81% rename from op-reth/crates/payload/src/traits.rs rename to rust/op-reth/crates/payload/src/traits.rs index 485b8d1df9e85..bd371ee1a0f1e 100644 --- a/op-reth/crates/payload/src/traits.rs +++ b/rust/op-reth/crates/payload/src/traits.rs @@ -1,5 +1,5 @@ use alloy_consensus::BlockBody; -use reth_optimism_primitives::{transaction::OpTransaction, DepositReceipt}; +use reth_optimism_primitives::{DepositReceipt, transaction::OpTransaction}; use reth_payload_primitives::PayloadBuilderAttributes; use reth_primitives_traits::{FullBlockHeader, NodePrimitives, SignedTransaction, WithEncoded}; @@ -8,11 +8,11 @@ use crate::OpPayloadBuilderAttributes; /// Helper trait to encapsulate common bounds on [`NodePrimitives`] for OP payload builder. pub trait OpPayloadPrimitives: NodePrimitives< - Receipt: DepositReceipt, - SignedTx = Self::_TX, - BlockBody = BlockBody, - BlockHeader = Self::_Header, -> + Receipt: DepositReceipt, + SignedTx = Self::_TX, + BlockBody = BlockBody, + BlockHeader = Self::_Header, + > { /// Helper AT to bound [`NodePrimitives::Block`] type without causing bound cycle. type _TX: SignedTransaction + OpTransaction; @@ -24,11 +24,11 @@ impl OpPayloadPrimitives for T where Tx: SignedTransaction + OpTransaction, T: NodePrimitives< - SignedTx = Tx, - Receipt: DepositReceipt, - BlockBody = BlockBody, - BlockHeader = Header, - >, + SignedTx = Tx, + Receipt: DepositReceipt, + BlockBody = BlockBody, + BlockHeader = Header, + >, Header: FullBlockHeader, { type _TX = Tx; diff --git a/op-reth/crates/payload/src/validator.rs b/rust/op-reth/crates/payload/src/validator.rs similarity index 99% rename from op-reth/crates/payload/src/validator.rs rename to rust/op-reth/crates/payload/src/validator.rs index fa0d610469c57..88b424eb6bd4a 100644 --- a/op-reth/crates/payload/src/validator.rs +++ b/rust/op-reth/crates/payload/src/validator.rs @@ -76,7 +76,8 @@ where return Err(PayloadError::BlockHash { execution: sealed_block.hash(), consensus: expected_hash, - })? + } + .into()); } shanghai::ensure_well_formed_fields( diff --git a/op-reth/crates/primitives/Cargo.toml b/rust/op-reth/crates/primitives/Cargo.toml similarity index 91% rename from op-reth/crates/primitives/Cargo.toml rename to rust/op-reth/crates/primitives/Cargo.toml index ef83fe3ddbca2..1a26b2c4a3a70 100644 --- a/op-reth/crates/primitives/Cargo.toml +++ b/rust/op-reth/crates/primitives/Cargo.toml @@ -1,11 +1,11 @@ [package] name = "reth-optimism-primitives" -version.workspace = true +version = "1.10.2" edition.workspace = true rust-version.workspace = true license.workspace = true -homepage.workspace = true -repository.workspace = true +homepage = "https://paradigmxyz.github.io/reth" +repository = "https://github.com/paradigmxyz/reth" description = "OP primitive types" [lints] @@ -43,7 +43,7 @@ bincode.workspace = true proptest-arbitrary-interop.workspace = true proptest.workspace = true rand_08.workspace = true -secp256k1 = { workspace = true, features = ["rand"] } +secp256k1 = { workspace = true, features = ["rand", "std", "serde"] } [features] default = ["std"] @@ -57,7 +57,6 @@ std = [ "serde_json/std", "serde_with?/std", "alloy-eips/std", - "secp256k1/std", "bytes/std", "reth-zstd-compressors/std", ] @@ -75,7 +74,6 @@ serde = [ "alloy-eips/serde", "rand/serde", "rand_08/serde", - "secp256k1/serde", "bytes/serde", "reth-codecs/serde", ] diff --git a/op-reth/crates/primitives/src/bedrock.rs b/rust/op-reth/crates/primitives/src/bedrock.rs similarity index 95% rename from op-reth/crates/primitives/src/bedrock.rs rename to rust/op-reth/crates/primitives/src/bedrock.rs index 5ab72cf0d7dbd..2ea1d4dfd5efd 100644 --- a/op-reth/crates/primitives/src/bedrock.rs +++ b/rust/op-reth/crates/primitives/src/bedrock.rs @@ -1,7 +1,7 @@ //! OP mainnet bedrock related data. -use alloy_consensus::{Header, EMPTY_OMMER_ROOT_HASH, EMPTY_ROOT_HASH}; -use alloy_primitives::{address, b256, bloom, bytes, B256, B64, U256}; +use alloy_consensus::{EMPTY_OMMER_ROOT_HASH, EMPTY_ROOT_HASH, Header}; +use alloy_primitives::{B64, B256, U256, address, b256, bloom, bytes}; /// Transaction 0x9ed8f713b2cc6439657db52dcd2fdb9cc944915428f3c6e2a7703e242b259cb9 in block 985, /// replayed in blocks: @@ -43,12 +43,12 @@ pub const BLOCK_NUMS_REPLAYED_TX: [u64; 6] = [ /// with replayed transaction happen to only contain the single transaction. pub fn is_dup_tx(block_number: u64) -> bool { if block_number > BLOCK_NUMS_REPLAYED_TX[5] { - return false + return false; } // these blocks just have one transaction! if BLOCK_NUMS_REPLAYED_TX.contains(&block_number) { - return true + return true; } false diff --git a/op-reth/crates/primitives/src/lib.rs b/rust/op-reth/crates/primitives/src/lib.rs similarity index 100% rename from op-reth/crates/primitives/src/lib.rs rename to rust/op-reth/crates/primitives/src/lib.rs diff --git a/op-reth/crates/primitives/src/receipt.rs b/rust/op-reth/crates/primitives/src/receipt.rs similarity index 96% rename from op-reth/crates/primitives/src/receipt.rs rename to rust/op-reth/crates/primitives/src/receipt.rs index 1ed7cde2c9144..9d8f0294f7f1a 100644 --- a/op-reth/crates/primitives/src/receipt.rs +++ b/rust/op-reth/crates/primitives/src/receipt.rs @@ -1,11 +1,11 @@ use alloc::vec::Vec; use alloy_consensus::{ - Eip2718EncodableReceipt, Eip658Value, Receipt, ReceiptWithBloom, RlpDecodableReceipt, + Eip658Value, Eip2718EncodableReceipt, Receipt, ReceiptWithBloom, RlpDecodableReceipt, RlpEncodableReceipt, TxReceipt, Typed2718, }; use alloy_eips::{ - eip2718::{Eip2718Result, IsTyped2718}, Decodable2718, Encodable2718, + eip2718::{Eip2718Result, IsTyped2718}, }; use alloy_primitives::{Bloom, Log}; use alloy_rlp::{BufMut, Decodable, Encodable, Header}; @@ -48,7 +48,7 @@ pub(super) mod serde_bincode_compat { /// ```rust /// use reth_optimism_primitives::OpReceipt; /// use reth_primitives_traits::serde_bincode_compat::SerdeBincodeCompat; - /// use serde::{de::DeserializeOwned, Deserialize, Serialize}; + /// use serde::{Deserialize, Serialize, de::DeserializeOwned}; /// use serde_with::serde_as; /// /// #[serde_as] @@ -121,7 +121,7 @@ pub(super) mod serde_bincode_compat { #[cfg(test)] mod tests { - use crate::{receipt::serde_bincode_compat, OpReceipt}; + use crate::{OpReceipt, receipt::serde_bincode_compat}; use arbitrary::Arbitrary; use rand::Rng; use serde::{Deserialize, Serialize}; @@ -145,8 +145,10 @@ pub(super) mod serde_bincode_compat { // // ensure we don't have an invalid poststate variant data.receipt.as_receipt_mut().status = success.into(); - let encoded = bincode::serialize(&data).unwrap(); - let decoded: Data = bincode::deserialize(&encoded).unwrap(); + let encoded = + bincode::serde::encode_to_vec(&data, bincode::config::standard()).unwrap(); + let (decoded, _): (Data, _) = + bincode::serde::decode_from_slice(&encoded, bincode::config::standard()).unwrap(); assert_eq!(decoded, data); } } @@ -156,7 +158,7 @@ pub(super) mod serde_bincode_compat { mod tests { use super::*; use alloy_eips::eip2718::Encodable2718; - use alloy_primitives::{address, b256, bytes, hex_literal::hex, Bytes}; + use alloy_primitives::{Bytes, address, b256, bytes, hex_literal::hex}; use alloy_rlp::Encodable; use reth_codecs::Compact; diff --git a/op-reth/crates/primitives/src/transaction/mod.rs b/rust/op-reth/crates/primitives/src/transaction/mod.rs similarity index 100% rename from op-reth/crates/primitives/src/transaction/mod.rs rename to rust/op-reth/crates/primitives/src/transaction/mod.rs diff --git a/op-reth/crates/primitives/src/transaction/signed.rs b/rust/op-reth/crates/primitives/src/transaction/signed.rs similarity index 95% rename from op-reth/crates/primitives/src/transaction/signed.rs rename to rust/op-reth/crates/primitives/src/transaction/signed.rs index 896e62b3045df..e33cef2945d45 100644 --- a/op-reth/crates/primitives/src/transaction/signed.rs +++ b/rust/op-reth/crates/primitives/src/transaction/signed.rs @@ -4,16 +4,16 @@ use crate::transaction::OpTransaction; use alloc::vec::Vec; use alloy_consensus::{ - transaction::{RlpEcdsaDecodableTx, RlpEcdsaEncodableTx, SignerRecoverable, TxHashRef}, Sealed, SignableTransaction, Signed, Transaction, TxEip1559, TxEip2930, TxEip7702, TxLegacy, Typed2718, + transaction::{RlpEcdsaDecodableTx, RlpEcdsaEncodableTx, SignerRecoverable, TxHashRef}, }; use alloy_eips::{ eip2718::{Decodable2718, Eip2718Error, Eip2718Result, Encodable2718, IsTyped2718}, eip2930::AccessList, eip7702::SignedAuthorization, }; -use alloy_primitives::{keccak256, Address, Bytes, Signature, TxHash, TxKind, Uint, B256}; +use alloy_primitives::{Address, B256, Bytes, Signature, TxHash, TxKind, Uint, keccak256}; use alloy_rlp::Header; use core::{ hash::{Hash, Hasher}, @@ -23,17 +23,17 @@ use core::{ use op_alloy_consensus::{OpPooledTransaction, OpTxEnvelope, OpTypedTransaction, TxDeposit}; #[cfg(any(test, feature = "reth-codec"))] use reth_primitives_traits::{ + InMemorySize, SignedTransaction, crypto::secp256k1::{recover_signer, recover_signer_unchecked}, sync::OnceLock, transaction::{error::TransactionConversionError, signed::RecoveryError}, - InMemorySize, SignedTransaction, }; /// Signed transaction. #[cfg_attr(any(test, feature = "reth-codec"), reth_codecs::add_arbitrary_tests(rlp))] #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] #[derive(Debug, Clone, Eq)] -pub struct OpTransactionSigned { +pub(super) struct OpTransactionSigned { /// Transaction hash #[cfg_attr(feature = "serde", serde(skip))] hash: OnceLock, @@ -52,7 +52,7 @@ impl Deref for OpTransactionSigned { impl OpTransactionSigned { /// Creates a new signed transaction from the given transaction, signature and hash. - pub fn new(transaction: OpTypedTransaction, signature: Signature, hash: B256) -> Self { + pub(super) fn new(transaction: OpTypedTransaction, signature: Signature, hash: B256) -> Self { Self { hash: hash.into(), signature, transaction } } @@ -69,35 +69,35 @@ impl OpTransactionSigned { /// Consumes the type and returns the transaction. #[inline] - pub fn into_transaction(self) -> OpTypedTransaction { + pub(super) fn into_transaction(self) -> OpTypedTransaction { self.transaction } /// Returns the transaction. #[inline] - pub const fn transaction(&self) -> &OpTypedTransaction { + pub(super) const fn transaction(&self) -> &OpTypedTransaction { &self.transaction } /// Splits the `OpTransactionSigned` into its transaction and signature. - pub fn split(self) -> (OpTypedTransaction, Signature) { + pub(super) fn split(self) -> (OpTypedTransaction, Signature) { (self.transaction, self.signature) } /// Creates a new signed transaction from the given transaction and signature without the hash. /// /// Note: this only calculates the hash on the first [`OpTransactionSigned::hash`] call. - pub fn new_unhashed(transaction: OpTypedTransaction, signature: Signature) -> Self { + pub(super) fn new_unhashed(transaction: OpTypedTransaction, signature: Signature) -> Self { Self { hash: Default::default(), signature, transaction } } /// Returns whether this transaction is a deposit. - pub const fn is_deposit(&self) -> bool { + pub(super) const fn is_deposit(&self) -> bool { matches!(self.transaction, OpTypedTransaction::Deposit(_)) } /// Splits the transaction into parts. - pub fn into_parts(self) -> (OpTypedTransaction, Signature, B256) { + pub(super) fn into_parts(self) -> (OpTypedTransaction, Signature, B256) { let hash = *self.hash.get_or_init(|| self.recalculate_hash()); (self.transaction, self.signature, hash) } @@ -108,7 +108,7 @@ impl SignerRecoverable for OpTransactionSigned { // Optimism's Deposit transaction does not have a signature. Directly return the // `from` address. if let OpTypedTransaction::Deposit(TxDeposit { from, .. }) = self.transaction { - return Ok(from) + return Ok(from); } let Self { transaction, signature, .. } = self; @@ -120,7 +120,7 @@ impl SignerRecoverable for OpTransactionSigned { // Optimism's Deposit transaction does not have a signature. Directly return the // `from` address. if let OpTypedTransaction::Deposit(TxDeposit { from, .. }) = &self.transaction { - return Ok(*from) + return Ok(*from); } let Self { transaction, signature, .. } = self; @@ -241,11 +241,7 @@ impl alloy_rlp::Decodable for OpTransactionSigned { impl Encodable2718 for OpTransactionSigned { fn type_flag(&self) -> Option { - if Typed2718::is_legacy(self) { - None - } else { - Some(self.ty()) - } + if Typed2718::is_legacy(self) { None } else { Some(self.ty()) } } fn encode_2718_len(&self) -> usize { @@ -507,7 +503,7 @@ impl<'a> arbitrary::Arbitrary<'a> for OpTransactionSigned { let mut transaction = OpTypedTransaction::arbitrary(u)?; let secp = secp256k1::Secp256k1::new(); - let key_pair = secp256k1::Keypair::new(&secp, &mut rand_08::thread_rng()); + let key_pair = secp256k1::Keypair::new(&secp, &mut rand::rng()); let signature = reth_primitives_traits::crypto::secp256k1::sign_message( B256::from_slice(&key_pair.secret_bytes()[..]), signature_hash(&transaction), diff --git a/op-reth/crates/primitives/src/transaction/tx_type.rs b/rust/op-reth/crates/primitives/src/transaction/tx_type.rs similarity index 94% rename from op-reth/crates/primitives/src/transaction/tx_type.rs rename to rust/op-reth/crates/primitives/src/transaction/tx_type.rs index deaaebc0682da..bea52f338ed98 100644 --- a/op-reth/crates/primitives/src/transaction/tx_type.rs +++ b/rust/op-reth/crates/primitives/src/transaction/tx_type.rs @@ -3,8 +3,8 @@ #[cfg(test)] mod tests { use alloy_consensus::constants::EIP7702_TX_TYPE_ID; - use op_alloy_consensus::{OpTxType, DEPOSIT_TX_TYPE_ID}; - use reth_codecs::{txtype::*, Compact}; + use op_alloy_consensus::{DEPOSIT_TX_TYPE_ID, OpTxType}; + use reth_codecs::{Compact, txtype::*}; use rstest::rstest; #[rstest] diff --git a/op-reth/crates/reth/Cargo.toml b/rust/op-reth/crates/reth/Cargo.toml similarity index 81% rename from op-reth/crates/reth/Cargo.toml rename to rust/op-reth/crates/reth/Cargo.toml index cd39a0bcf8191..f848645935567 100644 --- a/op-reth/crates/reth/Cargo.toml +++ b/rust/op-reth/crates/reth/Cargo.toml @@ -1,11 +1,11 @@ [package] name = "reth-op" -version.workspace = true +version = "1.10.2" edition.workspace = true rust-version.workspace = true license.workspace = true -homepage.workspace = true -repository.workspace = true +homepage = "https://paradigmxyz.github.io/reth" +repository = "https://github.com/paradigmxyz/reth" [lints] workspace = true @@ -41,6 +41,7 @@ reth-cli-util = { workspace = true, optional = true } reth-engine-local = { workspace = true, optional = true } # reth-op +alloy-primitives.workspace = true reth-optimism-primitives.workspace = true reth-optimism-chainspec.workspace = true reth-optimism-consensus = { workspace = true, optional = true } @@ -52,32 +53,35 @@ reth-optimism-cli = { workspace = true, optional = true } [features] default = ["std"] std = [ - "reth-chainspec/std", - "reth-consensus?/std", - "reth-consensus-common?/std", - "reth-optimism-chainspec/std", - "reth-optimism-consensus?/std", - "reth-optimism-evm?/std", - "reth-optimism-primitives/std", - "reth-primitives-traits/std", - "reth-storage-api?/std", - "reth-evm?/std", - "reth-revm?/std", + "reth-chainspec/std", + "reth-consensus?/std", + "reth-consensus-common?/std", + "reth-optimism-chainspec/std", + "reth-optimism-consensus?/std", + "reth-optimism-evm?/std", + "reth-optimism-primitives/std", + "reth-primitives-traits/std", + "reth-storage-api?/std", + "reth-evm?/std", + "reth-revm?/std", + "alloy-primitives/std" ] arbitrary = [ - "std", - "reth-chainspec/arbitrary", - "reth-optimism-primitives/arbitrary", - "reth-primitives-traits/arbitrary", - "reth-db?/arbitrary", - "reth-transaction-pool?/arbitrary", - "reth-eth-wire?/arbitrary", - "reth-codecs?/arbitrary", + "std", + "reth-chainspec/arbitrary", + "reth-optimism-primitives/arbitrary", + "reth-primitives-traits/arbitrary", + "reth-db?/arbitrary", + "reth-transaction-pool?/arbitrary", + "reth-eth-wire?/arbitrary", + "reth-codecs?/arbitrary", + "alloy-primitives/arbitrary" ] keccak-cache-global = [ - "reth-optimism-node?/keccak-cache-global", - "reth-node-core?/keccak-cache-global", - "reth-optimism-cli?/keccak-cache-global", + "reth-optimism-node?/keccak-cache-global", + "reth-node-core?/keccak-cache-global", + "reth-optimism-cli?/keccak-cache-global", + "alloy-primitives/keccak-cache-global" ] test-utils = [ "reth-chainspec/test-utils", @@ -154,5 +158,5 @@ portable = [ provider = ["storage-api", "tasks", "dep:reth-provider", "dep:reth-db", "dep:reth-codecs"] pool = ["dep:reth-transaction-pool"] storage-api = ["dep:reth-storage-api"] -trie = ["dep:reth-trie"] +trie = ["dep:reth-trie", "alloy-primitives/rayon"] trie-db = ["trie", "dep:reth-trie-db"] diff --git a/op-reth/crates/reth/src/lib.rs b/rust/op-reth/crates/reth/src/lib.rs similarity index 100% rename from op-reth/crates/reth/src/lib.rs rename to rust/op-reth/crates/reth/src/lib.rs diff --git a/op-reth/crates/rpc/Cargo.toml b/rust/op-reth/crates/rpc/Cargo.toml similarity index 94% rename from op-reth/crates/rpc/Cargo.toml rename to rust/op-reth/crates/rpc/Cargo.toml index 5d926caf15956..01061ae3667a2 100644 --- a/op-reth/crates/rpc/Cargo.toml +++ b/rust/op-reth/crates/rpc/Cargo.toml @@ -1,11 +1,11 @@ [package] name = "reth-optimism-rpc" -version.workspace = true +version = "1.10.2" edition.workspace = true rust-version.workspace = true license.workspace = true -homepage.workspace = true -repository.workspace = true +homepage = "https://paradigmxyz.github.io/reth" +repository = "https://github.com/paradigmxyz/reth" description = "Ethereum RPC implementation for optimism." [lints] @@ -61,7 +61,6 @@ op-revm.workspace = true tokio.workspace = true futures.workspace = true tokio-stream.workspace = true -reqwest = { workspace = true, features = ["rustls-tls-native-roots"] } async-trait.workspace = true tower.workspace = true diff --git a/op-reth/crates/rpc/src/engine.rs b/rust/op-reth/crates/rpc/src/engine.rs similarity index 99% rename from op-reth/crates/rpc/src/engine.rs rename to rust/op-reth/crates/rpc/src/engine.rs index a31a64daca9ba..f9e67fdfd91b2 100644 --- a/op-reth/crates/rpc/src/engine.rs +++ b/rust/op-reth/crates/rpc/src/engine.rs @@ -1,14 +1,14 @@ //! Implements the Optimism engine API RPC methods. use alloy_eips::eip7685::Requests; -use alloy_primitives::{BlockHash, B256, B64, U64}; +use alloy_primitives::{B64, B256, BlockHash, U64}; use alloy_rpc_types_engine::{ ClientVersionV1, ExecutionPayloadBodiesV1, ExecutionPayloadInputV2, ExecutionPayloadV3, ForkchoiceState, ForkchoiceUpdated, PayloadId, PayloadStatus, }; use derive_more::Constructor; use jsonrpsee::proc_macros::rpc; -use jsonrpsee_core::{server::RpcModule, RpcResult}; +use jsonrpsee_core::{RpcResult, server::RpcModule}; use op_alloy_rpc_types_engine::{ OpExecutionData, OpExecutionPayloadV4, ProtocolVersion, ProtocolVersionFormatV0, SuperchainSignal, diff --git a/op-reth/crates/rpc/src/error.rs b/rust/op-reth/crates/rpc/src/error.rs similarity index 99% rename from op-reth/crates/rpc/src/error.rs rename to rust/op-reth/crates/rpc/src/error.rs index b457ce9d9c153..a9b0231423515 100644 --- a/op-reth/crates/rpc/src/error.rs +++ b/rust/op-reth/crates/rpc/src/error.rs @@ -2,7 +2,7 @@ use alloy_json_rpc::ErrorPayload; use alloy_primitives::Bytes; -use alloy_rpc_types_eth::{error::EthRpcErrorCode, BlockError}; +use alloy_rpc_types_eth::{BlockError, error::EthRpcErrorCode}; use alloy_transport::{RpcError, TransportErrorKind}; use jsonrpsee_types::error::{INTERNAL_ERROR_CODE, INVALID_PARAMS_CODE}; use op_revm::{OpHaltReason, OpTransactionError}; @@ -10,8 +10,8 @@ use reth_evm::execute::ProviderError; use reth_optimism_evm::OpBlockExecutionError; use reth_rpc_eth_api::{AsEthApiError, EthTxEnvError, TransactionConversionError}; use reth_rpc_eth_types::{ - error::api::{FromEvmHalt, FromRevert}, EthApiError, + error::api::{FromEvmHalt, FromRevert}, }; use reth_rpc_server_types::result::{internal_rpc_err, rpc_err}; use revm::context_interface::result::{EVMError, InvalidTransaction}; diff --git a/op-reth/crates/rpc/src/eth/block.rs b/rust/op-reth/crates/rpc/src/eth/block.rs similarity index 90% rename from op-reth/crates/rpc/src/eth/block.rs rename to rust/op-reth/crates/rpc/src/eth/block.rs index 0efd9aea988bb..2c89cfc0ec65e 100644 --- a/op-reth/crates/rpc/src/eth/block.rs +++ b/rust/op-reth/crates/rpc/src/eth/block.rs @@ -1,9 +1,9 @@ //! Loads and formats OP block RPC response. -use crate::{eth::RpcNodeCore, OpEthApi, OpEthApiError}; +use crate::{OpEthApi, OpEthApiError, eth::RpcNodeCore}; use reth_rpc_eth_api::{ - helpers::{EthBlocks, LoadBlock}, FromEvmError, RpcConvert, + helpers::{EthBlocks, LoadBlock}, }; impl EthBlocks for OpEthApi diff --git a/op-reth/crates/rpc/src/eth/call.rs b/rust/op-reth/crates/rpc/src/eth/call.rs similarity index 89% rename from op-reth/crates/rpc/src/eth/call.rs rename to rust/op-reth/crates/rpc/src/eth/call.rs index db96bda83f39a..af97668659d37 100644 --- a/op-reth/crates/rpc/src/eth/call.rs +++ b/rust/op-reth/crates/rpc/src/eth/call.rs @@ -1,7 +1,7 @@ -use crate::{eth::RpcNodeCore, OpEthApi, OpEthApiError}; +use crate::{OpEthApi, OpEthApiError, eth::RpcNodeCore}; use reth_rpc_eth_api::{ - helpers::{estimate::EstimateCall, Call, EthCall}, FromEvmError, RpcConvert, + helpers::{Call, EthCall, estimate::EstimateCall}, }; impl EthCall for OpEthApi diff --git a/op-reth/crates/rpc/src/eth/ext.rs b/rust/op-reth/crates/rpc/src/eth/ext.rs similarity index 98% rename from op-reth/crates/rpc/src/eth/ext.rs rename to rust/op-reth/crates/rpc/src/eth/ext.rs index 6c4e1bc7cf164..f4ed19237935c 100644 --- a/op-reth/crates/rpc/src/eth/ext.rs +++ b/rust/op-reth/crates/rpc/src/eth/ext.rs @@ -1,9 +1,9 @@ //! Eth API extension. -use crate::{error::TxConditionalErr, OpEthApiError, SequencerClient}; +use crate::{OpEthApiError, SequencerClient, error::TxConditionalErr}; use alloy_consensus::BlockHeader; use alloy_eips::BlockNumberOrTag; -use alloy_primitives::{Bytes, StorageKey, B256, U256}; +use alloy_primitives::{B256, Bytes, StorageKey, U256}; use alloy_rpc_types_eth::erc4337::{AccountStorage, TransactionConditional}; use jsonrpsee_core::RpcResult; use reth_optimism_txpool::conditional::MaybeConditionalTransaction; diff --git a/op-reth/crates/rpc/src/eth/mod.rs b/rust/op-reth/crates/rpc/src/eth/mod.rs similarity index 95% rename from op-reth/crates/rpc/src/eth/mod.rs rename to rust/op-reth/crates/rpc/src/eth/mod.rs index f4b9fcb08fddb..52eff8d26adcd 100644 --- a/op-reth/crates/rpc/src/eth/mod.rs +++ b/rust/op-reth/crates/rpc/src/eth/mod.rs @@ -9,19 +9,19 @@ mod call; mod pending_block; use crate::{ - eth::{receipt::OpReceiptConverter, transaction::OpTxInfoMapper}, OpEthApiError, SequencerClient, + eth::{receipt::OpReceiptConverter, transaction::OpTxInfoMapper}, }; use alloy_consensus::BlockHeader; use alloy_eips::BlockNumHash; use alloy_primitives::{B256, U256}; use alloy_rpc_types_eth::{Filter, Log}; +use alloy_transport_http::reqwest::Url; use eyre::WrapErr; use futures::StreamExt; use op_alloy_network::Optimism; use op_alloy_rpc_types_engine::OpFlashblockPayloadBase; pub use receipt::{OpReceiptBuilder, OpReceiptFieldsBuilder}; -use reqwest::Url; use reth_chainspec::{EthereumHardforks, Hardforks}; use reth_evm::ConfigureEvm; use reth_node_api::{FullNodeComponents, FullNodeTypes, HeaderTy, NodeTypes}; @@ -33,21 +33,21 @@ use reth_optimism_flashblocks::{ }; use reth_rpc::eth::core::EthApiInner; use reth_rpc_eth_api::{ - helpers::{ - pending_block::BuildPendingEnv, EthApiSpec, EthFees, EthState, LoadFee, LoadPendingBlock, - LoadState, SpawnBlocking, Trace, - }, EthApiTypes, FromEvmError, FullEthApiServer, RpcConvert, RpcConverter, RpcNodeCore, RpcNodeCoreExt, RpcTypes, + helpers::{ + EthApiSpec, EthFees, EthState, LoadFee, LoadPendingBlock, LoadState, SpawnBlocking, Trace, + pending_block::BuildPendingEnv, + }, }; use reth_rpc_eth_types::{ - logs_utils::matching_block_logs_with_tx_hashes, EthStateCache, FeeHistoryCache, GasPriceOracle, - PendingBlock, + EthStateCache, FeeHistoryCache, GasPriceOracle, PendingBlock, + logs_utils::matching_block_logs_with_tx_hashes, }; use reth_storage_api::{BlockReaderIdExt, ProviderHeader}; use reth_tasks::{ - pool::{BlockingTaskGuard, BlockingTaskPool}, TaskSpawner, + pool::{BlockingTaskGuard, BlockingTaskPool}, }; use std::{ fmt::{self, Formatter}, @@ -56,7 +56,7 @@ use std::{ time::Duration, }; use tokio::{sync::watch, time}; -use tokio_stream::{wrappers::BroadcastStream, Stream}; +use tokio_stream::{Stream, wrappers::BroadcastStream}; use tracing::info; /// Maximum duration to wait for a fresh flashblock when one is being built. @@ -157,7 +157,7 @@ impl OpEthApi { let Some((block_number, timestamp)) = *state else { // we haven't received a new flashblock sequence yet, so we can skip // until we receive the first index 0 (base) - return futures::future::ready(Some(Vec::new())) + return futures::future::ready(Some(Vec::new())); }; let receipts = @@ -198,7 +198,7 @@ impl OpEthApi { parent_hash: B256, ) -> eyre::Result>> { let Some(rx) = self.inner.flashblocks.as_ref().map(|f| &f.pending_block_rx) else { - return Ok(None) + return Ok(None); }; // Check if a flashblock is being built @@ -528,21 +528,21 @@ impl OpEthApiBuilder { impl EthApiBuilder for OpEthApiBuilder where N: FullNodeComponents< - Evm: ConfigureEvm< - NextBlockEnvCtx: BuildPendingEnv> - + From - + Unpin, - >, - Types: NodeTypes< - ChainSpec: Hardforks + EthereumHardforks, - Payload: reth_node_api::PayloadTypes< - ExecutionData: for<'a> TryFrom< - &'a FlashBlockCompleteSequence, - Error: std::fmt::Display, + Evm: ConfigureEvm< + NextBlockEnvCtx: BuildPendingEnv> + + From + + Unpin, + >, + Types: NodeTypes< + ChainSpec: Hardforks + EthereumHardforks, + Payload: reth_node_api::PayloadTypes< + ExecutionData: for<'a> TryFrom< + &'a FlashBlockCompleteSequence, + Error: std::fmt::Display, + >, >, >, >, - >, NetworkT: RpcTypes, OpRpcConvert: RpcConvert, OpEthApi>: diff --git a/op-reth/crates/rpc/src/eth/pending_block.rs b/rust/op-reth/crates/rpc/src/eth/pending_block.rs similarity index 92% rename from op-reth/crates/rpc/src/eth/pending_block.rs rename to rust/op-reth/crates/rpc/src/eth/pending_block.rs index bf351d7de1100..587693e85734f 100644 --- a/op-reth/crates/rpc/src/eth/pending_block.rs +++ b/rust/op-reth/crates/rpc/src/eth/pending_block.rs @@ -5,12 +5,12 @@ use alloy_consensus::BlockHeader; use alloy_eips::BlockNumberOrTag; use reth_chain_state::BlockState; use reth_rpc_eth_api::{ - helpers::{pending_block::PendingEnvBuilder, LoadPendingBlock, SpawnBlocking}, FromEvmError, RpcConvert, RpcNodeCore, RpcNodeCoreExt, + helpers::{LoadPendingBlock, SpawnBlocking, pending_block::PendingEnvBuilder}, }; use reth_rpc_eth_types::{ - block::BlockAndReceipts, builder::config::PendingBlockKind, error::FromEthApiError, - EthApiError, PendingBlock, + EthApiError, PendingBlock, block::BlockAndReceipts, builder::config::PendingBlockKind, + error::FromEthApiError, }; use reth_storage_api::{BlockReaderIdExt, StateProviderBox, StateProviderFactory}; diff --git a/op-reth/crates/rpc/src/eth/receipt.rs b/rust/op-reth/crates/rpc/src/eth/receipt.rs similarity index 98% rename from op-reth/crates/rpc/src/eth/receipt.rs rename to rust/op-reth/crates/rpc/src/eth/receipt.rs index e86aa615672bd..77243039e975a 100644 --- a/op-reth/crates/rpc/src/eth/receipt.rs +++ b/rust/op-reth/crates/rpc/src/eth/receipt.rs @@ -1,6 +1,6 @@ //! Loads and formats OP receipt RPC response. -use crate::{eth::RpcNodeCore, OpEthApi, OpEthApiError}; +use crate::{OpEthApi, OpEthApiError, eth::RpcNodeCore}; use alloy_consensus::{BlockHeader, Receipt, ReceiptWithBloom, TxReceipt}; use alloy_eips::eip2718::Encodable2718; use alloy_rpc_types_eth::{Log, TransactionReceipt}; @@ -13,11 +13,11 @@ use reth_optimism_evm::RethL1BlockInfo; use reth_optimism_forks::OpHardforks; use reth_primitives_traits::SealedBlock; use reth_rpc_eth_api::{ + RpcConvert, helpers::LoadReceipt, transaction::{ConvertReceiptInput, ReceiptConverter}, - RpcConvert, }; -use reth_rpc_eth_types::{receipt::build_receipt, EthApiError}; +use reth_rpc_eth_types::{EthApiError, receipt::build_receipt}; use reth_storage_api::BlockReader; use std::fmt::Debug; @@ -341,11 +341,11 @@ impl OpReceiptBuilder { #[cfg(test)] mod test { use super::*; - use alloy_consensus::{transaction::TransactionMeta, Block, BlockBody, Eip658Value, TxEip7702}; + use alloy_consensus::{Block, BlockBody, Eip658Value, TxEip7702, transaction::TransactionMeta}; use alloy_op_hardforks::{ - OpChainHardforks, OP_MAINNET_ISTHMUS_TIMESTAMP, OP_MAINNET_JOVIAN_TIMESTAMP, + OP_MAINNET_ISTHMUS_TIMESTAMP, OP_MAINNET_JOVIAN_TIMESTAMP, OpChainHardforks, }; - use alloy_primitives::{hex, Address, Bytes, Signature, U256}; + use alloy_primitives::{Address, Bytes, Signature, U256, hex}; use op_alloy_consensus::OpTypedTransaction; use op_alloy_network::eip2718::Decodable2718; use reth_optimism_chainspec::{BASE_MAINNET, OP_MAINNET}; diff --git a/op-reth/crates/rpc/src/eth/transaction.rs b/rust/op-reth/crates/rpc/src/eth/transaction.rs similarity index 97% rename from op-reth/crates/rpc/src/eth/transaction.rs rename to rust/op-reth/crates/rpc/src/eth/transaction.rs index af842e71c6f58..bfd17ce662d13 100644 --- a/op-reth/crates/rpc/src/eth/transaction.rs +++ b/rust/op-reth/crates/rpc/src/eth/transaction.rs @@ -1,23 +1,23 @@ //! Loads and formats OP transaction RPC response. use crate::{OpEthApi, OpEthApiError, SequencerClient}; -use alloy_primitives::{Bytes, B256}; +use alloy_primitives::{B256, Bytes}; use alloy_rpc_types_eth::TransactionInfo; use futures::StreamExt; use op_alloy_consensus::{ - transaction::{OpDepositInfo, OpTransactionInfo}, OpTransaction, + transaction::{OpDepositInfo, OpTransactionInfo}, }; use reth_chain_state::CanonStateSubscriptions; use reth_optimism_primitives::DepositReceipt; use reth_primitives_traits::{Recovered, SignedTransaction, SignerRecoverable, WithEncoded}; use reth_rpc_eth_api::{ - helpers::{spec::SignersForRpc, EthTransactions, LoadReceipt, LoadTransaction, SpawnBlocking}, EthApiTypes as _, FromEthApiError, FromEvmError, RpcConvert, RpcNodeCore, RpcReceipt, TxInfoMapper, + helpers::{EthTransactions, LoadReceipt, LoadTransaction, SpawnBlocking, spec::SignersForRpc}, }; -use reth_rpc_eth_types::{block::convert_transaction_receipt, EthApiError, TransactionSource}; -use reth_storage_api::{errors::ProviderError, ProviderTx, ReceiptProvider, TransactionsProvider}; +use reth_rpc_eth_types::{EthApiError, TransactionSource, block::convert_transaction_receipt}; +use reth_storage_api::{ProviderTx, ReceiptProvider, TransactionsProvider, errors::ProviderError}; use reth_transaction_pool::{ AddedTransactionOutcome, PoolPooledTx, PoolTransaction, TransactionOrigin, TransactionPool, }; @@ -66,7 +66,7 @@ where tracing::warn!(target: "rpc::eth", %err, %hash, "successfully sent tx to sequencer, but failed to persist in local tx pool"); }); - return Ok(hash) + return Ok(hash); } // submit the transaction to the pool with a `Local` origin diff --git a/op-reth/crates/rpc/src/historical.rs b/rust/op-reth/crates/rpc/src/historical.rs similarity index 99% rename from op-reth/crates/rpc/src/historical.rs rename to rust/op-reth/crates/rpc/src/historical.rs index 6037da4fe7117..5c9d26f96f315 100644 --- a/op-reth/crates/rpc/src/historical.rs +++ b/rust/op-reth/crates/rpc/src/historical.rs @@ -3,8 +3,9 @@ use crate::sequencer::Error; use alloy_eips::BlockId; use alloy_json_rpc::{RpcRecv, RpcSend}; -use alloy_primitives::{BlockNumber, B256}; +use alloy_primitives::{B256, BlockNumber}; use alloy_rpc_client::RpcClient; +use alloy_transport_http::reqwest; use jsonrpsee::BatchResponseBuilder; use jsonrpsee_core::{ middleware::{Batch, BatchEntry, Notification, RpcServiceT}, @@ -144,7 +145,7 @@ where Box::pin(async move { // Check if request should be forwarded to historical endpoint if let Some(response) = historical.maybe_forward_request(&req).await { - return response + return response; } // Handle the request with the inner service @@ -249,7 +250,7 @@ where /// the response if it was forwarded. async fn maybe_forward_request(&self, req: &Request<'_>) -> Option { if self.should_forward_request(req) { - return self.forward_to_historical(req).await + return self.forward_to_historical(req).await; } None } diff --git a/op-reth/crates/rpc/src/lib.rs b/rust/op-reth/crates/rpc/src/lib.rs similarity index 91% rename from op-reth/crates/rpc/src/lib.rs rename to rust/op-reth/crates/rpc/src/lib.rs index 10f8ad5dccd08..d1f8e8dbdd0b9 100644 --- a/op-reth/crates/rpc/src/lib.rs +++ b/rust/op-reth/crates/rpc/src/lib.rs @@ -19,7 +19,7 @@ pub mod witness; #[cfg(feature = "client")] pub use engine::OpEngineApiClient; -pub use engine::{OpEngineApi, OpEngineApiServer, OP_ENGINE_CAPABILITIES}; +pub use engine::{OP_ENGINE_CAPABILITIES, OpEngineApi, OpEngineApiServer}; pub use error::{OpEthApiError, OpInvalidTransactionError, SequencerClientError}; pub use eth::{OpEthApi, OpEthApiBuilder, OpReceiptBuilder}; pub use metrics::SequencerMetrics; diff --git a/op-reth/crates/rpc/src/metrics.rs b/rust/op-reth/crates/rpc/src/metrics.rs similarity index 100% rename from op-reth/crates/rpc/src/metrics.rs rename to rust/op-reth/crates/rpc/src/metrics.rs diff --git a/op-reth/crates/rpc/src/miner.rs b/rust/op-reth/crates/rpc/src/miner.rs similarity index 96% rename from op-reth/crates/rpc/src/miner.rs rename to rust/op-reth/crates/rpc/src/miner.rs index f8780f37e827b..bfb77fd344e69 100644 --- a/op-reth/crates/rpc/src/miner.rs +++ b/rust/op-reth/crates/rpc/src/miner.rs @@ -1,9 +1,9 @@ //! Miner API extension for OP. use alloy_primitives::U64; -use jsonrpsee_core::{async_trait, RpcResult}; +use jsonrpsee_core::{RpcResult, async_trait}; pub use op_alloy_rpc_jsonrpsee::traits::MinerApiExtServer; -use reth_metrics::{metrics::Gauge, Metrics}; +use reth_metrics::{Metrics, metrics::Gauge}; use reth_optimism_payload_builder::config::{OpDAConfig, OpGasLimitConfig}; use tracing::debug; diff --git a/op-reth/crates/rpc/src/sequencer.rs b/rust/op-reth/crates/rpc/src/sequencer.rs similarity index 99% rename from op-reth/crates/rpc/src/sequencer.rs rename to rust/op-reth/crates/rpc/src/sequencer.rs index 86ed000e863d9..11bc7477322fd 100644 --- a/op-reth/crates/rpc/src/sequencer.rs +++ b/rust/op-reth/crates/rpc/src/sequencer.rs @@ -2,10 +2,10 @@ use crate::{SequencerClientError, SequencerMetrics}; use alloy_json_rpc::{RpcRecv, RpcSend}; -use alloy_primitives::{hex, B256}; +use alloy_primitives::{B256, hex}; use alloy_rpc_client::{BuiltInConnectionString, ClientBuilder, RpcClient as Client}; use alloy_rpc_types_eth::erc4337::TransactionConditional; -use alloy_transport_http::Http; +use alloy_transport_http::{Http, reqwest}; use std::{str::FromStr, sync::Arc, time::Instant}; use thiserror::Error; use tracing::warn; diff --git a/op-reth/crates/rpc/src/witness.rs b/rust/op-reth/crates/rpc/src/witness.rs similarity index 96% rename from op-reth/crates/rpc/src/witness.rs rename to rust/op-reth/crates/rpc/src/witness.rs index 1858b4fd2f1e5..f1095b7d9623a 100644 --- a/op-reth/crates/rpc/src/witness.rs +++ b/rust/op-reth/crates/rpc/src/witness.rs @@ -2,7 +2,7 @@ use alloy_primitives::B256; use alloy_rpc_types_debug::ExecutionWitness; -use jsonrpsee_core::{async_trait, RpcResult}; +use jsonrpsee_core::{RpcResult, async_trait}; use reth_chainspec::ChainSpecProvider; use reth_evm::ConfigureEvm; use reth_node_api::{BuildNextEnv, NodePrimitives}; @@ -11,15 +11,15 @@ use reth_optimism_payload_builder::{OpAttributes, OpPayloadBuilder, OpPayloadPri use reth_optimism_txpool::OpPooledTx; use reth_primitives_traits::{SealedHeader, TxTy}; pub use reth_rpc_api::DebugExecutionWitnessApiServer; -use reth_rpc_server_types::{result::internal_rpc_err, ToRpcResult}; +use reth_rpc_server_types::{ToRpcResult, result::internal_rpc_err}; use reth_storage_api::{ - errors::{ProviderError, ProviderResult}, BlockReaderIdExt, NodePrimitivesProvider, StateProviderFactory, + errors::{ProviderError, ProviderResult}, }; use reth_tasks::TaskSpawner; use reth_transaction_pool::TransactionPool; use std::{fmt::Debug, sync::Arc}; -use tokio::sync::{oneshot, Semaphore}; +use tokio::sync::{Semaphore, oneshot}; /// An extension to the `debug_` namespace of the RPC API. pub struct OpDebugWitnessApi { diff --git a/op-reth/crates/storage/Cargo.toml b/rust/op-reth/crates/storage/Cargo.toml similarity index 85% rename from op-reth/crates/storage/Cargo.toml rename to rust/op-reth/crates/storage/Cargo.toml index aab6ee7d8e017..94529f8e249a4 100644 --- a/op-reth/crates/storage/Cargo.toml +++ b/rust/op-reth/crates/storage/Cargo.toml @@ -1,11 +1,11 @@ [package] name = "reth-optimism-storage" -version.workspace = true +version = "1.10.2" edition.workspace = true rust-version.workspace = true license.workspace = true -homepage.workspace = true -repository.workspace = true +homepage = "https://paradigmxyz.github.io/reth" +repository = "https://github.com/paradigmxyz/reth" [lints] workspace = true diff --git a/op-reth/crates/storage/src/chain.rs b/rust/op-reth/crates/storage/src/chain.rs similarity index 100% rename from op-reth/crates/storage/src/chain.rs rename to rust/op-reth/crates/storage/src/chain.rs diff --git a/op-reth/crates/storage/src/lib.rs b/rust/op-reth/crates/storage/src/lib.rs similarity index 100% rename from op-reth/crates/storage/src/lib.rs rename to rust/op-reth/crates/storage/src/lib.rs diff --git a/op-reth/crates/txpool/Cargo.toml b/rust/op-reth/crates/txpool/Cargo.toml similarity index 92% rename from op-reth/crates/txpool/Cargo.toml rename to rust/op-reth/crates/txpool/Cargo.toml index 3737d23cf0dc9..9636d56efb2ca 100644 --- a/op-reth/crates/txpool/Cargo.toml +++ b/rust/op-reth/crates/txpool/Cargo.toml @@ -1,11 +1,11 @@ [package] name = "reth-optimism-txpool" -version.workspace = true +version = "1.10.2" edition.workspace = true rust-version.workspace = true license.workspace = true -homepage.workspace = true -repository.workspace = true +homepage = "https://paradigmxyz.github.io/reth" +repository = "https://github.com/paradigmxyz/reth" description = "OP-Reth Transaction Pool" [lints] diff --git a/op-reth/crates/txpool/src/conditional.rs b/rust/op-reth/crates/txpool/src/conditional.rs similarity index 100% rename from op-reth/crates/txpool/src/conditional.rs rename to rust/op-reth/crates/txpool/src/conditional.rs diff --git a/op-reth/crates/txpool/src/error.rs b/rust/op-reth/crates/txpool/src/error.rs similarity index 100% rename from op-reth/crates/txpool/src/error.rs rename to rust/op-reth/crates/txpool/src/error.rs diff --git a/op-reth/crates/txpool/src/estimated_da_size.rs b/rust/op-reth/crates/txpool/src/estimated_da_size.rs similarity index 100% rename from op-reth/crates/txpool/src/estimated_da_size.rs rename to rust/op-reth/crates/txpool/src/estimated_da_size.rs diff --git a/op-reth/crates/txpool/src/interop.rs b/rust/op-reth/crates/txpool/src/interop.rs similarity index 100% rename from op-reth/crates/txpool/src/interop.rs rename to rust/op-reth/crates/txpool/src/interop.rs diff --git a/op-reth/crates/txpool/src/lib.rs b/rust/op-reth/crates/txpool/src/lib.rs similarity index 100% rename from op-reth/crates/txpool/src/lib.rs rename to rust/op-reth/crates/txpool/src/lib.rs diff --git a/op-reth/crates/txpool/src/maintain.rs b/rust/op-reth/crates/txpool/src/maintain.rs similarity index 95% rename from op-reth/crates/txpool/src/maintain.rs rename to rust/op-reth/crates/txpool/src/maintain.rs index c071bf708e4bf..8ac5bf4842dae 100644 --- a/op-reth/crates/txpool/src/maintain.rs +++ b/rust/op-reth/crates/txpool/src/maintain.rs @@ -9,16 +9,16 @@ const MAX_SUPERVISOR_QUERIES: usize = 10; use crate::{ conditional::MaybeConditionalTransaction, - interop::{is_stale_interop, is_valid_interop, MaybeInteropTransaction}, + interop::{MaybeInteropTransaction, is_stale_interop, is_valid_interop}, supervisor::SupervisorClient, }; -use alloy_consensus::{conditional::BlockConditionalAttributes, BlockHeader}; -use futures_util::{future::BoxFuture, FutureExt, Stream, StreamExt}; +use alloy_consensus::{BlockHeader, conditional::BlockConditionalAttributes}; +use futures_util::{FutureExt, Stream, StreamExt, future::BoxFuture}; use metrics::{Gauge, Histogram}; use reth_chain_state::CanonStateNotification; -use reth_metrics::{metrics::Counter, Metrics}; +use reth_metrics::{Metrics, metrics::Counter}; use reth_primitives_traits::NodePrimitives; -use reth_transaction_pool::{error::PoolTransactionError, PoolTransaction, TransactionPool}; +use reth_transaction_pool::{PoolTransaction, TransactionPool, error::PoolTransactionError}; use std::time::Instant; use tracing::warn; diff --git a/op-reth/crates/txpool/src/supervisor/access_list.rs b/rust/op-reth/crates/txpool/src/supervisor/access_list.rs similarity index 100% rename from op-reth/crates/txpool/src/supervisor/access_list.rs rename to rust/op-reth/crates/txpool/src/supervisor/access_list.rs diff --git a/op-reth/crates/txpool/src/supervisor/client.rs b/rust/op-reth/crates/txpool/src/supervisor/client.rs similarity index 98% rename from op-reth/crates/txpool/src/supervisor/client.rs rename to rust/op-reth/crates/txpool/src/supervisor/client.rs index a49704ac50aae..e5cd8f42dcfa3 100644 --- a/op-reth/crates/txpool/src/supervisor/client.rs +++ b/rust/op-reth/crates/txpool/src/supervisor/client.rs @@ -1,20 +1,20 @@ //! This is our custom implementation of validator struct use crate::{ + InvalidCrossTx, supervisor::{ - metrics::SupervisorMetrics, parse_access_list_items_to_inbox_entries, ExecutingDescriptor, - InteropTxValidatorError, + ExecutingDescriptor, InteropTxValidatorError, metrics::SupervisorMetrics, + parse_access_list_items_to_inbox_entries, }, - InvalidCrossTx, }; use alloy_consensus::Transaction; use alloy_eips::eip2930::AccessList; -use alloy_primitives::{TxHash, B256}; +use alloy_primitives::{B256, TxHash}; use alloy_rpc_client::ReqwestClient; use futures_util::{ + Stream, future::BoxFuture, stream::{self, StreamExt}, - Stream, }; use op_alloy_consensus::interop::SafetyLevel; use reth_transaction_pool::PoolTransaction; @@ -102,7 +102,7 @@ impl SupervisorClient { // Interop check if !is_interop_active { // No cross chain tx allowed before interop - return Some(Err(InvalidCrossTx::CrossChainTxPreInterop)) + return Some(Err(InvalidCrossTx::CrossChainTxPreInterop)); } if let Err(err) = self diff --git a/op-reth/crates/txpool/src/supervisor/errors.rs b/rust/op-reth/crates/txpool/src/supervisor/errors.rs similarity index 100% rename from op-reth/crates/txpool/src/supervisor/errors.rs rename to rust/op-reth/crates/txpool/src/supervisor/errors.rs diff --git a/op-reth/crates/txpool/src/supervisor/message.rs b/rust/op-reth/crates/txpool/src/supervisor/message.rs similarity index 100% rename from op-reth/crates/txpool/src/supervisor/message.rs rename to rust/op-reth/crates/txpool/src/supervisor/message.rs diff --git a/op-reth/crates/txpool/src/supervisor/metrics.rs b/rust/op-reth/crates/txpool/src/supervisor/metrics.rs similarity index 100% rename from op-reth/crates/txpool/src/supervisor/metrics.rs rename to rust/op-reth/crates/txpool/src/supervisor/metrics.rs index cb51a52bfc56b..626733abc613e 100644 --- a/op-reth/crates/txpool/src/supervisor/metrics.rs +++ b/rust/op-reth/crates/txpool/src/supervisor/metrics.rs @@ -3,8 +3,8 @@ use crate::supervisor::InteropTxValidatorError; use op_alloy_rpc_types::SuperchainDAError; use reth_metrics::{ - metrics::{Counter, Histogram}, Metrics, + metrics::{Counter, Histogram}, }; use std::time::Duration; diff --git a/op-reth/crates/txpool/src/supervisor/mod.rs b/rust/op-reth/crates/txpool/src/supervisor/mod.rs similarity index 77% rename from op-reth/crates/txpool/src/supervisor/mod.rs rename to rust/op-reth/crates/txpool/src/supervisor/mod.rs index 36cec338d70f2..289b3cb7277ed 100644 --- a/op-reth/crates/txpool/src/supervisor/mod.rs +++ b/rust/op-reth/crates/txpool/src/supervisor/mod.rs @@ -4,7 +4,7 @@ pub use access_list::parse_access_list_items_to_inbox_entries; pub use op_alloy_consensus::interop::*; pub mod client; -pub use client::{SupervisorClient, SupervisorClientBuilder, DEFAULT_SUPERVISOR_URL}; +pub use client::{DEFAULT_SUPERVISOR_URL, SupervisorClient, SupervisorClientBuilder}; mod errors; pub use errors::InteropTxValidatorError; mod message; diff --git a/op-reth/crates/txpool/src/transaction.rs b/rust/op-reth/crates/txpool/src/transaction.rs similarity index 97% rename from op-reth/crates/txpool/src/transaction.rs rename to rust/op-reth/crates/txpool/src/transaction.rs index d13ba555ba100..1ed8356104706 100644 --- a/op-reth/crates/txpool/src/transaction.rs +++ b/rust/op-reth/crates/txpool/src/transaction.rs @@ -2,14 +2,14 @@ use crate::{ conditional::MaybeConditionalTransaction, estimated_da_size::DataAvailabilitySized, interop::MaybeInteropTransaction, }; -use alloy_consensus::{transaction::Recovered, BlobTransactionValidationError, Typed2718}; +use alloy_consensus::{BlobTransactionValidationError, Typed2718, transaction::Recovered}; use alloy_eips::{ eip2718::{Encodable2718, WithEncoded}, eip2930::AccessList, eip7594::BlobTransactionSidecarVariant, eip7702::SignedAuthorization, }; -use alloy_primitives::{Address, Bytes, TxHash, TxKind, B256, U256}; +use alloy_primitives::{Address, B256, Bytes, TxHash, TxKind, U256}; use alloy_rpc_types_eth::erc4337::TransactionConditional; use c_kzg::KzgSettings; use core::fmt::Debug; @@ -21,8 +21,8 @@ use reth_transaction_pool::{ use std::{ borrow::Cow, sync::{ - atomic::{AtomicU64, Ordering}, Arc, OnceLock, + atomic::{AtomicU64, Ordering}, }, }; @@ -109,7 +109,7 @@ impl MaybeInteropTransaction for OpPooledTransaction fn interop_deadline(&self) -> Option { let interop = self.interop.load(Ordering::Relaxed); if interop > NO_INTEROP_TX { - return Some(interop) + return Some(interop); } None } @@ -320,8 +320,8 @@ mod tests { use reth_optimism_primitives::{OpPrimitives, OpTransactionSigned}; use reth_provider::test_utils::MockEthProvider; use reth_transaction_pool::{ - blobstore::InMemoryBlobStore, validate::EthTransactionValidatorBuilder, TransactionOrigin, - TransactionValidationOutcome, + TransactionOrigin, TransactionValidationOutcome, blobstore::InMemoryBlobStore, + validate::EthTransactionValidatorBuilder, }; #[tokio::test] async fn validate_optimism_transaction() { diff --git a/op-reth/crates/txpool/src/validator.rs b/rust/op-reth/crates/txpool/src/validator.rs similarity index 96% rename from op-reth/crates/txpool/src/validator.rs rename to rust/op-reth/crates/txpool/src/validator.rs index 99f03e1a1e7cb..cb48ae71d16c7 100644 --- a/op-reth/crates/txpool/src/validator.rs +++ b/rust/op-reth/crates/txpool/src/validator.rs @@ -1,4 +1,4 @@ -use crate::{supervisor::SupervisorClient, InvalidCrossTx, OpPooledTx}; +use crate::{InvalidCrossTx, OpPooledTx, supervisor::SupervisorClient}; use alloy_consensus::{BlockHeader, Transaction}; use op_revm::L1BlockInfo; use parking_lot::RwLock; @@ -7,17 +7,17 @@ use reth_evm::ConfigureEvm; use reth_optimism_evm::RethL1BlockInfo; use reth_optimism_forks::OpHardforks; use reth_primitives_traits::{ - transaction::error::InvalidTransactionError, Block, BlockBody, BlockTy, GotExpected, - SealedBlock, + Block, BlockBody, BlockTy, GotExpected, SealedBlock, + transaction::error::InvalidTransactionError, }; use reth_storage_api::{AccountInfoReader, BlockReaderIdExt, StateProviderFactory}; use reth_transaction_pool::{ - error::InvalidPoolTransactionError, EthPoolTransaction, EthTransactionValidator, - TransactionOrigin, TransactionValidationOutcome, TransactionValidator, + EthPoolTransaction, EthTransactionValidator, TransactionOrigin, TransactionValidationOutcome, + TransactionValidator, error::InvalidPoolTransactionError, }; use std::sync::{ - atomic::{AtomicBool, AtomicU64, Ordering}, Arc, + atomic::{AtomicBool, AtomicU64, Ordering}, }; /// The interval for which we check transaction against supervisor, 1 hour. @@ -187,7 +187,7 @@ where return TransactionValidationOutcome::Invalid( transaction, InvalidTransactionError::TxTypeNotSupported.into(), - ) + ); } // Interop cross tx validation @@ -199,7 +199,7 @@ where } err => InvalidPoolTransactionError::Other(Box::new(err)), }; - return TransactionValidationOutcome::Invalid(transaction, err) + return TransactionValidationOutcome::Invalid(transaction, err); } Some(Ok(_)) => { // valid interop tx @@ -222,7 +222,7 @@ where ) -> TransactionValidationOutcome { if !self.requires_l1_data_gas_fee() { // no need to check L1 gas fee - return outcome + return outcome; } // ensure that the account has enough balance to cover the L1 gas cost if let TransactionValidationOutcome::Valid { @@ -246,7 +246,7 @@ where ) { Ok(cost) => cost, Err(err) => { - return TransactionValidationOutcome::Error(*valid_tx.hash(), Box::new(err)) + return TransactionValidationOutcome::Error(*valid_tx.hash(), Box::new(err)); } }; let cost = valid_tx.transaction().cost().saturating_add(cost_addition); @@ -259,7 +259,7 @@ where GotExpected { got: balance, expected: cost }.into(), ) .into(), - ) + ); } return TransactionValidationOutcome::Valid { @@ -269,7 +269,7 @@ where propagate, bytecode_hash, authorities, - } + }; } outcome } diff --git a/op-reth/dprint.json b/rust/op-reth/dprint.json similarity index 100% rename from op-reth/dprint.json rename to rust/op-reth/dprint.json diff --git a/op-reth/examples/custom-node/Cargo.toml b/rust/op-reth/examples/custom-node/Cargo.toml similarity index 100% rename from op-reth/examples/custom-node/Cargo.toml rename to rust/op-reth/examples/custom-node/Cargo.toml diff --git a/op-reth/examples/custom-node/src/chainspec.rs b/rust/op-reth/examples/custom-node/src/chainspec.rs similarity index 100% rename from op-reth/examples/custom-node/src/chainspec.rs rename to rust/op-reth/examples/custom-node/src/chainspec.rs diff --git a/op-reth/examples/custom-node/src/engine.rs b/rust/op-reth/examples/custom-node/src/engine.rs similarity index 94% rename from op-reth/examples/custom-node/src/engine.rs rename to rust/op-reth/examples/custom-node/src/engine.rs index d6d363db35613..821e890a2a93f 100644 --- a/op-reth/examples/custom-node/src/engine.rs +++ b/rust/op-reth/examples/custom-node/src/engine.rs @@ -1,8 +1,8 @@ use crate::{ + CustomNode, chainspec::CustomChainSpec, evm::CustomEvmConfig, primitives::{CustomHeader, CustomNodePrimitives, CustomTransaction}, - CustomNode, }; use alloy_eips::eip2718::WithEncoded; use alloy_primitives::Bytes; @@ -10,19 +10,19 @@ use op_alloy_rpc_types_engine::{OpExecutionData, OpExecutionPayload}; use reth_engine_primitives::EngineApiValidator; use reth_ethereum::{ node::api::{ - validate_version_specific_fields, AddOnsContext, BuiltPayload, BuiltPayloadExecutedBlock, - EngineApiMessageVersion, EngineObjectValidationError, ExecutionPayload, FullNodeComponents, - NewPayloadError, NodePrimitives, PayloadAttributes, PayloadBuilderAttributes, - PayloadOrAttributes, PayloadTypes, PayloadValidator, + AddOnsContext, BuiltPayload, BuiltPayloadExecutedBlock, EngineApiMessageVersion, + EngineObjectValidationError, ExecutionPayload, FullNodeComponents, NewPayloadError, + NodePrimitives, PayloadAttributes, PayloadBuilderAttributes, PayloadOrAttributes, + PayloadTypes, PayloadValidator, validate_version_specific_fields, }, primitives::SealedBlock, storage::StateProviderFactory, trie::{KeccakKeyHasher, KeyHasher}, }; -use reth_node_builder::{rpc::PayloadValidatorBuilder, InvalidPayloadAttributesError}; +use reth_node_builder::{InvalidPayloadAttributesError, rpc::PayloadValidatorBuilder}; use reth_op::node::{ - engine::OpEngineValidator, payload::OpAttributes, OpBuiltPayload, OpEngineTypes, - OpPayloadAttributes, OpPayloadBuilderAttributes, + OpBuiltPayload, OpEngineTypes, OpPayloadAttributes, OpPayloadBuilderAttributes, + engine::OpEngineValidator, payload::OpAttributes, }; use revm_primitives::U256; use serde::{Deserialize, Serialize}; diff --git a/op-reth/examples/custom-node/src/engine_api.rs b/rust/op-reth/examples/custom-node/src/engine_api.rs similarity index 97% rename from op-reth/examples/custom-node/src/engine_api.rs rename to rust/op-reth/examples/custom-node/src/engine_api.rs index 1a947d8ec5ddb..0aec72ecd0194 100644 --- a/op-reth/examples/custom-node/src/engine_api.rs +++ b/rust/op-reth/examples/custom-node/src/engine_api.rs @@ -1,13 +1,13 @@ use crate::{ + CustomNode, engine::{CustomExecutionData, CustomPayloadAttributes, CustomPayloadTypes}, primitives::CustomNodePrimitives, - CustomNode, }; use alloy_rpc_types_engine::{ ExecutionPayloadV3, ForkchoiceState, ForkchoiceUpdated, PayloadId, PayloadStatus, }; use async_trait::async_trait; -use jsonrpsee::{core::RpcResult, proc_macros::rpc, RpcModule}; +use jsonrpsee::{RpcModule, core::RpcResult, proc_macros::rpc}; use reth_ethereum::node::api::{ AddOnsContext, ConsensusEngineHandle, EngineApiMessageVersion, FullNodeComponents, }; @@ -55,7 +55,7 @@ pub trait CustomEngineApi { #[method(name = "getPayload")] async fn get_payload(&self, payload_id: PayloadId) - -> RpcResult; + -> RpcResult; } pub struct CustomEngineApi { diff --git a/op-reth/examples/custom-node/src/evm/alloy.rs b/rust/op-reth/examples/custom-node/src/evm/alloy.rs similarity index 93% rename from op-reth/examples/custom-node/src/evm/alloy.rs rename to rust/op-reth/examples/custom-node/src/evm/alloy.rs index d8df842cfc508..c500143cae902 100644 --- a/op-reth/examples/custom-node/src/evm/alloy.rs +++ b/rust/op-reth/examples/custom-node/src/evm/alloy.rs @@ -1,16 +1,16 @@ use crate::evm::{CustomTxEnv, PaymentTxEnv}; -use alloy_evm::{precompiles::PrecompilesMap, Database, Evm, EvmEnv, EvmFactory}; +use alloy_evm::{Database, Evm, EvmEnv, EvmFactory, precompiles::PrecompilesMap}; use alloy_op_evm::{OpEvm, OpEvmFactory}; use alloy_primitives::{Address, Bytes}; use op_revm::{ - precompiles::OpPrecompiles, L1BlockInfo, OpContext, OpHaltReason, OpSpecId, OpTransaction, - OpTransactionError, + L1BlockInfo, OpContext, OpHaltReason, OpSpecId, OpTransaction, OpTransactionError, + precompiles::OpPrecompiles, }; use reth_ethereum::evm::revm::{ - context::{result::ResultAndState, BlockEnv, CfgEnv}, + Context, Inspector, Journal, + context::{BlockEnv, CfgEnv, result::ResultAndState}, handler::PrecompileProvider, interpreter::InterpreterResult, - Context, Inspector, Journal, }; use revm::{context_interface::result::EVMError, inspector::NoOpInspector}; use std::error::Error; diff --git a/op-reth/examples/custom-node/src/evm/assembler.rs b/rust/op-reth/examples/custom-node/src/evm/assembler.rs similarity index 82% rename from op-reth/examples/custom-node/src/evm/assembler.rs rename to rust/op-reth/examples/custom-node/src/evm/assembler.rs index dd1cfd3cb46f5..2fb06eb8dc9f5 100644 --- a/op-reth/examples/custom-node/src/evm/assembler.rs +++ b/rust/op-reth/examples/custom-node/src/evm/assembler.rs @@ -8,7 +8,7 @@ use reth_ethereum::{ evm::primitives::execute::{BlockAssembler, BlockAssemblerInput}, primitives::Receipt, }; -use reth_op::{node::OpBlockAssembler, DepositReceipt}; +use reth_op::{DepositReceipt, node::OpBlockAssembler}; use std::sync::Arc; #[derive(Clone, Debug)] @@ -25,10 +25,10 @@ impl CustomBlockAssembler { impl BlockAssembler for CustomBlockAssembler where F: for<'a> BlockExecutorFactory< - ExecutionCtx<'a> = CustomBlockExecutionCtx, - Transaction = CustomTransaction, - Receipt: Receipt + DepositReceipt, - >, + ExecutionCtx<'a> = CustomBlockExecutionCtx, + Transaction = CustomTransaction, + Receipt: Receipt + DepositReceipt, + >, { type Block = Block; diff --git a/op-reth/examples/custom-node/src/evm/builder.rs b/rust/op-reth/examples/custom-node/src/evm/builder.rs similarity index 89% rename from op-reth/examples/custom-node/src/evm/builder.rs rename to rust/op-reth/examples/custom-node/src/evm/builder.rs index fe7e7cf7113ab..4be3253b9d5ec 100644 --- a/op-reth/examples/custom-node/src/evm/builder.rs +++ b/rust/op-reth/examples/custom-node/src/evm/builder.rs @@ -1,6 +1,6 @@ use crate::{chainspec::CustomChainSpec, evm::CustomEvmConfig, primitives::CustomNodePrimitives}; use reth_ethereum::node::api::FullNodeTypes; -use reth_node_builder::{components::ExecutorBuilder, BuilderContext, NodeTypes}; +use reth_node_builder::{BuilderContext, NodeTypes, components::ExecutorBuilder}; use std::{future, future::Future}; #[derive(Debug, Clone, Default)] diff --git a/op-reth/examples/custom-node/src/evm/config.rs b/rust/op-reth/examples/custom-node/src/evm/config.rs similarity index 97% rename from op-reth/examples/custom-node/src/evm/config.rs rename to rust/op-reth/examples/custom-node/src/evm/config.rs index c29ac075638d8..094e0b48de593 100644 --- a/op-reth/examples/custom-node/src/evm/config.rs +++ b/rust/op-reth/examples/custom-node/src/evm/config.rs @@ -1,11 +1,11 @@ use crate::{ chainspec::CustomChainSpec, engine::{CustomExecutionData, CustomPayloadBuilderAttributes}, - evm::{alloy::CustomEvmFactory, executor::CustomBlockExecutionCtx, CustomBlockAssembler}, + evm::{CustomBlockAssembler, alloy::CustomEvmFactory, executor::CustomBlockExecutionCtx}, primitives::{Block, CustomHeader, CustomNodePrimitives, CustomTransaction}, }; use alloy_consensus::BlockHeader; -use alloy_eips::{eip2718::WithEncoded, Decodable2718}; +use alloy_eips::{Decodable2718, eip2718::WithEncoded}; use alloy_evm::EvmEnv; use alloy_op_evm::OpBlockExecutionCtx; use alloy_rpc_types_engine::PayloadError; diff --git a/op-reth/examples/custom-node/src/evm/env.rs b/rust/op-reth/examples/custom-node/src/evm/env.rs similarity index 98% rename from op-reth/examples/custom-node/src/evm/env.rs rename to rust/op-reth/examples/custom-node/src/evm/env.rs index 53a2b4e3f150a..1ad5d140251cd 100644 --- a/op-reth/examples/custom-node/src/evm/env.rs +++ b/rust/op-reth/examples/custom-node/src/evm/env.rs @@ -1,8 +1,8 @@ use crate::primitives::{CustomTransaction, TxPayment}; -use alloy_eips::{eip2930::AccessList, Typed2718}; +use alloy_eips::{Typed2718, eip2930::AccessList}; use alloy_evm::{FromRecoveredTx, FromTxWithEncoded, IntoTxEnv}; use alloy_op_evm::block::OpTxEnv; -use alloy_primitives::{Address, Bytes, TxKind, B256, U256}; +use alloy_primitives::{Address, B256, Bytes, TxKind, U256}; use op_alloy_consensus::OpTxEnvelope; use op_revm::OpTransaction; use reth_ethereum::evm::{primitives::TransactionEnv, revm::context::TxEnv}; diff --git a/op-reth/examples/custom-node/src/evm/executor.rs b/rust/op-reth/examples/custom-node/src/evm/executor.rs similarity index 95% rename from op-reth/examples/custom-node/src/evm/executor.rs rename to rust/op-reth/examples/custom-node/src/evm/executor.rs index 3b935b4c64e5c..e396f47fc4eed 100644 --- a/op-reth/examples/custom-node/src/evm/executor.rs +++ b/rust/op-reth/examples/custom-node/src/evm/executor.rs @@ -1,22 +1,22 @@ use crate::{ evm::{ - alloy::{CustomEvm, CustomEvmFactory}, CustomEvmConfig, CustomTxEnv, + alloy::{CustomEvm, CustomEvmFactory}, }, primitives::CustomTransaction, }; use alloy_consensus::transaction::Recovered; use alloy_evm::{ + Database, Evm, RecoveredTx, block::{ BlockExecutionError, BlockExecutionResult, BlockExecutor, BlockExecutorFactory, BlockExecutorFor, ExecutableTx, OnStateHook, }, precompiles::PrecompilesMap, - Database, Evm, RecoveredTx, }; -use alloy_op_evm::{block::OpTxResult, OpBlockExecutionCtx, OpBlockExecutor}; +use alloy_op_evm::{OpBlockExecutionCtx, OpBlockExecutor, block::OpTxResult}; use reth_ethereum::evm::primitives::InspectorFor; -use reth_op::{chainspec::OpChainSpec, node::OpRethReceiptBuilder, OpReceipt, OpTxType}; +use reth_op::{OpReceipt, OpTxType, chainspec::OpChainSpec, node::OpRethReceiptBuilder}; use revm::database::State; use std::sync::Arc; diff --git a/op-reth/examples/custom-node/src/evm/mod.rs b/rust/op-reth/examples/custom-node/src/evm/mod.rs similarity index 100% rename from op-reth/examples/custom-node/src/evm/mod.rs rename to rust/op-reth/examples/custom-node/src/evm/mod.rs diff --git a/op-reth/examples/custom-node/src/lib.rs b/rust/op-reth/examples/custom-node/src/lib.rs similarity index 98% rename from op-reth/examples/custom-node/src/lib.rs rename to rust/op-reth/examples/custom-node/src/lib.rs index 4210ac9b767f7..9892f2af52919 100644 --- a/op-reth/examples/custom-node/src/lib.rs +++ b/rust/op-reth/examples/custom-node/src/lib.rs @@ -19,13 +19,14 @@ use chainspec::CustomChainSpec; use primitives::CustomNodePrimitives; use reth_ethereum::node::api::{FullNodeTypes, NodeTypes}; use reth_node_builder::{ - components::{BasicPayloadServiceBuilder, ComponentsBuilder}, Node, NodeAdapter, + components::{BasicPayloadServiceBuilder, ComponentsBuilder}, }; use reth_op::{ node::{ + OpAddOns, OpNode, node::{OpConsensusBuilder, OpNetworkBuilder, OpPayloadBuilder, OpPoolBuilder}, - txpool, OpAddOns, OpNode, + txpool, }, rpc::OpEthApiBuilder, }; diff --git a/op-reth/examples/custom-node/src/pool.rs b/rust/op-reth/examples/custom-node/src/pool.rs similarity index 96% rename from op-reth/examples/custom-node/src/pool.rs rename to rust/op-reth/examples/custom-node/src/pool.rs index 8828803a0f302..fad72be0d77a8 100644 --- a/op-reth/examples/custom-node/src/pool.rs +++ b/rust/op-reth/examples/custom-node/src/pool.rs @@ -1,14 +1,14 @@ use crate::primitives::{CustomTransaction, TxPayment}; use alloy_consensus::{ + Signed, TransactionEnvelope, crypto::RecoveryError, error::ValueError, transaction::{SignerRecoverable, TxHashRef}, - Signed, TransactionEnvelope, }; -use alloy_primitives::{Address, Sealed, B256}; +use alloy_primitives::{Address, B256, Sealed}; use op_alloy_consensus::{OpPooledTransaction, OpTransaction, TxDeposit}; use reth_ethereum::primitives::{ - serde_bincode_compat::RlpBincode, InMemorySize, SignedTransaction, + InMemorySize, SignedTransaction, serde_bincode_compat::RlpBincode, }; #[derive(Clone, Debug, TransactionEnvelope)] diff --git a/op-reth/examples/custom-node/src/primitives/block.rs b/rust/op-reth/examples/custom-node/src/primitives/block.rs similarity index 100% rename from op-reth/examples/custom-node/src/primitives/block.rs rename to rust/op-reth/examples/custom-node/src/primitives/block.rs diff --git a/op-reth/examples/custom-node/src/primitives/header.rs b/rust/op-reth/examples/custom-node/src/primitives/header.rs similarity index 95% rename from op-reth/examples/custom-node/src/primitives/header.rs rename to rust/op-reth/examples/custom-node/src/primitives/header.rs index 946bad51894c6..beaa7626f00c7 100644 --- a/op-reth/examples/custom-node/src/primitives/header.rs +++ b/rust/op-reth/examples/custom-node/src/primitives/header.rs @@ -1,8 +1,8 @@ use alloy_consensus::Header; -use alloy_primitives::{Address, BlockNumber, Bloom, Bytes, Sealable, B256, B64, U256}; +use alloy_primitives::{Address, B64, B256, BlockNumber, Bloom, Bytes, Sealable, U256}; use alloy_rlp::{Encodable, RlpDecodable, RlpEncodable}; use reth_codecs::Compact; -use reth_ethereum::primitives::{serde_bincode_compat::RlpBincode, BlockHeader, InMemorySize}; +use reth_ethereum::primitives::{BlockHeader, InMemorySize, serde_bincode_compat::RlpBincode}; use revm_primitives::keccak256; use serde::{Deserialize, Serialize}; diff --git a/op-reth/examples/custom-node/src/primitives/mod.rs b/rust/op-reth/examples/custom-node/src/primitives/mod.rs similarity index 100% rename from op-reth/examples/custom-node/src/primitives/mod.rs rename to rust/op-reth/examples/custom-node/src/primitives/mod.rs diff --git a/op-reth/examples/custom-node/src/primitives/tx.rs b/rust/op-reth/examples/custom-node/src/primitives/tx.rs similarity index 95% rename from op-reth/examples/custom-node/src/primitives/tx.rs rename to rust/op-reth/examples/custom-node/src/primitives/tx.rs index fe763e079e51b..803d5d238b68b 100644 --- a/op-reth/examples/custom-node/src/primitives/tx.rs +++ b/rust/op-reth/examples/custom-node/src/primitives/tx.rs @@ -1,19 +1,19 @@ use super::TxPayment; use alloy_consensus::{ + Signed, TransactionEnvelope, crypto::RecoveryError, transaction::{SignerRecoverable, TxHashRef}, - Signed, TransactionEnvelope, }; use alloy_eips::Encodable2718; -use alloy_primitives::{Sealed, Signature, B256}; +use alloy_primitives::{B256, Sealed, Signature}; use alloy_rlp::BufMut; use op_alloy_consensus::{OpTxEnvelope, TxDeposit}; use reth_codecs::{ - alloy::transaction::{CompactEnvelope, FromTxCompact, ToTxCompact}, Compact, + alloy::transaction::{CompactEnvelope, FromTxCompact, ToTxCompact}, }; -use reth_ethereum::primitives::{serde_bincode_compat::RlpBincode, InMemorySize}; -use reth_op::{primitives::SignedTransaction, OpTransaction}; +use reth_ethereum::primitives::{InMemorySize, serde_bincode_compat::RlpBincode}; +use reth_op::{OpTransaction, primitives::SignedTransaction}; use revm_primitives::Address; /// Either [`OpTxEnvelope`] or [`TxPayment`]. diff --git a/op-reth/examples/custom-node/src/primitives/tx_custom.rs b/rust/op-reth/examples/custom-node/src/primitives/tx_custom.rs similarity index 96% rename from op-reth/examples/custom-node/src/primitives/tx_custom.rs rename to rust/op-reth/examples/custom-node/src/primitives/tx_custom.rs index 210696f49c6c8..d65012df1711a 100644 --- a/op-reth/examples/custom-node/src/primitives/tx_custom.rs +++ b/rust/op-reth/examples/custom-node/src/primitives/tx_custom.rs @@ -1,12 +1,12 @@ use crate::primitives::PAYMENT_TX_TYPE_ID; use alloy_consensus::{ - transaction::{RlpEcdsaDecodableTx, RlpEcdsaEncodableTx}, SignableTransaction, Transaction, + transaction::{RlpEcdsaDecodableTx, RlpEcdsaEncodableTx}, }; -use alloy_eips::{eip2930::AccessList, eip7702::SignedAuthorization, Typed2718}; -use alloy_primitives::{Address, Bytes, ChainId, Signature, TxKind, B256, U256}; +use alloy_eips::{Typed2718, eip2930::AccessList, eip7702::SignedAuthorization}; +use alloy_primitives::{Address, B256, Bytes, ChainId, Signature, TxKind, U256}; use alloy_rlp::{BufMut, Decodable, Encodable}; -use reth_ethereum::primitives::{serde_bincode_compat::RlpBincode, InMemorySize}; +use reth_ethereum::primitives::{InMemorySize, serde_bincode_compat::RlpBincode}; /// A transaction with a priority fee ([EIP-1559](https://eips.ethereum.org/EIPS/eip-1559)). #[derive( diff --git a/op-reth/examples/custom-node/src/primitives/tx_type.rs b/rust/op-reth/examples/custom-node/src/primitives/tx_type.rs similarity index 94% rename from op-reth/examples/custom-node/src/primitives/tx_type.rs rename to rust/op-reth/examples/custom-node/src/primitives/tx_type.rs index 46c7de3f5cd5b..338c49819fbdd 100644 --- a/op-reth/examples/custom-node/src/primitives/tx_type.rs +++ b/rust/op-reth/examples/custom-node/src/primitives/tx_type.rs @@ -1,6 +1,6 @@ use crate::primitives::TxTypeCustom; use alloy_primitives::bytes::{Buf, BufMut}; -use reth_codecs::{txtype::COMPACT_EXTENDED_IDENTIFIER_FLAG, Compact}; +use reth_codecs::{Compact, txtype::COMPACT_EXTENDED_IDENTIFIER_FLAG}; pub const PAYMENT_TX_TYPE_ID: u8 = 42; diff --git a/op-reth/examples/custom-node/src/rpc.rs b/rust/op-reth/examples/custom-node/src/rpc.rs similarity index 100% rename from op-reth/examples/custom-node/src/rpc.rs rename to rust/op-reth/examples/custom-node/src/rpc.rs diff --git a/op-reth/examples/engine-api-access/Cargo.toml b/rust/op-reth/examples/engine-api-access/Cargo.toml similarity index 100% rename from op-reth/examples/engine-api-access/Cargo.toml rename to rust/op-reth/examples/engine-api-access/Cargo.toml diff --git a/op-reth/examples/engine-api-access/src/main.rs b/rust/op-reth/examples/engine-api-access/src/main.rs similarity index 93% rename from op-reth/examples/engine-api-access/src/main.rs rename to rust/op-reth/examples/engine-api-access/src/main.rs index 5f43d94bf6e1a..8702301117742 100644 --- a/op-reth/examples/engine-api-access/src/main.rs +++ b/rust/op-reth/examples/engine-api-access/src/main.rs @@ -10,7 +10,7 @@ use reth_db::test_utils::create_test_rw_db; use reth_node_builder::{EngineApiExt, FullNodeComponents, NodeBuilder, NodeConfig}; use reth_optimism_chainspec::BASE_MAINNET; use reth_optimism_node::{ - args::RollupArgs, node::OpEngineValidatorBuilder, OpAddOns, OpEngineApiBuilder, OpNode, + OpAddOns, OpEngineApiBuilder, OpNode, args::RollupArgs, node::OpEngineValidatorBuilder, }; use tokio::sync::oneshot; diff --git a/op-reth/examples/exex-hello-world/Cargo.toml b/rust/op-reth/examples/exex-hello-world/Cargo.toml similarity index 100% rename from op-reth/examples/exex-hello-world/Cargo.toml rename to rust/op-reth/examples/exex-hello-world/Cargo.toml diff --git a/op-reth/examples/exex-hello-world/src/main.rs b/rust/op-reth/examples/exex-hello-world/src/main.rs similarity index 100% rename from op-reth/examples/exex-hello-world/src/main.rs rename to rust/op-reth/examples/exex-hello-world/src/main.rs index 3e86ee785a212..68b6afc00d448 100644 --- a/op-reth/examples/exex-hello-world/src/main.rs +++ b/rust/op-reth/examples/exex-hello-world/src/main.rs @@ -12,9 +12,9 @@ use reth_ethereum::{ chainspec::EthereumHardforks, exex::{ExExContext, ExExEvent, ExExNotification}, node::{ + EthereumNode, api::{FullNodeComponents, NodeTypes}, builder::rpc::RpcHandle, - EthereumNode, }, rpc::api::eth::helpers::FullEthApi, }; diff --git a/op-reth/examples/op-db-access/Cargo.toml b/rust/op-reth/examples/op-db-access/Cargo.toml similarity index 100% rename from op-reth/examples/op-db-access/Cargo.toml rename to rust/op-reth/examples/op-db-access/Cargo.toml diff --git a/op-reth/examples/op-db-access/src/main.rs b/rust/op-reth/examples/op-db-access/src/main.rs similarity index 100% rename from op-reth/examples/op-db-access/src/main.rs rename to rust/op-reth/examples/op-db-access/src/main.rs diff --git a/op-reth/flake.lock b/rust/op-reth/flake.lock similarity index 100% rename from op-reth/flake.lock rename to rust/op-reth/flake.lock diff --git a/op-reth/flake.nix b/rust/op-reth/flake.nix similarity index 100% rename from op-reth/flake.nix rename to rust/op-reth/flake.nix diff --git a/op-reth/funding.json b/rust/op-reth/funding.json similarity index 100% rename from op-reth/funding.json rename to rust/op-reth/funding.json diff --git a/op-reth/justfile b/rust/op-reth/justfile similarity index 67% rename from op-reth/justfile rename to rust/op-reth/justfile index da12e5c8aa17b..02a445fa3cbb7 100644 --- a/op-reth/justfile +++ b/rust/op-reth/justfile @@ -14,8 +14,17 @@ test edge='': --features "asm-keccak {{edge}}" --locked \ --workspace \ --no-tests=warn \ - -E "!kind(test) and not binary(e2e_testsuite)" + -E "!kind(test) and not binary(e2e_testsuite) and not test(test_online)" # Run integration tests for reth-optimism-node test-integration: RUST_BACKTRACE=1 cargo nextest run --locked -p reth-optimism-node + +# Check Windows cross-compilation +check-windows: + rustup target add x86_64-pc-windows-gnu + cargo check -p op-reth --target x86_64-pc-windows-gnu + +# Build all examples +examples: + cargo build --examples --locked diff --git a/kona/rust-toolchain.toml b/rust/rust-toolchain.toml similarity index 100% rename from kona/rust-toolchain.toml rename to rust/rust-toolchain.toml diff --git a/alloy-op-evm/rustfmt.toml b/rust/rustfmt.toml similarity index 70% rename from alloy-op-evm/rustfmt.toml rename to rust/rustfmt.toml index 3063df707a64e..94a9b0349def2 100644 --- a/alloy-op-evm/rustfmt.toml +++ b/rust/rustfmt.toml @@ -1,12 +1,9 @@ -reorder_imports = true -use_field_init_shorthand = true +style_edition = "2024" +imports_granularity = "Crate" use_small_heuristics = "Max" - -# Nightly -max_width = 100 comment_width = 100 -imports_granularity = "Crate" wrap_comments = true +binop_separator = "Back" format_code_in_doc_comments = true doc_comment_code_block_width = 100 format_macro_matchers = true diff --git a/kona/typos.toml b/rust/typos.toml similarity index 56% rename from kona/typos.toml rename to rust/typos.toml index 85a9527a25af7..ece6f3865c5e2 100644 --- a/kona/typos.toml +++ b/rust/typos.toml @@ -1,12 +1,31 @@ [files] extend-exclude = [ + ".git", "target", "Cargo.lock", - "docker/recipes/kona-node-dev/kona-node/bootstores", + "kona/docker/recipes/kona-node-dev/kona-node/bootstores", + "op-alloy/book/mermaid*.js", + "op-alloy/book/dist/", + "op-alloy/book/theme/", + "*.min.js", + "op-alloy/CHANGELOG.md", + "op-reth/crates/storage/libmdbx-rs/mdbx-sys/libmdbx", + "op-reth/testing/ef-tests", ] [default] extend-ignore-re = [ + # Hex strings of various lengths + "(?i)0x[0-9a-f]{8,}", + "(?i)[0-9a-f]{32,}", + "(?i)[0-9a-f]{8}", + "(?i)[0-9a-f]{40}", + "(?i)[0-9a-f]{64}", + # Ordinals in identifiers + "[0-9]+nd", + "[0-9]+th", + "[0-9]+st", + "[0-9]+rd", # Base64 encoded strings (common in tests and configs) "[A-Za-z0-9+/]{20,}={0,2}", ] @@ -31,7 +50,8 @@ derivation = "derivation" enr = "enr" ethereum = "ethereum" fpvm = "fpvm" -hel = "hel" # Part of hostname bootnode-hetzner-hel +geth = "geth" +hel = "hel" interop = "interop" kona = "kona" libmdbx = "libmdbx" @@ -45,13 +65,13 @@ risc = "risc" rollup = "rollup" rpc = "rpc" sequencer = "sequencer" -ser = "ser" # Serialization abbreviation +ser = "ser" serde = "serde" supervisor = "supervisor" superchain = "superchain" trie = "trie" -txs = "txs" # Transactions abbreviation -udeps = "udeps" # Unused dependencies tool +txs = "txs" +udeps = "udeps" usize = "usize" workspaces = "workspaces" @@ -64,7 +84,7 @@ env = "env" impl = "impl" io = "io" lru = "lru" -mpt = "mpt" # Merkle Patricia Trie +mpt = "mpt" msg = "msg" mut = "mut" nums = "nums" @@ -72,11 +92,24 @@ num = "num" ok = "ok" std = "std" structs = "structs" -ty = "ty" # Type abbreviation -vec = "vec" +ty = "ty" typ = "typ" +vec = "vec" + +# Additional project-specific terms +flate = "flate" +ratatui = "ratatui" +superseed = "superseed" +jsonrpsee = "jsonrpsee" +tokio = "tokio" +async = "async" +await = "await" -# Additional allowed words from typos scan -flate = "flate" # zlib-flate tool name -ratatui = "ratatui" # TUI crate name -superseed = "superseed" # Superseed network name (proper noun) \ No newline at end of file +# op-reth specific +seeked = "seeked" +Seeked = "Seeked" +Whe = "Whe" +ONL = "ONL" +Iy = "Iy" +Pn = "Pn" +BA = "BA"