From 08de37b3603cc634e1f74e537326cef92061bbc6 Mon Sep 17 00:00:00 2001 From: Jesse Schulman Date: Sat, 17 Aug 2024 10:02:53 -0700 Subject: [PATCH] Telos crate/binary, e2e test --- .github/CODEOWNERS | 47 - .github/ISSUE_TEMPLATE/bug.yml | 115 - .github/ISSUE_TEMPLATE/config.yml | 5 - .github/ISSUE_TEMPLATE/docs.yml | 19 - .github/ISSUE_TEMPLATE/feature.yml | 21 - .github/assets/check_wasm.sh | 65 - .github/assets/hive/Dockerfile | 8 - .github/assets/hive/build_simulators.sh | 38 - .github/assets/hive/expected_failures.yaml | 120 - .github/assets/hive/load_images.sh | 25 - .github/assets/hive/no_sim_build.diff | 53 - .github/assets/hive/parse.py | 43 - .github/assets/hive/run_simulator.sh | 38 - .github/assets/install_geth.sh | 23 - .github/assets/label_pr.js | 57 - .github/dependabot.yml | 6 - .github/workflows/assertoor.yml | 230 -- .github/workflows/bench.yml | 60 - .github/workflows/book.yml | 135 -- .github/workflows/deny.yml | 27 - .github/workflows/dependencies.yml | 61 - .github/workflows/docker.yml | 48 - .github/workflows/eth-sync.yml | 53 - .github/workflows/hive.yml | 244 -- .github/workflows/integration.yml | 62 - .github/workflows/label-pr.yml | 23 - .github/workflows/lint-actions.yml | 22 - .github/workflows/lint.yml | 209 -- .github/workflows/op-sync.yml | 56 - .github/workflows/release-dist.yml | 20 - .github/workflows/release.yml | 197 -- .github/workflows/stage.yml | 72 - .github/workflows/stale.yml | 29 - .github/workflows/telos_ci.yml | 0 .github/workflows/unit.yml | 100 - Cargo.lock | 2086 ++++++++++++++--- Cargo.toml | 13 +- TELOS_README.md | 11 + bin/reth/Cargo.toml | 31 + bin/reth/src/main.rs | 1 + bin/reth/src/telos.rs | 49 + crates/blockchain-tree-api/Cargo.toml | 3 + crates/blockchain-tree-api/src/lib.rs | 3 + crates/blockchain-tree/Cargo.toml | 3 + crates/blockchain-tree/src/blockchain_tree.rs | 26 +- crates/consensus/common/Cargo.toml | 3 + crates/consensus/common/src/calc.rs | 6 + crates/consensus/common/src/validation.rs | 3 + crates/engine/util/Cargo.toml | 3 + crates/ethereum/payload/Cargo.toml | 5 + crates/evm/Cargo.toml | 3 + crates/evm/execution-types/Cargo.toml | 3 + crates/optimism/evm/Cargo.toml | 1 + crates/payload/basic/Cargo.toml | 5 + crates/payload/builder/Cargo.toml | 5 +- crates/primitives/Cargo.toml | 3 + crates/primitives/src/transaction/mod.rs | 13 +- .../primitives/src/transaction/signature.rs | 14 +- crates/revm/Cargo.toml | 3 + crates/rpc/rpc-eth-types/Cargo.toml | 5 +- crates/rpc/rpc-types-compat/Cargo.toml | 1 + .../rpc-types-compat/src/engine/payload.rs | 7 +- crates/rpc/rpc/Cargo.toml | 3 + crates/stages/stages/Cargo.toml | 1 + crates/stages/stages/src/stages/merkle.rs | 16 +- .../stages/src/stages/sender_recovery.rs | 2 +- crates/storage/provider/Cargo.toml | 3 + .../src/providers/database/provider.rs | 43 +- crates/telos/node/Cargo.toml | 49 + crates/telos/node/src/args.rs | 45 + crates/telos/node/src/lib.rs | 15 + crates/telos/node/src/node.rs | 78 + crates/telos/node/tests/assets/jwt.hex | 1 + crates/telos/node/tests/integration.rs | 134 ++ crates/telos/rpc/Cargo.toml | 21 + crates/telos/rpc/src/client.rs | 102 + crates/telos/rpc/src/lib.rs | 3 + crates/transaction-pool/Cargo.toml | 3 + crates/trie/db/Cargo.toml | 3 + crates/trie/trie/Cargo.toml | 3 + 80 files changed, 2447 insertions(+), 2718 deletions(-) delete mode 100644 .github/CODEOWNERS delete mode 100644 .github/ISSUE_TEMPLATE/bug.yml delete mode 100644 .github/ISSUE_TEMPLATE/config.yml delete mode 100644 .github/ISSUE_TEMPLATE/docs.yml delete mode 100644 .github/ISSUE_TEMPLATE/feature.yml delete mode 100755 .github/assets/check_wasm.sh delete mode 100644 .github/assets/hive/Dockerfile delete mode 100755 .github/assets/hive/build_simulators.sh delete mode 100644 .github/assets/hive/expected_failures.yaml delete mode 100755 .github/assets/hive/load_images.sh delete mode 100644 .github/assets/hive/no_sim_build.diff delete mode 100644 .github/assets/hive/parse.py delete mode 100755 .github/assets/hive/run_simulator.sh delete mode 100755 .github/assets/install_geth.sh delete mode 100644 .github/assets/label_pr.js delete mode 100644 .github/dependabot.yml delete mode 100644 .github/workflows/assertoor.yml delete mode 100644 .github/workflows/bench.yml delete mode 100644 .github/workflows/book.yml delete mode 100644 .github/workflows/deny.yml delete mode 100644 .github/workflows/dependencies.yml delete mode 100644 .github/workflows/docker.yml delete mode 100644 .github/workflows/eth-sync.yml delete mode 100644 .github/workflows/hive.yml delete mode 100644 .github/workflows/integration.yml delete mode 100644 .github/workflows/label-pr.yml delete mode 100644 .github/workflows/lint-actions.yml delete mode 100644 .github/workflows/lint.yml delete mode 100644 .github/workflows/op-sync.yml delete mode 100644 .github/workflows/release-dist.yml delete mode 100644 .github/workflows/release.yml delete mode 100644 .github/workflows/stage.yml delete mode 100644 .github/workflows/stale.yml create mode 100644 .github/workflows/telos_ci.yml delete mode 100644 .github/workflows/unit.yml create mode 100644 TELOS_README.md create mode 100644 bin/reth/src/telos.rs create mode 100644 crates/telos/node/Cargo.toml create mode 100644 crates/telos/node/src/args.rs create mode 100644 crates/telos/node/src/lib.rs create mode 100644 crates/telos/node/src/node.rs create mode 100644 crates/telos/node/tests/assets/jwt.hex create mode 100644 crates/telos/node/tests/integration.rs create mode 100644 crates/telos/rpc/Cargo.toml create mode 100644 crates/telos/rpc/src/client.rs create mode 100644 crates/telos/rpc/src/lib.rs diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS deleted file mode 100644 index 74263b766da2f..0000000000000 --- a/.github/CODEOWNERS +++ /dev/null @@ -1,47 +0,0 @@ -* @gakonst -bin/ @onbjerg -crates/blockchain-tree/ @rakita @rkrasiuk @mattsse @Rjected -crates/blockchain-tree-api/ @rakita @rkrasiuk @mattsse @Rjected -crates/chainspec/ @Rjected @joshieDo @mattsse -crates/chain-state/ @fgimenez @mattsse @rkrasiuk -crates/cli/ @onbjerg @mattsse -crates/config/ @onbjerg -crates/consensus/ @rkrasiuk @mattsse @Rjected -crates/engine @rkrasiuk @mattsse @Rjected -crates/e2e-test-utils/ @mattsse @Rjected -crates/engine/ @rkrasiuk @mattsse @Rjected @fgimenez -crates/errors/ @mattsse -crates/ethereum/ @mattsse @Rjected -crates/ethereum-forks/ @mattsse @Rjected -crates/etl/ @joshieDo @shekhirin -crates/evm/ @rakita @mattsse @Rjected -crates/exex/ @onbjerg @shekhirin -crates/fs-util/ @onbjerg @emhane -crates/metrics/ @onbjerg -crates/net/ @emhane @mattsse @Rjected -crates/net/downloaders/ @onbjerg @rkrasiuk @emhane -crates/node/ @mattsse @Rjected @onbjerg -crates/optimism/ @mattsse @Rjected @fgimenez -crates/payload/ @mattsse @Rjected -crates/primitives/ @Rjected -crates/primitives-traits/ @Rjected @joshieDo -crates/prune/ @shekhirin @joshieDo -crates/revm/ @mattsse @rakita -crates/rpc/ @mattsse @Rjected @emhane -crates/stages/ @onbjerg @rkrasiuk @shekhirin -crates/static-file/ @joshieDo @shekhirin -crates/storage/codecs/ @joshieDo -crates/storage/db/ @joshieDo @rakita -crates/storage/db-api/ @joshieDo @rakita -crates/storage/db-common/ @Rjected @onbjerg -crates/storage/errors/ @rakita @onbjerg -crates/storage/libmdbx-rs/ @rakita @shekhirin -crates/storage/nippy-jar/ @joshieDo @shekhirin -crates/storage/provider/ @rakita @joshieDo @shekhirin -crates/storage/storage-api/ @joshieDo @rkrasiuk -crates/tasks/ @mattsse -crates/tokio-util/ @fgimenez @emhane -crates/tracing/ @onbjerg -crates/transaction-pool/ @mattsse -crates/trie/ @rkrasiuk @Rjected -.github/ @onbjerg @gakonst @DaniPopes diff --git a/.github/ISSUE_TEMPLATE/bug.yml b/.github/ISSUE_TEMPLATE/bug.yml deleted file mode 100644 index 1142a5bf251c6..0000000000000 --- a/.github/ISSUE_TEMPLATE/bug.yml +++ /dev/null @@ -1,115 +0,0 @@ -name: Bug Report -description: Create a bug report -labels: ["C-bug", "S-needs-triage"] -body: - - type: markdown - attributes: - value: | - Thanks for taking the time to fill out this bug report! Please provide as much detail as possible. - - If you believe you have found a vulnerability, please provide details [here](mailto:georgios@paradigm.xyz) instead. - - type: textarea - id: what-happened - attributes: - label: Describe the bug - description: | - A clear and concise description of what the bug is. - - If the bug is in a crate you are using (i.e. you are not running the standard `reth` binary) please mention that as well. - validations: - required: true - - type: textarea - id: reproduction-steps - attributes: - label: Steps to reproduce - description: Please provide any steps you think might be relevant to reproduce the bug. - placeholder: | - Steps to reproduce: - - 1. Start '...' - 2. Then '...' - 3. Check '...' - 4. See error - validations: - required: true - - type: textarea - id: logs - attributes: - label: Node logs - description: | - If applicable, please provide the node logs leading up to the bug. - - **Please also provide debug logs.** By default, these can be found in: - - - `~/.cache/reth/logs` on Linux - - `~/Library/Caches/reth/logs` on macOS - - `%localAppData%/reth/logs` on Windows - render: text - validations: - required: false - - type: dropdown - id: platform - attributes: - label: Platform(s) - description: What platform(s) did this occur on? - multiple: true - options: - - Linux (x86) - - Linux (ARM) - - Mac (Intel) - - Mac (Apple Silicon) - - Windows (x86) - - Windows (ARM) - validations: - required: true - - type: textarea - id: client-version - attributes: - label: What version/commit are you on? - description: This can be obtained with `reth --version` - validations: - required: true - - type: textarea - id: database-version - attributes: - label: What database version are you on? - description: This can be obtained with `reth db version` - validations: - required: true - - type: textarea - id: network - attributes: - label: Which chain / network are you on? - description: This is the argument you pass to `reth --chain`. If you are using `--dev`, type in 'dev' here. If you are not running with `--chain` or `--dev` then it is mainnet. - validations: - required: true - - type: dropdown - id: node-type - attributes: - label: What type of node are you running? - options: - - Archive (default) - - Full via --full flag - - Pruned with custom reth.toml config - validations: - required: true - - type: textarea - id: prune-config - attributes: - label: What prune config do you use, if any? - description: The `[prune]` section in `reth.toml` file - validations: - required: false - - type: input - attributes: - label: If you've built Reth from source, provide the full command you used - validations: - required: false - - type: checkboxes - id: terms - attributes: - label: Code of Conduct - description: By submitting this issue, you agree to follow our [Code of Conduct](https://github.com/paradigmxyz/reth/blob/main/CONTRIBUTING.md#code-of-conduct) - options: - - label: I agree to follow the Code of Conduct - required: true diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml deleted file mode 100644 index cfefdb13a6952..0000000000000 --- a/.github/ISSUE_TEMPLATE/config.yml +++ /dev/null @@ -1,5 +0,0 @@ -blank_issues_enabled: false -contact_links: - - name: GitHub Discussions - url: https://github.com/paradigmxyz/reth/discussions - about: Please ask and answer questions here to keep the issue tracker clean. diff --git a/.github/ISSUE_TEMPLATE/docs.yml b/.github/ISSUE_TEMPLATE/docs.yml deleted file mode 100644 index c1c1c2d51b43b..0000000000000 --- a/.github/ISSUE_TEMPLATE/docs.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: Documentation -description: Suggest a change to our documentation -labels: ["C-docs", "S-needs-triage"] -body: - - type: markdown - attributes: - value: | - If you are unsure if the docs are relevant or needed, please open up a discussion first. - - type: textarea - attributes: - label: Describe the change - description: | - Please describe the documentation you want to change or add, and if it is for end-users or contributors. - validations: - required: true - - type: textarea - attributes: - label: Additional context - description: Add any other context to the feature (like screenshots, resources) diff --git a/.github/ISSUE_TEMPLATE/feature.yml b/.github/ISSUE_TEMPLATE/feature.yml deleted file mode 100644 index 005c33ae3faa8..0000000000000 --- a/.github/ISSUE_TEMPLATE/feature.yml +++ /dev/null @@ -1,21 +0,0 @@ -name: Feature request -description: Suggest a feature -labels: ["C-enhancement", "S-needs-triage"] -body: - - type: markdown - attributes: - value: | - Please ensure that the feature has not already been requested in the issue tracker. - - type: textarea - attributes: - label: Describe the feature - description: | - Please describe the feature and what it is aiming to solve, if relevant. - - If the feature is for a crate, please include a proposed API surface. - validations: - required: true - - type: textarea - attributes: - label: Additional context - description: Add any other context to the feature (like screenshots, resources) diff --git a/.github/assets/check_wasm.sh b/.github/assets/check_wasm.sh deleted file mode 100755 index 7cd93f6ac5c47..0000000000000 --- a/.github/assets/check_wasm.sh +++ /dev/null @@ -1,65 +0,0 @@ -#!/usr/bin/env bash -set +e # Disable immediate exit on error - -# Array of crates -wasm_crates=( - # The following were confirmed not working in the past, but could be enabled if issues have been resolved - # reth-consensus - # reth-db - # reth-evm-ethereum - # The following are confirmed working - reth-codecs - reth-errors - reth-ethereum-forks - reth-evm - reth-network-peers - reth-primitives - reth-primitives-traits - reth-revm -) - -# Array to hold the results -results=() -# Flag to track if any command fails -any_failed=0 - -for crate in "${wasm_crates[@]}"; do - cmd="cargo +stable build -p $crate --target wasm32-wasip1 --no-default-features" - - if [ -n "$CI" ]; then - echo "::group::$cmd" - else - printf "\n%s:\n %s\n" "$crate" "$cmd" - fi - - # Run the command and capture the return code - $cmd - ret_code=$? - - # Store the result in the dictionary - if [ $ret_code -eq 0 ]; then - results+=("✅:$crate") - else - results+=("❌:$crate") - any_failed=1 - fi - - if [ -n "$CI" ]; then - echo "::endgroup::" - fi -done - -# Sort the results by status and then by crate name -IFS=$'\n' sorted_results=($(sort <<<"${results[*]}")) -unset IFS - -# Print summary -echo -e "\nSummary of build results:" -for result in "${sorted_results[@]}"; do - status="${result%%:*}" - crate="${result##*:}" - echo "$status $crate" -done - -# Exit with a non-zero status if any command fails -exit $any_failed diff --git a/.github/assets/hive/Dockerfile b/.github/assets/hive/Dockerfile deleted file mode 100644 index 9f75ba6f1cf22..0000000000000 --- a/.github/assets/hive/Dockerfile +++ /dev/null @@ -1,8 +0,0 @@ -FROM ubuntu - -COPY dist/reth /usr/local/bin - -COPY LICENSE-* ./ - -EXPOSE 30303 30303/udp 9001 8545 8546 -ENTRYPOINT ["/usr/local/bin/reth"] \ No newline at end of file diff --git a/.github/assets/hive/build_simulators.sh b/.github/assets/hive/build_simulators.sh deleted file mode 100755 index 45583d549a37a..0000000000000 --- a/.github/assets/hive/build_simulators.sh +++ /dev/null @@ -1,38 +0,0 @@ -#!/usr/bin/env bash -set -eo pipefail - -# Create the hive_assets directory -mkdir hive_assets/ - -cd hivetests -go build . - -./hive -client reth # first builds and caches the client - -# Run each hive command in the background for each simulator and wait -echo "Building images" -./hive -client reth --sim "pyspec" -sim.timelimit 1s || true & -./hive -client reth --sim "ethereum/engine" -sim.timelimit 1s || true & -./hive -client reth --sim "devp2p" -sim.timelimit 1s || true & -./hive -client reth --sim "ethereum/rpc-compat" -sim.timelimit 1s || true & -./hive -client reth --sim "smoke/genesis" -sim.timelimit 1s || true & -./hive -client reth --sim "smoke/network" -sim.timelimit 1s || true & -./hive -client reth --sim "ethereum/sync" -sim.timelimit 1s || true & -wait - -# Run docker save in parallel and wait -echo "Saving images" -docker save hive/hiveproxy:latest -o ../hive_assets/hiveproxy.tar & -docker save hive/simulators/devp2p:latest -o ../hive_assets/devp2p.tar & -docker save hive/simulators/ethereum/engine:latest -o ../hive_assets/engine.tar & -docker save hive/simulators/ethereum/rpc-compat:latest -o ../hive_assets/rpc_compat.tar & -docker save hive/simulators/ethereum/pyspec:latest -o ../hive_assets/pyspec.tar & -docker save hive/simulators/smoke/genesis:latest -o ../hive_assets/smoke_genesis.tar & -docker save hive/simulators/smoke/network:latest -o ../hive_assets/smoke_network.tar & -docker save hive/simulators/ethereum/sync:latest -o ../hive_assets/ethereum_sync.tar & -wait - -# Make sure we don't rebuild images on the CI jobs -git apply ../.github/assets/hive/no_sim_build.diff -go build . -mv ./hive ../hive_assets/ \ No newline at end of file diff --git a/.github/assets/hive/expected_failures.yaml b/.github/assets/hive/expected_failures.yaml deleted file mode 100644 index 61ff69ecab6a7..0000000000000 --- a/.github/assets/hive/expected_failures.yaml +++ /dev/null @@ -1,120 +0,0 @@ -# https://github.com/paradigmxyz/reth/issues/7015 -# https://github.com/paradigmxyz/reth/issues/6332 -rpc-compat: - - debug_getRawBlock/get-invalid-number (reth) - - debug_getRawHeader/get-invalid-number (reth) - - debug_getRawReceipts/get-invalid-number (reth) - - debug_getRawTransaction/get-invalid-hash (reth) - - - eth_call/call-callenv (reth) - - eth_createAccessList/create-al-contract-eip1559 (reth) - - eth_createAccessList/create-al-contract (reth) - - eth_feeHistory/fee-history (reth) - - eth_getStorageAt/get-storage-invalid-key-too-large (reth) - - eth_getStorageAt/get-storage-invalid-key (reth) - - eth_getTransactionReceipt/get-access-list (reth) - - eth_getTransactionReceipt/get-blob-tx (reth) - - eth_getTransactionReceipt/get-dynamic-fee (reth) - -# https://github.com/paradigmxyz/reth/issues/8732 -engine-withdrawals: - - Withdrawals Fork On Genesis (Paris) (reth) - - Withdrawals Fork on Block 1 (Paris) (reth) - - Withdrawals Fork on Block 2 (Paris) (reth) - - Withdrawals Fork on Block 3 (Paris) (reth) - - Withdraw to a single account (Paris) (reth) - - Withdraw to two accounts (Paris) (reth) - - Withdraw many accounts (Paris) (reth) - - Withdraw zero amount (Paris) (reth) - - Empty Withdrawals (Paris) (reth) - - Corrupted Block Hash Payload (INVALID) (Paris) (reth) - - Withdrawals Fork on Block 1 - 8 Block Re-Org NewPayload (Paris) (reth) - - Withdrawals Fork on Block 1 - 8 Block Re-Org, Sync (Paris) (reth) - - Withdrawals Fork on Block 8 - 10 Block Re-Org NewPayload (Paris) (reth) - - Withdrawals Fork on Block 8 - 10 Block Re-Org Sync (Paris) (reth) - - Withdrawals Fork on Canonical Block 8 / Side Block 7 - 10 Block Re-Org (Paris) (reth) - - Withdrawals Fork on Canonical Block 8 / Side Block 7 - 10 Block Re-Org Sync (Paris) (reth) - - Withdrawals Fork on Canonical Block 8 / Side Block 9 - 10 Block Re-Org (Paris) (reth) - - Withdrawals Fork on Canonical Block 8 / Side Block 9 - 10 Block Re-Org Sync (Paris) (reth) - -# https://github.com/paradigmxyz/reth/issues/8305 -# https://github.com/paradigmxyz/reth/issues/6217 -engine-api: - - Inconsistent Head in ForkchoiceState (Paris) (reth) - - Invalid NewPayload, StateRoot, Syncing=True, EmptyTxs=True, DynFeeTxs=False (Paris) (reth) - - Invalid NewPayload, StateRoot, Syncing=True, EmptyTxs=False, DynFeeTxs=False (Paris) (reth) - - Invalid NewPayload, PrevRandao, Syncing=True, EmptyTxs=False, DynFeeTxs=False (Paris) (reth) - - Invalid Missing Ancestor Syncing ReOrg, StateRoot, EmptyTxs=True, CanonicalReOrg=False, Invalid P9 (Paris) (reth) - - Invalid Missing Ancestor Syncing ReOrg, StateRoot, EmptyTxs=False, CanonicalReOrg=False, Invalid P9 (Paris) (reth) - - Invalid Missing Ancestor Syncing ReOrg, StateRoot, EmptyTxs=True, CanonicalReOrg=True, Invalid P9 (Paris) (reth) - - Invalid Missing Ancestor Syncing ReOrg, StateRoot, EmptyTxs=False, CanonicalReOrg=True, Invalid P9 (Paris) (reth) - - Invalid Missing Ancestor Syncing ReOrg, GasLimit, EmptyTxs=False, CanonicalReOrg=False, Invalid P8 (Paris) (reth) - - Invalid Missing Ancestor Syncing ReOrg, Timestamp, EmptyTxs=False, CanonicalReOrg=False, Invalid P8 (Paris) (reth) - - # Hive issue - # https://github.com/ethereum/hive/issues/1135 - - Invalid Missing Ancestor Syncing ReOrg, Transaction Signature, EmptyTxs=False, CanonicalReOrg=False, Invalid P9 (Paris) (reth) - - Invalid Missing Ancestor Syncing ReOrg, Transaction Signature, EmptyTxs=False, CanonicalReOrg=True, Invalid P9 (Paris) (reth) - - Invalid Missing Ancestor Syncing ReOrg, Transaction Nonce, EmptyTxs=False, CanonicalReOrg=False, Invalid P9 (Paris) (reth) - - Invalid Missing Ancestor Syncing ReOrg, Transaction Nonce, EmptyTxs=False, CanonicalReOrg=True, Invalid P9 (Paris) (reth) - - Invalid Missing Ancestor Syncing ReOrg, Transaction Gas, EmptyTxs=False, CanonicalReOrg=False, Invalid P9 (Paris) (reth) - - Invalid Missing Ancestor Syncing ReOrg, Transaction Gas, EmptyTxs=False, CanonicalReOrg=True, Invalid P9 (Paris) (reth) - - Invalid Missing Ancestor Syncing ReOrg, Transaction GasPrice, EmptyTxs=False, CanonicalReOrg=False, Invalid P9 (Paris) (reth) - - Invalid Missing Ancestor Syncing ReOrg, Transaction GasPrice, EmptyTxs=False, CanonicalReOrg=True, Invalid P9 (Paris) (reth) - - Invalid Missing Ancestor Syncing ReOrg, Transaction Value, EmptyTxs=False, CanonicalReOrg=False, Invalid P9 (Paris) (reth) - - Invalid Missing Ancestor Syncing ReOrg, Transaction Value, EmptyTxs=False, CanonicalReOrg=True, Invalid P9 (Paris) (reth) - - Invalid Missing Ancestor Syncing ReOrg, ReceiptsRoot, EmptyTxs=False, CanonicalReOrg=False, Invalid P8 (Paris) (reth) - - Invalid Missing Ancestor Syncing ReOrg, ReceiptsRoot, EmptyTxs=False, CanonicalReOrg=True, Invalid P8 (Paris) (reth) - - Invalid Missing Ancestor Syncing ReOrg, GasLimit, EmptyTxs=False, CanonicalReOrg=True, Invalid P8 (Paris) (reth) - - Invalid Missing Ancestor Syncing ReOrg, GasUsed, EmptyTxs=False, CanonicalReOrg=False, Invalid P8 (Paris) (reth) - - Invalid Missing Ancestor Syncing ReOrg, GasUsed, EmptyTxs=False, CanonicalReOrg=True, Invalid P8 (Paris) (reth) - - Invalid Missing Ancestor Syncing ReOrg, Timestamp, EmptyTxs=False, CanonicalReOrg=True, Invalid P8 (Paris) (reth) - - Invalid Missing Ancestor Syncing ReOrg, Incomplete Transactions, EmptyTxs=False, CanonicalReOrg=False, Invalid P9 (Paris) (reth) - - Invalid Missing Ancestor Syncing ReOrg, Incomplete Transactions, EmptyTxs=False, CanonicalReOrg=True, Invalid P9 (Paris) (reth) - -# https://github.com/paradigmxyz/reth/issues/8305 -# https://github.com/paradigmxyz/reth/issues/6217 -# https://github.com/paradigmxyz/reth/issues/8306 -# https://github.com/paradigmxyz/reth/issues/7144 -engine-cancun: - - Blob Transaction Ordering, Multiple Clients (Cancun) (reth) - - Inconsistent Head in ForkchoiceState (Cancun) (reth) - - Invalid NewPayload, StateRoot, Syncing=True, EmptyTxs=True, DynFeeTxs=False (Cancun) (reth) - - Invalid NewPayload, StateRoot, Syncing=True, EmptyTxs=False, DynFeeTxs=False (Cancun) (reth) - - Invalid NewPayload, PrevRandao, Syncing=True, EmptyTxs=False, DynFeeTxs=False (Cancun) (reth) - - Invalid Missing Ancestor Syncing ReOrg, StateRoot, EmptyTxs=True, CanonicalReOrg=False, Invalid P9 (Cancun) (reth) - - Invalid Missing Ancestor Syncing ReOrg, StateRoot, EmptyTxs=False, CanonicalReOrg=False, Invalid P9 (Cancun) (reth) - - Invalid Missing Ancestor Syncing ReOrg, StateRoot, EmptyTxs=True, CanonicalReOrg=True, Invalid P9 (Cancun) (reth) - - Invalid Missing Ancestor Syncing ReOrg, StateRoot, EmptyTxs=False, CanonicalReOrg=True, Invalid P9 (Cancun) (reth) - - Invalid Missing Ancestor Syncing ReOrg, GasLimit, EmptyTxs=False, CanonicalReOrg=False, Invalid P8 (Cancun) (reth) - - Invalid Missing Ancestor Syncing ReOrg, Timestamp, EmptyTxs=False, CanonicalReOrg=False, Invalid P8 (Cancun) (reth) - - Invalid PayloadAttributes, Missing BeaconRoot, Syncing=True (Cancun) (reth) - - Invalid NewPayload, ParentBeaconBlockRoot, Syncing=True, EmptyTxs=False, DynFeeTxs=False (Cancun) (reth) - - Invalid NewPayload, BlobGasUsed, Syncing=True, EmptyTxs=False, DynFeeTxs=False (Cancun) (reth) - - Invalid NewPayload, Blob Count on BlobGasUsed, Syncing=True, EmptyTxs=False, DynFeeTxs=False (Cancun) (reth) - - Invalid NewPayload, ExcessBlobGas, Syncing=True, EmptyTxs=False, DynFeeTxs=False (Cancun) (reth) - - # Hive issue - # https://github.com/ethereum/hive/issues/1135 - - Invalid Missing Ancestor Syncing ReOrg, ReceiptsRoot, EmptyTxs=False, CanonicalReOrg=False, Invalid P8 (Cancun) (reth) - - Invalid Missing Ancestor Syncing ReOrg, ReceiptsRoot, EmptyTxs=False, CanonicalReOrg=True, Invalid P8 (Cancun) (reth) - - Invalid Missing Ancestor Syncing ReOrg, GasLimit, EmptyTxs=False, CanonicalReOrg=True, Invalid P8 (Cancun) (reth) - - Invalid Missing Ancestor Syncing ReOrg, GasUsed, EmptyTxs=False, CanonicalReOrg=False, Invalid P8 (Cancun) (reth) - - Invalid Missing Ancestor Syncing ReOrg, GasUsed, EmptyTxs=False, CanonicalReOrg=True, Invalid P8 (Cancun) (reth) - - Invalid Missing Ancestor Syncing ReOrg, Timestamp, EmptyTxs=False, CanonicalReOrg=True, Invalid P8 (Cancun) (reth) - - Invalid Missing Ancestor Syncing ReOrg, Incomplete Transactions, EmptyTxs=False, CanonicalReOrg=False, Invalid P9 (Cancun) (reth) - - Invalid Missing Ancestor Syncing ReOrg, Incomplete Transactions, EmptyTxs=False, CanonicalReOrg=True, Invalid P9 (Cancun) (reth) - - Invalid Missing Ancestor Syncing ReOrg, Transaction Signature, EmptyTxs=False, CanonicalReOrg=False, Invalid P9 (Cancun) (reth) - - Invalid Missing Ancestor Syncing ReOrg, Transaction Signature, EmptyTxs=False, CanonicalReOrg=True, Invalid P9 (Cancun) (reth) - - Invalid Missing Ancestor Syncing ReOrg, Transaction Nonce, EmptyTxs=False, CanonicalReOrg=False, Invalid P9 (Cancun) (reth) - - Invalid Missing Ancestor Syncing ReOrg, Transaction Nonce, EmptyTxs=False, CanonicalReOrg=True, Invalid P9 (Cancun) (reth) - - Invalid Missing Ancestor Syncing ReOrg, Transaction Gas, EmptyTxs=False, CanonicalReOrg=False, Invalid P9 (Cancun) (reth) - - Invalid Missing Ancestor Syncing ReOrg, Transaction Gas, EmptyTxs=False, CanonicalReOrg=True, Invalid P9 (Cancun) (reth) - - Invalid Missing Ancestor Syncing ReOrg, Transaction GasPrice, EmptyTxs=False, CanonicalReOrg=False, Invalid P9 (Cancun) (reth) - - Invalid Missing Ancestor Syncing ReOrg, Transaction GasPrice, EmptyTxs=False, CanonicalReOrg=True, Invalid P9 (Cancun) (reth) - - Invalid Missing Ancestor Syncing ReOrg, Transaction Value, EmptyTxs=False, CanonicalReOrg=False, Invalid P9 (Cancun) (reth) - - Invalid Missing Ancestor Syncing ReOrg, Transaction Value, EmptyTxs=False, CanonicalReOrg=True, Invalid P9 (Cancun) (reth) - -# https://github.com/paradigmxyz/reth/issues/8579 -sync: - - sync reth -> reth diff --git a/.github/assets/hive/load_images.sh b/.github/assets/hive/load_images.sh deleted file mode 100755 index 05e1cb9905fae..0000000000000 --- a/.github/assets/hive/load_images.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/usr/bin/env bash -set -eo pipefail - -# List of tar files to load -IMAGES=( - "/tmp/hiveproxy.tar" - "/tmp/devp2p.tar" - "/tmp/engine.tar" - "/tmp/rpc_compat.tar" - "/tmp/pyspec.tar" - "/tmp/smoke_genesis.tar" - "/tmp/smoke_network.tar" - "/tmp/ethereum_sync.tar" - "/tmp/reth_image.tar" -) - -# Loop through the images and load them -for IMAGE_TAR in "${IMAGES[@]}"; do - echo "Loading image $IMAGE_TAR..." - docker load -i "$IMAGE_TAR" & -done - -wait - -docker image ls -a \ No newline at end of file diff --git a/.github/assets/hive/no_sim_build.diff b/.github/assets/hive/no_sim_build.diff deleted file mode 100644 index 0b109efe7cd0d..0000000000000 --- a/.github/assets/hive/no_sim_build.diff +++ /dev/null @@ -1,53 +0,0 @@ -diff --git a/internal/libdocker/builder.go b/internal/libdocker/builder.go -index 4731c9d..d717f52 100644 ---- a/internal/libdocker/builder.go -+++ b/internal/libdocker/builder.go -@@ -7,9 +7,7 @@ import ( - "fmt" - "io" - "io/fs" -- "os" - "path/filepath" -- "strings" - - "github.com/ethereum/hive/internal/libhive" - docker "github.com/fsouza/go-dockerclient" -@@ -53,24 +51,8 @@ func (b *Builder) BuildClientImage(ctx context.Context, client libhive.ClientDes - - // BuildSimulatorImage builds a docker image of a simulator. - func (b *Builder) BuildSimulatorImage(ctx context.Context, name string) (string, error) { -- dir := b.config.Inventory.SimulatorDirectory(name) -- buildContextPath := dir -- buildDockerfile := "Dockerfile" -- // build context dir of simulator can be overridden with "hive_context.txt" file containing the desired build path -- if contextPathBytes, err := os.ReadFile(filepath.Join(filepath.FromSlash(dir), "hive_context.txt")); err == nil { -- buildContextPath = filepath.Join(dir, strings.TrimSpace(string(contextPathBytes))) -- if strings.HasPrefix(buildContextPath, "../") { -- return "", fmt.Errorf("cannot access build directory outside of Hive root: %q", buildContextPath) -- } -- if p, err := filepath.Rel(buildContextPath, filepath.Join(filepath.FromSlash(dir), "Dockerfile")); err != nil { -- return "", fmt.Errorf("failed to derive relative simulator Dockerfile path: %v", err) -- } else { -- buildDockerfile = p -- } -- } - tag := fmt.Sprintf("hive/simulators/%s:latest", name) -- err := b.buildImage(ctx, buildContextPath, buildDockerfile, tag, nil) -- return tag, err -+ return tag, nil - } - - // BuildImage creates a container by archiving the given file system, -diff --git a/internal/libdocker/proxy.go b/internal/libdocker/proxy.go -index a53e5af..0bb2ea9 100644 ---- a/internal/libdocker/proxy.go -+++ b/internal/libdocker/proxy.go -@@ -16,7 +16,7 @@ const hiveproxyTag = "hive/hiveproxy" - - // Build builds the hiveproxy image. - func (cb *ContainerBackend) Build(ctx context.Context, b libhive.Builder) error { -- return b.BuildImage(ctx, hiveproxyTag, hiveproxy.Source) -+ return nil - } - - // ServeAPI starts the API server. diff --git a/.github/assets/hive/parse.py b/.github/assets/hive/parse.py deleted file mode 100644 index ee75fdf553174..0000000000000 --- a/.github/assets/hive/parse.py +++ /dev/null @@ -1,43 +0,0 @@ -import json -import yaml -import sys -import argparse - -# Argument parser setup -parser = argparse.ArgumentParser(description="Check for unexpected test results based on an exclusion list.") -parser.add_argument("report_json", help="Path to the hive report JSON file.") -parser.add_argument("--exclusion", required=True, help="Path to the exclusion YAML file.") -args = parser.parse_args() - -# Load hive JSON -with open(args.report_json, 'r') as file: - report = json.load(file) - -# Load exclusion YAML -with open(args.exclusion, 'r') as file: - exclusion_data = yaml.safe_load(file) - exclusions = exclusion_data.get(report['name'], []) - -# Collect unexpected failures and passes -unexpected_failures = [] -unexpected_passes = [] - -for test in report['testCases'].values(): - test_name = test['name'] - test_pass = test['summaryResult']['pass'] - if test_name in exclusions: - if test_pass: - unexpected_passes.append(test_name) - else: - if not test_pass: - unexpected_failures.append(test_name) - -# Check if there are any unexpected failures or passes and exit with error -if unexpected_failures or unexpected_passes: - if unexpected_failures: - print("Unexpected Failures:", unexpected_failures) - if unexpected_passes: - print("Unexpected Passes:", unexpected_passes) - sys.exit(1) - -print("Success.") \ No newline at end of file diff --git a/.github/assets/hive/run_simulator.sh b/.github/assets/hive/run_simulator.sh deleted file mode 100755 index 731c94c3f69b3..0000000000000 --- a/.github/assets/hive/run_simulator.sh +++ /dev/null @@ -1,38 +0,0 @@ -#!/usr/bin/env bash -# set -x - -cd hivetests/ - -sim="${1}" -limit="${2}" - -run_hive() { - hive --sim "${sim}" --sim.limit "${limit}" --sim.parallelism 4 --client reth 2>&1 | tee /tmp/log || true -} - -check_log() { - tail -n 1 /tmp/log | sed -r 's/\x1B\[[0-9;]*[mK]//g' -} - -attempt=0 -max_attempts=5 - -while [ $attempt -lt $max_attempts ]; do - run_hive - - # Check if no tests were run. sed removes ansi colors - if check_log | grep -q "suites=0"; then - echo "no tests were run, retrying in 10 seconds" - sleep 10 - attempt=$((attempt + 1)) - continue - fi - - # Check the last line of the log for "finished", "tests failed", or "test failed" - if check_log | grep -Eq "(finished|tests? failed)"; then - exit 0 - else - exit 1 - fi -done -exit 1 diff --git a/.github/assets/install_geth.sh b/.github/assets/install_geth.sh deleted file mode 100755 index 8469f5a73f8e2..0000000000000 --- a/.github/assets/install_geth.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/usr/bin/env bash - -# Installs Geth (https://geth.ethereum.org) in $HOME/bin for x86_64 Linux. - -set -eo pipefail - -GETH_BUILD=${GETH_BUILD:-"1.13.4-3f907d6a"} - -name="geth-linux-amd64-$GETH_BUILD" - -mkdir -p "$HOME/bin" -wget "https://gethstore.blob.core.windows.net/builds/$name.tar.gz" -tar -xvf "$name.tar.gz" -rm "$name.tar.gz" -mv "$name/geth" "$HOME/bin/geth" -rm -rf "$name" -chmod +x "$HOME/bin/geth" - -# Add $HOME/bin to $PATH -[[ "$PATH" != *$HOME/bin* ]] && export PATH=$HOME/bin:$PATH -[ -n "$CI" ] && echo "$HOME/bin" >> "$GITHUB_PATH" - -geth version diff --git a/.github/assets/label_pr.js b/.github/assets/label_pr.js deleted file mode 100644 index 16ace2db03270..0000000000000 --- a/.github/assets/label_pr.js +++ /dev/null @@ -1,57 +0,0 @@ -// Filter function for labels we do not want on PRs automatically. -function shouldIncludeLabel (label) { - const isStatus = label.startsWith('S-'); - const isTrackingIssue = label === 'C-tracking-issue'; - const isPreventStale = label === 'M-prevent-stale'; - const isDifficulty = label.startsWith('D-'); - - return !isStatus && !isTrackingIssue && !isPreventStale && !isDifficulty; -} - -// Get the issue number from an issue link in the forms ` ` or ` #`. -function getIssueLink (repoUrl, body) { - const urlPattern = new RegExp(`(close|closes|closed|fix|fixes|fixed|resolve|resolves|resolved) ${repoUrl}/issues/(?\\d+)`, 'i') - const issuePattern = new RegExp(`(close|closes|closed|fix|fixes|fixed|resolve|resolves|resolved) \#(?\\d+)`, 'i') - - const urlRe = body.match(urlPattern); - const issueRe = body.match(issuePattern); - if (urlRe?.groups?.issue_number) { - return urlRe.groups.issue_number - } else { - return issueRe?.groups?.issue_number - } -} - -module.exports = async ({ github, context }) => { - try { - const prNumber = context.payload.pull_request.number; - const prBody = context.payload.pull_request.body; - const repo = context.repo; - - const repoUrl = context.payload.repository.html_url; - const issueNumber = getIssueLink(repoUrl, prBody); - if (!issueNumber) { - console.log('No issue reference found in PR description.'); - return; - } - - const issue = await github.rest.issues.get({ - ...repo, - issue_number: issueNumber, - }); - - const issueLabels = issue.data.labels - .map(label => label.name) - .filter(shouldIncludeLabel); - if (issueLabels.length > 0) { - await github.rest.issues.addLabels({ - ...repo, - issue_number: prNumber, - labels: issueLabels, - }); - } - } catch (err) { - console.error('Failed to label PR'); - console.error(err); - } -} diff --git a/.github/dependabot.yml b/.github/dependabot.yml deleted file mode 100644 index 8c139c7bec29c..0000000000000 --- a/.github/dependabot.yml +++ /dev/null @@ -1,6 +0,0 @@ -version: 2 -updates: -- package-ecosystem: "github-actions" - directory: "/" - schedule: - interval: "weekly" diff --git a/.github/workflows/assertoor.yml b/.github/workflows/assertoor.yml deleted file mode 100644 index a5028f7ff31a0..0000000000000 --- a/.github/workflows/assertoor.yml +++ /dev/null @@ -1,230 +0,0 @@ -name: Assertoor Tests - -on: - workflow_dispatch: - schedule: - - cron: '0 0 * * *' - -jobs: - get_tests: - name: "Run assertoor tests on reth pairs" - runs-on: ubuntu-latest - outputs: - test_result: ${{ steps.test_result.outputs.test_result }} - test_status: ${{ steps.test_result.outputs.test_status }} - failed_test_status: ${{ steps.test_result.outputs.failed_test_status }} - if: github.repository == 'paradigmxyz/reth' - steps: - - name: Checkout Repository - uses: actions/checkout@v4 - - name: Setup Kurtosis - shell: bash - run: | - echo "deb [trusted=yes] https://apt.fury.io/kurtosis-tech/ /" | sudo tee /etc/apt/sources.list.d/kurtosis.list - sudo apt update - sudo apt install kurtosis-cli - kurtosis analytics disable - - - name: Run Kurtosis - shell: bash - id: services - run: | - export github_sha=${{ github.sha }} - export github_repository=${{ github.repository }} - - cat etc/assertoor/assertoor-template.yaml | envsubst > etc/assertoor/assertoor.yaml - - kurtosis run github.com/ethpandaops/ethereum-package --enclave assertoor-${{ github.run_id }} --args-file etc/assertoor/assertoor.yaml - - enclave_dump=$(kurtosis enclave inspect assertoor-${{ github.run_id }}) - - assertoor_url=$(echo "$enclave_dump" | grep assertoor | grep http | sed 's/.*\(http:\/\/[0-9.:]\+\).*/\1/') - echo "assertoor_url: ${assertoor_url}" - echo "assertoor_url=${assertoor_url}" >> $GITHUB_OUTPUT - - - name: Await test completion - shell: bash - id: test_result - run: | - assertoor_url="${{ steps.services.outputs.assertoor_url }}" - - YELLOW='\033[1;33m' - GRAY='\033[0;37m' - GREEN='\033[0;32m' - RED='\033[0;31m' - NC='\033[0m' - - # print assertor logs - assertoor_container=$(docker container list | grep assertoor | sed 's/^\([^ ]\+\) .*$/\1/') - docker logs -f $assertoor_container & - - # helper to fetch task status for specific test id - get_tasks_status() { - tasks=$(curl -s ${assertoor_url}/api/v1/test_run/$1 | jq -c ".data.tasks[] | {index, parent_index, name, title, status, result}") - declare -A task_graph_map - task_graph_map[0]="" - - while read task; do - task_id=$(echo "$task" | jq -r ".index") - task_parent=$(echo "$task" | jq -r ".parent_index") - task_name=$(echo "$task" | jq -r ".name") - task_title=$(echo "$task" | jq -r ".title") - task_status=$(echo "$task" | jq -r ".status") - task_result=$(echo "$task" | jq -r ".result") - - task_graph="${task_graph_map[$task_parent]}" - task_graph_map[$task_id]="$task_graph |" - if [ ! -z "$task_graph" ]; then - task_graph="${task_graph}- " - fi - - if [ "$task_status" == "pending" ]; then - task_status="${GRAY}pending ${NC}" - elif [ "$task_status" == "running" ]; then - task_status="${YELLOW}running ${NC}" - elif [ "$task_status" == "complete" ]; then - task_status="${GREEN}complete${NC}" - fi - - if [ "$task_result" == "none" ]; then - task_result="${GRAY}none ${NC}" - elif [ "$task_result" == "success" ]; then - task_result="${GREEN}success${NC}" - elif [ "$task_result" == "failure" ]; then - task_result="${RED}failure${NC}" - fi - - echo -e " $(printf '%-4s' "$task_id")\t$task_status\t$task_result\t$(printf '%-50s' "$task_graph$task_name") \t$task_title" - done <<< $(echo "$tasks") - } - - # poll & check test status - final_test_result="" - failed_test_id="" - while true - do - pending_tests=0 - failed_tests=0 - total_tests=0 - running_test="" - - status_lines=() - task_lines="" - status_lines+=("$(date +'%Y-%m-%d %H:%M:%S') Test Status:") - - tests=$(curl -s ${assertoor_url}/api/v1/test_runs | jq -c ".data[] | {run_id, test_id, name, status}") - while read test; do - if [ -z "$test" ]; then - continue - fi - run_id=$(echo "$test" | jq -r ".run_id") - test_id=$(echo "$test" | jq -r ".test_id") - test_name=$(echo "$test" | jq -r ".name") - test_status=$(echo "$test" | jq -r ".status") - - if [ "$test_status" == "pending" ]; then - pending_tests=$(expr $pending_tests + 1) - status_name="${GRAY}pending${NC}" - elif [ "$test_status" == "running" ]; then - pending_tests=$(expr $pending_tests + 1) - running_test="$run_id" - status_name="${YELLOW}running${NC}" - - elif [ "$test_status" == "success" ]; then - status_name="${GREEN}success${NC}" - elif [ "$test_status" == "failure" ]; then - failed_tests=$(expr $failed_tests + 1) - failed_test_id="$run_id" - status_name="${RED}failure${NC}" - else - status_name="$test_status" - fi - status_lines+=(" $(printf '%-3s' "$test_id") $status_name \t$test_name") - total_tests=$(expr $total_tests + 1) - done <<< $(echo "$tests") - - for status_line in "${status_lines[@]}" - do - echo -e "$status_line" - done - - if ! [ -z "$running_test" ]; then - task_lines=$(get_tasks_status "$running_test") - echo "Active Test Task Status:" - echo "$task_lines" - fi - - if [ $failed_tests -gt 0 ]; then - final_test_result="failure" - break - fi - if [ $total_tests -gt 0 ] && [ $pending_tests -le 0 ]; then - final_test_result="success" - break - fi - - sleep 60 - done - - # save test results & status to github output - echo "test_result=$(echo "$final_test_result")" >> $GITHUB_OUTPUT - echo "test_status<> $GITHUB_OUTPUT - for status_line in "${status_lines[@]}" - do - echo -e "$status_line" >> $GITHUB_OUTPUT - done - echo "EOF" >> $GITHUB_OUTPUT - - if ! [ -z "$failed_test_id" ]; then - echo "failed_test_status<> $GITHUB_OUTPUT - get_tasks_status "$failed_test_id" >> $GITHUB_OUTPUT - echo "EOF" >> $GITHUB_OUTPUT - else - echo "failed_test_status=" >> $GITHUB_OUTPUT - fi - - - name: Generate dump and remove kurtosis enclave - shell: bash - run: | - mkdir -p ./temp/dump - cd ./temp/dump - cp ../../etc/assertoor/assertoor.yaml ./kurtosis-params.yaml - - kurtosis enclave dump assertoor-${{ github.run_id }} - kurtosis enclave rm -f assertoor-${{ github.run_id }} - - - name: Upload dump artifact - uses: actions/upload-artifact@v4 - with: - name: "kurtosis-enclave-dump-${{ github.run_id }}" - path: ./temp/dump - - - name: Return test result - shell: bash - run: | - test_result="${{ steps.test_result.outputs.test_result }}" - test_status=$( - cat <<"EOF" - ${{ steps.test_result.outputs.test_status }} - EOF - ) - failed_test_status=$( - cat <<"EOF" - ${{ steps.test_result.outputs.failed_test_status }} - EOF - ) - - echo "Test Result: $test_result" - echo "$test_status" - - if ! [ "$test_result" == "success" ]; then - echo "" - echo "Failed Test Task Status:" - echo "$failed_test_status" - - echo "" - echo "See 'Await test completion' task for detailed logs about this failure!" - echo "" - - exit 1 # fail action - fi diff --git a/.github/workflows/bench.yml b/.github/workflows/bench.yml deleted file mode 100644 index f8d1d475e300d..0000000000000 --- a/.github/workflows/bench.yml +++ /dev/null @@ -1,60 +0,0 @@ -# Runs benchmarks. - -on: - pull_request: - merge_group: - push: - branches: [main] - -env: - CARGO_TERM_COLOR: always - BASELINE: base - IAI_CALLGRIND_RUNNER: iai-callgrind-runner - -concurrency: - group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} - cancel-in-progress: true - -name: bench -jobs: - iai: - runs-on: - group: Reth - # Only run benchmarks in merge groups and on main - if: github.event_name != 'pull_request' - steps: - - uses: actions/checkout@v4 - - name: Install Valgrind - run: sudo apt update && sudo apt install valgrind - - uses: dtolnay/rust-toolchain@stable - - uses: Swatinem/rust-cache@v2 - with: - cache-on-failure: true - - name: Install cargo-binstall - uses: taiki-e/install-action@cargo-binstall - - name: Install iai-callgrind-runner - run: | - echo "::group::Install" - version=$(cargo metadata --format-version=1 |\ - jq '.packages[] | select(.name == "iai-callgrind").version' |\ - tr -d '"' - ) - cargo binstall iai-callgrind-runner --version $version --no-confirm --no-symlinks --force - echo "::endgroup::" - echo "::group::Verification" - which iai-callgrind-runner - echo "::endgroup::" - - name: Checkout base - uses: actions/checkout@v4 - with: - ref: ${{ github.base_ref || 'main' }} - - name: Generate test vectors - run: cargo run --bin reth --features dev -- test-vectors tables - - name: Save baseline - run: cargo bench -p reth-db --bench iai --profile profiling --features test-utils -- --save-baseline=$BASELINE - - name: Checkout PR - uses: actions/checkout@v4 - with: - clean: false - - name: Compare PR benchmarks - run: cargo bench -p reth-db --bench iai --profile profiling --features test-utils -- --baseline=$BASELINE diff --git a/.github/workflows/book.yml b/.github/workflows/book.yml deleted file mode 100644 index 56d5c427466e0..0000000000000 --- a/.github/workflows/book.yml +++ /dev/null @@ -1,135 +0,0 @@ -# Documentation and mdbook related jobs. - -name: book - -on: - push: - branches: [main] - pull_request: - branches: [main] - merge_group: - -jobs: - test: - runs-on: ubuntu-latest - name: test - timeout-minutes: 60 - - steps: - - uses: actions/checkout@v4 - - - name: Install mdbook - run: | - mkdir mdbook - curl -sSL https://github.com/rust-lang/mdBook/releases/download/v0.4.14/mdbook-v0.4.14-x86_64-unknown-linux-gnu.tar.gz | tar -xz --directory=./mdbook - echo $(pwd)/mdbook >> $GITHUB_PATH - - - name: Install mdbook-template - run: | - mkdir mdbook-template - curl -sSL https://github.com/sgoudham/mdbook-template/releases/latest/download/mdbook-template-x86_64-unknown-linux-gnu.tar.gz | tar -xz --directory=./mdbook-template - echo $(pwd)/mdbook-template >> $GITHUB_PATH - - - name: Run tests - run: mdbook test - - lint: - runs-on: ubuntu-latest - name: lint - timeout-minutes: 60 - - steps: - - uses: actions/checkout@v4 - - - name: Install mdbook-linkcheck - run: | - mkdir mdbook-linkcheck - curl -sSL -o mdbook-linkcheck.zip https://github.com/Michael-F-Bryan/mdbook-linkcheck/releases/latest/download/mdbook-linkcheck.x86_64-unknown-linux-gnu.zip - unzip mdbook-linkcheck.zip -d ./mdbook-linkcheck - chmod +x $(pwd)/mdbook-linkcheck/mdbook-linkcheck - echo $(pwd)/mdbook-linkcheck >> $GITHUB_PATH - - - name: Run linkcheck - run: mdbook-linkcheck --standalone - - build: - runs-on: ubuntu-latest - timeout-minutes: 60 - steps: - - uses: actions/checkout@v4 - - uses: dtolnay/rust-toolchain@nightly - - name: Install mdbook - run: | - mkdir mdbook - curl -sSL https://github.com/rust-lang/mdBook/releases/download/v0.4.14/mdbook-v0.4.14-x86_64-unknown-linux-gnu.tar.gz | tar -xz --directory=./mdbook - echo $(pwd)/mdbook >> $GITHUB_PATH - - - name: Install mdbook-template - run: | - mkdir mdbook-template - curl -sSL https://github.com/sgoudham/mdbook-template/releases/latest/download/mdbook-template-x86_64-unknown-linux-gnu.tar.gz | tar -xz --directory=./mdbook-template - echo $(pwd)/mdbook-template >> $GITHUB_PATH - - - uses: Swatinem/rust-cache@v2 - with: - cache-on-failure: true - - - name: Build book - run: mdbook build - - - name: Build docs - run: cargo docs --exclude "example-*" - env: - # Keep in sync with ./ci.yml:jobs.docs - RUSTDOCFLAGS: - --cfg docsrs --show-type-layout --generate-link-to-definition --enable-index-page - -Zunstable-options - - - name: Move docs to book folder - run: | - mv target/doc target/book/docs - - - name: Archive artifact - shell: sh - run: | - chmod -c -R +rX "target/book" | - while read line; do - echo "::warning title=Invalid file permissions automatically fixed::$line" - done - tar \ - --dereference --hard-dereference \ - --directory "target/book" \ - -cvf "$RUNNER_TEMP/artifact.tar" \ - --exclude=.git \ - --exclude=.github \ - . - - - name: Upload artifact - uses: actions/upload-artifact@v4 - with: - name: github-pages - path: ${{ runner.temp }}/artifact.tar - retention-days: 1 - if-no-files-found: error - - deploy: - # Only deploy if a push to main - if: github.ref_name == 'main' && github.event_name == 'push' - runs-on: ubuntu-latest - needs: [test, lint, build] - - # Grant GITHUB_TOKEN the permissions required to make a Pages deployment - permissions: - pages: write - id-token: write - - environment: - name: github-pages - url: ${{ steps.deployment.outputs.page_url }} - - timeout-minutes: 60 - - steps: - - name: Deploy to GitHub Pages - id: deployment - uses: actions/deploy-pages@v4 diff --git a/.github/workflows/deny.yml b/.github/workflows/deny.yml deleted file mode 100644 index f85484ca2ec21..0000000000000 --- a/.github/workflows/deny.yml +++ /dev/null @@ -1,27 +0,0 @@ -# Runs `cargo-deny` when modifying `Cargo.lock`. - -name: deny - -on: - push: - branches: [main] - paths: [Cargo.lock] - pull_request: - branches: [main] - paths: [Cargo.lock] - merge_group: - -env: - CARGO_TERM_COLOR: always - -concurrency: deny-${{ github.head_ref || github.run_id }} - -jobs: - deny: - name: deny - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: EmbarkStudios/cargo-deny-action@v2 - with: - command: check all diff --git a/.github/workflows/dependencies.yml b/.github/workflows/dependencies.yml deleted file mode 100644 index 336004eded9ff..0000000000000 --- a/.github/workflows/dependencies.yml +++ /dev/null @@ -1,61 +0,0 @@ -# Runs `cargo update` periodically. - -name: Update Dependencies - -on: - schedule: - # Run weekly - - cron: "0 0 * * SUN" - workflow_dispatch: - # Needed so we can run it manually - -env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - BRANCH: cargo-update - TITLE: "chore(deps): weekly `cargo update`" - BODY: | - Automation to keep dependencies in `Cargo.lock` current. - -
cargo update log -

- - ```log - $cargo_update_log - ``` - -

-
- -jobs: - update: - name: Update - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: dtolnay/rust-toolchain@nightly - - - name: cargo update - # Remove first line that always just says "Updating crates.io index" - run: cargo update --color never 2>&1 | sed '/crates.io index/d' | tee -a cargo_update.log - - - name: craft commit message and PR body - id: msg - run: | - export cargo_update_log="$(cat cargo_update.log)" - - echo "commit_message<> $GITHUB_OUTPUT - printf "$TITLE\n\n$cargo_update_log\n" >> $GITHUB_OUTPUT - echo "EOF" >> $GITHUB_OUTPUT - - echo "body<> $GITHUB_OUTPUT - echo "$BODY" | envsubst >> $GITHUB_OUTPUT - echo "EOF" >> $GITHUB_OUTPUT - - - name: Create Pull Request - uses: peter-evans/create-pull-request@v6 - with: - add-paths: ./Cargo.lock - commit-message: ${{ steps.msg.outputs.commit_message }} - title: ${{ env.TITLE }} - body: ${{ steps.msg.outputs.body }} - branch: ${{ env.BRANCH }} diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml deleted file mode 100644 index 2af324a39eb7b..0000000000000 --- a/.github/workflows/docker.yml +++ /dev/null @@ -1,48 +0,0 @@ -# Publishes the Docker image. - -name: docker - -on: - workflow_dispatch: {} - push: - tags: - - v* - -env: - REPO_NAME: ${{ github.repository_owner }}/reth - IMAGE_NAME: ${{ github.repository_owner }}/reth - OP_IMAGE_NAME: ${{ github.repository_owner }}/op-reth - CARGO_TERM_COLOR: always - DOCKER_IMAGE_NAME: ghcr.io/${{ github.repository_owner }}/reth - OP_DOCKER_IMAGE_NAME: ghcr.io/${{ github.repository_owner }}/op-reth - DOCKER_USERNAME: ${{ github.actor }} - -jobs: - build: - name: build and push - runs-on: ubuntu-20.04 - permissions: - packages: write - contents: read - steps: - - uses: actions/checkout@v4 - - uses: dtolnay/rust-toolchain@stable - - uses: Swatinem/rust-cache@v2 - with: - cache-on-failure: true - - uses: taiki-e/install-action@cross - - name: Log in to Docker - run: | - echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io --username ${DOCKER_USERNAME} --password-stdin - - name: Set up Docker builder - run: | - docker run --privileged --rm tonistiigi/binfmt --install arm64,amd64 - docker buildx create --use --name cross-builder - - name: Build and push reth image, tag as "latest" - run: make PROFILE=maxperf docker-build-push-latest - - name: Build and push reth image - run: make PROFILE=maxperf docker-build-push - - name: Build and push op-reth image, tag as "latest" - run: make IMAGE_NAME=$OP_IMAGE_NAME DOCKER_IMAGE_NAME=$OP_DOCKER_IMAGE_NAME PROFILE=maxperf op-docker-build-push-latest - - name: Build and push op-reth image - run: make IMAGE_NAME=$OP_IMAGE_NAME DOCKER_IMAGE_NAME=$OP_DOCKER_IMAGE_NAME PROFILE=maxperf op-docker-build-push diff --git a/.github/workflows/eth-sync.yml b/.github/workflows/eth-sync.yml deleted file mode 100644 index f473e29a57c6e..0000000000000 --- a/.github/workflows/eth-sync.yml +++ /dev/null @@ -1,53 +0,0 @@ -# Runs an ethereum mainnet sync test. - -name: eth-sync-test - -on: - pull_request: - merge_group: - push: - branches: [ main ] - -env: - CARGO_TERM_COLOR: always - -concurrency: - group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} - cancel-in-progress: true - -jobs: - sync: - name: sync / 100k blocks - # Only run sync tests in merge groups - if: github.event_name == 'merge_group' - runs-on: - group: Reth - env: - RUST_LOG: info,sync=error - RUST_BACKTRACE: 1 - timeout-minutes: 60 - steps: - - uses: actions/checkout@v4 - - uses: dtolnay/rust-toolchain@stable - - uses: Swatinem/rust-cache@v2 - with: - cache-on-failure: true - - name: Build reth - run: | - cargo install --features asm-keccak,jemalloc --path bin/reth - - name: Run sync - run: | - reth node \ - --debug.tip 0x91c90676cab257a59cd956d7cb0bceb9b1a71d79755c23c7277a0697ccfaf8c4 \ - --debug.max-block 100000 \ - --debug.terminate - - name: Verify the target block hash - run: | - reth db get static-file headers 100000 \ - | grep 0x91c90676cab257a59cd956d7cb0bceb9b1a71d79755c23c7277a0697ccfaf8c4 - - name: Run stage unwind for 100 blocks - run: | - reth stage unwind num-blocks 100 - - name: Run stage unwind to block hash - run: | - reth stage unwind to-block 0x52e0509d33a988ef807058e2980099ee3070187f7333aae12b64d4d675f34c5a diff --git a/.github/workflows/hive.yml b/.github/workflows/hive.yml deleted file mode 100644 index c524e9eb7ffdf..0000000000000 --- a/.github/workflows/hive.yml +++ /dev/null @@ -1,244 +0,0 @@ -# Runs `ethereum/hive` tests. - -name: hive - -on: - workflow_dispatch: - schedule: - # every day - - cron: "0 0 * * *" - -env: - CARGO_TERM_COLOR: always - -concurrency: - group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} - cancel-in-progress: true - -jobs: - prepare-reth: - if: github.repository == 'paradigmxyz/reth' - timeout-minutes: 45 - runs-on: - group: Reth - steps: - - uses: actions/checkout@v4 - - run: mkdir artifacts - - uses: dtolnay/rust-toolchain@stable - - uses: Swatinem/rust-cache@v2 - with: - cache-on-failure: true - - name: Build reth - run: | - cargo build --features asm-keccak --profile hivetests --bin reth --locked - mkdir dist && cp ./target/hivetests/reth ./dist/reth - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - name: Build and export reth image - uses: docker/build-push-action@v6 - with: - context: . - file: .github/assets/hive/Dockerfile - tags: ghcr.io/paradigmxyz/reth:latest - outputs: type=docker,dest=./artifacts/reth_image.tar - cache-from: type=gha - cache-to: type=gha,mode=max - - - name: Upload reth image - uses: actions/upload-artifact@v4 - with: - name: artifacts - path: ./artifacts - - prepare-hive: - if: github.repository == 'paradigmxyz/reth' - timeout-minutes: 45 - runs-on: - group: Reth - steps: - - uses: actions/checkout@v4 - - name: Checkout hive tests - uses: actions/checkout@v4 - with: - repository: ethereum/hive - ref: master - path: hivetests - - - uses: actions/setup-go@v5 - with: - go-version: "^1.13.1" - - run: go version - - - name: Build hive assets - run: .github/assets/hive/build_simulators.sh - - - name: Upload hive assets - uses: actions/upload-artifact@v4 - with: - name: hive_assets - path: ./hive_assets - test: - timeout-minutes: 60 - strategy: - fail-fast: false - matrix: - # ethereum/rpc to be deprecated: - # https://github.com/ethereum/hive/pull/1117 - sim: [smoke/genesis, smoke/network, ethereum/sync] - include: - - sim: devp2p - limit: discv4 - - sim: devp2p - limit: eth - include: - # status - - TestStatus - # get block headers - - TestGetBlockHeaders - - TestSimultaneousRequests - - TestSameRequestID - - TestZeroRequestID - # get block bodies - - TestGetBlockBodies - # malicious handshakes + status - - TestMaliciousHandshake - - TestMaliciousStatus - # test transactions - - TestLargeTxRequest - - TestTransaction - - TestInvalidTxs - - TestNewPooledTxs - - TestBlobViolations - - sim: ethereum/engine - limit: engine-exchange-capabilities - - sim: ethereum/engine - limit: engine-withdrawals - - sim: ethereum/engine - limit: engine-auth - - sim: ethereum/engine - limit: engine-api - - sim: ethereum/engine - limit: cancun - # eth_ rpc methods - - sim: ethereum/rpc-compat - include: - - eth_blockNumber - - eth_call - - eth_chainId - - eth_createAccessList - - eth_estimateGas - - eth_feeHistory - - eth_getBalance - - eth_getBlockBy - - eth_getBlockTransactionCountBy - - eth_getCode - - eth_getProof - - eth_getStorage - - eth_getTransactionBy - - eth_getTransactionCount - - eth_getTransactionReceipt - - eth_sendRawTransaction - - eth_syncing - # debug_ rpc methods - - sim: ethereum/rpc-compat - include: [debug_] - # Pyspec cancun jobs - - sim: pyspec - include: [cancun/eip4844] - - sim: pyspec - include: [cancun/eip4788] - - sim: pyspec - include: [cancun/eip6780] - - sim: pyspec - include: [cancun/eip5656] - - sim: pyspec - include: [cancun/eip1153] - - sim: pyspec - include: [cancun/eip7516] - # Pyspec shanghai jobs - - sim: pyspec - include: [shanghai/eip3651] - - sim: pyspec - include: [shanghai/eip3855] - - sim: pyspec - include: [shanghai/eip3860] - - sim: pyspec - include: [shanghai/eip4895] - # Pyspec merge and earlier jobs - - sim: pyspec - include: [merge/] - - sim: pyspec - include: [berlin/] - - sim: pyspec - include: [istanbul/] - - sim: pyspec - include: [homestead/] - - sim: pyspec - include: [frontier/] - needs: - - prepare-reth - - prepare-hive - name: run - runs-on: - group: Reth - permissions: - issues: write - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - name: Download hive assets - uses: actions/download-artifact@v4 - with: - name: hive_assets - path: /tmp - - - name: Download reth image - uses: actions/download-artifact@v4 - with: - name: artifacts - path: /tmp - - - name: Load Docker images - run: .github/assets/hive/load_images.sh - - - name: Move hive binary - run: | - mv /tmp/hive /usr/local/bin - chmod +x /usr/local/bin/hive - - - name: Checkout hive tests - uses: actions/checkout@v4 - with: - repository: ethereum/hive - ref: master - path: hivetests - - - name: Run ${{ matrix.sim }} simulator - run: .github/assets/hive/run_simulator.sh "${{ matrix.sim }}$" "${{matrix.limit}}/${{join(matrix.include, '|')}}" - - - name: Parse hive output - run: | - find hivetests/workspace/logs -type f -name "*.json" ! -name "hive.json" | xargs -I {} python .github/assets/hive/parse.py {} --exclusion .github/assets/hive/expected_failures.yaml - - - name: Print simulator output - if: ${{ failure() }} - run: | - cat hivetests/workspace/logs/*simulator*.log - - - name: Print reth client logs - if: ${{ failure() }} - run: | - cat hivetests/workspace/logs/reth/client-*.log - notify-on-error: - needs: test - if: failure() - runs-on: - group: Reth - steps: - - name: Discord Webhook Action - uses: tsickert/discord-webhook@v6.0.0 - with: - webhook-url: ${{ secrets.RETH_ALERTS_WEBHOOK }} - content: "Failed run: https://github.com/paradigmxyz/reth/actions/runs/${{ github.run_id }}" diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml deleted file mode 100644 index 103a87706bcae..0000000000000 --- a/.github/workflows/integration.yml +++ /dev/null @@ -1,62 +0,0 @@ -# Runs integration tests. - -name: integration - -on: - pull_request: - merge_group: - push: - branches: [main] - -env: - CARGO_TERM_COLOR: always - SEED: rustethereumethereumrust - -concurrency: - group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} - cancel-in-progress: true - -jobs: - test: - name: test / ${{ matrix.network }} - runs-on: - group: Reth - env: - RUST_BACKTRACE: 1 - strategy: - matrix: - network: ["ethereum", "optimism"] - timeout-minutes: 60 - steps: - - uses: actions/checkout@v4 - - uses: dtolnay/rust-toolchain@stable - - name: Install Geth - run: .github/assets/install_geth.sh - - uses: taiki-e/install-action@nextest - - uses: Swatinem/rust-cache@v2 - with: - cache-on-failure: true - - if: matrix.network == 'ethereum' - name: Run tests - run: | - cargo nextest run \ - --locked --features "asm-keccak ${{ matrix.network }}" \ - --workspace --exclude ef-tests \ - -E "kind(test)" - - if: matrix.network == 'optimism' - name: Run tests - run: | - cargo nextest run \ - --locked -p reth-node-optimism --features "optimism" - - integration-success: - name: integration success - runs-on: ubuntu-latest - if: always() - needs: [test] - timeout-minutes: 30 - steps: - - name: Decide whether the needed jobs succeeded or failed - uses: re-actors/alls-green@release/v1 - with: - jobs: ${{ toJSON(needs) }} diff --git a/.github/workflows/label-pr.yml b/.github/workflows/label-pr.yml deleted file mode 100644 index 07727173531be..0000000000000 --- a/.github/workflows/label-pr.yml +++ /dev/null @@ -1,23 +0,0 @@ -name: Label PRs - -on: - pull_request: - types: [opened] - -jobs: - label_prs: - runs-on: ubuntu-latest - permissions: - issues: write - pull-requests: write - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - name: Label PRs - uses: actions/github-script@v7 - with: - script: | - const label_pr = require('./.github/assets/label_pr.js') - await label_pr({github, context}) diff --git a/.github/workflows/lint-actions.yml b/.github/workflows/lint-actions.yml deleted file mode 100644 index 4c2171784d35e..0000000000000 --- a/.github/workflows/lint-actions.yml +++ /dev/null @@ -1,22 +0,0 @@ -name: Lint GitHub Actions workflows -on: - pull_request: - paths: - - '.github/**' - merge_group: - push: - paths: - - '.github/**' - -jobs: - actionlint: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Download actionlint - id: get_actionlint - run: bash <(curl https://raw.githubusercontent.com/rhysd/actionlint/main/scripts/download-actionlint.bash) - shell: bash - - name: Check workflow files - run: SHELLCHECK_OPTS="-S error" ${{ steps.get_actionlint.outputs.executable }} -color - shell: bash diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml deleted file mode 100644 index 0b29e2d556911..0000000000000 --- a/.github/workflows/lint.yml +++ /dev/null @@ -1,209 +0,0 @@ -name: lint - -on: - pull_request: - merge_group: - push: - branches: [main] - -env: - CARGO_TERM_COLOR: always - -jobs: - clippy-binaries: - name: clippy / ${{ matrix.network }} - runs-on: ubuntu-latest - timeout-minutes: 30 - strategy: - matrix: - include: - - binary: reth - network: ethereum - - binary: op-reth - network: optimism - steps: - - uses: actions/checkout@v4 - - uses: dtolnay/rust-toolchain@clippy - - uses: Swatinem/rust-cache@v2 - with: - cache-on-failure: true - - run: cargo clippy --bin "${{ matrix.binary }}" --workspace --features "${{ matrix.network }} asm-keccak jemalloc jemalloc-prof min-error-logs min-warn-logs min-info-logs min-debug-logs min-trace-logs" - env: - RUSTFLAGS: -D warnings - - clippy: - name: clippy - runs-on: ubuntu-latest - timeout-minutes: 30 - steps: - - uses: actions/checkout@v4 - - uses: dtolnay/rust-toolchain@clippy - - uses: Swatinem/rust-cache@v2 - with: - cache-on-failure: true - - run: cargo clippy --workspace --lib --examples --tests --benches --all-features --locked - env: - RUSTFLAGS: -D warnings - - wasm: - runs-on: ubuntu-latest - timeout-minutes: 30 - steps: - - uses: actions/checkout@v4 - - uses: dtolnay/rust-toolchain@stable - with: - target: wasm32-wasip1 - - uses: taiki-e/install-action@cargo-hack - - uses: Swatinem/rust-cache@v2 - with: - cache-on-failure: true - - name: Run Wasm checks - run: .github/assets/check_wasm.sh - - crate-checks: - runs-on: ubuntu-latest - timeout-minutes: 30 - steps: - - uses: actions/checkout@v4 - - uses: dtolnay/rust-toolchain@stable - - uses: taiki-e/install-action@cargo-hack - - uses: Swatinem/rust-cache@v2 - with: - cache-on-failure: true - - run: cargo hack check - - msrv: - name: MSRV / ${{ matrix.network }} - runs-on: ubuntu-latest - timeout-minutes: 30 - strategy: - matrix: - include: - - binary: reth - network: ethereum - - binary: op-reth - network: optimism - steps: - - uses: actions/checkout@v4 - - uses: dtolnay/rust-toolchain@master - with: - toolchain: "1.80" # MSRV - - uses: Swatinem/rust-cache@v2 - with: - cache-on-failure: true - - run: cargo build --bin "${{ matrix.binary }}" --workspace --features "${{ matrix.network }}" - env: - RUSTFLAGS: -D warnings - - docs: - name: docs - runs-on: ubuntu-latest - timeout-minutes: 30 - steps: - - uses: actions/checkout@v4 - - uses: dtolnay/rust-toolchain@nightly - - uses: Swatinem/rust-cache@v2 - with: - cache-on-failure: true - - run: cargo docs --document-private-items - env: - # Keep in sync with ./book.yml:jobs.build - # This should only add `-D warnings` - RUSTDOCFLAGS: --cfg docsrs --show-type-layout --generate-link-to-definition --enable-index-page -Zunstable-options -D warnings - - fmt: - name: fmt - runs-on: ubuntu-latest - timeout-minutes: 30 - steps: - - uses: actions/checkout@v4 - - uses: dtolnay/rust-toolchain@nightly - with: - components: rustfmt - - run: cargo fmt --all --check - - book: - name: book - runs-on: ubuntu-latest - timeout-minutes: 30 - steps: - - uses: actions/checkout@v4 - - uses: dtolnay/rust-toolchain@master - with: - toolchain: "1.80" # MSRV - - uses: Swatinem/rust-cache@v2 - with: - cache-on-failure: true - - run: cargo build --bin reth --workspace --features ethereum - env: - RUSTFLAGS: -D warnings - - run: ./book/cli/update.sh target/debug/reth - - name: Check book changes - run: git diff --exit-code - - codespell: - runs-on: ubuntu-latest - timeout-minutes: 30 - steps: - - uses: actions/checkout@v4 - - uses: codespell-project/actions-codespell@v2 - with: - skip: "*.json" - - grafana: - runs-on: ubuntu-latest - timeout-minutes: 30 - steps: - - uses: actions/checkout@v4 - - name: Check dashboard JSON with jq - uses: sergeysova/jq-action@v2 - with: - cmd: jq empty etc/grafana/dashboards/overview.json - - no-test-deps: - runs-on: ubuntu-latest - timeout-minutes: 30 - steps: - - uses: actions/checkout@v4 - - uses: dtolnay/rust-toolchain@stable - - name: Ensure no arbitrary or proptest dependency on default build - run: cargo tree --package reth -e=features,no-dev | grep -Eq "arbitrary|proptest" && exit 1 || exit 0 - - # Checks that selected rates can compile with power set of features - features: - name: features - runs-on: ubuntu-latest - timeout-minutes: 30 - steps: - - uses: actions/checkout@v4 - - uses: dtolnay/rust-toolchain@clippy - - uses: Swatinem/rust-cache@v2 - with: - cache-on-failure: true - - name: cargo install cargo-hack - uses: taiki-e/install-action@cargo-hack - - run: make check-features - env: - RUSTFLAGS: -D warnings - - lint-success: - name: lint success - runs-on: ubuntu-latest - if: always() - needs: - - clippy-binaries - - clippy - - crate-checks - - docs - - fmt - - book - - codespell - - grafana - - no-test-deps - - features - timeout-minutes: 30 - steps: - - name: Decide whether the needed jobs succeeded or failed - uses: re-actors/alls-green@release/v1 - with: - jobs: ${{ toJSON(needs) }} diff --git a/.github/workflows/op-sync.yml b/.github/workflows/op-sync.yml deleted file mode 100644 index 26fa68d7f9051..0000000000000 --- a/.github/workflows/op-sync.yml +++ /dev/null @@ -1,56 +0,0 @@ -# Runs a base mainnet sync test. - -name: op-sync-test - -on: - pull_request: - merge_group: - push: - branches: [ main ] - -env: - CARGO_TERM_COLOR: always - -concurrency: - group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} - cancel-in-progress: true - -jobs: - sync: - name: op sync / 10k blocks - # Only run sync tests in merge groups - if: github.event_name == 'merge_group' - runs-on: - group: Reth - env: - RUST_LOG: info,sync=error - RUST_BACKTRACE: 1 - timeout-minutes: 60 - steps: - - uses: actions/checkout@v4 - - uses: dtolnay/rust-toolchain@stable - - uses: Swatinem/rust-cache@v2 - with: - cache-on-failure: true - - name: Build op-reth - run: | - cargo install --features asm-keccak,jemalloc,optimism --bin op-reth --path bin/reth - - name: Run sync - # https://basescan.org/block/10000 - run: | - op-reth node \ - --chain base \ - --debug.tip 0xbb9b85352c7ebca6ba8efc63bd66cecd038c92ec8ebd02e153a3e0b197e672b7 \ - --debug.max-block 10000 \ - --debug.terminate - - name: Verify the target block hash - run: | - op-reth db --chain base get static-file headers 10000 \ - | grep 0xbb9b85352c7ebca6ba8efc63bd66cecd038c92ec8ebd02e153a3e0b197e672b7 - - name: Run stage unwind for 100 blocks - run: | - op-reth stage --chain base unwind num-blocks 100 - - name: Run stage unwind to block hash - run: | - op-reth stage --chain base unwind to-block 0x118a6e922a8c6cab221fc5adfe5056d2b72d58c6580e9c5629de55299e2cf8de - diff --git a/.github/workflows/release-dist.yml b/.github/workflows/release-dist.yml deleted file mode 100644 index 2142360e03962..0000000000000 --- a/.github/workflows/release-dist.yml +++ /dev/null @@ -1,20 +0,0 @@ -# This workflow auto-publishes Reth to external package managers such as -# Homebrew when a release is published. - -name: release externally - -on: - release: - types: [published] - -jobs: - release-homebrew: - runs-on: ubuntu-latest - steps: - - name: Update Homebrew formula - uses: dawidd6/action-homebrew-bump-formula@v3 - with: - token: ${{ secrets.HOMEBREW }} - no_fork: true - tap: paradigmxyz/brew - formula: reth diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml deleted file mode 100644 index 5735ae6ef5287..0000000000000 --- a/.github/workflows/release.yml +++ /dev/null @@ -1,197 +0,0 @@ -# This workflow is modified from Lighthouse: -# https://github.com/sigp/lighthouse/blob/441fc1691b69f9edc4bbdc6665f3efab16265c9b/.github/workflows/release.yml - -name: release - -on: - push: - tags: - - v* - -env: - REPO_NAME: ${{ github.repository_owner }}/reth - OP_IMAGE_NAME: ${{ github.repository_owner }}/op-reth - IMAGE_NAME: ${{ github.repository_owner }}/reth - CARGO_TERM_COLOR: always - -jobs: - extract-version: - name: extract version - runs-on: ubuntu-latest - steps: - - name: Extract version - run: echo "VERSION=$(echo ${GITHUB_REF#refs/tags/})" >> $GITHUB_OUTPUT - id: extract_version - outputs: - VERSION: ${{ steps.extract_version.outputs.VERSION }} - - build: - name: build release - runs-on: ${{ matrix.configs.os }} - needs: extract-version - strategy: - matrix: - configs: - - target: x86_64-unknown-linux-gnu - os: ubuntu-20.04 - profile: maxperf - - target: aarch64-unknown-linux-gnu - os: ubuntu-20.04 - profile: maxperf - - target: x86_64-apple-darwin - os: macos-13 - profile: maxperf - - target: aarch64-apple-darwin - os: macos-14 - profile: maxperf - - target: x86_64-pc-windows-gnu - os: ubuntu-20.04 - profile: maxperf - build: - - command: build - binary: reth - - command: op-build - binary: op-reth - steps: - - uses: actions/checkout@v4 - - uses: dtolnay/rust-toolchain@stable - with: - target: ${{ matrix.configs.target }} - - uses: taiki-e/install-action@cross - - uses: Swatinem/rust-cache@v2 - with: - cache-on-failure: true - - - name: Apple M1 setup - if: matrix.configs.target == 'aarch64-apple-darwin' - run: | - echo "SDKROOT=$(xcrun -sdk macosx --show-sdk-path)" >> $GITHUB_ENV - echo "MACOSX_DEPLOYMENT_TARGET=$(xcrun -sdk macosx --show-sdk-platform-version)" >> $GITHUB_ENV - - - name: Build Reth - run: make PROFILE=${{ matrix.configs.profile }} ${{ matrix.build.command }}-${{ matrix.configs.target }} - - name: Move binary - run: | - mkdir artifacts - [[ "${{ matrix.configs.target }}" == *windows* ]] && ext=".exe" - mv "target/${{ matrix.configs.target }}/${{ matrix.configs.profile }}/${{ matrix.build.binary }}${ext}" ./artifacts - - - name: Configure GPG and create artifacts - env: - GPG_SIGNING_KEY: ${{ secrets.GPG_SIGNING_KEY }} - GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} - run: | - export GPG_TTY=$(tty) - echo -n "$GPG_SIGNING_KEY" | base64 --decode | gpg --batch --import - cd artifacts - tar -czf ${{ matrix.build.binary }}-${{ needs.extract-version.outputs.VERSION }}-${{ matrix.configs.target }}.tar.gz ${{ matrix.build.binary }}* - echo "$GPG_PASSPHRASE" | gpg --passphrase-fd 0 --pinentry-mode loopback --batch -ab ${{ matrix.build.binary }}-${{ needs.extract-version.outputs.VERSION }}-${{ matrix.configs.target }}.tar.gz - mv *tar.gz* .. - shell: bash - - - name: Upload artifact - uses: actions/upload-artifact@v4 - with: - name: ${{ matrix.build.binary }}-${{ needs.extract-version.outputs.VERSION }}-${{ matrix.configs.target }}.tar.gz - path: ${{ matrix.build.binary }}-${{ needs.extract-version.outputs.VERSION }}-${{ matrix.configs.target }}.tar.gz - - - name: Upload signature - uses: actions/upload-artifact@v4 - with: - name: ${{ matrix.build.binary }}-${{ needs.extract-version.outputs.VERSION }}-${{ matrix.configs.target }}.tar.gz.asc - path: ${{ matrix.build.binary }}-${{ needs.extract-version.outputs.VERSION }}-${{ matrix.configs.target }}.tar.gz.asc - - draft-release: - name: draft release - needs: [build, extract-version] - runs-on: ubuntu-latest - env: - VERSION: ${{ needs.extract-version.outputs.VERSION }} - permissions: - # Required to post the release - contents: write - steps: - # This is necessary for generating the changelog. - # It has to come before "Download Artifacts" or else it deletes the artifacts. - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - name: Download artifacts - uses: actions/download-artifact@v4 - - name: Generate full changelog - id: changelog - run: | - echo "CHANGELOG<> $GITHUB_OUTPUT - echo "$(git log --pretty=format:"- %s" $(git describe --tags --abbrev=0 ${{ env.VERSION }}^)..${{ env.VERSION }})" >> $GITHUB_OUTPUT - echo "EOF" >> $GITHUB_OUTPUT - - name: Create release draft - env: - GITHUB_USER: ${{ github.repository_owner }} - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - # The formatting here is borrowed from Lighthouse (which is borrowed from OpenEthereum): - # https://github.com/openethereum/openethereum/blob/6c2d392d867b058ff867c4373e40850ca3f96969/.github/workflows/build.yml - run: | - body=$(cat <<- "ENDBODY" - ![image](https://raw.githubusercontent.com/paradigmxyz/reth/main/assets/reth-prod.png) - - ## Testing Checklist (DELETE ME) - - - [ ] Run on testnet for 1-3 days. - - [ ] Resync a mainnet node. - - [ ] Ensure all CI checks pass. - - ## Release Checklist (DELETE ME) - - - [ ] Ensure all crates have had their versions bumped. - - [ ] Write the summary. - - [ ] Fill out the update priority. - - [ ] Ensure all binaries have been added. - - [ ] Prepare release posts (Twitter, ...). - - ## Summary - - Add a summary, including: - - - Critical bug fixes - - New features - - Any breaking changes (and what to expect) - - ## Update Priority - - This table provides priorities for which classes of users should update particular components. - - | User Class | Priority | - |----------------------|-----------------| - | Payload Builders | | - | Non-Payload Builders | | - - *See [Update Priorities](https://paradigmxyz.github.io/reth/installation/priorities.html) for more information about this table.* - - ## All Changes - - ${{ steps.changelog.outputs.CHANGELOG }} - - ## Binaries - - [See pre-built binaries documentation.](https://paradigmxyz.github.io/reth/installation/binaries.html) - - The binaries are signed with the PGP key: `50FB 7CC5 5B2E 8AFA 59FE 03B7 AA5E D56A 7FBF 253E` - - | System | Architecture | Binary | PGP Signature | - |:---:|:---:|:---:|:---| - | | x86_64 | [reth-${{ env.VERSION }}-x86_64-unknown-linux-gnu.tar.gz](https://github.com/${{ env.REPO_NAME }}/releases/download/${{ env.VERSION }}/reth-${{ env.VERSION }}-x86_64-unknown-linux-gnu.tar.gz) | [PGP Signature](https://github.com/${{ env.REPO_NAME }}/releases/download/${{ env.VERSION }}/reth-${{ env.VERSION }}-x86_64-unknown-linux-gnu.tar.gz.asc) | - | | aarch64 | [reth-${{ env.VERSION }}-aarch64-unknown-linux-gnu.tar.gz](https://github.com/${{ env.REPO_NAME }}/releases/download/${{ env.VERSION }}/reth-${{ env.VERSION }}-aarch64-unknown-linux-gnu.tar.gz) | [PGP Signature](https://github.com/${{ env.REPO_NAME }}/releases/download/${{ env.VERSION }}/reth-${{ env.VERSION }}-aarch64-unknown-linux-gnu.tar.gz.asc) | - | | x86_64 | [reth-${{ env.VERSION }}-x86_64-pc-windows-gnu.tar.gz](https://github.com/${{ env.REPO_NAME }}/releases/download/${{ env.VERSION }}/reth-${{ env.VERSION }}-x86_64-pc-windows-gnu.tar.gz) | [PGP Signature](https://github.com/${{ env.REPO_NAME }}/releases/download/${{ env.VERSION }}/reth-${{ env.VERSION }}-x86_64-pc-windows-gnu.tar.gz.asc) | - | | x86_64 | [reth-${{ env.VERSION }}-x86_64-apple-darwin.tar.gz](https://github.com/${{ env.REPO_NAME }}/releases/download/${{ env.VERSION }}/reth-${{ env.VERSION }}-x86_64-apple-darwin.tar.gz) | [PGP Signature](https://github.com/${{ env.REPO_NAME }}/releases/download/${{ env.VERSION }}/reth-${{ env.VERSION }}-x86_64-apple-darwin.tar.gz.asc) | - | | aarch64 | [reth-${{ env.VERSION }}-aarch64-apple-darwin.tar.gz](https://github.com/${{ env.REPO_NAME }}/releases/download/${{ env.VERSION }}/reth-${{ env.VERSION }}-aarch64-apple-darwin.tar.gz) | [PGP Signature](https://github.com/${{ env.REPO_NAME }}/releases/download/${{ env.VERSION }}/reth-${{ env.VERSION }}-aarch64-apple-darwin.tar.gz.asc) | - | | | | | - | **System** | **Option** | - | **Resource** | - | | Docker | | [${{ env.IMAGE_NAME }}](https://github.com/paradigmxyz/reth/pkgs/container/reth) | - ENDBODY - ) - assets=() - for asset in ./*reth-*.tar.gz*; do - assets+=("$asset/$asset") - done - tag_name="${{ env.VERSION }}" - echo "$body" | gh release create --draft -t "Reth $tag_name" -F "-" "$tag_name" "${assets[@]}" diff --git a/.github/workflows/stage.yml b/.github/workflows/stage.yml deleted file mode 100644 index 60ffa8f73d728..0000000000000 --- a/.github/workflows/stage.yml +++ /dev/null @@ -1,72 +0,0 @@ -# Runs all `stage run` commands. - -name: stage-test - -on: - pull_request: - merge_group: - push: - branches: [ main ] - -env: - CARGO_TERM_COLOR: always - FROM_BLOCK: 0 - TO_BLOCK: 50000 - -concurrency: - group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} - cancel-in-progress: true - -jobs: - stage: - name: stage-run-test - # Only run stage commands test in merge groups - if: github.event_name == 'merge_group' - runs-on: - group: Reth - env: - RUST_LOG: info,sync=error - RUST_BACKTRACE: 1 - timeout-minutes: 60 - steps: - - uses: actions/checkout@v4 - - uses: dtolnay/rust-toolchain@stable - - uses: Swatinem/rust-cache@v2 - with: - cache-on-failure: true - - name: Build reth - run: | - cargo install --features asm-keccak,jemalloc --path bin/reth - - name: Run headers stage - run: | - reth stage run headers --from ${{ env.FROM_BLOCK }} --to ${{ env.TO_BLOCK }} --commit --checkpoints - - name: Run bodies stage - run: | - reth stage run bodies --from ${{ env.FROM_BLOCK }} --to ${{ env.TO_BLOCK }} --commit --checkpoints - - name: Run senders stage - run: | - reth stage run senders --from ${{ env.FROM_BLOCK }} --to ${{ env.TO_BLOCK }} --commit --checkpoints - - name: Run execution stage - run: | - reth stage run execution --from ${{ env.FROM_BLOCK }} --to ${{ env.TO_BLOCK }} --commit --checkpoints - - name: Run account-hashing stage - run: | - reth stage run account-hashing --from ${{ env.FROM_BLOCK }} --to ${{ env.TO_BLOCK }} --commit --checkpoints - - name: Run storage hashing stage - run: | - reth stage run storage-hashing --from ${{ env.FROM_BLOCK }} --to ${{ env.TO_BLOCK }} --commit --checkpoints - - name: Run hashing stage - run: | - reth stage run hashing --from ${{ env.FROM_BLOCK }} --to ${{ env.TO_BLOCK }} --commit --checkpoints - - name: Run merkle stage - run: | - reth stage run merkle --from ${{ env.FROM_BLOCK }} --to ${{ env.TO_BLOCK }} --commit --checkpoints - - name: Run transaction lookup stage - run: | - reth stage run tx-lookup --from ${{ env.FROM_BLOCK }} --to ${{ env.TO_BLOCK }} --commit --checkpoints - - name: Run account history stage - run: | - reth stage run account-history --from ${{ env.FROM_BLOCK }} --to ${{ env.TO_BLOCK }} --commit --checkpoints - - name: Run storage history stage - run: | - reth stage run storage-history --from ${{ env.FROM_BLOCK }} --to ${{ env.TO_BLOCK }} --commit --checkpoints diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml deleted file mode 100644 index 38cca2fb1a9b8..0000000000000 --- a/.github/workflows/stale.yml +++ /dev/null @@ -1,29 +0,0 @@ -# Marks issues as stale. - -name: stale issues - -on: - workflow_dispatch: {} - schedule: - - cron: "30 1 * * *" - -jobs: - close-issues: - runs-on: ubuntu-latest - permissions: - issues: write - pull-requests: write - steps: - - uses: actions/stale@v9 - with: - days-before-stale: 21 - days-before-close: 7 - stale-issue-label: "S-stale" - stale-pr-label: "S-stale" - exempt-issue-labels: "M-prevent-stale" - exempt-pr-labels: "M-prevent-stale" - stale-issue-message: "This issue is stale because it has been open for 21 days with no activity." - close-issue-message: "This issue was closed because it has been inactive for 7 days since being marked as stale." - exempt-all-milestones: true - exempt-all-assignees: true - repo-token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/telos_ci.yml b/.github/workflows/telos_ci.yml new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/.github/workflows/unit.yml b/.github/workflows/unit.yml deleted file mode 100644 index a6663aea8843f..0000000000000 --- a/.github/workflows/unit.yml +++ /dev/null @@ -1,100 +0,0 @@ -# Runs unit tests. - -name: unit - -on: - pull_request: - merge_group: - push: - branches: [main] - -env: - CARGO_TERM_COLOR: always - SEED: rustethereumethereumrust - -concurrency: - group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} - cancel-in-progress: true - -jobs: - test: - name: test / ${{ matrix.network }} (${{ matrix.partition }}/2) - runs-on: - group: Reth - env: - RUST_BACKTRACE: 1 - strategy: - matrix: - partition: [1, 2] - network: ["ethereum", "optimism"] - timeout-minutes: 30 - steps: - - uses: actions/checkout@v4 - - uses: dtolnay/rust-toolchain@stable - - uses: Swatinem/rust-cache@v2 - with: - cache-on-failure: true - - uses: taiki-e/install-action@nextest - - name: Run tests - run: | - cargo nextest run \ - --locked --features "asm-keccak ${{ matrix.network }}" \ - --workspace --exclude ef-tests \ - --partition hash:${{ matrix.partition }}/2 \ - -E "!kind(test)" - - state: - name: Ethereum state tests - runs-on: - group: Reth - env: - RUST_LOG: info,sync=error - RUST_BACKTRACE: 1 - timeout-minutes: 30 - steps: - - uses: actions/checkout@v4 - - name: Checkout ethereum/tests - uses: actions/checkout@v4 - with: - repository: ethereum/tests - ref: 1c23e3c27ac53b794de0844d2d5e19cd2495b9d8 - path: testing/ef-tests/ethereum-tests - submodules: recursive - fetch-depth: 1 - - uses: dtolnay/rust-toolchain@stable - - uses: taiki-e/install-action@nextest - - uses: Swatinem/rust-cache@v2 - with: - cache-on-failure: true - - run: cargo nextest run --release -p ef-tests --features "asm-keccak ef-tests" - - doc: - name: doc tests (${{ matrix.network }}) - runs-on: - group: Reth - env: - RUST_BACKTRACE: 1 - timeout-minutes: 30 - strategy: - matrix: - network: ["ethereum", "optimism"] - steps: - - uses: actions/checkout@v4 - - uses: dtolnay/rust-toolchain@stable - - uses: Swatinem/rust-cache@v2 - with: - cache-on-failure: true - - name: Run doctests - run: cargo test --doc --workspace --features "${{ matrix.network }}" - - unit-success: - name: unit success - runs-on: ubuntu-latest - if: always() - needs: [test, state, doc] - timeout-minutes: 30 - steps: - - name: Decide whether the needed jobs succeeded or failed - uses: re-actors/alls-green@release/v1 - with: - jobs: ${{ toJSON(needs) }} diff --git a/Cargo.lock b/Cargo.lock index 48f9c6931344f..79cc9c90c15a8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -71,6 +71,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" dependencies = [ "cfg-if", + "const-random", "getrandom 0.2.15", "once_cell", "version_check", @@ -107,11 +108,27 @@ version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" +[[package]] +name = "alloy" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f4a4aaae80afd4be443a6aecd92a6b255dcdd000f97996928efb33d8a71e100" +dependencies = [ + "alloy-consensus", + "alloy-core", + "alloy-eips", + "alloy-genesis", + "alloy-provider", + "alloy-rpc-client", + "alloy-serde", + "alloy-transport-http", +] + [[package]] name = "alloy-chains" -version = "0.1.25" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3312b2a48f29abe7c3ea7c7fbc1f8cc6ea09b85d74b6232e940df35f2f3826fd" +checksum = "5b515e82c8468ddb6ff8db21c78a5997442f113fd8471fd5b2261b2602dd0c67" dependencies = [ "alloy-rlp", "arbitrary", @@ -136,6 +153,18 @@ dependencies = [ "serde", ] +[[package]] +name = "alloy-core" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "529fc6310dc1126c8de51c376cbc59c79c7f662bd742be7dc67055d5421a81b4" +dependencies = [ + "alloy-dyn-abi", + "alloy-json-abi", + "alloy-primitives", + "alloy-sol-types", +] + [[package]] name = "alloy-dyn-abi" version = "0.7.7" @@ -280,7 +309,7 @@ dependencies = [ "proptest", "proptest-derive 0.4.0", "rand 0.8.5", - "ruint", + "ruint 1.12.3", "serde", "tiny-keccak", ] @@ -314,7 +343,7 @@ dependencies = [ "futures-utils-wasm", "lru", "pin-project", - "reqwest", + "reqwest 0.12.5", "serde", "serde_json", "tokio", @@ -343,9 +372,9 @@ dependencies = [ [[package]] name = "alloy-rlp" -version = "0.3.7" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a43b18702501396fa9bcdeecd533bc85fac75150d308fc0f6800a01e6234a003" +checksum = "26154390b1d205a4a7ac7352aa2eb4f81f391399d4e2f546fb81a2f8bb383f62" dependencies = [ "alloy-rlp-derive", "arrayvec", @@ -354,13 +383,13 @@ dependencies = [ [[package]] name = "alloy-rlp-derive" -version = "0.3.7" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d83524c1f6162fcb5b0decf775498a125066c86dda6066ed609531b0e912f85a" +checksum = "4d0f2d905ebd295e7effec65e5f6868d153936130ae718352771de3e7d03c75c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.74", ] [[package]] @@ -377,7 +406,7 @@ dependencies = [ "alloy-transport-ws", "futures", "pin-project", - "reqwest", + "reqwest 0.12.5", "serde", "serde_json", "tokio", @@ -571,7 +600,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.74", ] [[package]] @@ -583,11 +612,11 @@ dependencies = [ "alloy-sol-macro-input", "const-hex", "heck 0.5.0", - "indexmap 2.3.0", + "indexmap 2.4.0", "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.74", "syn-solidity", "tiny-keccak", ] @@ -603,7 +632,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.74", "syn-solidity", ] @@ -656,7 +685,7 @@ checksum = "2437d145d80ea1aecde8574d2058cceb8b3c9cba05f6aea8e67907c660d46698" dependencies = [ "alloy-json-rpc", "alloy-transport", - "reqwest", + "reqwest 0.12.5", "serde_json", "tower", "tracing", @@ -691,11 +720,11 @@ dependencies = [ "alloy-pubsub", "alloy-transport", "futures", - "http", + "http 1.1.0", "rustls", "serde_json", "tokio", - "tokio-tungstenite", + "tokio-tungstenite 0.23.1", "tracing", "ws_stream_wasm", ] @@ -790,6 +819,80 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "antelope-client" +version = "0.2.1" +source = "git+https://github.com/telosnetwork/antelope-rs?branch=finish_table_rows_params#c8d60b2f465f53c0245b615e6f76070755a8a587" +dependencies = [ + "antelope-client-macros", + "async-trait", + "base64 0.21.7", + "bs58", + "chrono", + "digest 0.10.7", + "ecdsa", + "flate2", + "hex", + "hmac 0.12.1", + "k256", + "log", + "once_cell", + "p256", + "rand 0.8.5", + "rand_core 0.6.4", + "reqwest 0.11.27", + "ripemd", + "serde", + "serde-big-array", + "serde_json", + "sha2 0.10.8", + "signature", + "thiserror", + "tokio", +] + +[[package]] +name = "antelope-client" +version = "0.2.1" +source = "git+https://github.com/telosnetwork/antelope-rs?branch=serialization#4bb0af2b4dab220b8185e450ba84f008209df896" +dependencies = [ + "antelope-client-macros", + "async-trait", + "base64 0.21.7", + "bs58", + "chrono", + "digest 0.10.7", + "ecdsa", + "flate2", + "hex", + "hmac 0.12.1", + "k256", + "log", + "once_cell", + "p256", + "rand 0.8.5", + "rand_core 0.6.4", + "reqwest 0.11.27", + "ripemd", + "serde", + "serde-big-array", + "serde_json", + "sha2 0.10.8", + "signature", + "thiserror", + "tokio", +] + +[[package]] +name = "antelope-client-macros" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5fe146e985f20989c1c9e9aca87f854ba430b5a5fadaac3f115bc9f81619634" +dependencies = [ + "quote", + "syn 1.0.109", +] + [[package]] name = "anyhow" version = "1.0.86" @@ -807,7 +910,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.74", ] [[package]] @@ -955,6 +1058,248 @@ version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" +[[package]] +name = "arrow" +version = "51.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "219d05930b81663fd3b32e3bde8ce5bff3c4d23052a99f11a8fa50a3b47b2658" +dependencies = [ + "arrow-arith", + "arrow-array", + "arrow-buffer", + "arrow-cast", + "arrow-csv", + "arrow-data", + "arrow-ipc", + "arrow-json", + "arrow-ord", + "arrow-row", + "arrow-schema", + "arrow-select", + "arrow-string", +] + +[[package]] +name = "arrow-arith" +version = "51.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0272150200c07a86a390be651abdd320a2d12e84535f0837566ca87ecd8f95e0" +dependencies = [ + "arrow-array", + "arrow-buffer", + "arrow-data", + "arrow-schema", + "chrono", + "half", + "num", +] + +[[package]] +name = "arrow-array" +version = "51.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8010572cf8c745e242d1b632bd97bd6d4f40fefed5ed1290a8f433abaa686fea" +dependencies = [ + "ahash", + "arrow-buffer", + "arrow-data", + "arrow-schema", + "chrono", + "half", + "hashbrown 0.14.5", + "num", +] + +[[package]] +name = "arrow-buffer" +version = "51.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d0a2432f0cba5692bf4cb757469c66791394bac9ec7ce63c1afe74744c37b27" +dependencies = [ + "bytes", + "half", + "num", +] + +[[package]] +name = "arrow-cast" +version = "51.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9abc10cd7995e83505cc290df9384d6e5412b207b79ce6bdff89a10505ed2cba" +dependencies = [ + "arrow-array", + "arrow-buffer", + "arrow-data", + "arrow-schema", + "arrow-select", + "atoi", + "base64 0.22.1", + "chrono", + "half", + "lexical-core", + "num", + "ryu", +] + +[[package]] +name = "arrow-csv" +version = "51.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95cbcba196b862270bf2a5edb75927380a7f3a163622c61d40cbba416a6305f2" +dependencies = [ + "arrow-array", + "arrow-buffer", + "arrow-cast", + "arrow-data", + "arrow-schema", + "chrono", + "csv", + "csv-core", + "lazy_static", + "lexical-core", + "regex", +] + +[[package]] +name = "arrow-data" +version = "51.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2742ac1f6650696ab08c88f6dd3f0eb68ce10f8c253958a18c943a68cd04aec5" +dependencies = [ + "arrow-buffer", + "arrow-schema", + "half", + "num", +] + +[[package]] +name = "arrow-ipc" +version = "51.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a42ea853130f7e78b9b9d178cb4cd01dee0f78e64d96c2949dc0a915d6d9e19d" +dependencies = [ + "arrow-array", + "arrow-buffer", + "arrow-cast", + "arrow-data", + "arrow-schema", + "flatbuffers", +] + +[[package]] +name = "arrow-json" +version = "51.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaafb5714d4e59feae964714d724f880511500e3569cc2a94d02456b403a2a49" +dependencies = [ + "arrow-array", + "arrow-buffer", + "arrow-cast", + "arrow-data", + "arrow-schema", + "chrono", + "half", + "indexmap 2.4.0", + "lexical-core", + "num", + "serde", + "serde_json", +] + +[[package]] +name = "arrow-ord" +version = "51.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3e6b61e3dc468f503181dccc2fc705bdcc5f2f146755fa5b56d0a6c5943f412" +dependencies = [ + "arrow-array", + "arrow-buffer", + "arrow-data", + "arrow-schema", + "arrow-select", + "half", + "num", +] + +[[package]] +name = "arrow-row" +version = "51.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "848ee52bb92eb459b811fb471175ea3afcf620157674c8794f539838920f9228" +dependencies = [ + "ahash", + "arrow-array", + "arrow-buffer", + "arrow-data", + "arrow-schema", + "half", + "hashbrown 0.14.5", +] + +[[package]] +name = "arrow-schema" +version = "51.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02d9483aaabe910c4781153ae1b6ae0393f72d9ef757d38d09d450070cf2e528" + +[[package]] +name = "arrow-select" +version = "51.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "849524fa70e0e3c5ab58394c770cb8f514d0122d20de08475f7b472ed8075830" +dependencies = [ + "ahash", + "arrow-array", + "arrow-buffer", + "arrow-data", + "arrow-schema", + "num", +] + +[[package]] +name = "arrow-string" +version = "51.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9373cb5a021aee58863498c37eb484998ef13377f69989c6c5ccfbd258236cdb" +dependencies = [ + "arrow-array", + "arrow-buffer", + "arrow-data", + "arrow-schema", + "arrow-select", + "memchr", + "num", + "regex", + "regex-syntax 0.8.4", +] + +[[package]] +name = "arrowbatch" +version = "1.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e304bae8e33446c64842dba444042ce65cb23e2b1e439fa2f4abb7591db562c5" +dependencies = [ + "arrow", + "base64 0.22.1", + "chrono", + "env_logger", + "futures", + "futures-util", + "hex", + "log", + "moka", + "num", + "num-bigint", + "rlp", + "serde", + "serde_json", + "tokio", + "tokio-tungstenite 0.21.0", + "tungstenite 0.21.0", + "uuid", + "zstd", +] + [[package]] name = "asn1_der" version = "0.7.6" @@ -980,9 +1325,9 @@ dependencies = [ [[package]] name = "async-compression" -version = "0.4.12" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fec134f64e2bc57411226dfc4e52dec859ddfc7e711fc5e07b612584f000e4aa" +checksum = "cd066d0b4ef8ecb03a55319dc13aa6910616d0f44008a045bb1835af830abff5" dependencies = [ "brotli", "flate2", @@ -1027,7 +1372,7 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.74", ] [[package]] @@ -1038,7 +1383,7 @@ checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.74", ] [[package]] @@ -1052,6 +1397,15 @@ dependencies = [ "rustc_version 0.4.0", ] +[[package]] +name = "atoi" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f28d99ec8bfea296261ca1af174f24225171fea9664ba9003cbebee704810528" +dependencies = [ + "num-traits", +] + [[package]] name = "atomic-waker" version = "1.1.2" @@ -1076,7 +1430,7 @@ checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.74", ] [[package]] @@ -1085,6 +1439,33 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" +[[package]] +name = "aws-lc-rs" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ae74d9bd0a7530e8afd1770739ad34b36838829d6ad61818f9230f683f5ad77" +dependencies = [ + "aws-lc-sys", + "mirai-annotations", + "paste", + "zeroize", +] + +[[package]] +name = "aws-lc-sys" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f0e249228c6ad2d240c2dc94b714d711629d52bad946075d8e9b2f5391f0703" +dependencies = [ + "bindgen", + "cc", + "cmake", + "dunce", + "fs_extra", + "libc", + "paste", +] + [[package]] name = "backon" version = "0.4.4" @@ -1181,12 +1562,15 @@ dependencies = [ "itertools 0.12.1", "lazy_static", "lazycell", + "log", + "prettyplease", "proc-macro2", "quote", "regex", "rustc-hash 1.1.0", "shlex", - "syn 2.0.72", + "syn 2.0.74", + "which", ] [[package]] @@ -1309,7 +1693,7 @@ dependencies = [ "bitflags 2.6.0", "boa_interner", "boa_macros", - "indexmap 2.3.0", + "indexmap 2.4.0", "num-bigint", "rustc-hash 2.0.0", ] @@ -1335,7 +1719,7 @@ dependencies = [ "fast-float", "hashbrown 0.14.5", "icu_normalizer", - "indexmap 2.3.0", + "indexmap 2.4.0", "intrusive-collections", "itertools 0.13.0", "num-bigint", @@ -1381,7 +1765,7 @@ dependencies = [ "boa_gc", "boa_macros", "hashbrown 0.14.5", - "indexmap 2.3.0", + "indexmap 2.4.0", "once_cell", "phf", "rustc-hash 2.0.0", @@ -1396,7 +1780,7 @@ checksum = "25e0097fa69cde4c95f9869654004340fbbe2bcf3ce9189ba2a31a65ac40e0a1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.74", "synstructure", ] @@ -1438,6 +1822,56 @@ dependencies = [ "static_assertions", ] +[[package]] +name = "bollard" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a063d51a634c7137ecd9f6390ec78e1c512e84c9ded80198ec7df3339a16a33" +dependencies = [ + "base64 0.22.1", + "bollard-stubs", + "bytes", + "futures-core", + "futures-util", + "hex", + "home", + "http 1.1.0", + "http-body-util", + "hyper 1.4.1", + "hyper-named-pipe", + "hyper-rustls", + "hyper-util", + "hyperlocal", + "log", + "pin-project-lite", + "rustls", + "rustls-native-certs", + "rustls-pemfile 2.1.3", + "rustls-pki-types", + "serde", + "serde_derive", + "serde_json", + "serde_repr", + "serde_urlencoded", + "thiserror", + "tokio", + "tokio-util", + "tower-service", + "url", + "winapi", +] + +[[package]] +name = "bollard-stubs" +version = "1.45.0-rc.26.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d7c5415e3a6bc6d3e99eff6268e488fd4ee25e7b28c10f08fa6760bd9de16e4" +dependencies = [ + "serde", + "serde_repr", + "serde_with", +] + [[package]] name = "boyer-moore-magiclen" version = "0.2.20" @@ -1518,7 +1952,7 @@ checksum = "1ee891b04274a59bd38b412188e24b849617b2e45a0fd8d057deb63e7403761b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.74", ] [[package]] @@ -1605,9 +2039,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.1.7" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26a5c3fd7bfa1ce3897a3a3501d362b2d87b7f2583ebcb4a949ec25911025cbc" +checksum = "e9e8aabfac534be767c909e0690571677d49f41bd8465ae876fe043d52ba5292" dependencies = [ "jobserver", "libc", @@ -1708,9 +2142,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.13" +version = "4.5.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fbb260a053428790f3de475e304ff84cdbc4face759ea7a3e64c1edd938a7fc" +checksum = "11d8838454fda655dafd3accb2b6e2bea645b9e4078abe84a22ceb947235c5cc" dependencies = [ "clap_builder", "clap_derive", @@ -1718,9 +2152,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.13" +version = "4.5.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64b17d7ea74e9f833c7dbf2cbe4fb12ff26783eda4782a8975b72f895c9b4d99" +checksum = "216aec2b177652e3846684cbfe25c9964d18ec45234f0f5da5157b207ed1aab6" dependencies = [ "anstream", "anstyle", @@ -1737,7 +2171,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.74", ] [[package]] @@ -1746,6 +2180,15 @@ version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" +[[package]] +name = "cmake" +version = "0.1.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a31c789563b815f77f4250caee12365734369f942439b7defd71e18a48197130" +dependencies = [ + "cc", +] + [[package]] name = "coins-bip32" version = "0.11.1" @@ -1899,6 +2342,26 @@ version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" +[[package]] +name = "const-random" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87e00182fe74b066627d63b85fd550ac2998d4b0bd86bfed477a0ae4c7c71359" +dependencies = [ + "const-random-macro", +] + +[[package]] +name = "const-random-macro" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" +dependencies = [ + "getrandom 0.2.15", + "once_cell", + "tiny-keccak", +] + [[package]] name = "const_format" version = "0.2.32" @@ -1947,9 +2410,9 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.6" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "core2" @@ -1971,9 +2434,9 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.12" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +checksum = "51e852e6dc9a5bed1fae92dd2375037bf2b768725bf3be87811edee3249d09ad" dependencies = [ "libc", ] @@ -2223,7 +2686,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.74", ] [[package]] @@ -2247,7 +2710,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.72", + "syn 2.0.74", ] [[package]] @@ -2258,7 +2721,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.72", + "syn 2.0.74", ] [[package]] @@ -2346,6 +2809,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" dependencies = [ "const-oid", + "pem-rfc7468", "zeroize", ] @@ -2378,7 +2842,7 @@ checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.74", ] [[package]] @@ -2391,7 +2855,7 @@ dependencies = [ "proc-macro2", "quote", "rustc_version 0.4.0", - "syn 2.0.72", + "syn 2.0.74", ] [[package]] @@ -2505,7 +2969,18 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.74", +] + +[[package]] +name = "docker_credential" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31951f49556e34d90ed28342e1df7e1cb7a229c4cab0aecc627b5d91edd41d07" +dependencies = [ + "base64 0.21.7", + "serde", + "serde_json", ] [[package]] @@ -2587,7 +3062,7 @@ dependencies = [ "reth-db", "reth-db-api", "reth-evm-ethereum", - "reth-primitives", + "reth-primitives 1.0.5", "reth-provider", "reth-stages", "serde", @@ -2614,6 +3089,8 @@ dependencies = [ "ff", "generic-array", "group", + "hkdf", + "pem-rfc7468", "pkcs8", "rand_core 0.6.4", "sec1", @@ -2627,6 +3104,15 @@ version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" +[[package]] +name = "encoding_rs" +version = "0.8.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" +dependencies = [ + "cfg-if", +] + [[package]] name = "endian-type" version = "0.1.2" @@ -2662,7 +3148,7 @@ dependencies = [ "heck 0.4.1", "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.74", ] [[package]] @@ -2673,7 +3159,20 @@ checksum = "2f9ed6b3789237c8a0c1c505af1c7eb2c560df6186f01b098c3a1064ea532f38" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.74", +] + +[[package]] +name = "env_logger" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd405aab171cb85d6735e5c8d9db038c17d3ca007a4d2c25f337935c3d90580" +dependencies = [ + "humantime", + "is-terminal", + "log", + "regex", + "termcolor", ] [[package]] @@ -2744,7 +3243,7 @@ dependencies = [ "clap", "eyre", "futures-util", - "reqwest", + "reqwest 0.12.5", "reth", "reth-node-ethereum", "serde", @@ -2775,7 +3274,7 @@ dependencies = [ "reth-network", "reth-network-api", "reth-network-peers", - "reth-primitives", + "reth-primitives 1.0.5", "reth-tracing", "secp256k1", "serde_json", @@ -2793,7 +3292,7 @@ dependencies = [ "reth-chainspec", "reth-node-core", "reth-node-ethereum", - "reth-primitives", + "reth-primitives 1.0.5", "serde_json", "tokio", ] @@ -2812,8 +3311,8 @@ dependencies = [ "reth-node-core", "reth-node-ethereum", "reth-payload-builder", - "reth-primitives", - "reth-rpc-types", + "reth-primitives 1.0.5", + "reth-rpc-types 1.0.5", "reth-tracing", "serde", "thiserror", @@ -2832,7 +3331,7 @@ dependencies = [ "reth-node-api", "reth-node-core", "reth-node-ethereum", - "reth-primitives", + "reth-primitives 1.0.5", "reth-tracing", "tokio", ] @@ -2845,7 +3344,7 @@ dependencies = [ "futures-util", "reth", "reth-node-ethereum", - "reth-rpc-types", + "reth-rpc-types 1.0.5", ] [[package]] @@ -2872,7 +3371,7 @@ dependencies = [ "reth-node-api", "reth-node-ethereum", "reth-payload-builder", - "reth-primitives", + "reth-primitives 1.0.5", "tracing", ] @@ -2888,9 +3387,9 @@ dependencies = [ "reth-network", "reth-network-api", "reth-node-ethereum", - "reth-primitives", + "reth-primitives 1.0.5", "reth-provider", - "reth-rpc-types", + "reth-rpc-types 1.0.5", "tokio", "tokio-stream", "tracing", @@ -2903,9 +3402,9 @@ dependencies = [ "eyre", "reth-chainspec", "reth-db", - "reth-primitives", + "reth-primitives 1.0.5", "reth-provider", - "reth-rpc-types", + "reth-rpc-types 1.0.5", ] [[package]] @@ -2920,7 +3419,7 @@ dependencies = [ "reth-eth-wire", "reth-network", "reth-network-peers", - "reth-primitives", + "reth-primitives 1.0.5", "secp256k1", "tokio", ] @@ -2974,7 +3473,7 @@ dependencies = [ "reth-chainspec", "reth-discv4", "reth-network", - "reth-primitives", + "reth-primitives 1.0.5", "reth-provider", "reth-tracing", "secp256k1", @@ -3011,7 +3510,7 @@ dependencies = [ "reth-node-api", "reth-node-core", "reth-node-ethereum", - "reth-primitives", + "reth-primitives 1.0.5", "reth-tracing", "schnellru", "tokio", @@ -3121,6 +3620,16 @@ dependencies = [ "static_assertions", ] +[[package]] +name = "flatbuffers" +version = "23.5.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dac53e22462d78c16d64a1cd22371b54cc3fe94aa15e7886a2fa6e5d1ab8640" +dependencies = [ + "bitflags 1.3.2", + "rustc_version 0.4.0", +] + [[package]] name = "flate2" version = "1.0.31" @@ -3137,6 +3646,21 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[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.1" @@ -3152,6 +3676,12 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c2141d6d6c8512188a7891b4b01590a45f6dac67afb4f255c4124dbb86d4eaa" +[[package]] +name = "fs_extra" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" + [[package]] name = "funty" version = "2.0.0" @@ -3230,7 +3760,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.74", ] [[package]] @@ -3346,7 +3876,7 @@ dependencies = [ "futures-core", "futures-sink", "gloo-utils", - "http", + "http 1.1.0", "js-sys", "pin-project", "serde", @@ -3393,6 +3923,25 @@ dependencies = [ "subtle", ] +[[package]] +name = "h2" +version = "0.3.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http 0.2.12", + "indexmap 2.4.0", + "slab", + "tokio", + "tokio-util", + "tracing", +] + [[package]] name = "h2" version = "0.4.5" @@ -3404,8 +3953,8 @@ dependencies = [ "fnv", "futures-core", "futures-sink", - "http", - "indexmap 2.3.0", + "http 1.1.0", + "indexmap 2.4.0", "slab", "tokio", "tokio-util", @@ -3420,6 +3969,7 @@ checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888" dependencies = [ "cfg-if", "crunchy", + "num-traits", ] [[package]] @@ -3542,6 +4092,15 @@ dependencies = [ "hmac 0.8.1", ] +[[package]] +name = "home" +version = "0.5.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" +dependencies = [ + "windows-sys 0.52.0", +] + [[package]] name = "hostname" version = "0.3.1" @@ -3553,6 +4112,17 @@ dependencies = [ "winapi", ] +[[package]] +name = "http" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + [[package]] name = "http" version = "1.1.0" @@ -3564,6 +4134,17 @@ dependencies = [ "itoa", ] +[[package]] +name = "http-body" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" +dependencies = [ + "bytes", + "http 0.2.12", + "pin-project-lite", +] + [[package]] name = "http-body" version = "1.0.1" @@ -3571,7 +4152,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", - "http", + "http 1.1.0", ] [[package]] @@ -3582,8 +4163,8 @@ checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" dependencies = [ "bytes", "futures-util", - "http", - "http-body", + "http 1.1.0", + "http-body 1.0.1", "pin-project-lite", ] @@ -3647,6 +4228,30 @@ dependencies = [ "serde", ] +[[package]] +name = "hyper" +version = "0.14.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a152ddd61dfaec7273fe8419ab357f33aee0d914c5f4efbf0d96fa749eea5ec9" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2 0.3.26", + "http 0.2.12", + "http-body 0.4.6", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "socket2 0.5.7", + "tokio", + "tower-service", + "tracing", + "want", +] + [[package]] name = "hyper" version = "1.4.1" @@ -3656,9 +4261,9 @@ dependencies = [ "bytes", "futures-channel", "futures-util", - "h2", - "http", - "http-body", + "h2 0.4.5", + "http 1.1.0", + "http-body 1.0.1", "httparse", "httpdate", "itoa", @@ -3668,6 +4273,21 @@ dependencies = [ "want", ] +[[package]] +name = "hyper-named-pipe" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73b7d8abf35697b81a825e386fc151e0d503e8cb5fcb93cc8669c376dfd6f278" +dependencies = [ + "hex", + "hyper 1.4.1", + "hyper-util", + "pin-project-lite", + "tokio", + "tower-service", + "winapi", +] + [[package]] name = "hyper-rustls" version = "0.27.2" @@ -3675,8 +4295,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5ee4be2c948921a1a5320b629c4193916ed787a7f7f293fd3f7f5a6c9de74155" dependencies = [ "futures-util", - "http", - "hyper", + "http 1.1.0", + "hyper 1.4.1", "hyper-util", "log", "rustls", @@ -3688,18 +4308,47 @@ dependencies = [ "webpki-roots", ] +[[package]] +name = "hyper-tls" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" +dependencies = [ + "bytes", + "hyper 0.14.30", + "native-tls", + "tokio", + "tokio-native-tls", +] + +[[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 1.4.1", + "hyper-util", + "native-tls", + "tokio", + "tokio-native-tls", + "tower-service", +] + [[package]] name = "hyper-util" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ab92f4f49ee4fb4f997c784b7a2e0fa70050211e0b6a287f898c3c9785ca956" +checksum = "cde7055719c54e36e95e8719f95883f22072a48ede39db7fc17a4e1d5281e9b9" dependencies = [ "bytes", "futures-channel", "futures-util", - "http", - "http-body", - "hyper", + "http 1.1.0", + "http-body 1.0.1", + "hyper 1.4.1", "pin-project-lite", "socket2 0.5.7", "tokio", @@ -3708,6 +4357,21 @@ dependencies = [ "tracing", ] +[[package]] +name = "hyperlocal" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "986c5ce3b994526b3cd75578e62554abd09f0899d6206de48b3e96ab34ccc8c7" +dependencies = [ + "hex", + "http-body-util", + "hyper 1.4.1", + "hyper-util", + "pin-project-lite", + "tokio", + "tower-service", +] + [[package]] name = "iai-callgrind" version = "0.11.1" @@ -3728,7 +4392,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.74", ] [[package]] @@ -3878,7 +4542,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.74", ] [[package]] @@ -3983,9 +4647,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.3.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de3fc2e30ba82dd1b3911c8de1ffc143c74a914a14e99514d7637e3099df5ea0" +checksum = "93ead53efc7ea8ed3cfb0c79fc8023fbb782a5432b52830b6518941cebe6505c" dependencies = [ "equivalent", "hashbrown 0.14.5", @@ -4005,7 +4669,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "232929e1d75fe899576a3d5c7416ad0d88dbfbb3c3d6aa00873a7408a50ddb88" dependencies = [ "ahash", - "indexmap 2.3.0", + "indexmap 2.4.0", "is-terminal", "itoa", "log", @@ -4168,9 +4832,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.69" +version = "0.3.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" +checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a" dependencies = [ "wasm-bindgen", ] @@ -4203,7 +4867,7 @@ dependencies = [ "futures-channel", "futures-util", "gloo-net", - "http", + "http 1.1.0", "jsonrpsee-core", "pin-project", "rustls", @@ -4228,8 +4892,8 @@ dependencies = [ "bytes", "futures-timer", "futures-util", - "http", - "http-body", + "http 1.1.0", + "http-body 1.0.1", "http-body-util", "jsonrpsee-types", "parking_lot 0.12.3", @@ -4253,8 +4917,8 @@ checksum = "4d5f8f6ddb09312a9592ec9e21a3ccd6f61e51730d9d56321351eff971b0fe55" dependencies = [ "async-trait", "base64 0.22.1", - "http-body", - "hyper", + "http-body 1.0.1", + "hyper 1.4.1", "hyper-rustls", "hyper-util", "jsonrpsee-core", @@ -4280,7 +4944,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.74", ] [[package]] @@ -4290,10 +4954,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "85bf179199ad809157ceaab653f71cdb67f55d9e0093a6907c5765414a6b3bbb" dependencies = [ "futures-util", - "http", - "http-body", + "http 1.1.0", + "http-body 1.0.1", "http-body-util", - "hyper", + "hyper 1.4.1", "hyper-util", "jsonrpsee-core", "jsonrpsee-types", @@ -4316,7 +4980,7 @@ version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "98deeee954567f75632fa40666ac93a66d4f9f4ed4ca15bd6b7ed0720b53e761" dependencies = [ - "http", + "http 1.1.0", "serde", "serde_json", "thiserror", @@ -4339,7 +5003,7 @@ version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "385cf0a6103a9f64987cdf0f7c9d0b08e1d7183dd952820beffb3676e7df7787" dependencies = [ - "http", + "http 1.1.0", "jsonrpsee-client-transport", "jsonrpsee-core", "jsonrpsee-types", @@ -4439,6 +5103,70 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" +[[package]] +name = "lexical-core" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2cde5de06e8d4c2faabc400238f9ae1c74d5412d03a7bd067645ccbc47070e46" +dependencies = [ + "lexical-parse-float", + "lexical-parse-integer", + "lexical-util", + "lexical-write-float", + "lexical-write-integer", +] + +[[package]] +name = "lexical-parse-float" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683b3a5ebd0130b8fb52ba0bdc718cc56815b6a097e28ae5a6997d0ad17dc05f" +dependencies = [ + "lexical-parse-integer", + "lexical-util", + "static_assertions", +] + +[[package]] +name = "lexical-parse-integer" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d0994485ed0c312f6d965766754ea177d07f9c00c9b82a5ee62ed5b47945ee9" +dependencies = [ + "lexical-util", + "static_assertions", +] + +[[package]] +name = "lexical-util" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5255b9ff16ff898710eb9eb63cb39248ea8a5bb036bea8085b1a767ff6c4e3fc" +dependencies = [ + "static_assertions", +] + +[[package]] +name = "lexical-write-float" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accabaa1c4581f05a3923d1b4cfd124c329352288b7b9da09e766b0668116862" +dependencies = [ + "lexical-util", + "lexical-write-integer", + "static_assertions", +] + +[[package]] +name = "lexical-write-integer" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1b6f3d1f4422866b68192d62f77bc5c700bee84f3069f2469d7bc8c77852446" +dependencies = [ + "lexical-util", + "static_assertions", +] + [[package]] name = "libc" version = "0.2.155" @@ -4452,7 +5180,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4" dependencies = [ "cfg-if", - "windows-targets 0.52.6", + "windows-targets 0.48.5", ] [[package]] @@ -4779,7 +5507,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4f0c8427b39666bf970460908b213ec09b3b350f20c0c2eabcbba51704a08e6" dependencies = [ "base64 0.22.1", - "indexmap 2.3.0", + "indexmap 2.4.0", "metrics", "metrics-util", "quanta", @@ -4811,7 +5539,7 @@ dependencies = [ "crossbeam-epoch", "crossbeam-utils", "hashbrown 0.14.5", - "indexmap 2.3.0", + "indexmap 2.4.0", "metrics", "num_cpus", "ordered-float", @@ -4832,7 +5560,7 @@ dependencies = [ "futures-util", "http-types", "pin-project-lite", - "reqwest", + "reqwest 0.12.5", "serde", "serde_json", "thiserror", @@ -4885,9 +5613,9 @@ dependencies = [ [[package]] name = "mio" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4569e456d394deccd22ce1c1913e6ea0e54519f577285001215d33557431afe4" +checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" dependencies = [ "hermit-abi", "libc", @@ -4895,6 +5623,12 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "mirai-annotations" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9be0862c1b3f26a88803c4a49de6889c10e608b3ee9344e6ef5b45fb37ad3d1" + [[package]] name = "mockall" version = "0.12.1" @@ -4919,7 +5653,7 @@ dependencies = [ "cfg-if", "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.74", ] [[package]] @@ -4943,6 +5677,26 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "moka" +version = "0.12.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32cf62eb4dd975d2dde76432fb1075c49e3ee2331cf36f1f8fd4b66550d32b6f" +dependencies = [ + "crossbeam-channel", + "crossbeam-epoch", + "crossbeam-utils", + "once_cell", + "parking_lot 0.12.3", + "quanta", + "rustc_version 0.4.0", + "smallvec", + "tagptr", + "thiserror", + "triomphe", + "uuid", +] + [[package]] name = "more-asserts" version = "0.3.1" @@ -5003,6 +5757,23 @@ dependencies = [ "unsigned-varint 0.7.2", ] +[[package]] +name = "native-tls" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466" +dependencies = [ + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + [[package]] name = "nibble_vec" version = "0.1.0" @@ -5171,7 +5942,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.74", ] [[package]] @@ -5199,9 +5970,9 @@ dependencies = [ [[package]] name = "object" -version = "0.36.2" +version = "0.36.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f203fa8daa7bb185f760ae12bd8e097f63d17041dcdcaf675ac54cdf863170e" +checksum = "27b64972346851a39438c60b341ebc01bba47464ae329e55cf343eb93964efd9" dependencies = [ "memchr", ] @@ -5254,12 +6025,50 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" +[[package]] +name = "openssl" +version = "0.10.66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9529f4786b70a3e8c61e11179af17ab6188ad8d0ded78c5529441ed39d4bd9c1" +dependencies = [ + "bitflags 2.6.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.74", +] + [[package]] name = "openssl-probe" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" +[[package]] +name = "openssl-sys" +version = "0.9.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + [[package]] name = "option-ext" version = "0.2.0" @@ -5393,6 +6202,31 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "parse-display" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "914a1c2265c98e2446911282c6ac86d8524f495792c38c5bd884f80499c7538a" +dependencies = [ + "parse-display-derive", + "regex", + "regex-syntax 0.8.4", +] + +[[package]] +name = "parse-display-derive" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ae7800a4c974efd12df917266338e79a7a74415173caf7e70aa0a0707345281" +dependencies = [ + "proc-macro2", + "quote", + "regex", + "regex-syntax 0.8.4", + "structmeta", + "syn 2.0.74", +] + [[package]] name = "paste" version = "1.0.15" @@ -5419,6 +6253,15 @@ dependencies = [ "serde", ] +[[package]] +name = "pem-rfc7468" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" +dependencies = [ + "base64ct", +] + [[package]] name = "percent-encoding" version = "2.3.1" @@ -5489,7 +6332,7 @@ dependencies = [ "phf_shared", "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.74", ] [[package]] @@ -5518,7 +6361,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.74", ] [[package]] @@ -5680,7 +6523,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f12335488a2f3b0a83b14edad48dca9879ce89b2edd10e80237e4e852dd645e" dependencies = [ "proc-macro2", - "syn 2.0.72", + "syn 2.0.74", ] [[package]] @@ -5822,7 +6665,7 @@ checksum = "6ff7ff745a347b87471d859a377a9a404361e7efc2a971d73424a6d183c0fc77" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.74", ] [[package]] @@ -6156,6 +6999,46 @@ dependencies = [ "memchr", ] +[[package]] +name = "reqwest" +version = "0.11.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" +dependencies = [ + "base64 0.21.7", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2 0.3.26", + "http 0.2.12", + "http-body 0.4.6", + "hyper 0.14.30", + "hyper-tls 0.5.0", + "ipnet", + "js-sys", + "log", + "mime", + "native-tls", + "once_cell", + "percent-encoding", + "pin-project-lite", + "rustls-pemfile 1.0.4", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper 0.1.2", + "system-configuration", + "tokio", + "tokio-native-tls", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "winreg 0.50.0", +] + [[package]] name = "reqwest" version = "0.12.5" @@ -6166,29 +7049,32 @@ dependencies = [ "bytes", "futures-core", "futures-util", - "http", - "http-body", + "http 1.1.0", + "http-body 1.0.1", "http-body-util", - "hyper", + "hyper 1.4.1", "hyper-rustls", + "hyper-tls 0.6.0", "hyper-util", "ipnet", "js-sys", "log", "mime", + "native-tls", "once_cell", "percent-encoding", "pin-project-lite", "quinn", "rustls", "rustls-native-certs", - "rustls-pemfile", + "rustls-pemfile 2.1.3", "rustls-pki-types", "serde", "serde_json", "serde_urlencoded", - "sync_wrapper", + "sync_wrapper 1.0.1", "tokio", + "tokio-native-tls", "tokio-rustls", "tokio-util", "tower-service", @@ -6259,12 +7145,13 @@ dependencies = [ "reth-node-events", "reth-node-metrics", "reth-node-optimism", + "reth-node-telos", "reth-optimism-cli", "reth-optimism-primitives", "reth-payload-builder", "reth-payload-primitives", "reth-payload-validator", - "reth-primitives", + "reth-primitives 1.0.5", "reth-provider", "reth-prune", "reth-revm", @@ -6273,13 +7160,14 @@ dependencies = [ "reth-rpc-builder", "reth-rpc-eth-types", "reth-rpc-server-types", - "reth-rpc-types", + "reth-rpc-types 1.0.5", "reth-rpc-types-compat", "reth-stages", "reth-stages-api", "reth-static-file", - "reth-static-file-types", + "reth-static-file-types 1.0.5", "reth-tasks", + "reth-telos-rpc", "reth-tracing", "reth-transaction-pool", "reth-trie", @@ -6308,10 +7196,10 @@ dependencies = [ "reth-execution-types", "reth-network-p2p", "reth-network-peers", - "reth-primitives", + "reth-primitives 1.0.5", "reth-provider", "reth-revm", - "reth-rpc-types", + "reth-rpc-types 1.0.5", "reth-stages-api", "reth-tokio-util", "reth-transaction-pool", @@ -6332,7 +7220,7 @@ dependencies = [ "reth-metrics", "reth-payload-builder", "reth-payload-primitives", - "reth-primitives", + "reth-primitives 1.0.5", "reth-provider", "reth-revm", "reth-tasks", @@ -6371,11 +7259,11 @@ dependencies = [ "reth-payload-builder", "reth-payload-primitives", "reth-payload-validator", - "reth-primitives", + "reth-primitives 1.0.5", "reth-provider", "reth-prune", "reth-prune-types", - "reth-rpc-types", + "reth-rpc-types 1.0.5", "reth-rpc-types-compat", "reth-stages", "reth-stages-api", @@ -6412,14 +7300,14 @@ dependencies = [ "eyre", "futures", "libc", - "reqwest", + "reqwest 0.12.5", "reth-cli-runner", "reth-db", "reth-node-api", "reth-node-core", - "reth-primitives", + "reth-primitives 1.0.5", "reth-provider", - "reth-rpc-types", + "reth-rpc-types 1.0.5", "reth-rpc-types-compat", "reth-tracing", "serde", @@ -6453,7 +7341,7 @@ dependencies = [ "reth-execution-types", "reth-metrics", "reth-network", - "reth-primitives", + "reth-primitives 1.0.5", "reth-provider", "reth-prune-types", "reth-revm", @@ -6473,7 +7361,7 @@ version = "1.0.5" dependencies = [ "reth-consensus", "reth-execution-errors", - "reth-primitives", + "reth-primitives 1.0.5", "reth-storage-errors", "thiserror", ] @@ -6494,7 +7382,7 @@ dependencies = [ "reth-errors", "reth-execution-types", "reth-metrics", - "reth-primitives", + "reth-primitives 1.0.5", "reth-storage-api", "reth-trie", "revm", @@ -6517,10 +7405,10 @@ dependencies = [ "derive_more", "once_cell", "op-alloy-rpc-types", - "reth-ethereum-forks", + "reth-ethereum-forks 1.0.5", "reth-network-peers", - "reth-primitives-traits", - "reth-trie-common", + "reth-primitives-traits 1.0.5", + "reth-trie-common 1.0.5", "serde", "serde_json", ] @@ -6577,12 +7465,12 @@ dependencies = [ "reth-node-core", "reth-node-events", "reth-node-metrics", - "reth-primitives", + "reth-primitives 1.0.5", "reth-provider", "reth-prune", "reth-stages", "reth-static-file", - "reth-static-file-types", + "reth-static-file-types 1.0.5", "reth-trie", "reth-trie-db", "secp256k1", @@ -6630,12 +7518,28 @@ dependencies = [ "modular-bitfield", "proptest", "proptest-arbitrary-interop", - "reth-codecs-derive", + "reth-codecs-derive 1.0.5", "serde", "serde_json", "test-fuzz", ] +[[package]] +name = "reth-codecs" +version = "1.0.5" +source = "git+https://github.com/telosnetwork/telos-reth?branch=telos-main#603e39ab74509e0863fc023461a4c760fb2126d1" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-genesis", + "alloy-primitives", + "alloy-trie", + "bytes", + "modular-bitfield", + "reth-codecs-derive 1.0.5 (git+https://github.com/telosnetwork/telos-reth?branch=telos-main)", + "serde", +] + [[package]] name = "reth-codecs-derive" version = "1.0.5" @@ -6644,7 +7548,18 @@ dependencies = [ "proc-macro2", "quote", "similar-asserts", - "syn 2.0.72", + "syn 2.0.74", +] + +[[package]] +name = "reth-codecs-derive" +version = "1.0.5" +source = "git+https://github.com/telosnetwork/telos-reth?branch=telos-main#603e39ab74509e0863fc023461a4c760fb2126d1" +dependencies = [ + "convert_case 0.6.0", + "proc-macro2", + "quote", + "syn 2.0.74", ] [[package]] @@ -6667,7 +7582,7 @@ name = "reth-consensus" version = "1.0.5" dependencies = [ "auto_impl", - "reth-primitives", + "reth-primitives 1.0.5", "thiserror-no-std", ] @@ -6679,7 +7594,7 @@ dependencies = [ "rand 0.8.5", "reth-chainspec", "reth-consensus", - "reth-primitives", + "reth-primitives 1.0.5", "reth-storage-api", ] @@ -6693,12 +7608,12 @@ dependencies = [ "auto_impl", "eyre", "futures", - "reqwest", + "reqwest 0.12.5", "reth-node-api", "reth-node-core", "reth-rpc-api", "reth-rpc-builder", - "reth-rpc-types", + "reth-rpc-types 1.0.5", "reth-tracing", "ringbuffer", "serde", @@ -6727,13 +7642,13 @@ dependencies = [ "reth-libmdbx", "reth-metrics", "reth-nippy-jar", - "reth-primitives", - "reth-primitives-traits", + "reth-primitives 1.0.5", + "reth-primitives-traits 1.0.5", "reth-prune-types", "reth-stages-types", "reth-storage-errors", "reth-tracing", - "reth-trie-common", + "reth-trie-common 1.0.5", "rustc-hash 2.0.0", "serde", "serde_json", @@ -6761,13 +7676,13 @@ dependencies = [ "proptest", "proptest-arbitrary-interop", "rand 0.8.5", - "reth-codecs", - "reth-primitives", - "reth-primitives-traits", + "reth-codecs 1.0.5", + "reth-primitives 1.0.5", + "reth-primitives-traits 1.0.5", "reth-prune-types", "reth-stages-types", "reth-storage-errors", - "reth-trie-common", + "reth-trie-common 1.0.5", "serde", "test-fuzz", ] @@ -6780,14 +7695,14 @@ dependencies = [ "boyer-moore-magiclen", "eyre", "reth-chainspec", - "reth-codecs", + "reth-codecs 1.0.5", "reth-config", "reth-db", "reth-db-api", "reth-etl", "reth-fs-util", - "reth-primitives", - "reth-primitives-traits", + "reth-primitives 1.0.5", + "reth-primitives-traits 1.0.5", "reth-provider", "reth-stages-types", "reth-trie", @@ -6810,7 +7725,7 @@ dependencies = [ "generic-array", "parking_lot 0.12.3", "rand 0.8.5", - "reth-ethereum-forks", + "reth-ethereum-forks 1.0.5", "reth-net-banlist", "reth-net-nat", "reth-network-peers", @@ -6840,7 +7755,7 @@ dependencies = [ "multiaddr", "rand 0.8.5", "reth-chainspec", - "reth-ethereum-forks", + "reth-ethereum-forks 1.0.5", "reth-metrics", "reth-network-peers", "reth-tracing", @@ -6863,7 +7778,7 @@ dependencies = [ "parking_lot 0.12.3", "rand 0.8.5", "reth-chainspec", - "reth-ethereum-forks", + "reth-ethereum-forks 1.0.5", "reth-network-peers", "reth-tokio-util", "reth-tracing", @@ -6899,7 +7814,7 @@ dependencies = [ "reth-metrics", "reth-network-p2p", "reth-network-peers", - "reth-primitives", + "reth-primitives 1.0.5", "reth-provider", "reth-storage-api", "reth-tasks", @@ -6932,7 +7847,7 @@ dependencies = [ "reth-node-builder", "reth-node-ethereum", "reth-payload-builder", - "reth-primitives", + "reth-primitives 1.0.5", "reth-provider", "reth-rpc", "reth-rpc-layer", @@ -7004,7 +7919,7 @@ dependencies = [ "reth-network-p2p", "reth-payload-builder", "reth-payload-validator", - "reth-primitives", + "reth-primitives 1.0.5", "reth-provider", "reth-prune", "reth-prune-types", @@ -7042,12 +7957,12 @@ dependencies = [ "reth-payload-builder", "reth-payload-primitives", "reth-payload-validator", - "reth-primitives", + "reth-primitives 1.0.5", "reth-provider", "reth-prune", "reth-prune-types", "reth-revm", - "reth-rpc-types", + "reth-rpc-types 1.0.5", "reth-rpc-types-compat", "reth-stages", "reth-stages-api", @@ -7071,16 +7986,16 @@ dependencies = [ "reth-beacon-consensus", "reth-engine-primitives", "reth-errors", - "reth-ethereum-forks", + "reth-ethereum-forks 1.0.5", "reth-evm", "reth-fs-util", "reth-payload-validator", - "reth-primitives", + "reth-primitives 1.0.5", "reth-provider", "reth-revm", - "reth-rpc-types", + "reth-rpc-types 1.0.5", "reth-rpc-types-compat", - "revm-primitives", + "revm-primitives 8.0.0 (git+https://github.com/telosnetwork/telos-revm?branch=telos-main)", "serde", "serde_json", "tokio", @@ -7115,12 +8030,12 @@ dependencies = [ "proptest-arbitrary-interop", "rand 0.8.5", "reth-chainspec", - "reth-codecs", + "reth-codecs 1.0.5", "reth-ecies", "reth-eth-wire-types", "reth-metrics", "reth-network-peers", - "reth-primitives", + "reth-primitives 1.0.5", "reth-tracing", "secp256k1", "serde", @@ -7147,8 +8062,8 @@ dependencies = [ "proptest-arbitrary-interop", "rand 0.8.5", "reth-chainspec", - "reth-codecs-derive", - "reth-primitives", + "reth-codecs-derive 1.0.5", + "reth-primitives 1.0.5", "serde", "thiserror", ] @@ -7173,7 +8088,7 @@ dependencies = [ "reth-chainspec", "reth-consensus", "reth-consensus-common", - "reth-primitives", + "reth-primitives 1.0.5", "tracing", ] @@ -7186,10 +8101,10 @@ dependencies = [ "reth-engine-primitives", "reth-evm-ethereum", "reth-payload-primitives", - "reth-primitives", - "reth-rpc-types", + "reth-primitives 1.0.5", + "reth-rpc-types 1.0.5", "reth-rpc-types-compat", - "revm-primitives", + "revm-primitives 8.0.0 (git+https://github.com/telosnetwork/telos-revm?branch=telos-main)", "serde", "serde_json", "sha2 0.10.8", @@ -7214,6 +8129,23 @@ dependencies = [ "thiserror-no-std", ] +[[package]] +name = "reth-ethereum-forks" +version = "1.0.5" +source = "git+https://github.com/telosnetwork/telos-reth?branch=telos-main#603e39ab74509e0863fc023461a4c760fb2126d1" +dependencies = [ + "alloy-chains", + "alloy-primitives", + "alloy-rlp", + "auto_impl", + "crc", + "dyn-clone", + "once_cell", + "rustc-hash 2.0.0", + "serde", + "thiserror-no-std", +] + [[package]] name = "reth-ethereum-payload-builder" version = "1.0.5" @@ -7224,7 +8156,7 @@ dependencies = [ "reth-evm-ethereum", "reth-execution-types", "reth-payload-builder", - "reth-primitives", + "reth-primitives 1.0.5", "reth-provider", "reth-revm", "reth-transaction-pool", @@ -7253,11 +8185,11 @@ dependencies = [ "reth-chainspec", "reth-execution-errors", "reth-execution-types", - "reth-primitives", + "reth-primitives 1.0.5", "reth-prune-types", "reth-storage-errors", "revm", - "revm-primitives", + "revm-primitives 8.0.0 (git+https://github.com/telosnetwork/telos-revm?branch=telos-main)", ] [[package]] @@ -7268,14 +8200,14 @@ dependencies = [ "alloy-sol-types", "reth-chainspec", "reth-ethereum-consensus", - "reth-ethereum-forks", + "reth-ethereum-forks 1.0.5", "reth-evm", "reth-execution-types", - "reth-primitives", + "reth-primitives 1.0.5", "reth-prune-types", "reth-revm", "reth-testing-utils", - "revm-primitives", + "revm-primitives 8.0.0 (git+https://github.com/telosnetwork/telos-revm?branch=telos-main)", "secp256k1", "serde_json", ] @@ -7285,16 +8217,16 @@ name = "reth-evm-optimism" version = "1.0.5" dependencies = [ "reth-chainspec", - "reth-ethereum-forks", + "reth-ethereum-forks 1.0.5", "reth-evm", "reth-execution-errors", "reth-execution-types", "reth-optimism-consensus", - "reth-primitives", + "reth-primitives 1.0.5", "reth-prune-types", "reth-revm", "revm", - "revm-primitives", + "revm-primitives 8.0.0 (git+https://github.com/telosnetwork/telos-revm?branch=telos-main)", "thiserror", "tracing", ] @@ -7310,7 +8242,7 @@ dependencies = [ "reth-consensus", "reth-prune-types", "reth-storage-errors", - "revm-primitives", + "revm-primitives 8.0.0 (git+https://github.com/telosnetwork/telos-revm?branch=telos-main)", "thiserror-no-std", ] @@ -7322,7 +8254,7 @@ dependencies = [ "alloy-primitives", "reth-chainspec", "reth-execution-errors", - "reth-primitives", + "reth-primitives 1.0.5", "reth-trie", "revm", "serde", @@ -7347,8 +8279,8 @@ dependencies = [ "reth-node-api", "reth-node-core", "reth-payload-builder", - "reth-primitives", - "reth-primitives-traits", + "reth-primitives 1.0.5", + "reth-primitives-traits 1.0.5", "reth-provider", "reth-prune-types", "reth-revm", @@ -7383,7 +8315,7 @@ dependencies = [ "reth-node-core", "reth-node-ethereum", "reth-payload-builder", - "reth-primitives", + "reth-primitives 1.0.5", "reth-provider", "reth-tasks", "reth-transaction-pool", @@ -7440,7 +8372,7 @@ dependencies = [ "criterion", "dashmap 6.0.1", "derive_more", - "indexmap 2.3.0", + "indexmap 2.4.0", "parking_lot 0.12.3", "pprof", "rand 0.8.5", @@ -7479,7 +8411,7 @@ dependencies = [ "quote", "regex", "serial_test", - "syn 2.0.72", + "syn 2.0.74", "trybuild", ] @@ -7495,7 +8427,7 @@ name = "reth-net-nat" version = "1.0.5" dependencies = [ "futures-util", - "reqwest", + "reqwest 0.12.5", "reth-tracing", "serde_with", "thiserror", @@ -7537,7 +8469,7 @@ dependencies = [ "reth-network-p2p", "reth-network-peers", "reth-network-types", - "reth-primitives", + "reth-primitives 1.0.5", "reth-provider", "reth-storage-api", "reth-tasks", @@ -7570,7 +8502,7 @@ dependencies = [ "enr", "futures", "reth-eth-wire-types", - "reth-ethereum-forks", + "reth-ethereum-forks 1.0.5", "reth-network-p2p", "reth-network-peers", "reth-network-types", @@ -7591,7 +8523,7 @@ dependencies = [ "reth-consensus", "reth-eth-wire-types", "reth-network-peers", - "reth-primitives", + "reth-primitives 1.0.5", "reth-storage-errors", "serde", "thiserror", @@ -7620,7 +8552,7 @@ name = "reth-network-types" version = "1.0.5" dependencies = [ "humantime-serde", - "reth-ethereum-forks", + "reth-ethereum-forks 1.0.5", "reth-net-banlist", "reth-network-p2p", "reth-network-peers", @@ -7701,7 +8633,7 @@ dependencies = [ "reth-node-metrics", "reth-payload-builder", "reth-payload-validator", - "reth-primitives", + "reth-primitives 1.0.5", "reth-provider", "reth-prune", "reth-rpc", @@ -7709,7 +8641,7 @@ dependencies = [ "reth-rpc-engine-api", "reth-rpc-eth-types", "reth-rpc-layer", - "reth-rpc-types", + "reth-rpc-types 1.0.5", "reth-stages", "reth-static-file", "reth-tasks", @@ -7751,14 +8683,14 @@ dependencies = [ "reth-network", "reth-network-p2p", "reth-network-peers", - "reth-primitives", + "reth-primitives 1.0.5", "reth-provider", "reth-prune-types", "reth-rpc-api", "reth-rpc-eth-api", "reth-rpc-eth-types", "reth-rpc-server-types", - "reth-rpc-types", + "reth-rpc-types 1.0.5", "reth-rpc-types-compat", "reth-stages-types", "reth-storage-errors", @@ -7819,8 +8751,8 @@ dependencies = [ "reth-db-api", "reth-network", "reth-network-api", - "reth-primitives", - "reth-primitives-traits", + "reth-primitives 1.0.5", + "reth-primitives-traits 1.0.5", "reth-provider", "reth-prune", "reth-stages", @@ -7834,14 +8766,14 @@ name = "reth-node-metrics" version = "1.0.5" dependencies = [ "eyre", - "http", + "http 1.1.0", "jsonrpsee", "metrics", "metrics-exporter-prometheus", "metrics-process", "metrics-util", "procfs", - "reqwest", + "reqwest 0.12.5", "reth-chainspec", "reth-db", "reth-db-api", @@ -7868,7 +8800,7 @@ dependencies = [ "jsonrpsee", "jsonrpsee-types", "parking_lot 0.12.3", - "reqwest", + "reqwest 0.12.5", "reth", "reth-auto-seal-consensus", "reth-basic-payload-builder", @@ -7887,12 +8819,12 @@ dependencies = [ "reth-optimism-payload-builder", "reth-optimism-rpc", "reth-payload-builder", - "reth-primitives", + "reth-primitives 1.0.5", "reth-provider", "reth-revm", "reth-rpc-eth-api", "reth-rpc-eth-types", - "reth-rpc-types", + "reth-rpc-types 1.0.5", "reth-rpc-types-compat", "reth-tracing", "reth-transaction-pool", @@ -7903,6 +8835,40 @@ dependencies = [ "tracing", ] +[[package]] +name = "reth-node-telos" +version = "1.0.5" +dependencies = [ + "antelope-client 0.2.1 (git+https://github.com/telosnetwork/antelope-rs?branch=finish_table_rows_params)", + "clap", + "eyre", + "reth", + "reth-auto-seal-consensus", + "reth-basic-payload-builder", + "reth-beacon-consensus", + "reth-chainspec", + "reth-e2e-test-utils", + "reth-ethereum-engine-primitives", + "reth-evm-ethereum", + "reth-network", + "reth-node-api", + "reth-node-builder", + "reth-node-ethereum", + "reth-payload-builder", + "reth-primitives 1.0.5", + "reth-provider", + "reth-rpc", + "reth-tracing", + "reth-transaction-pool", + "serde", + "serde_json", + "telos-consensus-client", + "testcontainers", + "tokio", + "tracing", + "tracing-subscriber", +] + [[package]] name = "reth-optimism-cli" version = "1.0.5" @@ -7929,13 +8895,13 @@ dependencies = [ "reth-node-core", "reth-node-events", "reth-optimism-primitives", - "reth-primitives", + "reth-primitives 1.0.5", "reth-provider", "reth-prune", "reth-stages", "reth-stages-types", "reth-static-file", - "reth-static-file-types", + "reth-static-file-types 1.0.5", "serde_json", "shellexpand", "tempfile", @@ -7951,7 +8917,7 @@ dependencies = [ "reth-chainspec", "reth-consensus", "reth-consensus-common", - "reth-primitives", + "reth-primitives 1.0.5", "tracing", ] @@ -7968,10 +8934,10 @@ dependencies = [ "reth-execution-types", "reth-payload-builder", "reth-payload-primitives", - "reth-primitives", + "reth-primitives 1.0.5", "reth-provider", "reth-revm", - "reth-rpc-types", + "reth-rpc-types 1.0.5", "reth-rpc-types-compat", "reth-transaction-pool", "reth-trie", @@ -7998,13 +8964,13 @@ dependencies = [ "reth-evm-optimism", "reth-network-api", "reth-node-api", - "reth-primitives", + "reth-primitives 1.0.5", "reth-provider", "reth-rpc", "reth-rpc-eth-api", "reth-rpc-eth-types", "reth-rpc-server-types", - "reth-rpc-types", + "reth-rpc-types 1.0.5", "reth-tasks", "reth-transaction-pool", "revm", @@ -8025,9 +8991,9 @@ dependencies = [ "reth-ethereum-engine-primitives", "reth-metrics", "reth-payload-primitives", - "reth-primitives", + "reth-primitives 1.0.5", "reth-provider", - "reth-rpc-types", + "reth-rpc-types 1.0.5", "reth-transaction-pool", "revm", "thiserror", @@ -8043,8 +9009,8 @@ dependencies = [ "reth-chain-state", "reth-chainspec", "reth-errors", - "reth-primitives", - "reth-rpc-types", + "reth-primitives 1.0.5", + "reth-rpc-types 1.0.5", "reth-transaction-pool", "serde", "thiserror", @@ -8056,8 +9022,8 @@ name = "reth-payload-validator" version = "1.0.5" dependencies = [ "reth-chainspec", - "reth-primitives", - "reth-rpc-types", + "reth-primitives 1.0.5", + "reth-rpc-types 1.0.5", "reth-rpc-types-compat", ] @@ -8085,12 +9051,12 @@ dependencies = [ "rand 0.8.5", "rayon", "reth-chainspec", - "reth-codecs", - "reth-ethereum-forks", - "reth-primitives-traits", - "reth-static-file-types", - "reth-trie-common", - "revm-primitives", + "reth-codecs 1.0.5", + "reth-ethereum-forks 1.0.5", + "reth-primitives-traits 1.0.5", + "reth-static-file-types 1.0.5", + "reth-trie-common 1.0.5", + "revm-primitives 8.0.0 (git+https://github.com/telosnetwork/telos-revm?branch=telos-main)", "secp256k1", "serde", "serde_json", @@ -8100,6 +9066,36 @@ dependencies = [ "zstd", ] +[[package]] +name = "reth-primitives" +version = "1.0.5" +source = "git+https://github.com/telosnetwork/telos-reth?branch=telos-main#603e39ab74509e0863fc023461a4c760fb2126d1" +dependencies = [ + "alloy-eips", + "alloy-genesis", + "alloy-primitives", + "alloy-rlp", + "alloy-rpc-types", + "bytes", + "c-kzg", + "derive_more", + "k256", + "modular-bitfield", + "once_cell", + "rayon", + "reth-codecs 1.0.5 (git+https://github.com/telosnetwork/telos-reth?branch=telos-main)", + "reth-ethereum-forks 1.0.5 (git+https://github.com/telosnetwork/telos-reth?branch=telos-main)", + "reth-primitives-traits 1.0.5 (git+https://github.com/telosnetwork/telos-reth?branch=telos-main)", + "reth-static-file-types 1.0.5 (git+https://github.com/telosnetwork/telos-reth?branch=telos-main)", + "reth-trie-common 1.0.5 (git+https://github.com/telosnetwork/telos-reth?branch=telos-main)", + "revm-primitives 8.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "secp256k1", + "serde", + "tempfile", + "thiserror", + "zstd", +] + [[package]] name = "reth-primitives-traits" version = "1.0.5" @@ -8118,14 +9114,35 @@ dependencies = [ "proptest", "proptest-arbitrary-interop", "rand 0.8.5", - "reth-codecs", - "revm-primitives", + "reth-codecs 1.0.5", + "revm-primitives 8.0.0 (git+https://github.com/telosnetwork/telos-revm?branch=telos-main)", "roaring", "serde", "serde_json", "test-fuzz", ] +[[package]] +name = "reth-primitives-traits" +version = "1.0.5" +source = "git+https://github.com/telosnetwork/telos-reth?branch=telos-main#603e39ab74509e0863fc023461a4c760fb2126d1" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-genesis", + "alloy-primitives", + "alloy-rlp", + "alloy-rpc-types-eth", + "byteorder", + "bytes", + "derive_more", + "modular-bitfield", + "reth-codecs 1.0.5 (git+https://github.com/telosnetwork/telos-reth?branch=telos-main)", + "revm-primitives 8.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "roaring", + "serde", +] + [[package]] name = "reth-provider" version = "1.0.5" @@ -8143,7 +9160,7 @@ dependencies = [ "reth-blockchain-tree-api", "reth-chain-state", "reth-chainspec", - "reth-codecs", + "reth-codecs 1.0.5", "reth-db", "reth-db-api", "reth-errors", @@ -8153,7 +9170,7 @@ dependencies = [ "reth-metrics", "reth-network-p2p", "reth-nippy-jar", - "reth-primitives", + "reth-primitives 1.0.5", "reth-prune-types", "reth-stages-types", "reth-storage-api", @@ -8187,7 +9204,7 @@ dependencies = [ "reth-provider", "reth-prune-types", "reth-stages", - "reth-static-file-types", + "reth-static-file-types 1.0.5", "reth-testing-utils", "reth-tokio-util", "reth-tracing", @@ -8209,7 +9226,7 @@ dependencies = [ "modular-bitfield", "proptest", "proptest-arbitrary-interop", - "reth-codecs", + "reth-codecs 1.0.5", "serde", "serde_json", "test-fuzz", @@ -8224,9 +9241,9 @@ dependencies = [ "alloy-eips", "reth-chainspec", "reth-consensus-common", - "reth-ethereum-forks", + "reth-ethereum-forks 1.0.5", "reth-execution-errors", - "reth-primitives", + "reth-primitives 1.0.5", "reth-prune-types", "reth-storage-api", "reth-storage-errors", @@ -8245,9 +9262,9 @@ dependencies = [ "async-trait", "derive_more", "futures", - "http", - "http-body", - "hyper", + "http 1.1.0", + "http-body 1.0.1", + "hyper 1.4.1", "jsonrpsee", "jsonrpsee-types", "jsonwebtoken", @@ -8263,7 +9280,7 @@ dependencies = [ "reth-network-peers", "reth-network-types", "reth-node-api", - "reth-primitives", + "reth-primitives 1.0.5", "reth-provider", "reth-revm", "reth-rpc-api", @@ -8271,7 +9288,7 @@ dependencies = [ "reth-rpc-eth-api", "reth-rpc-eth-types", "reth-rpc-server-types", - "reth-rpc-types", + "reth-rpc-types 1.0.5", "reth-rpc-types-compat", "reth-tasks", "reth-testing-utils", @@ -8279,7 +9296,7 @@ dependencies = [ "reth-trie", "revm", "revm-inspectors", - "revm-primitives", + "revm-primitives 8.0.0 (git+https://github.com/telosnetwork/telos-revm?branch=telos-main)", "secp256k1", "serde", "serde_json", @@ -8298,9 +9315,9 @@ dependencies = [ "jsonrpsee", "reth-engine-primitives", "reth-network-peers", - "reth-primitives", + "reth-primitives 1.0.5", "reth-rpc-eth-api", - "reth-rpc-types", + "reth-rpc-types 1.0.5", "serde_json", ] @@ -8310,10 +9327,10 @@ version = "1.0.5" dependencies = [ "futures", "jsonrpsee", - "reth-primitives", + "reth-primitives 1.0.5", "reth-rpc-api", "reth-rpc-eth-api", - "reth-rpc-types", + "reth-rpc-types 1.0.5", "serde_json", "similar-asserts", "tokio", @@ -8324,7 +9341,7 @@ name = "reth-rpc-builder" version = "1.0.5" dependencies = [ "clap", - "http", + "http 1.1.0", "jsonrpsee", "metrics", "pin-project", @@ -8341,7 +9358,7 @@ dependencies = [ "reth-node-api", "reth-node-core", "reth-payload-builder", - "reth-primitives", + "reth-primitives 1.0.5", "reth-provider", "reth-rpc", "reth-rpc-api", @@ -8350,7 +9367,7 @@ dependencies = [ "reth-rpc-eth-types", "reth-rpc-layer", "reth-rpc-server-types", - "reth-rpc-types", + "reth-rpc-types 1.0.5", "reth-rpc-types-compat", "reth-tasks", "reth-tokio-util", @@ -8383,10 +9400,10 @@ dependencies = [ "reth-metrics", "reth-payload-builder", "reth-payload-primitives", - "reth-primitives", + "reth-primitives 1.0.5", "reth-provider", "reth-rpc-api", - "reth-rpc-types", + "reth-rpc-types 1.0.5", "reth-rpc-types-compat", "reth-storage-api", "reth-tasks", @@ -8415,18 +9432,18 @@ dependencies = [ "reth-evm", "reth-execution-types", "reth-network-api", - "reth-primitives", + "reth-primitives 1.0.5", "reth-provider", "reth-revm", "reth-rpc-eth-types", "reth-rpc-server-types", - "reth-rpc-types", + "reth-rpc-types 1.0.5", "reth-rpc-types-compat", "reth-tasks", "reth-transaction-pool", "revm", "revm-inspectors", - "revm-primitives", + "revm-primitives 8.0.0 (git+https://github.com/telosnetwork/telos-revm?branch=telos-main)", "tokio", "tracing", ] @@ -8448,10 +9465,10 @@ dependencies = [ "reth-evm", "reth-execution-types", "reth-metrics", - "reth-primitives", + "reth-primitives 1.0.5", "reth-revm", "reth-rpc-server-types", - "reth-rpc-types", + "reth-rpc-types 1.0.5", "reth-rpc-types-compat", "reth-storage-api", "reth-tasks", @@ -8459,7 +9476,7 @@ dependencies = [ "reth-trie", "revm", "revm-inspectors", - "revm-primitives", + "revm-primitives 8.0.0 (git+https://github.com/telosnetwork/telos-revm?branch=telos-main)", "schnellru", "serde", "serde_json", @@ -8474,11 +9491,11 @@ name = "reth-rpc-layer" version = "1.0.5" dependencies = [ "alloy-rpc-types-engine", - "http", + "http 1.1.0", "jsonrpsee", "jsonrpsee-http-client", "pin-project", - "reqwest", + "reqwest 0.12.5", "tokio", "tower", "tracing", @@ -8493,8 +9510,8 @@ dependencies = [ "jsonrpsee-types", "reth-errors", "reth-network-api", - "reth-primitives", - "reth-rpc-types", + "reth-primitives 1.0.5", + "reth-rpc-types 1.0.5", "serde", "strum", ] @@ -8518,15 +9535,33 @@ dependencies = [ "rand 0.8.5", ] +[[package]] +name = "reth-rpc-types" +version = "1.0.5" +source = "git+https://github.com/telosnetwork/telos-reth?branch=telos-main#603e39ab74509e0863fc023461a4c760fb2126d1" +dependencies = [ + "alloy-primitives", + "alloy-rpc-types", + "alloy-rpc-types-admin", + "alloy-rpc-types-anvil", + "alloy-rpc-types-beacon", + "alloy-rpc-types-engine", + "alloy-rpc-types-mev", + "alloy-rpc-types-trace", + "alloy-rpc-types-txpool", + "alloy-serde", + "jsonrpsee-types", +] + [[package]] name = "reth-rpc-types-compat" version = "1.0.5" dependencies = [ "alloy-rlp", "alloy-rpc-types", - "reth-primitives", - "reth-rpc-types", - "reth-trie-common", + "reth-primitives 1.0.5", + "reth-rpc-types 1.0.5", + "reth-trie-common 1.0.5", "serde_json", ] @@ -8545,7 +9580,7 @@ dependencies = [ "rand 0.8.5", "rayon", "reth-chainspec", - "reth-codecs", + "reth-codecs 1.0.5", "reth-config", "reth-consensus", "reth-db", @@ -8559,8 +9594,8 @@ dependencies = [ "reth-exex", "reth-network-p2p", "reth-network-peers", - "reth-primitives", - "reth-primitives-traits", + "reth-primitives 1.0.5", + "reth-primitives-traits 1.0.5", "reth-provider", "reth-prune", "reth-prune-types", @@ -8593,12 +9628,12 @@ dependencies = [ "reth-errors", "reth-metrics", "reth-network-p2p", - "reth-primitives-traits", + "reth-primitives-traits 1.0.5", "reth-provider", "reth-prune", "reth-stages-types", "reth-static-file", - "reth-static-file-types", + "reth-static-file-types 1.0.5", "reth-testing-utils", "reth-tokio-util", "thiserror", @@ -8618,8 +9653,8 @@ dependencies = [ "proptest", "proptest-arbitrary-interop", "rand 0.8.5", - "reth-codecs", - "reth-trie-common", + "reth-codecs 1.0.5", + "reth-trie-common 1.0.5", "serde", "test-fuzz", ] @@ -8639,7 +9674,7 @@ dependencies = [ "reth-prune-types", "reth-stages", "reth-stages-types", - "reth-static-file-types", + "reth-static-file-types 1.0.5", "reth-storage-errors", "reth-testing-utils", "reth-tokio-util", @@ -8658,6 +9693,17 @@ dependencies = [ "strum", ] +[[package]] +name = "reth-static-file-types" +version = "1.0.5" +source = "git+https://github.com/telosnetwork/telos-reth?branch=telos-main#603e39ab74509e0863fc023461a4c760fb2126d1" +dependencies = [ + "alloy-primitives", + "derive_more", + "serde", + "strum", +] + [[package]] name = "reth-storage-api" version = "1.0.5" @@ -8666,7 +9712,7 @@ dependencies = [ "reth-chainspec", "reth-db-api", "reth-execution-types", - "reth-primitives", + "reth-primitives 1.0.5", "reth-prune-types", "reth-stages-types", "reth-storage-errors", @@ -8680,7 +9726,7 @@ version = "1.0.5" dependencies = [ "alloy-rlp", "reth-fs-util", - "reth-primitives", + "reth-primitives 1.0.5", "thiserror-no-std", ] @@ -8701,13 +9747,24 @@ dependencies = [ "tracing-futures", ] +[[package]] +name = "reth-telos-rpc" +version = "1.0.5" +dependencies = [ + "antelope-client 0.2.1 (git+https://github.com/telosnetwork/antelope-rs?branch=finish_table_rows_params)", + "async-trait", + "reth-node-telos", + "reth-rpc-eth-api", + "reth-rpc-eth-types", +] + [[package]] name = "reth-testing-utils" version = "1.0.5" dependencies = [ "alloy-genesis", "rand 0.8.5", - "reth-primitives", + "reth-primitives 1.0.5", "secp256k1", ] @@ -8758,7 +9815,7 @@ dependencies = [ "reth-execution-types", "reth-fs-util", "reth-metrics", - "reth-primitives", + "reth-primitives 1.0.5", "reth-provider", "reth-storage-api", "reth-tasks", @@ -8792,11 +9849,11 @@ dependencies = [ "reth-chainspec", "reth-execution-errors", "reth-metrics", - "reth-primitives", + "reth-primitives 1.0.5", "reth-provider", "reth-stages-types", "reth-storage-errors", - "reth-trie-common", + "reth-trie-common 1.0.5", "revm", "serde", "serde_json", @@ -8825,14 +9882,34 @@ dependencies = [ "plain_hasher", "proptest", "proptest-arbitrary-interop", - "reth-codecs", - "reth-primitives-traits", - "revm-primitives", + "reth-codecs 1.0.5", + "reth-primitives-traits 1.0.5", + "revm-primitives 8.0.0 (git+https://github.com/telosnetwork/telos-revm?branch=telos-main)", "serde", "test-fuzz", "toml", ] +[[package]] +name = "reth-trie-common" +version = "1.0.5" +source = "git+https://github.com/telosnetwork/telos-reth?branch=telos-main#603e39ab74509e0863fc023461a4c760fb2126d1" +dependencies = [ + "alloy-consensus", + "alloy-genesis", + "alloy-primitives", + "alloy-rlp", + "alloy-trie", + "bytes", + "derive_more", + "itertools 0.13.0", + "nybbles", + "reth-codecs 1.0.5 (git+https://github.com/telosnetwork/telos-reth?branch=telos-main)", + "reth-primitives-traits 1.0.5 (git+https://github.com/telosnetwork/telos-reth?branch=telos-main)", + "revm-primitives 8.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde", +] + [[package]] name = "reth-trie-db" version = "1.0.5" @@ -8851,12 +9928,12 @@ dependencies = [ "reth-db-api", "reth-execution-errors", "reth-metrics", - "reth-primitives", + "reth-primitives 1.0.5", "reth-provider", "reth-stages-types", "reth-storage-errors", "reth-trie", - "reth-trie-common", + "reth-trie-common 1.0.5", "revm", "serde", "serde_json", @@ -8884,7 +9961,7 @@ dependencies = [ "reth-db-api", "reth-execution-errors", "reth-metrics", - "reth-primitives", + "reth-primitives 1.0.5", "reth-provider", "reth-tasks", "reth-trie", @@ -8897,8 +9974,7 @@ dependencies = [ [[package]] name = "revm" version = "13.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b2f635bbbf4002b1b5c0219f841ec1a317723883ed7662c0d138617539a6087" +source = "git+https://github.com/telosnetwork/telos-revm?branch=telos-main#d015966b5131bf4d645465f8802d7a5ed7ca002a" dependencies = [ "auto_impl", "cfg-if", @@ -8911,9 +9987,8 @@ dependencies = [ [[package]] name = "revm-inspectors" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43cbb1576a147317c6990cf69d6cd5ef402df99f638616ba911006e9ec45866b" +version = "0.5.5" +source = "git+https://github.com/telosnetwork/telos-evm-inspectors?branch=telos-main#b9e00e316c5a01be709282e0f437ef5222376952" dependencies = [ "alloy-primitives", "alloy-rpc-types", @@ -8930,18 +10005,16 @@ dependencies = [ [[package]] name = "revm-interpreter" version = "9.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2ad04c7d87dc3421a5ccca76e56dbd0b29a358c03bb41fe9e80976e9d3f397d" +source = "git+https://github.com/telosnetwork/telos-revm?branch=telos-main#d015966b5131bf4d645465f8802d7a5ed7ca002a" dependencies = [ - "revm-primitives", + "revm-primitives 8.0.0 (git+https://github.com/telosnetwork/telos-revm?branch=telos-main)", "serde", ] [[package]] name = "revm-precompile" version = "10.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3526a4ba5ec400e7bbe71affbc10fe2e67c1cd1fb782bab988873d09a102e271" +source = "git+https://github.com/telosnetwork/telos-revm?branch=telos-main#d015966b5131bf4d645465f8802d7a5ed7ca002a" dependencies = [ "aurora-engine-modexp", "blst", @@ -8950,7 +10023,7 @@ dependencies = [ "k256", "once_cell", "p256", - "revm-primitives", + "revm-primitives 8.0.0 (git+https://github.com/telosnetwork/telos-revm?branch=telos-main)", "ripemd", "secp256k1", "sha2 0.10.8", @@ -8980,6 +10053,28 @@ dependencies = [ "serde", ] +[[package]] +name = "revm-primitives" +version = "8.0.0" +source = "git+https://github.com/telosnetwork/telos-revm?branch=telos-main#d015966b5131bf4d645465f8802d7a5ed7ca002a" +dependencies = [ + "alloy-eips", + "alloy-primitives", + "auto_impl", + "bitflags 2.6.0", + "bitvec", + "c-kzg", + "cfg-if", + "derive_more", + "dyn-clone", + "enumn", + "hashbrown 0.14.5", + "hex", + "kzg-rs", + "once_cell", + "serde", +] + [[package]] name = "rfc6979" version = "0.4.0" @@ -8992,9 +10087,9 @@ dependencies = [ [[package]] name = "rgb" -version = "0.8.47" +version = "0.8.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e12bc8d2f72df26a5d3178022df33720fbede0d31d82c7291662eff89836994d" +checksum = "0f86ae463694029097b846d8f99fd5536740602ae00022c0c50c5600720b2f71" dependencies = [ "bytemuck", ] @@ -9073,6 +10168,18 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "afab94fb28594581f62d981211a9a4d53cc8130bbcbbb89a0440d9b8e81a7746" +[[package]] +name = "ruint" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0430214a5bb015461c0628e93d07738af2866e77a3f3db71e8264c999dda03fc" +dependencies = [ + "itertools 0.10.5", + "ruint-macro 0.2.1", + "rustc_version 0.4.0", + "thiserror", +] + [[package]] name = "ruint" version = "1.12.3" @@ -9092,12 +10199,18 @@ dependencies = [ "proptest", "rand 0.8.5", "rlp", - "ruint-macro", + "ruint-macro 1.2.1", "serde", "valuable", "zeroize", ] +[[package]] +name = "ruint-macro" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0f4dd8af87bc3b385595ce5f61887b5b8efd4def9eb1679ce4300ec4d89c308" + [[package]] name = "ruint-macro" version = "1.2.1" @@ -9165,6 +10278,7 @@ version = "0.23.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c58f8c84392efc0a126acce10fa59ff7b3d2ac06ab451a33f2741989b806b044" dependencies = [ + "aws-lc-rs", "log", "once_cell", "ring", @@ -9181,12 +10295,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a88d6d420651b496bdd98684116959239430022a115c1240e6c3993be0b15fba" dependencies = [ "openssl-probe", - "rustls-pemfile", + "rustls-pemfile 2.1.3", "rustls-pki-types", "schannel", "security-framework", ] +[[package]] +name = "rustls-pemfile" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" +dependencies = [ + "base64 0.21.7", +] + [[package]] name = "rustls-pemfile" version = "2.1.3" @@ -9199,9 +10322,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.7.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "976295e77ce332211c0d24d92c0e83e50f5c5f046d11082cea19f3df13a3562d" +checksum = "fc0a2ce646f8655401bb81e7927b812614bd5d91dbc968696be50603510fcaf0" [[package]] name = "rustls-platform-verifier" @@ -9236,6 +10359,7 @@ version = "0.102.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e6b52d4fda176fd835fdc55a835d4a89b8499cad995885a21149d5ad62f852e" dependencies = [ + "aws-lc-rs", "ring", "rustls-pki-types", "untrusted", @@ -9293,9 +10417,9 @@ dependencies = [ [[package]] name = "scc" -version = "2.1.8" +version = "2.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d777f59627453628a9a5be1ee8d948745b94b1dfc2d0c3099cbd9e08ab89e7c" +checksum = "79da19444d9da7a9a82b80ecf059eceba6d3129d84a8610fd25ff2364f255466" dependencies = [ "sdd", ] @@ -9328,9 +10452,9 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "sdd" -version = "2.1.0" +version = "3.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "177258b64c0faaa9ffd3c65cd3262c2bc7e2588dbbd9c1641d0346145c1bbda8" +checksum = "0495e4577c672de8254beb68d01a9b62d0e8a13c099edecdbedccce3223cd29f" [[package]] name = "sec1" @@ -9431,13 +10555,22 @@ checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" [[package]] name = "serde" -version = "1.0.204" +version = "1.0.207" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc76f558e0cbb2a839d37354c575f1dc3fdc6546b5be373ba43d95f231bf7c12" +checksum = "5665e14a49a4ea1b91029ba7d3bca9f299e1f7cfa194388ccc20f14743e784f2" dependencies = [ "serde_derive", ] +[[package]] +name = "serde-big-array" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11fc7cc2c76d73e0f27ee52abbd64eec84d46f370c88371120433196934e4b7f" +dependencies = [ + "serde", +] + [[package]] name = "serde_bytes" version = "0.11.15" @@ -9449,22 +10582,22 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.204" +version = "1.0.207" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222" +checksum = "6aea2634c86b0e8ef2cfdc0c340baede54ec27b1e46febd7f80dffb2aa44a00e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.74", ] [[package]] name = "serde_json" -version = "1.0.122" +version = "1.0.124" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "784b6203951c57ff748476b126ccb5e8e2959a5c19e5c617ab1956be3dbc68da" +checksum = "66ad62847a56b3dba58cc891acd13884b9c61138d330c0d7b6181713d4fce38d" dependencies = [ - "indexmap 2.3.0", + "indexmap 2.4.0", "itoa", "memchr", "ryu", @@ -9482,6 +10615,17 @@ dependencies = [ "thiserror", ] +[[package]] +name = "serde_repr" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.74", +] + [[package]] name = "serde_spanned" version = "0.6.7" @@ -9513,7 +10657,7 @@ dependencies = [ "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.3.0", + "indexmap 2.4.0", "serde", "serde_derive", "serde_json", @@ -9530,7 +10674,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.74", ] [[package]] @@ -9539,7 +10683,7 @@ version = "0.9.34+deprecated" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" dependencies = [ - "indexmap 2.3.0", + "indexmap 2.4.0", "itoa", "ryu", "serde", @@ -9568,7 +10712,7 @@ checksum = "82fe9db325bcef1fbcde82e078a5cc4efdf787e96b3b9cf45b50b529f2083d67" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.74", ] [[package]] @@ -9788,7 +10932,7 @@ dependencies = [ "base64 0.22.1", "bytes", "futures", - "http", + "http 1.1.0", "httparse", "log", "rand 0.8.5", @@ -9824,7 +10968,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d904e7009df136af5297832a3ace3370cd14ff1546a232f4f185036c2736fcac" dependencies = [ "quote", - "syn 2.0.72", + "syn 2.0.74", ] [[package]] @@ -9851,6 +10995,29 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" +[[package]] +name = "structmeta" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e1575d8d40908d70f6fd05537266b90ae71b15dbbe7a8b7dffa2b759306d329" +dependencies = [ + "proc-macro2", + "quote", + "structmeta-derive", + "syn 2.0.74", +] + +[[package]] +name = "structmeta-derive" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "152a0b65a590ff6c3da95cabe2353ee04e6167c896b28e3b14478c2636c922fc" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.74", +] + [[package]] name = "strum" version = "0.26.3" @@ -9870,7 +11037,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.72", + "syn 2.0.74", ] [[package]] @@ -9938,9 +11105,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.72" +version = "2.0.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc4b9b9bf2add8093d3f2c0204471e951b2285580335de42f9d2534f3ae7a8af" +checksum = "1fceb41e3d546d0bd83421d3409b1460cc7444cd389341a4c880fe7a042cb3d7" dependencies = [ "proc-macro2", "quote", @@ -9956,9 +11123,15 @@ dependencies = [ "paste", "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.74", ] +[[package]] +name = "sync_wrapper" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" + [[package]] name = "sync_wrapper" version = "1.0.1" @@ -9973,7 +11146,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.74", ] [[package]] @@ -9990,23 +11163,116 @@ dependencies = [ "windows 0.52.0", ] +[[package]] +name = "system-configuration" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[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 = "telos-consensus-client" +version = "0.1.0" +source = "git+https://github.com/telosnetwork/telos-consensus-client?branch=translator_integration#9776b6c4ec2fb7f39f78960feaa5da26ed6da889" +dependencies = [ + "alloy", + "alloy-consensus", + "alloy-rlp", + "antelope-client 0.2.1 (git+https://github.com/telosnetwork/antelope-rs?branch=serialization)", + "arrowbatch", + "base64 0.22.1", + "chrono", + "clap", + "csv", + "env_logger", + "eyre", + "futures", + "hex", + "jsonwebtoken", + "log", + "rand 0.8.5", + "reqwest 0.11.27", + "reth-primitives 1.0.5 (git+https://github.com/telosnetwork/telos-reth?branch=telos-main)", + "reth-rpc-types 1.0.5 (git+https://github.com/telosnetwork/telos-reth?branch=telos-main)", + "serde", + "serde_json", + "telos-translator-rs", + "thiserror", + "tokio", + "toml", + "tracing", + "tracing-subscriber", + "zeroize", +] + +[[package]] +name = "telos-translator-rs" +version = "0.1.0" +source = "git+https://github.com/telosnetwork/telos-translator-rs.git?branch=final_block_struct#7d41f86423d4dad85d2d959374104608dff3cb11" +dependencies = [ + "alloy", + "alloy-consensus", + "alloy-rlp", + "antelope-client 0.2.1 (git+https://github.com/telosnetwork/antelope-rs?branch=finish_table_rows_params)", + "bytes", + "clap", + "dashmap 5.5.3", + "eyre", + "futures-util", + "hex", + "k256", + "lazy_static", + "log", + "moka", + "num-bigint", + "rlp", + "ruint 0.3.0", + "serde", + "serde_json", + "tokio", + "tokio-tungstenite 0.23.1", + "toml", + "tracing", + "tracing-subscriber", +] + [[package]] name = "tempfile" -version = "3.11.0" +version = "3.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8fcd239983515c23a32fb82099f97d0b11b8c72f654ed659363a95c3dad7a53" +checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64" dependencies = [ "cfg-if", "fastrand 2.1.0", "once_cell", "rustix", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -10059,7 +11325,7 @@ dependencies = [ "prettyplease", "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.74", ] [[package]] @@ -10075,6 +11341,34 @@ dependencies = [ "test-fuzz-internal", ] +[[package]] +name = "testcontainers" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f7d80fe0008971413157e67062150cbf508b92f0eb525b9f49de1aec4267f24" +dependencies = [ + "async-trait", + "bollard", + "bollard-stubs", + "bytes", + "dirs", + "docker_credential", + "either", + "futures", + "log", + "memchr", + "parse-display", + "pin-project-lite", + "serde", + "serde_json", + "serde_with", + "thiserror", + "tokio", + "tokio-stream", + "tokio-util", + "url", +] + [[package]] name = "thin-vec" version = "0.2.13" @@ -10098,7 +11392,7 @@ checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.74", ] [[package]] @@ -10258,7 +11552,7 @@ dependencies = [ "backtrace", "bytes", "libc", - "mio 1.0.1", + "mio 1.0.2", "parking_lot 0.12.3", "pin-project-lite", "signal-hook-registry", @@ -10275,7 +11569,17 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.74", +] + +[[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]] @@ -10301,6 +11605,18 @@ dependencies = [ "tokio-util", ] +[[package]] +name = "tokio-tungstenite" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c83b561d025642014097b66e6c1bb422783339e0909e4429cde4749d1990bc38" +dependencies = [ + "futures-util", + "log", + "tokio", + "tungstenite 0.21.0", +] + [[package]] name = "tokio-tungstenite" version = "0.23.1" @@ -10313,7 +11629,7 @@ dependencies = [ "rustls-pki-types", "tokio", "tokio-rustls", - "tungstenite", + "tungstenite 0.23.0", "webpki-roots", ] @@ -10359,7 +11675,7 @@ version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" dependencies = [ - "indexmap 2.3.0", + "indexmap 2.4.0", "toml_datetime", "winnow 0.5.40", ] @@ -10370,7 +11686,7 @@ version = "0.22.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d" dependencies = [ - "indexmap 2.3.0", + "indexmap 2.4.0", "serde", "serde_spanned", "toml_datetime", @@ -10410,8 +11726,8 @@ dependencies = [ "bytes", "futures-core", "futures-util", - "http", - "http-body", + "http 1.1.0", + "http-body 1.0.1", "http-body-util", "http-range-header", "httpdate", @@ -10431,15 +11747,15 @@ dependencies = [ [[package]] name = "tower-layer" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" [[package]] name = "tower-service" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" @@ -10473,7 +11789,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.74", ] [[package]] @@ -10571,6 +11887,12 @@ dependencies = [ "rlp", ] +[[package]] +name = "triomphe" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "859eb650cfee7434994602c3a68b25d77ad9e68c8a6cd491616ef86661382eb3" + [[package]] name = "trust-dns-proto" version = "0.23.2" @@ -10637,6 +11959,25 @@ dependencies = [ "toml", ] +[[package]] +name = "tungstenite" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ef1a641ea34f399a848dea702823bbecfb4c486f911735368f1f137cb8257e1" +dependencies = [ + "byteorder", + "bytes", + "data-encoding", + "http 1.1.0", + "httparse", + "log", + "rand 0.8.5", + "sha1", + "thiserror", + "url", + "utf-8", +] + [[package]] name = "tungstenite" version = "0.23.0" @@ -10646,7 +11987,7 @@ dependencies = [ "byteorder", "bytes", "data-encoding", - "http", + "http 1.1.0", "httparse", "log", "rand 0.8.5", @@ -10832,6 +12173,12 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + [[package]] name = "vergen" version = "8.3.2" @@ -10906,34 +12253,35 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" +checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5" dependencies = [ "cfg-if", + "once_cell", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" +checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.74", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.42" +version = "0.4.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" +checksum = "61e9300f63a621e96ed275155c108eb6f843b6a26d053f122ab69724559dc8ed" dependencies = [ "cfg-if", "js-sys", @@ -10943,9 +12291,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" +checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -10953,22 +12301,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" +checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.74", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" +checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" [[package]] name = "wasm-streams" @@ -10985,9 +12333,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.69" +version = "0.3.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" +checksum = "26fdeaafd9bd129f65e7c031593c24d62186301e0c72c8978fa1678be7d532c0" dependencies = [ "js-sys", "wasm-bindgen", @@ -11012,6 +12360,18 @@ 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", +] + [[package]] name = "widestring" version = "1.1.0" @@ -11098,7 +12458,7 @@ checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.74", ] [[package]] @@ -11109,7 +12469,7 @@ checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.74", ] [[package]] @@ -11376,7 +12736,7 @@ checksum = "28cc31741b18cb6f1d5ff12f5b7523e3d6eb0852bbbad19d73905511d9849b95" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.74", "synstructure", ] @@ -11398,7 +12758,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.74", ] [[package]] @@ -11418,7 +12778,7 @@ checksum = "0ea7b4a3637ea8669cedf0f1fd5c286a17f3de97b8dd5a70a6c167a1730e63a5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.74", "synstructure", ] @@ -11439,7 +12799,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.74", ] [[package]] @@ -11461,14 +12821,14 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.72", + "syn 2.0.74", ] [[package]] name = "zstd" -version = "0.13.2" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcf2b778a664581e31e389454a7072dab1647606d44f7feea22cd5abb9c9f3f9" +checksum = "bffb3309596d527cfcba7dfc6ed6052f1d39dfbd7c867aa2e865e4a449c10110" dependencies = [ "zstd-safe", ] diff --git a/Cargo.toml b/Cargo.toml index 2b66c961169ed..2f6886a4c095b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -112,6 +112,8 @@ members = [ "crates/storage/provider/", "crates/storage/storage-api/", "crates/tasks/", + "crates/telos/node", + "crates/telos/rpc", "crates/tokio-util/", "crates/tracing/", "crates/transaction-pool/", @@ -380,13 +382,13 @@ reth-trie-db = { path = "crates/trie/db" } reth-trie-parallel = { path = "crates/trie/parallel" } # revm -revm = { version = "13.0.0", features = [ +revm = { git = "https://github.com/telosnetwork/telos-revm", branch = "telos-main", features = [ "std", "secp256k1", "blst", ], default-features = false } -revm-inspectors = "0.5" -revm-primitives = { version = "8.0.0", features = [ +revm-inspectors = { git = "https://github.com/telosnetwork/telos-evm-inspectors", branch = "telos-main" } +revm-primitives = { git = "https://github.com/telosnetwork/telos-revm", branch = "telos-main", features = [ "std", ], default-features = false } @@ -540,3 +542,8 @@ serial_test = "3" similar-asserts = "1.5.0" tempfile = "3.8" test-fuzz = "5" + +# telos +reth-node-telos = { path = "crates/telos/node" } +reth-telos-rpc = { path = "crates/telos/rpc" } +antelope-client = { git = "https://github.com/telosnetwork/antelope-rs", branch = "finish_table_rows_params" } diff --git a/TELOS_README.md b/TELOS_README.md new file mode 100644 index 0000000000000..b4e5a801e4485 --- /dev/null +++ b/TELOS_README.md @@ -0,0 +1,11 @@ +# telos-reth + +## Rebase notes: +```bash +git checkout main +git fetch upstream +git rebase +git push +git checkout telos-main +git rebase main # this is where it might get tricky! :) +``` diff --git a/bin/reth/Cargo.toml b/bin/reth/Cargo.toml index b9c65365a0a0f..ba3f921f3f114 100644 --- a/bin/reth/Cargo.toml +++ b/bin/reth/Cargo.toml @@ -110,6 +110,10 @@ itertools.workspace = true # p2p discv5.workspace = true +# telos +reth-node-telos = { workspace = true, optional = true } +reth-telos-rpc = { workspace = true, optional = true } + [target.'cfg(unix)'.dependencies] tikv-jemallocator = { version = "0.5.0", optional = true } libc = "0.2" @@ -147,6 +151,28 @@ optimism = [ # no-op feature flag for switching between the `optimism` and default functionality in CI matrices ethereum = [] +telos = [ + "dep:reth-node-telos", + "dep:reth-telos-rpc", + "reth-basic-payload-builder/telos", + "reth-ethereum-payload-builder/telos", + "reth-evm/telos", + "reth-execution-types/telos", + "reth-payload-builder/telos", + "reth-provider/telos", + "reth-revm/telos", + "reth-rpc/telos", + "reth-rpc-eth-types/telos", + "reth-transaction-pool/telos", + "reth-trie/telos", + "reth-trie-db/telos", + "reth-engine-util/telos", + "reth-primitives/telos", + "reth-blockchain-tree/telos", + "reth-rpc-types-compat/telos", + "reth-consensus-common/telos", + "reth-stages/telos", +] [[bin]] name = "reth" @@ -156,3 +182,8 @@ path = "src/main.rs" name = "op-reth" path = "src/optimism.rs" required-features = ["optimism"] + +[[bin]] +name = "telos-reth" +path = "src/telos.rs" +required-features = ["telos"] diff --git a/bin/reth/src/main.rs b/bin/reth/src/main.rs index 3476d81887a52..ebd9215231804 100644 --- a/bin/reth/src/main.rs +++ b/bin/reth/src/main.rs @@ -8,6 +8,7 @@ static ALLOC: tikv_jemallocator::Jemalloc = tikv_jemallocator::Jemalloc; #[cfg(all(feature = "optimism", not(test)))] compile_error!("Cannot build the `reth` binary with the `optimism` feature flag enabled. Did you mean to build `op-reth`?"); +#[cfg(all(not(feature = "optimism"), not(feature = "telos")))] /// clap [Args] for Engine related arguments. use clap::Args; diff --git a/bin/reth/src/telos.rs b/bin/reth/src/telos.rs new file mode 100644 index 0000000000000..198d1c72b5104 --- /dev/null +++ b/bin/reth/src/telos.rs @@ -0,0 +1,49 @@ +#![allow(missing_docs)] + +use std::sync::Arc; +use clap::Parser; +use reth_node_telos::TelosArgs; +use reth_node_telos::TelosNode; +use reth_telos_rpc::TelosClient; + +// We use jemalloc for performance reasons. +#[cfg(all(feature = "jemalloc", unix))] +#[global_allocator] +static ALLOC: tikv_jemallocator::Jemalloc = tikv_jemallocator::Jemalloc; + +#[cfg(all(feature = "optimism", not(test)))] +compile_error!("Cannot build the `telos-reth` binary with the `optimism` feature flag enabled. Did you mean to build `op-reth`?"); + +#[cfg(feature = "telos")] +fn main() { + use reth::cli::Cli; + + reth_cli_util::sigsegv_handler::install(); + + // Enable backtraces unless a RUST_BACKTRACE value has already been explicitly provided. + if std::env::var_os("RUST_BACKTRACE").is_none() { + std::env::set_var("RUST_BACKTRACE", "1"); + } + + if let Err(err) = Cli::::parse().run(|builder, telos_args| async move { + let handle = builder + .node(TelosNode::new(telos_args.clone())) + .extend_rpc_modules(move |ctx| { + // register sequencer tx forwarder + if telos_args.telos_endpoint.is_some() { + ctx.registry.set_eth_raw_transaction_forwarder(Arc::new(TelosClient::new( + telos_args, + ))); + } + + Ok(()) + }) + .launch() + .await?; + + handle.node_exit_future.await + }) { + eprintln!("Error: {err:?}"); + std::process::exit(1); + } +} diff --git a/crates/blockchain-tree-api/Cargo.toml b/crates/blockchain-tree-api/Cargo.toml index 69616209dd1cb..5a0af642046de 100644 --- a/crates/blockchain-tree-api/Cargo.toml +++ b/crates/blockchain-tree-api/Cargo.toml @@ -18,3 +18,6 @@ reth-storage-errors.workspace = true # misc thiserror.workspace = true + +[features] +telos = [] diff --git a/crates/blockchain-tree-api/src/lib.rs b/crates/blockchain-tree-api/src/lib.rs index b1f1240bb5b77..b4cdf2c52107c 100644 --- a/crates/blockchain-tree-api/src/lib.rs +++ b/crates/blockchain-tree-api/src/lib.rs @@ -140,6 +140,9 @@ pub enum BlockValidationKind { impl BlockValidationKind { /// Returns true if the state root should be validated if possible. pub const fn is_exhaustive(&self) -> bool { + #[cfg(feature = "telos")] + return false; + #[cfg(not(feature = "telos"))] matches!(self, Self::Exhaustive) } } diff --git a/crates/blockchain-tree/Cargo.toml b/crates/blockchain-tree/Cargo.toml index 988bb54e8580a..809abdabcd211 100644 --- a/crates/blockchain-tree/Cargo.toml +++ b/crates/blockchain-tree/Cargo.toml @@ -60,3 +60,6 @@ alloy-genesis.workspace = true [features] test-utils = [] optimism = ["reth-primitives/optimism", "reth-provider/optimism"] +telos = [ + "reth-blockchain-tree-api/telos", +] diff --git a/crates/blockchain-tree/src/blockchain_tree.rs b/crates/blockchain-tree/src/blockchain_tree.rs index faadd6ffdf593..299653382671b 100644 --- a/crates/blockchain-tree/src/blockchain_tree.rs +++ b/crates/blockchain-tree/src/blockchain_tree.rs @@ -12,10 +12,14 @@ use reth_blockchain_tree_api::{ use reth_consensus::{Consensus, ConsensusError}; use reth_db_api::database::Database; use reth_evm::execute::BlockExecutorProvider; -use reth_execution_errors::{BlockExecutionError, BlockValidationError}; +#[cfg(not(feature = "telos"))] +use reth_execution_errors::BlockExecutionError; +use reth_execution_errors::BlockValidationError; use reth_execution_types::{Chain, ExecutionOutcome}; +#[cfg(not(feature = "telos"))] +use reth_primitives::GotExpected; use reth_primitives::{ - BlockHash, BlockNumHash, BlockNumber, EthereumHardfork, ForkBlock, GotExpected, Receipt, + BlockHash, BlockNumHash, BlockNumber, EthereumHardfork, ForkBlock, Receipt, SealedBlock, SealedBlockWithSenders, SealedHeader, StaticFileSegment, B256, U256, }; use reth_provider::{ @@ -25,7 +29,9 @@ use reth_provider::{ }; use reth_prune_types::PruneModes; use reth_stages_api::{MetricEvent, MetricEventsSender}; -use reth_storage_errors::provider::{ProviderResult, RootMismatch}; +#[cfg(not(feature = "telos"))] +use reth_storage_errors::provider::RootMismatch; +use reth_storage_errors::provider::ProviderResult; use reth_trie::{hashed_cursor::HashedPostStateCursorFactory, StateRoot}; use reth_trie_db::{DatabaseHashedCursorFactory, DatabaseStateRoot}; use std::{ @@ -396,6 +402,7 @@ where let provider = self.externals.provider_factory.provider()?; + #[cfg(not(feature = "telos"))] { // Validate that the block is post merge let parent_td = provider .header_td(&block.parent_hash)? @@ -414,6 +421,7 @@ where }) .into()) } + } let parent_header = provider .header(&block.parent_hash)? @@ -1239,6 +1247,16 @@ where // State root calculation can take a while, and we're sure no write transaction // will be open in parallel. See https://github.com/paradigmxyz/reth/issues/6168. .disable_long_read_transaction_safety(); + #[cfg(feature = "telos")] + let (_, trie_updates) = StateRoot::from_tx(provider.tx_ref()) + .with_hashed_cursor_factory(HashedPostStateCursorFactory::new( + DatabaseHashedCursorFactory::new(provider.tx_ref()), + &hashed_state_sorted, + )) + .with_prefix_sets(prefix_sets) + .root_with_updates() + .map_err(Into::::into)?; + #[cfg(not(feature = "telos"))] let (state_root, trie_updates) = StateRoot::from_tx(provider.tx_ref()) .with_hashed_cursor_factory(HashedPostStateCursorFactory::new( DatabaseHashedCursorFactory::new(provider.tx_ref()), @@ -1247,7 +1265,9 @@ where .with_prefix_sets(prefix_sets) .root_with_updates() .map_err(Into::::into)?; + #[cfg(not(feature = "telos"))] let tip = blocks.tip(); + #[cfg(not(feature = "telos"))] if state_root != tip.state_root { return Err(ProviderError::StateRootMismatch(Box::new(RootMismatch { root: GotExpected { got: state_root, expected: tip.state_root }, diff --git a/crates/consensus/common/Cargo.toml b/crates/consensus/common/Cargo.toml index dca553deb4c9e..62352f393e8b7 100644 --- a/crates/consensus/common/Cargo.toml +++ b/crates/consensus/common/Cargo.toml @@ -20,3 +20,6 @@ reth-consensus.workspace = true reth-storage-api.workspace = true rand.workspace = true mockall = "0.12" + +[features] +telos = [] diff --git a/crates/consensus/common/src/calc.rs b/crates/consensus/common/src/calc.rs index e4b2abc13ba60..e372c873e947b 100644 --- a/crates/consensus/common/src/calc.rs +++ b/crates/consensus/common/src/calc.rs @@ -1,3 +1,5 @@ +#[cfg(feature = "telos")] +use reth_chainspec::Chain; use reth_chainspec::{ChainSpec, EthereumHardfork}; use reth_primitives::{constants::ETH_TO_WEI, BlockNumber, U256}; @@ -26,6 +28,10 @@ pub fn base_block_reward( block_difficulty: U256, total_difficulty: U256, ) -> Option { + #[cfg(feature = "telos")] + if chain_spec.chain == Chain::from_id(40) || chain_spec.chain == Chain::from_id(41) { + return None + } if chain_spec.fork(EthereumHardfork::Paris).active_at_ttd(total_difficulty, block_difficulty) { None } else { diff --git a/crates/consensus/common/src/validation.rs b/crates/consensus/common/src/validation.rs index a2ebd3f6c5457..7546427c14cbb 100644 --- a/crates/consensus/common/src/validation.rs +++ b/crates/consensus/common/src/validation.rs @@ -224,6 +224,9 @@ pub fn validate_against_parent_timestamp( parent: &SealedHeader, ) -> Result<(), ConsensusError> { if header.is_timestamp_in_past(parent.timestamp) { + #[cfg(feature = "telos")] + return Ok(()); + #[cfg(not(feature = "telos"))] return Err(ConsensusError::TimestampIsInPast { parent_timestamp: parent.timestamp, timestamp: header.timestamp, diff --git a/crates/engine/util/Cargo.toml b/crates/engine/util/Cargo.toml index 25283cd5caff9..236fb2355a273 100644 --- a/crates/engine/util/Cargo.toml +++ b/crates/engine/util/Cargo.toml @@ -48,3 +48,6 @@ optimism = [ "reth-beacon-consensus/optimism", "reth-ethereum-forks/optimism" ] +telos = [ + "revm-primitives/telos", +] diff --git a/crates/ethereum/payload/Cargo.toml b/crates/ethereum/payload/Cargo.toml index e41c8a407c337..83aa651277dc4 100644 --- a/crates/ethereum/payload/Cargo.toml +++ b/crates/ethereum/payload/Cargo.toml @@ -29,3 +29,8 @@ revm.workspace = true # misc tracing.workspace = true + +[features] +telos = [ + "revm/telos", +] diff --git a/crates/evm/Cargo.toml b/crates/evm/Cargo.toml index ab338371984bd..58c4a49c4edac 100644 --- a/crates/evm/Cargo.toml +++ b/crates/evm/Cargo.toml @@ -33,3 +33,6 @@ parking_lot.workspace = true default = ["std"] std = [] test-utils = ["dep:parking_lot"] +telos = [ + "revm/telos", +] diff --git a/crates/evm/execution-types/Cargo.toml b/crates/evm/execution-types/Cargo.toml index cf50b47a03b25..58436e562d322 100644 --- a/crates/evm/execution-types/Cargo.toml +++ b/crates/evm/execution-types/Cargo.toml @@ -30,3 +30,6 @@ default = ["std"] optimism = ["dep:reth-chainspec"] serde = ["dep:serde", "reth-trie/serde", "revm/serde"] std = [] +telos = [ + "revm/telos", +] diff --git a/crates/optimism/evm/Cargo.toml b/crates/optimism/evm/Cargo.toml index 0720aaf181dba..3b0a171307936 100644 --- a/crates/optimism/evm/Cargo.toml +++ b/crates/optimism/evm/Cargo.toml @@ -42,3 +42,4 @@ optimism = [ "reth-optimism-consensus/optimism", "reth-revm/optimism", ] +telos = [] diff --git a/crates/payload/basic/Cargo.toml b/crates/payload/basic/Cargo.toml index de9be0e35b988..2f714b1d41120 100644 --- a/crates/payload/basic/Cargo.toml +++ b/crates/payload/basic/Cargo.toml @@ -37,3 +37,8 @@ metrics.workspace = true # misc tracing.workspace = true + +[features] +telos = [ + "revm/telos", +] diff --git a/crates/payload/builder/Cargo.toml b/crates/payload/builder/Cargo.toml index d551b4838f972..aab72d8a7c185 100644 --- a/crates/payload/builder/Cargo.toml +++ b/crates/payload/builder/Cargo.toml @@ -39,4 +39,7 @@ tracing.workspace = true revm.workspace = true [features] -test-utils = [] \ No newline at end of file +test-utils = [] +telos = [ + "revm/telos", +] \ No newline at end of file diff --git a/crates/primitives/Cargo.toml b/crates/primitives/Cargo.toml index 32ace7c45798b..8b69d1bce5dc3 100644 --- a/crates/primitives/Cargo.toml +++ b/crates/primitives/Cargo.toml @@ -102,6 +102,9 @@ optimism = [ ] alloy-compat = ["reth-primitives-traits/alloy-compat", "dep:alloy-rpc-types"] test-utils = ["reth-primitives-traits/test-utils"] +telos = [ + "revm-primitives/telos", +] [[bench]] name = "recover_ecdsa_crit" diff --git a/crates/primitives/src/transaction/mod.rs b/crates/primitives/src/transaction/mod.rs index a635499832a62..2a5e3dd2c1b83 100644 --- a/crates/primitives/src/transaction/mod.rs +++ b/crates/primitives/src/transaction/mod.rs @@ -859,7 +859,7 @@ impl TransactionSignedNoHash { /// /// For optimism this will return [`Address::ZERO`] if the Signature is empty, this is because pre bedrock (on OP mainnet), relay messages to the L2 Cross Domain Messenger were sent as legacy transactions from the zero address with an empty signature, e.g.: /// This makes it possible to import pre bedrock transactions via the sender recovery stage. - pub fn encode_and_recover_unchecked(&self, buffer: &mut Vec) -> Option
{ + pub fn encode_and_recover_unchecked(&self, buffer: &mut Vec, #[cfg(feature = "telos")] chain_id: Option) -> Option
{ buffer.clear(); self.transaction.encode_without_signature(buffer); @@ -880,7 +880,7 @@ impl TransactionSignedNoHash { } } - self.signature.recover_signer_unchecked(keccak256(buffer)) + self.signature.recover_signer_unchecked(keccak256(buffer), #[cfg(feature = "telos")] chain_id) } /// Converts into a transaction type with its hash: [`TransactionSigned`]. @@ -1038,6 +1038,13 @@ impl TransactionSigned { if let Transaction::Deposit(TxDeposit { from, .. }) = self.transaction { return Some(from) } + #[cfg(feature = "telos")] + if self.transaction.chain_id() == Some(3) { + let mut s_bytes: [u8; 20] = [0; 20]; + s_bytes.copy_from_slice(&self.signature.s.to_be_bytes::<32>()[0..20]); + let address = Address::new(s_bytes); + return Some(address); + } let signature_hash = self.signature_hash(); self.signature.recover_signer(signature_hash) } @@ -1055,7 +1062,7 @@ impl TransactionSigned { return Some(from) } let signature_hash = self.signature_hash(); - self.signature.recover_signer_unchecked(signature_hash) + self.signature.recover_signer_unchecked(signature_hash, #[cfg(feature = "telos")] self.chain_id()) } /// Recovers a list of signers from a transaction list iterator. diff --git a/crates/primitives/src/transaction/signature.rs b/crates/primitives/src/transaction/signature.rs index 1f14cadefdbf2..bde9f3bb0f7a1 100644 --- a/crates/primitives/src/transaction/signature.rs +++ b/crates/primitives/src/transaction/signature.rs @@ -155,7 +155,15 @@ impl Signature { /// Using this for signature validation will succeed, even if the signature is malleable or not /// compliant with EIP-2. This is provided for compatibility with old signatures which have /// large `s` values. - pub fn recover_signer_unchecked(&self, hash: B256) -> Option
{ + pub fn recover_signer_unchecked(&self, hash: B256, #[cfg(feature = "telos")] chain_id: Option) -> Option
{ + #[cfg(feature = "telos")] + if chain_id == Some(3) { + let mut s_bytes: [u8; 20] = [0; 20]; + s_bytes.copy_from_slice(&self.s.to_be_bytes::<32>()[0..20]); + let address = Address::new(s_bytes); + return Some(address); + } + let mut sig: [u8; 65] = [0; 65]; sig[0..32].copy_from_slice(&self.r.to_be_bytes::<32>()); @@ -177,7 +185,7 @@ impl Signature { return None } - self.recover_signer_unchecked(hash) + self.recover_signer_unchecked(hash, #[cfg(feature = "telos")] None) } /// Turn this signature into its byte @@ -361,6 +369,6 @@ mod tests { assert!(signature.recover_signer(hash).is_none()); // use unchecked, ensure it succeeds (the signature is valid if not for EIP-2) - assert!(signature.recover_signer_unchecked(hash).is_some()); + assert!(signature.recover_signer_unchecked(hash, #[cfg(feature = "telos")] tx.chain_id()).is_some()); } } diff --git a/crates/revm/Cargo.toml b/crates/revm/Cargo.toml index 8dd8ba397a365..f4e488302a4b5 100644 --- a/crates/revm/Cargo.toml +++ b/crates/revm/Cargo.toml @@ -38,3 +38,6 @@ std = [] c-kzg = ["revm/c-kzg"] test-utils = ["dep:reth-trie"] optimism = ["revm/optimism"] +telos = [ + "revm/telos", +] \ No newline at end of file diff --git a/crates/rpc/rpc-eth-types/Cargo.toml b/crates/rpc/rpc-eth-types/Cargo.toml index d2460a2763017..11e4627c0453e 100644 --- a/crates/rpc/rpc-eth-types/Cargo.toml +++ b/crates/rpc/rpc-eth-types/Cargo.toml @@ -60,4 +60,7 @@ serde_json.workspace = true [features] default = ["js-tracer"] -js-tracer = ["revm-inspectors/js-tracer"] \ No newline at end of file +js-tracer = ["revm-inspectors/js-tracer"] +telos = [ + "revm/telos", +] diff --git a/crates/rpc/rpc-types-compat/Cargo.toml b/crates/rpc/rpc-types-compat/Cargo.toml index a589ef418c64a..1dfb7d87db50d 100644 --- a/crates/rpc/rpc-types-compat/Cargo.toml +++ b/crates/rpc/rpc-types-compat/Cargo.toml @@ -23,3 +23,4 @@ serde_json.workspace = true [features] optimism = ["reth-primitives/optimism"] +telos = [] diff --git a/crates/rpc/rpc-types-compat/src/engine/payload.rs b/crates/rpc/rpc-types-compat/src/engine/payload.rs index 933beb9855611..435270b39f58c 100644 --- a/crates/rpc/rpc-types-compat/src/engine/payload.rs +++ b/crates/rpc/rpc-types-compat/src/engine/payload.rs @@ -1,10 +1,12 @@ //! Standalone Conversion Functions for Handling Different Versions of Execution Payloads in //! Ethereum's Engine +#[cfg(not(feature = "telos"))] +use reth_primitives::UintTryTo; use reth_primitives::{ constants::{EMPTY_OMMER_ROOT_HASH, MAXIMUM_EXTRA_DATA_SIZE}, proofs::{self}, - Block, Header, Request, SealedBlock, TransactionSigned, UintTryTo, Withdrawals, B256, U256, + Block, Header, Request, SealedBlock, TransactionSigned, Withdrawals, B256, U256, }; use reth_rpc_types::engine::{ payload::{ExecutionPayloadBodyV1, ExecutionPayloadFieldV2, ExecutionPayloadInputV2}, @@ -46,6 +48,9 @@ pub fn try_payload_v1_to_block(payload: ExecutionPayloadV1) -> Result Stage for MerkleStage { fn validate_state_root( got: B256, expected: SealedHeader, + #[cfg(feature = "telos")] + _target_block: BlockNumber, + #[cfg(not(feature = "telos"))] target_block: BlockNumber, ) -> Result<(), StageError> { if got == expected.state_root { Ok(()) } else { + #[cfg(feature = "telos")] + return Ok(()); + #[cfg(not(feature = "telos"))] error!(target: "sync::stages::merkle", ?target_block, ?got, ?expected, "Failed to verify block state root! {INVALID_STATE_ROOT_ERROR_MESSAGE}"); + #[cfg(not(feature = "telos"))] Err(StageError::Block { error: BlockErrorKind::Validation(ConsensusError::BodyStateRootDiff( GotExpected { got, expected: expected.state_root }.into(), diff --git a/crates/stages/stages/src/stages/sender_recovery.rs b/crates/stages/stages/src/stages/sender_recovery.rs index 80b7a89f582bc..8bb625289a09e 100644 --- a/crates/stages/stages/src/stages/sender_recovery.rs +++ b/crates/stages/stages/src/stages/sender_recovery.rs @@ -234,7 +234,7 @@ fn recover_sender( // pre-homestead which have large `s` values, so using [Signature::recover_signer] here // would not be backwards-compatible. let sender = tx - .encode_and_recover_unchecked(rlp_buf) + .encode_and_recover_unchecked(rlp_buf, #[cfg(feature = "telos")] tx.chain_id()) .ok_or(SenderRecoveryStageError::FailedRecovery(FailedSenderRecoveryError { tx: tx_id }))?; Ok((tx_id, sender)) diff --git a/crates/storage/provider/Cargo.toml b/crates/storage/provider/Cargo.toml index ca58f80f4f65e..3ccc74a5a9ee2 100644 --- a/crates/storage/provider/Cargo.toml +++ b/crates/storage/provider/Cargo.toml @@ -76,3 +76,6 @@ rand.workspace = true optimism = ["reth-primitives/optimism", "reth-execution-types/optimism"] serde = ["reth-execution-types/serde"] test-utils = ["alloy-rlp", "reth-db/test-utils", "reth-nippy-jar/test-utils", "reth-trie/test-utils", "reth-chain-state/test-utils", "reth-db/test-utils"] +telos = [ + "revm/telos", +] diff --git a/crates/storage/provider/src/providers/database/provider.rs b/crates/storage/provider/src/providers/database/provider.rs index a2b181f2fc1b5..e1317e7df88f7 100644 --- a/crates/storage/provider/src/providers/database/provider.rs +++ b/crates/storage/provider/src/providers/database/provider.rs @@ -36,16 +36,20 @@ use reth_db_api::{ use reth_evm::ConfigureEvmEnv; use reth_execution_types::{Chain, ExecutionOutcome}; use reth_network_p2p::headers::downloader::SyncTarget; +#[cfg(not(feature = "telos"))] +use reth_primitives::GotExpected; use reth_primitives::{ keccak256, Account, Address, Block, BlockHash, BlockHashOrNumber, BlockNumber, - BlockWithSenders, Bytecode, GotExpected, Header, Receipt, Requests, SealedBlock, + BlockWithSenders, Bytecode, Header, Receipt, Requests, SealedBlock, SealedBlockWithSenders, SealedHeader, StaticFileSegment, StorageEntry, TransactionMeta, TransactionSigned, TransactionSignedEcRecovered, TransactionSignedNoHash, TxHash, TxNumber, Withdrawal, Withdrawals, B256, U256, }; use reth_prune_types::{PruneCheckpoint, PruneLimiter, PruneModes, PruneSegment}; use reth_stages_types::{StageCheckpoint, StageId}; -use reth_storage_errors::provider::{ProviderResult, RootMismatch}; +#[cfg(not(feature = "telos"))] +use reth_storage_errors::provider::RootMismatch; +use reth_storage_errors::provider::ProviderResult; use reth_trie::{ prefix_set::{PrefixSet, PrefixSetMut, TriePrefixSets}, updates::{StorageTrieUpdates, TrieUpdates}, @@ -3022,8 +3026,14 @@ impl HashingWriter for DatabaseProvider { fn insert_hashes( &self, range: RangeInclusive, + #[cfg(not(feature = "telos"))] end_block_hash: B256, + #[cfg(feature = "telos")] + _end_block_hash: B256, + #[cfg(not(feature = "telos"))] expected_state_root: B256, + #[cfg(feature = "telos")] + _expected_state_root: B256, ) -> ProviderResult<()> { // Initialize prefix sets. let mut account_prefix_set = PrefixSetMut::default(); @@ -3075,10 +3085,17 @@ impl HashingWriter for DatabaseProvider { .collect(), destroyed_accounts, }; + #[cfg(feature = "telos")] + let (_state_root, trie_updates) = StateRoot::from_tx(&self.tx) + .with_prefix_sets(prefix_sets) + .root_with_updates() + .map_err(Into::::into)?; + #[cfg(not(feature = "telos"))] let (state_root, trie_updates) = StateRoot::from_tx(&self.tx) .with_prefix_sets(prefix_sets) .root_with_updates() .map_err(Into::::into)?; + #[cfg(not(feature = "telos"))] if state_root != expected_state_root { return Err(ProviderError::StateRootMismatch(Box::new(RootMismatch { root: GotExpected { got: state_root, expected: expected_state_root }, @@ -3272,19 +3289,26 @@ impl BlockExecutionWriter for DatabaseProvider { storage_prefix_sets, destroyed_accounts, }; + #[cfg(feature = "telos")] + let (_new_state_root, trie_updates) = StateRoot::from_tx(&self.tx) + .with_prefix_sets(prefix_sets) + .root_with_updates() + .map_err(Into::::into)?; + #[cfg(not(feature = "telos"))] let (new_state_root, trie_updates) = StateRoot::from_tx(&self.tx) .with_prefix_sets(prefix_sets) .root_with_updates() .map_err(Into::::into)?; - + #[cfg(not(feature = "telos"))] let parent_number = range.start().saturating_sub(1); + #[cfg(not(feature = "telos"))] let parent_state_root = self .header_by_number(parent_number)? .ok_or_else(|| ProviderError::HeaderNotFound(parent_number.into()))? .state_root; - // state root should be always correct as we are reverting state. // but for sake of double verification we will check it again. + #[cfg(not(feature = "telos"))] if new_state_root != parent_state_root { let parent_hash = self .block_hash(parent_number)? @@ -3360,19 +3384,26 @@ impl BlockExecutionWriter for DatabaseProvider { storage_prefix_sets, destroyed_accounts, }; + #[cfg(feature = "telos")] + let (_new_state_root, trie_updates) = StateRoot::from_tx(&self.tx) + .with_prefix_sets(prefix_sets) + .root_with_updates() + .map_err(Into::::into)?; + #[cfg(not(feature = "telos"))] let (new_state_root, trie_updates) = StateRoot::from_tx(&self.tx) .with_prefix_sets(prefix_sets) .root_with_updates() .map_err(Into::::into)?; - + #[cfg(not(feature = "telos"))] let parent_number = range.start().saturating_sub(1); + #[cfg(not(feature = "telos"))] let parent_state_root = self .header_by_number(parent_number)? .ok_or_else(|| ProviderError::HeaderNotFound(parent_number.into()))? .state_root; - // state root should be always correct as we are reverting state. // but for sake of double verification we will check it again. + #[cfg(not(feature = "telos"))] if new_state_root != parent_state_root { let parent_hash = self .block_hash(parent_number)? diff --git a/crates/telos/node/Cargo.toml b/crates/telos/node/Cargo.toml new file mode 100644 index 0000000000000..6e90cd2069bf6 --- /dev/null +++ b/crates/telos/node/Cargo.toml @@ -0,0 +1,49 @@ +[package] +name = "reth-node-telos" +version.workspace = true +edition.workspace = true +rust-version.workspace = true +license.workspace = true +homepage.workspace = true +repository.workspace = true + +[lints] +workspace = true + +[dependencies] +antelope-client.workspace = true +reth-primitives.workspace = true + +reth-auto-seal-consensus.workspace = true +reth-basic-payload-builder.workspace = true +reth-beacon-consensus.workspace = true +reth-ethereum-engine-primitives.workspace = true +reth-evm-ethereum.workspace = true +reth-network.workspace = true +reth-node-api.workspace = true +reth-node-builder.workspace = true +reth-node-ethereum.workspace = true +reth-payload-builder.workspace = true +reth-provider.workspace = true +reth-rpc.workspace = true +reth-tracing.workspace = true +reth-transaction-pool.workspace = true + +clap.workspace = true +serde = { workspace = true, features = ["derive"] } +serde_json = "1.0.122" +tokio = "1.39.2" +tracing = "0.1.40" +tracing-subscriber = "0.3.18" + +[features] +telos = [] + +[dev-dependencies] +reth.workspace = true +reth-chainspec.workspace = true +reth-e2e-test-utils.workspace = true +eyre.workspace = true + +telos-consensus-client = { git = "https://github.com/telosnetwork/telos-consensus-client", branch = "translator_integration"} +testcontainers = "0.21.1" \ No newline at end of file diff --git a/crates/telos/node/src/args.rs b/crates/telos/node/src/args.rs new file mode 100644 index 0000000000000..708f48ebf7e81 --- /dev/null +++ b/crates/telos/node/src/args.rs @@ -0,0 +1,45 @@ +//! clap [Args](clap::Args) for telos configuration + +#[derive(Debug, Clone, Default, PartialEq, Eq, clap::Args)] +#[clap(next_help_heading = "Telos")] +pub struct TelosArgs { + /// TelosZero endpoint to use for API calls (send_transaction, get gas price from table) + #[arg(long = "telos.telos_endpoint", value_name = "HTTP_URL")] + pub telos_endpoint: Option, + + /// Signer account name + #[arg(long = "telos.signer_account")] + pub signer_account: Option, + + /// Signer permission name + #[arg(long = "telos.signer_permission")] + pub signer_permission: Option, + + /// Signer private key + #[arg(long = "telos.signer_key")] + pub signer_key: Option, + + /// Seconds to cache gas price + #[arg(long = "telos.gas_cache_seconds")] + pub gas_cache_seconds: Option, +} + +#[cfg(test)] +mod tests { + use super::*; + use clap::{Args, Parser}; + + /// A helper type to parse Args more easily + #[derive(Parser)] + struct CommandParser { + #[clap(flatten)] + args: T, + } + + #[test] + fn test_parse_database_args() { + let default_args = TelosArgs::default(); + let args = CommandParser::::parse_from(["reth"]).args; + assert_eq!(args, default_args); + } +} diff --git a/crates/telos/node/src/lib.rs b/crates/telos/node/src/lib.rs new file mode 100644 index 0000000000000..d0d98a75db574 --- /dev/null +++ b/crates/telos/node/src/lib.rs @@ -0,0 +1,15 @@ +//! Standalone crate for Telos-specific Reth configuration and builder types. + +#![doc( + html_logo_url = "https://raw.githubusercontent.com/paradigmxyz/reth/main/assets/reth-docs.png", + html_favicon_url = "https://avatars0.githubusercontent.com/u/97369466?s=256", + issue_tracker_base_url = "https://github.com/telosnetwork/telos-reth/issues/" +)] +#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))] +#![cfg(feature = "telos")] + +pub mod args; +pub mod node; + +pub use crate::args::TelosArgs; +pub use crate::node::TelosNode; diff --git a/crates/telos/node/src/node.rs b/crates/telos/node/src/node.rs new file mode 100644 index 0000000000000..27034db4e6cf0 --- /dev/null +++ b/crates/telos/node/src/node.rs @@ -0,0 +1,78 @@ +use crate::args::TelosArgs; +use reth_ethereum_engine_primitives::{ + EthBuiltPayload, EthEngineTypes, EthPayloadAttributes, EthPayloadBuilderAttributes, +}; +use reth_evm_ethereum::EthEvmConfig; +use reth_node_api::{FullNodeTypes, NodeTypes}; +use reth_node_builder::components::ComponentsBuilder; +use reth_node_builder::{Node, PayloadTypes}; +use reth_node_ethereum::node::{ + EthereumAddOns, EthereumConsensusBuilder, EthereumExecutorBuilder, EthereumNetworkBuilder, + EthereumPayloadBuilder, EthereumPoolBuilder, +}; + +/// Type configuration for a regular Telos node. +#[derive(Debug, Default, Clone)] +#[non_exhaustive] +pub struct TelosNode { + /// Additional Telos args + pub args: TelosArgs, +} + +impl TelosNode { + /// Creates a new instance of the Telos node type. + pub const fn new(args: TelosArgs) -> Self { + Self { args } + } + + /// Returns a [`ComponentsBuilder`] configured for a regular Ethereum node. + pub fn components() -> ComponentsBuilder< + Node, + EthereumPoolBuilder, + EthereumPayloadBuilder, + EthereumNetworkBuilder, + EthereumExecutorBuilder, + EthereumConsensusBuilder, + > + where + Node: FullNodeTypes, + ::Engine: PayloadTypes< + BuiltPayload = EthBuiltPayload, + PayloadAttributes = EthPayloadAttributes, + PayloadBuilderAttributes = EthPayloadBuilderAttributes, + >, + { + ComponentsBuilder::default() + .node_types::() + .pool(EthereumPoolBuilder::default()) + .payload(EthereumPayloadBuilder::new(EthEvmConfig::default())) + .network(EthereumNetworkBuilder::default()) + .executor(EthereumExecutorBuilder::default()) + .consensus(EthereumConsensusBuilder::default()) + } +} + +impl NodeTypes for TelosNode { + type Primitives = (); + type Engine = EthEngineTypes; +} + +impl Node for TelosNode +where + N: FullNodeTypes, +{ + type ComponentsBuilder = ComponentsBuilder< + N, + EthereumPoolBuilder, + EthereumPayloadBuilder, + EthereumNetworkBuilder, + EthereumExecutorBuilder, + EthereumConsensusBuilder, + >; + + type AddOns = EthereumAddOns; + + fn components_builder(&self) -> Self::ComponentsBuilder { + Self::components() + } +} diff --git a/crates/telos/node/tests/assets/jwt.hex b/crates/telos/node/tests/assets/jwt.hex new file mode 100644 index 0000000000000..e7c9bf21b3bfb --- /dev/null +++ b/crates/telos/node/tests/assets/jwt.hex @@ -0,0 +1 @@ +2d3d7e18cb183dd0ad72fecb94e549a7cbd7cac09cca408ba83143cbcd859b8a \ No newline at end of file diff --git a/crates/telos/node/tests/integration.rs b/crates/telos/node/tests/integration.rs new file mode 100644 index 0000000000000..697494f8de0d4 --- /dev/null +++ b/crates/telos/node/tests/integration.rs @@ -0,0 +1,134 @@ +use antelope::api::client::{APIClient, DefaultProvider}; +use reth::{ + args::RpcServerArgs, + builder::{NodeBuilder, NodeConfig}, + tasks::{TaskManager}, +}; +use reth_chainspec::{ChainSpecBuilder, MAINNET}; +use reth_e2e_test_utils::node::NodeTestContext; +use reth_node_ethereum::EthereumNode; +use reth_primitives::{Genesis, B256}; +use std::fs; +use std::path::PathBuf; +use std::sync::Arc; +use telos_consensus_client::client::ConsensusClient; +use telos_consensus_client::config::AppConfig; +use testcontainers::core::ContainerPort::Tcp; +use testcontainers::{runners::AsyncRunner, ContainerAsync, GenericImage}; +use tracing::info; + +struct TelosRethNodeHandle { + execution_port: u16, + jwt_secret: String, +} + +async fn start_ship() -> ContainerAsync { + // Change this container to a local image if using new ship data, + // then make sure to update the ship data in the testcontainer-nodeos-evm repo and build a new version + + // The tag for this image needs to come from the Github packages UI, under the "OS/Arch" tab + // and should be the tag for linux/amd64 + let container: ContainerAsync = GenericImage::new( + "ghcr.io/telosnetwork/testcontainer-nodeos-evm", + "v0.1.4@sha256:a8dc857e46404d74b286f8c8d8646354ca6674daaaf9eb6f972966052c95eb4a", + ) + .with_exposed_port(Tcp(8888)) + .with_exposed_port(Tcp(18999)) + .start() + .await + .unwrap(); + + let port_8888 = container.get_host_port_ipv4(8888).await.unwrap(); + + let api_base_url = format!("http://localhost:{port_8888}"); + let api_client = APIClient::::default_provider(api_base_url).unwrap(); + + let mut last_block = 0; + + loop { + let Ok(info) = api_client.v1_chain.get_info().await else { + println!("Waiting for telos node to produce blocks..."); + tokio::time::sleep(tokio::time::Duration::from_secs(1)).await; + continue; + }; + if last_block != 0 && info.head_block_num > last_block { + break; + } + last_block = info.head_block_num; + } + + container +} + +fn init_reth() -> eyre::Result<(NodeConfig, String)> { + // Chain spec with test allocs + let genesis: Genesis = + serde_json::from_str(include_str!("../../../ethereum/node/tests/assets/genesis.json")) + .unwrap(); + let chain_spec = Arc::new( + ChainSpecBuilder::default() + .chain(MAINNET.chain) + .genesis(genesis) + .cancun_activated() + .build(), + ); + + let mut rpc_config = RpcServerArgs::default().with_unused_ports().with_http(); + rpc_config.auth_jwtsecret = Some(PathBuf::from("tests/assets/jwt.hex")); + + //let _jwt = rpc_config.auth_server_config(JwtSecret::random()); + // Node setup + let node_config = NodeConfig::test().with_chain(chain_spec).with_rpc(rpc_config.clone()); + + let jwt = fs::read_to_string(node_config.rpc.auth_jwtsecret.clone().unwrap())?; + Ok((node_config, jwt)) +} + +async fn start_consensus(reth_handle: TelosRethNodeHandle, ship_port: u16, chain_port: u16) { + let config = AppConfig { + chain_id: 41, + execution_endpoint: format!("http://localhost:{}", reth_handle.execution_port), + jwt_secret: reth_handle.jwt_secret, + ship_endpoint: format!("ws://localhost:{ship_port}"), + chain_endpoint: format!("http://localhost:{chain_port}"), + batch_size: 5, + block_delta: None, + prev_hash: B256::ZERO.to_string(), + validate_hash: None, + start_block: 0, + stop_block: Some(60), + }; + + let mut client_under_test = ConsensusClient::new(config).await; + _ = client_under_test.run().await; +} + +#[tokio::test] +async fn testing_chain_sync() { + tracing_subscriber::fmt::init(); + + let container = start_ship().await; + let chain_port = container.get_host_port_ipv4(8888).await.unwrap(); + let ship_port = container.get_host_port_ipv4(18999).await.unwrap(); + + let (node_config, jwt_secret) = init_reth().unwrap(); + + let exec = TaskManager::current(); + let exec = exec.executor(); + + reth_tracing::init_test_tracing(); + + let node_handle = NodeBuilder::new(node_config.clone()) + .testing_node(exec) + .node(EthereumNode::default()) + .launch() + .await + .unwrap(); + + let execution_port = node_handle.node.auth_server_handle().local_addr().port(); + let reth_handle = TelosRethNodeHandle { execution_port, jwt_secret }; + _ = NodeTestContext::new(node_handle.node.clone()).await.unwrap(); + info!("Started Reth!"); + + start_consensus(reth_handle, ship_port, chain_port).await; +} diff --git a/crates/telos/rpc/Cargo.toml b/crates/telos/rpc/Cargo.toml new file mode 100644 index 0000000000000..c838f9998781a --- /dev/null +++ b/crates/telos/rpc/Cargo.toml @@ -0,0 +1,21 @@ +[package] +name = "reth-telos-rpc" +version.workspace = true +edition.workspace = true +rust-version.workspace = true +license.workspace = true +homepage.workspace = true +repository.workspace = true +exclude.workspace = true + +[dependencies] +async-trait.workspace = true + +reth-rpc-eth-api.workspace = true +reth-rpc-eth-types.workspace = true + +antelope-client.workspace = true +reth-node-telos = { workspace = true, features = ["telos"] } + +[lints] +workspace = true diff --git a/crates/telos/rpc/src/client.rs b/crates/telos/rpc/src/client.rs new file mode 100644 index 0000000000000..fefbe70dbde5f --- /dev/null +++ b/crates/telos/rpc/src/client.rs @@ -0,0 +1,102 @@ +use std::sync::Arc; +use reth_rpc_eth_api::RawTransactionForwarder; +use reth_rpc_eth_types::error::{EthResult}; +use antelope::api::client::{APIClient, DefaultProvider}; +use antelope::chain::name::Name; +use antelope::chain::private_key::PrivateKey; +use antelope::{chain::{Packer, Encoder, Decoder}, name, StructPacker}; +use antelope::chain::action::{Action, PermissionLevel}; +use antelope::chain::checksum::Checksum160; +use antelope::chain::transaction::{SignedTransaction, Transaction}; +use reth_node_telos::TelosArgs; + +/// A client to interact with a Sequencer +#[derive(Debug, Clone)] +pub struct TelosClient { + inner: Arc, +} + +#[derive(Debug, Clone)] +struct TelosClientInner { + pub api_client: APIClient, + pub signer_account: Name, + pub signer_permission: Name, + pub signer_key: PrivateKey, +} + +#[derive(StructPacker)] +struct RawActionData { + pub ram_payer: Name, + pub tx: Vec, + pub estimate_gas: bool, + pub sender: Option, +} + +impl TelosClient { + /// Creates a new [`TelosClient`]. + pub fn new(telos_args: TelosArgs) -> Self { + if telos_args.telos_endpoint.is_none() || telos_args.signer_account.is_none() || telos_args.signer_permission.is_none() || telos_args.signer_key.is_none() { + panic!("Should not construct TelosClient without proper TelosArgs with telos_endpoint and signer args"); + } + let api_client = APIClient::::default_provider(telos_args.telos_endpoint.unwrap().into()).unwrap(); + let inner = TelosClientInner { + api_client, + signer_account: name!(&telos_args.signer_account.unwrap()), + signer_permission: name!(&telos_args.signer_permission.unwrap()), + signer_key: PrivateKey::from_str(&telos_args.signer_key.unwrap(), false).unwrap(), + }; + Self { inner: Arc::new(inner) } + } + + async fn send_to_telos(&self, tx: &[u8]) -> EthResult<()> { + let get_info = self.inner.api_client.v1_chain.get_info().await.unwrap(); + let trx_header = get_info.get_transaction_header(90); + let trx_header = trx_header.clone(); + let trx_bytes = tx.to_vec(); + + let raw_action_data = RawActionData { + ram_payer: name!("eosio.evm"), + tx: trx_bytes, + estimate_gas: false, + sender: None, + }; + + let action = Action::new_ex( + name!("eosio.evm"), + name!("raw"), + vec![PermissionLevel::new( + self.inner.signer_account, + self.inner.signer_permission, + )], + raw_action_data, + ); + + let transaction = Transaction { + header: trx_header, + context_free_actions: vec![], + actions: vec![action], + extension: vec![], + }; + + let signed_telos_transaction = SignedTransaction { + transaction: transaction.clone(), + signatures: vec![self.inner + .signer_key + .sign_message(&transaction.signing_data(&get_info.chain_id.data.to_vec()))], + context_free_data: vec![], + }; + + let result = self.inner.api_client.v1_chain.send_transaction(signed_telos_transaction); + + let _trx_id = result.await.unwrap().transaction_id; + Ok(()) + } +} + +#[async_trait::async_trait] +impl RawTransactionForwarder for TelosClient { + async fn forward_raw_transaction(&self, tx: &[u8]) -> EthResult<()> { + Self::send_to_telos(self, tx).await?; + Ok(()) + } +} \ No newline at end of file diff --git a/crates/telos/rpc/src/lib.rs b/crates/telos/rpc/src/lib.rs new file mode 100644 index 0000000000000..f8cdbc292a4f5 --- /dev/null +++ b/crates/telos/rpc/src/lib.rs @@ -0,0 +1,3 @@ +mod client; + +pub use crate::client::TelosClient; \ No newline at end of file diff --git a/crates/transaction-pool/Cargo.toml b/crates/transaction-pool/Cargo.toml index 8b8ac34ddd46a..78a3fea87198a 100644 --- a/crates/transaction-pool/Cargo.toml +++ b/crates/transaction-pool/Cargo.toml @@ -72,6 +72,9 @@ default = ["serde"] serde = ["dep:serde"] test-utils = ["rand", "paste", "serde"] arbitrary = ["proptest", "reth-primitives/arbitrary", "proptest-arbitrary-interop"] +telos = [ + "revm/telos", +] [[bench]] name = "truncate" diff --git a/crates/trie/db/Cargo.toml b/crates/trie/db/Cargo.toml index 83ef66aabb35a..1f0aa46f18994 100644 --- a/crates/trie/db/Cargo.toml +++ b/crates/trie/db/Cargo.toml @@ -76,3 +76,6 @@ criterion.workspace = true metrics = ["reth-metrics", "reth-trie/metrics", "dep:metrics"] serde = ["dep:serde"] test-utils = ["triehash", "reth-trie-common/test-utils"] +telos = [ + "revm/telos", +] diff --git a/crates/trie/trie/Cargo.toml b/crates/trie/trie/Cargo.toml index 54e7d6e9d2ace..c5509e4106cfe 100644 --- a/crates/trie/trie/Cargo.toml +++ b/crates/trie/trie/Cargo.toml @@ -70,6 +70,9 @@ criterion.workspace = true metrics = ["reth-metrics", "dep:metrics"] serde = ["dep:serde"] test-utils = ["triehash", "reth-trie-common/test-utils"] +telos = [ + "revm/telos", +] [[bench]] name = "prefix_set"