Skip to content

Commit 3f6a0a3

Browse files
allnilmattsseRjectedjoshieDoemhane
authored
sync with upstream reth release v1.0.1 (#12)
* fix: skip failed new payload submission (paradigmxyz#9003) * test: disable dns discovery (paradigmxyz#9004) * chore: remove proptest arbitrary from codec derive and tests (paradigmxyz#8968) * chore(deps): rm unused dev deps (paradigmxyz#9005) * chore(deps): rm provider dep (paradigmxyz#9006) * chore: move ratelimit type to tokio util (paradigmxyz#9007) * chore: move different chain hardfork sets to `reth-ethereum-forks` (paradigmxyz#8984) * chore: remove `AllGenesisFormats` (paradigmxyz#9013) * chore: rename net-common to banlist (paradigmxyz#9016) * chore: remove `serde` from `ChainSpec` (paradigmxyz#9017) * chore: remove unused type (paradigmxyz#9019) * chore: rm serde for network builder (paradigmxyz#9020) * chore: rm default serde feature in reth-dns (paradigmxyz#9021) * chore(op): add link to op labs bedrock datadir download (paradigmxyz#9014) * chore(deps): replace fnv with fx (paradigmxyz#9024) * chore(deps): rm reth-rpc-types dep from reth-network (paradigmxyz#9023) * chore: remove some more usages of BytesMut (paradigmxyz#9025) * chore(deps): weekly `cargo update` (paradigmxyz#9036) Co-authored-by: github-merge-queue <[email protected]> * Change the wrong 'Child' and 'Auxiliary' usage (paradigmxyz#9033) * refactor(rpc): add builder pattern for `EthHandlers` (paradigmxyz#9035) * feat: add `AnyNodeTypes` type (paradigmxyz#9034) * chore: release 1.0.0 (paradigmxyz#9045) * feat(rpc): remove ipc future and now using ServerHandle and StopHandle from jsonrpsee (paradigmxyz#9044) * feat(node): derive `Clone` for `FullNode` (paradigmxyz#9046) * feat: integrate Node traits into LaunchContextWith (paradigmxyz#8993) * ci: use reth-prod.png for release notes (paradigmxyz#9047) * chore: tweak profiles, rename debug-fast to profiling (paradigmxyz#9051) * feat(examples): remote exex (paradigmxyz#8890) * fix: Change Arc<KzgSettings> to EnvKzgSettings (paradigmxyz#9054) * fix(op): configure discv5 properly in op builder (paradigmxyz#9058) * chore: move sync test to separate github action (paradigmxyz#9061) * feat: add base mainnet 10k block sync test to CI (paradigmxyz#9062) * fix: move base sync test comment (paradigmxyz#9066) * docs(examples): add Remote ExEx to README.md (paradigmxyz#9067) * feat: use a binary for sync tests (paradigmxyz#9071) * feat: add AnyNode type (paradigmxyz#9056) Co-authored-by: Matthias Seitz <[email protected]> * chore: add empty commands crate (paradigmxyz#9039) * fix: check the correct block in op-sync (paradigmxyz#9073) * fix(ci): inherit profiling in bench profile (paradigmxyz#9072) * clippy: rm outdated clippy allow (paradigmxyz#9070) * chore(trie): `TrieOp::as_update` (paradigmxyz#9076) * chore: simplify OptimismGenesisInfo extraction (paradigmxyz#9031) Co-authored-by: Matthias Seitz <[email protected]> * fix(ci): use correct profile for iai benches (paradigmxyz#9081) * chore(hive): update failed tests comments (paradigmxyz#9080) * Using associated trait bound for db error (paradigmxyz#8951) * readme: rm wip note * feat(examples): remove Remote ExEx (paradigmxyz#9085) * feat: initial cli abstraction (paradigmxyz#9082) * perf(trie): hold direct reference to post state storage in the cursor (paradigmxyz#9077) * chore(trie): add helpers to return trie keys as variants (paradigmxyz#9075) * test: include unexpected event in panic (paradigmxyz#9087) * chore(trie): hold direct reference to hashed accounts in cursor (paradigmxyz#9078) * fix: do not drop sub protocol messages during EthStream Handshake (paradigmxyz#9086) * ExEx Discv5 (paradigmxyz#8873) Co-authored-by: Matthias Seitz <[email protected]> * chore: add optimism cli crate (paradigmxyz#9096) * feat: reth stage unwind --offline (paradigmxyz#9097) Co-authored-by: Georgios Konstantopoulos <[email protected]> Co-authored-by: Oliver <[email protected]> * Add a metric for blob transactions nonce gaps (paradigmxyz#9106) * feat(cli): fail on invalid config (paradigmxyz#9107) * chore: import from static files crate directly (paradigmxyz#9111) * chore(deps): bump ratatui 0.27 (paradigmxyz#9110) * test: fix flaky connect (paradigmxyz#9113) * chore: rm beta checks (paradigmxyz#9116) * feat(ci): update GPG key in release workflow (paradigmxyz#9121) * refactor: move `DbTool` type to `db-common` (paradigmxyz#9119) * feat(cli): `reth prune` (paradigmxyz#9055) * refactor: move node-core/engine to standalone crate (paradigmxyz#9120) Co-authored-by: Matthias Seitz <[email protected]> * Subprotocol example (paradigmxyz#8991) Co-authored-by: owanikin <[email protected]> Co-authored-by: Matthias Seitz <[email protected]> * feat: add temporary docker tag action (paradigmxyz#9126) * fix: remove temp docker tag action (paradigmxyz#9128) * feat: add base fee metrics (paradigmxyz#9129) * feat: add parser functionality to `RethCli` (paradigmxyz#9127) * refactor: extract configuration types to `reth-network-types` (paradigmxyz#9136) * feat(trie): forward-only in-memory cursor (paradigmxyz#9079) * chore: remove empty ban_list.rs file (paradigmxyz#9133) * chore: rm utils.rs from cli crate (paradigmxyz#9132) * chore: move engine-primitives to engine folder (paradigmxyz#9130) * fix: use 8 byte SHA in getClientVersionV1 (paradigmxyz#9137) * fix(docs): Fix links node builder docs (paradigmxyz#9140) * chore(rpc): `reth-eth-api` crate (paradigmxyz#8887) Co-authored-by: Matthias Seitz <[email protected]> * chore(rpc): move impl of eth api server out of `reth-rpc-eth-api` (paradigmxyz#9135) Co-authored-by: Matthias Seitz <[email protected]> * chore(rpc): add me to RPC codeowners (paradigmxyz#9144) * refactor: clean-up discv5 configuration (paradigmxyz#9143) * chore: remove unused methods from `EvmEnvProviders` (paradigmxyz#9148) * chore(static_files): fix hacky type inference (paradigmxyz#9150) * feat: integrate CLI runner in CLI trait (paradigmxyz#9146) * feat: use new `ChainHardforks` type on `ChainSpec` (paradigmxyz#9065) * refactor(node-core/matrics): refactor the register version metrics function (paradigmxyz#9149) * chore: rename `TrieCursorFactory::storage_tries_cursor` to `TrieCursorFactory::storage_trie_cursor` (paradigmxyz#9145) * chore: move `revm_spec` methods from `reth-primitives` to chain specific crates (paradigmxyz#9152) * refactor(net): move node record constants to network-peers crate (paradigmxyz#9161) * chore: fix clippy (paradigmxyz#9163) * feat(trie): in-memory trie node overlay (paradigmxyz#8199) Co-authored-by: Roman Krasiuk <[email protected]> * chore(storage, provider): rename bundle state with receipts (paradigmxyz#9160) * dev: update `NodeExitFuture` (paradigmxyz#9153) Co-authored-by: Matthias Seitz <[email protected]> * chore: fix wrong function name (paradigmxyz#9164) * refactor: reduce number of args for `post_block_balance_increments` (paradigmxyz#9154) * fix: derive arbitrary for tests (paradigmxyz#9167) * fix(net/peer): remove the duplicated disconnect logic (paradigmxyz#9162) Signed-off-by: jsvisa <[email protected]> * feat(exex): backfill executor (paradigmxyz#9123) * chore: rm redundant clone (paradigmxyz#9174) * chore: remove `tx_env_with_recovered` from rpc crates (paradigmxyz#9158) * chore(trie): remove database-related types from trie keys (paradigmxyz#9175) * chore(ecies): expose ECIESCodec for fuzzing (paradigmxyz#9182) * chore: update audit doc to v2 (paradigmxyz#9177) * chore: rm leftover mods (paradigmxyz#9188) * feat(net/peer): add peer with udp socket (paradigmxyz#9156) Signed-off-by: jsvisa <[email protected]> * chore: replace raw usage of revm evm builder with EvmConfig usage (paradigmxyz#9190) * chore: finally move node-core to node folder (paradigmxyz#9191) * chore(deps): remove igd-next (paradigmxyz#9200) * chore(deps): weekly `cargo update` (paradigmxyz#9199) Co-authored-by: github-merge-queue <[email protected]> * chore(trie): rename in-memory trie cursors (paradigmxyz#9203) * refactor(net): some refactor in eth requests (paradigmxyz#9205) * refactor(revm): simplify `fill_tx_env` (paradigmxyz#9206) * docs: fix the links to code in discv4 docs (paradigmxyz#9204) * feat(net/peer): set rpc added peer as static (paradigmxyz#9201) Signed-off-by: jsvisa <[email protected]> * refactor: small refactoring (paradigmxyz#9208) * refactor: some simplifications around revm database (paradigmxyz#9212) * refactor(chainspec): simplify `genesis_header` using default pattern (paradigmxyz#9198) * fix: ambiguous deposit mint value in arbitrary (paradigmxyz#9216) * feat: new engine API handler (paradigmxyz#8559) Co-authored-by: Roman Krasiuk <[email protected]> Co-authored-by: Dan Cline <[email protected]> Co-authored-by: Federico Gimenez <[email protected]> * chore: remove unused `MIN_LENGTH_EIPXXXX_ENCODED` (paradigmxyz#9211) Co-authored-by: Matthias Seitz <[email protected]> * chore(trie): clean up trie update operation matching (paradigmxyz#9202) * chore: add builder with rng secret key fn (paradigmxyz#9218) * chore: remove usage of `tx_env_with_recovered` (paradigmxyz#9222) * chore: remove unused `static-file` code (paradigmxyz#9178) * chore: rename pipeline references to backfill sync (paradigmxyz#9223) * chore(execution): verify cumulative gas used before receipts root (paradigmxyz#9224) * docs(book): remote ExEx chapter (paradigmxyz#8992) Co-authored-by: Matthias Seitz <[email protected]> * chore(trie): store only deleted keys in `TrieWalker` (paradigmxyz#9226) * feat: implement write method on persistence task (paradigmxyz#9225) * chore: extract db commands (paradigmxyz#9217) Co-authored-by: Matthias Seitz <[email protected]> * feat(clippy): add `iter_without_into_iter` (paradigmxyz#9195) Co-authored-by: Matthias Seitz <[email protected]> Co-authored-by: Roman Krasiuk <[email protected]> * fix: typo in book intro (paradigmxyz#9228) * fix(rpc/admin): missing enode/enr in admin_peers endpoint (paradigmxyz#9043) Signed-off-by: jsvisa <[email protected]> * chore(trie): return nibbles from `TrieCursor::current` (paradigmxyz#9227) * chore: disable discovery for --dev (paradigmxyz#9229) * feat: add pruning related persistence API (paradigmxyz#9232) * chore: move `fill_block_env` to `ConfigureEvmEnv` (paradigmxyz#9238) * chore: add send_action method to persistence task (paradigmxyz#9233) * chore: use format_gas and format_gas_throughput for gas logs (paradigmxyz#9247) * chore: remove prune_modes from BlockWriter (paradigmxyz#9231) * chore: fix pruner exex height docs, add run docs (paradigmxyz#9250) * feat: add ChainspecParser trait (paradigmxyz#9259) Co-authored-by: Matthias Seitz <[email protected]> * refactor(evm): set prune modes optionally for the batch executor (paradigmxyz#9176) * feat: add pruner to persistence task (paradigmxyz#9251) Co-authored-by: Matthias Seitz <[email protected]> Co-authored-by: Federico Gimenez <[email protected]> * feat: add non feature gated noop block reader (paradigmxyz#9261) * refactor: move write_peers_to_file to NetworkManager impl (paradigmxyz#9134) Co-authored-by: Matthias Seitz <[email protected]> * chore: simplify p2p subcommand (paradigmxyz#9265) * trie: revamp trie updates (paradigmxyz#9239) * feat: moved optimism commands to create and remove from bin (paradigmxyz#9242) Co-authored-by: Matthias Seitz <[email protected]> * chore: move `pre_block_beacon_root_contract_call` to evm crates (paradigmxyz#9244) * feat: add ethereum engine chain orchestrator (paradigmxyz#9241) * feat: add empty ethereum cli crate (paradigmxyz#9268) * test: add unit tests for `save_receipts` (paradigmxyz#9255) * chore(rpc): `EthApi` builder (paradigmxyz#9041) Co-authored-by: Matthias Seitz <[email protected]> * feat: add resolve blocking for TrustedNode (paradigmxyz#9258) * test(transaction-pool): add unit tests for `BestTransactionsWithFees` `next` (paradigmxyz#9274) * clippy: rm some `type_complexity` (paradigmxyz#9276) Co-authored-by: Matthias Seitz <[email protected]> * test: rm useless unit tests for `calc_next_block_base_fee` (paradigmxyz#9280) * fix: always evaluate build_profile_name at compile time (paradigmxyz#9278) * feat(rpc): enable historical proofs (paradigmxyz#9273) * ci(hive): build `reth` externally (paradigmxyz#9281) * chore: Expose `TrieUpdates` inner fields (paradigmxyz#9277) * chore: use direct link to threshold docs (paradigmxyz#9284) * chore(rpc): rm dup getters `EthApi` (paradigmxyz#9283) * chore: move `withdrawal_requests_contract_call` to `reth-evm` (paradigmxyz#9272) * fix(cli): don't init datadir if it doesn't exist in db command (paradigmxyz#9264) Co-authored-by: Matthias Seitz <[email protected]> * chore: rename eth engine module orchestrator -> service (paradigmxyz#9288) * chore(trie): revamp inner in-memory trie cursor representation (paradigmxyz#9287) * perf: resolve trusted nodes concurrently (paradigmxyz#9291) * perf: spawn eth proof on IO pool (paradigmxyz#9293) * feat: add empty optimism rpc crate (paradigmxyz#9295) * ci: re-enable hive tests (paradigmxyz#9240) * feat: feature gate tokio::net lookup (paradigmxyz#9289) * chore: remove unused async (paradigmxyz#9299) * feat(rpc/ots): add rpc erigon_getHeaderByNumber (paradigmxyz#9300) Signed-off-by: jsvisa <[email protected]> * chore(cli): move utils to `reth-cli-utils` crate (paradigmxyz#9297) * fix: remove useless arbitrary feature (paradigmxyz#9307) * fix(rpc/ots): set block_number as u64 instead of NumberOrTag (paradigmxyz#9302) Signed-off-by: jsvisa <[email protected]> * feat: extract proof generation into `StateProofProvider` (paradigmxyz#9303) * chore(trie): return mutable prefix sets from `HashedPostState::construct_prefix_sets` (paradigmxyz#9306) * Fix: fix the issue of not being able to specify bootnode through command parameters (paradigmxyz#9237) * feat(trie): allow setting hashed cursor factory on `Proof` (paradigmxyz#9304) * feat: backfill job single block iterator (paradigmxyz#9245) * perf: resolve trusted peers (paradigmxyz#9301) * fix: holesky genesis hash (paradigmxyz#9318) * feat(trie): allow supplying prefix sets to `Proof` (paradigmxyz#9317) * feat(trie): `HashedPostState::account_proof` (paradigmxyz#9319) * github-workflows: delete the direction of dead(deleted) code (paradigmxyz#9316) * fix: no_std build (paradigmxyz#9313) * use op-alloy genesis types for genesis parsing (paradigmxyz#9292) Co-authored-by: Matthias Seitz <[email protected]> * chore(evm): turn associated `ConfigureEvm` fns into methods (paradigmxyz#9322) * qol: purge goerli (paradigmxyz#9310) * Remove fullprovider trait restriction in backfill impls (paradigmxyz#9326) * feat(trie): pass state reference to `StateProofProvider::proof` (paradigmxyz#9308) * feat: op eth api scaffolding (paradigmxyz#9324) * feat: implement `HistoricalStateProviderRef::proof` (paradigmxyz#9327) * feat: log throughput in execution stage (paradigmxyz#9253) Co-authored-by: Matthias Seitz <[email protected]> * chore: use `*_GENESIS_HASH` constants on ethereum chainspecs (paradigmxyz#9328) * chore(ci): improve `hive` workflow (paradigmxyz#9320) * chore: move `reth test-vectors` to `cli/commands` with feature (paradigmxyz#9329) * chore: disable `test-utils` for `stages-api` on `stages` (paradigmxyz#9331) * fix: format_gas show two decimal places (paradigmxyz#9336) * chore(deps): trim tokio features in eth-wire (paradigmxyz#9343) * move header.rs to eth-wire-types (paradigmxyz#9345) * chore: move featureless commands from `bin` to `reth-cli-commands` (paradigmxyz#9333) * chore: remove `test-utils`, `arbitrary` and `proptest` from built binary (paradigmxyz#9332) * chore: use usize in internal functions (paradigmxyz#9337) * chore: rm unused optimism feature (paradigmxyz#9342) * test: make eth-wire tests compile with --all-features (paradigmxyz#9340) * chore(meta): fix link in issue template config (paradigmxyz#9349) * chore(deps): rm discv4 dep from eth-wire (paradigmxyz#9344) * chore: dont enable serde by default for eth-wire (paradigmxyz#9339) * chore(meta): remove security link from issue template config (paradigmxyz#9350) * chore: make eyre optional in reth-db (paradigmxyz#9351) * chore: remove cfg'ed use serde (paradigmxyz#9352) * fix: encode block as is in debug_getRawBlock (paradigmxyz#9353) * chore: remove unused private stream type (paradigmxyz#9357) * chore(deps): weekly `cargo update` (paradigmxyz#9354) Co-authored-by: github-merge-queue <[email protected]> Co-authored-by: Matthias Seitz <[email protected]> * test(tx-pool): add unit tests for `BestTransactions` `add_new_transactions` (paradigmxyz#9355) * feat: add entrypoint and main loop to EngineApiTreeHandlerImpl (paradigmxyz#9334) * feat: adds eth request panels to grafana (paradigmxyz#9026) * feat: Add required trait impls for OpEthApi (paradigmxyz#9341) * feat: eip-7251 (paradigmxyz#9335) * replacing network_handle with peer_info trait object (paradigmxyz#9367) * book: add troubleshooting commands to check disk and memory health and performance (paradigmxyz#9364) Co-authored-by: Alexey Shekhirin <[email protected]> * chore(deps): bump alloy 0.1.4 (paradigmxyz#9368) * feat(pruner): log stats as an ordered list of segments (paradigmxyz#9370) * feat: move mev rpc types to alloy (paradigmxyz#9108) Co-authored-by: Matthias Seitz <[email protected]> * feat(tree): validate state root (paradigmxyz#9369) * docs: typos (paradigmxyz#9379) * perf(pruner): delete history indices by changeset keys (paradigmxyz#9312) Co-authored-by: joshieDo <[email protected]> Co-authored-by: Emilia Hane <[email protected]> * clippy: rm useless clippy statement (paradigmxyz#9380) * feat(tree): pre-validate fcu (paradigmxyz#9371) * Integrate permits for getproof (paradigmxyz#9363) * feat: add support for payload bodies (paradigmxyz#9378) * chore: move `stage` command to `reth-cli-commands` (paradigmxyz#9384) * feat(rpc/ots): implement ots_getContractCreator (paradigmxyz#9236) Signed-off-by: jsvisa <[email protected]> Co-authored-by: Alexey Shekhirin <[email protected]> Co-authored-by: Matthias Seitz <[email protected]> * refactor(rpc): remove intermediate types from rpc start up process (paradigmxyz#9180) Co-authored-by: Matthias Seitz <[email protected]> * chore: fix clippy warnings for needless_borrows_for_generic_args (paradigmxyz#9387) * feat(rpc/ots): implement ots_traceTransaction RPC (paradigmxyz#9246) Signed-off-by: jsvisa <[email protected]> * chore: update private-testnet.md (paradigmxyz#9389) * feat(rpc/ots): implement ots_getTransactionBySenderAndNonce (paradigmxyz#9263) Signed-off-by: jsvisa <[email protected]> Co-authored-by: Emilia Hane <[email protected]> Co-authored-by: Matthias Seitz <[email protected]> * chore: release 1.0.1 (paradigmxyz#9388) * fix: support additional eth call bundle args (paradigmxyz#9383) * chore(deps): bump revm 11 (paradigmxyz#9391) * chore(deps): rm reth-codecs dep (paradigmxyz#9390) * chore: fmt, clean, refactor --------- Signed-off-by: jsvisa <[email protected]> Co-authored-by: Matthias Seitz <[email protected]> Co-authored-by: Dan Cline <[email protected]> Co-authored-by: joshieDo <[email protected]> Co-authored-by: Emilia Hane <[email protected]> Co-authored-by: DaniPopes <[email protected]> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: github-merge-queue <[email protected]> Co-authored-by: leniram159 <[email protected]> Co-authored-by: Thomas Coratger <[email protected]> Co-authored-by: Aurélien <[email protected]> Co-authored-by: Tien Nguyen <[email protected]> Co-authored-by: Federico Gimenez <[email protected]> Co-authored-by: Alexey Shekhirin <[email protected]> Co-authored-by: Omid Chenane <[email protected]> Co-authored-by: Roman Roibu <[email protected]> Co-authored-by: Roman Krasiuk <[email protected]> Co-authored-by: Vid Kersic <[email protected]> Co-authored-by: Aditya Pandey <[email protected]> Co-authored-by: Georgios Konstantopoulos <[email protected]> Co-authored-by: Luca Provini <[email protected]> Co-authored-by: Oliver <[email protected]> Co-authored-by: owanikin <[email protected]> Co-authored-by: Arsenii Kulikov <[email protected]> Co-authored-by: Michael Sproul <[email protected]> Co-authored-by: Kien Trinh <[email protected]> Co-authored-by: Darshan Kathiriya <[email protected]> Co-authored-by: greged93 <[email protected]> Co-authored-by: Huber <[email protected]> Co-authored-by: Delweng <[email protected]> Co-authored-by: sboou <[email protected]> Co-authored-by: fdsuuo <[email protected]> Co-authored-by: Ninja <[email protected]> Co-authored-by: Luca Provini <[email protected]> Co-authored-by: Paul Wackerow <[email protected]> Co-authored-by: Querty <[email protected]> Co-authored-by: clabby <[email protected]> Co-authored-by: yutianwu <[email protected]> Co-authored-by: 令狐一冲 <[email protected]> Co-authored-by: Krishang <[email protected]> Co-authored-by: John <[email protected]> Co-authored-by: nk_ysg <[email protected]> Co-authored-by: kostekIV <[email protected]> Co-authored-by: Park Smith <[email protected]> Co-authored-by: Qiwei Yang <[email protected]> Co-authored-by: d3or <[email protected]> Co-authored-by: SHio <[email protected]> Co-authored-by: daobaniw <[email protected]> Co-authored-by: jn <[email protected]> Co-authored-by: Sean Matt <[email protected]> Co-authored-by: Barnabas Busa <[email protected]> Co-authored-by: Emilia Hane <[email protected]>
1 parent 939b8c6 commit 3f6a0a3

File tree

867 files changed

+33208
-15216
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

867 files changed

+33208
-15216
lines changed

.github/ISSUE_TEMPLATE/config.yml

+1-4
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
11
blank_issues_enabled: false
22
contact_links:
33
- name: GitHub Discussions
4-
url: https://github.com/foundry-rs/reth/discussions
4+
url: https://github.com/paradigmxyz/reth/discussions
55
about: Please ask and answer questions here to keep the issue tracker clean.
6-
- name: Security
7-
url: mailto:[email protected]
8-
about: Please report security vulnerabilities here.

.github/assets/check_no_std.sh

+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
#!/usr/bin/env bash
2+
set -eo pipefail
3+
4+
# TODO
5+
no_std_packages=(
6+
# reth-codecs
7+
# reth-consensus
8+
# reth-db
9+
# reth-errors
10+
# reth-ethereum-forks
11+
# reth-evm
12+
# reth-evm-ethereum
13+
# reth-network-peers
14+
# reth-primitives
15+
# reth-primitives-traits
16+
# reth-revm
17+
)
18+
19+
for package in "${no_std_packages[@]}"; do
20+
cmd="cargo +stable build -p $package --target riscv32imac-unknown-none-elf --no-default-features"
21+
22+
if [ -n "$CI" ]; then
23+
echo "::group::$cmd"
24+
else
25+
printf "\n%s:\n %s\n" "$package" "$cmd"
26+
fi
27+
28+
$cmd
29+
30+
if [ -n "$CI" ]; then
31+
echo "::endgroup::"
32+
fi
33+
done

.github/assets/hive/Dockerfile

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
FROM ubuntu
2+
3+
COPY dist/reth /usr/local/bin
4+
5+
COPY LICENSE-* ./
6+
7+
EXPOSE 30303 30303/udp 9001 8545 8546
8+
ENTRYPOINT ["/usr/local/bin/reth"]
+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
#!/usr/bin/env bash
2+
set -eo pipefail
3+
4+
# Create the hive_assets directory
5+
mkdir hive_assets/
6+
7+
cd hivetests
8+
go build .
9+
10+
./hive -client reth # first builds and caches the client
11+
12+
# Run each hive command in the background for each simulator and wait
13+
echo "Building images"
14+
./hive -client reth --sim "pyspec" -sim.timelimit 1s || true &
15+
./hive -client reth --sim "ethereum/engine" -sim.timelimit 1s || true &
16+
./hive -client reth --sim "devp2p" -sim.timelimit 1s || true &
17+
./hive -client reth --sim "ethereum/rpc-compat" -sim.timelimit 1s || true &
18+
./hive -client reth --sim "smoke/genesis" -sim.timelimit 1s || true &
19+
./hive -client reth --sim "smoke/network" -sim.timelimit 1s || true &
20+
./hive -client reth --sim "ethereum/sync" -sim.timelimit 1s || true &
21+
wait
22+
23+
# Run docker save in parallel and wait
24+
echo "Saving images"
25+
docker save hive/hiveproxy:latest -o ../hive_assets/hiveproxy.tar &
26+
docker save hive/simulators/devp2p:latest -o ../hive_assets/devp2p.tar &
27+
docker save hive/simulators/ethereum/engine:latest -o ../hive_assets/engine.tar &
28+
docker save hive/simulators/ethereum/rpc-compat:latest -o ../hive_assets/rpc_compat.tar &
29+
docker save hive/simulators/ethereum/pyspec:latest -o ../hive_assets/pyspec.tar &
30+
docker save hive/simulators/smoke/genesis:latest -o ../hive_assets/smoke_genesis.tar &
31+
docker save hive/simulators/smoke/network:latest -o ../hive_assets/smoke_network.tar &
32+
docker save hive/simulators/ethereum/sync:latest -o ../hive_assets/ethereum_sync.tar &
33+
wait
34+
35+
# Make sure we don't rebuild images on the CI jobs
36+
git apply ../.github/assets/hive/no_sim_build.diff
37+
go build .
38+
mv ./hive ../hive_assets/
+120
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
# https://github.com/paradigmxyz/reth/issues/7015
2+
# https://github.com/paradigmxyz/reth/issues/6332
3+
rpc-compat:
4+
- debug_getRawBlock/get-invalid-number (reth)
5+
- debug_getRawHeader/get-invalid-number (reth)
6+
- debug_getRawReceipts/get-invalid-number (reth)
7+
- debug_getRawTransaction/get-invalid-hash (reth)
8+
9+
- eth_call/call-callenv (reth)
10+
- eth_createAccessList/create-al-contract-eip1559 (reth)
11+
- eth_createAccessList/create-al-contract (reth)
12+
- eth_feeHistory/fee-history (reth)
13+
- eth_getStorageAt/get-storage-invalid-key-too-large (reth)
14+
- eth_getStorageAt/get-storage-invalid-key (reth)
15+
- eth_getTransactionReceipt/get-access-list (reth)
16+
- eth_getTransactionReceipt/get-blob-tx (reth)
17+
- eth_getTransactionReceipt/get-dynamic-fee (reth)
18+
19+
# https://github.com/paradigmxyz/reth/issues/8732
20+
engine-withdrawals:
21+
- Withdrawals Fork On Genesis (Paris) (reth)
22+
- Withdrawals Fork on Block 1 (Paris) (reth)
23+
- Withdrawals Fork on Block 2 (Paris) (reth)
24+
- Withdrawals Fork on Block 3 (Paris) (reth)
25+
- Withdraw to a single account (Paris) (reth)
26+
- Withdraw to two accounts (Paris) (reth)
27+
- Withdraw many accounts (Paris) (reth)
28+
- Withdraw zero amount (Paris) (reth)
29+
- Empty Withdrawals (Paris) (reth)
30+
- Corrupted Block Hash Payload (INVALID) (Paris) (reth)
31+
- Withdrawals Fork on Block 1 - 8 Block Re-Org NewPayload (Paris) (reth)
32+
- Withdrawals Fork on Block 1 - 8 Block Re-Org, Sync (Paris) (reth)
33+
- Withdrawals Fork on Block 8 - 10 Block Re-Org NewPayload (Paris) (reth)
34+
- Withdrawals Fork on Block 8 - 10 Block Re-Org Sync (Paris) (reth)
35+
- Withdrawals Fork on Canonical Block 8 / Side Block 7 - 10 Block Re-Org (Paris) (reth)
36+
- Withdrawals Fork on Canonical Block 8 / Side Block 7 - 10 Block Re-Org Sync (Paris) (reth)
37+
- Withdrawals Fork on Canonical Block 8 / Side Block 9 - 10 Block Re-Org (Paris) (reth)
38+
- Withdrawals Fork on Canonical Block 8 / Side Block 9 - 10 Block Re-Org Sync (Paris) (reth)
39+
40+
# https://github.com/paradigmxyz/reth/issues/8305
41+
# https://github.com/paradigmxyz/reth/issues/6217
42+
engine-api:
43+
- Inconsistent Head in ForkchoiceState (Paris) (reth)
44+
- Invalid NewPayload, StateRoot, Syncing=True, EmptyTxs=True, DynFeeTxs=False (Paris) (reth)
45+
- Invalid NewPayload, StateRoot, Syncing=True, EmptyTxs=False, DynFeeTxs=False (Paris) (reth)
46+
- Invalid NewPayload, PrevRandao, Syncing=True, EmptyTxs=False, DynFeeTxs=False (Paris) (reth)
47+
- Invalid Missing Ancestor Syncing ReOrg, StateRoot, EmptyTxs=True, CanonicalReOrg=False, Invalid P9 (Paris) (reth)
48+
- Invalid Missing Ancestor Syncing ReOrg, StateRoot, EmptyTxs=False, CanonicalReOrg=False, Invalid P9 (Paris) (reth)
49+
- Invalid Missing Ancestor Syncing ReOrg, StateRoot, EmptyTxs=True, CanonicalReOrg=True, Invalid P9 (Paris) (reth)
50+
- Invalid Missing Ancestor Syncing ReOrg, StateRoot, EmptyTxs=False, CanonicalReOrg=True, Invalid P9 (Paris) (reth)
51+
- Invalid Missing Ancestor Syncing ReOrg, GasLimit, EmptyTxs=False, CanonicalReOrg=False, Invalid P8 (Paris) (reth)
52+
- Invalid Missing Ancestor Syncing ReOrg, Timestamp, EmptyTxs=False, CanonicalReOrg=False, Invalid P8 (Paris) (reth)
53+
54+
# Hive issue
55+
# https://github.com/ethereum/hive/issues/1135
56+
- Invalid Missing Ancestor Syncing ReOrg, Transaction Signature, EmptyTxs=False, CanonicalReOrg=False, Invalid P9 (Paris) (reth)
57+
- Invalid Missing Ancestor Syncing ReOrg, Transaction Signature, EmptyTxs=False, CanonicalReOrg=True, Invalid P9 (Paris) (reth)
58+
- Invalid Missing Ancestor Syncing ReOrg, Transaction Nonce, EmptyTxs=False, CanonicalReOrg=False, Invalid P9 (Paris) (reth)
59+
- Invalid Missing Ancestor Syncing ReOrg, Transaction Nonce, EmptyTxs=False, CanonicalReOrg=True, Invalid P9 (Paris) (reth)
60+
- Invalid Missing Ancestor Syncing ReOrg, Transaction Gas, EmptyTxs=False, CanonicalReOrg=False, Invalid P9 (Paris) (reth)
61+
- Invalid Missing Ancestor Syncing ReOrg, Transaction Gas, EmptyTxs=False, CanonicalReOrg=True, Invalid P9 (Paris) (reth)
62+
- Invalid Missing Ancestor Syncing ReOrg, Transaction GasPrice, EmptyTxs=False, CanonicalReOrg=False, Invalid P9 (Paris) (reth)
63+
- Invalid Missing Ancestor Syncing ReOrg, Transaction GasPrice, EmptyTxs=False, CanonicalReOrg=True, Invalid P9 (Paris) (reth)
64+
- Invalid Missing Ancestor Syncing ReOrg, Transaction Value, EmptyTxs=False, CanonicalReOrg=False, Invalid P9 (Paris) (reth)
65+
- Invalid Missing Ancestor Syncing ReOrg, Transaction Value, EmptyTxs=False, CanonicalReOrg=True, Invalid P9 (Paris) (reth)
66+
- Invalid Missing Ancestor Syncing ReOrg, ReceiptsRoot, EmptyTxs=False, CanonicalReOrg=False, Invalid P8 (Paris) (reth)
67+
- Invalid Missing Ancestor Syncing ReOrg, ReceiptsRoot, EmptyTxs=False, CanonicalReOrg=True, Invalid P8 (Paris) (reth)
68+
- Invalid Missing Ancestor Syncing ReOrg, GasLimit, EmptyTxs=False, CanonicalReOrg=True, Invalid P8 (Paris) (reth)
69+
- Invalid Missing Ancestor Syncing ReOrg, GasUsed, EmptyTxs=False, CanonicalReOrg=False, Invalid P8 (Paris) (reth)
70+
- Invalid Missing Ancestor Syncing ReOrg, GasUsed, EmptyTxs=False, CanonicalReOrg=True, Invalid P8 (Paris) (reth)
71+
- Invalid Missing Ancestor Syncing ReOrg, Timestamp, EmptyTxs=False, CanonicalReOrg=True, Invalid P8 (Paris) (reth)
72+
- Invalid Missing Ancestor Syncing ReOrg, Incomplete Transactions, EmptyTxs=False, CanonicalReOrg=False, Invalid P9 (Paris) (reth)
73+
- Invalid Missing Ancestor Syncing ReOrg, Incomplete Transactions, EmptyTxs=False, CanonicalReOrg=True, Invalid P9 (Paris) (reth)
74+
75+
# https://github.com/paradigmxyz/reth/issues/8305
76+
# https://github.com/paradigmxyz/reth/issues/6217
77+
# https://github.com/paradigmxyz/reth/issues/8306
78+
# https://github.com/paradigmxyz/reth/issues/7144
79+
engine-cancun:
80+
- Blob Transaction Ordering, Multiple Clients (Cancun) (reth)
81+
- Inconsistent Head in ForkchoiceState (Cancun) (reth)
82+
- Invalid NewPayload, StateRoot, Syncing=True, EmptyTxs=True, DynFeeTxs=False (Cancun) (reth)
83+
- Invalid NewPayload, StateRoot, Syncing=True, EmptyTxs=False, DynFeeTxs=False (Cancun) (reth)
84+
- Invalid NewPayload, PrevRandao, Syncing=True, EmptyTxs=False, DynFeeTxs=False (Cancun) (reth)
85+
- Invalid Missing Ancestor Syncing ReOrg, StateRoot, EmptyTxs=True, CanonicalReOrg=False, Invalid P9 (Cancun) (reth)
86+
- Invalid Missing Ancestor Syncing ReOrg, StateRoot, EmptyTxs=False, CanonicalReOrg=False, Invalid P9 (Cancun) (reth)
87+
- Invalid Missing Ancestor Syncing ReOrg, StateRoot, EmptyTxs=True, CanonicalReOrg=True, Invalid P9 (Cancun) (reth)
88+
- Invalid Missing Ancestor Syncing ReOrg, StateRoot, EmptyTxs=False, CanonicalReOrg=True, Invalid P9 (Cancun) (reth)
89+
- Invalid Missing Ancestor Syncing ReOrg, GasLimit, EmptyTxs=False, CanonicalReOrg=False, Invalid P8 (Cancun) (reth)
90+
- Invalid Missing Ancestor Syncing ReOrg, Timestamp, EmptyTxs=False, CanonicalReOrg=False, Invalid P8 (Cancun) (reth)
91+
- Invalid PayloadAttributes, Missing BeaconRoot, Syncing=True (Cancun) (reth)
92+
- Invalid NewPayload, ParentBeaconBlockRoot, Syncing=True, EmptyTxs=False, DynFeeTxs=False (Cancun) (reth)
93+
- Invalid NewPayload, BlobGasUsed, Syncing=True, EmptyTxs=False, DynFeeTxs=False (Cancun) (reth)
94+
- Invalid NewPayload, Blob Count on BlobGasUsed, Syncing=True, EmptyTxs=False, DynFeeTxs=False (Cancun) (reth)
95+
- Invalid NewPayload, ExcessBlobGas, Syncing=True, EmptyTxs=False, DynFeeTxs=False (Cancun) (reth)
96+
97+
# Hive issue
98+
# https://github.com/ethereum/hive/issues/1135
99+
- Invalid Missing Ancestor Syncing ReOrg, ReceiptsRoot, EmptyTxs=False, CanonicalReOrg=False, Invalid P8 (Cancun) (reth)
100+
- Invalid Missing Ancestor Syncing ReOrg, ReceiptsRoot, EmptyTxs=False, CanonicalReOrg=True, Invalid P8 (Cancun) (reth)
101+
- Invalid Missing Ancestor Syncing ReOrg, GasLimit, EmptyTxs=False, CanonicalReOrg=True, Invalid P8 (Cancun) (reth)
102+
- Invalid Missing Ancestor Syncing ReOrg, GasUsed, EmptyTxs=False, CanonicalReOrg=False, Invalid P8 (Cancun) (reth)
103+
- Invalid Missing Ancestor Syncing ReOrg, GasUsed, EmptyTxs=False, CanonicalReOrg=True, Invalid P8 (Cancun) (reth)
104+
- Invalid Missing Ancestor Syncing ReOrg, Timestamp, EmptyTxs=False, CanonicalReOrg=True, Invalid P8 (Cancun) (reth)
105+
- Invalid Missing Ancestor Syncing ReOrg, Incomplete Transactions, EmptyTxs=False, CanonicalReOrg=False, Invalid P9 (Cancun) (reth)
106+
- Invalid Missing Ancestor Syncing ReOrg, Incomplete Transactions, EmptyTxs=False, CanonicalReOrg=True, Invalid P9 (Cancun) (reth)
107+
- Invalid Missing Ancestor Syncing ReOrg, Transaction Signature, EmptyTxs=False, CanonicalReOrg=False, Invalid P9 (Cancun) (reth)
108+
- Invalid Missing Ancestor Syncing ReOrg, Transaction Signature, EmptyTxs=False, CanonicalReOrg=True, Invalid P9 (Cancun) (reth)
109+
- Invalid Missing Ancestor Syncing ReOrg, Transaction Nonce, EmptyTxs=False, CanonicalReOrg=False, Invalid P9 (Cancun) (reth)
110+
- Invalid Missing Ancestor Syncing ReOrg, Transaction Nonce, EmptyTxs=False, CanonicalReOrg=True, Invalid P9 (Cancun) (reth)
111+
- Invalid Missing Ancestor Syncing ReOrg, Transaction Gas, EmptyTxs=False, CanonicalReOrg=False, Invalid P9 (Cancun) (reth)
112+
- Invalid Missing Ancestor Syncing ReOrg, Transaction Gas, EmptyTxs=False, CanonicalReOrg=True, Invalid P9 (Cancun) (reth)
113+
- Invalid Missing Ancestor Syncing ReOrg, Transaction GasPrice, EmptyTxs=False, CanonicalReOrg=False, Invalid P9 (Cancun) (reth)
114+
- Invalid Missing Ancestor Syncing ReOrg, Transaction GasPrice, EmptyTxs=False, CanonicalReOrg=True, Invalid P9 (Cancun) (reth)
115+
- Invalid Missing Ancestor Syncing ReOrg, Transaction Value, EmptyTxs=False, CanonicalReOrg=False, Invalid P9 (Cancun) (reth)
116+
- Invalid Missing Ancestor Syncing ReOrg, Transaction Value, EmptyTxs=False, CanonicalReOrg=True, Invalid P9 (Cancun) (reth)
117+
118+
# https://github.com/paradigmxyz/reth/issues/8579
119+
sync:
120+
- sync reth -> reth

.github/assets/hive/load_images.sh

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
#!/usr/bin/env bash
2+
set -eo pipefail
3+
4+
# List of tar files to load
5+
IMAGES=(
6+
"/tmp/hiveproxy.tar"
7+
"/tmp/devp2p.tar"
8+
"/tmp/engine.tar"
9+
"/tmp/rpc_compat.tar"
10+
"/tmp/pyspec.tar"
11+
"/tmp/smoke_genesis.tar"
12+
"/tmp/smoke_network.tar"
13+
"/tmp/ethereum_sync.tar"
14+
"/tmp/reth_image.tar"
15+
)
16+
17+
# Loop through the images and load them
18+
for IMAGE_TAR in "${IMAGES[@]}"; do
19+
echo "Loading image $IMAGE_TAR..."
20+
docker load -i "$IMAGE_TAR" &
21+
done
22+
23+
wait
24+
25+
docker image ls -a

.github/assets/hive/no_sim_build.diff

+53
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
diff --git a/internal/libdocker/builder.go b/internal/libdocker/builder.go
2+
index 4731c9d..d717f52 100644
3+
--- a/internal/libdocker/builder.go
4+
+++ b/internal/libdocker/builder.go
5+
@@ -7,9 +7,7 @@ import (
6+
"fmt"
7+
"io"
8+
"io/fs"
9+
- "os"
10+
"path/filepath"
11+
- "strings"
12+
13+
"github.com/ethereum/hive/internal/libhive"
14+
docker "github.com/fsouza/go-dockerclient"
15+
@@ -53,24 +51,8 @@ func (b *Builder) BuildClientImage(ctx context.Context, client libhive.ClientDes
16+
17+
// BuildSimulatorImage builds a docker image of a simulator.
18+
func (b *Builder) BuildSimulatorImage(ctx context.Context, name string) (string, error) {
19+
- dir := b.config.Inventory.SimulatorDirectory(name)
20+
- buildContextPath := dir
21+
- buildDockerfile := "Dockerfile"
22+
- // build context dir of simulator can be overridden with "hive_context.txt" file containing the desired build path
23+
- if contextPathBytes, err := os.ReadFile(filepath.Join(filepath.FromSlash(dir), "hive_context.txt")); err == nil {
24+
- buildContextPath = filepath.Join(dir, strings.TrimSpace(string(contextPathBytes)))
25+
- if strings.HasPrefix(buildContextPath, "../") {
26+
- return "", fmt.Errorf("cannot access build directory outside of Hive root: %q", buildContextPath)
27+
- }
28+
- if p, err := filepath.Rel(buildContextPath, filepath.Join(filepath.FromSlash(dir), "Dockerfile")); err != nil {
29+
- return "", fmt.Errorf("failed to derive relative simulator Dockerfile path: %v", err)
30+
- } else {
31+
- buildDockerfile = p
32+
- }
33+
- }
34+
tag := fmt.Sprintf("hive/simulators/%s:latest", name)
35+
- err := b.buildImage(ctx, buildContextPath, buildDockerfile, tag, nil)
36+
- return tag, err
37+
+ return tag, nil
38+
}
39+
40+
// BuildImage creates a container by archiving the given file system,
41+
diff --git a/internal/libdocker/proxy.go b/internal/libdocker/proxy.go
42+
index a53e5af..0bb2ea9 100644
43+
--- a/internal/libdocker/proxy.go
44+
+++ b/internal/libdocker/proxy.go
45+
@@ -16,7 +16,7 @@ const hiveproxyTag = "hive/hiveproxy"
46+
47+
// Build builds the hiveproxy image.
48+
func (cb *ContainerBackend) Build(ctx context.Context, b libhive.Builder) error {
49+
- return b.BuildImage(ctx, hiveproxyTag, hiveproxy.Source)
50+
+ return nil
51+
}
52+
53+
// ServeAPI starts the API server.

.github/assets/hive/parse.py

+43
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
import json
2+
import yaml
3+
import sys
4+
import argparse
5+
6+
# Argument parser setup
7+
parser = argparse.ArgumentParser(description="Check for unexpected test results based on an exclusion list.")
8+
parser.add_argument("report_json", help="Path to the hive report JSON file.")
9+
parser.add_argument("--exclusion", required=True, help="Path to the exclusion YAML file.")
10+
args = parser.parse_args()
11+
12+
# Load hive JSON
13+
with open(args.report_json, 'r') as file:
14+
report = json.load(file)
15+
16+
# Load exclusion YAML
17+
with open(args.exclusion, 'r') as file:
18+
exclusion_data = yaml.safe_load(file)
19+
exclusions = exclusion_data.get(report['name'], [])
20+
21+
# Collect unexpected failures and passes
22+
unexpected_failures = []
23+
unexpected_passes = []
24+
25+
for test in report['testCases'].values():
26+
test_name = test['name']
27+
test_pass = test['summaryResult']['pass']
28+
if test_name in exclusions:
29+
if test_pass:
30+
unexpected_passes.append(test_name)
31+
else:
32+
if not test_pass:
33+
unexpected_failures.append(test_name)
34+
35+
# Check if there are any unexpected failures or passes and exit with error
36+
if unexpected_failures or unexpected_passes:
37+
if unexpected_failures:
38+
print("Unexpected Failures:", unexpected_failures)
39+
if unexpected_passes:
40+
print("Unexpected Passes:", unexpected_passes)
41+
sys.exit(1)
42+
43+
print("Success.")

.github/assets/hive/run_simulator.sh

+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
#!/usr/bin/env bash
2+
# set -x
3+
4+
cd hivetests/
5+
6+
sim="${1}"
7+
limit="${2}"
8+
9+
run_hive() {
10+
hive --sim "${sim}" --sim.limit "${limit}" --sim.parallelism 4 --client reth 2>&1 | tee /tmp/log || true
11+
}
12+
13+
check_log() {
14+
tail -n 1 /tmp/log | sed -r 's/\x1B\[[0-9;]*[mK]//g'
15+
}
16+
17+
attempt=0
18+
max_attempts=5
19+
20+
while [ $attempt -lt $max_attempts ]; do
21+
run_hive
22+
23+
# Check if no tests were run. sed removes ansi colors
24+
if check_log | grep -q "suites=0"; then
25+
echo "no tests were run, retrying in 5 seconds"
26+
sleep 5
27+
attempt=$((attempt + 1))
28+
continue
29+
fi
30+
31+
# Check the last line of the log for "finished", "tests failed", or "test failed"
32+
if check_log | grep -Eq "(finished|tests? failed)"; then
33+
exit 0
34+
else
35+
exit 1
36+
fi
37+
done
38+
exit 1
File renamed without changes.
File renamed without changes.

.github/workflows/assertoor.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ jobs:
3333
3434
cat etc/assertoor/assertoor-template.yaml | envsubst > etc/assertoor/assertoor.yaml
3535
36-
kurtosis run github.com/kurtosis-tech/ethereum-package --enclave assertoor-${{ github.run_id }} --args-file etc/assertoor/assertoor.yaml
36+
kurtosis run github.com/ethpandaops/ethereum-package --enclave assertoor-${{ github.run_id }} --args-file etc/assertoor/assertoor.yaml
3737
3838
enclave_dump=$(kurtosis enclave inspect assertoor-${{ github.run_id }})
3939

0 commit comments

Comments
 (0)