Compare commits

...

1211 Commits

Author SHA1 Message Date
Dan Cline
af0e2d0f01 fix(db-common): compute state root when initializing from genesis (#17731) 2025-08-06 09:30:42 -07:00
Dan Cline
29f7aa6fe8 deps: bump revm patch for modexp price increase 2025-07-07 21:28:52 -04:00
Dan Cline
1b6522f74d deps: bump revm patch 2025-07-01 14:09:23 -04:00
Roman Krasiuk
1533cd0633 deps: patch revm 2025-06-25 15:10:32 +02:00
Matthias Seitz
51bda0dcb7 chore: use earliest block number (#17044) 2025-06-25 11:47:10 +00:00
Matthias Seitz
14c6b5f5e3 chore: use payload_builder target (#17049) 2025-06-25 11:26:39 +00:00
Alexey Shekhirin
d2b4dd5611 perf(trie): implement ParallelSparseTrie::root method (#17030)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Claude <assistant@anthropic.com>
2025-06-25 10:10:00 +00:00
Kendra Karol Sevilla
5221b6d281 chore: fix typo execution.rs (#17004) 2025-06-25 10:01:36 +00:00
Léa Narzis
4afe7906d2 feat: introduce reth era export (#15909)
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
2025-06-25 08:28:31 +00:00
Yash Atreya
a78be9c133 fix(docs): banner on landing (#17048) 2025-06-25 07:56:24 +00:00
futreall
5f688bb831 docs: fix errors and correction (#17047) 2025-06-25 07:44:37 +00:00
Yash Atreya
48743963fc fix(docs): broken links for images on landing (#17043) 2025-06-24 09:45:48 -07:00
Yash Atreya
eb5e367152 chore(ci): rm concurrency from book workflow (#17038) 2025-06-24 15:46:37 +00:00
FT
df13c6e58b docs: fix typo in transaction expiration comment (#17037) 2025-06-24 15:29:57 +00:00
Alex Pikme
6d04e66d39 chore: fix spelling errors (#17029) 2025-06-24 15:12:35 +00:00
FT
05d44bba90 refactor(rpc): replace ExtendedTxEnvelopeRepr with ExtendedRepr in serde_bincode_compat (#17033) 2025-06-24 15:11:37 +00:00
Matthias Seitz
8485d99dfa feat: add --rollup.historicalrpc CLI argument for op-reth (#16941)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Arsenii Kulikov <klkvrr@gmail.com>
2025-06-24 15:10:53 +00:00
Yash Atreya
599de19fb3 chore(book): migrate to vocs (#16605)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-06-24 15:00:56 +00:00
otc group
f7b26ade33 fix: correct typo “reseipt” → “receipt” in serde_bincode_compat tests (#17034) 2025-06-24 12:59:24 +00:00
Matthias Seitz
f5680e74d5 feat: prune pre merge transaction files (#16702) 2025-06-24 12:41:22 +00:00
Alexey Shekhirin
b8e3f673dd chore(trie): rephrase the log about storage proof task result sending (#17032) 2025-06-24 11:16:32 +00:00
Alexey Shekhirin
e4281b345d refactor(trie): introduce SparseSubtrieInner::rlp_node method (#17031) 2025-06-24 10:53:05 +00:00
Roman Hodulák
b011ad0d8d feat(rpc): Propagate the RPC transaction request from Network and RpcTypes (#17025) 2025-06-24 09:22:08 +00:00
Matthias Seitz
265700cf2f feat: add configurable RPC middleware to RpcAddOns (#17024) 2025-06-24 08:35:19 +00:00
Federico Gimenez
71b33f12cc chore: enable state root task in engine tree unit tests (#17023) 2025-06-24 08:30:08 +00:00
Léa Narzis
3f5486d9c6 feat(tx-pool): add getter methods for EthTransactionValidator internal fields (#17022)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-06-24 08:16:09 +00:00
Matthias Seitz
b719bb7d56 docs: update outdated validtor docs (#17027) 2025-06-24 10:16:38 +02:00
Matthias Seitz
faa9d3756b chore: remove unused for<'a> (#17026) 2025-06-23 21:47:16 +00:00
Matthias Seitz
cf8ff9829c feat: add codec re-exports to reth-op and reth-ethereum (#17020) 2025-06-23 20:29:25 +00:00
Matthias Seitz
2563a168ee chore: re-export op hardforks from op chainspec (#17018) 2025-06-23 20:29:04 +00:00
Alexey Shekhirin
474096146a perf(trie): SparseSubtrie::update_hashes (#16943) 2025-06-23 18:38:25 +00:00
Matthias Seitz
eefbc953a0 feat: allow access to db via NodeBuilder (#17021) 2025-06-23 17:11:14 +00:00
Brian Picciano
dd5501336c perf(trie): Place the root nodes of the lower SparseSubtries in those tries (#17011)
Co-authored-by: Alexey Shekhirin <5773434+shekhirin@users.noreply.github.com>
2025-06-23 16:48:39 +00:00
fuder.eth
2462eb2f6a refactor(rpc): rename crate reth_rpc_types_compat → reth_rpc_convert (#17019) 2025-06-23 18:26:50 +02:00
Alexey Shekhirin
3916c8571c revert: test: special case for nibbles implementations of Compact (#17006) (#17012) 2025-06-23 18:26:06 +02:00
Roman Hodulák
5eed5c6d73 feat(rpc): Add TransactionRequest into RpcTypes (#17017) 2025-06-23 15:57:15 +00:00
Roman Hodulák
fd101ea955 refactor(rpc): Rename crate reth_rpc_types_compat => reth_rpc_convert (#17013) 2025-06-23 15:14:25 +00:00
Alexey Shekhirin
34fe4c7c55 perf: U256 nybbles (#16727)
Co-authored-by: Claude <noreply@anthropic.com>
2025-06-23 14:33:23 +00:00
Roman Hodulák
3f3c2914ac docs(rpc): Add documentation for RpcConverter (#17010) 2025-06-23 14:28:12 +00:00
Matthias Seitz
dc67f0237f chore: rm standalone fn (#17007) 2025-06-23 16:22:01 +02:00
Roman Hodulák
ff5787da81 refactor(rpc): Rename TransactionCompat => RpcConvert (#17009) 2025-06-23 13:53:43 +00:00
Matthias Seitz
e957971807 docs: rephrase RpcNodeCore docs (#17005) 2025-06-23 13:40:09 +00:00
Krishang Shah
0d5edc240b chore: add size field in the new_header_stream method (#17008) 2025-06-23 13:33:48 +00:00
Alexey Shekhirin
93a407b560 test: special case for nibbles implementations of Compact (#17006) 2025-06-23 13:21:27 +00:00
Arsenii Kulikov
9d61cf8130 chore: simplify RpcConverter (#17002) 2025-06-23 12:45:38 +00:00
Matthias Seitz
023c5d7d98 chore: rm unused eof variant (#17001) 2025-06-23 11:59:38 +00:00
Matthias Seitz
974692d7d9 docs: improve ConfigureEvm trait documentation (#16937)
Co-authored-by: Claude <noreply@anthropic.com>
2025-06-23 11:01:36 +00:00
Federico Gimenez
8ce99797a5 refactor: introduce OpFullNodeTypes helper trait to reduce bound duplication (#16431) 2025-06-23 10:28:37 +00:00
Arsenii Kulikov
88edd52649 feat: bump revm v26 (#16969)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-06-23 09:16:16 +00:00
Matthias Seitz
4f5ad18682 docs: improve payload primitives documentation (#16986) 2025-06-23 11:34:09 +02:00
Federico Gimenez
2ba3d134a9 feat(test): rewrite test_engine_tree_live_sync_transition_eventually_canonical using e2e framework (#16972) 2025-06-23 08:37:13 +00:00
Skylar Ray
9f710adee0 chore: fix typo bootnode.rs (#16995) 2025-06-23 08:36:47 +00:00
Soubhik Singha Mahapatra
55fdebdc0e chore: changed example command (#16993) 2025-06-22 17:28:39 +02:00
Léa Narzis
18cd06f306 docs: add reth_fs_util suggestion instead of std::fs to claude doc helper (#16992) 2025-06-22 16:35:19 +02:00
github-actions[bot]
0c862caa91 chore(deps): weekly cargo update (#16987)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-06-22 13:38:16 +02:00
futreall
45a63c615a docs: fix error in HARDFORK-CHECKLIST.md (#16989) 2025-06-22 11:09:29 +00:00
Matthias Seitz
09f740d930 chore: use from conversion for txkind (#16990) 2025-06-22 10:49:22 +00:00
Matthias Seitz
a0c3bbf920 feat: add rpc header compat (#16988) 2025-06-22 09:34:06 +00:00
Roman Hodulák
0131267e3f feat(rpc): Replace associated type Transaction with Network in TransactionCompat (#16973) 2025-06-22 07:32:15 +00:00
Matthias Seitz
7e9f141604 chore: simplify test HttpClient implementations (#16985) 2025-06-21 14:26:13 +00:00
Matthias Seitz
02bbcc8367 fix: use empty withdrawals if parent has withdrawals root (#16980) 2025-06-21 14:03:44 +00:00
Matthias Seitz
6ee5006ac0 chore: relax localpending block bounds (#16979) 2025-06-21 13:19:01 +00:00
Léa Narzis
9ce49a981e chore(era): complete doc for ClientWithFakeIndex (#16984) 2025-06-21 12:29:31 +00:00
Matthias Seitz
ba16804471 feat: add From impl for RecoveredBlock from blocks with recovered transactions (#16983) 2025-06-21 11:37:17 +00:00
Matthias Seitz
9cf910ce2e refactor: remove CallFees re-export and relocate tests (#16981) 2025-06-21 09:46:52 +00:00
Matthias Seitz
9939164d07 chore: remove unused features (#16963) 2025-06-21 09:38:02 +02:00
Emilia Hane
10f8344862 chore(sdk): Add default for noop component (#16570)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-06-21 06:54:24 +00:00
kilavvy
83802249ea fix: Improve comment in historical RPC tests (#16971) 2025-06-21 08:35:22 +02:00
0xMushow
b786710816 feat(transaction-pool): enforce EIP-2681 (#16967) 2025-06-21 04:54:27 +00:00
Amidamaru
f917cf0eb2 perf(rpc): optimize EVM reuse in eth_estimateGas (#16958) 2025-06-21 04:40:53 +00:00
Roman Hodulák
1339e8770e feat(era): Attach file name and path to checksum error (#16974) 2025-06-20 21:19:58 +00:00
Matthias Seitz
9961d46bb1 fix: add missing historical RPC endpoints for Optimism pre-bedrock (#16976)
Co-authored-by: Claude <noreply@anthropic.com>
2025-06-20 17:56:43 +00:00
Dan Cline
85e6e979c2 chore(merkle): add debug log inside incremental loop (#16977) 2025-06-20 17:55:40 +00:00
Federico Gimenez
8f16e2199f chore: resolve unused import warning in reth RPC API subscription attribute (#16975) 2025-06-20 15:43:13 +00:00
Arsenii Kulikov
0ce46431fd chore: propagate inner error in ef tests (#16970) 2025-06-20 12:59:24 +00:00
Matthias Seitz
15529e7923 revert: "ci: pin nextest version" (#16890)
Co-authored-by: DaniPopes <57450786+DaniPopes@users.noreply.github.com>
2025-06-20 12:35:07 +00:00
Matthias Seitz
b45f84d78c fix: check if dir exists before removing (#16968) 2025-06-20 12:17:35 +00:00
Brian Picciano
f9b4eba3b7 chore(trie): Replace magic numbers in ParallelSparseTrie code (#16960)
Co-authored-by: Alexey Shekhirin <5773434+shekhirin@users.noreply.github.com>
2025-06-20 11:23:43 +00:00
Matthias Seitz
343983d0a1 chore: feature gate all op rpc types compat impl (#16964) 2025-06-20 09:51:16 +00:00
Matthias Seitz
24f0365340 chore: use revm tx trait directly (#16961) 2025-06-20 10:43:21 +02:00
Matthias Seitz
5a5b58c6ca chore: update codeowners (#16957) 2025-06-20 02:53:56 +00:00
Matthias Seitz
f318fc26a3 chore: remove duplicate callfees (#16955) 2025-06-19 22:31:23 +00:00
Federico Gimenez
110cb84bdc feat(test): rewrite test_engine_tree_live_sync_fcu_extends_canon_chain using e2e framework (#16949) 2025-06-19 21:16:11 +00:00
Alexey Shekhirin
ea5ffa51fc bench: disable sparse trie update bench as it's flaky (#16953) 2025-06-19 20:10:10 +00:00
Alexey Shekhirin
9231652c6c perf(trie): ParallelSparseTrie::update_subtrie_hashes boilerplate (#16948) 2025-06-19 19:29:06 +00:00
Shane K Moore
f59a82e4c6 chore: add node synced helper (#16928) 2025-06-19 18:46:34 +00:00
Alexey Shekhirin
ad68177508 chore: move parallel sparse trie to its own crate (#16950) 2025-06-19 18:39:05 +00:00
nekomoto911
54cd8b34a4 perf: Reduce unnecessary MDBX transaction creation when constructing StateProvider (#16884) 2025-06-19 14:14:07 +00:00
Alexey Shekhirin
0288a2d14d bench(trie): prepare trie outside of routine, use large input size (#16945) 2025-06-19 13:54:47 +00:00
Brian Picciano
4be2226235 perf: Reuse CachedPrecompileMetrics across block executions (#16944) 2025-06-19 13:52:05 +00:00
Hai | RISE
6aa73f1480 feat: require only account & bytecode reader for tx validation (#16930) 2025-06-19 15:58:57 +02:00
Brian Picciano
ebd57f77bc perf(trie): ParallelSparseTrie::reveal_node (#16894)
Co-authored-by: Alexey Shekhirin <5773434+shekhirin@users.noreply.github.com>
2025-06-19 13:13:12 +00:00
Rose Jethani
aa725dd0cf feat: add Historical RPC Forwarder Service (#16724)
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-06-19 14:21:05 +02:00
Matthias Seitz
2f9c5ace37 test: flaky connection test (#16939) 2025-06-19 13:59:20 +02:00
Alexey Shekhirin
55dd16ac20 perf(trie): box subtries in parallel sparse trie (#16938) 2025-06-19 11:23:32 +00:00
Solar Mithril
2ebb519287 chore: Expose payload_id (#16931)
Co-authored-by: Solar Mithril <solarmithril@pm.me>
2025-06-19 13:13:52 +02:00
Matthias Seitz
53cd4b2397 chore: add type alias for PayloadAttributes (#16933) 2025-06-19 12:38:29 +02:00
Maxim Evtush
20800be462 docs: Fix Typo in DebugNode Trait Documentation (#16932) 2025-06-19 10:22:41 +02:00
Hai | RISE
cdb5b69d24 chore(tx-validation): remove redundant validate methods (#16929) 2025-06-19 10:21:57 +02:00
Alexey Shekhirin
67e3c11135 perf(trie): ParallelSparseTrie::get_changed_subtries method (#16908)
Co-authored-by: Dan Cline <6798349+Rjected@users.noreply.github.com>
2025-06-18 22:51:10 +00:00
Federico Gimenez
57281834ec feat(test): rewrite test_engine_tree_buffered_blocks_are_eventually_connected using e2e framework (#16830) 2025-06-18 21:25:48 +00:00
Matthias Seitz
c0c2eeaa36 chore: remove unused approx_capacity_get_pooled_transactions_req (#16907)
Co-authored-by: Claude <noreply@anthropic.com>
2025-06-18 21:24:03 +00:00
Dan Cline
b5f5a3a069 chore(net): document test_trusted_peer_only, fix incoming local_addr (#16925) 2025-06-18 21:22:26 +00:00
Matthias Seitz
fea711e7de deps: update alloy dependencies to latest patch versions (#16922)
Co-authored-by: Arsenii Kulikov <klkvrr@gmail.com>
2025-06-18 23:23:27 +02:00
Dan Cline
8bcf1906f6 chore(engine): add log showing which root algorithm is being used (#16924) 2025-06-18 22:55:44 +02:00
Dan Cline
dbe828546d chore(trie): add more stubs for ParallelSparseTrie (#16918) 2025-06-18 19:53:39 +00:00
FT
5cbb1f650b fix: typos in documentation and source code (#16916) 2025-06-18 21:51:13 +02:00
Matthias Seitz
de56409a51 chore: add missing receipts69 handling (#16913) 2025-06-18 21:50:39 +02:00
Matthias Seitz
d9512e2ca6 docs: improve transaction-related trait documentation (#16920) 2025-06-18 21:46:42 +02:00
cakevm
9d7f0b2e2b feat(alloy-provider): stub out required trait implementations (#16919) 2025-06-18 19:30:45 +00:00
Dan Cline
5f45e30025 docs(trie): mention that SparseSubtrie path is a full path (#16917) 2025-06-18 18:30:50 +00:00
Matthias Seitz
2fa02b7931 fix: allow eth69 block propagation (#16915) 2025-06-18 17:50:34 +00:00
Femi Bankole
e3a78c01e1 feat: load KZG settings on EthTransactionValidator startup (#16889) 2025-06-18 17:22:06 +00:00
Matthias Seitz
da42c0c582 fix: prevent invalid range in fee_history when newest_block is pending (#16910)
Co-authored-by: Claude <noreply@anthropic.com>
2025-06-18 17:11:28 +00:00
Roman Hodulák
f6ad01de4a refactor(rpc): Delegate FromConsensusTx conversion for EthereumTxEnvelope to alloy (#16909) 2025-06-18 16:34:22 +00:00
Soubhik Singha Mahapatra
a86e18fa1b chore: added all version const (#16880)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-06-18 16:02:14 +00:00
Brian Picciano
96c7381932 feat(trie): Embed a SparseSubtrie into the ParallelSparseTrie as its upper trie (#16905) 2025-06-18 15:48:27 +00:00
Alexey Shekhirin
8d8d197466 feat: sparse trie update benchmarks (#16748) 2025-06-18 15:28:00 +00:00
Matthias Seitz
e81747371d docs: improve reth-primitives-traits documentation (#16870) 2025-06-18 15:23:57 +00:00
Alexey Shekhirin
9002d3a203 feat(trie): sparse subtrie type (#16903) 2025-06-18 15:12:40 +00:00
Alexey Shekhirin
d25b11fd77 chore: add @mediocregopher to trie codeowners (#16904) 2025-06-18 15:09:44 +00:00
Dan Cline
9bb5558616 feat: add from_root for ParallelSparseTrie (#16865) 2025-06-18 14:28:44 +00:00
Alexey Shekhirin
d29f83e563 feat: add newPayload throughput and total gas charts to Grafana (#16901) 2025-06-18 14:26:47 +00:00
Ashutosh Varma
8758d82456 feat: add abstractions for permit in metered channel (#16882) 2025-06-18 16:23:57 +02:00
0xNarumi
21cf573d97 fix: move bytecode_by_hash from StateProvider to a dedicated BytecodeReader (#16886) 2025-06-18 13:29:11 +00:00
Krishang Shah
04f09f9208 chore(tx-pool): use max_blobs_per_tx in validating eip4844 txs (#16888)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-06-18 13:24:01 +00:00
Roman Hodulák
95cd15e595 perf(era): Skip download if ERA file with verified checksum exists (#16804) 2025-06-18 13:20:13 +00:00
Ishika Choudhury
7c0e95bd37 feat: added experimental eth_sendrawtransaction endpoint (wip) (#16683)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-06-18 13:00:59 +00:00
Alessandro Mazza
5437d2614d test: add walk_dup test with not existing key (#16562) 2025-06-18 14:47:49 +02:00
Alexey Shekhirin
239aa08923 ci: pin nextest version (#16887) 2025-06-18 14:01:32 +02:00
Matthias Seitz
619c8917ca docs: enhance DebugNode trait documentation (#16872)
Co-authored-by: Dan Cline <6798349+Rjected@users.noreply.github.com>
2025-06-18 08:59:57 +00:00
Krishang Shah
5dc47e149b fix(op-reth, rpc): eth_getBlockReceipts err for genesis block in op-reth (#16879) 2025-06-18 08:54:37 +00:00
Yeongjong Pyo
8dbbe7bda4 fix(test): handle getting the last base_fee_per_gas (#16881) 2025-06-18 08:33:49 +00:00
Shane K Moore
55134742d6 chore: add block gas limit to block added log (#16875) 2025-06-18 00:24:54 +00:00
Odinson
671f0fe566 feat: introduced loop with range of chunks in the incremental root stage (#16178)
Co-authored-by: Dan Cline <6798349+Rjected@users.noreply.github.com>
2025-06-17 21:37:27 +00:00
0xsensei
a808533f35 fix(pipeline): prevent unwind beyond history limits (#16593)
Co-authored-by: Aditya Pandey <adityapandey@Adityas-MacBook-Air.local>
2025-06-17 21:33:58 +00:00
rotcan
cb11ab0475 feat(engine): Compare sorted trie updates in witness invalid block hook#15689 (#16481) 2025-06-17 20:31:08 +00:00
Suyash Nayan
1d01f2a46d feat(trie): Decode storage proofs in parallel tasks (#16400)
Signed-off-by: 7suyash7 <suyashnyn1@gmail.com>
2025-06-17 20:28:07 +00:00
Dan Cline
243a523149 feat: add CLAUDE.md (#16864) 2025-06-17 20:26:10 +00:00
Eric Woolsey
5c6f236e92 feat: use configurable instance label for overview dashboard (#16633) 2025-06-17 18:29:40 +00:00
Brian Picciano
759101d350 feat: introduce script to compare reth-bench latency CSVs (#16862) 2025-06-17 18:29:37 +00:00
Ishika Choudhury
e8d305bcce refactor: used new fn earliest_block_number for ::Earliest tag (#16859) 2025-06-17 18:12:53 +00:00
Josh_dfG
051cef53bc chore: add rpc-compat feature in reth primitives-traits (#16608)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-06-17 16:14:11 +00:00
Alessandro Mazza
58cfd2e02b fix(provider): fix doc comments errors (#16749)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-06-17 15:55:47 +00:00
Eth161dm
7f815bbd8d fix: dead link in tracking-state.md (#16857) 2025-06-17 17:32:33 +02:00
Matthias Seitz
8857c5da03 fix: handle forced propagations (#16845) 2025-06-17 17:32:01 +02:00
Roman Hodulák
d6eb789109 test(chainspec): Test conversion from blob params in genesis config (#16854) 2025-06-17 14:47:34 +00:00
Matthias Seitz
dd1d426555 perf: avoid duplicate peer lookup (#16846) 2025-06-17 14:40:08 +00:00
Roman Hodulák
bcb4fd3711 feat(rpc): Replace manual IntoRpcTx implementation with FromConsensusTx using an additional generic (#16855) 2025-06-17 14:06:49 +00:00
Roman Hodulák
576cef4b13 feat(rpc): Implement FromConsensusTx for generic OpTransaction (#16832) 2025-06-17 13:33:10 +00:00
nekomoto911
71a057bcbe perf: Reduce unnecessary memory copies in compare_storage_trie_updates (#16841)
Co-authored-by: Alexey Shekhirin <5773434+shekhirin@users.noreply.github.com>
2025-06-17 13:27:22 +00:00
Bilog WEB3
a38428eb05 docs: update comment for is_eip7702() method (#16852) 2025-06-17 14:50:04 +02:00
Matthias Seitz
41c93a1134 chore: bump alloy 1.0.11 (#16853) 2025-06-17 14:42:37 +02:00
Matthias Seitz
34ef2a27e0 feat: add RlpBincode helper (#16849) 2025-06-17 14:31:19 +02:00
Matthias Seitz
7bc6939d53 chore: use earliest block number from provider (#16848) 2025-06-17 14:22:18 +02:00
Arsenii Kulikov
5d754195a3 chore: bump alloy (#16828) 2025-06-17 14:19:07 +02:00
Roman Hodulák
820c334a4a feat(era): Delete files outside the range before counting them (#16805) 2025-06-17 09:06:01 +00:00
Federico Gimenez
3096e9520d chore(ci): pin kurtosis-op optimism package (#16842) 2025-06-17 08:59:49 +00:00
Ishika Choudhury
8477d652f6 refactor: replaced update_status with update_block_range (#16840)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-06-17 08:51:10 +00:00
Ishika Choudhury
46780aec28 feat: introduced fn earliest_block_number for BlockNumReader (#16831) 2025-06-17 08:15:06 +00:00
dependabot[bot]
ee2e60c144 chore(deps): bump dawidd6/action-homebrew-bump-formula from 4 to 5 (#16838)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-17 08:13:25 +00:00
dependabot[bot]
ecb92f307c chore(deps): bump dprint/check from 2.2 to 2.3 (#16839)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-17 08:07:07 +00:00
Roman Hodulák
5efd3c0c57 deps: Upgrade op-alloy version 0.18.2 => 0.18.3 and all other deps minor versions (#16835) 2025-06-17 08:06:15 +00:00
Dan Cline
f22c8bdedb feat: add parallel sparse trie skeleton (#16837) 2025-06-16 23:39:16 +00:00
Dan Cline
519cd3e307 perf: reuse accounts trie in payload processing (#16836) 2025-06-16 23:39:03 +00:00
Skylar Ray
b4a0823063 docs: clarify txpool docs (#16833) 2025-06-16 19:20:29 +00:00
Dan Cline
c4da80abaa revert: "perf: reuse accounts trie in payload processing (#16181)" (#16834) 2025-06-16 19:16:49 +00:00
Roman Hodulák
d12a9788d9 feat(rpc): Add FromConsensusTx and implement IntoRpcTx for generic RPC transaction (#16784) 2025-06-16 16:23:09 +00:00
Matthias Seitz
a1a1c0c6bc chore: update op-alloy deps to 0.18.2 (#16827) 2025-06-16 14:18:58 +00:00
Dan Cline
3e0960cb11 perf: reuse accounts trie in payload processing (#16181)
Co-authored-by: Alexey Shekhirin <5773434+shekhirin@users.noreply.github.com>
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
2025-06-16 13:17:00 +00:00
Matthias Seitz
a8522e6a25 fix: validate BlockRangeUpdate message per devp2p spec (#16826) 2025-06-16 13:14:42 +00:00
Odinson
259a443bab feat(network): Added Option for dispatching range updates to remote peer (#16776)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-06-16 12:33:19 +00:00
Matthias Seitz
5f1353c410 feat: add alloy-provider crate for RPC-based state access (#16809)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Federico Gimenez <federico.gimenez@gmail.com>
2025-06-16 11:33:44 +00:00
0xNarumi
fcc935e215 fix: make EthPubSub pub to allow composition and fallback overrides (#16823) 2025-06-16 11:28:24 +00:00
Emilia Hane
68efe4f02d chore(op/cli): Rm unused cli arg rollup.enable-genesis-walkback (#16824) 2025-06-16 10:12:37 +00:00
Arsenii Kulikov
31300e4fde feat: integrate tracing helpers (#16466) 2025-06-16 09:52:21 +00:00
Roman Hodulák
a1d216040e perf(cli): Start from next block based on imported headers in import-era command (#16803) 2025-06-16 09:52:00 +00:00
Matthias Seitz
ad86321afb feat: relax EthereumAddons trait bounds to support generic validators (#16816) 2025-06-16 09:39:57 +00:00
Roman Hodulák
c3caea2047 refactor(era): Remove start_from from EraClient and use it instead of last file index (#16801) 2025-06-16 09:39:02 +00:00
Federico Gimenez
9d391a8b92 feat(test): rewrite test_engine_tree_reorg_with_missing_ancestor_expecting_valid using e2e framework (#16761) 2025-06-16 09:17:52 +00:00
Matthias Seitz
11df5a1d30 feat: re-export MerklePatriciaTrie from reth-ethereum and reth-op (#16814)
Co-authored-by: Claude <noreply@anthropic.com>
2025-06-16 09:16:07 +00:00
Matthias Seitz
b8e4cd3ace fix: change some rpc response codes to eth invalid input (#16745) 2025-06-16 09:15:16 +00:00
Roman Hodulák
e2e54d813e fix(era): Commit all writers and save stages checkpoint per file in import (#16810) 2025-06-16 09:10:50 +00:00
Thomas Coratger
0b2336ddb6 feat(stateless): simplify Database implementation for WitnessDatabase (#16820) 2025-06-16 07:54:26 +00:00
Roman Hodulák
fb477d8c28 feat(examples): Add extension into engine_getPayload RPC method response in custom_node example (#16772) 2025-06-15 09:34:18 +00:00
github-actions[bot]
e0acdb102d chore(deps): weekly cargo update (#16719)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-06-15 09:08:48 +00:00
Matthias Seitz
746e80c819 feat(op): export OpEthApiBuilder from reth-optimism-rpc (#16815) 2025-06-15 10:39:12 +02:00
Soubhik Singha Mahapatra
9dcea7c3fa chore: removed legacy.rs (#16817) 2025-06-15 08:21:29 +00:00
Mablr
bb4bf298ec feat(gas_oracle): implement median-based priority fee suggestion for Optimism (#16794) 2025-06-14 15:29:01 +00:00
Matthias Seitz
82e9988049 docs: document transaction flow into the pool (#16777) 2025-06-14 17:44:57 +02:00
Rez
4e97f48182 feat: make EthereumEngineValidator generic over ChainSpec (#16812) 2025-06-14 14:50:07 +00:00
Matthias Seitz
f057ad5c13 feat: add to_message convenience method to BlockRangeInfo (#16778) 2025-06-14 16:53:08 +02:00
fuder.eth
4a401e1802 fix: typo in test comment (#16811) 2025-06-14 16:50:30 +02:00
Roman Hodulák
381811406e feat(era): Accept anything that converts into Box<Path> as folder of EraClient (#16802) 2025-06-13 20:49:18 +00:00
Matthias Seitz
1f37bddd83 test: add eth69 request/response tests (#16806) 2025-06-13 12:54:16 +00:00
Roman Hodulák
7272b217ab feat(rpc): Implement IntoRpcTx with Ethereum RPC transaction response for Extended (#16783) 2025-06-13 12:49:10 +00:00
Roman Hodulák
8d691ab2c2 feat(examples): Add CustomEngineValidator and its builder to the custom_node example (#16774) 2025-06-13 12:06:53 +00:00
Roman Hodulák
4bc77c729f feat(cli): Create folder and all its parents before import in import-era command (#16800) 2025-06-13 11:45:45 +00:00
Matthias Seitz
71d8420426 chore: bump inspectors 0.24 (#16797) 2025-06-13 11:07:45 +00:00
Roman Hodulák
6f1a32bd04 feat(cli): Create folder in chain specific data directory for import-era command (#16799) 2025-06-13 11:05:51 +00:00
Rez
93e2e5876f feat: make EthereumConsensusBuilder generic over chainSpec (#16793) 2025-06-13 08:44:18 +00:00
Matthias Seitz
f01f31a40e chore: re-export network types (#16789) 2025-06-13 10:30:29 +02:00
Matthias Seitz
217289af6f chore: re-export more op types (#16788) 2025-06-13 05:54:25 +00:00
Federico Gimenez
65b824aef0 chore: pin hive and add test to expected failures (#16790) 2025-06-12 16:40:39 +00:00
Femi Bankole
91977c9d3a feat: introduce 10s timeout when resolving external ips (#16787) 2025-06-12 13:26:53 +00:00
Léa Narzis
9f98728deb feat(net): make bloom filter optional on receipts request (#16718) 2025-06-12 11:48:33 +00:00
Z
e7cbecb0df chore(deps): Upgrade proptest to 1.7 (#16786) 2025-06-12 10:22:44 +00:00
Matthias Seitz
a9bbc9be65 fix: resolve external ip on launch (#16768) 2025-06-12 09:41:48 +00:00
Matthias Seitz
6ddc756489 feat: introduce RPC error for pruned history (#16780) 2025-06-12 09:36:48 +00:00
Roman Hodulák
64fc747bf4 fix(era): Rollback state of StartingStream if fetching file list fails (#16775) 2025-06-12 08:45:40 +00:00
Federico Gimenez
4ade65a57d chore: fix hive unexpected test filter (#16782) 2025-06-12 08:44:48 +00:00
Luis_
1e40b36afc feat: make EthEvmConfig generic over chainSpec (#16758)
Co-authored-by: Arsenii Kulikov <klkvrr@gmail.com>
2025-06-12 00:07:02 +00:00
Udoagwa Franklin
af912c41f3 feat: ensure ETL data directory is cleared on launch (#16770)
Co-authored-by: aolamide <aboyejiolamide15@gmail.com>
2025-06-11 21:26:21 +00:00
Alexey Shekhirin
57e4b919a3 test(trie): fix stored nibbles tests (#16769) 2025-06-11 12:36:55 +00:00
Femi Bankole
bdd0d4384e fix: set parent beacon block to zero hash if parent's beacon block is Some (#16767) 2025-06-11 11:50:36 +00:00
Matthias Seitz
b433561cb7 test: improve ETH69 protocol test coverage (#16759) 2025-06-11 09:53:11 +00:00
Federico Gimenez
663b44a35d chore: update hive expected failures (#16764) 2025-06-11 09:34:36 +00:00
Matthias Seitz
d66bc9a500 feat: add shared local block range info between SessionManager and ActiveSession (#16763)
Co-authored-by: Claude <noreply@anthropic.com>
2025-06-11 09:01:53 +00:00
Roman Hodulák
628f212deb feat(rpc): Add TxEnv conversion function into RpcConverter (#16750) 2025-06-11 08:27:04 +00:00
Roman Hodulák
a410b599f1 ci(sync): Change schedule to run once every 6 hours (#16754) 2025-06-11 06:26:10 +00:00
Roman Hodulák
7e1b80b3b8 ci: Add sync-era workflow that syncs with ERA stage enabled (#16751) 2025-06-10 21:16:44 +00:00
Arsenii Kulikov
1bef0092ee fix: small networking fixes (#16742) 2025-06-10 12:32:18 +00:00
Arsenii Kulikov
895b0e9f82 feat: reintroduce generic executors (#16741) 2025-06-10 10:42:12 +00:00
Udoagwa Franklin
41ed7e0b79 feat: Add info logs for beginning of newPayload requests (#16463) 2025-06-10 09:01:18 +00:00
Matthias Seitz
a201676992 chore: relax eth network builder (#16714) 2025-06-10 08:29:01 +00:00
Matthias Seitz
48deef708a chore: make ethpool alias generic over tx (#16713) 2025-06-10 08:16:24 +00:00
Matthias Seitz
e08a56a564 chore: keep .git folder in docker (#16733) 2025-06-10 07:52:29 +00:00
Federico Gimenez
889004bb6d chore(ci): update hive expected failures (#16737) 2025-06-10 06:11:42 +00:00
Roman Krasiuk
19cac33830 feat: remove preemptive excess blob gas check (#16729) 2025-06-09 14:28:13 +00:00
Roman Hodulák
03fcb332bc feat(rpc): Implement TransactionCompat for generic RPC response builder (#16694) 2025-06-09 09:12:29 +00:00
Federico Gimenez
4760b3286e test: multi-node support in e2e testsuite (#16725) 2025-06-09 08:14:25 +00:00
Odinson
e1a5ecd3bf feat: added closure and relaxed setup_without_evm function (#16720) 2025-06-08 09:21:29 +00:00
Matthias Seitz
b767ffbda2 perf: remove redundant clones (#16716) 2025-06-07 15:11:30 +00:00
Aliaksei Misiukevich
0848739717 feat: fn that replaces and merges network module's endpoints (#16619)
Signed-off-by: Aliaksei Misiukevich <taberlick@gmail.com>
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-06-07 14:51:56 +00:00
Ishika Choudhury
f6dec71dcf feat: added Body::contains_transaction(&TxHash) (#16715) 2025-06-07 12:37:13 +00:00
Matthias Seitz
448ec7da5b chore: re-export cli-util crate (#16711) 2025-06-07 07:25:44 +00:00
Matthias Seitz
f209048bee chore: re-export all types in node mod (#16710) 2025-06-07 09:11:48 +02:00
Matthias Seitz
ae0d6e90da chore: depreacte ethexecutorbuilder (#16709) 2025-06-06 22:50:34 +00:00
Arsenii Kulikov
01a3b03190 chore: remove accidentally commited files (#16708) 2025-06-06 23:18:02 +02:00
Federico Gimenez
1e277921c7 feat(test): rewrite test_engine_tree_valid_and_invalid_forks_with_older_canonical_head_e2e using e2e framework (#16705) 2025-06-06 15:43:29 +00:00
gejeduck
2fccd08845 feat: add block range hint to BlockBodies download request (#16703)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-06-06 13:45:48 +00:00
Roman Hodulák
3218b3c637 feat(stages): Add ERA pre-merge history import stage (#16008)
Co-authored-by: Arsenii Kulikov <klkvrr@gmail.com>
2025-06-06 12:30:54 +00:00
Federico Gimenez
a04bd716a9 feat(test): rewrite test_engine_tree_valid_forks_with_older_canonical_head using e2e framework (#16699) 2025-06-06 10:29:21 +00:00
Alexey Shekhirin
e869762caf chore: revert docker compose volume renames (#16688) 2025-06-06 10:15:11 +00:00
gejeduck
c1b7eb78de feat: introduce supported range to Peer info (#16687)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-06-06 09:02:48 +00:00
Igor Markelov
95c68ae584 feat: add always-process-payload-attributes-on-canonical-head config (#16676) 2025-06-06 08:52:37 +00:00
Federico Gimenez
8e54c4b2a6 feat(test): rewrite test_engine_tree_fcu_reorg_with_all_blocks using e2e framework (#16692) 2025-06-06 08:39:12 +00:00
Arsenii Kulikov
2b283ae83f fix: correctly set sync gap (#16695) 2025-06-06 03:10:18 +00:00
Suyash Nayan
faf6741a60 perf(pipeline): speed up fork unwinding with exponential backoff (#16622)
Signed-off-by: 7suyash7 <suyashnyn1@gmail.com>
Co-authored-by: Arsenii Kulikov <klkvrr@gmail.com>
2025-06-05 21:08:22 +00:00
Arsenii Kulikov
09632905eb fix: ensure that downloader sync gap is only set once (#16693) 2025-06-05 19:44:27 +00:00
Ethan Nguyen
c68e657b69 chore: remove noisy log (#16691) 2025-06-05 17:19:01 +00:00
Ishika Choudhury
81461a8cf9 feat: introduced NoopPayloadServiceBuilder (#16667)
Co-authored-by: Arsenii Kulikov <klkvrr@gmail.com>
2025-06-05 16:36:45 +00:00
Alexey Shekhirin
73a8efca60 perf(engine): enable precompile cache by default (#16685) 2025-06-05 15:42:39 +00:00
Matthias Seitz
285c1acb84 fix: use correct sender_id_or_create as intended (#16684) 2025-06-05 15:41:09 +00:00
Rohit Singh Rathaur
961a7e5930 refactor: replace unbounded HashMap with LruMap in precompile cache (#16326)
Co-authored-by: Ayushdubey86 <dubeyayush1687@gmail.com>
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
Co-authored-by: Alexey Shekhirin <5773434+shekhirin@users.noreply.github.com>
2025-06-05 15:03:18 +00:00
Federico Gimenez
199af6eb7c feat(test): rewrite test_engine_tree_fcu_canon_chain_insertion using e2e framework (#16678) 2025-06-05 14:03:45 +00:00
gejeduck
a09f058184 chore: add remaining snap request trait functions (#16682) 2025-06-05 13:52:17 +00:00
Alexey Shekhirin
81dbfdaddf ci: do not check version for release dry runs (#16679) 2025-06-05 13:29:05 +00:00
Leonardo Arias
a69d30c679 feat: cross-compile to RISC-V (#16426)
Co-authored-by: Alexey Shekhirin <5773434+shekhirin@users.noreply.github.com>
2025-06-05 12:10:44 +00:00
futreall
5e8bcdfe57 docs: Fix typos in documentation and README (#16677) 2025-06-05 10:49:29 +00:00
Federico Gimenez
306d1c3aee chore: extract engine tests to separate file (#16671) 2025-06-05 09:02:09 +00:00
Louis Brown
ee8acd13e6 chore: Add metrics for supervisor RPC error (#16111)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-06-05 08:55:06 +00:00
Federico Gimenez
bad715f286 chore(ci): unpin teku image for kurtosis-op ethereum-package (#16670) 2025-06-05 08:51:05 +00:00
Roman Hodulák
63cc4eccad feat(era): Implement retry policy for HTTP client downloader (#16664) 2025-06-05 08:21:17 +00:00
Hai | RISE
cd521ce79d perf: remove some clones around eth_call (#16665) 2025-06-05 08:16:54 +00:00
Mablr
717449b076 feat(GasOracle): new function to compute median (#16645)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-06-05 10:21:40 +02:00
Suyash Nayan
73b4073363 refactor(txns): inline validation logic and remove validation.rs (#16668)
Signed-off-by: 7suyash7 <suyashnyn1@gmail.com>
2025-06-05 07:58:44 +00:00
Matthias Seitz
1efc666a13 chore: relax primtives types bound (#16663) 2025-06-04 21:29:00 +00:00
Arsenii Kulikov
cf80ef4d86 refactor: simplify --dev setup (#16662) 2025-06-04 20:44:50 +00:00
Odinson
6d5b0ef74e feat: Added Socket Address to the network discovery error (#16659) 2025-06-04 18:23:53 +00:00
Federico Gimenez
19caec3dd9 feat: make RpcAddOns::launch_add_ons_with composable (#16646) 2025-06-04 17:22:58 +00:00
Alexey Shekhirin
a5c09cf4af ci: remove build-release-binaries.yml workflow (#16658) 2025-06-04 16:38:52 +00:00
Alexey Shekhirin
0705df5258 ci: check Cargo version against Git tag in release.yml (#16657) 2025-06-04 15:50:03 +00:00
Suyash Nayan
ad8c2c523a feat(txns): Implement flexible TxType filtering policy in TransactionManager (#16495)
Signed-off-by: 7suyash7 <suyashnyn1@gmail.com>
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
2025-06-04 15:41:46 +00:00
Matthias Seitz
bcd363b4b8 chore: bump version 1.4.8 (#16655) 2025-06-04 15:11:42 +00:00
Soubhik Singha Mahapatra
0a4c21527c chore: used Opstorage impl for optimism (#16594)
Co-authored-by: Arsenii Kulikov <klkvrr@gmail.com>
2025-06-04 14:25:14 +00:00
Veer Chaurasia
89b235040d refactor: unify pending_block fn (#16596) 2025-06-04 13:59:09 +00:00
Matthias Seitz
5eb07896b4 chore: downgrade warn log (#16649) 2025-06-04 13:14:52 +00:00
Muhammed Kadir Yücel
ff404c80e2 feat: trigger resolution task when multiple connection failures occur for a trusted peer (#16652)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-06-04 12:32:58 +00:00
Alexey Shekhirin
2fdae16d5f chore: add Hoodi to docker compose files, fix checkpoint sync URLs (#16653) 2025-06-04 12:32:02 +00:00
Matthias Seitz
c5114b676f chore: bump default gas limit 60M mainnet (#16650) 2025-06-04 12:07:54 +00:00
Matthias Seitz
0201c831d2 perf: use already recovered signer (#16640) 2025-06-04 12:01:26 +00:00
Alexey Shekhirin
78837f9327 ci: use different names for latest and RC Docker jobs (#16654) 2025-06-04 11:59:44 +00:00
Muhammed Kadir Yücel
249fa36432 feat: configure interval for trusted peer DNS resolution (#16647) 2025-06-04 11:41:55 +00:00
Alexey Shekhirin
74bde8adee perf(engine): do not use state root task for non-empty revert state (#16631) 2025-06-04 10:56:03 +00:00
Roman Krasiuk
90d98f3303 feat(txpool): EIP-7825 max gas limit check (#16648) 2025-06-04 10:54:48 +00:00
Femi Bankole
1254438bdd feat: json ChainNotification subscription endpoint (#16644) 2025-06-04 09:58:38 +00:00
Alexey Shekhirin
5106f64f76 fix(engine): recompute trie updates for forked blocks (#16568) 2025-06-04 09:58:19 +00:00
Matthias Seitz
fe5c6d80d5 fix: check additional settings when enabling discv5 (#16643) 2025-06-04 09:25:34 +00:00
Arsenii Kulikov
f7db031f59 chore: make BuildOutcome::map_payload pub (#16636) 2025-06-04 09:19:24 +00:00
Shane K Moore
b6e66a5e9c chore: add minSuggestedPriorityFee check to OpEthapi (#16637)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
2025-06-04 08:30:32 +00:00
Hai | RISE
40ebef4571 feat(OpEngineValidator): pub chain_spec (#16638) 2025-06-04 08:02:30 +00:00
Arsenii Kulikov
66692a7e45 feat: make NewBlock message generic (#16627) 2025-06-03 19:32:12 +00:00
Ishika Choudhury
441210eb7a chore: removed alloy_consensus::Header constraint in setup_without_db (#16623) 2025-06-03 18:42:24 +00:00
Matthias Seitz
780ed8e8e2 chore: include target and latest in error message (#16630) 2025-06-03 18:34:08 +00:00
Federico Gimenez
10caf93f98 refactor: extract common pool setup logic for Eth and Op nodes (#16607)
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
Co-authored-by: Arsenii Kulikov <klkvrr@gmail.com>
2025-06-03 17:31:22 +00:00
Alexey Shekhirin
6532de4f4e chore: update Grafana dashboard (#16575) 2025-06-03 15:34:44 +00:00
Roman Hodulák
e2f162038f feat(rpc): Add Primitives associated type to TransactionCompat trait (#16626) 2025-06-03 15:27:30 +00:00
Léa Narzis
ea7eaf61c3 feat: enable external EngineApi access (#16248)
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
2025-06-03 13:10:36 +00:00
Hai | RISE
5f745ede48 feat(OpAddOns): relax trait bounds for generic engine validators (#16615) 2025-06-03 13:08:56 +00:00
Matthias Seitz
3fc463c8a0 feat: impl compress decompress for customheader (#16617) 2025-06-03 12:39:33 +00:00
Federico Gimenez
b5c01d6530 refactor(e2e): split actions.rs into submodule (#16609) 2025-06-03 12:18:07 +00:00
Matthias Seitz
2726b797b3 fix: wrap forkid entry for eth key (#16616) 2025-06-03 11:51:39 +00:00
Tbelleng
fee128da62 feat: 🐛 fix using latest header (#16614) 2025-06-03 10:46:40 +00:00
Ethan Nguyen
1e69bf4f45 chore: Remove OmmersProvider (#16539) 2025-06-03 10:41:13 +00:00
Matthias Seitz
4686778cb9 chore: make clippy happy (#16611) 2025-06-03 11:03:54 +02:00
Ishika Choudhury
5f7fe6b9e2 feat: fixed missing blocktimestamp in logs subscription (#16598) 2025-06-03 11:03:29 +02:00
Solar Mithril
f2d1863485 feat: fix tx da scaling (#16558) 2025-06-03 11:01:23 +02:00
Léa Narzis
ca9f94cc7b refactor: relax OpAddOns trait bounds (#16582) 2025-06-03 10:57:19 +02:00
Merkel Tranjes
aab4d22786 docs(net): replace 404 link message.rs (#16597) 2025-06-03 10:43:26 +02:00
Roman Hodulák
7ac3be5c96 fix(era): Use the url as the index page for HTTP hosts (#16555) 2025-06-02 18:26:23 +00:00
Alexey Shekhirin
de59ccff94 ci: special treatment for release candidate tags (#16603)
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
2025-06-02 16:02:39 +00:00
Federico Gimenez
e19271b9dd test(e2e): set test_state_root_fallback for deep reorg test (#16573) 2025-06-02 15:56:26 +00:00
Léa Narzis
c8f01de878 refactor: replace generics with Node types for OpExecutorBuilder (#16601)
Co-authored-by: Arsenii Kulikov <klkvrr@gmail.com>
2025-06-02 14:52:58 +00:00
Roman Krasiuk
dc7cb6e667 chore: bump version to 1.4.7 (#16606) 2025-06-02 14:30:27 +00:00
Roman Krasiuk
2d8803a6e0 deps: revm 24.0.1 (#16604) 2025-06-02 12:51:29 +00:00
Roman Hodulák
cf47607050 feat(optimism): Remove bounds on EthChainSpec and Hardforks for ChainSpec in the evm crate (#16576)
Co-authored-by: Arsenii Kulikov <klkvrr@gmail.com>
2025-06-02 12:25:01 +00:00
Arsenii Kulikov
b5864e0bdf chore: simplify NetworkPrimitives (#16556) 2025-06-02 11:45:43 +00:00
Matthias Seitz
256a1eb2e6 chore: rm some clones (#16588) 2025-06-02 02:17:59 +00:00
github-actions[bot]
2382b650d4 chore(deps): weekly cargo update (#16587)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-06-01 10:19:05 +00:00
Matthias Seitz
4764e3538b chore: put dev name last (#16585) 2025-05-31 20:16:14 +00:00
Matthias Seitz
202ad6c004 chore: make clippy happy (#16581) 2025-05-31 13:40:52 +02:00
Ethan Nguyen
95558cb451 chore: Remove Withdrawals Provider (#16538) 2025-05-31 13:28:21 +02:00
Federico Gimenez
aecf5e321c feat(engine): allow configuring tree to always use state root fallback (#16569) 2025-05-30 18:07:01 +00:00
Federico Gimenez
6b5a4b2a66 test: set TreeConfig for nodes in e2e tests (#16572) 2025-05-30 17:52:59 +00:00
Alexey Shekhirin
91f3b9e19b revert: ci: deduplicate changelog in release notes (#16294) (#16563) 2025-05-30 17:48:14 +00:00
Roman Hodulák
5ea2c1b5ae feat(optimism): Remove bounds on EthChainSpec and Hardforks for OpEngineValidator (#16574)
Co-authored-by: Arsenii Kulikov <klkvrr@gmail.com>
2025-05-30 16:16:18 +00:00
Suyash Nayan
d1c293c8f2 feat(e2e): add helper functions for FCU status checks (#16548)
Signed-off-by: 7suyash7 <suyashnyn1@gmail.com>
2025-05-30 14:40:42 +00:00
Soubhik Singha Mahapatra
62f9e12a26 chore: added map helper fns for OpAddOns (#16541) 2025-05-30 12:45:44 +00:00
Alexey Shekhirin
7a59e135f7 feat: bump to 1.4.6 (#16566) 2025-05-30 12:38:39 +00:00
Roman Hodulák
04144c5a4b feat(examples): Replace CustomConsensusBuilder using OpConsensusBuilder with custom generics in custom_node example (#16560) 2025-05-30 12:09:14 +00:00
Alexey Shekhirin
6c8559775e revert: fix(engine): recompute trie updates for forked blocks (#16500) (#16565) 2025-05-30 11:58:40 +00:00
Alexey Shekhirin
91d8ee287b feat: bump to 1.4.5 (#16561) 2025-05-30 09:51:54 +00:00
Femi Bankole
cec8e51628 chore: add serde support for CanonStateNotification (#16557) 2025-05-30 07:42:26 +00:00
Dan Cline
c715dd261b feat(Makefile): add reth-bench and install-reth-bench makefile targets (#16553) 2025-05-30 07:34:01 +00:00
Roman Hodulák
586976f12f feat(examples): Replace redundant type definitions with a CustomPooledTransaction alias in the custom_node example (#16554) 2025-05-30 01:05:10 +00:00
Federico Gimenez
493bbe1a39 feat: configure multiple fallback ubuntu mirrors for win cross-build (#16550) 2025-05-29 21:03:49 +00:00
Roman Hodulák
a3013c6e64 feat(examples): Replace CustomPoolBuilder using OpPoolBuilder with custom generics in custom_node example (#16552) 2025-05-29 20:42:49 +00:00
Roman Hodulák
672d97307a feat(examples): Replace CustomNetworkBuilder using OpNetworkBuilder with custom generics (#16551) 2025-05-29 19:51:02 +00:00
Roman Hodulák
676dc0df34 feat(examples): Replace () with appropriate component builders in custom_node example (#16445)
Co-authored-by: Arsenii Kulikov <klkvrr@gmail.com>
2025-05-29 18:16:16 +00:00
Alexey Shekhirin
e95d2b4635 feat: bump to 1.4.4 (#16549) 2025-05-29 14:56:09 +00:00
Alexey Shekhirin
fd138e8488 ci: use HTTPS and increase timeouts for APT in Dockerfiles (#16546)
Co-authored-by: Federico Gimenez <federico.gimenez@gmail.com>
2025-05-29 14:30:18 +00:00
Ishika Choudhury
20607a5637 chore: added EthStateCache::maybe_block_and_receipts (#16540) 2025-05-29 10:13:58 +00:00
Ethan Nguyen
68862425af feat(rpc): Export Validation Blocklist Hash (#16513) 2025-05-28 22:17:55 +00:00
Federico Gimenez
aedb6b41ea test: add deep reorg e2e test (#16531) 2025-05-28 21:42:00 +00:00
Matthias Seitz
f9f340ac77 chore: add missing receipt type conversion (#16534) 2025-05-28 21:21:35 +00:00
strmfos
b29884e401 docs: improve documentation clarity in pool.rs (#16533) 2025-05-28 21:11:07 +00:00
Matthias Seitz
85f3324fac feat: add helper for obtaining the engineapi launcher (#16517) 2025-05-28 19:38:00 +00:00
Matthias Seitz
b57c9d4f97 chore: relax OpBlock bound (#16522) 2025-05-28 17:54:30 +00:00
Ishika Choudhury
47d623ca21 chore: removed otterscan_api_truncate_input function (#16530) 2025-05-28 17:39:17 +00:00
Roman Hodulák
c10a9e0927 feat(optimism): Add generic Header into OpPayloadPrimitives (#16529)
Co-authored-by: Arsenii Kulikov <klkvrr@gmail.com>
2025-05-28 17:15:59 +00:00
Soubhik Singha Mahapatra
1bb34a91af chore: bumped alloy to 1.0.9 (#16527) 2025-05-28 16:29:26 +00:00
Federico Gimenez
3796807a77 test: add ReorgTo e2e action (#16526) 2025-05-28 16:19:33 +00:00
Alexey Shekhirin
7d024ec2c5 ci: use Wine OpenSUSE repository in Dockerfile for Windows (#16528) 2025-05-28 16:17:54 +00:00
Alexey Shekhirin
1cfe509985 fix(engine): recompute trie updates for forked blocks (#16500) 2025-05-28 14:21:26 +00:00
Federico Gimenez
726f5d81e9 test: add CreateFork e2e action (#16520) 2025-05-28 13:41:57 +00:00
Haardik
a4a9bcaa74 feat(optimism): add metrics to miner to track max DA size throttle values (#16514)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-05-28 12:06:36 +00:00
cakevm
4856424334 feat(rpc): add debug_stateRootWithUpdates method (#16353) 2025-05-28 11:56:06 +00:00
Federico Gimenez
63187a5ed4 test: include remaining actions in e2e ProduceBlocks (#16516) 2025-05-28 10:02:05 +00:00
Matthias Seitz
f52b27fcad chore: include addr in error message (#16515) 2025-05-28 11:56:12 +02:00
Matthias Seitz
9089672839 chore: relax payloadtypes impl (#16507) 2025-05-27 20:38:05 +00:00
Roman Hodulák
01befb2415 feat(optimism): Remove fixed alloy_consensus::Header type from OpPayloadPrimitives (#16505) 2025-05-27 18:07:30 +00:00
Soubhik Singha Mahapatra
2765bdc193 refactor: refactored the fill fn to use Transaction::from_transaction() (#16504) 2025-05-27 18:05:38 +00:00
Matthias Seitz
f7fd3d9579 chore: support tagged block numbers for all ots endpoints (#16501) 2025-05-27 17:52:22 +02:00
Alex Pikme
e7d7856637 docs: Replace GitFlic URL with official GitHub repository for libmdbx (#16496) 2025-05-27 14:47:49 +00:00
Matthias Seitz
f466fa1bb0 fix: support tags for ots_getheaderbynumber (#16497) 2025-05-27 16:43:17 +02:00
Matthias Seitz
2afc80f5ac chore: add debug trace for on_new_head (#16471) 2025-05-27 14:27:44 +00:00
Matthias Seitz
02ace302b4 chore: simplify rpc ro primitive block impls (#16487) 2025-05-27 14:03:32 +00:00
Louis Brown
c36b5433ee chore: Change getBlockDetails arg to BlockNumberOrTag (#16378)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-05-27 15:42:09 +02:00
HxSimo
11c59f1e47 feat(rpc): add EthStateCache::get_receipts_and_maybe_block_exact (#16484)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-05-27 12:59:59 +00:00
Federico Gimenez
04e81de270 test: add receipt support to MockEthProvider (#16494) 2025-05-27 11:08:03 +00:00
Roman Hodulák
4cdaac4919 feat(optimism): Replace OpEthApi requirement of OpReceipt with a DepositReceipt trait bound (#16490) 2025-05-27 10:24:11 +00:00
Roman Hodulák
1f7c3dfffe feat(optimism): Replace OpChainSpec inside OpEngineValidator with a generic (#16489) 2025-05-27 09:50:00 +00:00
Roman Hodulák
27f1098934 feat(optimism): Replace OpTransactionSigned bound on the Block associated to OpEngineValidator with a generic (#16486) 2025-05-27 09:10:15 +00:00
Soubhik Singha Mahapatra
081cc907d8 chore: bump op-alloy to 0.17.2 (#16492) 2025-05-27 09:07:43 +00:00
Roman Hodulák
19b7489518 feat(examples): Add CustomExecutorBuilder and implement ExecutorBuilder for it in custom_node example (#16444) 2025-05-27 03:15:06 +00:00
Matthias Seitz
42bf391c83 revert: "fix: check encoded size" (#16488) 2025-05-27 00:12:53 +02:00
Matthias Seitz
4addc94ae5 chore: relax executiondata bound (#16478) 2025-05-26 15:46:49 +00:00
Arsenii Kulikov
5c5da0b990 fix: propagate --sequencer-headers to SequencerClient (#16474) 2025-05-26 15:32:17 +00:00
Matthias Seitz
19306aec68 chore: add manual clone impl (#16475) 2025-05-26 14:18:32 +00:00
Matthias Seitz
52be0031e8 fix: check encoded size (#16473) 2025-05-26 13:12:29 +00:00
Matthias Seitz
7b49b75a60 feat: add exex feature to op-reth (#16459) 2025-05-26 14:35:59 +02:00
Federico Gimenez
7a7b2819b1 chore: run hive every 6h (#16472) 2025-05-26 14:34:06 +02:00
Ayush Dubey
9ddb8f6d77 refactor: unify versioned_hashes for BlobTransactionSidecarVarient (#16461) 2025-05-26 12:00:44 +00:00
Federico Gimenez
29e4e20f2a feat: add receipts_by_block_range to ReceiptsProvider (#16449) 2025-05-26 11:46:35 +00:00
Bilog WEB3
0c7bd1e5dd fix(db): correct ClientVersion serialization size tracking (#16427) 2025-05-26 10:54:26 +00:00
github-actions[bot]
4df1425fcf chore(deps): weekly cargo update (#16460)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-05-25 10:17:35 +00:00
DaniPopes
2d3f5aa9f7 ci: remove concurrency from bench (#16458) 2025-05-24 17:24:18 +00:00
Ayush Dubey
290ae8265e feat: add HistoricalRpcClient for forwarding legacy RPC requests (#16447)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-05-24 10:30:17 +00:00
Matthias Seitz
9e667da3e8 chore: bump alloy 1.0.7 (#16456) 2025-05-24 11:43:35 +02:00
Matthias Seitz
ba880f9927 chore: rm outdated unreachable patterns (#16457) 2025-05-24 11:07:46 +02:00
Veer Chaurasia
7ca286110f refactor: remove reth dependencies and instead use reth_ethereum (#16416)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-05-24 08:35:40 +00:00
Matthias Seitz
f1db19980b chore: add clone impl for engine api types (#16454) 2025-05-24 10:04:10 +02:00
Merkel Tranjes
10900147de docs: added parent_beacon_block_root requirement and corrected build-block (#16453) 2025-05-24 09:26:19 +02:00
Matthias Seitz
ddcd30f400 chore: make clippy happy (#16455)
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
2025-05-24 09:25:50 +02:00
Matthias Seitz
26f84bfcea chore: rm OpPrimitives bound (#16450) 2025-05-23 21:10:41 +02:00
Matthias Seitz
034b3b8c57 chore: simplify deposit check (#16452) 2025-05-23 18:23:40 +00:00
Roman Hodulák
2b33b59ed8 refactor(examples): Rename CustomTxEnv => PaymentTxEnv and CustomEvmTransaction => CustomTxEnv (#16443) 2025-05-23 16:04:32 +00:00
kevaundray
24cbfb4943 feat!: Add StatelessTrie abstraction (#16419) 2025-05-23 15:45:55 +00:00
Roman Hodulák
9203916904 feat(optimism): Remove all bounds on BlockAssemblerInput for header (#16442) 2025-05-23 15:21:08 +00:00
Roman Hodulák
badbe3d81d feat(examples): Implement BlockAssembler and BlockExecutor for custom blocks in custom_node example (#16435) 2025-05-23 13:43:00 +00:00
Matthias Seitz
4e6cba3324 feat: add get_recovered_transaction helper (#16436) 2025-05-23 13:21:04 +00:00
Matthias Seitz
ecbdf45654 chore: bump revm and op-alloy (#16429)
Co-authored-by: Ishika Choudhury <117741714+Rimeeeeee@users.noreply.github.com>
2025-05-23 11:22:18 +00:00
Matthias Seitz
b76d4f6617 perf: spawn range query on blocking (#16434) 2025-05-23 11:04:19 +00:00
Federico Gimenez
22a69277b7 ci: run kurtosis every 6h (#16433) 2025-05-23 11:54:00 +02:00
Matthias Seitz
8328faf054 ci: run op-kurtosis every 6hrs (#16432) 2025-05-23 11:39:06 +02:00
Femi Bankole
641f99ffda feat: make max EthMessageID dependent on the EthVersion (#16405)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-05-22 20:02:58 +00:00
Federico Gimenez
29eeb78ad0 feat: relax OpExecutorBuilder type constraints (#16423) 2025-05-22 19:10:58 +00:00
Suyash Nayan
a7080ac1c3 feat(net): Add update_block_range to NetworkSyncUpdater (#16422)
Signed-off-by: 7suyash7 <suyashnyn1@gmail.com>
2025-05-22 19:09:32 +00:00
Alexey Shekhirin
d01658e516 ci: fix system icons width in release.yml (#16420) 2025-05-22 17:32:23 +00:00
Matthias Seitz
42c3b1a4c4 fix: rewrite estimate loop condition (#16413) 2025-05-22 16:19:13 +00:00
Roman Hodulák
5483a8ed97 refactor(examples): Use OpEvm from op-alloy-evm instead of op-revm for CustomEvm in custom_node example (#16417) 2025-05-22 16:14:55 +00:00
Roman Hodulák
b347d9d97b feat(examples): Make CustomEvmTransaction local and implement FromRecoveredTx and FromTxWithEncoded in custom_node example (#16415) 2025-05-22 14:21:03 +00:00
Ayush Dubey
50ab155b8d chore: Implementing get_by_versioned_hashes_v2 for InMemoryBlobStre a… (#16390)
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-05-22 13:01:10 +00:00
Acat
e41d5ff4e1 refactor: use impl IntoIterator for transaction batches and streamline validation calls (#16408) 2025-05-22 11:14:17 +00:00
crStiv
6389242a53 fix: grammar in multiple files (#16403) 2025-05-22 11:10:41 +00:00
Solar Mithril
70dab9f70d feat: fix tasks metrics (#16406) 2025-05-22 13:11:09 +02:00
kevaundray
9060b6eb94 chore: Add ClientInput struct to reth-stateless (#16320) 2025-05-22 10:50:04 +00:00
Federico Gimenez
877c16aa8d feat: relax OpEthApiBuilder type constraints (#16410) 2025-05-22 10:34:55 +00:00
Suyash Nayan
9a1e4ffd7e feat(tasks): enable graceful shutdown request via TaskExecutor (#16386)
Signed-off-by: 7suyash7 <suyashnyn1@gmail.com>
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-05-22 10:27:26 +00:00
Acat
6cf363ba88 fix(RPC): Ensure eth_getTransactionCount returns correct nonce for 'pending' tag (#16407) 2025-05-22 12:37:34 +02:00
Roman Hodulák
6c6bfb52bb feat(examples): Implement EvmFactory for CustomEvm in custom_node example (#16404) 2025-05-22 10:13:08 +00:00
Shane K Moore
e4212a4028 chore: eth69 status message support (#16099)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-05-22 10:08:26 +00:00
Denis Kolodin
f18273fb55 feat: configure tracing layers (#16126)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-05-21 22:13:41 +00:00
Arsenii Kulikov
27609ceda2 fix: forward sequencer error (#16401) 2025-05-21 16:50:35 +00:00
Federico Gimenez
6772ed8c1e feat: relax OpEthApi type constraints (#16398) 2025-05-21 15:49:51 +00:00
kevaundray
3bf1110403 feat: Genericise stateless_validation API so that it is not fixed to Eth types (#16328)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-05-21 15:36:31 +00:00
Emilia Hane
73fd146267 chore(book): Bump alloy-hardforks and alloy-op-harfroks (#16300) 2025-05-21 14:44:23 +00:00
Roman Hodulák
1b2883a823 feat(examples): Add CustomEvm for the execution of CustomTransaction in the custom_node example (#16394) 2025-05-21 14:29:39 +00:00
greg
49f6d1e871 fix: InvalidTimestamp display (#16395)
Signed-off-by: Gregory Edison <gregory.edison1993@gmail.com>
2025-05-21 14:26:56 +00:00
Ayush Dubey
2629b49716 chore: Refactoring manual clone for opPoolBuilder (#16392) 2025-05-21 12:52:39 +00:00
Oleg
d6ad30d5f8 chore: fixed broken link (#16365) 2025-05-21 10:09:18 +00:00
Torprius
c5fc1db888 fix(ipc): Improve server code correctness, logging, and doc comments (#16372) 2025-05-21 10:07:54 +00:00
Federico Gimenez
608ed5938b feat: relax OpNetworkBuilder type constraints (#16387) 2025-05-21 09:21:20 +00:00
stevencartavia
452ee50d02 chore: Move subscription_task_spawner into EthPubSubInner (#16383) 2025-05-21 08:24:42 +00:00
Arsenii Kulikov
0b30387eed chore(deps): bump alloy-evm (#16385)
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
2025-05-21 08:23:34 +00:00
Dan Cline
6e88d7fb3b feat(trie): decode proofs in multiproof task (#16098)
Co-authored-by: Alexey Shekhirin <5773434+shekhirin@users.noreply.github.com>
2025-05-20 22:10:04 +00:00
Alexey Shekhirin
a62bde37ca feat(node): bump Hoodi gas limit to 60M (#16379) 2025-05-20 20:24:25 +00:00
Roman Hodulák
f0c1bf5d3c feat(examples): Add CustomTxEnv for EVM that supports conversions from the extended transaction envelope in the custom_node example (#16381) 2025-05-20 19:39:54 +00:00
Roman Hodulák
d7a808873d refactor(examples): Split evm module into submodules in the custom_node example (#16380) 2025-05-20 19:11:54 +00:00
Roman Krasiuk
3f8b3f8a1f feat(txpool): activate osaka in tx validator (#16371) 2025-05-20 15:24:59 +00:00
Roman Krasiuk
5c03c1e717 feat(txpool): properly validate sidecar according to the active fork (#16370) 2025-05-20 15:22:04 +00:00
Roman Hodulák
72ab1d6ee8 refactor(examples): Replace redundant type definitions with a CustomTransaction alias in the custom_node example (#16367) 2025-05-20 14:57:54 +00:00
Roman Hodulák
9919b7a350 feat: Implement conversion from built-in transaction envelopes into Extended (#16366) 2025-05-20 14:56:22 +00:00
Roman Krasiuk
0de50d3b7b feat(txpool): use BlobTransactionSidecarVariant (#16356) 2025-05-20 14:49:10 +00:00
Matthias Seitz
2db8ccf62f chore: re-export node-builder as builder (#16363) 2025-05-20 11:48:49 +00:00
Max Bytefield
d849731aaf feat(stages): reduce index history progress logging frequency (#16290)
Co-authored-by: Alexey Shekhirin <5773434+shekhirin@users.noreply.github.com>
2025-05-20 11:27:16 +00:00
Shourya Chaudhry
3e47b7255b feat: add BlockRangeUpdate message for eth/69 (#16346)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-05-20 10:47:23 +00:00
Alexey Shekhirin
703f679c65 ci: do not trigger release workflow on dry_run* branches (#16361) 2025-05-20 10:12:50 +00:00
Matthias Seitz
fe3653ffe6 chore: bump version 1.4.3 (#16359) 2025-05-20 11:58:59 +02:00
Alexey Shekhirin
7d7fc19dcd ci: check dry_run against true in release workflow (#16360) 2025-05-20 11:57:08 +02:00
AlexYue
5154d5e477 chore: Add configuration option to enable/disable HTTP response compression (#16348)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-05-20 09:35:17 +00:00
Alexey Shekhirin
5e7024f79f ci: do not dry run by default in release.yml (#16358) 2025-05-20 11:38:22 +02:00
Matthias Seitz
4bae5aa3bf chore: bump version 1.4.2 (#16357) 2025-05-20 10:44:29 +02:00
Matthias Seitz
74cd6eb2b8 chore: bump alloy (#16355) 2025-05-20 10:44:06 +02:00
kevaundray
132b2b84a2 chore: RecoveredBlock -> Block (#16321)
Co-authored-by: Roman Krasiuk <rokrassyuk@gmail.com>
2025-05-20 06:51:04 +00:00
Roman Krasiuk
db7610d08d chore: add clippy-op-dev make script (#16352) 2025-05-19 18:12:04 +00:00
Roman Krasiuk
3f9268e2d4 feat(ethereum-primitives): PooledTransactionVariant alias (#16351) 2025-05-19 18:08:18 +00:00
Matthias Seitz
056b5973fd chore: bump inspectors (#16342) 2025-05-19 17:56:49 +00:00
Roman Krasiuk
c2350f02e0 feat(primitive-traits): relax mem size implementations for 4844 txs with sidecars (#16349) 2025-05-19 16:26:51 +00:00
Matthias Seitz
9e8ef8f4ff chore: bump alloy 1.0.4 (#16345) 2025-05-19 14:55:53 +00:00
fantasyup
bc7d8c6bc1 feat(perp): optimize OpTxpool 2718 bytes encoding (#16336) 2025-05-19 11:12:02 +00:00
Federico Gimenez
fcee4811ad chore(hive): disable eth suite of devp2p sim (#16341) 2025-05-19 11:06:27 +00:00
stevencartavia
2aea847433 feat: introduce Receipt69 variant (#15827)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-05-19 09:48:22 +00:00
Federico Gimenez
f9cc241ff5 feat: include SpecId in PrecompileCache keys (#16241) 2025-05-19 09:25:19 +00:00
Femi Bankole
22e9a17a67 chore: Replace reth-provider with reth-storage-api in reth-rpc-api (#16322) 2025-05-19 08:20:21 +00:00
Matthias Seitz
27bcf647df docs: add some docs about TaskExecutor (#16327) 2025-05-18 17:02:43 +00:00
Shourya Chaudhry
916ada90c9 feat: implement IsTyped2781 for reth types (#16325)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-05-18 10:51:23 +00:00
Femi Bankole
8987bce75d chore: fix make-pr lint-codespell errors (#16324)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-05-18 12:29:57 +02:00
github-actions[bot]
4d61d663fb chore(deps): weekly cargo update (#16323)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-05-18 12:29:13 +02:00
Matthias Seitz
b4f9bec852 chore: flatten deps (#16315) 2025-05-17 16:57:52 +02:00
Matthias Seitz
b551dc3057 chore: make clippy happy (#16316) 2025-05-17 06:24:20 +02:00
Matthias Seitz
85775b5a79 chore: rm jsonrpsee features (#16314) 2025-05-17 06:24:06 +02:00
Matthias Seitz
ca39e18f52 chore: add 7702 to announced (#16312) 2025-05-16 17:13:27 +00:00
Acat
814d8bfe3c refactor(mempool): Refactor transaction validation to use batch interface (#16189)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-05-16 16:38:59 +00:00
Louis Brown
8afbc19083 chore: Mark into_recovered_unchecked as deprecated (#16283) 2025-05-16 16:16:45 +00:00
Matthias Seitz
34591d30ab chore: bump inspectors 0.22.2 (#16311) 2025-05-16 17:59:08 +02:00
fantasyup
fff5ab0e45 feat: introduce PoolTransaction::into_consensus_with2718 (#16303) 2025-05-16 15:01:25 +00:00
Alexey Shekhirin
91e77de80a ci: add OP Reth binaries to release notes (#16298) 2025-05-16 14:41:20 +00:00
Alexey Shekhirin
789351e3ca ci: bump base image for reproducible builds (#16307) 2025-05-16 14:14:56 +00:00
Louis Brown
6f4087e14e refactor: Remove to_subscription_message and update calls (#16305) 2025-05-16 13:48:32 +00:00
Alexey Shekhirin
4f4986cec0 ci: use GITHUB_REF_NAME env var in release.yml (#16302) 2025-05-16 14:47:34 +02:00
Developer Uche
401b88c86b feat: added TransactionValidator::validate_transactions_with_origin (#16238)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
2025-05-16 11:53:48 +00:00
Alexey Shekhirin
585a1cca9d ci: release dry run (#16287) 2025-05-16 11:36:56 +00:00
Suyash Nayan
51596bee0b refactor(trie): pass rlp_buf as a mutable argument to rlp_node (#16243)
Signed-off-by: 7suyash7 <suyashnyn1@gmail.com>
2025-05-16 11:16:25 +00:00
Alexey Shekhirin
9f408b29a3 ci: separate workflow for reproducible release (#16299) 2025-05-16 11:09:49 +00:00
Suyash Nayan
4fb36fb247 refactor(rpc-builder): Use Box<dyn TaskSpawner> for RPC task handling (#16297)
Signed-off-by: 7suyash7 <suyashnyn1@gmail.com>
2025-05-16 11:05:45 +00:00
Alexey Shekhirin
e8bc216130 ci: deduplicate changelog in release notes (#16294) 2025-05-16 09:45:29 +00:00
Matthias Seitz
710a783461 chore: bump inspectors 0.22.1 (#16291) 2025-05-16 11:01:48 +02:00
int88
40cc996db3 test: stale txs could be evicted when maintaining txpool (#16269) 2025-05-16 08:27:33 +00:00
Matthias Seitz
e6ce41ebba chore: release 1.4.1 (#16286) 2025-05-15 21:08:33 +02:00
Alexey Shekhirin
74cbe61447 ci: fix Windows build in release.yml (#16280) 2025-05-15 18:38:18 +00:00
Louis Brown
9027af7164 chore: Construct a SubscriptionMessage with the sink's properties (#16285) 2025-05-15 18:26:50 +00:00
fantasyup
46fbdf0e2d chore: upstream tx_type derive to alloy::TransactionRequest (#16284) 2025-05-15 16:07:33 +00:00
Victor Farazdagi
4d56c9b24d chore: change TxCustom to TxPayment (#16281) 2025-05-15 15:11:09 +00:00
Matthias Seitz
a816c8f02f chore: bump version 1.4.0 (#16261) 2025-05-15 13:38:32 +00:00
Roman Krasiuk
52a7a3bf8d feat(engine): implement engine_getBlobsV2 (#16279) 2025-05-15 13:30:53 +00:00
Matthias Seitz
9fd70b649b chore: bump default gas limit for holesky (#16278) 2025-05-15 13:17:02 +00:00
Matthias Seitz
8e15806030 docs: add note about superchain registry (#16275)
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
2025-05-15 15:04:34 +02:00
Matthias Seitz
bcb893a64b chore: bump alloy 1.0.3 (#16277) 2025-05-15 14:50:22 +02:00
Roman Krasiuk
788a626f86 Rkrasiuk/implement get payload v5 (#16274) 2025-05-15 12:30:01 +00:00
Roman Krasiuk
cf4aebcd6e feat(engine): add osaka engine methods to capabilities (#16272) 2025-05-15 12:09:22 +00:00
Roman Krasiuk
8c98c1ce07 feat(txpool): add methods for retrieving BlobsAndProofsV2 (#16271) 2025-05-15 12:05:53 +00:00
James Niken
b3a2d70fea docs: Fix typos in static-file crate README (#16266) 2025-05-15 11:56:31 +00:00
Roman Krasiuk
ad766c00bc feat(engine): add engine_getPayloadV5 skeleton (#16270)
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
2025-05-15 11:41:19 +00:00
Roman Krasiuk
4cbe87f660 feat(engine): respond unsupported for payload v5 pre-osaka (#16268) 2025-05-15 11:29:33 +00:00
Matthias Seitz
e57992ad1b chore: rename extendedtx to just extended (#16265) 2025-05-15 10:58:23 +00:00
Louis Brown
7b8c0b4df4 refactor: Migrate InvalidInboxEntry to op-alloy (#16260) 2025-05-15 09:57:50 +00:00
Matthias Seitz
1737b8df12 fix: receipts logs arg parsing (#16240) 2025-05-15 09:47:26 +00:00
Emilia Hane
6195c70303 chore(lint): Bumps dep tempfile (#16253) 2025-05-15 09:02:16 +00:00
Matthias Seitz
0ca619755d chore: rm jsonrpsee patch (#16251)
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
2025-05-15 08:56:46 +00:00
Matthias Seitz
359d73dcc8 feat: add from intoiter impls (#16252) 2025-05-15 08:55:59 +00:00
Matthias Seitz
3a5f75a300 perf: replace collect with count (#16246) 2025-05-14 21:48:45 +00:00
0xriazaka.eth
8b4db1ffa3 docs: clarify note on &mut self usage (#16237) 2025-05-14 17:07:12 +00:00
Léa Narzis
b9e218343c refactor: relax OpAddOns (#16180) 2025-05-14 16:59:15 +00:00
Roman Krasiuk
ffbdd97592 feat(engine): add conversions for ExecutionPayloadEnvelopeV5 (#16218) 2025-05-14 16:21:45 +00:00
Ayush Dubey
ccaf7fe7ce chore: de duplicate mainnet deposit contract (#16074) 2025-05-14 16:17:29 +00:00
Louis Brown
836a17de65 feat: Introduce with_signer_ref helper (#16235) 2025-05-14 14:14:19 +00:00
cakevm
3c82dfa496 chore: Replace try_clone_into_recovered with try_into_recovered to avoid unnecessary clone (#16230) 2025-05-14 13:12:56 +00:00
Yeongjong Pyo
3ac3e6ff11 test(e2e): add CheckPayloadAccepted action (#16220)
Co-authored-by: Federico Gimenez <fgimenez@users.noreply.github.com>
2025-05-14 11:29:03 +00:00
Alexey Shekhirin
6c188475fc fix(trie): do not panic when logging the current hash of TrieWalker (#16222) 2025-05-14 10:41:55 +00:00
Veer Chaurasia
eec77e2cd5 feat: add check for osaka activation (#16223) 2025-05-14 10:21:10 +00:00
Veer Chaurasia
e1435350a1 feat: simplify choosing txtype for tx request using .has methods (#16227) 2025-05-14 10:19:59 +00:00
Matthias Seitz
a67202d7ee docs: clarify unit of txfeecap (#16225) 2025-05-14 12:20:25 +02:00
Ayush Dubey
1990286cba chore: Replacing filter id with subscription (#16224)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-05-14 09:36:51 +00:00
Merkel Tranjes
4df06466a0 docs: fix JWT token link (#16221) 2025-05-14 09:06:08 +00:00
Veer Chaurasia
0b3f018175 feat: Integrate Osaka in blob_max_and_target_count_by_hardfork (#16219) 2025-05-14 08:36:12 +00:00
Veer Chaurasia
7722f192c5 fix: handle ForkChoiceUpdate errors with proper rpc error mapping (#16215) 2025-05-14 08:08:40 +00:00
Aliaksei Misiukevich
4122680833 feat: impl of bad_blocks handler (#16209)
Signed-off-by: Aliaksei Misiukevich <taberlick@gmail.com>
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-05-14 07:55:53 +00:00
Z
4e84e42f1e chore(deps): migrate to jsonrpsee 0.25 (#15956)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-05-14 07:41:54 +00:00
Veer Chaurasia
288ce76b53 feat: add func gas_limit_for PayloadConfig (#16210)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-05-14 07:16:43 +00:00
Federico Gimenez
805fb1012c feat: add PrecompileCacheMap::cache_for_address and test (#16197) 2025-05-13 21:22:57 +00:00
Dan Cline
71f009dbc9 feat(trie): add clear method to PrefixSetMut, RevealedSparseTrie, SparseTrieUpdates (#16179)
Co-authored-by: Alexey Shekhirin <5773434+shekhirin@users.noreply.github.com>
2025-05-13 18:45:07 +00:00
fantasyup
b15c1c8fea chore: bump log GetPayload events to debug level (#16196) 2025-05-13 15:39:10 +00:00
Mark Diloff
2c57babead docs: fix typos in observability.md (#16186) 2025-05-13 13:10:57 +00:00
Federico Gimenez
76ae22d72a fix: use different cache instance per precompile (#16191) 2025-05-13 12:42:56 +00:00
Matthias Seitz
197d564c38 chore: interop maintain touchups (#16187) 2025-05-13 10:25:41 +00:00
Matthias Seitz
dfbbc2e0e5 chore: add error when unwind failed on launch (#16188) 2025-05-13 12:25:30 +02:00
Federico Gimenez
a2c1646107 chore(txpool): update comments about prague activation (#16185) 2025-05-13 08:49:48 +00:00
Suyash Nayan
5ac2957d70 refactor(optimism_txpool): Move interop revalidation logic to SupervisorClient stream (#16148)
Signed-off-by: 7suyash7 <suyashnyn1@gmail.com>
2025-05-13 08:11:03 +00:00
Ayush Dubey
e5d59bad7e feat: Adding cronjob for superchain (#16141) 2025-05-13 10:19:58 +02:00
Roman Krasiuk
7ea80f7404 feat(txpool): track osaka activation (#16184) 2025-05-13 08:02:01 +00:00
fantasyup
8829881138 refactor: add alloy_consensus::SignerRecoverable to SingedTransaction supertrait (#16174) 2025-05-13 07:53:18 +00:00
Roman Krasiuk
1af6ed5387 chore(txpool): activate prague by default (#16183) 2025-05-13 07:48:50 +00:00
Arsenii Kulikov
d5e61c71d9 fix: correctly set txtype if blobVersionedHashes is present (#16182) 2025-05-13 07:38:12 +00:00
Matthias Seitz
d485b9ab66 feat: add fns to map engine builders (#16171) 2025-05-12 18:38:08 +00:00
Dan Cline
1f23f088d1 fix(tree): add colon to sparse trie task logs (#16175) 2025-05-12 18:31:31 +00:00
Federico Gimenez
ffd76458a2 chore: extract TreeState to separate submodule (#16172) 2025-05-12 16:28:53 +00:00
Alexey Shekhirin
0dee91f6b3 deps: bump libmdbx to 0.13.6 (#15412) 2025-05-12 16:20:14 +00:00
Alexey Shekhirin
3d48dcc8e5 feat(trie): instrument TrieNodeIter::try_next (#16127) 2025-05-12 16:08:43 +00:00
Federico Gimenez
55f4b0b9f3 chore: update hive expected failures (#16167) 2025-05-12 13:15:36 +00:00
int88
82f458081a test: handle reorg event properly by pool maintaining (#16155) 2025-05-12 11:35:36 +00:00
Suyash Nayan
b90b8d4eac perf(trie): optimize TrieNodeIter by skipping redundant seek (#15841)
Signed-off-by: 7suyash7 <suyashnyn1@gmail.com>
Co-authored-by: Alexey Shekhirin <5773434+shekhirin@users.noreply.github.com>
2025-05-12 11:23:47 +00:00
Alexey Shekhirin
bc9722d9e2 feat(engine): set keep alive for Tokio threads (#16162) 2025-05-12 11:21:48 +00:00
Federico Gimenez
eb6e7f03c9 fix: prevent memory bloat during extended finalization periods (#16157) 2025-05-12 11:20:37 +00:00
Matthias Seitz
96e959ca20 chore: replace filteredParams with Filterset (#16077)
Co-authored-by: James <james@prestwi.ch>
2025-05-12 13:37:06 +02:00
Veer Chaurasia
838bf73ac5 refactor: make gas_limit optional (#16161)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-05-12 11:10:11 +00:00
Matthias Seitz
a12a296eba perf: batch create sender ids (#16134) 2025-05-12 13:11:07 +02:00
Matthias Seitz
6250f65120 perf: dont alloc on delegation limit check (#16135) 2025-05-12 13:10:42 +02:00
Matthias Seitz
e5ce98014a chore: bump alloy 0.15.11 (#16163) 2025-05-12 13:09:54 +02:00
Federico Gimenez
a411d9334e chore: remove redundant NodeTypes bounds (#16160) 2025-05-12 10:11:35 +00:00
Z
96bc7b345d perf: use estimated_compressed_size for DA limiter (#16153)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-05-12 09:43:24 +00:00
Acat
029fa5914c refactor(mempool): Optimize validation task lock duration by moving async fut creation outside lock (#16159)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-05-12 09:32:44 +00:00
Matthias Seitz
3338c5a319 revert: "revert: 2054a37" (#16139)
Co-authored-by: rakita <dragan0rakita@gmail.com>
2025-05-12 08:53:05 +00:00
Hai | RISE
bda7f4a6d5 feat(OpReceipt): add into_receipt (#16156) 2025-05-12 07:54:27 +00:00
github-actions[bot]
b1a1da1062 chore(deps): weekly cargo update (#16150)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-05-11 10:42:05 +00:00
Matthias Seitz
2767ffd3bd chore: phase out reth-primitives (#16151) 2025-05-11 12:41:57 +02:00
Matthias Seitz
4f00ed7bed chore: put op conversions in mod op (#16147) 2025-05-10 10:00:13 +02:00
Matthias Seitz
7982caa05f chore: remove_auths doc (#16137) 2025-05-09 21:15:42 +00:00
Matthias Seitz
2033980076 perf: perform contains check without alloc (#16136) 2025-05-09 20:41:21 +00:00
Ishika Choudhury
bcefb00088 chore: moved OkValidator into txpool behind test-utils feature gate (#16144) 2025-05-09 20:12:44 +02:00
Matthias Seitz
5cb481c691 chore: replace executionwitness with alloy (#16142) 2025-05-09 19:18:15 +02:00
Matthias Seitz
74e7e5f1cf chore: use signedtx trait (#16143) 2025-05-09 16:28:07 +00:00
int88
db885ccae8 test: handle commit event properly by pool maintaining (#16125) 2025-05-09 14:46:55 +00:00
Matthias Seitz
c830d8c852 revert: 2054a37 (#16138) 2025-05-09 15:56:06 +02:00
Ayush Dubey
b36201bf09 feat: Introducing handler for eth_getAccountInfo (#16115)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-05-09 12:44:52 +00:00
Matthias Seitz
8e7684d49d chore: bump op-revm (#16133) 2025-05-09 13:11:59 +02:00
Pana
448e909c50 feat: Add EIP7702 tx handle logic for txpool (#15312)
Co-authored-by: Dan Cline <6798349+Rjected@users.noreply.github.com>
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-05-09 10:55:17 +00:00
Federico Gimenez
2054a37b02 feat: add precompile cache for execution (#15928)
Co-authored-by: Arsenii Kulikov <klkvrr@gmail.com>
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-05-09 09:36:28 +00:00
Afounso Souza
a3c067c2b2 chore: add link to SHA256 article (#16129)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-05-08 19:39:31 +00:00
Femi Bankole
124bd39405 refactor: move ExtendedTxEnvelope to reth-primitives-traits (#16102)
Co-authored-by: Federico Gimenez <federico.gimenez@gmail.com>
2025-05-08 16:32:54 +00:00
int88
c7436a6f33 fix: complete logic of best_transactions_with_attributes (#16024)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-05-08 10:57:42 +00:00
Matthias Seitz
a33da3fc56 chore: skip inserting older blocks (#16101) 2025-05-08 11:28:29 +02:00
Matthias Seitz
70299510a7 chore: bump superchain registry (#16122) 2025-05-08 10:19:53 +02:00
Soubhik Singha Mahapatra
da95e5745e feat: use custom tx in custom-node (#16054)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-05-08 06:35:47 +00:00
Roman Hodulák
1dcb3dcfc0 feat(era): Fetch file list inside EraStream (#16119) 2025-05-08 06:33:52 +00:00
Ishika Choudhury
eaaa22cf39 refactor: added input_mut for otterscan_api_truncate_input (#16114)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-05-07 20:10:56 +00:00
Matthias Seitz
9a9cd830f0 chore: bump alloy 0.15.10 (#16117) 2025-05-07 21:43:49 +02:00
Matthias Seitz
5c07c0e858 chore: pin revm deps (#16118) 2025-05-07 21:29:12 +02:00
Matthias Seitz
e05df0d311 fix: skip nonce check in simulate v1 if no validation (#16109) 2025-05-07 18:55:47 +02:00
Matthias Seitz
ff5028c481 feat: add AuthHandle::noop (#16082) 2025-05-07 17:56:34 +02:00
Matthias Seitz
0af20a3b97 feat: add noop engine Api builder (#16084) 2025-05-07 17:56:18 +02:00
Emilia Hane
240d1b57d2 chore(op-sdk): Move OpPayloadTypes to reth-optimism-payload-builder (#16105) 2025-05-07 14:29:46 +00:00
Matthias Seitz
adb8bdc707 ci: enable arbitrary check (#15500) 2025-05-07 16:18:22 +02:00
Alexey Shekhirin
f1dc684229 feat(trie): walker branch node seeks metric (#16106) 2025-05-07 13:03:30 +00:00
Matthias Seitz
2eec34d7de perf: check receiver count before clone (#16100) 2025-05-07 13:24:13 +02:00
unitezen
3a49e4e539 chore: bump docker lighthouse version for electra (#16103) 2025-05-07 11:02:44 +00:00
Léa Narzis
178b0c1cb5 feat: add command download to download public node snapshots (#13598)
Co-authored-by: joshieDo <93316087+joshieDo@users.noreply.github.com>
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-05-07 09:28:48 +00:00
Matthias Seitz
5c64d59153 feat: add with_disabled_rpc_cache to NodeConfig (#16097) 2025-05-06 19:32:20 +00:00
Emilia Hane
623950bb7e chore(sdk): allow NoopNetwork in NodeAdapater (#16037)
Co-authored-by: Arsenii Kulikov <klkvrr@gmail.com>
2025-05-06 17:59:30 +00:00
Ishika Choudhury
fac562b673 chore: relaxed insp in trace rpc-eth-api (#16094) 2025-05-06 17:14:12 +00:00
kevaundray
41a2d0f005 chore: add more docs to SparseTrie (#15750)
Co-authored-by: Alexey Shekhirin <5773434+shekhirin@users.noreply.github.com>
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
2025-05-06 14:33:48 +00:00
DaniPopes
39305dda1c chore(meta): restrict mdbx vendored attribute (#16092) 2025-05-06 13:48:26 +00:00
Matthias Seitz
af1e93a181 feat: add executor fn (#16090) 2025-05-06 13:02:18 +00:00
kevaundray
3e5c230f4d feat: add stateless crate to expose stateless validation (#15591)
Co-authored-by: Roman Krasiuk <rokrassyuk@gmail.com>
Co-authored-by: Alexey Shekhirin <5773434+shekhirin@users.noreply.github.com>
2025-05-06 12:38:07 +00:00
fantasyup
1e33d4cfe2 fix: check scheduled blob activations (#16088) 2025-05-06 12:09:55 +00:00
Matthias Seitz
c32e8acd22 chore: rm reth-provider from rpc-builder (#16087) 2025-05-06 14:17:16 +02:00
MozirDmitriy
b5c9984fd4 docs: add cross-platform Prometheus & Grafana installation guidance (#15703)
Co-authored-by: Alexey Shekhirin <5773434+shekhirin@users.noreply.github.com>
2025-05-06 11:35:30 +00:00
Federico Gimenez
699b3fde1b chore: remove BlockExecutorProvider trait (#15989)
Co-authored-by: Arsenii Kulikov <klkvrr@gmail.com>
2025-05-06 11:34:37 +00:00
Matthias Seitz
cbdb81069f chore: replace istyped2718 (#16085) 2025-05-06 12:19:50 +02:00
Matthias Seitz
8939d781cf chore: bump op-alloy (#16081) 2025-05-06 11:23:54 +02:00
Emilia Hane
c742097471 chore(op): Clean up SupervisorClient (#16079) 2025-05-06 09:06:24 +00:00
Emilia Hane
5a80efb06e chore: parse supervisor rpc error (#16078) 2025-05-06 08:28:03 +00:00
Matthias Seitz
caa4f133a1 chore: silence warnings (#16076) 2025-05-06 10:28:39 +02:00
Shane K Moore
1c7d8a643b fix: eth cache memory usage (#16075)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-05-06 07:38:41 +00:00
fantasyup
7d2ac84722 chore: bump alloy to 0.15.9, replace reth types with alloy's (#16069)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-05-05 17:47:43 +00:00
Federico Gimenez
c848848f3b chore: update hive expected failures (#16071) 2025-05-05 17:30:59 +00:00
Jonas Bostoen
fdcc4c078d feat(txpool): add authorization list setter to mock transaction (#16068) 2025-05-05 17:28:50 +00:00
Veer Chaurasia
f245708445 refactor(optimism): introduce OpNodeTypes trait to reduce generic repitition (#16048) 2025-05-05 14:00:51 +00:00
Matthias Seitz
094a9fe69e feat: add RpcStateCacheArgs::set_zero_lengths (#16066)
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
2025-05-05 15:24:02 +02:00
Emilia Hane
6b0c01e07e fix(op): canyon check skipped unless cancun active (#16063) 2025-05-05 11:11:30 +00:00
int88
d66d1caed4 fix: update metrics for download_block_range (#16064) 2025-05-05 10:47:06 +00:00
Emilia Hane
bdbefd0003 fix(op-rpc): l2 withdrawals root not included in debug exec witness (#16062) 2025-05-05 10:42:30 +00:00
Matthias Seitz
698e9f05db fix: invalid queued ord (#16061) 2025-05-05 09:48:39 +00:00
kevaundray
53b2cdafee chore: Remove ForkSpec::Unknown and Add ForkSpec::Prague (#16055) 2025-05-05 07:42:59 +00:00
Arsenii Kulikov
1ba12aeeaa chore: remove NoopBlockExecutorProvider (#16060) 2025-05-05 07:08:11 +00:00
Maxim Evtush
e0eaa7605b docs: fix typos and improve comment formatting (#16058) 2025-05-04 16:33:51 +00:00
github-actions[bot]
3a68d53b0e chore(deps): weekly cargo update (#16057)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-05-04 16:21:51 +00:00
Femi Bankole
3089ad9d64 refactor: move FullRpcProvider trait to storage-api crate (#16056) 2025-05-03 19:11:16 +00:00
Matthias Seitz
98132bdd10 chore: touchups (#16053) 2025-05-03 13:44:52 +02:00
Vaiz_07
77fab5412d feat: Add ExEx example with sanity checks (#15448) 2025-05-03 13:16:37 +02:00
Soubhik Singha Mahapatra
3b3b54132f feat: added support for CustomTx in custom node example (#16021)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-05-03 05:47:05 +00:00
Léa Narzis
1d55c5caf4 feat(stage): add helpers for StageSetBuilder (#16042) 2025-05-03 04:46:52 +00:00
Roman Hodulák
4a6b2837e6 refactor(era): Replace known host URL for ERA files with Ithaca (#16040) 2025-05-02 14:24:56 +00:00
Soubhik Singha Mahapatra
36ef0a80d7 chore: made Envelope: FromTxCompact public (#16038)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-05-02 11:11:44 +00:00
Alexey Shekhirin
be724f92f4 feat(cli): no empty diffs, sort entries, and pretty print in db diff (#16035) 2025-05-02 09:41:52 +00:00
int88
fef37ae8f3 fix: for the priority of tx, Value has a higher priority than None (#16034) 2025-05-02 11:01:37 +02:00
Emilia Hane
4cd714e8d8 chore(op-sdk): Relax trait bounds on TraceApi methods not accessing mempool (#15752) 2025-05-02 08:41:11 +00:00
kilavvy
c91d2cae77 docs: Fix typos and grammar in documentation comments (#16033) 2025-05-02 08:39:17 +00:00
Dan Cline
0933d51deb feat(engine): add instrumented state provider (#15891)
Co-authored-by: Alexey Shekhirin <5773434+shekhirin@users.noreply.github.com>
2025-05-02 06:27:30 +00:00
Alexey Shekhirin
1d17787a3c chore(trie): do not panic in trie cursor subnode Debug impl (#16013) 2025-05-02 06:27:02 +00:00
Arsenii Kulikov
37741fdcbc refactor: execute through EvmConfig in engine + MockEvmConfig (#16025)
Co-authored-by: Federico Gimenez <federico.gimenez@gmail.com>
2025-05-01 19:16:31 +00:00
Frank Iod
03913ca835 chore: update broken link (#16023) 2025-05-01 18:47:55 +00:00
Maximilian Hubert
61a0345ff5 chore: added links (#15475) 2025-05-01 16:09:15 +00:00
Matthias Seitz
0144a8353b chore: extended touchups (#16020) 2025-05-01 15:11:21 +02:00
Emilia Hane
c49b31bb1e chore(sdk): impl FullNetwork for NoopNetwork (#15959)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-05-01 12:32:35 +00:00
Matthias Seitz
324c3b5ad0 chore: replace crypto (#16019) 2025-05-01 11:55:09 +00:00
Ishika Choudhury
a7eacb1396 chore: bumped core to 1.1.0 and alloy to 0.15.7 (#16015)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-05-01 10:30:17 +00:00
kilavvy
8515cdc10e fix: Remove redundant article and add missing apostrophe (#16017) 2025-05-01 10:27:06 +00:00
Soubhik Singha Mahapatra
cc1fb9f881 chore: used IsTyped2718 in ExtendedTxEnvelope (#16016) 2025-05-01 08:32:53 +00:00
Ayush Dubey
d7b15ce1df feat: Introducing support for configuring sequencer client headers (#15991)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-05-01 06:40:14 +00:00
Dan Cline
3358c762f2 chore(ci): update EEST version (#16006) 2025-04-30 22:54:50 +00:00
Alexey Shekhirin
b2b1a3c68c perf(engine): drop sparse trie after task returned result (#16000) 2025-04-30 22:23:19 +00:00
Dan Cline
b93f4c6080 fix(tree): save caches only after prewarm tasks finish (#16011) 2025-04-30 20:12:45 +00:00
Shourya Chaudhry
82c2762124 feat: added gas used metric (#16012) 2025-04-30 17:46:00 +00:00
Alex Pikme
46e123f3ad docs: correction and fix error (#16010) 2025-04-30 16:10:05 +00:00
Arsenii Kulikov
ff04aee216 chore: integrate alloy-evm simplifications (#16009) 2025-04-30 16:01:17 +00:00
Soubhik Singha Mahapatra
412dab238e feat: added IsTyped2718 trait for Envelope (#16004) 2025-04-30 17:25:25 +02:00
Ayush Dubey
4d46962a65 chore: Adding metric feature gate (#15971)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-04-30 12:31:02 +00:00
Alex Abdugafarov
b5149d0e15 fix: ipc provider building ws instead (#16005) 2025-04-30 12:20:12 +00:00
Matthias Seitz
7049b1b470 docs: clarify blocks for pipeline run (#16002)
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
2025-04-30 11:21:19 +00:00
FT
86c552c011 docs: update docs (#15997) 2025-04-30 08:00:48 +00:00
Vaiz_07
ca78d66620 feat: parse supervisor RPC errors (#15944) 2025-04-30 07:51:22 +00:00
Soubhik Singha Mahapatra
d960b4b31e chore: relaxed ExtendedTxEnvelope impls (#15993)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-04-29 18:53:21 +00:00
leopardracer
6a9f4c28ee fix: typos in comments (#15938) 2025-04-29 18:52:35 +00:00
Roman Hodulák
9ab57f70e3 feat(era): Implement SHA-256 checksum validation for local directory (#15987) 2025-04-29 14:50:43 +00:00
Matthias Seitz
762880e494 docs: add engine API builder docs (#15988) 2025-04-29 15:10:06 +02:00
Soubhik Singha Mahapatra
e8e3aed736 chore: made extended Tx Envelope more flexible (#15970)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
2025-04-29 12:22:21 +00:00
Matthias Seitz
9e2043091f docs: add more docs for RpcAddsOns (#15986)
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
2025-04-29 12:01:01 +00:00
Emilia Hane
1a548e6b99 perf(op-tx-pool): Split up tx validation to stateless and stateful checks (#15843) 2025-04-29 11:39:57 +00:00
Ayush Dubey
d69c42402f chore: Relaxing ChainSpecParser bound in Commands impl (#15976)
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-04-29 09:20:15 +00:00
Roman Hodulák
1773e30505 feat(cli): Add command for importing era files from URL (#15978) 2025-04-29 09:11:50 +00:00
Veer Chaurasia
22696a1c12 refactor: move statereader to storage-api (#15969) 2025-04-29 07:55:15 +00:00
Pana
91defb2f9c refactor: move ethereum-forks crate into ethereum folder (#15983) 2025-04-29 07:54:25 +00:00
Léa Narzis
c19dfe9531 chore: rename crate era-import to era-utils (#15980) 2025-04-28 20:07:28 +00:00
Arsenii Kulikov
86adfac165 fix: avoid cloning receipts on verification for op (#15979) 2025-04-28 19:53:10 +00:00
Arsenii Kulikov
2dd811cc69 chore: relax some eth component bounds (#15977)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-04-28 18:00:09 +00:00
Roman Hodulák
6c94e9090d feat(era): Implement SHA-256 checksum validation (#15962) 2025-04-28 17:22:39 +00:00
Matthias Seitz
2f85dcc4e0 chore: use default init (#15975) 2025-04-28 16:34:50 +00:00
Soubhik Singha Mahapatra
eda2b09132 feat: added eth api exex (#15949)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-04-28 15:10:05 +00:00
int88
babe65c197 chore: use TransactionGenerator uniformly and remove rng_transaction (#15965) 2025-04-28 12:05:54 +00:00
Emilia Hane
223ebddb8f fix(observability): Delegate DatabaseMetrics call to wrapped type T in Arc<T> impl (#15963) 2025-04-28 10:39:36 +00:00
Soubhik Singha Mahapatra
8c2277b2d5 feat: added an example of using an RPC with an ExEx (WIP) (#15853)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-04-28 10:05:12 +00:00
Harrish Bansal
3c0ff9c86b refactor: Remove redundant consensus call (#15946) 2025-04-28 09:56:29 +00:00
Veer Chaurasia
b6aa8e78f1 feat: Replace CacheServiceUnavailable variant with a dedicated error variant (#15950) 2025-04-28 09:51:49 +00:00
DaniPopes
a58f09c00d docs: always use nextest (#15957)
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-04-28 09:51:07 +00:00
Ayush Dubey
58ec4b1153 feat: Removing geth-tests and serial_test (#15960) 2025-04-28 07:43:56 +00:00
github-actions[bot]
cae7448987 chore(deps): weekly cargo update (#15951)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
2025-04-27 08:53:48 +00:00
Matthias Seitz
85f39827fd chore: rm storagelock variant (#15948) 2025-04-26 18:38:02 +02:00
Soubhik Singha Mahapatra
4f59aee872 chore: removed reth-optimism-chain-registry crate (#15943) 2025-04-26 15:24:56 +00:00
int88
70e2fd5fb5 chore: dedup prune_from_subpool (#15945) 2025-04-26 15:17:01 +00:00
Soubhik Singha Mahapatra
0a401d9cbf feat: created BroadcastLatestForkchoice action (#15784)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-04-26 08:11:46 +00:00
Skylar Ray
264334640c docs: update docs (#15851) 2025-04-26 07:38:14 +00:00
int88
23c146bef9 fix: park descendant when delete a pending tx (#15931)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
2025-04-26 06:39:30 +00:00
AJStonewee
091d84eed3 chore: single typo in 'hash_fetching' (#15937) 2025-04-26 06:28:03 +00:00
Ishika Choudhury
dd997e0705 feat: Introduce Block::into_ethereum_block to Block trait (#15940)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
2025-04-26 06:22:02 +00:00
Veer Chaurasia
1775cc4269 refactor: remove outdated chain::split function (#15935)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-04-26 06:20:16 +00:00
Matthias Seitz
59b717e8f4 chore: use spare capacity (#15932) 2025-04-25 19:00:15 +00:00
Hai | RISE
8bba80e565 perf(rpc): clone less when building block response (#15624) 2025-04-25 18:35:39 +00:00
Z
27f8584ad8 feat: support engine_newPayloadV4 in benchmarker (#15924) 2025-04-25 17:33:12 +00:00
Harrish Bansal
82d6505948 refactor: remove validate_header_with_total_difficulty (#15903) 2025-04-25 13:38:29 +00:00
Ayush Dubey
0253bad654 chore: Adding warning log for empty MPT root as withdrawals_root post-Isthmus (#15925)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-04-25 13:26:15 +00:00
Matthias Seitz
987a94ed33 chore: bump sse (#15926) 2025-04-25 13:14:36 +02:00
Ayush Dubey
cef7febf0b feat: Introducing ValidationApiError into structured JSON-RPC error responses (#15901)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-04-25 10:10:32 +00:00
cakevm
5810f31b6c chore(transaction-pool): make NoopTransactionPool generic over EthPoolTransaction (#15923) 2025-04-25 09:51:51 +00:00
Roman Hodulák
fab0d81a97 feat(cli): Add import-era CLI command (#15882) 2025-04-25 08:54:37 +00:00
Ayush Dubey
f3b2e4fcd0 chore: moving header sync gap provider to storage api crate (#15921) 2025-04-25 08:53:40 +00:00
nk_ysg
e0a300ea07 perf: opt EngineApiTreeHandler::insert_block_inner rm clone (#15385)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-04-25 08:27:39 +00:00
Ayush Dubey
220441c12f feat: Introduces sequencer metrics for transaction forwarding (#15910)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-04-25 07:05:27 +00:00
Hai | RISE
7a4a30f49f chore: fix misleading name (#15920) 2025-04-25 07:02:08 +00:00
Ishika Choudhury
c867812793 feat: exposed EvmConfig to PayloadServiceBuilder (#15887)
Co-authored-by: Arsenii Kulikov <klkvrr@gmail.com>
2025-04-25 01:29:01 +00:00
floor-licker
79898f1756 feat: add split_ref method to SealedHeader (#15917) (#15918) 2025-04-25 00:56:46 +00:00
Emilia Hane
a7435bede0 chore(deps): 2024 edition syntax fixes (#14731) 2025-04-24 21:34:26 +00:00
Roman Hodulák
a3fff5cf6e feat(era): Add era stream from local directory (#15914) 2025-04-24 18:57:44 +00:00
FT
cefac14a28 chore: fix typo and remove redundant article in comments (#15915) 2025-04-24 18:42:07 +00:00
Soubhik Singha Mahapatra
26e467442c chore: simplified cli imports in examples (#15904) 2025-04-24 18:30:07 +00:00
Léa Narzis
70c5d12b4b test(era): finalize reth era testing tour. (#15595)
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
2025-04-24 18:27:56 +00:00
int88
dd4aa1a85b test: complete local_senders_tracking (#15912) 2025-04-24 14:40:06 +00:00
Matthias Seitz
0c7518205b chore: bump alloy 0.15.5 (#15913) 2025-04-24 14:39:24 +00:00
Matthias Seitz
bf59f5816c docs: add docs about CachedReads (#15905)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: DaniPopes <57450786+DaniPopes@users.noreply.github.com>
2025-04-24 15:43:09 +02:00
Matthias Seitz
4d77608be1 feat!: replace TransactionSigned with alloy's (#15768) 2025-04-24 12:17:19 +00:00
floor-licker
cfa49f86ef chore: move HeaderSyncGap type (#15892)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-04-24 11:01:26 +00:00
kevaundray
b757a7bf88 chore: Remove unused write_to_db method in ef-tests (#15902) 2025-04-24 11:00:32 +00:00
Matthias Seitz
c00c09f4c9 chore: use sender_ref (#15898) 2025-04-24 12:13:21 +02:00
Z
1a53b3b632 perf: simplify generated superchain code (#15897) 2025-04-24 08:43:50 +00:00
int88
35f5dac9b0 test: change sender balance when apply update accounts to pool (#15896)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-04-24 08:36:30 +00:00
Veer Chaurasia
8e8ec019df refactor(storage-api): move statewriter trait to storage-api crate (#15894)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-04-24 08:36:02 +00:00
Matthias Seitz
ddba222c08 chore: make clippy happy (#15895)
Co-authored-by: Federico Gimenez <federico.gimenez@gmail.com>
2025-04-24 08:06:06 +00:00
Shane K Moore
94723cacb3 chore: simplify op chainspec parser (#15888) 2025-04-23 19:52:15 +00:00
Matthias Seitz
9526849c14 chore: add update_db_with_and_check (#15885) 2025-04-23 19:05:01 +02:00
Danyal Prout
0a4a883923 chore(metrics): summable reth_info value (#15884) 2025-04-23 16:32:26 +00:00
Ishika Choudhury
d4c04f6826 feat: added support for --debug.rpc-consensus-ws (#15858) 2025-04-23 14:26:31 +00:00
Matthias Seitz
5197a72c56 chore: relax more default (#15880) 2025-04-23 16:23:49 +02:00
Dan Cline
f466e24bc4 fix(ci): install cargo-cache in reproducible build action (#15873) 2025-04-23 16:07:10 +02:00
Matthias Seitz
a94348d7d0 chore: relax default constraints (#15879) 2025-04-23 13:25:08 +00:00
Arsenii Kulikov
fe3011ffca fix: correctly set extra_data for eth payload builder (#15875) 2025-04-23 12:28:35 +00:00
Matthias Seitz
f5eca39559 chore: bump alloy 0.15 (#15874) 2025-04-23 12:13:16 +00:00
kevaundray
40f0edfc2e chore: Make SparseTrie crate no_std compatible (#15786)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-04-23 11:57:41 +00:00
Arsenii Kulikov
ae3ffb90e4 chore: bump MSRV to 1.86 (#15863)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-04-23 13:55:26 +02:00
kevaundray
9d3509c8ac chore: Explicitly check for failure on expected blocks in ef-tests (#15803)
Co-authored-by: Roman Krasiuk <rokrassyuk@gmail.com>
2025-04-23 11:18:18 +00:00
Matthias Seitz
57f77ac438 fix: fail send_raw_transaction if forwarding fails (#15867) 2025-04-23 10:13:03 +00:00
Pana
67e34b59e1 refactor: move reth-evm crate code into its own crate folder (#15870) 2025-04-23 09:33:26 +00:00
Alexey Shekhirin
7b483b4f8c fix(cli): drop ExEx WAL only if it exists (#15871) 2025-04-23 09:33:17 +00:00
Roman Hodulák
9d9987590f refactor(reth): Extract Cli into ethereum-cli crate (#15857)
Co-authored-by: Harrish Bansal <145403921+Haxry@users.noreply.github.com>
2025-04-23 07:23:12 +00:00
Shane K Moore
211ecb6d91 chore: add superchain enum macro for chainspec (#15861) 2025-04-23 07:10:22 +00:00
Matthias Seitz
a135c4b72c chore: add empty line to display hardforks (#15845) 2025-04-22 22:55:53 +02:00
Mike Jerred
a1bbce8a47 feat: add reproducible build github action (#15569)
Co-authored-by: Dan Cline <6798349+Rjected@users.noreply.github.com>
2025-04-22 20:31:31 +00:00
kevaundray
81942e41be chore: add a method on SparseTrie to check whether a leaf exists (#15758)
Co-authored-by: Alexey Shekhirin <5773434+shekhirin@users.noreply.github.com>
2025-04-22 19:52:54 +00:00
kevaundray
e911208e6f chore: pin crunchy by including it in one of the member crates (#15854)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
Co-authored-by: DaniPopes <57450786+DaniPopes@users.noreply.github.com>
2025-04-22 18:38:17 +00:00
Federico Gimenez
98ae924731 feat(engine): enable prewarming & caching by default (#15764)
Co-authored-by: Alexey Shekhirin <5773434+shekhirin@users.noreply.github.com>
2025-04-22 18:07:38 +00:00
Mateus F. Melo
6d45d5297d chore: rename send_rpc_call into request with pub (#15849) 2025-04-22 15:44:37 +00:00
kevaundray
23cc8f7f51 chore: re-pin crunchy to 0.2.2 after weekly cargo update (#15846) 2025-04-22 15:13:22 +00:00
Roman Hodulák
76633a541d feat(era): Add history import (#15737) 2025-04-22 14:58:49 +00:00
rotcan
ee8d7d00cb feat(engine): Compare sorted bundle states in witness invalid block hook (#15689)
Co-authored-by: Alexey Shekhirin <5773434+shekhirin@users.noreply.github.com>
2025-04-22 13:49:08 +00:00
cakevm
2ab24fe90a feat(optimism): Add support for all Superchain configs and enable their usage (#14562)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-04-22 13:40:07 +00:00
kevaundray
f3715e8a52 chore(ci): Add a usage comment on revert (#15844) 2025-04-22 13:37:16 +00:00
Ishika Choudhury
3b879a1d83 feat: task executor accessible globally (#15360)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-04-22 12:16:29 +00:00
Matthias Seitz
81a8c270d6 test(crates): add comprehensive tests for mock transaction factory and modifications (#15842)
Co-authored-by: tiendn <15717476+tiendn@users.noreply.github.com>
Co-authored-by: Emilia Hane <elsaemiliaevahane@gmail.com>
2025-04-22 12:20:46 +02:00
Morty
cf3240f6ee docs: correct indentation in rpc.rs (#15824)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-04-22 09:53:19 +00:00
Harrish Bansal
701af23fa5 refactor: Simplify HeaderSyncGapProvider trait (#15819)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-04-22 09:40:56 +00:00
fuder.eth
97a1977cee docs: Update witness.rs (#15836) 2025-04-22 09:34:08 +00:00
Will Cory
e238946ded feat: add state override support to eth_createAccessList (#15840)
Co-authored-by: Claude <noreply@anthropic.com>
2025-04-22 08:50:30 +00:00
Arsenii Kulikov
e21da953a2 fix: kurtosis-op job (#15839) 2025-04-22 08:26:37 +00:00
kevaundray
a64ced455c chore: Add reth-primitives to no-std CI checks (#15823) 2025-04-22 02:29:58 +00:00
github-actions[bot]
49b0ca0354 chore(deps): weekly cargo update (#15826)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-04-21 18:02:19 +00:00
Arsenii Kulikov
322fb1e63f fix: always return value for mint field (#15835) 2025-04-21 17:09:52 +00:00
Arsenii Kulikov
18337504dc fix: ignore engine-auth failures (#15838) 2025-04-21 16:32:32 +00:00
kevaundray
f158f295b9 chore: Make reth-ethereum-consensus no_std compatible (#15821)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-04-21 11:32:52 +00:00
Chen Wen Kang
3cd753ee00 test(e2e): add BroadcastNextNewPayload action (#15828) 2025-04-21 11:11:19 +00:00
kevaundray
664efb944b fix: Make reth-evm-ethereum turn off default-features in top level Cargo.toml (#15825) 2025-04-21 13:14:25 +02:00
charlessswang
3f95621703 chore(all): remove duplicate words (#15799)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-04-21 10:57:28 +00:00
kevaundray
05e1ae207b chore: Add reth-revm to no_std CI checks (#15822) 2025-04-21 12:40:46 +02:00
leopardracer
69fdf76560 docs: remove duplicate words (#15820) 2025-04-21 12:35:38 +02:00
Roman Hodulák
7552ad46c5 fix(exex): Remove unneeded mut from exex manager variable (#15830) 2025-04-21 07:03:18 +00:00
kevaundray
f650349a8d chore: add reth-errors to no-std checks (#15815) 2025-04-19 11:53:21 +00:00
Christopher Mooney
1a93f044f3 docs: Fix missing escaped newline (#15816) 2025-04-19 10:30:31 +00:00
Matthias Seitz
a1b8ceea41 docs: some docs on sync gap channel (#15817) 2025-04-19 10:21:12 +00:00
Veer Chaurasia
c148da8bc9 feat(storage-api): move BlockExecutionWriter trait from provider to storage-api (#15798)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-04-19 08:50:44 +00:00
kevaundray
6ef19f403d fix: Check for the maximum allowed gas limit in the block (#15800) 2025-04-19 08:46:09 +00:00
Tomás Andróil
15dfb13a2b fix: added a dedicated test to confirm that serde_json correctly handles JSON strings with leading and trailing whitespace (#15789)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-04-19 08:32:46 +00:00
kevaundray
87d12ed789 chore: Update execution spec tests to v17.0 (#15809) 2025-04-19 08:01:22 +00:00
Arsenii Kulikov
54b2b63f5d fix: use correct params for kurtosis-op (#15813) 2025-04-19 07:59:34 +00:00
Matthias Seitz
2ad858c6ef chore: improve etherscan debug error reporting (#15811) 2025-04-19 10:00:09 +02:00
Arsenii Kulikov
1e4480a7ba fix: pin teku image (#15805) 2025-04-18 15:23:45 +00:00
Ishika Choudhury
b328249ef7 chore: removed TransitionConfigurationExchanged event variant (#15808) 2025-04-18 14:34:02 +00:00
stevencartavia
5cf99b3a8d feat: add support for Eth69 receipts representation (#15619)
Co-authored-by: Arsenii Kulikov <klkvrr@gmail.com>
2025-04-18 14:15:17 +00:00
Roman Krasiuk
b312799e08 fix(evm): custom blob params (#15598)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-04-18 13:20:48 +00:00
Roman Krasiuk
b131b0d5d6 feat(witness): always_include_root_node flag (#15679) 2025-04-18 13:17:00 +00:00
Roman Krasiuk
fdfca34218 chore(trie): trie_type behind flag (#15690) 2025-04-18 13:00:12 +00:00
Ishika Choudhury
b117760f34 chore: removed deprecated endpoint (#15804) 2025-04-18 12:42:59 +00:00
Udoagwa Franklin
792eeae8c0 feat(cli): add bootnode command (#15347)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-04-18 11:44:42 +00:00
0xMushow
eb8102c7c2 feat(transaction-pool): check on disk store in case of blob cache misses (#15225)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-04-18 09:08:19 +00:00
Tomass
5f8d21dc96 docs: remove consecutive duplicate words (#15795) 2025-04-17 19:10:48 +00:00
Matthias Seitz
6f8e7258f4 chore: release 1.3.12 (#15797) 2025-04-17 21:22:10 +02:00
0xMushow
aee484ba82 refactor(block): Inline from_block_with_transaction fn (#15788) 2025-04-17 18:57:20 +00:00
Matthias Seitz
94ee821803 fix: skip isthmus root validation if we dont have the parent state (#15796) 2025-04-17 18:22:43 +00:00
kevaundray
58c72b708a chore: Make reth-errors crate no_std compatible (#15790)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-04-17 17:15:01 +00:00
Ayush Dubey
84fa016c60 feat: Introducing reth_engine_rpc_new_payload_v4 to grafana (#15794) 2025-04-17 17:07:22 +00:00
Roman Krasiuk
3dc17777c8 fix: Revert "feat: add precompile cache for execution" (#15791) 2025-04-17 16:33:17 +00:00
Ayush Dubey
4c17f1a886 feat: MockEthProvider generic over NodePrimitives (#15694)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-04-17 15:03:42 +00:00
kevaundray
308250ef27 chore: enable invalid_blocks tests in EF (#15564) 2025-04-17 14:19:00 +00:00
int88
12e55d0ab1 test: setup once for benchmark_fetch_pending_hashes to avoid excessive losses (#15783) 2025-04-17 11:29:55 +00:00
Ivan
58a20dc972 feat: Add --rollup.sequencer-ws to support WebSocket (#15499)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-04-17 10:30:12 +00:00
and-cb
b4cb1f4a41 chore: Relax the bounds on DBProvider (#15781) 2025-04-17 09:59:15 +00:00
Matthias Seitz
44a695f7aa chore: bump inspectors 0.19.1 (#15780) 2025-04-17 06:18:13 +00:00
Matthias Seitz
e0e85aa10b chore: bump version 1.3.11 (#15776) 2025-04-16 19:52:33 +00:00
Matthias Seitz
bd9a24aa0d chore: bump op alloy 0.14 (#15779) 2025-04-16 20:50:06 +02:00
Federico Gimenez
ddc101f863 chore: set clippy check for const fn to warn (#15777) 2025-04-16 17:59:36 +00:00
Emilia Hane
3bddd3cc8e fix(discv5): ForkId set to head block (#15769)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-04-16 17:06:09 +00:00
Matthias Seitz
56015ce0d8 fix: relax body against validation for isthmus (#15773) 2025-04-16 16:31:45 +00:00
cakevm
ba6720d559 chore(transaction-pool): make price_bump fn public (#15772) 2025-04-16 17:36:15 +02:00
Léa Narzis
12c2dba821 feat: add EthSnapStream (#15684) 2025-04-16 11:45:32 +00:00
Emilia Hane
e6278730dd feat(op-isthmus): Add isthmus mainnet timestamps to op hardforks (#15766) 2025-04-16 10:47:11 +00:00
Matthias Seitz
8572989ab5 feat!: replace OpTransactionSigned with alloys (#15733) 2025-04-16 09:55:07 +00:00
Dan Cline
df8acc5349 feat: add precompile cache for execution (#15536)
Co-authored-by: Federico Gimenez <federico.gimenez@gmail.com>
2025-04-16 09:30:17 +00:00
int88
b1d1199d11 refactor: simplify announcement filter (#15761) 2025-04-16 11:03:41 +02:00
tate
a11d12755d feat: disable EIP-3607 for eth_createAccessList (#15763) 2025-04-16 08:00:56 +00:00
Matthias Seitz
b36fc954d2 chore: bump version 1.3.10 (#15756) 2025-04-15 20:44:09 +02:00
rrrengineer
4850bd5ebc feat: adding cli --rpc.txfeecap flag (#15654)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-04-15 18:30:12 +00:00
Matthias Seitz
a21769686c fix: use a lower backoff duration for trusted or static peers (#15740) 2025-04-15 20:10:58 +02:00
SuddenOnset
cdac901b39 fix: activate Prague in custom-evm example (#15741) 2025-04-15 20:10:42 +02:00
Matthias Seitz
0772f9a98f chore: add serde_as support for TransactionSigned (#15755) 2025-04-15 19:05:12 +02:00
Hunter Z
c79b63876e feat: add config for reserved CPU cores Resolves paradigmxyz/reth#15633 (#15710)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-04-15 12:03:27 +00:00
Matthias Seitz
0c4a4185f0 chore: exempt static peers from removal (#15732) 2025-04-15 13:39:36 +02:00
Matthias Seitz
51cb1046d3 fix(rpc): set code hash in code override (#15738) 2025-04-15 11:15:12 +00:00
Matthias Seitz
ad2ee48a8b fix: to_compact for CompactEnvelope (#15736) 2025-04-15 10:49:30 +00:00
Matthias Seitz
4f58768755 chore: bump revm (#15735) 2025-04-15 12:00:37 +02:00
Matthias Seitz
6f2f78b4e3 fix: make CompactEnvelope equivalent (#15731) 2025-04-15 11:36:55 +02:00
Matthias Seitz
20dcf82afc Revert "feat!: replace OpTransactionSigned with alloys" (#15730) 2025-04-15 10:40:23 +02:00
Tronica
b3ad85a0ab refactor(rpc): eliminate unnecessary cloning in RpcService::call (#15728)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-04-14 16:21:00 +00:00
Alexey Shekhirin
a415f08bb1 deps: bump libmdbx to 0.12.13 (#15413) 2025-04-14 15:12:38 +00:00
Roman Krasiuk
89b209b920 chore(rpc): warn on unimplemented flashbots rpc methods (#15727) 2025-04-14 15:04:55 +00:00
Matthias Seitz
2bfdef73b9 feat!: replace OpTransactionSigned with alloys (#15634) 2025-04-14 14:59:17 +00:00
Roman Hodulák
1e0b433965 feat(era): Add EraStream that downloads all era files (#15613) 2025-04-14 14:09:10 +00:00
Matthias Seitz
00e5b6e01e chore: bump version 1.3.9 (#15716) 2025-04-14 14:37:18 +02:00
Matthias Seitz
60e117a3a9 chore: rm lifetime (#15723) 2025-04-14 13:36:24 +02:00
0xriazaka.eth
8be89080b0 Add metric for supervisor RPC latency (#15570)
Co-authored-by: Emilia Hane <elsaemiliaevahane@gmail.com>
2025-04-14 10:44:51 +00:00
kevaundray
a3b749676c chore: Replace remaining uses of reth_primitives with reth_primitives_traits (#15704) 2025-04-14 09:40:34 +00:00
Matthias Seitz
fe1af71310 chore: unify proof task concurrency consts (#15715) 2025-04-14 09:36:15 +00:00
Alexey Shekhirin
e792efbb22 fix(engine): update cached bytecodes with bundle state (#15676) 2025-04-14 09:26:14 +00:00
Emilia Hane
69437d5a8d chore(op-consensus): Remove redundant module (#15718) 2025-04-14 09:25:55 +00:00
Matthias Seitz
2d0ad30438 chore: bump op-revm (#15714) 2025-04-14 09:22:27 +00:00
Matthias Seitz
74843dcf12 chore: bump alloy-trie (#15717) 2025-04-14 11:29:50 +02:00
Shane K Moore
0dbd8052d8 chore: periodically resolve trusted nodes dns (#15678)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-04-14 09:07:23 +00:00
Emilia Hane
52c3e3cc04 fix(op-interop): incorrect parsing of supervisor_checkAccessList error (#15670) 2025-04-14 08:32:19 +00:00
Varun Doshi
70db898fbf feat: use L2 timestamps for mapped L1 (#15683)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-04-14 08:19:04 +00:00
int88
df6d5dd1dd test: benchmark for fetch pending hashes (#15574) 2025-04-14 07:59:03 +00:00
Matthias Seitz
9f6082982f chore: bump ssz (#15713) 2025-04-14 09:41:17 +02:00
github-actions[bot]
8e4c33e44b chore(deps): weekly cargo update (#15708)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-04-13 17:38:41 +00:00
Soubhik Singha Mahapatra
c73a40ff2a feat: added getter functions for PeerMetadata (#15709)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-04-13 17:35:17 +00:00
kevaundray
5a1cdfd75d chore: Remove TODO (#15706) 2025-04-12 16:04:26 +00:00
int88
f0f32b4a18 refactor: better encapsulation of tx_fetcher for easier testing and refactoring (#15688) 2025-04-12 06:39:29 +00:00
Matthias Seitz
54b0d357f9 chore: rm outdated unreachable (#15700) 2025-04-12 07:44:02 +02:00
0xOsiris
4121fce5e7 feat(net): add transaction gossip policy (#15341)
Co-authored-by: Sagar Rana <sagarrana.pvt@gmail.com>
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-04-11 20:03:02 +00:00
0xMushow
7f11a6f148 fix(book): Web3 JsonRPC incorrect keccak example (#15696) 2025-04-11 13:50:19 +00:00
Emilia Hane
5f33c96841 perf(discv5): Relax peer filter, fallback on source socket for enr missing tcp port (#15267) 2025-04-11 12:56:47 +00:00
Matthias Seitz
0ab297a0e9 feat: add bincode compat to ethereum tx envelope (#15686) 2025-04-11 14:42:53 +02:00
Matthias Seitz
1580c690c9 docs: add op-reth to hardfork checklist (#15687) 2025-04-11 14:42:38 +02:00
Roman Krasiuk
e8c4c623b0 chore(trie): make RevealedNode usable externally (#15691) 2025-04-11 11:38:00 +00:00
Matthias Seitz
3ef965c93a fix: op isthmus activation timestamps (#15685) 2025-04-11 10:12:22 +00:00
stevencartavia
c34bdf37f0 feat: add CLI args for concurrency settings (#15657) 2025-04-11 08:19:05 +00:00
kevaundray
33ddc2861b chore!: Populate the headers field in the ExecutionWitness when calling debug_executionWitness (#15608)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-04-11 07:49:45 +00:00
Yash Atreya
58fe204ff2 chore: alloy 0.14 (#15635)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-04-11 08:28:57 +02:00
Alexey Shekhirin
2563e93d95 perf(trie): reserve space for new proof nodes ahead of time (#15637) 2025-04-10 17:32:25 +00:00
rotcan
c688c845b3 feat(engine): add bytecodes to invalid block hook witness (#15649)
Co-authored-by: Alexey Shekhirin <5773434+shekhirin@users.noreply.github.com>
2025-04-10 17:03:12 +00:00
Ishika Choudhury
ca5a76f6ac chore: changed import for custom-node(examples) (#15662) 2025-04-10 16:16:42 +00:00
Matthias Seitz
3346f5b7fd chore: double check blob gas in header standalone (#15672) 2025-04-10 16:15:43 +00:00
Alexey Shekhirin
e597c3d8bf ci: add revert to allowed PR titles (#15667) 2025-04-10 14:13:50 +00:00
Matthias Seitz
04c61e2151 Revert "feat(engine): enable prewarming & caching by default (#15630)" (#15666) 2025-04-10 16:13:29 +02:00
Matthias Seitz
3fec4fa5bb chore: bump crossbeam channel (#15665) 2025-04-10 15:58:20 +02:00
Ishika Choudhury
652359220b chore: changed import for manual-p2p (#15664) 2025-04-10 15:36:11 +02:00
Soubhik Singha Mahapatra
d67f4ae603 chore: changed import of polygon-p2p (examples) (#15663) 2025-04-10 12:26:45 +00:00
Federico Gimenez
9a151fab54 chore: remove unused evm_config field in EngineApiTreeHandler (#15660) 2025-04-10 12:07:36 +00:00
Soubhik Singha Mahapatra
aa001ef087 chore: changed import of rpc-db (examples) (#15661) 2025-04-10 12:07:01 +00:00
Steven
3cf0d0d75b feat: add no-local-exemptions settings to MaintainPoolConfig (#15651)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-04-10 07:44:24 +00:00
Léa Narzis
f217ec5e9f fix(era1): use framed snap encoding/decoding instead of raw one (#15652) 2025-04-10 05:46:40 +00:00
Ishika Choudhury
558737aa2c chore: changed import for txpool-tracing(examples) (#15650) 2025-04-10 05:36:09 +00:00
Ishika Choudhury
00d4ca9faa chore: changed import for precompile-cache(examples) (#15647) 2025-04-10 05:35:38 +00:00
Soubhik Singha Mahapatra
1894ca8aba chore: changed imports for node-custom-rpc (example) (#15646) 2025-04-10 05:35:06 +00:00
Ishika Choudhury
3c1a063eee chore: changed import for node-event-hooks(example) (#15645) 2025-04-10 05:34:38 +00:00
Soubhik Singha Mahapatra
37d1014cdd chore: changed imports in network-proxy (examples) (#15644) 2025-04-10 05:34:11 +00:00
Ishika Choudhury
5182fe59c1 chore: changed import for network(examples) (#15642) 2025-04-10 05:33:34 +00:00
Soubhik Singha Mahapatra
f16354be88 chore: changed import for custom-payload-builder (examples) (#15641) 2025-04-10 05:29:45 +00:00
Ishika Choudhury
e0a6e05cff chore: changed import for custom-rlpx-subprotocol(examples) (#15639) 2025-04-10 05:28:44 +00:00
Matthias Seitz
d68dd400ae chore: make build eth api async (#15636) 2025-04-10 07:27:54 +02:00
Ishika Choudhury
ab85300ac3 chore: changed import for network-txpool(examples) (#15643) 2025-04-09 15:59:08 +00:00
Alexey Shekhirin
e261a2e205 feat(engine): enable prewarming & caching by default (#15630) 2025-04-09 10:27:05 +00:00
Emilia Hane
73b9294072 chore(lint): Remove redundant lint attributes (#15531) 2025-04-09 10:11:02 +00:00
Matthias Seitz
9239188093 chore: prep alloy TxEnvelope transition (#15628) 2025-04-09 12:09:57 +02:00
Matthias Seitz
c6ba7c6207 chore: add serdebincodecompat to optxenvelope (#15629) 2025-04-09 12:09:44 +02:00
Federico Gimenez
b5de89ba3e test: activate holocene and isthmus in kurtosis-op (#15611) 2025-04-09 08:47:33 +00:00
Matthias Seitz
be5553d71e chore: bump op-alloy (#15626) 2025-04-09 10:58:46 +02:00
Yohan Nelson
add12f9a94 fix!(rpc): wrap call many response in vec (#15622) 2025-04-09 05:19:56 +00:00
Matthias Seitz
491413f3e9 chore: rm bundlestateprovider (#15607) 2025-04-09 07:15:17 +02:00
onbjerg
a5755f72eb fix: use --http.corsdomain for http rpc server (#15620) 2025-04-08 20:16:57 +00:00
Dan Cline
460f8400aa feat: add ability to handle dedicated storage proof result (#15252) 2025-04-08 16:36:00 +00:00
Soubhik Singha Mahapatra
520d7545c1 chore: changed import for custom-inspector (example) (#15610) 2025-04-08 14:30:13 +00:00
Ishika Choudhury
8b52b1e14a chore: changed import for custom-node-components(examples) (#15609) 2025-04-08 14:29:11 +00:00
Matthias Seitz
44ab192899 chore: release 1.3.8 (#15529) 2025-04-08 16:01:44 +02:00
Matthias Seitz
0063aa20b7 fix: pick 1559 fees correctly for dynamic fee (#15605) 2025-04-08 13:20:21 +00:00
Yohan Nelson
dc367ad785 fix: eth_callMany uses vec bundle (#15596)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-04-08 12:08:55 +00:00
Matthias Seitz
a0c7d1cd77 fix: check for missing prio fee in eth simulate (#15601) 2025-04-08 12:45:30 +02:00
Pana
897223d307 fix: typo (#15578) 2025-04-08 09:50:54 +00:00
Soubhik Singha Mahapatra
aea8b06d39 fix: apply default values for transactions (#15488)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-04-08 09:33:32 +00:00
Léa Narzis
16027eace8 feat(era): add Era1Writer (#15577) 2025-04-08 07:53:53 +00:00
Roman Hodulák
fad870e350 feat(evm): Accept executable transaction as the input for block builder (#15524) 2025-04-07 20:39:56 +00:00
Vaiz_07
b52ef3c173 feat: add eth cache helper function (#15589) 2025-04-07 15:32:58 +00:00
Tbelleng
6ae48f8d95 fix: 🐛 Fix gas_limit handle in eth_simulate (#15562)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-04-07 14:51:51 +00:00
Pana
435b8ad982 complete docs of metric crates (#15581) 2025-04-07 14:39:59 +00:00
Dan Cline
4dc1b5c907 perf: spawn prewarming transactions in chunks (#15155)
Co-authored-by: Federico Gimenez <federico.gimenez@gmail.com>
2025-04-07 14:00:34 +00:00
Barajeel
abd8981310 fix: latest_state returning last_valid instead of latest received (#15565)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-04-07 13:18:21 +00:00
kevaundray
8653a471e2 chore: Add pull request title lint (#15357)
Co-authored-by: Dan Cline <6798349+Rjected@users.noreply.github.com>
2025-04-07 11:38:25 +00:00
kevaundray
c3471bf7bf chore: fix doc comment on get_storage (#15503) 2025-04-07 11:37:44 +00:00
Léa Narzis
c605eef1c3 feat(era-e2s): add E2StoreWriter (#15560) 2025-04-07 11:37:42 +00:00
Roman Krasiuk
6b8f5c5a6b feat: Prague mainnet timestamp (#15582) 2025-04-07 10:23:31 +00:00
Alexey Shekhirin
7b60a35823 chore: bump lighthouse and do minor fixes in docker compose (#15587) 2025-04-07 10:10:58 +00:00
Dan Cline
5b8e40bce7 chore: set prewarm concurrency to 64 (#15521) 2025-04-07 09:40:32 +00:00
Soubhik Singha Mahapatra
70a105e209 chore:changed import for custom-engine-types (#15573) 2025-04-07 09:28:16 +00:00
Pana
f5510619b3 update tokio version to 1.44.2 to fix sec issue (#15583) 2025-04-07 09:07:20 +00:00
Ishika Choudhury
dfd838cce0 chore:changed import for custom-evm (#15572) 2025-04-07 11:10:27 +02:00
Léa Narzis
888f0247c3 fix(era): some fix for const + more tests (#15576) 2025-04-07 08:39:41 +00:00
Shane K Moore
7b43c5ee90 chore: add status enum for handshake to support status69 decoding (#15543)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-04-07 08:21:30 +00:00
Matthias Seitz
1e1f0f8e6b chore: update advisories (#15580) 2025-04-07 10:05:42 +02:00
Matthias Seitz
1126ecc8e3 fix: config defaults for eth components (#15552) 2025-04-07 07:33:16 +00:00
DaniPopes
08e4e9b731 chore(benches): remove pprof support (#15575) 2025-04-06 16:41:02 +00:00
jakevin
7c5d2cf4f8 chore: correct typo of set_interop_deadline method in transaction handling (#15563) 2025-04-05 16:48:02 +00:00
Ishika Choudhury
5184d15df2 chore:added transaction-pool and reth-node-core for reth-ethereum and reth-op (#15559)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-04-05 15:42:10 +00:00
Léa Narzis
fcc40f3a4e feat(era- e2store): add read_next_entry + improve tests (#15556) 2025-04-05 14:35:04 +00:00
Soubhik Singha Mahapatra
f1dda7cf35 chore:added revm re-export for reth-ethereum and reth-op (#15561) 2025-04-05 14:27:41 +00:00
taikoon
ca80ea187a chore: clean unused deps (#15557) 2025-04-05 11:07:16 +00:00
Soubhik Singha Mahapatra
b9ebf83672 chore: changed import for custom-beacon-withdrawals (#15554) 2025-04-05 10:37:32 +00:00
Ishika Choudhury
59525452e4 chore: changed imports for custom-dev-node (#15555) 2025-04-05 10:35:08 +00:00
tonis
3904bdff7a docs: Update installation.md hardware requirements (#15553) 2025-04-05 10:32:48 +00:00
Veer Chaurasia
52b6edb2da Remove redundant EngineNodeTypes trait (#15548) 2025-04-05 10:15:56 +00:00
Ishika Choudhury
1b85179880 chore: changed import for beacon-api-sidecar-fetcher (#15546) 2025-04-05 10:15:16 +00:00
Soubhik Singha Mahapatra
b8b75da068 Simplify examples imports for beacon-api-sse (#15549) 2025-04-05 06:39:33 +00:00
Ayush Dubey
19f8070565 Test Cases cut down on reth_ethereum_primitives::Transaction usage (#15397)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-04-04 19:55:24 +00:00
Matthias Seitz
5ff46e8e1a chore: generalize inmemorysize impl (#15539) 2025-04-04 21:28:36 +02:00
Matthias Seitz
b7ce701a4c chore: silence warnings (#15538) 2025-04-04 19:14:34 +00:00
Léa Narzis
344e2e4392 feat: introduce reth-era crate with era1 file types (#15396)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-04-04 18:49:12 +00:00
jakevin
415ff4a570 refactor(tests): consolidate state tests into a single test function (#15491) 2025-04-04 18:18:08 +00:00
Dan Cline
bc80e56413 chore: add test for CachedState and ProviderCaches storage values (#15487) 2025-04-04 18:17:18 +00:00
Federico Gimenez
0a32035cd7 feat(examples): add ConfigureEvm impl for custom-node example (#15520) 2025-04-04 18:16:44 +00:00
Taylor Dettling
3810c58d8d Add PubSub subscribe to custom node rpc example (#15522)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-04-04 16:58:35 +00:00
Matthias Seitz
3a26a28147 fix: blob params parsing and configuring (#15535) 2025-04-04 16:29:42 +00:00
Soubhik Singha Mahapatra
0c4928b9d4 Added txpool cli args for local txs backup (#15533) 2025-04-04 16:24:10 +00:00
Emilia Hane
e5c6de595e chore(lint): Replace allow with expect for dead_code and rm unfullfilled lints (#15530) 2025-04-04 13:32:08 +00:00
Matthias Seitz
1a9562f89b chore: return invalid reward percentiles as invalid params (#15532) 2025-04-04 11:41:41 +00:00
Matthias Seitz
a07064da99 fix: add fcu v1 for op engine (#15526)
Co-authored-by: peerheros <3077263001@qq.com>
2025-04-04 11:29:01 +02:00
Jennifer
6c6fe03712 Trigger kurtosis workflows on tag (#15511) 2025-04-04 08:11:52 +00:00
Léa Narzis
f82b209031 refactor(net): add EthStreamInner for EthStream (#15519)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-04-04 07:42:13 +00:00
0xOsiris
1ba40f3d46 fix: send_rpc_call deserialization (#15523)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-04-04 07:11:19 +00:00
Matthias Seitz
da261094af fix: remove global instance (#15504) 2025-04-03 17:11:42 +00:00
0xsenty
b8b65b3243 fix: incorrect derive_more import (#15514)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-04-03 16:35:11 +00:00
Matthias Seitz
76f6ea23b3 chore: add conversion helper for eth69 (#15512) 2025-04-03 16:25:14 +00:00
Steven
6eb25e4bce feat: handle unknown eth message (#15450)
Co-authored-by: Stefan <6984754+stfnberat@users.noreply.github.com>
2025-04-03 15:10:06 +00:00
Ishika Choudhury
604cc09230 ensured trace_filter has a valid block range (#15473)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-04-03 13:47:38 +00:00
Alexey Shekhirin
48e0ec67d0 perf(trie): cache last hashed entry seek in trie node iter (#15471) 2025-04-03 11:54:04 +00:00
Alexey Shekhirin
ef18f950d3 refactor(trie): introduce SubNodePosition enum (#15420) 2025-04-03 08:33:40 +00:00
Alexey Shekhirin
a755f6bc8f feat(engine): parallel state root fallback metric (#15352) 2025-04-03 08:26:03 +00:00
Matthias Seitz
ed7da87da4 chore: release 1.3.7 (#15485) 2025-04-03 02:35:54 +02:00
Dan Cline
3521c7ae99 fix: set None storage lookup to NotCached (#15484) 2025-04-03 02:35:34 +02:00
Matthias Seitz
60ff71b1ff chore: release 1.3.6 (#15483) 2025-04-03 00:52:16 +02:00
Matthias Seitz
f60f55858c fix: actually override simulated (#15482) 2025-04-02 22:34:03 +00:00
int88
5658b7849f benchmark for blob tx pool truncate (#15461) 2025-04-02 21:55:16 +00:00
kevaundray
db269f3e53 docs: Document double option for get_storage method using enum (#15443) 2025-04-02 20:31:00 +00:00
Matthias Seitz
6b06fdfe1d chore: rm unused warning (#15474) 2025-04-02 19:07:46 +00:00
Federico Gimenez
60867680fd feat(examples): add custom NetworkPrimitives and Networkbuilder to custom-node example (#15468) 2025-04-02 18:37:55 +00:00
jakevin
98692cf1f1 refactor: simplify hardfork determination (#15451) 2025-04-02 18:30:18 +00:00
Matthias Seitz
b6146e32b1 chore: bump version 1.3.5 (#15469) 2025-04-02 18:08:26 +00:00
Matthias Seitz
add505dc39 feat: support simulation in blockbuilder (#15470) 2025-04-02 17:48:05 +00:00
Alexey Shekhirin
500405aa0a feat(trie): node iter metrics (#15438) 2025-04-02 17:33:26 +00:00
Emilia Hane
4109b26f28 fix(op-interop): don't down score peers for invalid interop txns (#15467) 2025-04-02 16:46:38 +00:00
Roman Hodulák
93b9044729 feat(tx): Implement FromTxWithEncoded<TransactionSigned> for TxEnv (#15466) 2025-04-02 16:25:34 +00:00
clabby
caf3a21d2f chore(op-txpool): Update ExecutingDescriptor serialization (#15465) 2025-04-02 15:19:56 +00:00
Federico Gimenez
d3ec6abd08 feat(examples): route engine messages from custom engine api in custom-node example (#15458) 2025-04-02 14:09:58 +00:00
Alexey Shekhirin
7305c9ee0d feat(tree): set multiproof task concurrency independent of Rayon thread pool (#15456)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-04-02 13:31:01 +00:00
Matthias Seitz
cdbb07c8e1 fix: op-reth chain arg (#15457) 2025-04-02 12:47:54 +00:00
santamasa
f11e2eafad chore: fix PoS total difficulty calculation (#15452)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-04-02 10:36:21 +00:00
Federico Gimenez
6f8082af34 feat(examples): add custom engine API to custom-node example (#15436) 2025-04-02 09:38:53 +00:00
Steven
69df27e9b5 feat: add Client trait for snap sync downloader client (#15449) 2025-04-02 09:33:03 +00:00
Dan Cline
40015a821b perf(trie): reduce hashed seeks in TrieNodeIter (#15336)
Co-authored-by: Alexey Shekhirin <5773434+shekhirin@users.noreply.github.com>
2025-04-02 09:04:53 +00:00
Dan Cline
ca862ab985 chore: add more logs to init-state, improve errors (#15446) 2025-04-01 20:55:44 +00:00
Dan Cline
e76e8bf027 chore: removed outdated comment in init-state (#15445) 2025-04-01 20:48:36 +00:00
Matthias Seitz
0c9dd9a27d fix: always set empty request hash after isthmus (#15444) 2025-04-01 20:46:18 +00:00
Odinson
831ad19da8 Removed reth-ethereum-cli from dependencies to dev-dependencies and made necessary changes (#15439) 2025-04-01 19:41:25 +00:00
Dan Cline
83fc1069c9 feat(trie): add metric for time since updates finished (#15442) 2025-04-01 18:48:36 +00:00
VINEET PANT
40bc94decd refactor(optimism/rpc): Use alloy RpcClient in SequencerClient (#15346) 2025-04-01 13:36:06 +00:00
Federico Gimenez
be04b45b20 chore: remove unused deps (#15429) 2025-04-01 09:20:13 +00:00
Emilia Hane
0a56694308 perf(discv5): enhance peer lookup defaults (#15421) 2025-03-31 22:26:17 +00:00
GarmashAlex
33198a8cdf Add detailed documentation for admin_peerEvents and admin_peerEvents_… (#15390) 2025-03-31 19:40:54 +00:00
Matthias Seitz
001249dec7 chore: add alias for ws.origins (#15403) 2025-03-31 19:24:08 +00:00
Matthias Seitz
942200bff4 fix: mark chain as global and update usage (#15409) 2025-03-31 19:13:35 +00:00
Alexey Shekhirin
c4dad3926b fix(engine): fetch account proof on wiped storage (#15415) 2025-03-31 19:09:23 +00:00
Federico Gimenez
6d3f3b510d chore: remove unused deps (#15416) 2025-03-31 19:00:07 +00:00
Alexey Shekhirin
94ff338efd docs(trie): trie node iterat walker check flag (#15418) 2025-03-31 18:37:42 +00:00
kustrun
5ddb704bf5 feat(op-evm-config): Clear technical debt from #15307. (#15417) 2025-03-31 17:35:44 +00:00
Matthias Seitz
1d1bfac59b chore: rm incorrect debug_assert (#15402) 2025-03-31 15:13:16 +00:00
Federico Gimenez
d3e6db7c94 feat: impl SerdeBincodeCompat for ExtendedOpTxEnvelope (#15414) 2025-03-31 15:03:09 +00:00
Femi Bankole
64d3d30aa2 Extend eth state cache with get receipts maybe block (#15391) 2025-03-31 14:14:51 +00:00
Jennifer
3dd681bbb2 Update expected hive failures (#15405) 2025-03-31 11:51:48 +00:00
Emilia Hane
bbc7dd913d fix(op-interop): cross chain tx SafetyLevel utils (#15354) 2025-03-31 11:26:47 +00:00
Ishika Choudhury
9f75602010 more interop metrics (#15388)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-03-31 10:32:38 +00:00
Ayush Dubey
eebda8e103 Add extended op tx envelope transaction type #15328 (#15334)
Co-authored-by: Federico Gimenez <federico.gimenez@gmail.com>
2025-03-31 10:01:51 +00:00
int88
948832d06f integration test: txpool listener could handle queued and invalid event (#15399) 2025-03-31 09:43:55 +00:00
taikoon
409e1db7f2 fix(doc): NodeTypesWithEngine to NodeTypes (#15393)
Co-authored-by: Federico Gimenez <fgimenez@users.noreply.github.com>
2025-03-30 08:43:55 +00:00
nk_ysg
86cc7a8070 replace interop with an AtomicU64 (#15367)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-03-29 13:55:37 +00:00
Vaiz_07
53ec8fdc76 added chain condition and imports (#15386) 2025-03-29 13:27:28 +00:00
Matthias Seitz
46b208ea9d chore: phase out reth-primitives from reth-provider tests (#15384) 2025-03-29 14:30:48 +01:00
Steven
5514dfef32 feat: make instance argument optional (#14389)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-03-29 08:15:34 +00:00
Shane K Moore
e523bc2525 chore: add blob validation histogram metric to tsx pool validation (#15369) 2025-03-29 08:05:23 +00:00
Steven
5021611997 chore: move cross validation into SupervisorClient (#15374) 2025-03-29 07:01:58 +00:00
Vaiz_07
e75b207a4f fn signature removed from signedtransaction (#15331)
Co-authored-by: Federico Gimenez <fgimenez@users.noreply.github.com>
Co-authored-by: Ayush Dubey <61616662+Ayushdubey86@users.noreply.github.com>
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
Co-authored-by: Steven <112043913+stevencartavia@users.noreply.github.com>
Co-authored-by: Léa Narzis <78718413+lean-apple@users.noreply.github.com>
2025-03-29 06:43:46 +00:00
Dan Cline
f7c264d2e5 chore: make state root fallback WARN (#15343) 2025-03-29 06:35:07 +00:00
kevaundray
b400426f78 chore: Iterate each test case in ef-tests in parallel (#15368) 2025-03-29 06:34:23 +00:00
makcandrov
9be2d58758 export LowestAvailableBlocks in reth_provider::providers (#15366) 2025-03-29 06:00:20 +00:00
Matthias Seitz
ebeb8b71cf chore: silence warning in optimized build (#15378) 2025-03-28 21:15:34 +00:00
David Kulman
509b859c7a Removes pin-project from ConnectionListener (#15376) 2025-03-28 20:56:58 +00:00
Matthias Seitz
2c6380c7e0 fix: rm unsound transmute (#15373) 2025-03-28 20:31:40 +00:00
Matthias Seitz
0e2a4c4a87 ci: make nightly dispatch (#15375) 2025-03-28 21:27:50 +01:00
Federico Gimenez
e2e297d77c feat: remove NodeTypesWithEngine trait layer (#15351) 2025-03-28 18:26:55 +00:00
Soubhik Singha Mahapatra
9718e9444a Simplified input truncating (#15364) 2025-03-28 17:25:53 +00:00
clabby
faedf98db3 chore(optimism): Remove interop L1 info transaction variant (#15361) 2025-03-28 16:17:43 +00:00
Matthias Seitz
57dda5e958 chore: bump deps (#15359) 2025-03-28 15:56:42 +00:00
Dan Cline
6260fe94b7 fix(grafana): fix trie input calculation duration panel (#15277) 2025-03-28 13:36:39 +00:00
Alexey Shekhirin
3ea3b68f60 deps: bump alloy-chains (#15356) 2025-03-28 13:28:25 +00:00
iamslown
57549cb9b0 chore: fixed dead link lighthouse-book (#15355) 2025-03-28 13:15:12 +00:00
Sumit
0436a2e867 Feat: add validate_one_with_state implemenation for op and eth validator (#15342) 2025-03-28 12:55:46 +00:00
Solar Mithril
d1ed669a17 POC of interop filtering during block building (#15348)
Co-authored-by: Shane K Moore <41407272+shane-moore@users.noreply.github.com>
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
Co-authored-by: Rupesh Prajapati <77611959+DioBr4nd0@users.noreply.github.com>
2025-03-28 12:35:55 +00:00
Rupesh Prajapati
ceaf968705 Fixes #15321 feat(txpool): properly parse supervisor RPC errors into interop variants (#15323)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-03-28 10:15:40 +00:00
Solar Mithril
81254a2cf5 feat(txpool): monitor pending interop txs (#15313)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-03-28 09:45:03 +00:00
Matthias Seitz
1105535eb4 chore: add warning unused deps (#15340) 2025-03-28 09:27:56 +00:00
Shane K Moore
56df196736 chore: replace reth-provider with reth-storage-api (#15344) 2025-03-28 09:27:19 +00:00
Léa Narzis
dd76b42916 feat(op-rpc): finalize signal_superchain_v1 's endpoint (#15338)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-03-27 21:14:06 +00:00
Steven
30c457843c chore: change default for op cli args (#15333) 2025-03-27 16:41:18 +00:00
Ayush Dubey
9b74831def Extend exex example with optimism node (#15308)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-03-27 14:05:45 +00:00
Federico Gimenez
db7e740fa1 feat: add custom transaction type to custom-node example (#15296) 2025-03-27 12:04:10 +00:00
int88
963d8b95a4 integration test: txpool listener could get replaced event (#15318) 2025-03-27 11:45:30 +00:00
Solar Mithril
9bcd37f2a0 Implement txpool interop support for optimism (#15105)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-03-27 10:40:50 +00:00
Deepak Chaudhary
0df7e0bc2a Refactor Optimism Transaction Validator: Extract OP-Specific Checks & Enable Batch Processing (#14929)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-03-26 22:45:16 +00:00
Håvard Anda Estensen
f96f426449 chore: complete optimism mainnet forkid tests (#8114)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-03-26 22:15:38 +00:00
Sagar Rana
157b77bb5c Function for retrieving Methods for TransportModules by name (#15061)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-03-26 21:11:47 +00:00
Vaiz_07
25216da48e feat: add blob Hit count panel (#15300) 2025-03-26 21:04:18 +00:00
Shane K Moore
90d50903bc chore: replace reth-provider with reth-storage-api in optimism-rpc-crate (#15310) 2025-03-26 20:39:35 +00:00
kustrun
ea001235c2 feat(full-provider): Add Debug trait to FullProvider. (#15307) 2025-03-26 19:21:24 +00:00
Soubhik Singha Mahapatra
c13d025897 Made --rpc.gascap support "max" (#15272) 2025-03-26 17:22:06 +00:00
nk_ysg
bc9b90ce63 chore: fix typos (#15303) 2025-03-26 15:43:35 +00:00
nk_ysg
e6156e4672 chore(storage_api): use map_or_else (#15302) 2025-03-26 15:38:58 +00:00
Olexandr88
4030adbe49 docs: added a link to the bench workflow (#15196) 2025-03-26 14:26:49 +00:00
Frag
d41e38f315 chore: refactor boot_nodes usage to eliminate redundancy (#15258)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-03-26 14:25:50 +00:00
Shane K Moore
b0d55f665c chore: add SignedTransaction trait for OpTxEnvelope (#15250)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-03-26 14:12:05 +00:00
kustrun
4d7806c752 feat(node-type): Make NodeType & impls Clone. (#14997) 2025-03-26 14:02:44 +00:00
nk_ysg
e36d0d65f9 chore: rm unused file (#15293) 2025-03-26 12:39:39 +00:00
Solar Mithril
261eaf0525 Add MaybeInterop trait to the pooled transaction (#15256)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-03-26 11:04:01 +00:00
Veer Chaurasia
2471c3e74b Remove support for loading custom trusted setup (#15290) 2025-03-26 10:37:41 +00:00
Léa Narzis
28fea042c1 feat(reth-optimism-rpc): init endpoint engine_signalSuperchainV1 (#15249)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-03-26 10:35:54 +00:00
int88
abd4470971 add remove logic in integration test of txpool listener (#15285) 2025-03-26 08:55:05 +00:00
Varun Doshi
790b49e00a feat: add opstack specific display_hardforks implementation (#15233)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-03-26 08:50:25 +00:00
Matthias Seitz
0a6b546105 ci: bump ubuntu for windows (#15280) 2025-03-26 07:37:34 +00:00
Matthias Seitz
fb5a6e755d chore: include err in error return (#15279) 2025-03-25 22:56:28 +01:00
Jennifer
29104ecea6 Cleanup dependencies before running new nighly build (#15276) 2025-03-25 19:56:47 +00:00
Ishika Choudhury
0c27c3d9c8 added generate next payload (#15268) 2025-03-25 17:43:57 +00:00
Alexey Shekhirin
ef5ee49fe2 ci: exit early if any of the Hive images fail to save (#15273) 2025-03-25 17:21:16 +00:00
danceratopz
ec74401a1b chore(ci): bump eest release and pin eest simulator versions (#15274) 2025-03-25 17:11:04 +00:00
jakevin
7ab39dce3f refactor: use MAX_CODE_BYTE_SIZE and MAX_INIT_CODE_BYTE_SIZE in revm (#15269) 2025-03-25 15:34:55 +00:00
Sumit
79cd086a53 Fix: check canonical head first (#15101)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-03-25 13:06:56 +00:00
Toki
06453c9553 Generalize SignedTransaction for EthereumTxEnvelope (#15247) 2025-03-25 10:50:58 +00:00
futreall
6772939bc9 Polishing up any minor spelling errors (#15223) 2025-03-25 10:48:44 +00:00
Federico Gimenez
985a926bee feat: relax NodeTypesWithEngine bounds on EngineTypes to PayloadTypes (#15257) 2025-03-25 10:06:22 +00:00
Alexey Shekhirin
c0c29862bc test(trie): more complex trie node iter test (#15244) 2025-03-24 21:32:11 +00:00
Soubhik Singha Mahapatra
d456af044e Created GeneratePayloadAttributes e2e Action (#15234)
Co-authored-by: Federico Gimenez <fgimenez@users.noreply.github.com>
2025-03-24 15:51:19 +00:00
Ishika Choudhury
914fc51f23 remove reth-primitives dep from reth-provider (#15203)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-03-24 13:53:49 +00:00
Alexey Shekhirin
5a7cd15e94 test(trie): fix cursor mocks (#15242) 2025-03-24 13:46:55 +00:00
Roman Hodulák
0200ad6ee0 feat(storage): Implement Compact for OpTxEnvelope from op_alloy using blanket impl (#15230) 2025-03-24 13:05:16 +00:00
Federico Gimenez
c3b7c1e442 chore: relax bounds from EngineTypes to PayloadTypes (#15239) 2025-03-24 11:47:44 +00:00
int88
15d12234da integration test for blob sidecar listener (#15210) 2025-03-24 11:41:53 +00:00
Matthias Seitz
ee4270a0fb feat: add other constructor for err (#15236) 2025-03-24 10:55:36 +00:00
Federico Gimenez
d6031a2b22 test(op): add Op e2e testsuite example (#15039) 2025-03-24 09:26:59 +00:00
Ishika Choudhury
90513dfe35 replaced TransactionSigned::new (#15222)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-03-23 15:40:11 +00:00
github-actions[bot]
0f348898c2 chore(deps): weekly cargo update (#15231)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-03-23 15:35:09 +00:00
nk_ysg
20d1d6ac58 test: remove redundant clone (#15232) 2025-03-23 15:22:36 +00:00
Toki
fafa63c319 Remove default serde feature from reth-network-api (#15226) 2025-03-23 15:13:02 +00:00
nk_ysg
95d5b3ad57 reth-node-types: Add derive(Default) avoid manual implementations (#15228) 2025-03-23 15:12:32 +00:00
0xMushow
8492768442 Allow blob_cache_size to be configured via CLI (#15213)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-03-22 16:28:34 +00:00
Soubhik Singha Mahapatra
c0e1788d0e added engine_getBlobsV2 endpoint (#15217) 2025-03-22 15:19:10 +00:00
nk_ysg
64f2e01f20 chore: remove usused file (#15215)
Co-authored-by: nkysg <nkysggsy@gmail.com>
2025-03-22 12:02:07 +00:00
Veer Chaurasia
d271da6127 Remove ethereum-fork-dependency (#15216) 2025-03-22 12:01:35 +00:00
0xMushow
3a99c75143 Derive blobstore cache size from configured blobtargets (#15189)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-03-22 08:59:32 +00:00
Ishika Choudhury
f4f205f80c changed possible #[allow()] -> #[expect()] (#15168)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-03-22 08:52:17 +00:00
Ishika Choudhury
35a5d050ed feat: feature gate serde in ethereum-primitives (#15041)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-03-22 07:35:25 +00:00
Roman Hodulák
88f8be48b7 feat(storage): Implement Compact for EthereumTxEnvelope from alloy (#15122) 2025-03-22 07:30:54 +00:00
Matthias Seitz
a34f45641a chore: make clippy happy (#15208) 2025-03-22 08:23:06 +01:00
Matthias Seitz
0eb893e0ed chore: change default for await_payload_on_missing (#15178) 2025-03-22 07:59:18 +01:00
Dan Cline
fc1bb84195 feat: add dedicated storage proof method to ParallelProof (#15183) 2025-03-21 22:14:13 +00:00
Jennifer
da8f13715a Push nightly image with profiling profile (#15206)
Co-authored-by: Dan Cline <6798349+Rjected@users.noreply.github.com>
2025-03-21 21:46:59 +00:00
Matthias Seitz
90c514ca81 chore: release 1.3.4 (#15205) 2025-03-21 20:23:24 +01:00
Matthias Seitz
e3a67762be chore: bump revm alpha7 (#15202) 2025-03-21 20:08:43 +01:00
Alexey Shekhirin
20a6a85148 refactor(trie): initialize sparse trie with the provider (#15199) 2025-03-21 15:36:21 +00:00
Matthias Seitz
664250946f chore: remove serde default (#15186) 2025-03-21 12:16:02 +00:00
Alexey Shekhirin
59ed4c0250 test(trie): fix the trie node iterator test and use hash builder for correctness (#15195) 2025-03-21 12:11:49 +00:00
Matthias Seitz
65b7b33793 chore: remove serde from reth-provider (#15194) 2025-03-21 11:29:29 +00:00
Olexandr88
3d0705621f docs: edited by badge lint (#15072)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-03-21 11:27:52 +00:00
Toki
b7d834d1c0 Use of payload type instead of EngineTypes (#15187) 2025-03-21 11:07:54 +00:00
Matthias Seitz
c88e2b6f1c chore: bump version 1.3.3 (#15193) 2025-03-21 09:39:30 +00:00
Matthias Seitz
ef5b9590b8 chore: remove serde default (#15188) 2025-03-21 09:34:28 +00:00
Matthias Seitz
5b06daa26b chore: remove reth-provider dep (#15191) 2025-03-21 03:04:59 +00:00
Matthias Seitz
3ca590d606 chore: remove reth-provider dep (#15184) 2025-03-20 21:22:03 +00:00
Alexey Shekhirin
53a9c234a8 test(trie): trie node iter (#15176) 2025-03-20 18:15:18 +00:00
Soubhik Singha Mahapatra
b0d9a6b14b Created ProduceBlocks (#15179) 2025-03-20 16:29:32 +00:00
Federico Gimenez
8a36cbb3ab chore(ci): update hive eest limits (#15172) 2025-03-20 15:47:50 +00:00
Matthias Seitz
a1c6182056 chore: bump alloy-evm alpha2 (#15177) 2025-03-20 14:25:43 +00:00
Femi Bankole
032d5de7da feat: make MissingPayloadBehaviour configurable in EthereumPayloadBuilder (#15161) 2025-03-20 13:55:55 +00:00
Luca Provini
87111a6dd7 Fix: Enable BSC Pascal Hardfork for fixing bsc handshake (#15175) 2025-03-20 13:55:15 +00:00
Alexey Shekhirin
5a6d957234 test(trie): mock hashed cursor factory (#15174) 2025-03-20 13:32:27 +00:00
Alexey Shekhirin
8df04421e8 test(trie): mock trie cursor factory (#15173) 2025-03-20 13:21:26 +00:00
Pana
c9675fdf1b move tx pool events and listener code into its own file (#15162) 2025-03-20 12:26:39 +00:00
Federico Gimenez
10048e0f4d chore(op): remove unused DepositTransaction impl (#15169) 2025-03-20 12:20:51 +00:00
Alexey Shekhirin
393c498527 perf(engine): use proof task as blinded node provider for sparse trie (#15152) 2025-03-20 11:05:25 +00:00
Matthias Seitz
feb38c35f3 feat: add inverse conversion for rpc proof types (#15158) 2025-03-20 10:12:30 +00:00
Sumit
22f5fd316e feat: add new NewBlockEvent enum for different types of block announcement events (#15133) 2025-03-19 22:23:52 +00:00
VINEET PANT
6145005c0c refactor: Update BlockImport type to use BlockImportEvent to support announcements (#15153) 2025-03-19 18:17:19 +00:00
Ishika Choudhury
9f6fec213c feature gate serde in config (#15071)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-03-19 17:37:42 +00:00
Varun Doshi
d66e899526 feat: use configured max_new_pending_txs_notifications channel for channel size (#15132)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-03-19 17:19:04 +00:00
Dan Cline
ffc4cceb07 chore(trie): make rlp_node take external rlp_buf (#15137) 2025-03-19 13:52:41 +00:00
Dan Cline
00d2163350 chore(trie): refactor each trie reveal into separate fn (#15143) 2025-03-19 13:52:02 +00:00
Yohann Kazoula
0a702ac486 Exempt auth server from query limits (#15074) 2025-03-19 13:45:26 +00:00
Ishika Choudhury
18056cf9a4 converted EngineTypes to PayloadTypes (#15148) 2025-03-19 13:05:34 +00:00
rakita
01e5492134 chore: simplify revm imports (#15090) 2025-03-19 13:05:09 +00:00
Pelle
9cb7177dfc Added custom headers to NodePrimitives (#13995)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
Co-authored-by: Arsenii Kulikov <klkvrr@gmail.com>
Co-authored-by: Federico Gimenez <federico.gimenez@gmail.com>
2025-03-19 11:11:55 +00:00
Steven
0b9ffe8c1e chore: Move block_to_payload to PayloadTypes trait (#15138) 2025-03-19 09:38:01 +00:00
Dan Cline
88a4d1b3fa chore: turn multiproof from state into pure fn (#15139) 2025-03-19 08:05:09 +00:00
Dan Cline
22ff50aa45 chore(trie): rename from_provider_and_root to from_root_node (#15141) 2025-03-19 08:05:03 +00:00
Dan Cline
bbbc1c1434 chore: fix hickory_resolver breakage (#15134) 2025-03-18 22:50:48 +00:00
Dan Cline
ebbb25da56 feat: add hoodi genesis (#15118) 2025-03-18 20:15:44 +00:00
Alexey Shekhirin
876ad31928 feat(rpc): accept requests hash in engine_newPayloadV4 (#15123) 2025-03-18 19:34:29 +00:00
Alexey Shekhirin
d61f64e288 feat(reth-bench): support engine_newPayloadV4 (#15127) 2025-03-18 19:14:58 +00:00
Matthias Seitz
2a81add757 chore: bump alloy 0.12.6 (#15130) 2025-03-18 20:16:32 +01:00
Dan Cline
2942fe8f5a chore: add evm_for_ctx in prewarming ctx (#15121) 2025-03-18 18:10:13 +00:00
Alexey Shekhirin
c99a963d1c refactor(trie): pass blinded provider factory to sparse trie methods (#15120) 2025-03-18 16:54:17 +00:00
Soubhik Singha Mahapatra
79b19847e3 Created PickNextBlockProducer e2e Action (#15119) 2025-03-18 15:41:15 +00:00
Odinson
7c70df193b refactor(trie): invert provider access in sparse trie (#14662)
Co-authored-by: Alexey Shekhirin <5773434+shekhirin@users.noreply.github.com>
2025-03-18 15:38:46 +00:00
Alexey Shekhirin
d119808124 chore(trie): do not take self by mutable ref for blinded provider (#15116) 2025-03-18 14:01:35 +00:00
Federico Magnani
03c5abba88 Re-exports serde bincode compat (#15112)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-03-18 11:11:40 +00:00
0xMushow
3eb05a4adf Refactor generic type to use PayloadTypes (#15113) 2025-03-18 11:00:11 +00:00
Ishika Choudhury
214a5ac270 ExecutionData moved to PayloadTypes (#15060)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-03-18 09:57:33 +00:00
makcandrov
ccf27eaa35 fix windows msvc build (#15082) 2025-03-18 09:48:25 +00:00
Dan Cline
920796387d chore: remove layer of blocking task calls (#15102) 2025-03-18 09:20:43 +00:00
Jennifer
5cfa9c7df9 Build and push images in parallel (#15042) 2025-03-18 08:53:41 +00:00
Emilia Hane
772418f048 feat(op-interop): Uncomment interop activation checks (#14980)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-03-17 22:39:42 +00:00
Luca Provini
3742a045d3 Bsc block import (#14784)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-03-17 22:05:07 +00:00
Steven
8e02f5f893 chore: elide lifetime in PayloadOrAtt impl (#15095) 2025-03-17 23:18:34 +01:00
Litvintech
95bf853eae chore: fix dead link in example/README.md (#15065) 2025-03-17 23:13:03 +01:00
Alexey Shekhirin
59ef9d9309 perf(tree): do not wait for the sparse trie to drop (#15092)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-03-17 21:56:24 +00:00
Dan Cline
9cdfcf57b9 feat: use fixed number of db transactions for storage proofs (#14860) 2025-03-17 21:01:11 +00:00
Dan Cline
32cd12bc01 chore: make execution and state root logs debug (#15077) 2025-03-17 21:58:29 +01:00
kien-rise
ce76bb46d9 fix: bring back the missing trace! logs (rpc::engine) (#15096) 2025-03-17 21:57:44 +01:00
Matthias Seitz
802a1c7bd6 chore: release 1.3.2 (#15097) 2025-03-17 20:33:31 +01:00
Dan Cline
b761dac93f feat: add hoodi bootnodes (#15085) 2025-03-17 20:33:15 +01:00
rakita
e334f7ad3e bump: revm v20.0.0-alpha.6 (#15087)
Co-authored-by: Arsenii Kulikov <klkvrr@gmail.com>
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-03-17 19:57:23 +01:00
Dan Cline
e5bf126921 fix: use branch for jsonrpsee (#15094) 2025-03-17 19:38:18 +01:00
int88
ed9be76244 respect gas limit for test_best_transactions_prioritized_senders() (#15076) 2025-03-17 13:58:13 +01:00
Matthias Seitz
286a88dee7 chore: rm reth-primitives from trie (#15070) 2025-03-15 19:04:16 +00:00
Dan Cline
cd852879b4 feat: add wait_time optional argument to reth-bench (#15045) 2025-03-15 19:04:08 +00:00
Matthias Seitz
f55d8405cb chore: rm reth-primitives from node crates (#15069) 2025-03-15 17:34:24 +01:00
Matthias Seitz
04f5a2aafb chore: rm reth-primitives from exex crates (#15066) 2025-03-15 15:43:17 +01:00
Matthias Seitz
68249bd6e2 chore: rm reth-primitives from network (#15063) 2025-03-15 14:56:45 +01:00
Matthias Seitz
6193729e7d chore: rm reth-primitives from optimism (#15064) 2025-03-15 14:56:33 +01:00
Matthias Seitz
023aad93f8 chore: rm reth-primitives from eth wire (#15062) 2025-03-15 13:52:11 +01:00
Matthias Seitz
24f1972a58 chore: rm reth-provider dep (#15058) 2025-03-15 13:22:57 +01:00
Matthias Seitz
a71fb79717 chore: rm reth-primitives from downloaders (#15059) 2025-03-15 10:40:09 +00:00
Matthias Seitz
73885a762c chore: rm reth-primitives from payload basic (#15056) 2025-03-15 10:39:41 +01:00
Matthias Seitz
3812ad2297 chore: rm reth-primitives from payload crates (#15055) 2025-03-15 10:17:36 +01:00
int88
d3be2e530b test for handling incoming_transactions_hashes (#14960) 2025-03-15 08:13:10 +00:00
leopardracer
16ce387a53 Replace None with RecoveryError in transaction signature recovery (#15050) 2025-03-15 07:57:51 +00:00
Matthias Seitz
d758cdc07e chore: add serde feature to db-models (#15051) 2025-03-15 08:55:54 +01:00
Dan Cline
9ab24977c6 fix: increment in_progress when we spawn a prewarm transaction (#15052) 2025-03-14 22:54:14 +00:00
Alessandro Mazza
2882991173 fix: add debug namespace to auth module in op-reth (#15048) 2025-03-14 20:06:42 +00:00
Arsenii Kulikov
8d43d6d770 fix: handling of on-disk reorgs (#15046) 2025-03-14 20:05:48 +00:00
leopardracer
492425d14d chore: rm redundant error map (#15044) 2025-03-14 18:39:27 +00:00
Dan Cline
b8f7a345d0 feat: add total multiproof task duration grafana (#15034) 2025-03-14 15:20:21 +00:00
Emilia Hane
95dcb36f82 fix(l2-withdrawals-root): conversion of block to OpExecutionPayloadEnvelopeV4 (#15038) 2025-03-14 13:09:53 +00:00
Soubhik Singha Mahapatra
613e4e55f4 chore: invoke invalid block hook for new invalid blocks (#14776)
Co-authored-by: Aideepakchaudhary <aideepakchaudhary@gmail.com>
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-03-14 12:09:40 +00:00
Steven
89e3e5529f feat: make trace_filter block range configurable (#14939)
Co-authored-by: Dan Cline <6798349+Rjected@users.noreply.github.com>
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-03-14 11:52:19 +00:00
Federico Gimenez
5f55448941 feat(test, e2e): mutable environment for actions (#15021) 2025-03-14 10:38:59 +00:00
Dan Cline
1db3b55c7b chore: rename stateful-precompile to precompile-cache (#15033) 2025-03-14 10:28:16 +00:00
Federico Gimenez
069fb0d24a fix(ci): update limit to match fixture types in hive eest tests (#15037) 2025-03-14 10:10:57 +00:00
Akshay
850ab5c3c4 Fix: Update commet about Eip7702 transaction type (#15024) 2025-03-14 09:55:07 +00:00
Pana
752acea878 remove no need map_err (#15036) 2025-03-14 09:53:38 +00:00
Pana
b21d14c9b6 remove no need map_err (#15035) 2025-03-14 08:54:39 +00:00
Ishika Choudhury
1a1f4dbc81 feat:added peer-kind to SessionInfo (#15022) 2025-03-13 23:56:56 +00:00
Dan Cline
f2d3b7f2b9 feat: track time since first state update in metrics (#15031) 2025-03-13 23:56:05 +00:00
Dan Cline
d00992e811 chore: add profiling-op target to Makefile (#15032) 2025-03-13 23:55:29 +00:00
Steven
62e13dbe6e feat: Impl TryFrom<Recovered<TxEnvelope for MockTransaction (#15005) 2025-03-13 23:55:07 +00:00
Dan Cline
0bfba01341 chore: use Histogram for trie input duration (#15028) 2025-03-13 23:06:21 +00:00
Dan Cline
a3a2bbf3d9 feat: add redundant / total multiproof node graphs (#15027) 2025-03-13 23:02:27 +00:00
Roman Krasiuk
8142c6c327 release: v1.3.1 (#15030) 2025-03-13 21:40:26 +00:00
Roman Krasiuk
c10b0dd7fb feat(ress): max witness window (#15029) 2025-03-13 21:39:38 +00:00
Alexey Shekhirin
eeaa65a668 chore(trie): simplify hashed post state partitioning (#14892) 2025-03-13 16:53:29 +00:00
Pana
217f595c61 optimize txpool component doc comment (#15006) 2025-03-13 16:02:35 +00:00
Léa Narzis
526073cb09 chore(ress-provider): replace reth-primitives (#15020) 2025-03-13 15:57:26 +00:00
Pana
cd55468cb6 check not only 1559 but also 4844 and 7702 for min_priority_fee checking in txpool validation (#15009) 2025-03-13 15:53:49 +00:00
0xNarumi
18b1c7c819 Fix: help merging CachedReads across blocks (#14993) 2025-03-13 15:16:36 +00:00
Ishika Choudhury
8393e52ee6 feat:added EthApiCtx struct for converting build_eth_api args to container type (#15013)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2025-03-13 15:15:03 +00:00
Matthias Seitz
4880760bcc fix: add bincode compat for eth receipt (#15017) 2025-03-13 15:11:09 +00:00
taikoon
e017967dd1 chore(cli): fix clap deprecated warnings (#15016) 2025-03-13 13:50:55 +00:00
Dan Cline
757f39f1a8 chore: rm reth-primitives from reth-rpc-eth-types (#15004) 2025-03-13 13:25:39 +00:00
taikoon
2a36f6958e feat: remove deprecated #[clap] attribute (#15015) 2025-03-13 13:14:41 +00:00
Federico Gimenez
8501a7492b chore(test, e2e): remove empty and unused actions (#15008) 2025-03-13 11:51:24 +00:00
Roman Krasiuk
c0e848a29b fix(ress): do not terminate on dropped commands sender (#15007) 2025-03-13 10:01:29 +00:00
Matthias Seitz
37f8a52825 chore: rm reth-primitives from engine crates (#15003) 2025-03-12 23:34:51 +00:00
Dan Cline
3bebb0a19f chore: add metrics on redundant proof nodes (#14969) 2025-03-12 23:07:06 +00:00
1318 changed files with 130626 additions and 81534 deletions

2
.gitattributes vendored
View File

@@ -1,4 +1,4 @@
book/cli/**/*.md linguist-vendored
book/cli/cli.md -linguist-vendored
crates/storage/libmdbx-rs/mdbx-sys/** linguist-vendored
crates/storage/libmdbx-rs/mdbx-sys/libmdbx/** linguist-vendored

19
.github/CODEOWNERS vendored
View File

@@ -1,18 +1,19 @@
* @gakonst
bin/ @onbjerg
crates/blockchain-tree/ @rakita @rkrasiuk @mattsse @Rjected
crates/blockchain-tree-api/ @rakita @rkrasiuk @mattsse @Rjected
crates/chainspec/ @Rjected @joshieDo @mattsse
crates/blockchain-tree/ @rakita @rkrasiuk @mattsse @Rjected
crates/chain-state/ @fgimenez @mattsse @rkrasiuk
crates/chainspec/ @Rjected @joshieDo @mattsse
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
crates/engine/ @rkrasiuk @mattsse @Rjected @fgimenez
crates/era/ @mattsse @RomanHodulak
crates/errors/ @mattsse
crates/ethereum/ @mattsse @Rjected
crates/ethereum-forks/ @mattsse @Rjected
crates/ethereum/ @mattsse @Rjected
crates/etl/ @joshieDo @shekhirin
crates/evm/ @rakita @mattsse @Rjected
crates/exex/ @onbjerg @shekhirin
@@ -23,17 +24,18 @@ crates/net/downloaders/ @onbjerg @rkrasiuk
crates/node/ @mattsse @Rjected @onbjerg @klkvr
crates/optimism/ @mattsse @Rjected @fgimenez
crates/payload/ @mattsse @Rjected
crates/primitives-traits/ @Rjected @RomanHodulak @mattsse @klkvr
crates/primitives/ @Rjected @mattsse @klkvr
crates/primitives-traits/ @Rjected @joshieDo @mattsse @klkvr
crates/prune/ @shekhirin @joshieDo
crates/ress @rkrasiuk
crates/revm/ @mattsse @rakita
crates/rpc/ @mattsse @Rjected
crates/rpc/ @mattsse @Rjected @RomanHodulak
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/db/ @joshieDo @rakita
crates/storage/errors/ @rakita @onbjerg
crates/storage/libmdbx-rs/ @rakita @shekhirin
crates/storage/nippy-jar/ @joshieDo @shekhirin
@@ -43,7 +45,6 @@ crates/tasks/ @mattsse
crates/tokio-util/ @fgimenez
crates/tracing/ @onbjerg
crates/transaction-pool/ @mattsse
crates/trie/ @rkrasiuk @Rjected @shekhirin
crates/ress @rkrasiuk
crates/trie/ @rkrasiuk @Rjected @shekhirin @mediocregopher
etc/ @Rjected @onbjerg @shekhirin
.github/ @onbjerg @gakonst @DaniPopes

View File

@@ -4,9 +4,11 @@ set +e # Disable immediate exit on error
# Array of crates to check
crates_to_check=(
reth-codecs-derive
reth-primitives
reth-primitives-traits
reth-network-peers
reth-trie-common
reth-trie-sparse
reth-chainspec
reth-consensus
reth-consensus-common
@@ -14,15 +16,19 @@ crates_to_check=(
reth-static-file-types
reth-storage-errors
reth-execution-errors
reth-errors
reth-execution-types
reth-db-models
reth-evm
reth-revm
reth-storage-api
## ethereum
reth-evm-ethereum
reth-ethereum-forks
reth-ethereum-primitives
reth-ethereum-consensus
reth-stateless
## optimism
reth-optimism-chainspec

View File

@@ -44,7 +44,6 @@ exclude_crates=(
reth-optimism-payload-builder
reth-optimism-rpc
reth-optimism-storage
reth-optimism-chain-registry
reth-rpc
reth-rpc-api
reth-rpc-api-testing-util
@@ -59,6 +58,7 @@ exclude_crates=(
reth-ress-provider
# The following are not supposed to be working
reth # all of the crates below
reth-alloy-provider
reth-invalid-block-hooks # reth-provider
reth-libmdbx # mdbx
reth-mdbx-sys # mdbx
@@ -70,8 +70,12 @@ exclude_crates=(
reth-transaction-pool # c-kzg
reth-payload-util # reth-transaction-pool
reth-trie-parallel # tokio
reth-trie-sparse-parallel # rayon
reth-testing-utils
reth-optimism-txpool # reth-transaction-pool
reth-era-downloader # tokio
reth-era-utils # tokio
reth-tracing-otlp
)
# Array to hold the results

View File

@@ -11,7 +11,7 @@ go build .
# Run each hive command in the background for each simulator and wait
echo "Building images"
./hive -client reth --sim "ethereum/eest" --sim.buildarg fixtures=https://github.com/ethereum/execution-spec-tests/releases/download/pectra-devnet-6%40v1.0.0/fixtures_pectra-devnet-6.tar.gz -sim.timelimit 1s || true &
./hive -client reth --sim "ethereum/eest" --sim.buildarg fixtures=https://github.com/ethereum/execution-spec-tests/releases/download/v4.4.0/fixtures_develop.tar.gz --sim.buildarg branch=v4.4.0 -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 &
@@ -20,18 +20,21 @@ echo "Building images"
./hive -client reth --sim "ethereum/sync" -sim.timelimit 1s || true &
wait
# Run docker save in parallel and wait
# Run docker save in parallel, wait and exit on error
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/eest/consume-engine:latest -o ../hive_assets/eest_engine.tar &
docker save hive/simulators/ethereum/eest/consume-rlp:latest -o ../hive_assets/eest_rlp.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
saving_pids=( )
docker save hive/hiveproxy:latest -o ../hive_assets/hiveproxy.tar & saving_pids+=( $! )
docker save hive/simulators/devp2p:latest -o ../hive_assets/devp2p.tar & saving_pids+=( $! )
docker save hive/simulators/ethereum/engine:latest -o ../hive_assets/engine.tar & saving_pids+=( $! )
docker save hive/simulators/ethereum/rpc-compat:latest -o ../hive_assets/rpc_compat.tar & saving_pids+=( $! )
docker save hive/simulators/ethereum/eest/consume-engine:latest -o ../hive_assets/eest_engine.tar & saving_pids+=( $! )
docker save hive/simulators/ethereum/eest/consume-rlp:latest -o ../hive_assets/eest_rlp.tar & saving_pids+=( $! )
docker save hive/simulators/smoke/genesis:latest -o ../hive_assets/smoke_genesis.tar & saving_pids+=( $! )
docker save hive/simulators/smoke/network:latest -o ../hive_assets/smoke_network.tar & saving_pids+=( $! )
docker save hive/simulators/ethereum/sync:latest -o ../hive_assets/ethereum_sync.tar & saving_pids+=( $! )
for pid in "${saving_pids[@]}"; do
wait "$pid" || exit
done
# Make sure we don't rebuild images on the CI jobs
git apply ../.github/assets/hive/no_sim_build.diff

View File

@@ -1,4 +1,4 @@
# https://github.com/paradigmxyz/reth/issues/13879
# tracked by https://github.com/paradigmxyz/reth/issues/13879
rpc-compat:
- debug_getRawBlock/get-invalid-number (reth)
- debug_getRawHeader/get-invalid-number (reth)
@@ -16,7 +16,11 @@ rpc-compat:
- eth_getTransactionReceipt/get-legacy-input (reth)
- eth_getTransactionReceipt/get-legacy-receipt (reth)
# https://github.com/paradigmxyz/reth/issues/8732
# after https://github.com/paradigmxyz/reth/pull/16742 we start the node in
# syncing mode, the test expects syncing to be false on start
- eth_syncing/check-syncing (reth)
# no fix due to https://github.com/paradigmxyz/reth/issues/8732
engine-withdrawals:
- Withdrawals Fork On Genesis (Paris) (reth)
- Withdrawals Fork on Block 1 (Paris) (reth)
@@ -29,29 +33,78 @@ engine-withdrawals:
- 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)
engine-api: []
# 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
# no fix due to https://github.com/paradigmxyz/reth/issues/8732
engine-cancun:
- Blob Transaction Ordering, Multiple Clients (Cancun) (reth)
- Invalid PayloadAttributes, Missing BeaconRoot, Syncing=True (Cancun) (reth)
- Invalid NewPayload, ExcessBlobGas, Syncing=True, EmptyTxs=False, DynFeeTxs=False (Cancun) (reth)
# the test fails with older verions of the code for which it passed before, probably related to changes
# in hive or its dependencies
- Blob Transaction Ordering, Multiple Clients (Cancun) (reth)
sync: []
# no fix: its too expensive to check whether the storage is empty on each creation
# https://github.com/ethereum/hive/issues/1277
engine-auth:
- "JWT Authentication: No time drift, correct secret (Paris) (reth)"
- "JWT Authentication: Negative time drift, within limit, correct secret (Paris) (reth)"
- "JWT Authentication: Positive time drift, within limit, correct secret (Paris) (reth)"
# 7702 test - no fix: its too expensive to check whether the storage is empty on each creation
# 6110 related tests - may start passing when fixtures improve
# 7002 related tests - post-fork test, should fix for spec compliance but not
# realistic on mainnet
# 7251 related tests - modified contract, not necessarily practical on mainnet,
# worth re-visiting when more of these related tests are passing
eest/consume-engine:
- tests/prague/eip7702_set_code_tx/test_set_code_txs.py::test_set_code_to_non_empty_storage[fork_Prague-blockchain_test_engine-zero_nonce]-reth
- tests/prague/eip7251_consolidations/test_modified_consolidation_contract.py::test_system_contract_errors[fork_Prague-blockchain_test_engine-system_contract_reaches_gas_limit-system_contract_0x0000bbddc7ce488642fb579f8b00f3a590007251]-reth
- tests/prague/eip7251_consolidations/test_contract_deployment.py::test_system_contract_deployment[fork_CancunToPragueAtTime15k-blockchain_test_engine-deploy_after_fork-nonzero_balance]-reth
- tests/prague/eip7251_consolidations/test_contract_deployment.py::test_system_contract_deployment[fork_CancunToPragueAtTime15k-blockchain_test_engine-deploy_after_fork-zero_balance]-reth
- tests/prague/eip6110_deposits/test_modified_contract.py::test_invalid_layout[fork_Prague-blockchain_test_engine-log_argument_amount_offset-value_zero]-reth
- tests/prague/eip6110_deposits/test_modified_contract.py::test_invalid_layout[fork_Prague-blockchain_test_engine-log_argument_amount_size-value_zero]-reth
- tests/prague/eip6110_deposits/test_modified_contract.py::test_invalid_layout[fork_Prague-blockchain_test_engine-log_argument_index_offset-value_zero]-reth
- tests/prague/eip6110_deposits/test_modified_contract.py::test_invalid_layout[fork_Prague-blockchain_test_engine-log_argument_index_size-value_zero]-reth
- tests/prague/eip6110_deposits/test_modified_contract.py::test_invalid_layout[fork_Prague-blockchain_test_engine-log_argument_pubkey_offset-value_zero]-reth
- tests/prague/eip7002_el_triggerable_withdrawals/test_modified_withdrawal_contract.py::test_system_contract_errors[fork_Prague-blockchain_test_engine-system_contract_reaches_gas_limit-system_contract_0x00000961ef480eb55e80d19ad83579a64c007002]-reth
- tests/prague/eip6110_deposits/test_modified_contract.py::test_invalid_layout[fork_Prague-blockchain_test_engine-log_argument_pubkey_size-value_zero]-reth
- tests/prague/eip6110_deposits/test_modified_contract.py::test_invalid_layout[fork_Prague-blockchain_test_engine-log_argument_signature_offset-value_zero]-reth
- tests/prague/eip6110_deposits/test_modified_contract.py::test_invalid_layout[fork_Prague-blockchain_test_engine-log_argument_signature_size-value_zero]-reth
- tests/prague/eip6110_deposits/test_modified_contract.py::test_invalid_layout[fork_Prague-blockchain_test_engine-log_argument_withdrawal_credentials_offset-value_zero]-reth
- tests/prague/eip6110_deposits/test_modified_contract.py::test_invalid_layout[fork_Prague-blockchain_test_engine-log_argument_withdrawal_credentials_size-value_zero]-reth
- tests/prague/eip7002_el_triggerable_withdrawals/test_contract_deployment.py::test_system_contract_deployment[fork_CancunToPragueAtTime15k-blockchain_test_engine-deploy_after_fork-nonzero_balance]-reth
- tests/prague/eip7002_el_triggerable_withdrawals/test_contract_deployment.py::test_system_contract_deployment[fork_CancunToPragueAtTime15k-blockchain_test_engine-deploy_after_fork-zero_balance]-reth
- tests/prague/eip6110_deposits/test_modified_contract.py::test_invalid_log_length[fork_Prague-blockchain_test_engine-slice_bytes_False]-reth
- tests/prague/eip6110_deposits/test_modified_contract.py::test_invalid_log_length[fork_Prague-blockchain_test_engine-slice_bytes_True]-reth
# the next test expects a concrete new format in the error message, there is no spec for this message, so it is ok to ignore
- tests/cancun/eip4844_blobs/test_blob_txs.py::test_blob_type_tx_pre_fork[fork_ShanghaiToCancunAtTime15k-blockchain_test_engine_from_state_test-one_blob_tx]-reth
# 7702 test - no fix: its too expensive to check whether the storage is empty on each creation
# rest of tests - see above
eest/consume-rlp:
- tests/prague/eip7702_set_code_tx/test_set_code_txs.py::test_set_code_to_non_empty_storage[fork_Prague-blockchain_test-zero_nonce]-reth
- tests/prague/eip7251_consolidations/test_modified_consolidation_contract.py::test_system_contract_errors[fork_Prague-blockchain_test_engine-system_contract_reaches_gas_limit-system_contract_0x0000bbddc7ce488642fb579f8b00f3a590007251]-reth
- tests/prague/eip7251_consolidations/test_contract_deployment.py::test_system_contract_deployment[fork_CancunToPragueAtTime15k-blockchain_test_engine-deploy_after_fork-nonzero_balance]-reth
- tests/prague/eip7251_consolidations/test_contract_deployment.py::test_system_contract_deployment[fork_CancunToPragueAtTime15k-blockchain_test_engine-deploy_after_fork-zero_balance]-reth
- tests/prague/eip6110_deposits/test_modified_contract.py::test_invalid_layout[fork_Prague-blockchain_test_engine-log_argument_amount_offset-value_zero]-reth
- tests/prague/eip6110_deposits/test_modified_contract.py::test_invalid_layout[fork_Prague-blockchain_test_engine-log_argument_amount_size-value_zero]-reth
- tests/prague/eip6110_deposits/test_modified_contract.py::test_invalid_layout[fork_Prague-blockchain_test_engine-log_argument_index_offset-value_zero]-reth
- tests/prague/eip6110_deposits/test_modified_contract.py::test_invalid_layout[fork_Prague-blockchain_test_engine-log_argument_index_size-value_zero]-reth
- tests/prague/eip6110_deposits/test_modified_contract.py::test_invalid_layout[fork_Prague-blockchain_test_engine-log_argument_pubkey_offset-value_zero]-reth
- tests/prague/eip7002_el_triggerable_withdrawals/test_modified_withdrawal_contract.py::test_system_contract_errors[fork_Prague-blockchain_test_engine-system_contract_reaches_gas_limit-system_contract_0x00000961ef480eb55e80d19ad83579a64c007002]-reth
- tests/prague/eip6110_deposits/test_modified_contract.py::test_invalid_layout[fork_Prague-blockchain_test_engine-log_argument_pubkey_size-value_zero]-reth
- tests/prague/eip6110_deposits/test_modified_contract.py::test_invalid_layout[fork_Prague-blockchain_test_engine-log_argument_signature_offset-value_zero]-reth
- tests/prague/eip6110_deposits/test_modified_contract.py::test_invalid_layout[fork_Prague-blockchain_test_engine-log_argument_signature_size-value_zero]-reth
- tests/prague/eip6110_deposits/test_modified_contract.py::test_invalid_layout[fork_Prague-blockchain_test_engine-log_argument_withdrawal_credentials_offset-value_zero]-reth
- tests/prague/eip6110_deposits/test_modified_contract.py::test_invalid_layout[fork_Prague-blockchain_test_engine-log_argument_withdrawal_credentials_size-value_zero]-reth
- tests/prague/eip7002_el_triggerable_withdrawals/test_contract_deployment.py::test_system_contract_deployment[fork_CancunToPragueAtTime15k-blockchain_test_engine-deploy_after_fork-nonzero_balance]-reth
- tests/prague/eip7002_el_triggerable_withdrawals/test_contract_deployment.py::test_system_contract_deployment[fork_CancunToPragueAtTime15k-blockchain_test_engine-deploy_after_fork-zero_balance]-reth
- tests/prague/eip6110_deposits/test_modified_contract.py::test_invalid_log_length[fork_Prague-blockchain_test_engine-slice_bytes_False]-reth
- tests/prague/eip6110_deposits/test_modified_contract.py::test_invalid_log_length[fork_Prague-blockchain_test_engine-slice_bytes_True]-reth
- tests/prague/eip7251_consolidations/test_modified_consolidation_contract.py::test_system_contract_errors[fork_Prague-blockchain_test-system_contract_reaches_gas_limit-system_contract_0x0000bbddc7ce488642fb579f8b00f3a590007251]-reth
- tests/prague/eip7251_consolidations/test_contract_deployment.py::test_system_contract_deployment[fork_CancunToPragueAtTime15k-blockchain_test-deploy_after_fork-nonzero_balance]-reth
- tests/prague/eip7251_consolidations/test_contract_deployment.py::test_system_contract_deployment[fork_CancunToPragueAtTime15k-blockchain_test-deploy_after_fork-zero_balance]-reth
- tests/prague/eip7002_el_triggerable_withdrawals/test_modified_withdrawal_contract.py::test_system_contract_errors[fork_Prague-blockchain_test-system_contract_reaches_gas_limit-system_contract_0x00000961ef480eb55e80d19ad83579a64c007002]-reth
- tests/prague/eip7002_el_triggerable_withdrawals/test_contract_deployment.py::test_system_contract_deployment[fork_CancunToPragueAtTime15k-blockchain_test-deploy_after_fork-nonzero_balance]-reth
- tests/prague/eip7002_el_triggerable_withdrawals/test_contract_deployment.py::test_system_contract_deployment[fork_CancunToPragueAtTime15k-blockchain_test-deploy_after_fork-zero_balance]-reth

View File

@@ -4,11 +4,26 @@ ethereum_package:
el_extra_params:
- "--rpc.eth-proof-window=100"
cl_type: teku
network_params:
preset: minimal
genesis_delay: 5
additional_preloaded_contracts: '
{
"0x4e59b44847b379578588920cA78FbF26c0B4956C": {
"balance": "0ETH",
"code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03601600081602082378035828234f58015156039578182fd5b8082525050506014600cf3",
"storage": {},
"nonce": "1"
}
}'
optimism_package:
chains:
- participants:
- el_type: op-geth
cl_type: op-node
- el_type: op-reth
el_image: "ghcr.io/paradigmxyz/op-reth:kurtosis-ci"
cl_type: op-node
el_image: "ghcr.io/paradigmxyz/op-reth:kurtosis-ci"
network_params:
holocene_time_offset: 0
isthmus_time_offset: 0

View File

@@ -12,10 +12,6 @@ env:
BASELINE: base
SEED: reth
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
name: bench
jobs:
codspeed:

View File

@@ -7,115 +7,45 @@ on:
branches: [main]
pull_request:
branches: [main]
types: [opened, reopened, synchronize, closed]
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: rui314/setup-mold@v1
- uses: dtolnay/rust-toolchain@nightly
- name: Install mdbook
- name: Checkout
uses: actions/checkout@v4
- name: Install bun
uses: oven-sh/setup-bun@v2
- name: Install Playwright browsers
# Required for rehype-mermaid to render Mermaid diagrams during build
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
cd book/vocs/
bun i
npx playwright install --with-deps chromium
- name: Install mdbook-template
- name: Build Vocs
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
cd book/vocs/ && bun run build
echo "Vocs Build Complete"
- 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: Setup Pages
uses: actions/configure-pages@v5
- name: Upload artifact
uses: actions/upload-artifact@v4
uses: actions/upload-pages-artifact@v3
with:
name: github-pages
path: ${{ runner.temp }}/artifact.tar
retention-days: 1
if-no-files-found: error
path: "./book/vocs/docs/dist"
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]
needs: [build]
# Grant GITHUB_TOKEN the permissions required to make a Pages deployment
permissions:

View File

@@ -1,57 +0,0 @@
name: build release binaries
on:
workflow_dispatch:
env:
CARGO_TERM_COLOR: always
jobs:
build:
name: build release
runs-on: ${{ matrix.configs.os }}
strategy:
matrix:
configs:
- target: x86_64-unknown-linux-gnu
os: ubuntu-24.04
profile: maxperf
- target: aarch64-unknown-linux-gnu
os: ubuntu-24.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-24.04
profile: maxperf
build:
- command: build
binary: reth
- command: op-build
binary: op-reth
steps:
- uses: actions/checkout@v4
- uses: rui314/setup-mold@v1
- uses: dtolnay/rust-toolchain@stable
with:
target: ${{ matrix.configs.target }}
- name: Install cross main
id: cross_main
run: |
cargo install cross --git https://github.com/cross-rs/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 }}

View File

@@ -17,4 +17,4 @@ jobs:
update:
uses: ithacaxyz/ci/.github/workflows/cargo-update-pr.yml@main
secrets:
token: ${{ secrets.GITHUB_TOKEN }}
token: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -24,6 +24,14 @@ jobs:
permissions:
packages: write
contents: read
strategy:
fail-fast: false
matrix:
build:
- name: 'Build and push the git-sha-tagged reth image'
command: 'make PROFILE=maxperf GIT_SHA=$GIT_SHA docker-build-push-git-sha'
- name: 'Build and push the git-sha-tagged op-reth image'
command: 'make IMAGE_NAME=$OP_IMAGE_NAME DOCKER_IMAGE_NAME=$OP_DOCKER_IMAGE_NAME GIT_SHA=$GIT_SHA PROFILE=maxperf op-docker-build-push-git-sha'
steps:
- uses: actions/checkout@v4
- uses: rui314/setup-mold@v1
@@ -42,7 +50,5 @@ jobs:
run: |
docker run --privileged --rm tonistiigi/binfmt --install arm64,amd64
docker buildx create --use --name cross-builder
- name: Build and push the git-sha-tagged reth image
run: make PROFILE=maxperf GIT_SHA=$GIT_SHA docker-build-push-git-sha
- name: Build and push the git-sha-tagged op-reth image
run: make IMAGE_NAME=$OP_IMAGE_NAME DOCKER_IMAGE_NAME=$OP_DOCKER_IMAGE_NAME GIT_SHA=$GIT_SHA PROFILE=maxperf op-docker-build-push-git-sha
- name: Build and push ${{ matrix.build.name }}
run: ${{ matrix.build.command }}

View File

@@ -3,6 +3,7 @@
name: docker-nightly
on:
workflow_dispatch:
schedule:
- cron: "0 1 * * *"
env:
@@ -21,8 +22,25 @@ jobs:
permissions:
packages: write
contents: read
strategy:
fail-fast: false
matrix:
build:
- name: 'Build and push the nightly reth image'
command: 'make PROFILE=maxperf docker-build-push-nightly'
- name: 'Build and push the nightly profiling reth image'
command: 'make PROFILE=profiling docker-build-push-nightly-profiling'
- name: 'Build and push the nightly op-reth image'
command: 'make IMAGE_NAME=$OP_IMAGE_NAME DOCKER_IMAGE_NAME=$OP_DOCKER_IMAGE_NAME PROFILE=maxperf op-docker-build-push-nightly'
- name: 'Build and push the nightly profiling op-reth image'
command: 'make IMAGE_NAME=$OP_IMAGE_NAME DOCKER_IMAGE_NAME=$OP_DOCKER_IMAGE_NAME PROFILE=profiling op-docker-build-push-nightly-profiling'
steps:
- uses: actions/checkout@v4
- name: Remove bloatware
uses: laverdet/remove-bloatware@v1.0.0
with:
docker: true
lang: rust
- uses: rui314/setup-mold@v1
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
@@ -39,7 +57,5 @@ jobs:
run: |
docker run --privileged --rm tonistiigi/binfmt --install arm64,amd64
docker buildx create --use --name cross-builder
- name: Build and push the nightly reth image
run: make PROFILE=maxperf docker-build-push-nightly
- name: Build and push the nightly op-reth image
run: make IMAGE_NAME=$OP_IMAGE_NAME DOCKER_IMAGE_NAME=$OP_DOCKER_IMAGE_NAME PROFILE=maxperf op-docker-build-push-nightly
- name: Build and push ${{ matrix.build.name }}
run: ${{ matrix.build.command }}

View File

@@ -8,7 +8,6 @@ on:
- 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
@@ -17,12 +16,21 @@ env:
DOCKER_USERNAME: ${{ github.actor }}
jobs:
build:
name: build and push
build-rc:
if: contains(github.ref, '-rc')
name: build and push as release candidate
runs-on: ubuntu-24.04
permissions:
packages: write
contents: read
strategy:
fail-fast: false
matrix:
build:
- name: "Build and push reth image"
command: "make IMAGE_NAME=$IMAGE_NAME DOCKER_IMAGE_NAME=$DOCKER_IMAGE_NAME PROFILE=maxperf docker-build-push"
- name: "Build and push op-reth image"
command: "make IMAGE_NAME=$OP_IMAGE_NAME DOCKER_IMAGE_NAME=$OP_DOCKER_IMAGE_NAME PROFILE=maxperf op-docker-build-push"
steps:
- uses: actions/checkout@v4
- uses: rui314/setup-mold@v1
@@ -41,11 +49,41 @@ jobs:
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
- name: Build and push ${{ matrix.build.name }}
run: ${{ matrix.build.command }}
build:
if: ${{ !contains(github.ref, '-rc') }}
name: build and push as latest
runs-on: ubuntu-24.04
permissions:
packages: write
contents: read
strategy:
fail-fast: false
matrix:
build:
- name: "Build and push reth image"
command: "make IMAGE_NAME=$IMAGE_NAME DOCKER_IMAGE_NAME=$DOCKER_IMAGE_NAME PROFILE=maxperf docker-build-push-latest"
- name: "Build and push op-reth image"
command: "make IMAGE_NAME=$OP_IMAGE_NAME DOCKER_IMAGE_NAME=$OP_DOCKER_IMAGE_NAME PROFILE=maxperf op-docker-build-push-latest"
steps:
- uses: actions/checkout@v4
- uses: rui314/setup-mold@v1
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
with:
cache-on-failure: true
- name: Install cross main
id: cross_main
run: |
cargo install cross --git https://github.com/cross-rs/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 ${{ matrix.build.name }}
run: ${{ matrix.build.command }}

View File

@@ -5,8 +5,7 @@ name: hive
on:
workflow_dispatch:
schedule:
# run every 12 hours
- cron: "0 */12 * * *"
- cron: "0 */6 * * *"
env:
CARGO_TERM_COLOR: always
@@ -33,7 +32,8 @@ jobs:
uses: actions/checkout@v4
with:
repository: ethereum/hive
ref: master
# TODO: unpin when https://github.com/ethereum/hive/issues/1306 is fixed
ref: edd9969338dd1798ba2e61f049c7e3a15cef53e6
path: hivetests
- uses: actions/setup-go@v5
@@ -62,17 +62,19 @@ jobs:
- sim: ethereum/sync
- sim: devp2p
limit: discv4
- sim: devp2p
limit: eth
include:
# failures tracked in https://github.com/paradigmxyz/reth/issues/14825
- Status
- GetBlockHeaders
- ZeroRequestID
- GetBlockBodies
- MaliciousHandshake
- Transaction
- NewPooledTxs
# started failing after https://github.com/ethereum/go-ethereum/pull/31843, no
# action on our side, remove from here when we get unxpected passes on these tests
# - sim: devp2p
# limit: eth
# include:
# - MaliciousHandshake
# # failures tracked in https://github.com/paradigmxyz/reth/issues/14825
# - Status
# - GetBlockHeaders
# - ZeroRequestID
# - GetBlockBodies
# - Transaction
# - NewPooledTxs
- sim: devp2p
limit: discv5
include:
@@ -113,35 +115,35 @@ jobs:
# consume-engine
- sim: ethereum/eest/consume-engine
limit: .*tests/prague
limit: .*tests/prague.*
- sim: ethereum/eest/consume-engine
limit: .*tests/cancun
limit: .*tests/cancun.*
- sim: ethereum/eest/consume-engine
limit: .*tests/shanghai
limit: .*tests/shanghai.*
- sim: ethereum/eest/consume-engine
limit: .*tests/berlin
limit: .*tests/berlin.*
- sim: ethereum/eest/consume-engine
limit: .*tests/istanbul
limit: .*tests/istanbul.*
- sim: ethereum/eest/consume-engine
limit: .*tests/homestead
limit: .*tests/homestead.*
- sim: ethereum/eest/consume-engine
limit: .*tests/frontier
limit: .*tests/frontier.*
# consume-rlp
- sim: ethereum/eest/consume-rlp
limit: .*tests/prague
limit: .*tests/prague.*
- sim: ethereum/eest/consume-rlp
limit: .*tests/cancun
limit: .*tests/cancun.*
- sim: ethereum/eest/consume-rlp
limit: .*tests/shanghai
limit: .*tests/shanghai.*
- sim: ethereum/eest/consume-rlp
limit: .*tests/berlin
limit: .*tests/berlin.*
- sim: ethereum/eest/consume-rlp
limit: .*tests/istanbul
limit: .*tests/istanbul.*
- sim: ethereum/eest/consume-rlp
limit: .*tests/homestead
limit: .*tests/homestead.*
- sim: ethereum/eest/consume-rlp
limit: .*tests/frontier
limit: .*tests/frontier.*
needs:
- prepare-reth
- prepare-hive

View File

@@ -7,6 +7,9 @@ on:
merge_group:
push:
branches: [main]
schedule:
# Run once a day at 3:00 UTC
- cron: "0 3 * * *"
env:
CARGO_TERM_COLOR: always
@@ -19,6 +22,7 @@ concurrency:
jobs:
test:
name: test / ${{ matrix.network }}
if: github.event_name != 'schedule'
runs-on:
group: Reth
env:
@@ -53,7 +57,7 @@ jobs:
integration-success:
name: integration success
runs-on: ubuntu-latest
if: always()
if: always() && github.event_name != 'schedule'
needs: [test]
timeout-minutes: 30
steps:
@@ -61,3 +65,18 @@ jobs:
uses: re-actors/alls-green@release/v1
with:
jobs: ${{ toJSON(needs) }}
era-files:
name: era1 file integration tests once a day
if: github.event_name == 'schedule'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: rui314/setup-mold@v1
- uses: dtolnay/rust-toolchain@stable
- uses: taiki-e/install-action@nextest
- uses: Swatinem/rust-cache@v2
with:
cache-on-failure: true
- name: run era1 files integration tests
run: cargo nextest run --package reth-era --test it -- --ignored

View File

@@ -5,8 +5,11 @@ name: kurtosis-op
on:
workflow_dispatch:
schedule:
# run every 12 hours
- cron: "0 */12 * * *"
- cron: "0 */6 * * *"
push:
tags:
- '*'
env:
CARGO_TERM_COLOR: always
@@ -59,10 +62,12 @@ jobs:
sudo apt update
sudo apt install kurtosis-cli
kurtosis engine start
kurtosis run --enclave op-devnet github.com/ethpandaops/optimism-package --args-file .github/assets/kurtosis_op_network_params.yaml
# TODO: unpin optimism-package when https://github.com/ethpandaops/optimism-package/issues/340 is fixed
# kurtosis run --enclave op-devnet github.com/ethpandaops/optimism-package --args-file .github/assets/kurtosis_op_network_params.yaml
kurtosis run --enclave op-devnet github.com/ethpandaops/optimism-package@452133367b693e3ba22214a6615c86c60a1efd5e --args-file .github/assets/kurtosis_op_network_params.yaml
ENCLAVE_ID=$(curl http://127.0.0.1:9779/api/enclaves | jq --raw-output 'keys[0]')
GETH_PORT=$(curl "http://127.0.0.1:9779/api/enclaves/$ENCLAVE_ID/services" | jq '."op-el-1-op-geth-op-node-op-kurtosis".public_ports.rpc.number')
RETH_PORT=$(curl "http://127.0.0.1:9779/api/enclaves/$ENCLAVE_ID/services" | jq '."op-el-2-op-reth-op-node-op-kurtosis".public_ports.rpc.number')
GETH_PORT=$(curl "http://127.0.0.1:9779/api/enclaves/$ENCLAVE_ID/services" | jq '."op-el-2151908-1-op-geth-op-node-op-kurtosis".public_ports.rpc.number')
RETH_PORT=$(curl "http://127.0.0.1:9779/api/enclaves/$ENCLAVE_ID/services" | jq '."op-el-2151908-2-op-reth-op-node-op-kurtosis".public_ports.rpc.number')
echo "GETH_RPC=http://127.0.0.1:$GETH_PORT" >> $GITHUB_ENV
echo "RETH_RPC=http://127.0.0.1:$RETH_PORT" >> $GITHUB_ENV
@@ -76,8 +81,8 @@ jobs:
if [ $BLOCK_GETH -ge 100 ] && [ $BLOCK_RETH -ge 100 ] ; then exit 0; fi
echo "Waiting for clients to advance..., Reth: $BLOCK_RETH Geth: $BLOCK_GETH"
done
kurtosis service logs -a op-devnet op-el-2-op-reth-op-node-op-kurtosis
kurtosis service logs -a op-devnet op-cl-2-op-node-op-reth-op-kurtosis
kurtosis service logs -a op-devnet op-el-2151908-2-op-reth-op-node-op-kurtosis
kurtosis service logs -a op-devnet op-cl-2151908-2-op-node-op-reth-op-kurtosis
exit 1

View File

@@ -5,8 +5,11 @@ name: kurtosis
on:
workflow_dispatch:
schedule:
# run every 12 hours
- cron: "0 */12 * * *"
- cron: "0 */6 * * *"
push:
tags:
- '*'
env:
CARGO_TERM_COLOR: always

View File

@@ -20,9 +20,6 @@ jobs:
- type: ethereum
args: --workspace --lib --examples --tests --benches --locked
features: "ethereum asm-keccak jemalloc jemalloc-prof min-error-logs min-warn-logs min-info-logs min-debug-logs min-trace-logs"
- type: book
args: --manifest-path book/sources/Cargo.toml --workspace --bins
features: ""
steps:
- uses: actions/checkout@v4
- uses: rui314/setup-mold@v1
@@ -121,7 +118,7 @@ jobs:
- uses: rui314/setup-mold@v1
- uses: dtolnay/rust-toolchain@master
with:
toolchain: "1.85" # MSRV
toolchain: "1.86" # MSRV
- uses: Swatinem/rust-cache@v2
with:
cache-on-failure: true
@@ -158,8 +155,6 @@ jobs:
components: rustfmt
- name: Run fmt
run: cargo fmt --all --check
- name: Run fmt on book sources
run: cargo fmt --manifest-path book/sources/Cargo.toml --all --check
udeps:
name: udeps
@@ -209,7 +204,7 @@ jobs:
- name: Checkout repository
uses: actions/checkout@v4
- name: Run dprint
uses: dprint/check@v2.2
uses: dprint/check@v2.3
with:
config-path: dprint.json

86
.github/workflows/pr-title.yml vendored Normal file
View File

@@ -0,0 +1,86 @@
name: Pull Request
on:
pull_request:
types:
- opened
- reopened
- edited
- synchronize
permissions:
pull-requests: read
contents: read
jobs:
conventional-title:
name: Validate PR title is Conventional Commit
runs-on: ubuntu-latest
permissions:
pull-requests: write
steps:
- name: Check title
id: lint_pr_title
uses: amannn/action-semantic-pull-request@v5
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
types: |
feat
fix
chore
test
bench
perf
refactor
docs
ci
revert
deps
continue-on-error: true
- name: Add PR Comment for Invalid Title
if: steps.lint_pr_title.outcome == 'failure'
uses: marocchino/sticky-pull-request-comment@v2
with:
header: pr-title-lint-error
message: |
Your PR title doesn't follow the Conventional Commit guidelines.
**Example of valid titles:**
- `feat: add new user login`
- `fix: correct button size`
- `docs: update README`
**Usage:**
- `feat`: Introduces a new feature
- `fix`: Patches a bug
- `chore`: General maintenance tasks or updates
- `test`: Adding new tests or modifying existing tests
- `bench`: Adding new benchmarks or modifying existing benchmarks
- `perf`: Performance improvements
- `refactor`: Changes to improve code structure
- `docs`: Documentation updates
- `ci`: Changes to CI/CD configurations
- `revert`: Reverts a previously merged PR
- `deps`: Updates dependencies
**Breaking Changes**
Breaking changes are noted by using an exclamation mark. For example:
- `feat!: changed the API`
- `chore(node)!: Removed unused public function`
**Help**
For more information, follow the guidelines here: https://www.conventionalcommits.org/en/v1.0.0/
- name: Remove Comment for Valid Title
if: steps.lint_pr_title.outcome == 'success'
uses: marocchino/sticky-pull-request-comment@v2
with:
header: pr-title-lint-error
delete: true
- name: Fail workflow if title invalid
if: steps.lint_pr_title.outcome == 'failure'
run: exit 1

View File

@@ -12,7 +12,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Update Homebrew formula
uses: dawidd6/action-homebrew-bump-formula@v4
uses: dawidd6/action-homebrew-bump-formula@v5
with:
token: ${{ secrets.HOMEBREW }}
no_fork: true

View File

@@ -0,0 +1,56 @@
# This workflow is for building and pushing reproducible Docker images for releases.
name: release-reproducible
on:
push:
tags:
- v*
env:
DOCKER_REPRODUCIBLE_IMAGE_NAME: ghcr.io/${{ github.repository_owner }}/reth-reproducible
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-reproducible:
name: build and push reproducible image
runs-on: ubuntu-latest
needs: extract-version
permissions:
packages: write
contents: read
steps:
- uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Log in to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push reproducible image
uses: docker/build-push-action@v6
with:
context: .
file: ./Dockerfile.reproducible
push: true
tags: |
${{ env.DOCKER_REPRODUCIBLE_IMAGE_NAME }}:${{ needs.extract-version.outputs.VERSION }}
${{ env.DOCKER_REPRODUCIBLE_IMAGE_NAME }}:latest
cache-from: type=gha
cache-to: type=gha,mode=max
provenance: false
env:
DOCKER_BUILD_RECORD_UPLOAD: false

View File

@@ -7,48 +7,92 @@ on:
push:
tags:
- v*
workflow_dispatch:
inputs:
dry_run:
description: "Enable dry run mode (builds artifacts but skips uploads and release creation)"
type: boolean
default: false
env:
REPO_NAME: ${{ github.repository_owner }}/reth
OP_IMAGE_NAME: ${{ github.repository_owner }}/op-reth
IMAGE_NAME: ${{ github.repository_owner }}/reth
OP_IMAGE_NAME: ${{ github.repository_owner }}/op-reth
REPRODUCIBLE_IMAGE_NAME: ${{ github.repository_owner }}/reth-reproducible
CARGO_TERM_COLOR: always
DOCKER_IMAGE_NAME: ghcr.io/${{ github.repository_owner }}/reth
DOCKER_REPRODUCIBLE_IMAGE_NAME: ghcr.io/${{ github.repository_owner }}/reth-reproducible
DOCKER_IMAGE_NAME_URL: ghcr.io/${{ github.repository_owner }}/reth
DOCKER_OP_IMAGE_NAME_URL: ghcr.io/${{ github.repository_owner }}/op-reth
jobs:
dry-run:
name: check dry run
runs-on: ubuntu-latest
steps:
- run: |
echo "Dry run value: ${{ github.event.inputs.dry_run }}"
echo "Dry run enabled: ${{ github.event.inputs.dry_run == 'true'}}"
echo "Dry run disabled: ${{ github.event.inputs.dry_run != 'true'}}"
extract-version:
name: extract version
runs-on: ubuntu-latest
steps:
- name: Extract version
run: echo "VERSION=$(echo ${GITHUB_REF#refs/tags/})" >> $GITHUB_OUTPUT
run: echo "VERSION=${GITHUB_REF_NAME}" >> $GITHUB_OUTPUT
id: extract_version
outputs:
VERSION: ${{ steps.extract_version.outputs.VERSION }}
check-version:
name: check version
runs-on: ubuntu-latest
needs: extract-version
if: ${{ github.event.inputs.dry_run != 'true' }}
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- name: Verify crate version matches tag
# Check that the Cargo version starts with the tag,
# so that Cargo version 1.4.8 can be matched against both v1.4.8 and v1.4.8-rc.1
run: |
tag="${{ needs.extract-version.outputs.VERSION }}"
tag=${tag#v}
cargo_ver=$(cargo metadata --no-deps --format-version 1 | jq -r '.packages[0].version')
[[ "$tag" == "$cargo_ver"* ]] || { echo "Tag $tag doesnt match the Cargo version $cargo_ver"; exit 1; }
build:
name: build release
runs-on: ${{ matrix.configs.os }}
needs: extract-version
continue-on-error: ${{ matrix.configs.allow_fail }}
strategy:
fail-fast: true
matrix:
configs:
- target: x86_64-unknown-linux-gnu
os: ubuntu-24.04
profile: maxperf
allow_fail: false
- target: aarch64-unknown-linux-gnu
os: ubuntu-24.04
profile: maxperf
allow_fail: false
- target: x86_64-apple-darwin
os: macos-13
profile: maxperf
allow_fail: false
- target: aarch64-apple-darwin
os: macos-14
profile: maxperf
allow_fail: false
- target: x86_64-pc-windows-gnu
os: ubuntu-24.04
profile: maxperf
allow_fail: false
- target: riscv64gc-unknown-linux-gnu
os: ubuntu-24.04
profile: maxperf
allow_fail: true
build:
- command: build
binary: reth
@@ -96,55 +140,24 @@ jobs:
shell: bash
- name: Upload artifact
if: ${{ github.event.inputs.dry_run != 'true' }}
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
if: ${{ github.event.inputs.dry_run != 'true' }}
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
build-reproducible:
name: build and push reproducible image
runs-on: ubuntu-latest
needs: extract-version
permissions:
packages: write
contents: read
steps:
- uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Log in to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push reproducible image
uses: docker/build-push-action@v6
with:
context: .
file: ./Dockerfile.reproducible
push: true
tags: |
${{ env.DOCKER_REPRODUCIBLE_IMAGE_NAME }}:${{ needs.extract-version.outputs.VERSION }}
${{ env.DOCKER_REPRODUCIBLE_IMAGE_NAME }}:latest
cache-from: type=gha
cache-to: type=gha,mode=max
provenance: false
env:
DOCKER_BUILD_RECORD_UPLOAD: false
draft-release:
name: draft release
needs: [build, build-reproducible, extract-version]
runs-on: ubuntu-latest
needs: [build, extract-version]
if: ${{ github.event.inputs.dry_run != 'true' }}
env:
VERSION: ${{ needs.extract-version.outputs.VERSION }}
permissions:
@@ -171,6 +184,11 @@ jobs:
# The formatting here is borrowed from Lighthouse (which is borrowed from OpenEthereum):
# https://github.com/openethereum/openethereum/blob/6c2d392d867b058ff867c4373e40850ca3f96969/.github/workflows/build.yml
run: |
prerelease_flag=""
if [[ "${GITHUB_REF}" == *-rc* ]]; then
prerelease_flag="--prerelease"
fi
body=$(cat <<- "ENDBODY"
![image](https://raw.githubusercontent.com/paradigmxyz/reth/main/assets/reth-prod.png)
@@ -217,17 +235,27 @@ jobs:
The binaries are signed with the PGP key: `50FB 7CC5 5B2E 8AFA 59FE 03B7 AA5E D56A 7FBF 253E`
### Reth
| System | Architecture | Binary | PGP Signature |
|:---:|:---:|:---:|:---|
| <img src="https://simpleicons.org/icons/linux.svg" style="width: 32px;"/> | 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) |
| <img src="https://simpleicons.org/icons/linux.svg" style="width: 32px;"/> | 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) |
| <img src="https://simpleicons.org/icons/windows.svg" style="width: 32px;"/> | 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) |
| <img src="https://simpleicons.org/icons/apple.svg" style="width: 32px;"/> | 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) |
| <img src="https://simpleicons.org/icons/apple.svg" style="width: 32px;"/> | 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** |
| <img src="https://simpleicons.org/icons/docker.svg" style="width: 32px;"/> | Docker | | [${{ env.IMAGE_NAME }}](https://github.com/paradigmxyz/reth/pkgs/container/reth) |
| <img src="https://simpleicons.org/icons/docker.svg" style="width: 32px;"/> | Docker (Reproducible) | | [${{ env.IMAGE_NAME }}-reproducible](https://github.com/paradigmxyz/reth/pkgs/container/reth-reproducible) |
| <img src="https://www.svgrepo.com/download/473700/linux.svg" width="50"/> | 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) |
| <img src="https://www.svgrepo.com/download/473700/linux.svg" width="50"/> | 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) |
| <img src="https://www.svgrepo.com/download/513083/windows-174.svg" width="50"/> | 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) |
| <img src="https://www.svgrepo.com/download/511330/apple-173.svg" width="50"/> | 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) |
| <img src="https://www.svgrepo.com/download/511330/apple-173.svg" width="50"/> | 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) |
| <img src="https://www.svgrepo.com/download/473589/docker.svg" width="50"/> | Docker | [${{ env.IMAGE_NAME }}](${{ env.DOCKER_IMAGE_NAME_URL }}) | - |
### OP-Reth
| System | Architecture | Binary | PGP Signature |
|:---:|:---:|:---:|:---|
| <img src="https://www.svgrepo.com/download/473700/linux.svg" width="50"/> | x86_64 | [op-reth-${{ env.VERSION }}-x86_64-unknown-linux-gnu.tar.gz](https://github.com/${{ env.REPO_NAME }}/releases/download/${{ env.VERSION }}/op-reth-${{ env.VERSION }}-x86_64-unknown-linux-gnu.tar.gz) | [PGP Signature](https://github.com/${{ env.REPO_NAME }}/releases/download/${{ env.VERSION }}/op-reth-${{ env.VERSION }}-x86_64-unknown-linux-gnu.tar.gz.asc) |
| <img src="https://www.svgrepo.com/download/473700/linux.svg" width="50"/> | aarch64 | [op-reth-${{ env.VERSION }}-aarch64-unknown-linux-gnu.tar.gz](https://github.com/${{ env.REPO_NAME }}/releases/download/${{ env.VERSION }}/op-reth-${{ env.VERSION }}-aarch64-unknown-linux-gnu.tar.gz) | [PGP Signature](https://github.com/${{ env.REPO_NAME }}/releases/download/${{ env.VERSION }}/op-reth-${{ env.VERSION }}-aarch64-unknown-linux-gnu.tar.gz.asc) |
| <img src="https://www.svgrepo.com/download/513083/windows-174.svg" width="50"/> | x86_64 | [op-reth-${{ env.VERSION }}-x86_64-pc-windows-gnu.tar.gz](https://github.com/${{ env.REPO_NAME }}/releases/download/${{ env.VERSION }}/op-reth-${{ env.VERSION }}-x86_64-pc-windows-gnu.tar.gz) | [PGP Signature](https://github.com/${{ env.REPO_NAME }}/releases/download/${{ env.VERSION }}/op-reth-${{ env.VERSION }}-x86_64-pc-windows-gnu.tar.gz.asc) |
| <img src="https://www.svgrepo.com/download/511330/apple-173.svg" width="50"/> | x86_64 | [op-reth-${{ env.VERSION }}-x86_64-apple-darwin.tar.gz](https://github.com/${{ env.REPO_NAME }}/releases/download/${{ env.VERSION }}/op-reth-${{ env.VERSION }}-x86_64-apple-darwin.tar.gz) | [PGP Signature](https://github.com/${{ env.REPO_NAME }}/releases/download/${{ env.VERSION }}/op-reth-${{ env.VERSION }}-x86_64-apple-darwin.tar.gz.asc) |
| <img src="https://www.svgrepo.com/download/511330/apple-173.svg" width="50"/> | aarch64 | [op-reth-${{ env.VERSION }}-aarch64-apple-darwin.tar.gz](https://github.com/${{ env.REPO_NAME }}/releases/download/${{ env.VERSION }}/op-reth-${{ env.VERSION }}-aarch64-apple-darwin.tar.gz) | [PGP Signature](https://github.com/${{ env.REPO_NAME }}/releases/download/${{ env.VERSION }}/op-reth-${{ env.VERSION }}-aarch64-apple-darwin.tar.gz.asc) |
| <img src="https://www.svgrepo.com/download/473589/docker.svg" width="50"/> | Docker | [${{ env.OP_IMAGE_NAME }}](${{ env.DOCKER_OP_IMAGE_NAME_URL }}) | - |
ENDBODY
)
assets=()
@@ -235,4 +263,26 @@ jobs:
assets+=("$asset/$asset")
done
tag_name="${{ env.VERSION }}"
echo "$body" | gh release create --draft -t "Reth $tag_name" -F "-" "$tag_name" "${assets[@]}"
echo "$body" | gh release create --draft $prerelease_flag -t "Reth $tag_name" -F "-" "$tag_name" "${assets[@]}"
dry-run-summary:
name: dry run summary
runs-on: ubuntu-latest
needs: [build, extract-version]
if: ${{ github.event.inputs.dry_run == 'true' }}
env:
VERSION: ${{ needs.extract-version.outputs.VERSION }}
steps:
- name: Summarize dry run
run: |
echo "## 🧪 Release Dry Run Summary"
echo ""
echo "✅ Successfully completed dry run for commit ${{ github.sha }}"
echo ""
echo "### What would happen in a real release:"
echo "- Binary artifacts would be uploaded to GitHub"
echo "- Docker images would be pushed to registry"
echo "- A draft release would be created"
echo ""
echo "### Next Steps"
echo "To perform a real release, push a git tag."

View File

@@ -0,0 +1,38 @@
name: reproducible-build
on:
workflow_dispatch: {}
schedule:
- cron: "0 1 */2 * *"
jobs:
build:
name: build reproducible binaries
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: rui314/setup-mold@v1
- uses: dtolnay/rust-toolchain@stable
with:
target: x86_64-unknown-linux-gnu
- name: Install cross main
run: |
cargo install cross --git https://github.com/cross-rs/cross
- name: Install cargo-cache
run: |
cargo install cargo-cache
- uses: Swatinem/rust-cache@v2
with:
cache-on-failure: true
- name: Build Reth
run: |
make build-reproducible
mv target/x86_64-unknown-linux-gnu/release/reth reth-build-1
- name: Clean cache
run: make clean && cargo cache -a
- name: Build Reth again
run: |
make build-reproducible
mv target/x86_64-unknown-linux-gnu/release/reth reth-build-2
- name: Compare binaries
run: cmp reth-build-1 reth-build-2

67
.github/workflows/sync-era.yml vendored Normal file
View File

@@ -0,0 +1,67 @@
# Runs sync tests with ERA stage enabled.
name: sync-era test
on:
workflow_dispatch:
schedule:
- cron: "0 */6 * * *"
env:
CARGO_TERM_COLOR: always
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
sync:
name: sync (${{ matrix.chain.bin }})
runs-on:
group: Reth
env:
RUST_LOG: info,sync=error
RUST_BACKTRACE: 1
timeout-minutes: 60
strategy:
matrix:
chain:
- build: install
bin: reth
chain: mainnet
tip: "0x91c90676cab257a59cd956d7cb0bceb9b1a71d79755c23c7277a0697ccfaf8c4"
block: 100000
unwind-target: "0x52e0509d33a988ef807058e2980099ee3070187f7333aae12b64d4d675f34c5a"
- build: install-op
bin: op-reth
chain: base
tip: "0xbb9b85352c7ebca6ba8efc63bd66cecd038c92ec8ebd02e153a3e0b197e672b7"
block: 10000
unwind-target: "0x118a6e922a8c6cab221fc5adfe5056d2b72d58c6580e9c5629de55299e2cf8de"
steps:
- uses: actions/checkout@v4
- uses: rui314/setup-mold@v1
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
with:
cache-on-failure: true
- name: Build ${{ matrix.chain.bin }}
run: make ${{ matrix.chain.build }}
- name: Run sync with ERA enabled
run: |
${{ matrix.chain.bin }} node \
--chain ${{ matrix.chain.chain }} \
--debug.tip ${{ matrix.chain.tip }} \
--debug.max-block ${{ matrix.chain.block }} \
--debug.terminate
--era.enable
- name: Verify the target block hash
run: |
${{ matrix.chain.bin }} db --chain ${{ matrix.chain.chain }} get static-file headers ${{ matrix.chain.block }} \
| grep ${{ matrix.chain.tip }}
- name: Run stage unwind for 100 blocks
run: |
${{ matrix.chain.bin }} stage unwind num-blocks 100 --chain ${{ matrix.chain.chain }}
- name: Run stage unwind to block hash
run: |
${{ matrix.chain.bin }} stage unwind to-block ${{ matrix.chain.unwind-target }} --chain ${{ matrix.chain.chain }}

View File

@@ -3,7 +3,9 @@
name: sync test
on:
merge_group:
workflow_dispatch:
schedule:
- cron: "0 */6 * * *"
env:
CARGO_TERM_COLOR: always
@@ -58,7 +60,7 @@ jobs:
| grep ${{ matrix.chain.tip }}
- name: Run stage unwind for 100 blocks
run: |
${{ matrix.chain.bin }} stage --chain ${{ matrix.chain.chain }} unwind num-blocks 100
${{ matrix.chain.bin }} stage unwind num-blocks 100 --chain ${{ matrix.chain.chain }}
- name: Run stage unwind to block hash
run: |
${{ matrix.chain.bin }} stage --chain ${{ matrix.chain.chain }} unwind to-block ${{ matrix.chain.unwind-target }}
${{ matrix.chain.bin }} stage unwind to-block ${{ matrix.chain.unwind-target }} --chain ${{ matrix.chain.chain }}

View File

@@ -42,10 +42,6 @@ jobs:
args: --features "asm-keccak" --locked --exclude reth --exclude reth-bench --exclude "example-*" --exclude "reth-ethereum-*" --exclude "*-ethereum"
partition: 2
total_partitions: 2
- type: book
args: --manifest-path book/sources/Cargo.toml
partition: 1
total_partitions: 1
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
@@ -81,7 +77,7 @@ jobs:
uses: actions/checkout@v4
with:
repository: ethereum/tests
ref: 59781f1c6cce3d6c161751ab3512d79fa75d5597
ref: 81862e4848585a438d64f911a19b3825f0f4cd95
path: testing/ef-tests/ethereum-tests
submodules: recursive
fetch-depth: 1

36
.github/workflows/update-superchain.yml vendored Normal file
View File

@@ -0,0 +1,36 @@
name: Update Superchain Config
on:
schedule:
- cron: '0 3 * * 0'
workflow_dispatch:
permissions:
contents: write
jobs:
update-superchain:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install required tools
run: |
sudo apt-get update
sudo apt-get install -y jq zstd qpdf yq
- name: Run fetch_superchain_config.sh
run: |
chmod +x crates/optimism/chainspec/res/fetch_superchain_config.sh
cd crates/optimism/chainspec/res
./fetch_superchain_config.sh
- name: Create Pull Request
uses: peter-evans/create-pull-request@v7
with:
commit-message: "chore: update superchain config"
title: "chore: update superchain config"
body: "This PR updates the superchain configs via scheduled workflow."
branch: "ci/update-superchain-config"
delete-branch: true

View File

@@ -11,7 +11,7 @@ on:
jobs:
check-reth:
runs-on: ubuntu-20.04
runs-on: ubuntu-24.04
timeout-minutes: 60
steps:
@@ -30,7 +30,7 @@ jobs:
run: cargo check --target x86_64-pc-windows-gnu
check-op-reth:
runs-on: ubuntu-20.04
runs-on: ubuntu-24.04
timeout-minutes: 60
steps:

3
.gitignore vendored
View File

@@ -54,5 +54,8 @@ rustc-ice-*
# Book sources should be able to build with the latest version
book/sources/Cargo.lock
# vocs node_modules
book/vocs/node_modules
# Cargo chef recipe file
recipe.json

312
CLAUDE.md Normal file
View File

@@ -0,0 +1,312 @@
# Reth Development Guide for AI Agents
This guide provides comprehensive instructions for AI agents working on the Reth codebase. It covers the architecture, development workflows, and critical guidelines for effective contributions.
## Project Overview
Reth is a high-performance Ethereum execution client written in Rust, focusing on modularity, performance, and contributor-friendliness. The codebase is organized into well-defined crates with clear boundaries and responsibilities.
## Architecture Overview
### Core Components
1. **Consensus (`crates/consensus/`)**: Validates blocks according to Ethereum consensus rules
2. **Storage (`crates/storage/`)**: Hybrid database using MDBX + static files for optimal performance
3. **Networking (`crates/net/`)**: P2P networking stack with discovery, sync, and transaction propagation
4. **RPC (`crates/rpc/`)**: JSON-RPC server supporting all standard Ethereum APIs
5. **Execution (`crates/evm/`, `crates/ethereum/`)**: Transaction execution and state transitions
6. **Pipeline (`crates/stages/`)**: Staged sync architecture for blockchain synchronization
7. **Trie (`crates/trie/`)**: Merkle Patricia Trie implementation with parallel state root computation
8. **Node Builder (`crates/node/`)**: High-level node orchestration and configuration
9 **The Consensus Engine (`crates/engine/`)**: Handles processing blocks received from the consensus layer with the Engine API (newPayload, forkchoiceUpdated)
### Key Design Principles
- **Modularity**: Each crate can be used as a standalone library
- **Performance**: Extensive use of parallelism, memory-mapped I/O, and optimized data structures
- **Extensibility**: Traits and generic types allow for different implementations (Ethereum, Optimism, etc.)
- **Type Safety**: Strong typing throughout with minimal use of dynamic dispatch
## Development Workflow
### Code Style and Standards
1. **Formatting**: Always use nightly rustfmt
```bash
cargo +nightly fmt --all
```
2. **Linting**: Run clippy with all features
```bash
RUSTFLAGS="-D warnings" cargo +nightly clippy --workspace --lib --examples --tests --benches --all-features --locked
```
3. **Testing**: Use nextest for faster test execution
```bash
cargo nextest run --workspace
```
### Common Contribution Types
Based on actual recent PRs, here are typical contribution patterns:
#### 1. Small Bug Fixes (1-10 lines)
Real example: Fixing beacon block root handling ([#16767](https://github.com/paradigmxyz/reth/pull/16767))
```rust
// Changed a single line to fix logic error
- parent_beacon_block_root: parent.parent_beacon_block_root(),
+ parent_beacon_block_root: parent.parent_beacon_block_root().map(|_| B256::ZERO),
```
#### 2. Integration with Upstream Changes
Real example: Integrating revm updates ([#16752](https://github.com/paradigmxyz/reth/pull/16752))
```rust
// Update code to use new APIs from dependencies
- if self.fork_tracker.is_shanghai_activated() {
- if let Err(err) = transaction.ensure_max_init_code_size(MAX_INIT_CODE_BYTE_SIZE) {
+ if let Some(init_code_size_limit) = self.fork_tracker.max_initcode_size() {
+ if let Err(err) = transaction.ensure_max_init_code_size(init_code_size_limit) {
```
#### 3. Adding Comprehensive Tests
Real example: ETH69 protocol tests ([#16759](https://github.com/paradigmxyz/reth/pull/16759))
```rust
#[tokio::test(flavor = "multi_thread")]
async fn test_eth69_peers_can_connect() {
// Create test network with specific protocol versions
let p0 = PeerConfig::with_protocols(NoopProvider::default(), Some(EthVersion::Eth69.into()));
// Test connection and version negotiation
}
```
#### 4. Making Components Generic
Real example: Making EthEvmConfig generic over chainspec ([#16758](https://github.com/paradigmxyz/reth/pull/16758))
```rust
// Before: Hardcoded to ChainSpec
- pub struct EthEvmConfig<EvmFactory = EthEvmFactory> {
- pub executor_factory: EthBlockExecutorFactory<RethReceiptBuilder, Arc<ChainSpec>, EvmFactory>,
// After: Generic over any chain spec type
+ pub struct EthEvmConfig<C = ChainSpec, EvmFactory = EthEvmFactory>
+ where
+ C: EthereumHardforks,
+ {
+ pub executor_factory: EthBlockExecutorFactory<RethReceiptBuilder, Arc<C>, EvmFactory>,
```
#### 5. Resource Management Improvements
Real example: ETL directory cleanup ([#16770](https://github.com/paradigmxyz/reth/pull/16770))
```rust
// Add cleanup logic on startup
+ if let Err(err) = fs::remove_dir_all(&etl_path) {
+ warn!(target: "reth::cli", ?etl_path, %err, "Failed to remove ETL path on launch");
+ }
```
#### 6. Feature Additions
Real example: Sharded mempool support ([#16756](https://github.com/paradigmxyz/reth/pull/16756))
```rust
// Add new filtering policies for transaction announcements
pub struct ShardedMempoolAnnouncementFilter<T> {
pub inner: T,
pub shard_bits: u8,
pub node_id: Option<B256>,
}
```
### Testing Guidelines
1. **Unit Tests**: Test individual functions and components
2. **Integration Tests**: Test interactions between components
3. **Benchmarks**: For performance-critical code
4. **Fuzz Tests**: For parsing and serialization code
5. **Property Tests**: For checking component correctness on a wide variety of inputs
Example test structure:
```rust
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_component_behavior() {
// Arrange
let component = Component::new();
// Act
let result = component.operation();
// Assert
assert_eq!(result, expected);
}
}
```
### Performance Considerations
1. **Avoid Allocations in Hot Paths**: Use references and borrowing
2. **Parallel Processing**: Use rayon for CPU-bound parallel work
3. **Async/Await**: Use tokio for I/O-bound operations
4. **File Operations**: Use `reth_fs_util` instead of `std::fs` for better error handling
### Common Pitfalls
1. **Don't Block Async Tasks**: Use `spawn_blocking` for CPU-intensive work or work with lots of blocking I/O
2. **Handle Errors Properly**: Use `?` operator and proper error types
### What to Avoid
Based on PR patterns, avoid:
1. **Large, sweeping changes**: Keep PRs focused and reviewable
2. **Mixing unrelated changes**: One logical change per PR
3. **Ignoring CI failures**: All checks must pass
4. **Incomplete implementations**: Finish features before submitting
### CI Requirements
Before submitting changes, ensure:
1. **Format Check**: `cargo +nightly fmt --all --check`
2. **Clippy**: No warnings with `RUSTFLAGS="-D warnings"`
3. **Tests Pass**: All unit and integration tests
4. **Documentation**: Update relevant docs and add doc comments with `cargo docs --document-private-items`
5. **Commit Messages**: Follow conventional format (feat:, fix:, chore:, etc.)
### Opening PRs against <https://github.com/paradigmxyz/reth>
Label PRs appropriately, first check the available labels and then apply the relevant ones:
* when changes are RPC related, add A-rpc label
* when changes are docs related, add C-docs label
* when changes are optimism related (e.g. new feature or exclusive changes to crates/optimism), add A-op-reth label
* ... and so on, check the available labels for more options.
If changes in reth include changes to dependencies, run commands `zepter` and `make lint-toml` before finalizing the pr. Assume `zepter` binary is installed.
### Debugging Tips
1. **Logging**: Use `tracing` crate with appropriate levels
```rust
tracing::debug!(target: "reth::component", ?value, "description");
```
2. **Metrics**: Add metrics for monitoring
```rust
metrics::counter!("reth_component_operations").increment(1);
```
3. **Test Isolation**: Use separate test databases/directories
### Finding Where to Contribute
1. **Check Issues**: Look for issues labeled `good-first-issue` or `help-wanted`
2. **Review TODOs**: Search for `TODO` comments in the codebase
3. **Improve Tests**: Areas with low test coverage are good targets
4. **Documentation**: Improve code comments and documentation
5. **Performance**: Profile and optimize hot paths (with benchmarks)
### Common PR Patterns
#### Small, Focused Changes
Most PRs change only 1-5 files. Examples:
- Single-line bug fixes
- Adding a missing trait implementation
- Updating error messages
- Adding test cases for edge conditions
#### Integration Work
When dependencies update (especially revm), code needs updating:
- Check for breaking API changes
- Update to use new features (like EIP implementations)
- Ensure compatibility with new versions
#### Test Improvements
Tests often need expansion for:
- New protocol versions (ETH68, ETH69)
- Edge cases in state transitions
- Network behavior under specific conditions
- Concurrent operations
#### Making Code More Generic
Common refactoring pattern:
- Replace concrete types with generics
- Add trait bounds for flexibility
- Enable reuse across different chain types (Ethereum, Optimism)
### Example Contribution Workflow
Let's say you want to fix a bug where external IP resolution fails on startup:
1. **Create a branch**:
```bash
git checkout -b fix-external-ip-resolution
```
2. **Find the relevant code**:
```bash
# Search for IP resolution code
rg "external.*ip" --type rust
```
3. **Reason about the problem, when the problem is identified, make the fix**:
```rust
// In crates/net/discv4/src/lib.rs
pub fn resolve_external_ip() -> Option<IpAddr> {
// Add fallback mechanism
nat::external_ip()
.or_else(|| nat::external_ip_from_stun())
.or_else(|| Some(DEFAULT_IP))
}
```
4. **Add a test**:
```rust
#[test]
fn test_external_ip_fallback() {
// Test that resolution has proper fallbacks
}
```
5. **Run checks**:
```bash
cargo +nightly fmt --all
cargo clippy --all-features
cargo test -p reth-discv4
```
6. **Commit with clear message**:
```bash
git commit -m "fix: add fallback for external IP resolution
Previously, node startup could fail if external IP resolution
failed. This adds fallback mechanisms to ensure the node can
always start with a reasonable default."
```
## Quick Reference
### Essential Commands
```bash
# Format code
cargo +nightly fmt --all
# Run lints
RUSTFLAGS="-D warnings" cargo +nightly clippy --workspace --all-features --locked
# Run tests
cargo nextest run --workspace
# Run specific benchmark
cargo bench --bench bench_name
# Build optimized binary
cargo build --release --features "jemalloc asm-keccak"
# Check compilation for all features
cargo check --workspace --all-features
# Check documentation
cargo docs --document-private-items
```

4500
Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,7 +1,7 @@
[workspace.package]
version = "1.3.0"
version = "1.4.8"
edition = "2021"
rust-version = "1.85"
rust-version = "1.86"
license = "MIT OR Apache-2.0"
homepage = "https://paradigmxyz.github.io/reth"
repository = "https://github.com/paradigmxyz/reth"
@@ -11,6 +11,7 @@ exclude = [".github/"]
members = [
"bin/reth-bench/",
"bin/reth/",
"crates/alloy-provider/",
"crates/chain-state/",
"crates/chainspec/",
"crates/cli/cli/",
@@ -28,8 +29,11 @@ members = [
"crates/engine/service",
"crates/engine/tree/",
"crates/engine/util/",
"crates/era",
"crates/era-downloader",
"crates/era-utils",
"crates/errors/",
"crates/ethereum-forks/",
"crates/ethereum/hardforks/",
"crates/ethereum/cli/",
"crates/ethereum/consensus/",
"crates/ethereum/engine-primitives/",
@@ -39,7 +43,7 @@ members = [
"crates/ethereum/primitives/",
"crates/ethereum/reth/",
"crates/etl/",
"crates/evm/",
"crates/evm/evm",
"crates/evm/execution-errors",
"crates/evm/execution-types",
"crates/exex/exex/",
@@ -73,7 +77,6 @@ members = [
"crates/optimism/evm/",
"crates/optimism/hardforks/",
"crates/optimism/node/",
"crates/optimism/chain-registry/",
"crates/optimism/payload/",
"crates/optimism/primitives/",
"crates/optimism/reth/",
@@ -102,11 +105,12 @@ members = [
"crates/rpc/rpc-layer",
"crates/rpc/rpc-server-types/",
"crates/rpc/rpc-testing-util/",
"crates/rpc/rpc-types-compat/",
"crates/rpc/rpc-convert/",
"crates/rpc/rpc/",
"crates/stages/api/",
"crates/stages/stages/",
"crates/stages/types/",
"crates/stateless",
"crates/static-file/static-file",
"crates/static-file/types/",
"crates/storage/codecs/",
@@ -130,18 +134,25 @@ members = [
"crates/trie/db",
"crates/trie/parallel/",
"crates/trie/sparse",
"crates/trie/sparse-parallel/",
"crates/trie/trie",
"examples/beacon-api-sidecar-fetcher/",
"examples/beacon-api-sse/",
"examples/bsc-p2p",
"examples/custom-dev-node/",
"examples/custom-node/",
"examples/custom-engine-types/",
"examples/custom-evm/",
"examples/custom-inspector/",
"examples/custom-node-components/",
"examples/custom-payload-builder/",
"examples/custom-rlpx-subprotocol",
"examples/custom-node",
"examples/db-access",
"examples/engine-api-access",
"examples/exex-hello-world",
"examples/exex-subscription",
"examples/exex-test",
"examples/manual-p2p/",
"examples/network-txpool/",
"examples/network/",
@@ -150,11 +161,12 @@ members = [
"examples/node-event-hooks/",
"examples/polygon-p2p/",
"examples/rpc-db/",
"examples/stateful-precompile/",
"examples/precompile-cache/",
"examples/txpool-tracing/",
"examples/custom-beacon-withdrawals",
"testing/ef-tests/",
"testing/testing-utils",
"crates/tracing-otlp",
]
default-members = ["bin/reth"]
exclude = ["book/sources", "book/cli"]
@@ -208,7 +220,7 @@ manual_clamp = "warn"
manual_is_variant_and = "warn"
manual_string_new = "warn"
match_same_arms = "warn"
missing-const-for-fn = "allow" # TODO: https://github.com/rust-lang/rust-clippy/issues/14020
missing-const-for-fn = "warn"
mutex_integer = "warn"
naive_bytecount = "warn"
needless_bitwise_bool = "warn"
@@ -309,6 +321,7 @@ codegen-units = 1
# reth
op-reth = { path = "crates/optimism/bin" }
reth = { path = "bin/reth" }
reth-alloy-provider = { path = "crates/alloy-provider" }
reth-basic-payload-builder = { path = "crates/payload/basic" }
reth-bench = { path = "bin/reth-bench" }
reth-chain-state = { path = "crates/chain-state" }
@@ -319,7 +332,7 @@ reth-cli-runner = { path = "crates/cli/runner" }
reth-cli-util = { path = "crates/cli/util" }
reth-codecs = { path = "crates/storage/codecs" }
reth-codecs-derive = { path = "crates/storage/codecs/derive" }
reth-config = { path = "crates/config" }
reth-config = { path = "crates/config", default-features = false }
reth-consensus = { path = "crates/consensus/consensus", default-features = false }
reth-consensus-common = { path = "crates/consensus/common", default-features = false }
reth-consensus-debug-client = { path = "crates/consensus/debug-client" }
@@ -338,19 +351,22 @@ reth-engine-primitives = { path = "crates/engine/primitives", default-features =
reth-engine-tree = { path = "crates/engine/tree" }
reth-engine-service = { path = "crates/engine/service" }
reth-engine-util = { path = "crates/engine/util" }
reth-era = { path = "crates/era" }
reth-era-downloader = { path = "crates/era-downloader" }
reth-era-utils = { path = "crates/era-utils" }
reth-errors = { path = "crates/errors" }
reth-eth-wire = { path = "crates/net/eth-wire" }
reth-eth-wire-types = { path = "crates/net/eth-wire-types" }
reth-ethereum-cli = { path = "crates/ethereum/cli" }
reth-ethereum-consensus = { path = "crates/ethereum/consensus" }
reth-ethereum-consensus = { path = "crates/ethereum/consensus", default-features = false }
reth-ethereum-engine-primitives = { path = "crates/ethereum/engine-primitives", default-features = false }
reth-ethereum-forks = { path = "crates/ethereum-forks", default-features = false }
reth-ethereum-forks = { path = "crates/ethereum/hardforks", default-features = false }
reth-ethereum-payload-builder = { path = "crates/ethereum/payload" }
reth-ethereum-primitives = { path = "crates/ethereum/primitives", default-features = false }
reth-ethereum = { path = "crates/ethereum/reth" }
reth-etl = { path = "crates/etl" }
reth-evm = { path = "crates/evm", default-features = false }
reth-evm-ethereum = { path = "crates/ethereum/evm" }
reth-evm = { path = "crates/evm/evm", default-features = false }
reth-evm-ethereum = { path = "crates/ethereum/evm", default-features = false }
reth-optimism-evm = { path = "crates/optimism/evm", default-features = false }
reth-execution-errors = { path = "crates/evm/execution-errors", default-features = false }
reth-execution-types = { path = "crates/evm/execution-types", default-features = false }
@@ -381,7 +397,6 @@ reth-optimism-node = { path = "crates/optimism/node" }
reth-node-types = { path = "crates/node/types" }
reth-op = { path = "crates/optimism/reth", default-features = false }
reth-optimism-chainspec = { path = "crates/optimism/chainspec", default-features = false }
reth-optimism-chain-resitry = { path = "crates/optimism/chain-registry" }
reth-optimism-cli = { path = "crates/optimism/cli" }
reth-optimism-consensus = { path = "crates/optimism/consensus", default-features = false }
reth-optimism-forks = { path = "crates/optimism/hardforks", default-features = false }
@@ -410,10 +425,11 @@ reth-rpc-eth-api = { path = "crates/rpc/rpc-eth-api" }
reth-rpc-eth-types = { path = "crates/rpc/rpc-eth-types", default-features = false }
reth-rpc-layer = { path = "crates/rpc/rpc-layer" }
reth-rpc-server-types = { path = "crates/rpc/rpc-server-types" }
reth-rpc-types-compat = { path = "crates/rpc/rpc-types-compat" }
reth-rpc-convert = { path = "crates/rpc/rpc-convert" }
reth-stages = { path = "crates/stages/stages" }
reth-stages-api = { path = "crates/stages/api" }
reth-stages-types = { path = "crates/stages/types", default-features = false }
reth-stateless = { path = "crates/stateless" }
reth-static-file = { path = "crates/static-file/static-file" }
reth-static-file-types = { path = "crates/static-file/types", default-features = false }
reth-storage-api = { path = "crates/storage/storage-api", default-features = false }
@@ -427,75 +443,76 @@ reth-trie = { path = "crates/trie/trie" }
reth-trie-common = { path = "crates/trie/common", default-features = false }
reth-trie-db = { path = "crates/trie/db" }
reth-trie-parallel = { path = "crates/trie/parallel" }
reth-trie-sparse = { path = "crates/trie/sparse" }
reth-trie-sparse = { path = "crates/trie/sparse", default-features = false }
reth-trie-sparse-parallel = { path = "crates/trie/sparse-parallel" }
reth-zstd-compressors = { path = "crates/storage/zstd-compressors", default-features = false }
reth-ress-protocol = { path = "crates/ress/protocol" }
reth-ress-provider = { path = "crates/ress/provider" }
# revm
revm = { version = "20.0.0-alpha.5", default-features = false }
revm-bytecode = { version = "1.0.0-alpha.3", default-features = false }
revm-database = { version = "1.0.0-alpha.3", default-features = false }
revm-state = { version = "1.0.0-alpha.3", default-features = false }
revm-primitives = { version = "16.0.0-alpha.3", default-features = false }
revm-interpreter = { version = "16.0.0-alpha.5", default-features = false }
revm-inspector = { version = "1.0.0-alpha.5", default-features = false }
revm-context = { version = "1.0.0-alpha.4", default-features = false }
revm-context-interface = { version = "1.0.0-alpha.4", default-features = false }
revm-database-interface = { version = "1.0.0-alpha.3", default-features = false }
op-revm = { version = "1.0.0-alpha.4", default-features = false }
revm-inspectors = "0.17.0-alpha.1"
revm = { version = "26.0.1", default-features = false }
revm-bytecode = { version = "5.0.0", default-features = false }
revm-database = { version = "6.0.0", default-features = false }
revm-state = { version = "6.0.0", default-features = false }
revm-primitives = { version = "20.0.0", default-features = false }
revm-interpreter = { version = "22.0.1", default-features = false }
revm-inspector = { version = "7.0.1", default-features = false }
revm-context = { version = "7.0.1", default-features = false }
revm-context-interface = { version = "7.0.0", default-features = false }
revm-database-interface = { version = "6.0.0", default-features = false }
op-revm = { version = "7.0.1", default-features = false }
revm-inspectors = "0.25.0"
# eth
alloy-chains = { version = "0.1.64", default-features = false }
alloy-dyn-abi = "0.8.20"
alloy-eip2124 = { version = "0.1.0", default-features = false }
alloy-evm = { version = "0.1.0-alpha.1", default-features = false }
alloy-primitives = { version = "0.8.20", default-features = false, features = ["map-foldhash"] }
alloy-chains = { version = "0.2.0", default-features = false }
alloy-dyn-abi = "1.2.0"
alloy-eip2124 = { version = "0.2.0", default-features = false }
alloy-evm = { version = "0.12", default-features = false }
alloy-primitives = { version = "1.2.0", default-features = false, features = ["map-foldhash"] }
alloy-rlp = { version = "0.3.10", default-features = false, features = ["core-net"] }
alloy-sol-types = { version = "0.8.20", default-features = false }
alloy-trie = { version = "0.7.9", default-features = false }
alloy-sol-macro = "1.2.0"
alloy-sol-types = { version = "1.2.0", default-features = false }
alloy-trie = { version = "0.9.0", default-features = false }
alloy-hardforks = "0.1"
alloy-hardforks = "0.2.7"
alloy-consensus = { version = "0.12.5", default-features = false }
alloy-contract = { version = "0.12.5", default-features = false }
alloy-eips = { version = "0.12.5", default-features = false }
alloy-genesis = { version = "0.12.5", default-features = false }
alloy-json-rpc = { version = "0.12.5", default-features = false }
alloy-network = { version = "0.12.5", default-features = false }
alloy-network-primitives = { version = "0.12.5", default-features = false }
alloy-node-bindings = { version = "0.12.5", default-features = false }
alloy-provider = { version = "0.12.5", features = ["reqwest"], default-features = false }
alloy-pubsub = { version = "0.12.5", default-features = false }
alloy-rpc-client = { version = "0.12.5", default-features = false }
alloy-rpc-types = { version = "0.12.5", features = ["eth"], default-features = false }
alloy-rpc-types-admin = { version = "0.12.5", default-features = false }
alloy-rpc-types-anvil = { version = "0.12.5", default-features = false }
alloy-rpc-types-beacon = { version = "0.12.5", default-features = false }
alloy-rpc-types-debug = { version = "0.12.5", default-features = false }
alloy-rpc-types-engine = { version = "0.12.5", default-features = false }
alloy-rpc-types-eth = { version = "0.12.5", default-features = false }
alloy-rpc-types-mev = { version = "0.12.5", default-features = false }
alloy-rpc-types-trace = { version = "0.12.5", default-features = false }
alloy-rpc-types-txpool = { version = "0.12.5", default-features = false }
alloy-serde = { version = "0.12.5", default-features = false }
alloy-signer = { version = "0.12.5", default-features = false }
alloy-signer-local = { version = "0.12.5", default-features = false }
alloy-transport = { version = "0.12.5" }
alloy-transport-http = { version = "0.12.5", features = ["reqwest-rustls-tls"], default-features = false }
alloy-transport-ipc = { version = "0.12.5", default-features = false }
alloy-transport-ws = { version = "0.12.5", default-features = false }
alloy-consensus = { version = "1.0.12", default-features = false }
alloy-contract = { version = "1.0.12", default-features = false }
alloy-eips = { version = "1.0.12", default-features = false }
alloy-genesis = { version = "1.0.12", default-features = false }
alloy-json-rpc = { version = "1.0.12", default-features = false }
alloy-network = { version = "1.0.12", default-features = false }
alloy-network-primitives = { version = "1.0.12", default-features = false }
alloy-provider = { version = "1.0.12", features = ["reqwest"], default-features = false }
alloy-pubsub = { version = "1.0.12", default-features = false }
alloy-rpc-client = { version = "1.0.12", default-features = false }
alloy-rpc-types = { version = "1.0.12", features = ["eth"], default-features = false }
alloy-rpc-types-admin = { version = "1.0.12", default-features = false }
alloy-rpc-types-anvil = { version = "1.0.12", default-features = false }
alloy-rpc-types-beacon = { version = "1.0.12", default-features = false }
alloy-rpc-types-debug = { version = "1.0.12", default-features = false }
alloy-rpc-types-engine = { version = "1.0.12", default-features = false }
alloy-rpc-types-eth = { version = "1.0.12", default-features = false }
alloy-rpc-types-mev = { version = "1.0.12", default-features = false }
alloy-rpc-types-trace = { version = "1.0.12", default-features = false }
alloy-rpc-types-txpool = { version = "1.0.12", default-features = false }
alloy-serde = { version = "1.0.12", default-features = false }
alloy-signer = { version = "1.0.12", default-features = false }
alloy-signer-local = { version = "1.0.12", default-features = false }
alloy-transport = { version = "1.0.12" }
alloy-transport-http = { version = "1.0.12", features = ["reqwest-rustls-tls"], default-features = false }
alloy-transport-ipc = { version = "1.0.12", default-features = false }
alloy-transport-ws = { version = "1.0.12", default-features = false }
# op
alloy-op-evm = { version = "0.1.0-alpha.1", default-features = false }
alloy-op-hardforks = "0.1"
op-alloy-rpc-types = { version = "0.11.1", default-features = false }
op-alloy-rpc-types-engine = { version = "0.11.1", default-features = false }
op-alloy-network = { version = "0.11.1", default-features = false }
op-alloy-consensus = { version = "0.11.1", default-features = false }
op-alloy-flz = { version = "0.11.1", default-features = false }
op-alloy-rpc-jsonrpsee = { version = "0.11.1", default-features = false }
alloy-op-evm = { version = "0.12", default-features = false }
alloy-op-hardforks = "0.2.2"
op-alloy-rpc-types = { version = "0.18.6", default-features = false }
op-alloy-rpc-types-engine = { version = "0.18.6", default-features = false }
op-alloy-network = { version = "0.18.6", default-features = false }
op-alloy-consensus = { version = "0.18.6", default-features = false }
op-alloy-rpc-jsonrpsee = { version = "0.18.6", default-features = false }
op-alloy-flz = { version = "0.13.1", default-features = false }
# misc
aquamarine = "0.6"
@@ -519,13 +536,14 @@ humantime = "2.1"
humantime-serde = "1.1"
itertools = { version = "0.14", default-features = false }
linked_hash_set = "0.1"
lz4 = "1.28.1"
modular-bitfield = "0.11.2"
notify = { version = "8.0.0", default-features = false, features = ["macos_fsevent"] }
nybbles = { version = "0.3.0", default-features = false }
nybbles = { version = "0.4.0", default-features = false }
once_cell = { version = "1.19", default-features = false, features = ["critical-section"] }
parking_lot = "0.12"
paste = "1.0"
rand = "0.8.5"
rand = "0.9"
rayon = "1.7"
rustc-hash = { version = "2.0", default-features = false }
schnellru = "0.2"
@@ -539,12 +557,15 @@ strum = { version = "0.27", default-features = false }
strum_macros = "0.27"
syn = "2.0"
thiserror = { version = "2.0.0", default-features = false }
tar = "0.4.44"
tracing = { version = "0.1.0", default-features = false }
tracing-appender = "0.2"
url = { version = "2.3", default-features = false }
zstd = "0.13"
byteorder = "1"
mini-moka = "0.10"
tar-no-std = { version = "0.3.2", default-features = false }
miniz_oxide = { version = "0.8.4", default-features = false }
# metrics
metrics = "0.24.0"
@@ -558,7 +579,7 @@ proc-macro2 = "1.0"
quote = "1.0"
# tokio
tokio = { version = "1.39", default-features = false }
tokio = { version = "1.44.2", default-features = false }
tokio-stream = "0.1.11"
tokio-util = { version = "0.7.4", features = ["codec"] }
@@ -573,7 +594,7 @@ hyper-util = "0.1.5"
pin-project = "1.0.12"
reqwest = { version = "0.12", default-features = false }
tracing-futures = "0.2"
tower = "0.4"
tower = "0.5"
tower-http = "0.6"
# p2p
@@ -581,11 +602,11 @@ discv5 = "0.9"
if-addrs = "0.13"
# rpc
jsonrpsee = "0.24"
jsonrpsee-core = "0.24"
jsonrpsee-server = "0.24"
jsonrpsee-http-client = "0.24"
jsonrpsee-types = "0.24"
jsonrpsee = "0.25.1"
jsonrpsee-core = "0.25.1"
jsonrpsee-server = "0.25.1"
jsonrpsee-http-client = "0.25.1"
jsonrpsee-types = "0.25.1"
# http
http = "1.0"
@@ -598,9 +619,11 @@ proptest-arbitrary-interop = "0.1.0"
enr = { version = "0.13", default-features = false }
k256 = { version = "0.13", default-features = false, features = ["ecdsa"] }
secp256k1 = { version = "0.30", default-features = false, features = ["global-context", "recovery"] }
# rand 8 for secp256k1
rand_08 = { package = "rand", version = "0.8" }
# for eip-4844
c-kzg = "1.0.0"
c-kzg = "2.1.1"
# config
toml = "0.8"
@@ -609,14 +632,17 @@ toml = "0.8"
arbitrary = "1.3"
assert_matches = "1.5.0"
criterion = { package = "codspeed-criterion-compat", version = "2.7" }
pprof = "0.14"
proptest = "1.4"
proptest = "1.7"
proptest-derive = "0.5"
serial_test = { default-features = false, version = "3" }
similar-asserts = { version = "1.5.0", features = ["serde"] }
tempfile = "3.8"
tempfile = "3.20"
test-fuzz = "7"
rstest = "0.24.0"
test-case = "3"
# ssz encoding
ethereum_ssz = "0.9.0"
ethereum_ssz_derive = "0.9.0"
# allocators
tikv-jemalloc-ctl = "0.6"
@@ -631,7 +657,6 @@ snmalloc-rs = { version = "0.3.7", features = ["build_cc"] }
crunchy = "=0.2.2"
aes = "0.8.1"
ahash = "0.8"
alloy-sol-macro = "0.8.9"
anyhow = "1.0"
bindgen = { version = "0.70", default-features = false }
block-padding = "0.3.2"
@@ -648,14 +673,14 @@ data-encoding = "2"
delegate = "0.13"
digest = "0.10.5"
hash-db = "=0.15.2"
hickory-resolver = "0.25.0-alpha.5"
hickory-resolver = "0.25.0"
hmac = "0.12.1"
human_bytes = "0.4.1"
indexmap = "2"
interprocess = "2.2.0"
lz4_flex = { version = "0.11", default-features = false }
memmap2 = "0.9.4"
mev-share-sse = { version = "0.4.0", default-features = false }
mev-share-sse = { version = "0.5.0", default-features = false }
num-traits = "0.2.15"
page_size = "0.6.0"
parity-scale-codec = "3.2.1"
@@ -667,7 +692,7 @@ rmp-serde = "1.3"
roaring = "0.10.2"
rolling-file = "0.2.0"
sha3 = "0.10.5"
snap = "1.0.5"
snap = "1.1.1"
socket2 = { version = "0.5", default-features = false }
sysinfo = { version = "0.33", default-features = false }
tracing-journald = "0.3"
@@ -680,39 +705,56 @@ visibility = "0.1.1"
walkdir = "2.3.3"
vergen-git2 = "1.0.5"
# [patch.crates-io]
# alloy-consensus = { git = "https://github.com/alloy-rs/alloy", rev = "cfb13aa" }
# alloy-contract = { git = "https://github.com/alloy-rs/alloy", rev = "cfb13aa" }
# alloy-eips = { git = "https://github.com/alloy-rs/alloy", rev = "cfb13aa" }
# alloy-genesis = { git = "https://github.com/alloy-rs/alloy", rev = "cfb13aa" }
# alloy-json-rpc = { git = "https://github.com/alloy-rs/alloy", rev = "cfb13aa" }
# alloy-network = { git = "https://github.com/alloy-rs/alloy", rev = "cfb13aa" }
# alloy-network-primitives = { git = "https://github.com/alloy-rs/alloy", rev = "cfb13aa" }
# alloy-node-bindings = { git = "https://github.com/alloy-rs/alloy", rev = "cfb13aa" }
# alloy-provider = { git = "https://github.com/alloy-rs/alloy", rev = "cfb13aa" }
# alloy-pubsub = { git = "https://github.com/alloy-rs/alloy", rev = "cfb13aa" }
# alloy-rpc-client = { git = "https://github.com/alloy-rs/alloy", rev = "cfb13aa" }
# alloy-rpc-types = { git = "https://github.com/alloy-rs/alloy", rev = "cfb13aa" }
# alloy-rpc-types-admin = { git = "https://github.com/alloy-rs/alloy", rev = "cfb13aa" }
# alloy-rpc-types-anvil = { git = "https://github.com/alloy-rs/alloy", rev = "cfb13aa" }
# alloy-rpc-types-beacon = { git = "https://github.com/alloy-rs/alloy", rev = "cfb13aa" }
# alloy-rpc-types-debug = { git = "https://github.com/alloy-rs/alloy", rev = "cfb13aa" }
# alloy-rpc-types-engine = { git = "https://github.com/alloy-rs/alloy", rev = "cfb13aa" }
# alloy-rpc-types-eth = { git = "https://github.com/alloy-rs/alloy", rev = "cfb13aa" }
# alloy-rpc-types-mev = { git = "https://github.com/alloy-rs/alloy", rev = "cfb13aa" }
# alloy-rpc-types-trace = { git = "https://github.com/alloy-rs/alloy", rev = "cfb13aa" }
# alloy-rpc-types-txpool = { git = "https://github.com/alloy-rs/alloy", rev = "cfb13aa" }
# alloy-serde = { git = "https://github.com/alloy-rs/alloy", rev = "cfb13aa" }
# alloy-signer = { git = "https://github.com/alloy-rs/alloy", rev = "cfb13aa" }
# alloy-signer-local = { git = "https://github.com/alloy-rs/alloy", rev = "cfb13aa" }
# alloy-transport = { git = "https://github.com/alloy-rs/alloy", rev = "cfb13aa" }
# alloy-transport-http = { git = "https://github.com/alloy-rs/alloy", rev = "cfb13aa" }
# alloy-transport-ipc = { git = "https://github.com/alloy-rs/alloy", rev = "cfb13aa" }
# alloy-transport-ws = { git = "https://github.com/alloy-rs/alloy", rev = "cfb13aa" }
#
# op-alloy-consensus = { git = "https://github.com/alloy-rs/op-alloy", rev = "ad607c1" }
# op-alloy-network = { git = "https://github.com/alloy-rs/op-alloy", rev = "ad607c1" }
# op-alloy-rpc-types = { git = "https://github.com/alloy-rs/op-alloy", rev = "ad607c1" }
# op-alloy-rpc-types-engine = { git = "https://github.com/alloy-rs/op-alloy", rev = "ad607c1" }
[patch.crates-io]
alloy-consensus = { git = "https://github.com/alloy-rs/alloy", rev = "08fa016ed950b6e65f810fc9cdef7cf38fbc63f6" }
alloy-contract = { git = "https://github.com/alloy-rs/alloy", rev = "08fa016ed950b6e65f810fc9cdef7cf38fbc63f6" }
alloy-eips = { git = "https://github.com/alloy-rs/alloy", rev = "08fa016ed950b6e65f810fc9cdef7cf38fbc63f6" }
alloy-genesis = { git = "https://github.com/alloy-rs/alloy", rev = "08fa016ed950b6e65f810fc9cdef7cf38fbc63f6" }
alloy-json-rpc = { git = "https://github.com/alloy-rs/alloy", rev = "08fa016ed950b6e65f810fc9cdef7cf38fbc63f6" }
alloy-network = { git = "https://github.com/alloy-rs/alloy", rev = "08fa016ed950b6e65f810fc9cdef7cf38fbc63f6" }
alloy-network-primitives = { git = "https://github.com/alloy-rs/alloy", rev = "08fa016ed950b6e65f810fc9cdef7cf38fbc63f6" }
alloy-provider = { git = "https://github.com/alloy-rs/alloy", rev = "08fa016ed950b6e65f810fc9cdef7cf38fbc63f6" }
alloy-pubsub = { git = "https://github.com/alloy-rs/alloy", rev = "08fa016ed950b6e65f810fc9cdef7cf38fbc63f6" }
alloy-rpc-client = { git = "https://github.com/alloy-rs/alloy", rev = "08fa016ed950b6e65f810fc9cdef7cf38fbc63f6" }
alloy-rpc-types = { git = "https://github.com/alloy-rs/alloy", rev = "08fa016ed950b6e65f810fc9cdef7cf38fbc63f6" }
alloy-rpc-types-admin = { git = "https://github.com/alloy-rs/alloy", rev = "08fa016ed950b6e65f810fc9cdef7cf38fbc63f6" }
alloy-rpc-types-anvil = { git = "https://github.com/alloy-rs/alloy", rev = "08fa016ed950b6e65f810fc9cdef7cf38fbc63f6" }
alloy-rpc-types-beacon = { git = "https://github.com/alloy-rs/alloy", rev = "08fa016ed950b6e65f810fc9cdef7cf38fbc63f6" }
alloy-rpc-types-debug = { git = "https://github.com/alloy-rs/alloy", rev = "08fa016ed950b6e65f810fc9cdef7cf38fbc63f6" }
alloy-rpc-types-engine = { git = "https://github.com/alloy-rs/alloy", rev = "08fa016ed950b6e65f810fc9cdef7cf38fbc63f6" }
alloy-rpc-types-eth = { git = "https://github.com/alloy-rs/alloy", rev = "08fa016ed950b6e65f810fc9cdef7cf38fbc63f6" }
alloy-rpc-types-mev = { git = "https://github.com/alloy-rs/alloy", rev = "08fa016ed950b6e65f810fc9cdef7cf38fbc63f6" }
alloy-rpc-types-trace = { git = "https://github.com/alloy-rs/alloy", rev = "08fa016ed950b6e65f810fc9cdef7cf38fbc63f6" }
alloy-rpc-types-txpool = { git = "https://github.com/alloy-rs/alloy", rev = "08fa016ed950b6e65f810fc9cdef7cf38fbc63f6" }
alloy-serde = { git = "https://github.com/alloy-rs/alloy", rev = "08fa016ed950b6e65f810fc9cdef7cf38fbc63f6" }
alloy-signer = { git = "https://github.com/alloy-rs/alloy", rev = "08fa016ed950b6e65f810fc9cdef7cf38fbc63f6" }
alloy-signer-local = { git = "https://github.com/alloy-rs/alloy", rev = "08fa016ed950b6e65f810fc9cdef7cf38fbc63f6" }
alloy-transport = { git = "https://github.com/alloy-rs/alloy", rev = "08fa016ed950b6e65f810fc9cdef7cf38fbc63f6" }
alloy-transport-http = { git = "https://github.com/alloy-rs/alloy", rev = "08fa016ed950b6e65f810fc9cdef7cf38fbc63f6" }
alloy-transport-ipc = { git = "https://github.com/alloy-rs/alloy", rev = "08fa016ed950b6e65f810fc9cdef7cf38fbc63f6" }
alloy-transport-ws = { git = "https://github.com/alloy-rs/alloy", rev = "08fa016ed950b6e65f810fc9cdef7cf38fbc63f6" }
revm = { git = "https://github.com/bluealloy/revm", branch = "performance-modexp" }
revm-bytecode = { git = "https://github.com/bluealloy/revm", branch = "performance-modexp" }
revm-database = { git = "https://github.com/bluealloy/revm", branch = "performance-modexp" }
revm-state = { git = "https://github.com/bluealloy/revm", branch = "performance-modexp" }
revm-primitives = { git = "https://github.com/bluealloy/revm", branch = "performance-modexp" }
revm-interpreter = { git = "https://github.com/bluealloy/revm", branch = "performance-modexp" }
revm-inspector = { git = "https://github.com/bluealloy/revm", branch = "performance-modexp" }
revm-context = { git = "https://github.com/bluealloy/revm", branch = "performance-modexp" }
revm-context-interface = { git = "https://github.com/bluealloy/revm", branch = "performance-modexp" }
revm-database-interface = { git = "https://github.com/bluealloy/revm", branch = "performance-modexp" }
# op-alloy-consensus = { git = "https://github.com/alloy-rs/op-alloy", rev = "a79d6fc" }
# op-alloy-network = { git = "https://github.com/alloy-rs/op-alloy", rev = "a79d6fc" }
# op-alloy-rpc-types = { git = "https://github.com/alloy-rs/op-alloy", rev = "a79d6fc" }
# op-alloy-rpc-types-engine = { git = "https://github.com/alloy-rs/op-alloy", rev = "a79d6fc" }
# op-alloy-rpc-jsonrpsee = { git = "https://github.com/alloy-rs/op-alloy", rev = "a79d6fc" }
#
# revm-inspectors = { git = "https://github.com/paradigmxyz/revm-inspectors", rev = "1207e33" }
#
# jsonrpsee = { git = "https://github.com/paradigmxyz/jsonrpsee", branch = "matt/make-rpc-service-pub" }
# jsonrpsee-core = { git = "https://github.com/paradigmxyz/jsonrpsee", branch = "matt/make-rpc-service-pub" }
# jsonrpsee-server = { git = "https://github.com/paradigmxyz/jsonrpsee", branch = "matt/make-rpc-service-pub" }
# jsonrpsee-http-client = { git = "https://github.com/paradigmxyz/jsonrpsee", branch = "matt/make-rpc-service-pub" }
# jsonrpsee-types = { git = "https://github.com/paradigmxyz/jsonrpsee", branch = "matt/make-rpc-service-pub" }

View File

@@ -1,12 +1,38 @@
[build]
pre-build = [
# Use HTTPS for package sources
"apt-get update && apt-get install --assume-yes --no-install-recommends ca-certificates",
"find /etc/apt/ -type f \\( -name '*.list' -o -name '*.sources' \\) -exec sed -i 's|http://|https://|g' {} +",
# Configure APT retries and timeouts to handle network issues
"echo 'Acquire::Retries \"3\";' > /etc/apt/apt.conf.d/80-retries",
"echo 'Acquire::http::Timeout \"60\";' >> /etc/apt/apt.conf.d/80-retries",
"echo 'Acquire::ftp::Timeout \"60\";' >> /etc/apt/apt.conf.d/80-retries",
# rust-bindgen dependencies: llvm-dev libclang-dev (>= 10) clang (>= 10)
# See: https://github.com/cross-rs/cross/wiki/FAQ#using-clang--bindgen for
# recommended clang versions for the given cross and bindgen version.
"apt-get update && apt-get install --assume-yes --no-install-recommends llvm-dev libclang-10-dev clang-10",
"apt-get update && apt-get install --assume-yes --no-install-recommends llvm-dev libclang-dev clang",
]
[target.x86_64-pc-windows-gnu]
# Why do we need a custom Dockerfile on Windows:
# 1. `reth-libmdbx` stopped working with MinGW 9.3 that cross image comes with.
# 2. To be able to update the version of MinGW, we need to also update the Ubuntu that the image is based on.
#
# Also see https://github.com/cross-rs/cross/issues/1667
# Inspired by https://github.com/cross-rs/cross/blob/9e2298e17170655342d3248a9c8ac37ef92ba38f/docker/Dockerfile.x86_64-pc-windows-gnu#L51
dockerfile = "./Dockerfile.x86_64-pc-windows-gnu"
[target.riscv64gc-unknown-linux-gnu]
image = "ubuntu:24.04"
pre-build = [
"apt update",
"apt install --yes gcc gcc-riscv64-linux-gnu libclang-dev make",
]
env.passthrough = [
"CARGO_TARGET_RISCV64GC_UNKNOWN_LINUX_GNU_LINKER=riscv64-linux-gnu-gcc",
]
[build.env]
passthrough = [
"JEMALLOC_SYS_WITH_LG_PAGE",
]
passthrough = ["JEMALLOC_SYS_WITH_LG_PAGE"]

View File

@@ -33,7 +33,7 @@ ENV FEATURES=$FEATURES
RUN cargo chef cook --profile $BUILD_PROFILE --features "$FEATURES" --recipe-path recipe.json
# Build application
COPY --exclude=.git --exclude=dist . .
COPY --exclude=dist . .
RUN cargo build --profile $BUILD_PROFILE --features "$FEATURES" --locked --bin reth
# ARG is not resolved in COPY so we have to hack around it by copying the

View File

@@ -1,8 +1,8 @@
# Use the Rust 1.85 image based on Debian Bullseye
FROM rust:1.85-bullseye AS builder
# Use the Rust 1.86 image based on Debian Bookworm
FROM rust:1.86-bookworm AS builder
# Install specific version of libclang-dev
RUN apt-get update && apt-get install -y libclang-dev=1:11.0-51+nmu5
RUN apt-get update && apt-get install -y libclang-dev=1:14.0-55.7~deb12u1
# Copy the project to the container
COPY ./ /app

View File

@@ -0,0 +1,73 @@
FROM ubuntu:24.04 AS cross-base
ENV DEBIAN_FRONTEND=noninteractive
# Use HTTPS for package sources
RUN apt-get update && apt-get install --assume-yes --no-install-recommends ca-certificates
RUN find /etc/apt/ -type f \( -name '*.list' -o -name '*.sources' \) -exec sed -i 's|http://|https://|g' {} +
# Configure APT retries and timeouts to handle network issues
RUN echo 'Acquire::Retries \"3\";' > /etc/apt/apt.conf.d/80-retries && \
echo 'Acquire::http::Timeout \"60\";' >> /etc/apt/apt.conf.d/80-retries && \
echo 'Acquire::ftp::Timeout \"60\";' >> /etc/apt/apt.conf.d/80-retries
# configure fallback mirrors
RUN sed -i 's|URIs: https://archive.ubuntu.com/ubuntu/|URIs: https://mirror.cov.ukservers.com/ubuntu/ https://archive.ubuntu.com/ubuntu/ https://mirror.ox.ac.uk/sites/archive.ubuntu.com/ubuntu/|g' /etc/apt/sources.list.d/ubuntu.sources
RUN apt-get update && apt-get install --assume-yes --no-install-recommends git
RUN git clone https://github.com/cross-rs/cross /cross
WORKDIR /cross/docker
RUN git checkout 9e2298e17170655342d3248a9c8ac37ef92ba38f
RUN cp common.sh lib.sh / && /common.sh
RUN cp cmake.sh / && /cmake.sh
RUN cp xargo.sh / && /xargo.sh
FROM cross-base AS build
RUN apt-get install --assume-yes --no-install-recommends libz-mingw-w64-dev g++-mingw-w64-x86-64 gfortran-mingw-w64-x86-64
# Install Wine using OpenSUSE repository because official one is often lagging behind
RUN dpkg --add-architecture i386 && \
apt-get install --assume-yes --no-install-recommends wget gpg && \
mkdir -pm755 /etc/apt/keyrings && curl -fsSL \
https://download.opensuse.org/repositories/Emulators:/Wine:/Debian/xUbuntu_24.04/Release.key \
| tee /etc/apt/keyrings/obs-winehq.key >/dev/null && \
echo "deb [arch=amd64,i386 signed-by=/etc/apt/keyrings/obs-winehq.key] \
https://download.opensuse.org/repositories/Emulators:/Wine:/Debian/xUbuntu_24.04/ ./" \
| tee /etc/apt/sources.list.d/obs-winehq.list && \
apt-get update && apt-get install --assume-yes --install-recommends winehq-stable
# run-detectors are responsible for calling the correct interpreter for exe
# files. For some reason it does not work inside a docker container (it works
# fine in the host). So we replace the usual paths of run-detectors to run wine
# directly. This only affects the guest, we are not messing up with the host.
#
# See /usr/share/doc/binfmt-support/detectors
RUN mkdir -p /usr/lib/binfmt-support/ && \
rm -f /usr/lib/binfmt-support/run-detectors /usr/bin/run-detectors && \
ln -s /usr/bin/wine /usr/lib/binfmt-support/run-detectors && \
ln -s /usr/bin/wine /usr/bin/run-detectors
RUN cp windows-entry.sh /
ENTRYPOINT ["/windows-entry.sh"]
RUN cp toolchain.cmake /opt/toolchain.cmake
# for why we always link with pthread support, see:
# https://github.com/cross-rs/cross/pull/1123#issuecomment-1312287148
ENV CROSS_TOOLCHAIN_PREFIX=x86_64-w64-mingw32-
ENV CROSS_TOOLCHAIN_SUFFIX=-posix
ENV CROSS_SYSROOT=/usr/x86_64-w64-mingw32
ENV CROSS_TARGET_RUNNER="env -u CARGO_TARGET_X86_64_PC_WINDOWS_GNU_RUNNER wine"
ENV CARGO_TARGET_X86_64_PC_WINDOWS_GNU_LINKER="$CROSS_TOOLCHAIN_PREFIX"gcc"$CROSS_TOOLCHAIN_SUFFIX" \
CARGO_TARGET_X86_64_PC_WINDOWS_GNU_RUNNER="$CROSS_TARGET_RUNNER" \
AR_x86_64_pc_windows_gnu="$CROSS_TOOLCHAIN_PREFIX"ar \
CC_x86_64_pc_windows_gnu="$CROSS_TOOLCHAIN_PREFIX"gcc"$CROSS_TOOLCHAIN_SUFFIX" \
CXX_x86_64_pc_windows_gnu="$CROSS_TOOLCHAIN_PREFIX"g++"$CROSS_TOOLCHAIN_SUFFIX" \
CMAKE_TOOLCHAIN_FILE_x86_64_pc_windows_gnu=/opt/toolchain.cmake \
BINDGEN_EXTRA_CLANG_ARGS_x86_64_pc_windows_gnu="--sysroot=$CROSS_SYSROOT -idirafter/usr/include" \
CROSS_CMAKE_SYSTEM_NAME=Windows \
CROSS_CMAKE_SYSTEM_PROCESSOR=AMD64 \
CROSS_CMAKE_CRT=gnu \
CROSS_CMAKE_OBJECT_FLAGS="-ffunction-sections -fdata-sections -m64"

View File

@@ -1,21 +1,41 @@
# Non-exhaustive checklist for integrating new changes for an upcoming hard fork/devnet
## Introducing new EIP types or changes to primitive types
## Introducing new EIP types or changes to primitive types
- Make required changes to primitive data structures on [alloy](https://github.com/alloy-rs/alloy)
- All new EIP data structures/constants/helpers etc. go into the `alloy-eips` crate at first.
- New transaction types go into `alloy-consensus`
- If there are changes to existing data structures, such as `Header` or `Block`, apply them to the types in `alloy-consensus` (e.g. new `request_hashes` field in Prague)
- If there are changes to existing data structures, such as `Header` or `Block`, apply them to the types in
`alloy-consensus` (e.g. new `request_hashes` field in Prague)
## Engine API
- If there are changes to the engine API (e.g. a new `engine_newPayloadVx` and `engine_getPayloadVx` pair) add the new types to the `alloy-rpc-types-engine` crate.
- If there are new parameters to the `engine_newPayloadVx` endpoint, add them to the `ExecutionPayloadSidecar` container type. This types contains all additional parameters that are required to convert an `ExecutionPayload` to an EL block.
- If there are changes to the engine API (e.g. a new `engine_newPayloadVx` and `engine_getPayloadVx` pair) add the new
types to the `alloy-rpc-types-engine` crate.
- If there are new parameters to the `engine_newPayloadVx` endpoint, add them to the `ExecutionPayloadSidecar` container
type. This types contains all additional parameters that are required to convert an `ExecutionPayload` to an EL block.
## Reth changes
### Updates to the engine API
- Add new endpoints to the `EngineApi` trait and implement endpoints.
- Update the `ExecutionPayload` + `ExecutionPayloadSidecar` to `Block` conversion if there are any additional parameters.
- Update the `ExecutionPayload` + `ExecutionPayloadSidecar` to `Block` conversion if there are any additional
parameters.
- Update version specific validation checks in the `EngineValidator` trait.
## Op-Reth changes
### Updates to the engine API
Opstack tries to be as close to the L1 engine API as much as possible. Isthmus (Prague equivalent) introduced the first
deviation from the L1 engine API with an additional field in the `ExecutionPayload`. For this reason the op engine API
has it's own server traits `OpEngineApi`.
Adding a new versioned endpoint requires the same changes as for L1 just for the dedicated OP types.
### Hardforks
Opstack has dedicated hardforks (e.g. Isthmus), that can be entirely opstack specific (e.g. Holocene) or can be an L1
equivalent hardfork. Since opstack sticks to the L1 header primitive, a new L1 equivalent hardfork also requires new
equivalent consensus checks. For this reason these `OpHardfork` must be mapped to L1 `EthereumHardfork`, for example:
`OpHardfork::Isthmus` corresponds to `EthereumHardfork::Prague`. These mappings must be defined in the `ChainSpec`.

View File

@@ -26,7 +26,7 @@ PROFILE ?= release
CARGO_INSTALL_EXTRA_FLAGS ?=
# The release tag of https://github.com/ethereum/tests to use for EF tests
EF_TESTS_TAG := v12.2
EF_TESTS_TAG := v17.0
EF_TESTS_URL := https://github.com/ethereum/tests/archive/refs/tags/$(EF_TESTS_TAG).tar.gz
EF_TESTS_DIR := ./testing/ef-tests/ethereum-tests
@@ -65,7 +65,7 @@ RUST_BUILD_FLAGS =
# Enable static linking to ensure reproducibility across builds
RUST_BUILD_FLAGS += --C target-feature=+crt-static
# Set the linker to use static libgcc to ensure reproducibility across builds
RUST_BUILD_FLAGS += -Clink-arg=-static-libgcc
RUST_BUILD_FLAGS += -C link-arg=-static-libgcc
# Remove build ID from the binary to ensure reproducibility across builds
RUST_BUILD_FLAGS += -C link-arg=-Wl,--build-id=none
# Remove metadata hash from symbol names to ensure reproducible builds
@@ -206,6 +206,18 @@ $(EF_TESTS_DIR):
ef-tests: $(EF_TESTS_DIR) ## Runs Ethereum Foundation tests.
cargo nextest run -p ef-tests --features ef-tests
##@ reth-bench
.PHONY: reth-bench
reth-bench: ## Build the reth-bench binary into the `target` directory.
cargo build --manifest-path bin/reth-bench/Cargo.toml --features "$(FEATURES)" --profile "$(PROFILE)"
.PHONY: install-reth-bech
install-reth-bench: ## Build and install the reth binary under `~/.cargo/bin`.
cargo install --path bin/reth-bench --bin reth-bench --force --locked \
--features "$(FEATURES)" \
--profile "$(PROFILE)"
##@ Docker
# Note: This requires a buildx builder with emulation support. For example:
@@ -292,6 +304,23 @@ op-docker-build-push-latest: ## Build and push a cross-arch Docker image tagged
op-docker-build-push-nightly: ## Build and push cross-arch Docker image tagged with the latest git tag with a `-nightly` suffix, and `latest-nightly`.
$(call op_docker_build_push,nightly,nightly)
# Note: This requires a buildx builder with emulation support. For example:
#
# `docker run --privileged --rm tonistiigi/binfmt --install amd64,arm64`
# `docker buildx create --use --name cross-builder`
.PHONY: docker-build-push-nightly-profiling
docker-build-push-nightly-profiling: ## Build and push cross-arch Docker image with profiling profile tagged with nightly-profiling.
$(call docker_build_push,nightly-profiling,nightly-profiling)
# Note: This requires a buildx builder with emulation support. For example:
#
# `docker run --privileged --rm tonistiigi/binfmt --install amd64,arm64`
# `docker buildx create --use --name cross-builder`
.PHONY: op-docker-build-push-nightly-profiling
op-docker-build-push-nightly-profiling: ## Build and push cross-arch Docker image tagged with the latest git tag with a `-nightly` suffix, and `latest-nightly`.
$(call op_docker_build_push,nightly-profiling,nightly-profiling)
# Create a cross-arch Docker image with the given tags and push it
define op_docker_build_push
$(MAKE) op-build-x86_64-unknown-linux-gnu
@@ -345,6 +374,10 @@ update-book-cli: build-debug ## Update book cli documentation.
profiling: ## Builds `reth` with optimisations, but also symbols.
RUSTFLAGS="-C target-cpu=native" cargo build --profile profiling --features jemalloc,asm-keccak
.PHONY: profiling-op
profiling-op: ## Builds `op-reth` with optimisations, but also symbols.
RUSTFLAGS="-C target-cpu=native" cargo build --profile profiling --features jemalloc,asm-keccak --bin op-reth --manifest-path crates/optimism/bin/Cargo.toml
.PHONY: maxperf
maxperf: ## Builds `reth` with the most aggressive optimisations.
RUSTFLAGS="-C target-cpu=native" cargo build --profile maxperf --features jemalloc,asm-keccak
@@ -371,6 +404,17 @@ clippy:
--all-features \
-- -D warnings
clippy-op-dev:
cargo +nightly clippy \
--bin op-reth \
--workspace \
--lib \
--examples \
--tests \
--benches \
--locked \
--all-features
lint-codespell: ensure-codespell
codespell --skip "*.json" --skip "./testing/ef-tests/ethereum-tests"

View File

@@ -1,7 +1,8 @@
# reth
[![bench status](https://github.com/paradigmxyz/reth/actions/workflows/bench.yml/badge.svg)](https://github.com/paradigmxyz/reth/actions/workflows/bench.yml)
[![CI status](https://github.com/paradigmxyz/reth/workflows/unit/badge.svg)][gh-ci]
[![cargo-deny status](https://github.com/paradigmxyz/reth/workflows/deny/badge.svg)][gh-deny]
[![cargo-lint status](https://github.com/paradigmxyz/reth/actions/workflows/lint.yml/badge.svg)][gh-lint]
[![Telegram Chat][tg-badge]][tg-url]
**Modular, contributor-friendly and blazing-fast implementation of the Ethereum protocol**
@@ -14,7 +15,7 @@
| [Crate Docs](https://reth.rs/docs)
[gh-ci]: https://github.com/paradigmxyz/reth/actions/workflows/unit.yml
[gh-deny]: https://github.com/paradigmxyz/reth/actions/workflows/lint.yml
[gh-lint]: https://github.com/paradigmxyz/reth/actions/workflows/lint.yml
[tg-badge]: https://img.shields.io/endpoint?color=neon&logo=telegram&label=chat&url=https%3A%2F%2Ftg.sumanjay.workers.dev%2Fparadigm%5Freth
## What is Reth?
@@ -87,7 +88,7 @@ When updating this, also update:
- .github/workflows/lint.yml
-->
The Minimum Supported Rust Version (MSRV) of this project is [1.85.0](https://blog.rust-lang.org/2025/02/20/Rust-1.85.0.html).
The Minimum Supported Rust Version (MSRV) of this project is [1.86.0](https://blog.rust-lang.org/2025/04/03/Rust-1.86.0/).
See the book for detailed instructions on how to [build from source](https://paradigmxyz.github.io/reth/installation/source.html).
@@ -103,21 +104,14 @@ cd reth
Next, run the tests:
```sh
# Without Geth
cargo test --workspace
cargo nextest run --workspace
# With Geth
cargo test --workspace --features geth-tests
# With Ethereum Foundation tests
#
# Note: Requires cloning https://github.com/ethereum/tests
#
# cd testing/ef-tests && git clone https://github.com/ethereum/tests ethereum-tests
cargo test -p ef-tests --features ef-tests
# Run the Ethereum Foundation tests
make ef-tests
```
We recommend using [`cargo nextest`](https://nexte.st/) to speed up testing. With nextest installed, simply substitute `cargo test` with `cargo nextest run`.
We highly recommend using [`cargo nextest`](https://nexte.st/) to speed up testing.
Using `cargo test` to run tests may work fine, but this is not tested and does not support more advanced features like retries for spurious failures.
> **Note**
>

View File

@@ -58,6 +58,7 @@ tokio = { workspace = true, features = ["sync", "macros", "time", "rt-multi-thre
clap = { workspace = true, features = ["derive", "env"] }
eyre.workspace = true
thiserror.workspace = true
humantime.workspace = true
# for writing data
csv.workspace = true

View File

@@ -0,0 +1,122 @@
#!/usr/bin/env python3
# A simple script which plots graphs comparing two combined_latency.csv files
# output by reth-bench. The graphs which are plotted are:
#
# - A histogram of the percent change between latencies, bucketed by 1%
# increments.
#
# - A simple line graph plotting the latencies of the two files against each
# other.
import argparse
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import sys
def main():
parser = argparse.ArgumentParser(description='Generate histogram of total_latency percent differences between two CSV files')
parser.add_argument('baseline_csv', help='First CSV file, used as the baseline/control')
parser.add_argument('comparison_csv', help='Second CSV file, which is being compared to the baseline')
parser.add_argument('-o', '--output', default='latency.png', help='Output image file (default: latency.png)')
args = parser.parse_args()
try:
df1 = pd.read_csv(args.baseline_csv)
df2 = pd.read_csv(args.comparison_csv)
except FileNotFoundError as e:
print(f"Error: {e}", file=sys.stderr)
sys.exit(1)
except Exception as e:
print(f"Error reading CSV files: {e}", file=sys.stderr)
sys.exit(1)
if 'total_latency' not in df1.columns:
print(f"Error: 'total_latency' column not found in {args.baseline_csv}", file=sys.stderr)
sys.exit(1)
if 'total_latency' not in df2.columns:
print(f"Error: 'total_latency' column not found in {args.comparison_csv}", file=sys.stderr)
sys.exit(1)
if len(df1) != len(df2):
print("Warning: CSV files have different number of rows. Using minimum length.", file=sys.stderr)
min_len = min(len(df1), len(df2))
df1 = df1.head(min_len)
df2 = df2.head(min_len)
latency1 = df1['total_latency'].values
latency2 = df2['total_latency'].values
# Handle division by zero
with np.errstate(divide='ignore', invalid='ignore'):
percent_diff = ((latency2 - latency1) / latency1) * 100
# Remove infinite and NaN values
percent_diff = percent_diff[np.isfinite(percent_diff)]
if len(percent_diff) == 0:
print("Error: No valid percent differences could be calculated", file=sys.stderr)
sys.exit(1)
# Create histogram with 1% buckets
min_diff = np.floor(percent_diff.min())
max_diff = np.ceil(percent_diff.max())
bins = np.arange(min_diff, max_diff + 1, 1)
# Create figure with two subplots
fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(12, 12))
# Top subplot: Histogram
ax1.hist(percent_diff, bins=bins, edgecolor='black', alpha=0.7)
ax1.set_xlabel('Percent Difference (%)')
ax1.set_ylabel('Number of Blocks')
ax1.set_title(f'Total Latency Percent Difference Histogram\n({args.baseline_csv} vs {args.comparison_csv})')
ax1.grid(True, alpha=0.3)
# Add statistics to the histogram
mean_diff = np.mean(percent_diff)
median_diff = np.median(percent_diff)
ax1.axvline(mean_diff, color='red', linestyle='--', label=f'Mean: {mean_diff:.2f}%')
ax1.axvline(median_diff, color='orange', linestyle='--', label=f'Median: {median_diff:.2f}%')
ax1.legend()
# Bottom subplot: Latency vs Block Number
if 'block_number' in df1.columns and 'block_number' in df2.columns:
block_numbers = df1['block_number'].values[:len(percent_diff)]
ax2.plot(block_numbers, latency1[:len(percent_diff)], 'b-', alpha=0.7, label=f'Baseline ({args.baseline_csv})')
ax2.plot(block_numbers, latency2[:len(percent_diff)], 'r-', alpha=0.7, label=f'Comparison ({args.comparison_csv})')
ax2.set_xlabel('Block Number')
ax2.set_ylabel('Total Latency (ms)')
ax2.set_title('Total Latency vs Block Number')
ax2.grid(True, alpha=0.3)
ax2.legend()
else:
# If no block_number column, use index
indices = np.arange(len(percent_diff))
ax2.plot(indices, latency1[:len(percent_diff)], 'b-', alpha=0.7, label=f'Baseline ({args.baseline_csv})')
ax2.plot(indices, latency2[:len(percent_diff)], 'r-', alpha=0.7, label=f'Comparison ({args.comparison_csv})')
ax2.set_xlabel('Block Index')
ax2.set_ylabel('Total Latency (ms)')
ax2.set_title('Total Latency vs Block Index')
ax2.grid(True, alpha=0.3)
ax2.legend()
plt.tight_layout()
plt.savefig(args.output, dpi=300, bbox_inches='tight')
print(f"Histogram and latency graph saved to {args.output}")
print(f"\nStatistics:")
print(f"Mean percent difference: {mean_diff:.2f}%")
print(f"Median percent difference: {median_diff:.2f}%")
print(f"Standard deviation: {np.std(percent_diff):.2f}%")
print(f"Min: {percent_diff.min():.2f}%")
print(f"Max: {percent_diff.max():.2f}%")
print(f"Total blocks analyzed: {len(percent_diff)}")
if __name__ == '__main__':
main()

View File

@@ -15,6 +15,7 @@ use alloy_provider::Provider;
use alloy_rpc_types_engine::{ExecutionPayload, ForkchoiceState};
use clap::Parser;
use csv::Writer;
use humantime::parse_duration;
use reth_cli_runner::CliContext;
use reth_node_core::args::BenchmarkArgs;
use std::time::{Duration, Instant};
@@ -27,6 +28,10 @@ pub struct Command {
#[arg(long, value_name = "RPC_URL", verbatim_doc_comment)]
rpc_url: String,
/// How long to wait after a forkchoice update before sending the next payload.
#[arg(long, value_name = "WAIT_TIME", value_parser = parse_duration, verbatim_doc_comment)]
wait_time: Option<Duration>,
#[command(flatten)]
benchmark: BenchmarkArgs,
}
@@ -57,7 +62,7 @@ impl Command {
block.body.blob_versioned_hashes_iter().copied().collect::<Vec<_>>();
// Convert to execution payload
let payload = ExecutionPayload::from_block_slow(&block).0;
let (payload, sidecar) = ExecutionPayload::from_block_slow(&block);
let header = block.header;
let head_block_hash = payload.block_hash();
let safe_block_hash =
@@ -78,6 +83,7 @@ impl Command {
header,
blob_versioned_hashes,
payload,
sidecar,
head_block_hash,
safe_block_hash,
finalized_block_hash,
@@ -92,7 +98,7 @@ impl Command {
let total_benchmark_duration = Instant::now();
let mut total_wait_time = Duration::ZERO;
while let Some((header, versioned_hashes, payload, head, safe, finalized)) = {
while let Some((header, versioned_hashes, payload, sidecar, head, safe, finalized)) = {
let wait_start = Instant::now();
let result = receiver.recv().await;
total_wait_time += wait_start.elapsed();
@@ -115,6 +121,7 @@ impl Command {
let message_version = call_new_payload(
&auth_provider,
payload,
sidecar,
header.parent_beacon_block_root,
versioned_hashes,
)
@@ -138,6 +145,11 @@ impl Command {
// convert gas used to gigagas, then compute gigagas per second
info!(%combined_result);
// wait if we need to
if let Some(wait_time) = self.wait_time {
tokio::time::sleep(wait_time).await;
}
// record the current result
let gas_row = TotalGasRow { block_number, gas_used, time: current_duration };
results.push((gas_row, combined_result));

View File

@@ -33,8 +33,6 @@ pub struct Command {
impl Command {
/// Execute `benchmark new-payload-only` command
pub async fn execute(self, _ctx: CliContext) -> eyre::Result<()> {
// TODO: this could be just a function I guess, but destructuring makes the code slightly
// more readable than a 4 element tuple.
let BenchContext { benchmark_mode, block_provider, auth_provider, mut next_block } =
BenchContext::new(&self.benchmark, self.rpc_url).await?;
@@ -54,10 +52,10 @@ impl Command {
let blob_versioned_hashes =
block.body.blob_versioned_hashes_iter().copied().collect::<Vec<_>>();
let payload = ExecutionPayload::from_block_slow(&block).0;
let (payload, sidecar) = ExecutionPayload::from_block_slow(&block);
next_block += 1;
sender.send((block.header, blob_versioned_hashes, payload)).await.unwrap();
sender.send((block.header, blob_versioned_hashes, payload, sidecar)).await.unwrap();
}
});
@@ -66,7 +64,7 @@ impl Command {
let total_benchmark_duration = Instant::now();
let mut total_wait_time = Duration::ZERO;
while let Some((header, versioned_hashes, payload)) = {
while let Some((header, versioned_hashes, payload, sidecar)) = {
let wait_start = Instant::now();
let result = receiver.recv().await;
total_wait_time += wait_start.elapsed();
@@ -87,6 +85,7 @@ impl Command {
call_new_payload(
&auth_provider,
payload,
sidecar,
header.parent_beacon_block_root,
versioned_hashes,
)

View File

@@ -123,7 +123,6 @@ impl Serialize for CombinedResult {
#[derive(Debug)]
pub(crate) struct TotalGasRow {
/// The block number of the block being processed.
#[allow(dead_code)]
pub(crate) block_number: u64,
/// The total gas used in the block.
pub(crate) gas_used: u64,

View File

@@ -104,19 +104,31 @@ impl Command {
// Convert to execution payload
let execution_payload = ExecutionPayload::from_block_slow(&block).0;
let use_v4 = block.header.requests_hash.is_some();
// Create JSON request data
let json_request = serde_json::to_string(&(
execution_payload,
blob_versioned_hashes,
parent_beacon_block_root,
))?;
let json_request = if use_v4 {
serde_json::to_string(&(
execution_payload,
blob_versioned_hashes,
parent_beacon_block_root,
block.header.requests_hash.unwrap_or_default(),
))?
} else {
serde_json::to_string(&(
execution_payload,
blob_versioned_hashes,
parent_beacon_block_root,
))?
};
// Print output or execute command
match self.mode {
Mode::Execute => {
// Create cast command
let mut command = std::process::Command::new("cast");
command.arg("rpc").arg("engine_newPayloadV3").arg("--raw");
let method = if use_v4 { "engine_newPayloadV4" } else { "engine_newPayloadV3" };
command.arg("rpc").arg(method).arg("--raw");
if let Some(rpc_url) = self.rpc_url {
command.arg("--rpc-url").arg(rpc_url);
}
@@ -144,10 +156,10 @@ impl Command {
);
if let Some(rpc_url) = self.rpc_url {
cmd += &format!(" --rpc-url {}", rpc_url);
cmd += &format!(" --rpc-url {rpc_url}");
}
if let Some(secret) = &jwt_secret {
cmd += &format!(" --jwt-secret {}", secret);
cmd += &format!(" --jwt-secret {secret}");
}
println!("{cmd}");

View File

@@ -2,11 +2,12 @@
//! response. This is useful for benchmarking, as it allows us to wait for a payload to be valid
//! before sending additional calls.
use alloy_eips::eip7685::RequestsOrHash;
use alloy_primitives::B256;
use alloy_provider::{ext::EngineApi, Network};
use alloy_provider::{ext::EngineApi, Network, Provider};
use alloy_rpc_types_engine::{
ExecutionPayload, ExecutionPayloadInputV2, ExecutionPayloadV1, ExecutionPayloadV3,
ForkchoiceState, ForkchoiceUpdated, PayloadAttributes, PayloadStatus,
ExecutionPayload, ExecutionPayloadInputV2, ExecutionPayloadSidecar, ExecutionPayloadV1,
ExecutionPayloadV3, ForkchoiceState, ForkchoiceUpdated, PayloadAttributes, PayloadStatus,
};
use alloy_transport::TransportResult;
use reth_node_api::EngineApiMessageVersion;
@@ -15,21 +16,21 @@ use tracing::error;
/// An extension trait for providers that implement the engine API, to wait for a VALID response.
#[async_trait::async_trait]
pub trait EngineApiValidWaitExt<N>: Send + Sync {
/// Calls `engine_newPayloadV1` with the given [ExecutionPayloadV1], and waits until the
/// Calls `engine_newPayloadV1` with the given [`ExecutionPayloadV1`], and waits until the
/// response is VALID.
async fn new_payload_v1_wait(
&self,
payload: ExecutionPayloadV1,
) -> TransportResult<PayloadStatus>;
/// Calls `engine_newPayloadV2` with the given [ExecutionPayloadInputV2], and waits until the
/// Calls `engine_newPayloadV2` with the given [`ExecutionPayloadInputV2`], and waits until the
/// response is VALID.
async fn new_payload_v2_wait(
&self,
payload: ExecutionPayloadInputV2,
) -> TransportResult<PayloadStatus>;
/// Calls `engine_newPayloadV3` with the given [ExecutionPayloadV3], parent beacon block root,
/// Calls `engine_newPayloadV3` with the given [`ExecutionPayloadV3`], parent beacon block root,
/// and versioned hashes, and waits until the response is VALID.
async fn new_payload_v3_wait(
&self,
@@ -38,24 +39,34 @@ pub trait EngineApiValidWaitExt<N>: Send + Sync {
parent_beacon_block_root: B256,
) -> TransportResult<PayloadStatus>;
/// Calls `engine_forkChoiceUpdatedV1` with the given [ForkchoiceState] and optional
/// [PayloadAttributes], and waits until the response is VALID.
/// Calls `engine_newPayloadV4` with the given [`ExecutionPayloadV3`], parent beacon block root,
/// versioned hashes, and requests hash, and waits until the response is VALID.
async fn new_payload_v4_wait(
&self,
payload: ExecutionPayloadV3,
versioned_hashes: Vec<B256>,
parent_beacon_block_root: B256,
requests_hash: B256,
) -> TransportResult<PayloadStatus>;
/// Calls `engine_forkChoiceUpdatedV1` with the given [`ForkchoiceState`] and optional
/// [`PayloadAttributes`], and waits until the response is VALID.
async fn fork_choice_updated_v1_wait(
&self,
fork_choice_state: ForkchoiceState,
payload_attributes: Option<PayloadAttributes>,
) -> TransportResult<ForkchoiceUpdated>;
/// Calls `engine_forkChoiceUpdatedV2` with the given [ForkchoiceState] and optional
/// [PayloadAttributes], and waits until the response is VALID.
/// Calls `engine_forkChoiceUpdatedV2` with the given [`ForkchoiceState`] and optional
/// [`PayloadAttributes`], and waits until the response is VALID.
async fn fork_choice_updated_v2_wait(
&self,
fork_choice_state: ForkchoiceState,
payload_attributes: Option<PayloadAttributes>,
) -> TransportResult<ForkchoiceUpdated>;
/// Calls `engine_forkChoiceUpdatedV3` with the given [ForkchoiceState] and optional
/// [PayloadAttributes], and waits until the response is VALID.
/// Calls `engine_forkChoiceUpdatedV3` with the given [`ForkchoiceState`] and optional
/// [`PayloadAttributes`], and waits until the response is VALID.
async fn fork_choice_updated_v3_wait(
&self,
fork_choice_state: ForkchoiceState,
@@ -67,7 +78,7 @@ pub trait EngineApiValidWaitExt<N>: Send + Sync {
impl<N, P> EngineApiValidWaitExt<N> for P
where
N: Network,
P: EngineApi<N>,
P: Provider<N> + EngineApi<N>,
{
async fn new_payload_v1_wait(
&self,
@@ -131,6 +142,60 @@ where
Ok(status)
}
async fn new_payload_v4_wait(
&self,
payload: ExecutionPayloadV3,
versioned_hashes: Vec<B256>,
parent_beacon_block_root: B256,
requests_hash: B256,
) -> TransportResult<PayloadStatus> {
// We cannot use `self.new_payload_v4` because it does not support sending
// `RequestsOrHash::Hash`
let mut status: PayloadStatus = self
.client()
.request(
"engine_newPayloadV4",
(
payload.clone(),
versioned_hashes.clone(),
parent_beacon_block_root,
RequestsOrHash::Hash(requests_hash),
),
)
.await?;
while !status.is_valid() {
if status.is_invalid() {
error!(
?status,
?payload,
?versioned_hashes,
?parent_beacon_block_root,
"Invalid newPayloadV4",
);
panic!("Invalid newPayloadV4: {status:?}");
}
if status.is_syncing() {
return Err(alloy_json_rpc::RpcError::UnsupportedFeature(
"invalid range: no canonical state found for parent of requested block",
))
}
status = self
.client()
.request(
"engine_newPayloadV4",
(
payload.clone(),
versioned_hashes.clone(),
parent_beacon_block_root,
RequestsOrHash::Hash(requests_hash),
),
)
.await?;
}
Ok(status)
}
async fn fork_choice_updated_v1_wait(
&self,
fork_choice_state: ForkchoiceState,
@@ -225,19 +290,32 @@ where
pub(crate) async fn call_new_payload<N, P: EngineApiValidWaitExt<N>>(
provider: P,
payload: ExecutionPayload,
sidecar: ExecutionPayloadSidecar,
parent_beacon_block_root: Option<B256>,
versioned_hashes: Vec<B256>,
) -> TransportResult<EngineApiMessageVersion> {
match payload {
ExecutionPayload::V3(payload) => {
// We expect the caller
// We expect the caller to provide `parent_beacon_block_root` for V3 payloads.
let parent_beacon_block_root = parent_beacon_block_root
.expect("parent_beacon_block_root is required for V3 payloads");
provider
.new_payload_v3_wait(payload, versioned_hashes, parent_beacon_block_root)
.await?;
.expect("parent_beacon_block_root is required for V3 payloads and higher");
Ok(EngineApiMessageVersion::V3)
if let Some(requests_hash) = sidecar.requests_hash() {
provider
.new_payload_v4_wait(
payload,
versioned_hashes,
parent_beacon_block_root,
requests_hash,
)
.await?;
Ok(EngineApiMessageVersion::V4)
} else {
provider
.new_payload_v3_wait(payload, versioned_hashes, parent_beacon_block_root)
.await?;
Ok(EngineApiMessageVersion::V3)
}
}
ExecutionPayload::V2(payload) => {
let input = ExecutionPayloadInputV2 {
@@ -267,8 +345,7 @@ pub(crate) async fn call_forkchoice_updated<N, P: EngineApiValidWaitExt<N>>(
payload_attributes: Option<PayloadAttributes>,
) -> TransportResult<ForkchoiceUpdated> {
match message_version {
EngineApiMessageVersion::V4 => todo!("V4 payloads not supported yet"),
EngineApiMessageVersion::V3 => {
EngineApiMessageVersion::V3 | EngineApiMessageVersion::V4 | EngineApiMessageVersion::V5 => {
provider.fork_choice_updated_v3_wait(forkchoice_state, payload_attributes).await
}
EngineApiMessageVersion::V2 => {

View File

@@ -14,119 +14,118 @@ workspace = true
[dependencies]
# reth
reth-cli.workspace = true
reth-ethereum-cli.workspace = true
reth-chainspec.workspace = true
reth-config.workspace = true
reth-primitives.workspace = true
reth-primitives-traits.workspace = true
reth-fs-util.workspace = true
reth-db = { workspace = true, features = ["mdbx"] }
reth-db-api.workspace = true
reth-exex.workspace = true
reth-provider.workspace = true
reth-evm.workspace = true
reth-revm.workspace = true
reth-stages.workspace = true
reth-execution-types.workspace = true
reth-errors.workspace = true
reth-transaction-pool.workspace = true
reth-cli-runner.workspace = true
reth-cli-commands.workspace = true
reth-cli-util.workspace = true
reth-consensus-common.workspace = true
reth-rpc-builder.workspace = true
reth-rpc.workspace = true
reth-rpc-types-compat.workspace = true
reth-rpc-convert.workspace = true
reth-rpc-api = { workspace = true, features = ["client"] }
reth-rpc-eth-types.workspace = true
reth-rpc-server-types.workspace = true
reth-network = { workspace = true, features = ["serde"] }
reth-network-p2p.workspace = true
reth-network-api.workspace = true
reth-downloaders.workspace = true
reth-tracing.workspace = true
reth-tasks.workspace = true
reth-payload-builder.workspace = true
reth-payload-primitives.workspace = true
reth-basic-payload-builder.workspace = true
reth-static-file.workspace = true
reth-trie = { workspace = true, features = ["metrics"] }
reth-trie-db = { workspace = true, features = ["metrics"] }
reth-node-api.workspace = true
reth-node-core.workspace = true
reth-ethereum-payload-builder.workspace = true
reth-ethereum-primitives.workspace = true
reth-node-ethereum = { workspace = true, features = ["js-tracer"] }
reth-node-builder.workspace = true
reth-node-events.workspace = true
reth-node-metrics.workspace = true
reth-consensus.workspace = true
reth-prune.workspace = true
reth-tokio-util.workspace = true
reth-ress-protocol.workspace = true
reth-ress-provider.workspace = true
# alloy
alloy-eips = { workspace = true, features = ["kzg"] }
alloy-rlp.workspace = true
alloy-rpc-types = { workspace = true, features = ["engine"] }
alloy-consensus.workspace = true
alloy-primitives.workspace = true
# tracing
tracing.workspace = true
# io
serde_json.workspace = true
# async
tokio = { workspace = true, features = ["sync", "macros", "time", "rt-multi-thread"] }
futures.workspace = true
# misc
aquamarine.workspace = true
eyre.workspace = true
clap = { workspace = true, features = ["derive", "env"] }
backon.workspace = true
similar-asserts.workspace = true
eyre.workspace = true
[dev-dependencies]
backon.workspace = true
similar-asserts.workspace = true
tempfile.workspace = true
[features]
default = ["jemalloc", "reth-revm/portable"]
dev = ["reth-cli-commands/arbitrary"]
dev = ["reth-ethereum-cli/dev"]
asm-keccak = [
"reth-node-core/asm-keccak",
"reth-primitives/asm-keccak",
"alloy-primitives/asm-keccak",
"reth-ethereum-cli/asm-keccak",
]
jemalloc = [
"reth-cli-util/jemalloc",
"reth-node-core/jemalloc",
"reth-node-metrics/jemalloc",
"reth-ethereum-cli/jemalloc",
]
jemalloc-prof = [
"reth-cli-util/jemalloc",
"reth-cli-util/jemalloc-prof",
"reth-ethereum-cli/jemalloc-prof",
]
tracy-allocator = [
"reth-cli-util/tracy-allocator",
"reth-ethereum-cli/tracy-allocator",
]
tracy-allocator = ["reth-cli-util/tracy-allocator"]
# Because jemalloc is default and preferred over snmalloc when both features are
# enabled, `--no-default-features` should be used when enabling snmalloc or
# snmalloc-native.
snmalloc = ["reth-cli-util/snmalloc"]
snmalloc-native = ["reth-cli-util/snmalloc-native"]
snmalloc = [
"reth-cli-util/snmalloc",
"reth-ethereum-cli/snmalloc",
]
snmalloc-native = [
"reth-cli-util/snmalloc-native",
"reth-ethereum-cli/snmalloc-native",
]
min-error-logs = ["tracing/release_max_level_error"]
min-warn-logs = ["tracing/release_max_level_warn"]
min-info-logs = ["tracing/release_max_level_info"]
min-debug-logs = ["tracing/release_max_level_debug"]
min-trace-logs = ["tracing/release_max_level_trace"]
min-error-logs = [
"tracing/release_max_level_error",
"reth-ethereum-cli/min-error-logs",
]
min-warn-logs = [
"tracing/release_max_level_warn",
"reth-ethereum-cli/min-warn-logs",
]
min-info-logs = [
"tracing/release_max_level_info",
"reth-ethereum-cli/min-info-logs",
]
min-debug-logs = [
"tracing/release_max_level_debug",
"reth-ethereum-cli/min-debug-logs",
]
min-trace-logs = [
"tracing/release_max_level_trace",
"reth-ethereum-cli/min-trace-logs",
]
[[bin]]
name = "reth"

View File

@@ -1,352 +1,15 @@
//! CLI definition and entrypoint to executable
use crate::{
args::LogArgs,
commands::debug_cmd,
version::{LONG_VERSION, SHORT_VERSION},
};
use clap::{value_parser, Parser, Subcommand};
use reth_chainspec::ChainSpec;
use reth_cli::chainspec::ChainSpecParser;
use reth_cli_commands::{
config_cmd, db, dump_genesis, import, init_cmd, init_state,
node::{self, NoArgs},
p2p, prune, recover, stage,
};
use reth_cli_runner::CliRunner;
use reth_db::DatabaseEnv;
use reth_ethereum_cli::chainspec::EthereumChainSpecParser;
use reth_network::EthNetworkPrimitives;
use reth_node_builder::{NodeBuilder, WithLaunchContext};
use reth_node_ethereum::{consensus::EthBeaconConsensus, EthExecutorProvider, EthereumNode};
use reth_node_metrics::recorder::install_prometheus_recorder;
use reth_tracing::FileWorkerGuard;
use std::{ffi::OsString, fmt, future::Future, sync::Arc};
use tracing::info;
/// Re-export of the `reth_node_core` types specifically in the `cli` module.
/// Re-export of the [`reth_node_core`] types specifically in the `cli` module.
///
/// This is re-exported because the types in `reth_node_core::cli` originally existed in
/// `reth::cli` but were moved to the `reth_node_core` crate. This re-export avoids a breaking
/// change.
/// `reth::cli` but were moved to the [`reth_node_core`] crate. This re-export avoids a
/// breaking change.
pub use crate::core::cli::*;
/// The main reth cli interface.
/// Re-export of the [`reth_ethereum_cli`] types specifically in the `interface` module.
///
/// This is the entrypoint to the executable.
#[derive(Debug, Parser)]
#[command(author, version = SHORT_VERSION, long_version = LONG_VERSION, about = "Reth", long_about = None)]
pub struct Cli<C: ChainSpecParser = EthereumChainSpecParser, Ext: clap::Args + fmt::Debug = NoArgs>
{
/// The command to run
#[command(subcommand)]
pub command: Commands<C, Ext>,
/// The chain this node is running.
///
/// Possible values are either a built-in chain or the path to a chain specification file.
#[arg(
long,
value_name = "CHAIN_OR_PATH",
long_help = C::help_message(),
default_value = C::SUPPORTED_CHAINS[0],
value_parser = C::parser(),
global = true,
)]
pub chain: Arc<C::ChainSpec>,
/// Add a new instance of a node.
///
/// Configures the ports of the node to avoid conflicts with the defaults.
/// This is useful for running multiple nodes on the same machine.
///
/// Max number of instances is 200. It is chosen in a way so that it's not possible to have
/// port numbers that conflict with each other.
///
/// Changes to the following port numbers:
/// - `DISCOVERY_PORT`: default + `instance` - 1
/// - `AUTH_PORT`: default + `instance` * 100 - 100
/// - `HTTP_RPC_PORT`: default - `instance` + 1
/// - `WS_RPC_PORT`: default + `instance` * 2 - 2
#[arg(long, value_name = "INSTANCE", global = true, default_value_t = 1, value_parser = value_parser!(u16).range(..=200))]
pub instance: u16,
/// The logging configuration for the CLI.
#[command(flatten)]
pub logs: LogArgs,
}
impl Cli {
/// Parsers only the default CLI arguments
pub fn parse_args() -> Self {
Self::parse()
}
/// Parsers only the default CLI arguments from the given iterator
pub fn try_parse_args_from<I, T>(itr: I) -> Result<Self, clap::error::Error>
where
I: IntoIterator<Item = T>,
T: Into<OsString> + Clone,
{
Self::try_parse_from(itr)
}
}
impl<C: ChainSpecParser<ChainSpec = ChainSpec>, Ext: clap::Args + fmt::Debug> Cli<C, Ext> {
/// Execute the configured cli command.
///
/// This accepts a closure that is used to launch the node via the
/// [`NodeCommand`](node::NodeCommand).
///
/// This command will be run on the [default tokio runtime](reth_cli_runner::tokio_runtime).
///
///
/// # Example
///
/// ```no_run
/// use reth::cli::Cli;
/// use reth_node_ethereum::EthereumNode;
///
/// Cli::parse_args()
/// .run(async move |builder, _| {
/// let handle = builder.launch_node(EthereumNode::default()).await?;
///
/// handle.wait_for_node_exit().await
/// })
/// .unwrap();
/// ```
///
/// # Example
///
/// Parse additional CLI arguments for the node command and use it to configure the node.
///
/// ```no_run
/// use clap::Parser;
/// use reth::cli::Cli;
/// use reth_ethereum_cli::chainspec::EthereumChainSpecParser;
///
/// #[derive(Debug, Parser)]
/// pub struct MyArgs {
/// pub enable: bool,
/// }
///
/// Cli::<EthereumChainSpecParser, MyArgs>::parse()
/// .run(async move |builder, my_args: MyArgs|
/// // launch the node
/// Ok(()))
/// .unwrap();
/// ````
pub fn run<L, Fut>(self, launcher: L) -> eyre::Result<()>
where
L: FnOnce(WithLaunchContext<NodeBuilder<Arc<DatabaseEnv>, C::ChainSpec>>, Ext) -> Fut,
Fut: Future<Output = eyre::Result<()>>,
{
self.with_runner(CliRunner::try_default_runtime()?, launcher)
}
/// Execute the configured cli command with the provided [`CliRunner`].
///
///
/// # Example
///
/// ```no_run
/// use reth::cli::Cli;
/// use reth_cli_runner::CliRunner;
/// use reth_node_ethereum::EthereumNode;
///
/// let runtime = tokio::runtime::Builder::new_multi_thread()
/// .worker_threads(4)
/// .max_blocking_threads(256)
/// .enable_all()
/// .build()
/// .unwrap();
/// let runner = CliRunner::from_runtime(runtime);
///
/// Cli::parse_args()
/// .with_runner(runner, |builder, _| async move {
/// let handle = builder.launch_node(EthereumNode::default()).await?;
/// handle.wait_for_node_exit().await
/// })
/// .unwrap();
/// ```
pub fn with_runner<L, Fut>(mut self, runner: CliRunner, launcher: L) -> eyre::Result<()>
where
L: FnOnce(WithLaunchContext<NodeBuilder<Arc<DatabaseEnv>, C::ChainSpec>>, Ext) -> Fut,
Fut: Future<Output = eyre::Result<()>>,
{
// add network name to logs dir
self.logs.log_file_directory =
self.logs.log_file_directory.join(self.chain.chain.to_string());
let _guard = self.init_tracing()?;
info!(target: "reth::cli", "Initialized tracing, debug log directory: {}", self.logs.log_file_directory);
// Install the prometheus recorder to be sure to record all metrics
let _ = install_prometheus_recorder();
let components = |spec: Arc<C::ChainSpec>| {
(EthExecutorProvider::ethereum(spec.clone()), EthBeaconConsensus::new(spec))
};
match self.command {
Commands::Node(command) => {
runner.run_command_until_exit(|ctx| command.execute(ctx, launcher))
}
Commands::Init(command) => {
runner.run_blocking_until_ctrl_c(command.execute::<EthereumNode>())
}
Commands::InitState(command) => {
runner.run_blocking_until_ctrl_c(command.execute::<EthereumNode>())
}
Commands::Import(command) => {
runner.run_blocking_until_ctrl_c(command.execute::<EthereumNode, _, _>(components))
}
Commands::DumpGenesis(command) => runner.run_blocking_until_ctrl_c(command.execute()),
Commands::Db(command) => {
runner.run_blocking_until_ctrl_c(command.execute::<EthereumNode>())
}
Commands::Stage(command) => runner.run_command_until_exit(|ctx| {
command.execute::<EthereumNode, _, _, EthNetworkPrimitives>(ctx, components)
}),
Commands::P2P(command) => {
runner.run_until_ctrl_c(command.execute::<EthNetworkPrimitives>())
}
#[cfg(feature = "dev")]
Commands::TestVectors(command) => runner.run_until_ctrl_c(command.execute()),
Commands::Config(command) => runner.run_until_ctrl_c(command.execute()),
Commands::Debug(command) => {
runner.run_command_until_exit(|ctx| command.execute::<EthereumNode>(ctx))
}
Commands::Recover(command) => {
runner.run_command_until_exit(|ctx| command.execute::<EthereumNode>(ctx))
}
Commands::Prune(command) => runner.run_until_ctrl_c(command.execute::<EthereumNode>()),
}
}
/// Initializes tracing with the configured options.
///
/// If file logging is enabled, this function returns a guard that must be kept alive to ensure
/// that all logs are flushed to disk.
pub fn init_tracing(&self) -> eyre::Result<Option<FileWorkerGuard>> {
let guard = self.logs.init_tracing()?;
Ok(guard)
}
}
/// Commands to be executed
#[derive(Debug, Subcommand)]
#[allow(clippy::large_enum_variant)]
pub enum Commands<C: ChainSpecParser, Ext: clap::Args + fmt::Debug> {
/// Start the node
#[command(name = "node")]
Node(Box<node::NodeCommand<C, Ext>>),
/// Initialize the database from a genesis file.
#[command(name = "init")]
Init(init_cmd::InitCommand<C>),
/// Initialize the database from a state dump file.
#[command(name = "init-state")]
InitState(init_state::InitStateCommand<C>),
/// This syncs RLP encoded blocks from a file.
#[command(name = "import")]
Import(import::ImportCommand<C>),
/// Dumps genesis block JSON configuration to stdout.
DumpGenesis(dump_genesis::DumpGenesisCommand<C>),
/// Database debugging utilities
#[command(name = "db")]
Db(db::Command<C>),
/// Manipulate individual stages.
#[command(name = "stage")]
Stage(stage::Command<C>),
/// P2P Debugging utilities
#[command(name = "p2p")]
P2P(p2p::Command<C>),
/// Generate Test Vectors
#[cfg(feature = "dev")]
#[command(name = "test-vectors")]
TestVectors(reth_cli_commands::test_vectors::Command),
/// Write config to stdout
#[command(name = "config")]
Config(config_cmd::Command),
/// Various debug routines
#[command(name = "debug")]
Debug(Box<debug_cmd::Command<C>>),
/// Scripts for node recovery
#[command(name = "recover")]
Recover(recover::Command<C>),
/// Prune according to the configuration without any limits
#[command(name = "prune")]
Prune(prune::PruneCommand<C>),
}
#[cfg(test)]
mod tests {
use super::*;
use crate::args::ColorMode;
use clap::CommandFactory;
use reth_ethereum_cli::chainspec::SUPPORTED_CHAINS;
#[test]
fn parse_color_mode() {
let reth = Cli::try_parse_args_from(["reth", "node", "--color", "always"]).unwrap();
assert_eq!(reth.logs.color, ColorMode::Always);
}
/// Tests that the help message is parsed correctly. This ensures that clap args are configured
/// correctly and no conflicts are introduced via attributes that would result in a panic at
/// runtime
#[test]
fn test_parse_help_all_subcommands() {
let reth = Cli::<EthereumChainSpecParser, NoArgs>::command();
for sub_command in reth.get_subcommands() {
let err = Cli::try_parse_args_from(["reth", sub_command.get_name(), "--help"])
.err()
.unwrap_or_else(|| {
panic!("Failed to parse help message {}", sub_command.get_name())
});
// --help is treated as error, but
// > Not a true "error" as it means --help or similar was used. The help message will be sent to stdout.
assert_eq!(err.kind(), clap::error::ErrorKind::DisplayHelp);
}
}
/// Tests that the log directory is parsed correctly. It's always tied to the specific chain's
/// name
#[test]
fn parse_logs_path() {
let mut reth = Cli::try_parse_args_from(["reth", "node"]).unwrap();
reth.logs.log_file_directory =
reth.logs.log_file_directory.join(reth.chain.chain.to_string());
let log_dir = reth.logs.log_file_directory;
let end = format!("reth/logs/{}", SUPPORTED_CHAINS[0]);
assert!(log_dir.as_ref().ends_with(end), "{log_dir:?}");
let mut iter = SUPPORTED_CHAINS.iter();
iter.next();
for chain in iter {
let mut reth = Cli::try_parse_args_from(["reth", "node", "--chain", chain]).unwrap();
reth.logs.log_file_directory =
reth.logs.log_file_directory.join(reth.chain.chain.to_string());
let log_dir = reth.logs.log_file_directory;
let end = format!("reth/logs/{chain}");
assert!(log_dir.as_ref().ends_with(end), "{log_dir:?}");
}
}
#[test]
fn parse_env_filter_directives() {
let temp_dir = tempfile::tempdir().unwrap();
unsafe { std::env::set_var("RUST_LOG", "info,evm=debug") };
let reth = Cli::try_parse_args_from([
"reth",
"init",
"--datadir",
temp_dir.path().to_str().unwrap(),
"--log.file.filter",
"debug,net=trace",
])
.unwrap();
assert!(reth.run(async move |_, _| Ok(())).is_ok());
}
}
/// This is re-exported because the types in [`reth_ethereum_cli::interface`] originally
/// existed in `reth::cli` but were moved to the [`reth_ethereum_cli`] crate. This re-export
/// avoids a breaking change.
pub use reth_ethereum_cli::interface::*;

View File

@@ -1,3 +0,0 @@
//! This contains all of the `reth` commands
pub mod debug_cmd;

View File

@@ -28,7 +28,6 @@
#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))]
pub mod cli;
pub mod commands;
/// Re-exported utils.
pub mod utils {
@@ -176,9 +175,9 @@ pub mod rpc {
pub use reth_rpc_server_types::result::*;
}
/// Re-exported from `reth_rpc_types_compat`.
/// Re-exported from `reth_rpc_convert`.
pub mod compat {
pub use reth_rpc_types_compat::*;
pub use reth_rpc_convert::*;
}
}
@@ -191,3 +190,7 @@ pub use reth_cli_runner::{tokio_runtime, CliContext, CliRunner};
// for rendering diagrams
use aquamarine as _;
// used in main
use clap as _;
use reth_cli_util as _;

View File

@@ -29,7 +29,7 @@ fn main() {
install_ress_subprotocol(
ress_args,
node.provider,
node.block_executor,
node.evm_config,
node.network,
node.task_executor,
node.add_ons_handle.engine_events.new_listener(),

View File

@@ -1,9 +1,9 @@
use reth_evm::execute::BlockExecutorProvider;
use reth_ethereum_primitives::EthPrimitives;
use reth_evm::ConfigureEvm;
use reth_network::{protocol::IntoRlpxSubProtocol, NetworkProtocols};
use reth_network_api::FullNetwork;
use reth_node_api::BeaconConsensusEngineEvent;
use reth_node_core::args::RessArgs;
use reth_primitives::EthPrimitives;
use reth_provider::providers::{BlockchainProvider, ProviderNodeTypes};
use reth_ress_protocol::{NodeType, ProtocolState, RessProtocolHandler};
use reth_ress_provider::{maintain_pending_state, PendingState, RethRessProtocolProvider};
@@ -16,14 +16,14 @@ use tracing::*;
pub fn install_ress_subprotocol<P, E, N>(
args: RessArgs,
provider: BlockchainProvider<P>,
block_executor: E,
evm_config: E,
network: N,
task_executor: TaskExecutor,
engine_events: EventStream<BeaconConsensusEngineEvent<EthPrimitives>>,
) -> eyre::Result<()>
where
P: ProviderNodeTypes<Primitives = EthPrimitives>,
E: BlockExecutorProvider<Primitives = EthPrimitives> + Clone,
E: ConfigureEvm<Primitives = EthPrimitives> + Clone + 'static,
N: FullNetwork + NetworkProtocols,
{
info!(target: "reth::cli", "Installing ress subprotocol");
@@ -39,11 +39,12 @@ where
let (tx, mut rx) = mpsc::unbounded_channel();
let provider = RethRessProtocolProvider::new(
provider,
block_executor,
evm_config,
Box::new(task_executor.clone()),
pending_state,
args.max_witness_window,
args.witness_max_parallel,
args.witness_cache_size,
pending_state,
)?;
network.add_rlpx_sub_protocol(
RessProtocolHandler {

View File

@@ -1,82 +0,0 @@
# Reth Book
- [Introduction](./intro.md)
- [Installation](./installation/installation.md)
- [Pre-Built Binaries](./installation/binaries.md)
- [Docker](./installation/docker.md)
- [Build from Source](./installation/source.md)
- [Build for ARM devices](./installation/build-for-arm-devices.md)
- [Update Priorities](./installation/priorities.md)
- [Run a Node](./run/run-a-node.md)
- [Mainnet or official testnets](./run/mainnet.md)
- [OP Stack](./run/optimism.md)
- [Run an OP Mainnet Node](./run/sync-op-mainnet.md)
- [Private testnet](./run/private-testnet.md)
- [Metrics](./run/observability.md)
- [Configuring Reth](./run/config.md)
- [Transaction types](./run/transactions.md)
- [Pruning & Full Node](./run/pruning.md)
- [Ports](./run/ports.md)
- [Troubleshooting](./run/troubleshooting.md)
- [Interacting with Reth over JSON-RPC](./jsonrpc/intro.md)
- [eth](./jsonrpc/eth.md)
- [web3](./jsonrpc/web3.md)
- [net](./jsonrpc/net.md)
- [txpool](./jsonrpc/txpool.md)
- [debug](./jsonrpc/debug.md)
- [trace](./jsonrpc/trace.md)
- [admin](./jsonrpc/admin.md)
- [rpc](./jsonrpc/rpc.md)
- [CLI Reference](./cli/cli.md) <!-- CLI_REFERENCE START -->
- [`reth`](./cli/reth.md)
- [`reth node`](./cli/reth/node.md)
- [`reth init`](./cli/reth/init.md)
- [`reth init-state`](./cli/reth/init-state.md)
- [`reth import`](./cli/reth/import.md)
- [`reth dump-genesis`](./cli/reth/dump-genesis.md)
- [`reth db`](./cli/reth/db.md)
- [`reth db stats`](./cli/reth/db/stats.md)
- [`reth db list`](./cli/reth/db/list.md)
- [`reth db checksum`](./cli/reth/db/checksum.md)
- [`reth db diff`](./cli/reth/db/diff.md)
- [`reth db get`](./cli/reth/db/get.md)
- [`reth db get mdbx`](./cli/reth/db/get/mdbx.md)
- [`reth db get static-file`](./cli/reth/db/get/static-file.md)
- [`reth db drop`](./cli/reth/db/drop.md)
- [`reth db clear`](./cli/reth/db/clear.md)
- [`reth db clear mdbx`](./cli/reth/db/clear/mdbx.md)
- [`reth db clear static-file`](./cli/reth/db/clear/static-file.md)
- [`reth db version`](./cli/reth/db/version.md)
- [`reth db path`](./cli/reth/db/path.md)
- [`reth stage`](./cli/reth/stage.md)
- [`reth stage run`](./cli/reth/stage/run.md)
- [`reth stage drop`](./cli/reth/stage/drop.md)
- [`reth stage dump`](./cli/reth/stage/dump.md)
- [`reth stage dump execution`](./cli/reth/stage/dump/execution.md)
- [`reth stage dump storage-hashing`](./cli/reth/stage/dump/storage-hashing.md)
- [`reth stage dump account-hashing`](./cli/reth/stage/dump/account-hashing.md)
- [`reth stage dump merkle`](./cli/reth/stage/dump/merkle.md)
- [`reth stage unwind`](./cli/reth/stage/unwind.md)
- [`reth stage unwind to-block`](./cli/reth/stage/unwind/to-block.md)
- [`reth stage unwind num-blocks`](./cli/reth/stage/unwind/num-blocks.md)
- [`reth p2p`](./cli/reth/p2p.md)
- [`reth p2p header`](./cli/reth/p2p/header.md)
- [`reth p2p body`](./cli/reth/p2p/body.md)
- [`reth p2p rlpx`](./cli/reth/p2p/rlpx.md)
- [`reth p2p rlpx ping`](./cli/reth/p2p/rlpx/ping.md)
- [`reth config`](./cli/reth/config.md)
- [`reth debug`](./cli/reth/debug.md)
- [`reth debug execution`](./cli/reth/debug/execution.md)
- [`reth debug merkle`](./cli/reth/debug/merkle.md)
- [`reth debug in-memory-merkle`](./cli/reth/debug/in-memory-merkle.md)
- [`reth debug build-block`](./cli/reth/debug/build-block.md)
- [`reth recover`](./cli/reth/recover.md)
- [`reth recover storage-tries`](./cli/reth/recover/storage-tries.md)
- [`reth prune`](./cli/reth/prune.md)
- [Developers](./developers/developers.md) <!-- CLI_REFERENCE END -->
- [Execution Extensions](./developers/exex/exex.md)
- [How do ExExes work?](./developers/exex/how-it-works.md)
- [Hello World](./developers/exex/hello-world.md)
- [Tracking State](./developers/exex/tracking-state.md)
- [Remote](./developers/exex/remote.md)
- [Contribute](./developers/contribute.md)

45
book/cli/SUMMARY.md vendored
View File

@@ -1,45 +0,0 @@
- [`reth`](./reth.md)
- [`reth node`](./reth/node.md)
- [`reth init`](./reth/init.md)
- [`reth init-state`](./reth/init-state.md)
- [`reth import`](./reth/import.md)
- [`reth dump-genesis`](./reth/dump-genesis.md)
- [`reth db`](./reth/db.md)
- [`reth db stats`](./reth/db/stats.md)
- [`reth db list`](./reth/db/list.md)
- [`reth db checksum`](./reth/db/checksum.md)
- [`reth db diff`](./reth/db/diff.md)
- [`reth db get`](./reth/db/get.md)
- [`reth db get mdbx`](./reth/db/get/mdbx.md)
- [`reth db get static-file`](./reth/db/get/static-file.md)
- [`reth db drop`](./reth/db/drop.md)
- [`reth db clear`](./reth/db/clear.md)
- [`reth db clear mdbx`](./reth/db/clear/mdbx.md)
- [`reth db clear static-file`](./reth/db/clear/static-file.md)
- [`reth db version`](./reth/db/version.md)
- [`reth db path`](./reth/db/path.md)
- [`reth stage`](./reth/stage.md)
- [`reth stage run`](./reth/stage/run.md)
- [`reth stage drop`](./reth/stage/drop.md)
- [`reth stage dump`](./reth/stage/dump.md)
- [`reth stage dump execution`](./reth/stage/dump/execution.md)
- [`reth stage dump storage-hashing`](./reth/stage/dump/storage-hashing.md)
- [`reth stage dump account-hashing`](./reth/stage/dump/account-hashing.md)
- [`reth stage dump merkle`](./reth/stage/dump/merkle.md)
- [`reth stage unwind`](./reth/stage/unwind.md)
- [`reth stage unwind to-block`](./reth/stage/unwind/to-block.md)
- [`reth stage unwind num-blocks`](./reth/stage/unwind/num-blocks.md)
- [`reth p2p`](./reth/p2p.md)
- [`reth p2p header`](./reth/p2p/header.md)
- [`reth p2p body`](./reth/p2p/body.md)
- [`reth p2p rlpx`](./reth/p2p/rlpx.md)
- [`reth p2p rlpx ping`](./reth/p2p/rlpx/ping.md)
- [`reth config`](./reth/config.md)
- [`reth debug`](./reth/debug.md)
- [`reth debug execution`](./reth/debug/execution.md)
- [`reth debug merkle`](./reth/debug/merkle.md)
- [`reth debug in-memory-merkle`](./reth/debug/in-memory-merkle.md)
- [`reth debug build-block`](./reth/debug/build-block.md)
- [`reth recover`](./reth/recover.md)
- [`reth recover storage-tries`](./reth/recover/storage-tries.md)
- [`reth prune`](./reth/prune.md)

View File

@@ -10,25 +10,28 @@ regex = "1"
---
use clap::Parser;
use regex::Regex;
use std::borrow::Cow;
use std::fs::{self, File};
use std::io::{self, Write};
use std::iter::once;
use std::path::{Path, PathBuf};
use std::process::{Command, Stdio};
use std::str;
use std::sync::LazyLock;
use std::{fmt, process};
use std::{
borrow::Cow,
fmt,
fs::{self, File},
io::{self, Write},
iter::once,
path::{Path, PathBuf},
process,
process::{Command, Stdio},
str,
sync::LazyLock,
};
const SECTION_START: &str = "<!-- CLI_REFERENCE START -->";
const SECTION_END: &str = "<!-- CLI_REFERENCE END -->";
const README: &str = r#"# CLI Reference
const SECTION_START: &str = "{/* CLI_REFERENCE START */}";
const SECTION_END: &str = "{/* CLI_REFERENCE END */";
const README: &str = r#"import Summary from './SUMMARY.mdx';
<!-- Generated by scripts/gen_output/help.rs -->
# CLI Reference
Automatically-generated CLI reference from `--help` output.
{{#include ./SUMMARY.md}}
<Summary />
"#;
const TRIM_LINE_END_MARKDOWN: bool = true;
@@ -49,7 +52,7 @@ struct Args {
#[arg(long, default_value_t = String::from("."))]
root_dir: String,
/// Indentation for the root SUMMARY.md file
/// Indentation for the root SUMMARY.mdx file
#[arg(long, default_value_t = 2)]
root_indentation: usize,
@@ -61,7 +64,7 @@ struct Args {
#[arg(long)]
readme: bool,
/// Whether to update the root SUMMARY.md file
/// Whether to update the root SUMMARY.mdx file
#[arg(long)]
root_summary: bool,
@@ -76,11 +79,7 @@ struct Args {
fn write_file(file_path: &Path, content: &str) -> io::Result<()> {
let content = if TRIM_LINE_END_MARKDOWN {
content
.lines()
.map(|line| line.trim_end())
.collect::<Vec<_>>()
.join("\n")
content.lines().map(|line| line.trim_end()).collect::<Vec<_>>().join("\n")
} else {
content.to_string()
};
@@ -106,25 +105,13 @@ fn main() -> io::Result<()> {
while let Some(cmd) = todo_iter.pop() {
let (new_subcmds, stdout) = get_entry(&cmd)?;
if args.verbose && !new_subcmds.is_empty() {
println!(
"Found subcommands for \"{}\": {:?}",
cmd.command_name(),
new_subcmds
);
println!("Found subcommands for \"{}\": {:?}", cmd.command_name(), new_subcmds);
}
// Add new subcommands to todo_iter (so that they are processed in the correct order).
for subcmd in new_subcmds.into_iter().rev() {
let new_subcmds: Vec<_> = cmd
.subcommands
.iter()
.cloned()
.chain(once(subcmd))
.collect();
let new_subcmds: Vec<_> = cmd.subcommands.iter().cloned().chain(once(subcmd)).collect();
todo_iter.push(Cmd {
cmd: cmd.cmd,
subcommands: new_subcmds,
});
todo_iter.push(Cmd { cmd: cmd.cmd, subcommands: new_subcmds });
}
output.push((cmd, stdout));
}
@@ -134,25 +121,25 @@ fn main() -> io::Result<()> {
cmd_markdown(&out_dir, cmd, stdout)?;
}
// Generate SUMMARY.md.
// Generate SUMMARY.mdx.
let summary: String = output
.iter()
.map(|(cmd, _)| cmd_summary(None, cmd, 0))
.chain(once("\n".to_string()))
.collect();
write_file(&out_dir.clone().join("SUMMARY.md"), &summary)?;
write_file(&out_dir.clone().join("SUMMARY.mdx"), &summary)?;
// Generate README.md.
if args.readme {
let path = &out_dir.join("README.md");
let path = &out_dir.join("README.mdx");
if args.verbose {
println!("Writing README.md to \"{}\"", path.to_string_lossy());
println!("Writing README.mdx to \"{}\"", path.to_string_lossy());
}
write_file(path, README)?;
}
// Generate root SUMMARY.md.
// Generate root SUMMARY.mdx.
if args.root_summary {
let root_summary: String = output
.iter()
@@ -166,7 +153,8 @@ fn main() -> io::Result<()> {
if args.verbose {
println!("Updating root summary in \"{}\"", path.to_string_lossy());
}
update_root_summary(path, &root_summary)?;
// TODO: This is where we update the cli reference sidebar.ts
// update_root_summary(path, &root_summary)?;
}
Ok(())
@@ -213,8 +201,7 @@ fn parse_sub_commands(s: &str) -> Vec<String> {
.lines()
.take_while(|line| !line.starts_with("Options:") && !line.starts_with("Arguments:"))
.filter_map(|line| {
re.captures(line)
.and_then(|cap| cap.get(1).map(|m| m.as_str().to_string()))
re.captures(line).and_then(|cap| cap.get(1).map(|m| m.as_str().to_string()))
})
.filter(|cmd| cmd != "help")
.map(String::from)
@@ -229,7 +216,7 @@ fn cmd_markdown(out_dir: &Path, cmd: &Cmd, stdout: &str) -> io::Result<()> {
let out_path = out_dir.join(cmd.to_string().replace(" ", "/"));
fs::create_dir_all(out_path.parent().unwrap())?;
write_file(&out_path.with_extension("md"), &out)?;
write_file(&out_path.with_extension("mdx"), &out)?;
Ok(())
}
@@ -265,12 +252,12 @@ fn cmd_summary(md_root: Option<PathBuf>, cmd: &Cmd, indent: usize) -> String {
Some(md_root) => format!("{}/{}", md_root.to_string_lossy(), cmd_path),
};
let indent_string = " ".repeat(indent + (cmd.subcommands.len() * 2));
format!("{}- [`{}`](./{}.md)\n", indent_string, cmd_s, full_cmd_path)
format!("{}- [`{}`](/cli/{})\n", indent_string, cmd_s, full_cmd_path)
}
/// Replaces the CLI_REFERENCE section in the root SUMMARY.md file.
/// Replaces the CLI_REFERENCE section in the root SUMMARY.mdx file.
fn update_root_summary(root_dir: &Path, root_summary: &str) -> io::Result<()> {
let summary_file = root_dir.join("SUMMARY.md");
let summary_file = root_dir.join("SUMMARY.mdx");
let original_summary_content = fs::read_to_string(&summary_file)?;
let section_re = regex!(&format!(r"(?s)\s*{SECTION_START}.*?{SECTION_END}"));
@@ -293,9 +280,8 @@ fn update_root_summary(root_dir: &Path, root_summary: &str) -> io::Result<()> {
let root_summary_s = root_summary.trim_end().replace("\n\n", "\n");
let replace_with = format!(" {}\n{}\n{}", SECTION_START, root_summary_s, last_line);
let new_root_summary = section_re
.replace(&original_summary_content, replace_with.as_str())
.to_string();
let new_root_summary =
section_re.replace(&original_summary_content, replace_with.as_str()).to_string();
let mut root_summary_file = File::create(&summary_file)?;
root_summary_file.write_all(new_root_summary.as_bytes())
@@ -349,17 +335,11 @@ struct Cmd<'a> {
impl<'a> Cmd<'a> {
fn command_name(&self) -> &str {
self.cmd
.file_name()
.and_then(|os_str| os_str.to_str())
.expect("Expect valid command")
self.cmd.file_name().and_then(|os_str| os_str.to_str()).expect("Expect valid command")
}
fn new(cmd: &'a PathBuf) -> Self {
Self {
cmd,
subcommands: Vec::new(),
}
Self { cmd, subcommands: Vec::new() }
}
}

View File

@@ -1,117 +0,0 @@
# reth config
Write config to stdout
```bash
$ reth config --help
```
```txt
Usage: reth config [OPTIONS]
Options:
--config <FILE>
The path to the configuration file to use.
--default
Show the default config
--chain <CHAIN_OR_PATH>
The chain this node is running.
Possible values are either a built-in chain or the path to a chain specification file.
Built-in chains:
mainnet, sepolia, holesky, dev
[default: mainnet]
--instance <INSTANCE>
Add a new instance of a node.
Configures the ports of the node to avoid conflicts with the defaults. This is useful for running multiple nodes on the same machine.
Max number of instances is 200. It is chosen in a way so that it's not possible to have port numbers that conflict with each other.
Changes to the following port numbers: - `DISCOVERY_PORT`: default + `instance` - 1 - `AUTH_PORT`: default + `instance` * 100 - 100 - `HTTP_RPC_PORT`: default - `instance` + 1 - `WS_RPC_PORT`: default + `instance` * 2 - 2
[default: 1]
-h, --help
Print help (see a summary with '-h')
Logging:
--log.stdout.format <FORMAT>
The format to use for logs written to stdout
[default: terminal]
Possible values:
- json: Represents JSON formatting for logs. This format outputs log records as JSON objects, making it suitable for structured logging
- log-fmt: Represents logfmt (key=value) formatting for logs. This format is concise and human-readable, typically used in command-line applications
- terminal: Represents terminal-friendly formatting for logs
--log.stdout.filter <FILTER>
The filter to use for logs written to stdout
[default: ]
--log.file.format <FORMAT>
The format to use for logs written to the log file
[default: terminal]
Possible values:
- json: Represents JSON formatting for logs. This format outputs log records as JSON objects, making it suitable for structured logging
- log-fmt: Represents logfmt (key=value) formatting for logs. This format is concise and human-readable, typically used in command-line applications
- terminal: Represents terminal-friendly formatting for logs
--log.file.filter <FILTER>
The filter to use for logs written to the log file
[default: debug]
--log.file.directory <PATH>
The path to put log files in
[default: <CACHE_DIR>/logs]
--log.file.max-size <SIZE>
The maximum size (in MB) of one log file
[default: 200]
--log.file.max-files <COUNT>
The maximum amount of log files that will be stored. If set to 0, background file logging is disabled
[default: 5]
--log.journald
Write logs to journald
--log.journald.filter <FILTER>
The filter to use for logs written to journald
[default: error]
--color <COLOR>
Sets whether or not the formatter emits ANSI terminal escape codes for colors and other text formatting
[default: always]
Possible values:
- always: Colors on
- auto: Colors on
- never: Colors off
Display:
-v, --verbosity...
Set the minimum log level.
-v Errors
-vv Warnings
-vvv Info
-vvvv Debug
-vvvvv Traces (warning: very verbose!)
-q, --quiet
Silence all log output
```

View File

@@ -1,332 +0,0 @@
# reth debug replay-engine
Debug engine API by replaying stored messages
```bash
$ reth debug replay-engine --help
```
```txt
Usage: reth debug replay-engine [OPTIONS] --engine-api-store <PATH>
Options:
--instance <INSTANCE>
Add a new instance of a node.
Configures the ports of the node to avoid conflicts with the defaults. This is useful for running multiple nodes on the same machine.
Max number of instances is 200. It is chosen in a way so that it's not possible to have port numbers that conflict with each other.
Changes to the following port numbers: - `DISCOVERY_PORT`: default + `instance` - 1 - `AUTH_PORT`: default + `instance` * 100 - 100 - `HTTP_RPC_PORT`: default - `instance` + 1 - `WS_RPC_PORT`: default + `instance` * 2 - 2
[default: 1]
-h, --help
Print help (see a summary with '-h')
Datadir:
--datadir <DATA_DIR>
The path to the data dir for all reth files and subdirectories.
Defaults to the OS-specific data directory:
- Linux: `$XDG_DATA_HOME/reth/` or `$HOME/.local/share/reth/`
- Windows: `{FOLDERID_RoamingAppData}/reth/`
- macOS: `$HOME/Library/Application Support/reth/`
[default: default]
--datadir.static-files <PATH>
The absolute path to store static files in.
--config <FILE>
The path to the configuration file to use
--chain <CHAIN_OR_PATH>
The chain this node is running.
Possible values are either a built-in chain or the path to a chain specification file.
Built-in chains:
mainnet, sepolia, holesky, dev
[default: mainnet]
Database:
--db.log-level <LOG_LEVEL>
Database logging level. Levels higher than "notice" require a debug build
Possible values:
- fatal: Enables logging for critical conditions, i.e. assertion failures
- error: Enables logging for error conditions
- warn: Enables logging for warning conditions
- notice: Enables logging for normal but significant condition
- verbose: Enables logging for verbose informational
- debug: Enables logging for debug-level messages
- trace: Enables logging for trace debug-level messages
- extra: Enables logging for extra debug-level messages
--db.exclusive <EXCLUSIVE>
Open environment in exclusive/monopolistic mode. Makes it possible to open a database on an NFS volume
[possible values: true, false]
--db.max-size <MAX_SIZE>
Maximum database size (e.g., 4TB, 8MB)
--db.growth-step <GROWTH_STEP>
Database growth step (e.g., 4GB, 4KB)
--db.read-transaction-timeout <READ_TRANSACTION_TIMEOUT>
Read transaction timeout in seconds, 0 means no timeout
Networking:
-d, --disable-discovery
Disable the discovery service
--disable-dns-discovery
Disable the DNS discovery
--disable-discv4-discovery
Disable Discv4 discovery
--enable-discv5-discovery
Enable Discv5 discovery
--disable-nat
Disable Nat discovery
--discovery.addr <DISCOVERY_ADDR>
The UDP address to use for devp2p peer discovery version 4
[default: 0.0.0.0]
--discovery.port <DISCOVERY_PORT>
The UDP port to use for devp2p peer discovery version 4
[default: 30303]
--discovery.v5.addr <DISCOVERY_V5_ADDR>
The UDP IPv4 address to use for devp2p peer discovery version 5. Overwritten by `RLPx` address, if it's also IPv4
--discovery.v5.addr.ipv6 <DISCOVERY_V5_ADDR_IPV6>
The UDP IPv6 address to use for devp2p peer discovery version 5. Overwritten by `RLPx` address, if it's also IPv6
--discovery.v5.port <DISCOVERY_V5_PORT>
The UDP IPv4 port to use for devp2p peer discovery version 5. Not used unless `--addr` is IPv4, or `--discovery.v5.addr` is set
[default: 9200]
--discovery.v5.port.ipv6 <DISCOVERY_V5_PORT_IPV6>
The UDP IPv6 port to use for devp2p peer discovery version 5. Not used unless `--addr` is IPv6, or `--discovery.addr.ipv6` is set
[default: 9200]
--discovery.v5.lookup-interval <DISCOVERY_V5_LOOKUP_INTERVAL>
The interval in seconds at which to carry out periodic lookup queries, for the whole run of the program
[default: 60]
--discovery.v5.bootstrap.lookup-interval <DISCOVERY_V5_BOOTSTRAP_LOOKUP_INTERVAL>
The interval in seconds at which to carry out boost lookup queries, for a fixed number of times, at bootstrap
[default: 5]
--discovery.v5.bootstrap.lookup-countdown <DISCOVERY_V5_BOOTSTRAP_LOOKUP_COUNTDOWN>
The number of times to carry out boost lookup queries at bootstrap
[default: 100]
--trusted-peers <TRUSTED_PEERS>
Comma separated enode URLs of trusted peers for P2P connections.
--trusted-peers enode://abcd@192.168.0.1:30303
--trusted-only
Connect to or accept from trusted peers only
--bootnodes <BOOTNODES>
Comma separated enode URLs for P2P discovery bootstrap.
Will fall back to a network-specific default if not specified.
--dns-retries <DNS_RETRIES>
Amount of DNS resolution requests retries to perform when peering
[default: 0]
--peers-file <FILE>
The path to the known peers file. Connected peers are dumped to this file on nodes
shutdown, and read on startup. Cannot be used with `--no-persist-peers`.
--identity <IDENTITY>
Custom node identity
[default: reth/<VERSION>-<SHA>/<ARCH>]
--p2p-secret-key <PATH>
Secret key to use for this node.
This will also deterministically set the peer ID. If not specified, it will be set in the data dir for the chain being used.
--no-persist-peers
Do not persist peers.
--nat <NAT>
NAT resolution method (any|none|upnp|publicip|extip:\<IP\>)
[default: any]
--addr <ADDR>
Network listening address
[default: 0.0.0.0]
--port <PORT>
Network listening port
[default: 30303]
--max-outbound-peers <MAX_OUTBOUND_PEERS>
Maximum number of outbound requests. default: 100
--max-inbound-peers <MAX_INBOUND_PEERS>
Maximum number of inbound requests. default: 30
--max-tx-reqs <COUNT>
Max concurrent `GetPooledTransactions` requests.
[default: 130]
--max-tx-reqs-peer <COUNT>
Max concurrent `GetPooledTransactions` requests per peer.
[default: 1]
--max-seen-tx-history <COUNT>
Max number of seen transactions to remember per peer.
Default is 320 transaction hashes.
[default: 320]
--max-pending-imports <COUNT>
Max number of transactions to import concurrently.
[default: 4096]
--pooled-tx-response-soft-limit <BYTES>
Experimental, for usage in research. Sets the max accumulated byte size of transactions
to pack in one response.
Spec'd at 2MiB.
[default: 2097152]
--pooled-tx-pack-soft-limit <BYTES>
Experimental, for usage in research. Sets the max accumulated byte size of transactions to
request in one request.
Since `RLPx` protocol version 68, the byte size of a transaction is shared as metadata in a
transaction announcement (see `RLPx` specs). This allows a node to request a specific size
response.
By default, nodes request only 128 KiB worth of transactions, but should a peer request
more, up to 2 MiB, a node will answer with more than 128 KiB.
Default is 128 KiB.
[default: 131072]
--max-tx-pending-fetch <COUNT>
Max capacity of cache of hashes for transactions pending fetch.
[default: 25600]
--net-if.experimental <IF_NAME>
Name of network interface used to communicate with peers.
If flag is set, but no value is passed, the default interface for docker `eth0` is tried.
--engine-api-store <PATH>
The path to read engine API messages from
--interval <INTERVAL>
The number of milliseconds between Engine API messages
[default: 1000]
Logging:
--log.stdout.format <FORMAT>
The format to use for logs written to stdout
[default: terminal]
Possible values:
- json: Represents JSON formatting for logs. This format outputs log records as JSON objects, making it suitable for structured logging
- log-fmt: Represents logfmt (key=value) formatting for logs. This format is concise and human-readable, typically used in command-line applications
- terminal: Represents terminal-friendly formatting for logs
--log.stdout.filter <FILTER>
The filter to use for logs written to stdout
[default: ]
--log.file.format <FORMAT>
The format to use for logs written to the log file
[default: terminal]
Possible values:
- json: Represents JSON formatting for logs. This format outputs log records as JSON objects, making it suitable for structured logging
- log-fmt: Represents logfmt (key=value) formatting for logs. This format is concise and human-readable, typically used in command-line applications
- terminal: Represents terminal-friendly formatting for logs
--log.file.filter <FILTER>
The filter to use for logs written to the log file
[default: debug]
--log.file.directory <PATH>
The path to put log files in
[default: <CACHE_DIR>/logs]
--log.file.max-size <SIZE>
The maximum size (in MB) of one log file
[default: 200]
--log.file.max-files <COUNT>
The maximum amount of log files that will be stored. If set to 0, background file logging is disabled
[default: 5]
--log.journald
Write logs to journald
--log.journald.filter <FILTER>
The filter to use for logs written to journald
[default: error]
--color <COLOR>
Sets whether or not the formatter emits ANSI terminal escape codes for colors and other text formatting
[default: always]
Possible values:
- always: Colors on
- auto: Colors on
- never: Colors off
Display:
-v, --verbosity...
Set the minimum log level.
-v Errors
-vv Warnings
-vvv Info
-vvvv Debug
-vvvvv Traces (warning: very verbose!)
-q, --quiet
Silence all log output
```

View File

@@ -1,134 +0,0 @@
# op-reth import
This syncs RLP encoded blocks from a file. Supports import of OVM blocks
from the Bedrock datadir. Requires blocks, up to same height as receipts
file, to already be imported.
```bash
$ op-reth import-op --help
Usage: op-reth import-op [OPTIONS] <IMPORT_PATH>
Options:
--config <FILE>
The path to the configuration file to use.
--datadir <DATA_DIR>
The path to the data dir for all reth files and subdirectories.
Defaults to the OS-specific data directory:
- Linux: `$XDG_DATA_HOME/reth/` or `$HOME/.local/share/reth/`
- Windows: `{FOLDERID_RoamingAppData}/reth/`
- macOS: `$HOME/Library/Application Support/reth/`
[default: default]
--chunk-len <CHUNK_LEN>
Chunk byte length to read from file.
[default: 1GB]
-h, --help
Print help (see a summary with '-h')
Database:
--db.log-level <LOG_LEVEL>
Database logging level. Levels higher than "notice" require a debug build
Possible values:
- fatal: Enables logging for critical conditions, i.e. assertion failures
- error: Enables logging for error conditions
- warn: Enables logging for warning conditions
- notice: Enables logging for normal but significant condition
- verbose: Enables logging for verbose informational
- debug: Enables logging for debug-level messages
- trace: Enables logging for trace debug-level messages
- extra: Enables logging for extra debug-level messages
--db.exclusive <EXCLUSIVE>
Open environment in exclusive/monopolistic mode. Makes it possible to open a database on an NFS volume
[possible values: true, false]
<IMPORT_PATH>
The path to a `.rlp` block file for import.
The online sync pipeline stages (headers and bodies) are replaced by a file import. Skips block execution since blocks below Bedrock are built on OVM.
Logging:
--log.stdout.format <FORMAT>
The format to use for logs written to stdout
[default: terminal]
Possible values:
- json: Represents JSON formatting for logs. This format outputs log records as JSON objects, making it suitable for structured logging
- log-fmt: Represents logfmt (key=value) formatting for logs. This format is concise and human-readable, typically used in command-line applications
- terminal: Represents terminal-friendly formatting for logs
--log.stdout.filter <FILTER>
The filter to use for logs written to stdout
[default: ]
--log.file.format <FORMAT>
The format to use for logs written to the log file
[default: terminal]
Possible values:
- json: Represents JSON formatting for logs. This format outputs log records as JSON objects, making it suitable for structured logging
- log-fmt: Represents logfmt (key=value) formatting for logs. This format is concise and human-readable, typically used in command-line applications
- terminal: Represents terminal-friendly formatting for logs
--log.file.filter <FILTER>
The filter to use for logs written to the log file
[default: debug]
--log.file.directory <PATH>
The path to put log files in
[default: <CACHE_DIR>/logs]
--log.file.max-size <SIZE>
The maximum size (in MB) of one log file
[default: 200]
--log.file.max-files <COUNT>
The maximum amount of log files that will be stored. If set to 0, background file logging is disabled
[default: 5]
--log.journald
Write logs to journald
--log.journald.filter <FILTER>
The filter to use for logs written to journald
[default: error]
--color <COLOR>
Sets whether or not the formatter emits ANSI terminal escape codes for colors and other text formatting
[default: always]
Possible values:
- always: Colors on
- auto: Colors on
- never: Colors off
Display:
-v, --verbosity...
Set the minimum log level.
-v Errors
-vv Warnings
-vvv Info
-vvvv Debug
-vvvvv Traces (warning: very verbose!)
-q, --quiet
Silence all log output
```

View File

@@ -1,133 +0,0 @@
# op-reth import-receipts-op
This imports non-standard RLP encoded receipts from a file.
The supported RLP encoding, is the non-standard encoding used
for receipt export in <https://github.com/testinprod-io/op-geth/pull/1>.
Supports import of OVM receipts from the Bedrock datadir.
```bash
$ op-reth import-receipts-op --help
Usage: op-reth import-receipts-op [OPTIONS] <IMPORT_PATH>
Options:
--datadir <DATA_DIR>
The path to the data dir for all reth files and subdirectories.
Defaults to the OS-specific data directory:
- Linux: `$XDG_DATA_HOME/reth/` or `$HOME/.local/share/reth/`
- Windows: `{FOLDERID_RoamingAppData}/reth/`
- macOS: `$HOME/Library/Application Support/reth/`
[default: default]
--chunk-len <CHUNK_LEN>
Chunk byte length to read from file.
[default: 1GB]
-h, --help
Print help (see a summary with '-h')
Database:
--db.log-level <LOG_LEVEL>
Database logging level. Levels higher than "notice" require a debug build
Possible values:
- fatal: Enables logging for critical conditions, i.e. assertion failures
- error: Enables logging for error conditions
- warn: Enables logging for warning conditions
- notice: Enables logging for normal but significant condition
- verbose: Enables logging for verbose informational
- debug: Enables logging for debug-level messages
- trace: Enables logging for trace debug-level messages
- extra: Enables logging for extra debug-level messages
--db.exclusive <EXCLUSIVE>
Open environment in exclusive/monopolistic mode. Makes it possible to open a database on an NFS volume
[possible values: true, false]
<IMPORT_PATH>
The path to a receipts file for import. File must use `OpGethReceiptFileCodec` (used for
exporting OP chain segment below Bedrock block via testinprod/op-geth).
<https://github.com/testinprod-io/op-geth/pull/1>
Logging:
--log.stdout.format <FORMAT>
The format to use for logs written to stdout
[default: terminal]
Possible values:
- json: Represents JSON formatting for logs. This format outputs log records as JSON objects, making it suitable for structured logging
- log-fmt: Represents logfmt (key=value) formatting for logs. This format is concise and human-readable, typically used in command-line applications
- terminal: Represents terminal-friendly formatting for logs
--log.stdout.filter <FILTER>
The filter to use for logs written to stdout
[default: ]
--log.file.format <FORMAT>
The format to use for logs written to the log file
[default: terminal]
Possible values:
- json: Represents JSON formatting for logs. This format outputs log records as JSON objects, making it suitable for structured logging
- log-fmt: Represents logfmt (key=value) formatting for logs. This format is concise and human-readable, typically used in command-line applications
- terminal: Represents terminal-friendly formatting for logs
--log.file.filter <FILTER>
The filter to use for logs written to the log file
[default: debug]
--log.file.directory <PATH>
The path to put log files in
[default: <CACHE_DIR>/logs]
--log.file.max-size <SIZE>
The maximum size (in MB) of one log file
[default: 200]
--log.file.max-files <COUNT>
The maximum amount of log files that will be stored. If set to 0, background file logging is disabled
[default: 5]
--log.journald
Write logs to journald
--log.journald.filter <FILTER>
The filter to use for logs written to journald
[default: error]
--color <COLOR>
Sets whether or not the formatter emits ANSI terminal escape codes for colors and other text formatting
[default: always]
Possible values:
- always: Colors on
- auto: Colors on
- never: Colors off
Display:
-v, --verbosity...
Set the minimum log level.
-v Errors
-vv Warnings
-vvv Info
-vvvv Debug
-vvvvv Traces (warning: very verbose!)
-q, --quiet
Silence all log output
```

View File

@@ -1,115 +0,0 @@
# reth recover
Scripts for node recovery
```bash
$ reth recover --help
```
```txt
Usage: reth recover [OPTIONS] <COMMAND>
Commands:
storage-tries Recover the node by deleting dangling storage tries
help Print this message or the help of the given subcommand(s)
Options:
--chain <CHAIN_OR_PATH>
The chain this node is running.
Possible values are either a built-in chain or the path to a chain specification file.
Built-in chains:
mainnet, sepolia, holesky, dev
[default: mainnet]
--instance <INSTANCE>
Add a new instance of a node.
Configures the ports of the node to avoid conflicts with the defaults. This is useful for running multiple nodes on the same machine.
Max number of instances is 200. It is chosen in a way so that it's not possible to have port numbers that conflict with each other.
Changes to the following port numbers: - `DISCOVERY_PORT`: default + `instance` - 1 - `AUTH_PORT`: default + `instance` * 100 - 100 - `HTTP_RPC_PORT`: default - `instance` + 1 - `WS_RPC_PORT`: default + `instance` * 2 - 2
[default: 1]
-h, --help
Print help (see a summary with '-h')
Logging:
--log.stdout.format <FORMAT>
The format to use for logs written to stdout
[default: terminal]
Possible values:
- json: Represents JSON formatting for logs. This format outputs log records as JSON objects, making it suitable for structured logging
- log-fmt: Represents logfmt (key=value) formatting for logs. This format is concise and human-readable, typically used in command-line applications
- terminal: Represents terminal-friendly formatting for logs
--log.stdout.filter <FILTER>
The filter to use for logs written to stdout
[default: ]
--log.file.format <FORMAT>
The format to use for logs written to the log file
[default: terminal]
Possible values:
- json: Represents JSON formatting for logs. This format outputs log records as JSON objects, making it suitable for structured logging
- log-fmt: Represents logfmt (key=value) formatting for logs. This format is concise and human-readable, typically used in command-line applications
- terminal: Represents terminal-friendly formatting for logs
--log.file.filter <FILTER>
The filter to use for logs written to the log file
[default: debug]
--log.file.directory <PATH>
The path to put log files in
[default: <CACHE_DIR>/logs]
--log.file.max-size <SIZE>
The maximum size (in MB) of one log file
[default: 200]
--log.file.max-files <COUNT>
The maximum amount of log files that will be stored. If set to 0, background file logging is disabled
[default: 5]
--log.journald
Write logs to journald
--log.journald.filter <FILTER>
The filter to use for logs written to journald
[default: error]
--color <COLOR>
Sets whether or not the formatter emits ANSI terminal escape codes for colors and other text formatting
[default: always]
Possible values:
- always: Colors on
- auto: Colors on
- never: Colors off
Display:
-v, --verbosity...
Set the minimum log level.
-v Errors
-vv Warnings
-vvv Info
-vvvv Debug
-vvvvv Traces (warning: very verbose!)
-q, --quiet
Silence all log output
```

118
book/cli/reth/stage.md vendored
View File

@@ -1,118 +0,0 @@
# reth stage
Manipulate individual stages
```bash
$ reth stage --help
```
```txt
Usage: reth stage [OPTIONS] <COMMAND>
Commands:
run Run a single stage
drop Drop a stage's tables from the database
dump Dumps a stage from a range into a new database
unwind Unwinds a certain block range, deleting it from the database
help Print this message or the help of the given subcommand(s)
Options:
--chain <CHAIN_OR_PATH>
The chain this node is running.
Possible values are either a built-in chain or the path to a chain specification file.
Built-in chains:
mainnet, sepolia, holesky, dev
[default: mainnet]
--instance <INSTANCE>
Add a new instance of a node.
Configures the ports of the node to avoid conflicts with the defaults. This is useful for running multiple nodes on the same machine.
Max number of instances is 200. It is chosen in a way so that it's not possible to have port numbers that conflict with each other.
Changes to the following port numbers: - `DISCOVERY_PORT`: default + `instance` - 1 - `AUTH_PORT`: default + `instance` * 100 - 100 - `HTTP_RPC_PORT`: default - `instance` + 1 - `WS_RPC_PORT`: default + `instance` * 2 - 2
[default: 1]
-h, --help
Print help (see a summary with '-h')
Logging:
--log.stdout.format <FORMAT>
The format to use for logs written to stdout
[default: terminal]
Possible values:
- json: Represents JSON formatting for logs. This format outputs log records as JSON objects, making it suitable for structured logging
- log-fmt: Represents logfmt (key=value) formatting for logs. This format is concise and human-readable, typically used in command-line applications
- terminal: Represents terminal-friendly formatting for logs
--log.stdout.filter <FILTER>
The filter to use for logs written to stdout
[default: ]
--log.file.format <FORMAT>
The format to use for logs written to the log file
[default: terminal]
Possible values:
- json: Represents JSON formatting for logs. This format outputs log records as JSON objects, making it suitable for structured logging
- log-fmt: Represents logfmt (key=value) formatting for logs. This format is concise and human-readable, typically used in command-line applications
- terminal: Represents terminal-friendly formatting for logs
--log.file.filter <FILTER>
The filter to use for logs written to the log file
[default: debug]
--log.file.directory <PATH>
The path to put log files in
[default: <CACHE_DIR>/logs]
--log.file.max-size <SIZE>
The maximum size (in MB) of one log file
[default: 200]
--log.file.max-files <COUNT>
The maximum amount of log files that will be stored. If set to 0, background file logging is disabled
[default: 5]
--log.journald
Write logs to journald
--log.journald.filter <FILTER>
The filter to use for logs written to journald
[default: error]
--color <COLOR>
Sets whether or not the formatter emits ANSI terminal escape codes for colors and other text formatting
[default: always]
Possible values:
- always: Colors on
- auto: Colors on
- never: Colors off
Display:
-v, --verbosity...
Set the minimum log level.
-v Errors
-vv Warnings
-vvv Info
-vvvv Debug
-vvvvv Traces (warning: very verbose!)
-q, --quiet
Silence all log output
```

View File

@@ -1,113 +0,0 @@
# reth test-vectors
Generate Test Vectors
```bash
$ reth test-vectors --help
Usage: reth test-vectors [OPTIONS] <COMMAND>
Commands:
tables Generates test vectors for specified tables. If no table is specified, generate for all
help Print this message or the help of the given subcommand(s)
Options:
--chain <CHAIN_OR_PATH>
The chain this node is running.
Possible values are either a built-in chain or the path to a chain specification file.
Built-in chains:
mainnet, sepolia, holesky, dev
[default: mainnet]
--instance <INSTANCE>
Add a new instance of a node.
Configures the ports of the node to avoid conflicts with the defaults. This is useful for running multiple nodes on the same machine.
Max number of instances is 200. It is chosen in a way so that it's not possible to have port numbers that conflict with each other.
Changes to the following port numbers: - `DISCOVERY_PORT`: default + `instance` - 1 - `AUTH_PORT`: default + `instance` * 100 - 100 - `HTTP_RPC_PORT`: default - `instance` + 1 - `WS_RPC_PORT`: default + `instance` * 2 - 2
[default: 1]
-h, --help
Print help (see a summary with '-h')
Logging:
--log.stdout.format <FORMAT>
The format to use for logs written to stdout
[default: terminal]
Possible values:
- json: Represents JSON formatting for logs. This format outputs log records as JSON objects, making it suitable for structured logging
- log-fmt: Represents logfmt (key=value) formatting for logs. This format is concise and human-readable, typically used in command-line applications
- terminal: Represents terminal-friendly formatting for logs
--log.stdout.filter <FILTER>
The filter to use for logs written to stdout
[default: ]
--log.file.format <FORMAT>
The format to use for logs written to the log file
[default: terminal]
Possible values:
- json: Represents JSON formatting for logs. This format outputs log records as JSON objects, making it suitable for structured logging
- log-fmt: Represents logfmt (key=value) formatting for logs. This format is concise and human-readable, typically used in command-line applications
- terminal: Represents terminal-friendly formatting for logs
--log.file.filter <FILTER>
The filter to use for logs written to the log file
[default: debug]
--log.file.directory <PATH>
The path to put log files in
[default: <CACHE_DIR>/logs]
--log.file.max-size <SIZE>
The maximum size (in MB) of one log file
[default: 200]
--log.file.max-files <COUNT>
The maximum amount of log files that will be stored. If set to 0, background file logging is disabled
[default: 5]
--log.journald
Write logs to journald
--log.journald.filter <FILTER>
The filter to use for logs written to journald
[default: error]
--color <COLOR>
Sets whether or not the formatter emits ANSI terminal escape codes for colors and other text formatting
[default: always]
Possible values:
- always: Colors on
- auto: Colors on
- never: Colors off
Display:
-v, --verbosity...
Set the minimum log level.
-v Errors
-vv Warnings
-vvv Info
-vvvv Debug
-vvvvv Traces (warning: very verbose!)
-q, --quiet
Silence all log output
```

View File

@@ -3,13 +3,18 @@ set -eo pipefail
BOOK_ROOT="$(dirname "$(dirname "$0")")"
RETH=${1:-"$(dirname "$BOOK_ROOT")/target/debug/reth"}
VOCS_PAGES_ROOT="$BOOK_ROOT/vocs/docs/pages"
echo "Generating CLI documentation for reth at $RETH"
echo "Using book root: $BOOK_ROOT"
echo "Using vocs pages root: $VOCS_PAGES_ROOT"
cmd=(
"$(dirname "$0")/help.rs"
--root-dir "$BOOK_ROOT/"
--root-indentation 2
--root-summary
--out-dir "$BOOK_ROOT/cli/"
--verbose
--out-dir "$VOCS_PAGES_ROOT/cli/"
"$RETH"
)
echo "Running: $" "${cmd[*]}"

View File

@@ -1,9 +0,0 @@
# Contribute
<!-- TODO: Add various debugging tips and tricks we use, ways to configure logging, unwinding a node etc. -->
Reth has docs specifically geared for developers and contributors, including documentation on the structure and architecture of reth, the general workflow we employ, and other useful tips.
You can find these docs [here](https://github.com/paradigmxyz/reth/tree/main/docs).
Check out our contributing guidelines [here](https://github.com/paradigmxyz/reth/blob/main/CONTRIBUTING.md).

View File

@@ -1,3 +0,0 @@
# Developers
Reth is composed of several crates that can be used in standalone projects. If you are interested in using one or more of the crates, you can get an overview of them in the [developer docs](https://github.com/paradigmxyz/reth/tree/main/docs), or take a look at the [crate docs](https://paradigmxyz.github.io/reth/docs).

View File

@@ -1,18 +0,0 @@
# Update Priorities
When publishing releases, reth will include an "Update Priority" section in the release notes, in the same manner Lighthouse does.
The "Update Priority" section will include a table which may appear like so:
| User Class | Priority |
|----------------------|-----------------|
| Payload Builders | Medium Priority |
| Non-Payload Builders | Low Priority |
To understand this table, the following terms are important:
- *Payload builders* are those who use reth to build and validate payloads.
- *Non-payload builders* are those who run reth for other purposes (e.g., data analysis, RPC or applications).
- *High priority* updates should be completed as soon as possible (e.g., hours or days).
- *Medium priority* updates should be completed at the next convenience (e.g., days or a week).
- *Low priority* updates should be completed in the next routine update cycle (e.g., two weeks).

View File

@@ -1,38 +0,0 @@
# Ports
This section provides essential information about the ports used by the system, their primary purposes, and recommendations for exposure settings.
## Peering Ports
- **Port:** 30303
- **Protocol:** TCP and UDP
- **Purpose:** Peering with other nodes for synchronization of blockchain data. Nodes communicate through this port to maintain network consensus and share updated information.
- **Exposure Recommendation:** This port should be exposed to enable seamless interaction and synchronization with other nodes in the network.
## Metrics Port
- **Port:** 9001
- **Protocol:** TCP
- **Purpose:** This port is designated for serving metrics related to the system's performance and operation. It allows internal monitoring and data collection for analysis.
- **Exposure Recommendation:** By default, this port should not be exposed to the public. It is intended for internal monitoring and analysis purposes.
## HTTP RPC Port
- **Port:** 8545
- **Protocol:** TCP
- **Purpose:** Port 8545 provides an HTTP-based Remote Procedure Call (RPC) interface. It enables external applications to interact with the blockchain by sending requests over HTTP.
- **Exposure Recommendation:** Similar to the metrics port, exposing this port to the public is not recommended by default due to security considerations.
## WS RPC Port
- **Port:** 8546
- **Protocol:** TCP
- **Purpose:** Port 8546 offers a WebSocket-based Remote Procedure Call (RPC) interface. It allows real-time communication between external applications and the blockchain.
- **Exposure Recommendation:** As with the HTTP RPC port, the WS RPC port should not be exposed by default for security reasons.
## Engine API Port
- **Port:** 8551
- **Protocol:** TCP
- **Purpose:** Port 8551 facilitates communication between specific components, such as "reth" and "CL" (assuming their definitions are understood within the context of the system). It enables essential internal processes.
- **Exposure Recommendation:** This port is not meant to be exposed to the public by default. It should be reserved for internal communication between vital components of the system.

View File

@@ -1,15 +0,0 @@
# Run a Node
Congratulations, now that you have installed Reth, it's time to run it!
In this chapter we'll go through a few different topics you'll encounter when running Reth, including:
1. [Running on mainnet or official testnets](./mainnet.md)
1. [Running on OP Stack chains](./optimism.md)
1. [Logs and Observability](./observability.md)
1. [Configuring reth.toml](./config.md)
1. [Transaction types](./transactions.md)
1. [Pruning & Full Node](./pruning.md)
1. [Ports](./ports.md)
1. [Troubleshooting](./troubleshooting.md)
In the future, we also intend to support the [OP Stack](https://docs.optimism.io/get-started/superchain), which will allow you to run Reth as a Layer 2 client. More there soon!

View File

@@ -1,13 +0,0 @@
[workspace]
members = ["exex/hello-world", "exex/remote", "exex/tracking-state"]
# Explicitly set the resolver to version 2, which is the default for packages with edition >= 2021
# https://doc.rust-lang.org/edition-guide/rust-2021/default-cargo-resolver.html
resolver = "2"
[patch.'https://github.com/paradigmxyz/reth']
reth = { path = "../../bin/reth" }
reth-exex = { path = "../../crates/exex/exex" }
reth-node-ethereum = { path = "../../crates/ethereum/node" }
reth-tracing = { path = "../../crates/tracing" }
reth-node-api = { path = "../../crates/node/api" }

View File

@@ -1,4 +0,0 @@
[File: [[ #path ]]](https://github.com/paradigmxyz/reth/blob/main/[[ #path ]])
```rust,no_run,noplayground
{{#include [[ #path_to_root ]][[ #path ]]:[[ #anchor ]]}}
```

View File

@@ -1,5 +0,0 @@
<meta name="twitter:card" content="summary">
<meta property="og:title" content="Reth Book" />
<meta property="og:description" content="The Reth Book contains all information about using Reth as an infrastructure node operator." />
<meta name="twitter:image:src" content="https://raw.githubusercontent.com/paradigmxyz/reth/main/assets/reth-prod.png" />
<meta property="og:image" content="https://raw.githubusercontent.com/paradigmxyz/reth/main/assets/reth-prod.png" />

103
book/vocs/CLAUDE.md Normal file
View File

@@ -0,0 +1,103 @@
# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## Project Overview
This is the **Reth documentation website** built with [Vocs](https://vocs.dev), a modern documentation framework. The site contains comprehensive documentation for Reth, the Ethereum execution client, including installation guides, CLI references, SDK documentation, and tutorials.
## Repository Structure
- **`docs/pages/`**: All documentation content in MDX format
- `cli/`: Command-line interface documentation and references
- `exex/`: Execution Extensions (ExEx) guides and examples
- `installation/`: Installation and setup guides
- `introduction/`: Introduction, benchmarks, and why-reth content
- `jsonrpc/`: JSON-RPC API documentation
- `run/`: Node running guides and configuration
- `sdk/`: SDK documentation and examples
- **`docs/snippets/`**: Code examples and snippets used in documentation
- **`sidebar.ts`**: Navigation configuration
- **`vocs.config.ts`**: Vocs configuration file
## Essential Commands
```bash
# Install dependencies
bun install
# Start development server
bun run dev
# Build for production
bun run build
# Preview production build
bun run preview
```
## Development Workflow
### Content Organization
1. **MDX Files**: All content is written in MDX (Markdown + React components)
2. **Navigation**: Update `sidebar.ts` when adding new pages
3. **Code Examples**: Place reusable code snippets in `docs/snippets/`
4. **Assets**: Place images and static assets in `docs/public/`
### Adding New Documentation
1. Create new `.mdx` files in appropriate subdirectories under `docs/pages/`
2. Update `sidebar.ts` to include new pages in navigation
3. Use consistent heading structure and markdown formatting
4. Reference code examples from `docs/snippets/` when possible
### Code Examples and Snippets
- **Live Examples**: Use the snippets system to include actual runnable code
- **Rust Code**: Include cargo project examples in `docs/snippets/sources/`
- **CLI Examples**: Show actual command usage with expected outputs
### Configuration
- **Base Path**: Site deploys to `/reth` path (configured in `vocs.config.ts`)
- **Theme**: Custom accent colors for light/dark themes
- **Vite**: Uses Vite as the underlying build tool
### Content Guidelines
1. **Be Practical**: Focus on actionable guides and real-world examples
2. **Code First**: Show working code examples before explaining concepts
3. **Consistent Structure**: Follow existing page structures for consistency
4. **Cross-References**: Link between related pages and sections
5. **Keep Current**: Ensure documentation matches latest Reth features
### File Naming Conventions
- Use kebab-case for file and directory names
- Match URL structure to file structure
- Use descriptive names that reflect content purpose
### Common Tasks
**Adding a new CLI command documentation:**
1. Create `.mdx` file in `docs/pages/cli/reth/`
2. Add to sidebar navigation
3. Include usage examples and parameter descriptions
**Adding a new guide:**
1. Create `.mdx` file in appropriate category
2. Update sidebar with new entry
3. Include practical examples and next steps
**Updating code examples:**
1. Modify files in `docs/snippets/sources/`
2. Ensure examples compile and run correctly
3. Test that documentation references work properly
## Development Notes
- This is a TypeScript/React project using Vocs framework
- Content is primarily MDX with some TypeScript configuration
- Focus on clear, practical documentation that helps users succeed with Reth
- Maintain consistency with existing documentation style and structure

1
book/vocs/README.md Normal file
View File

@@ -0,0 +1 @@
This is a [Vocs](https://vocs.dev) project bootstrapped with the Vocs CLI.

BIN
book/vocs/bun.lockb Executable file

Binary file not shown.

316
book/vocs/check-links.ts Normal file
View File

@@ -0,0 +1,316 @@
#!/usr/bin/env bun
import { Glob } from "bun";
import { readFileSync } from "node:fs";
import { join, dirname, resolve, relative } from "node:path";
const CONFIG = {
DOCS_DIR: "./docs/pages",
PUBLIC_DIR: "./docs/public",
REPORT_PATH: "links-report.json",
FILE_PATTERNS: "**/*.{md,mdx}",
MARKDOWN_EXTENSIONS: /\.(md|mdx)$/,
} as const;
interface BrokenLink {
file: string;
link: string;
line: number;
reason: string;
}
interface LinkCheckReport {
timestamp: string;
totalFiles: number;
totalLinks: number;
brokenLinks: Array<BrokenLink>;
summary: {
brokenCount: number;
validCount: number;
};
}
main();
async function main() {
try {
const report = await checkLinks();
await saveReport(report);
displayResults(report);
process.exit(report.summary.brokenCount > 0 ? 1 : 0);
} catch (error) {
console.error("\n❌ Fatal error during link checking:");
if (error instanceof Error) {
console.error(` ${error.message}`);
if (error.stack) {
[console.error("\nStack trace:"), console.error(error.stack)];
}
} else console.error(error);
process.exit(2);
}
}
async function checkLinks(): Promise<LinkCheckReport> {
console.log("🔍 Finding markdown files...");
const files = await getAllMarkdownFiles();
console.log(`📄 Found ${files.length} markdown files`);
console.log("🔍 Finding public assets...");
const publicAssets = await getAllPublicAssets();
console.log(`🖼️ Found ${publicAssets.length} public assets`);
console.log("🗺️ Building file path map...");
const pathMap = buildFilePathMap(files, publicAssets);
console.log(`📍 Mapped ${pathMap.size} possible paths`);
const brokenLinks: BrokenLink[] = [];
let totalLinks = 0;
console.log("🔗 Checking links in files...");
for (let index = 0; index < files.length; index++) {
const file = files[index];
try {
const content = readFileSync(file, "utf-8");
const links = extractLinksFromMarkdown(content);
for (const { link, line } of links) {
totalLinks++;
const error = validateLink(link, file, pathMap);
if (error) {
brokenLinks.push({
file: relative(process.cwd(), file),
link,
line,
reason: error,
});
}
}
} catch (error) {
console.error(`\nError reading ${file}:`, error);
}
}
console.log("\n✅ Link checking complete!");
return {
timestamp: new Date().toISOString(),
totalFiles: files.length,
totalLinks,
brokenLinks,
summary: {
brokenCount: brokenLinks.length,
validCount: totalLinks - brokenLinks.length,
},
};
}
async function getAllMarkdownFiles(): Promise<string[]> {
const glob = new Glob(CONFIG.FILE_PATTERNS);
const files = await Array.fromAsync(glob.scan({ cwd: CONFIG.DOCS_DIR }));
return files.map((file) => join(CONFIG.DOCS_DIR, file));
}
async function getAllPublicAssets(): Promise<string[]> {
const glob = new Glob("**/*");
const files = await Array.fromAsync(glob.scan({ cwd: CONFIG.PUBLIC_DIR }));
return files;
}
function buildFilePathMap(
files: Array<string>,
publicAssets: Array<string>,
): Set<string> {
const pathMap = new Set<string>();
const addPath = (path: string) => {
if (path && typeof path === "string") pathMap.add(path);
};
for (const file of files) {
const relativePath = relative(CONFIG.DOCS_DIR, file);
addPath(relativePath);
const withoutExt = relativePath.replace(CONFIG.MARKDOWN_EXTENSIONS, "");
addPath(withoutExt);
if (withoutExt.endsWith("/index"))
addPath(withoutExt.replace("/index", ""));
addPath(`/${withoutExt}`);
if (withoutExt.endsWith("/index"))
addPath(`/${withoutExt.replace("/index", "")}`);
}
for (const asset of publicAssets) addPath(`/${asset}`);
return pathMap;
}
function extractLinksFromMarkdown(
content: string,
): Array<{ link: string; line: number }> {
const lines = content.split("\n");
const links: Array<{ link: string; line: number }> = [];
let inCodeBlock = false;
for (let lineIndex = 0; lineIndex < lines.length; lineIndex++) {
const line = lines[lineIndex];
const lineNumber = lineIndex + 1;
// Toggle code block state
if (line.trim().startsWith("```")) {
inCodeBlock = !inCodeBlock;
continue;
}
if (inCodeBlock) continue;
const processedLine = line
.split("`")
.filter((_, index) => index % 2 === 0)
.join("");
links.push(...extractMarkdownLinks(processedLine, lineNumber));
links.push(...extractHtmlLinks(processedLine, lineNumber));
}
return links;
}
function extractMarkdownLinks(
line: string,
lineNumber: number,
): Array<{ link: string; line: number }> {
const regex = /\[([^\]]*)\]\(([^)]+)\)/g;
return [...line.matchAll(regex)]
.map(([, , url]) => ({ link: url, line: lineNumber }))
.filter(({ link }) => isInternalLink(link));
}
function extractHtmlLinks(
line: string,
lineNumber: number,
): Array<{ link: string; line: number }> {
const regex = /<a[^>]+href=["']([^"']+)["'][^>]*>/g;
return [...line.matchAll(regex)]
.map(([, url]) => ({ link: url, line: lineNumber }))
.filter(({ link }) => isInternalLink(link));
}
function isInternalLink(url: string): boolean {
return (
!url.startsWith("http") &&
!url.startsWith("mailto:") &&
!url.startsWith("#")
);
}
function validateLink(
link: string,
sourceFile: string,
pathMap: Set<string>,
): string | null {
const [linkPath] = link.split("#");
if (!linkPath) return null; // Pure anchor link
if (linkPath.startsWith("/")) return validateAbsolutePath(linkPath, pathMap);
return validateRelativePath(linkPath, sourceFile, pathMap);
}
function validateAbsolutePath(
linkPath: string,
pathMap: Set<string>,
): string | null {
const variations = [
linkPath,
linkPath.slice(1), // Remove leading slash
linkPath.replace(/\/$/, ""), // Remove trailing slash
linkPath
.slice(1)
.replace(/\/$/, ""), // Remove both
];
return variations.some((path) => pathMap.has(path))
? null
: `Absolute path not found: ${linkPath}`;
}
function validateRelativePath(
linkPath: string,
sourceFile: string,
pathMap: Set<string>,
): string | null {
const sourceDir = dirname(relative(CONFIG.DOCS_DIR, sourceFile));
const resolvedPath = resolve(sourceDir, linkPath);
const normalizedPath = relative(".", resolvedPath);
const variations = [
linkPath,
normalizedPath,
`/${normalizedPath}`,
normalizedPath.replace(CONFIG.MARKDOWN_EXTENSIONS, ""),
`/${normalizedPath.replace(CONFIG.MARKDOWN_EXTENSIONS, "")}`,
];
return variations.some((path) => pathMap.has(path))
? null
: `Relative path not found: ${linkPath} (resolved to: ${normalizedPath})`;
}
async function saveReport(report: LinkCheckReport) {
try {
await Bun.write(CONFIG.REPORT_PATH, JSON.stringify(report, null, 2));
console.log(`\n📝 Report saved to: ${CONFIG.REPORT_PATH}`);
} catch (error) {
console.error(
`\n⚠ Warning: Failed to save report to ${CONFIG.REPORT_PATH}`,
);
console.error(error);
}
}
function displayResults(report: LinkCheckReport) {
LinkCheckReporter.printSummary(report);
if (report.brokenLinks.length > 0)
LinkCheckReporter.printBrokenLinks(report.brokenLinks);
else console.log("\n✅ All links are valid!");
}
const LinkCheckReporter = {
printSummary: (report: LinkCheckReport) => {
console.log("\n📊 Link Check Summary:");
console.log(` 📄 Files checked: ${report.totalFiles}`);
console.log(` 🔗 Total links: ${report.totalLinks}`);
console.log(` ✅ Valid links: ${report.summary.validCount}`);
console.log(` ❌ Broken links: ${report.summary.brokenCount}`);
},
printBrokenLinks: (brokenLinks: Array<BrokenLink>) => {
if (brokenLinks.length === 0) return;
console.log("\n❌ Broken Links Found:\n");
const byFile = brokenLinks.reduce(
(acc, broken) => {
if (!acc[broken.file]) acc[broken.file] = [];
acc[broken.file].push(broken);
return acc;
},
{} as Record<string, BrokenLink[]>,
);
for (const [file, links] of Object.entries(byFile)) {
console.log(`📄 ${file}:`);
for (const broken of links) {
console.log(` Line ${broken.line}: ${broken.link}`);
console.log(` └─ ${broken.reason}\n`);
}
}
},
};

View File

@@ -0,0 +1,88 @@
import React from 'react'
interface SdkProject {
name: string
description: string
loc: string
githubUrl: string
logoUrl?: string
company: string
}
const projects: SdkProject[] = [
{
name: 'Base Node',
description: "Coinbase's L2 scaling solution node implementation",
loc: '~3K',
githubUrl: 'https://github.com/base/node-reth',
company: 'Coinbase'
},
{
name: 'Bera Reth',
description: "Berachain's high-performance EVM node with custom features",
loc: '~1K',
githubUrl: 'https://github.com/berachain/bera-reth',
company: 'Berachain'
},
{
name: 'Reth Gnosis',
description: "Gnosis Chain's xDai-compatible execution client",
loc: '~5K',
githubUrl: 'https://github.com/gnosischain/reth_gnosis',
company: 'Gnosis'
},
{
name: 'Reth BSC',
description: "BNB Smart Chain execution client implementation",
loc: '~6K',
githubUrl: 'https://github.com/loocapro/reth-bsc',
company: 'Binance Smart Chain'
}
]
export function SdkShowcase() {
return (
<div className="grid grid-cols-1 md:grid-cols-2 gap-6">
{projects.map((project, index) => (
<div
key={index}
className="relative bg-white/5 dark:bg-white/5 border border-black/10 dark:border-white/10 rounded-xl p-6 hover:bg-black/5 dark:hover:bg-white/10 transition-colors group"
>
{/* LoC Badge */}
<div className="absolute top-4 right-4 bg-black/10 dark:bg-white/10 text-black dark:text-white px-3 py-1 rounded-full text-sm font-medium">
{project.loc} LoC
</div>
{/* Content */}
<div className="space-y-3">
<div>
<h3 className="text-xl font-semibold text-black dark:text-white mb-1">
{project.name}
</h3>
<p className="text-sm text-gray-600 dark:text-gray-400">
{project.company}
</p>
</div>
<p className="text-gray-700 dark:text-gray-300 text-sm leading-relaxed">
{project.description}
</p>
{/* GitHub Link */}
<a
href={project.githubUrl}
target="_blank"
rel="noopener noreferrer"
className="inline-flex items-center gap-2 text-sm text-black dark:text-white hover:text-gray-700 dark:hover:text-gray-300 font-medium transition-colors"
>
<svg className="w-4 h-4" fill="currentColor" viewBox="0 0 24 24">
<path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"/>
</svg>
View on GitHub
</a>
</div>
</div>
))}
</div>
)
}

View File

@@ -0,0 +1,49 @@
import React from 'react'
interface TrustedCompany {
name: string
logoUrl: string
}
const companies: TrustedCompany[] = [
{
name: 'Flashbots',
logoUrl: '/flashbots.png'
},
{
name: 'Coinbase',
logoUrl: '/coinbase.png'
},
{
name: 'Alchemy',
logoUrl: '/alchemy.png'
},
{
name: 'Succinct Labs',
logoUrl: '/succinct.png'
}
]
export function TrustedBy() {
return (
<div className="grid grid-cols-2 md:grid-cols-4 gap-6">
{companies.map((company, index) => (
<div
key={index}
className="relative bg-white/5 dark:bg-white/5 border border-black/10 dark:border-white/10 rounded-xl p-8 hover:bg-black/5 dark:hover:bg-white/10 transition-colors flex flex-col items-center justify-center h-40 group"
>
{/* Company Logo */}
<div className={`flex items-center justify-center ${
company.name === 'Coinbase' || company.name === 'Alchemy' ? 'w-32 h-32' : 'w-24 h-24'
}`}>
<img
src={company.logoUrl}
alt={`${company.name} logo`}
className="max-w-full max-h-full object-contain"
/>
</div>
</div>
))}
</div>
)
}

View File

@@ -0,0 +1,47 @@
- [`reth`](/cli/reth)
- [`reth node`](/cli/reth/node)
- [`reth init`](/cli/reth/init)
- [`reth init-state`](/cli/reth/init-state)
- [`reth import`](/cli/reth/import)
- [`reth import-era`](/cli/reth/import-era)
- [`reth dump-genesis`](/cli/reth/dump-genesis)
- [`reth db`](/cli/reth/db)
- [`reth db stats`](/cli/reth/db/stats)
- [`reth db list`](/cli/reth/db/list)
- [`reth db checksum`](/cli/reth/db/checksum)
- [`reth db diff`](/cli/reth/db/diff)
- [`reth db get`](/cli/reth/db/get)
- [`reth db get mdbx`](/cli/reth/db/get/mdbx)
- [`reth db get static-file`](/cli/reth/db/get/static-file)
- [`reth db drop`](/cli/reth/db/drop)
- [`reth db clear`](/cli/reth/db/clear)
- [`reth db clear mdbx`](/cli/reth/db/clear/mdbx)
- [`reth db clear static-file`](/cli/reth/db/clear/static-file)
- [`reth db version`](/cli/reth/db/version)
- [`reth db path`](/cli/reth/db/path)
- [`reth download`](/cli/reth/download)
- [`reth stage`](/cli/reth/stage)
- [`reth stage run`](/cli/reth/stage/run)
- [`reth stage drop`](/cli/reth/stage/drop)
- [`reth stage dump`](/cli/reth/stage/dump)
- [`reth stage dump execution`](/cli/reth/stage/dump/execution)
- [`reth stage dump storage-hashing`](/cli/reth/stage/dump/storage-hashing)
- [`reth stage dump account-hashing`](/cli/reth/stage/dump/account-hashing)
- [`reth stage dump merkle`](/cli/reth/stage/dump/merkle)
- [`reth stage unwind`](/cli/reth/stage/unwind)
- [`reth stage unwind to-block`](/cli/reth/stage/unwind/to-block)
- [`reth stage unwind num-blocks`](/cli/reth/stage/unwind/num-blocks)
- [`reth p2p`](/cli/reth/p2p)
- [`reth p2p header`](/cli/reth/p2p/header)
- [`reth p2p body`](/cli/reth/p2p/body)
- [`reth p2p rlpx`](/cli/reth/p2p/rlpx)
- [`reth p2p rlpx ping`](/cli/reth/p2p/rlpx/ping)
- [`reth config`](/cli/reth/config)
- [`reth debug`](/cli/reth/debug)
- [`reth debug execution`](/cli/reth/debug/execution)
- [`reth debug merkle`](/cli/reth/debug/merkle)
- [`reth debug in-memory-merkle`](/cli/reth/debug/in-memory-merkle)
- [`reth debug build-block`](/cli/reth/debug/build-block)
- [`reth recover`](/cli/reth/recover)
- [`reth recover storage-tries`](/cli/reth/recover/storage-tries)
- [`reth prune`](/cli/reth/prune)

View File

@@ -1,7 +1,9 @@
import Summary from './SUMMARY.mdx';
# CLI Reference
The Reth node is operated via the CLI by running the `reth node` command. To stop it, press `ctrl-c`. You may need to wait a bit as Reth tears down existing p2p connections or other cleanup tasks.
However, Reth has more commands:
{{#include ./SUMMARY.md}}
<Summary />

View File

@@ -13,8 +13,10 @@ Commands:
init Initialize the database from a genesis file
init-state Initialize the database from a state dump file
import This syncs RLP encoded blocks from a file
import-era This syncs ERA encoded blocks from a directory
dump-genesis Dumps genesis block JSON configuration to stdout
db Database debugging utilities
download Download public node snapshots
stage Manipulate individual stages
p2p P2P Debugging utilities
config Write config to stdout
@@ -24,26 +26,6 @@ Commands:
help Print this message or the help of the given subcommand(s)
Options:
--chain <CHAIN_OR_PATH>
The chain this node is running.
Possible values are either a built-in chain or the path to a chain specification file.
Built-in chains:
mainnet, sepolia, holesky, dev
[default: mainnet]
--instance <INSTANCE>
Add a new instance of a node.
Configures the ports of the node to avoid conflicts with the defaults. This is useful for running multiple nodes on the same machine.
Max number of instances is 200. It is chosen in a way so that it's not possible to have port numbers that conflict with each other.
Changes to the following port numbers: - `DISCOVERY_PORT`: default + `instance` - 1 - `AUTH_PORT`: default + `instance` * 100 - 100 - `HTTP_RPC_PORT`: default - `instance` + 1 - `WS_RPC_PORT`: default + `instance` * 2 - 2
[default: 1]
-h, --help
Print help (see a summary with '-h')

View File

@@ -0,0 +1,97 @@
# reth config
Write config to stdout
```bash
$ reth config --help
```
```txt
Usage: reth config [OPTIONS]
Options:
--config <FILE>
The path to the configuration file to use.
--default
Show the default config
-h, --help
Print help (see a summary with '-h')
Logging:
--log.stdout.format <FORMAT>
The format to use for logs written to stdout
[default: terminal]
Possible values:
- json: Represents JSON formatting for logs. This format outputs log records as JSON objects, making it suitable for structured logging
- log-fmt: Represents logfmt (key=value) formatting for logs. This format is concise and human-readable, typically used in command-line applications
- terminal: Represents terminal-friendly formatting for logs
--log.stdout.filter <FILTER>
The filter to use for logs written to stdout
[default: ]
--log.file.format <FORMAT>
The format to use for logs written to the log file
[default: terminal]
Possible values:
- json: Represents JSON formatting for logs. This format outputs log records as JSON objects, making it suitable for structured logging
- log-fmt: Represents logfmt (key=value) formatting for logs. This format is concise and human-readable, typically used in command-line applications
- terminal: Represents terminal-friendly formatting for logs
--log.file.filter <FILTER>
The filter to use for logs written to the log file
[default: debug]
--log.file.directory <PATH>
The path to put log files in
[default: <CACHE_DIR>/logs]
--log.file.max-size <SIZE>
The maximum size (in MB) of one log file
[default: 200]
--log.file.max-files <COUNT>
The maximum amount of log files that will be stored. If set to 0, background file logging is disabled
[default: 5]
--log.journald
Write logs to journald
--log.journald.filter <FILTER>
The filter to use for logs written to journald
[default: error]
--color <COLOR>
Sets whether or not the formatter emits ANSI terminal escape codes for colors and other text formatting
[default: always]
Possible values:
- always: Colors on
- auto: Colors on
- never: Colors off
Display:
-v, --verbosity...
Set the minimum log level.
-v Errors
-vv Warnings
-vvv Info
-vvvv Debug
-vvvvv Traces (warning: very verbose!)
-q, --quiet
Silence all log output
```

View File

@@ -21,17 +21,6 @@ Commands:
help Print this message or the help of the given subcommand(s)
Options:
--instance <INSTANCE>
Add a new instance of a node.
Configures the ports of the node to avoid conflicts with the defaults. This is useful for running multiple nodes on the same machine.
Max number of instances is 200. It is chosen in a way so that it's not possible to have port numbers that conflict with each other.
Changes to the following port numbers: - `DISCOVERY_PORT`: default + `instance` - 1 - `AUTH_PORT`: default + `instance` * 100 - 100 - `HTTP_RPC_PORT`: default - `instance` + 1 - `WS_RPC_PORT`: default + `instance` * 2 - 2
[default: 1]
-h, --help
Print help (see a summary with '-h')
@@ -58,7 +47,7 @@ Datadir:
Possible values are either a built-in chain or the path to a chain specification file.
Built-in chains:
mainnet, sepolia, holesky, dev
mainnet, sepolia, holesky, hoodi, dev
[default: mainnet]

View File

@@ -22,20 +22,19 @@ Options:
--limit <LIMIT>
The maximum number of records that are queried and used to compute the checksum
--instance <INSTANCE>
Add a new instance of a node.
Configures the ports of the node to avoid conflicts with the defaults. This is useful for running multiple nodes on the same machine.
Max number of instances is 200. It is chosen in a way so that it's not possible to have port numbers that conflict with each other.
Changes to the following port numbers: - `DISCOVERY_PORT`: default + `instance` - 1 - `AUTH_PORT`: default + `instance` * 100 - 100 - `HTTP_RPC_PORT`: default - `instance` + 1 - `WS_RPC_PORT`: default + `instance` * 2 - 2
[default: 1]
-h, --help
Print help (see a summary with '-h')
Datadir:
--chain <CHAIN_OR_PATH>
The chain this node is running.
Possible values are either a built-in chain or the path to a chain specification file.
Built-in chains:
mainnet, sepolia, holesky, hoodi, dev
[default: mainnet]
Logging:
--log.stdout.format <FORMAT>
The format to use for logs written to stdout

View File

@@ -14,20 +14,19 @@ Commands:
help Print this message or the help of the given subcommand(s)
Options:
--instance <INSTANCE>
Add a new instance of a node.
Configures the ports of the node to avoid conflicts with the defaults. This is useful for running multiple nodes on the same machine.
Max number of instances is 200. It is chosen in a way so that it's not possible to have port numbers that conflict with each other.
Changes to the following port numbers: - `DISCOVERY_PORT`: default + `instance` - 1 - `AUTH_PORT`: default + `instance` * 100 - 100 - `HTTP_RPC_PORT`: default - `instance` + 1 - `WS_RPC_PORT`: default + `instance` * 2 - 2
[default: 1]
-h, --help
Print help (see a summary with '-h')
Datadir:
--chain <CHAIN_OR_PATH>
The chain this node is running.
Possible values are either a built-in chain or the path to a chain specification file.
Built-in chains:
mainnet, sepolia, holesky, hoodi, dev
[default: mainnet]
Logging:
--log.stdout.format <FORMAT>
The format to use for logs written to stdout

View File

@@ -13,20 +13,19 @@ Arguments:
Options:
--instance <INSTANCE>
Add a new instance of a node.
Configures the ports of the node to avoid conflicts with the defaults. This is useful for running multiple nodes on the same machine.
Max number of instances is 200. It is chosen in a way so that it's not possible to have port numbers that conflict with each other.
Changes to the following port numbers: - `DISCOVERY_PORT`: default + `instance` - 1 - `AUTH_PORT`: default + `instance` * 100 - 100 - `HTTP_RPC_PORT`: default - `instance` + 1 - `WS_RPC_PORT`: default + `instance` * 2 - 2
[default: 1]
-h, --help
Print help (see a summary with '-h')
Datadir:
--chain <CHAIN_OR_PATH>
The chain this node is running.
Possible values are either a built-in chain or the path to a chain specification file.
Built-in chains:
mainnet, sepolia, holesky, hoodi, dev
[default: mainnet]
Logging:
--log.stdout.format <FORMAT>
The format to use for logs written to stdout

View File

@@ -17,20 +17,19 @@ Arguments:
- block-meta: Static File segment responsible for the `BlockBodyIndices`, `BlockOmmers`, `BlockWithdrawals` tables
Options:
--instance <INSTANCE>
Add a new instance of a node.
Configures the ports of the node to avoid conflicts with the defaults. This is useful for running multiple nodes on the same machine.
Max number of instances is 200. It is chosen in a way so that it's not possible to have port numbers that conflict with each other.
Changes to the following port numbers: - `DISCOVERY_PORT`: default + `instance` - 1 - `AUTH_PORT`: default + `instance` * 100 - 100 - `HTTP_RPC_PORT`: default - `instance` + 1 - `WS_RPC_PORT`: default + `instance` * 2 - 2
[default: 1]
-h, --help
Print help (see a summary with '-h')
Datadir:
--chain <CHAIN_OR_PATH>
The chain this node is running.
Possible values are either a built-in chain or the path to a chain specification file.
Built-in chains:
mainnet, sepolia, holesky, hoodi, dev
[default: mainnet]
Logging:
--log.stdout.format <FORMAT>
The format to use for logs written to stdout

View File

@@ -12,17 +12,6 @@ Options:
--secondary-datadir <SECONDARY_DATADIR>
The path to the data dir for all reth files and subdirectories.
--instance <INSTANCE>
Add a new instance of a node.
Configures the ports of the node to avoid conflicts with the defaults. This is useful for running multiple nodes on the same machine.
Max number of instances is 200. It is chosen in a way so that it's not possible to have port numbers that conflict with each other.
Changes to the following port numbers: - `DISCOVERY_PORT`: default + `instance` - 1 - `AUTH_PORT`: default + `instance` * 100 - 100 - `HTTP_RPC_PORT`: default - `instance` + 1 - `WS_RPC_PORT`: default + `instance` * 2 - 2
[default: 1]
-h, --help
Print help (see a summary with '-h')
@@ -60,6 +49,16 @@ Database:
--output <OUTPUT>
The output directory for the diff report.
Datadir:
--chain <CHAIN_OR_PATH>
The chain this node is running.
Possible values are either a built-in chain or the path to a chain specification file.
Built-in chains:
mainnet, sepolia, holesky, hoodi, dev
[default: mainnet]
Logging:
--log.stdout.format <FORMAT>
The format to use for logs written to stdout

View File

@@ -12,20 +12,19 @@ Options:
-f, --force
Bypasses the interactive confirmation and drops the database directly
--instance <INSTANCE>
Add a new instance of a node.
Configures the ports of the node to avoid conflicts with the defaults. This is useful for running multiple nodes on the same machine.
Max number of instances is 200. It is chosen in a way so that it's not possible to have port numbers that conflict with each other.
Changes to the following port numbers: - `DISCOVERY_PORT`: default + `instance` - 1 - `AUTH_PORT`: default + `instance` * 100 - 100 - `HTTP_RPC_PORT`: default - `instance` + 1 - `WS_RPC_PORT`: default + `instance` * 2 - 2
[default: 1]
-h, --help
Print help (see a summary with '-h')
Datadir:
--chain <CHAIN_OR_PATH>
The chain this node is running.
Possible values are either a built-in chain or the path to a chain specification file.
Built-in chains:
mainnet, sepolia, holesky, hoodi, dev
[default: mainnet]
Logging:
--log.stdout.format <FORMAT>
The format to use for logs written to stdout

View File

@@ -14,20 +14,19 @@ Commands:
help Print this message or the help of the given subcommand(s)
Options:
--instance <INSTANCE>
Add a new instance of a node.
Configures the ports of the node to avoid conflicts with the defaults. This is useful for running multiple nodes on the same machine.
Max number of instances is 200. It is chosen in a way so that it's not possible to have port numbers that conflict with each other.
Changes to the following port numbers: - `DISCOVERY_PORT`: default + `instance` - 1 - `AUTH_PORT`: default + `instance` * 100 - 100 - `HTTP_RPC_PORT`: default - `instance` + 1 - `WS_RPC_PORT`: default + `instance` * 2 - 2
[default: 1]
-h, --help
Print help (see a summary with '-h')
Datadir:
--chain <CHAIN_OR_PATH>
The chain this node is running.
Possible values are either a built-in chain or the path to a chain specification file.
Built-in chains:
mainnet, sepolia, holesky, hoodi, dev
[default: mainnet]
Logging:
--log.stdout.format <FORMAT>
The format to use for logs written to stdout

View File

@@ -22,20 +22,19 @@ Options:
--raw
Output bytes instead of human-readable decoded value
--instance <INSTANCE>
Add a new instance of a node.
Configures the ports of the node to avoid conflicts with the defaults. This is useful for running multiple nodes on the same machine.
Max number of instances is 200. It is chosen in a way so that it's not possible to have port numbers that conflict with each other.
Changes to the following port numbers: - `DISCOVERY_PORT`: default + `instance` - 1 - `AUTH_PORT`: default + `instance` * 100 - 100 - `HTTP_RPC_PORT`: default - `instance` + 1 - `WS_RPC_PORT`: default + `instance` * 2 - 2
[default: 1]
-h, --help
Print help (see a summary with '-h')
Datadir:
--chain <CHAIN_OR_PATH>
The chain this node is running.
Possible values are either a built-in chain or the path to a chain specification file.
Built-in chains:
mainnet, sepolia, holesky, hoodi, dev
[default: mainnet]
Logging:
--log.stdout.format <FORMAT>
The format to use for logs written to stdout

View File

@@ -23,20 +23,19 @@ Options:
--raw
Output bytes instead of human-readable decoded value
--instance <INSTANCE>
Add a new instance of a node.
Configures the ports of the node to avoid conflicts with the defaults. This is useful for running multiple nodes on the same machine.
Max number of instances is 200. It is chosen in a way so that it's not possible to have port numbers that conflict with each other.
Changes to the following port numbers: - `DISCOVERY_PORT`: default + `instance` - 1 - `AUTH_PORT`: default + `instance` * 100 - 100 - `HTTP_RPC_PORT`: default - `instance` + 1 - `WS_RPC_PORT`: default + `instance` * 2 - 2
[default: 1]
-h, --help
Print help (see a summary with '-h')
Datadir:
--chain <CHAIN_OR_PATH>
The chain this node is running.
Possible values are either a built-in chain or the path to a chain specification file.
Built-in chains:
mainnet, sepolia, holesky, hoodi, dev
[default: mainnet]
Logging:
--log.stdout.format <FORMAT>
The format to use for logs written to stdout

View File

@@ -55,20 +55,19 @@ Options:
--raw
Output bytes instead of human-readable decoded value
--instance <INSTANCE>
Add a new instance of a node.
Configures the ports of the node to avoid conflicts with the defaults. This is useful for running multiple nodes on the same machine.
Max number of instances is 200. It is chosen in a way so that it's not possible to have port numbers that conflict with each other.
Changes to the following port numbers: - `DISCOVERY_PORT`: default + `instance` - 1 - `AUTH_PORT`: default + `instance` * 100 - 100 - `HTTP_RPC_PORT`: default - `instance` + 1 - `WS_RPC_PORT`: default + `instance` * 2 - 2
[default: 1]
-h, --help
Print help (see a summary with '-h')
Datadir:
--chain <CHAIN_OR_PATH>
The chain this node is running.
Possible values are either a built-in chain or the path to a chain specification file.
Built-in chains:
mainnet, sepolia, holesky, hoodi, dev
[default: mainnet]
Logging:
--log.stdout.format <FORMAT>
The format to use for logs written to stdout

View File

@@ -9,20 +9,19 @@ $ reth db path --help
Usage: reth db path [OPTIONS]
Options:
--instance <INSTANCE>
Add a new instance of a node.
Configures the ports of the node to avoid conflicts with the defaults. This is useful for running multiple nodes on the same machine.
Max number of instances is 200. It is chosen in a way so that it's not possible to have port numbers that conflict with each other.
Changes to the following port numbers: - `DISCOVERY_PORT`: default + `instance` - 1 - `AUTH_PORT`: default + `instance` * 100 - 100 - `HTTP_RPC_PORT`: default - `instance` + 1 - `WS_RPC_PORT`: default + `instance` * 2 - 2
[default: 1]
-h, --help
Print help (see a summary with '-h')
Datadir:
--chain <CHAIN_OR_PATH>
The chain this node is running.
Possible values are either a built-in chain or the path to a chain specification file.
Built-in chains:
mainnet, sepolia, holesky, hoodi, dev
[default: mainnet]
Logging:
--log.stdout.format <FORMAT>
The format to use for logs written to stdout

View File

@@ -22,20 +22,19 @@ Options:
For individual table checksums, use the `reth db checksum` command.
--instance <INSTANCE>
Add a new instance of a node.
Configures the ports of the node to avoid conflicts with the defaults. This is useful for running multiple nodes on the same machine.
Max number of instances is 200. It is chosen in a way so that it's not possible to have port numbers that conflict with each other.
Changes to the following port numbers: - `DISCOVERY_PORT`: default + `instance` - 1 - `AUTH_PORT`: default + `instance` * 100 - 100 - `HTTP_RPC_PORT`: default - `instance` + 1 - `WS_RPC_PORT`: default + `instance` * 2 - 2
[default: 1]
-h, --help
Print help (see a summary with '-h')
Datadir:
--chain <CHAIN_OR_PATH>
The chain this node is running.
Possible values are either a built-in chain or the path to a chain specification file.
Built-in chains:
mainnet, sepolia, holesky, hoodi, dev
[default: mainnet]
Logging:
--log.stdout.format <FORMAT>
The format to use for logs written to stdout

View File

@@ -9,20 +9,19 @@ $ reth db version --help
Usage: reth db version [OPTIONS]
Options:
--instance <INSTANCE>
Add a new instance of a node.
Configures the ports of the node to avoid conflicts with the defaults. This is useful for running multiple nodes on the same machine.
Max number of instances is 200. It is chosen in a way so that it's not possible to have port numbers that conflict with each other.
Changes to the following port numbers: - `DISCOVERY_PORT`: default + `instance` - 1 - `AUTH_PORT`: default + `instance` * 100 - 100 - `HTTP_RPC_PORT`: default - `instance` + 1 - `WS_RPC_PORT`: default + `instance` * 2 - 2
[default: 1]
-h, --help
Print help (see a summary with '-h')
Datadir:
--chain <CHAIN_OR_PATH>
The chain this node is running.
Possible values are either a built-in chain or the path to a chain specification file.
Built-in chains:
mainnet, sepolia, holesky, hoodi, dev
[default: mainnet]
Logging:
--log.stdout.format <FORMAT>
The format to use for logs written to stdout

View File

@@ -16,26 +16,6 @@ Commands:
help Print this message or the help of the given subcommand(s)
Options:
--chain <CHAIN_OR_PATH>
The chain this node is running.
Possible values are either a built-in chain or the path to a chain specification file.
Built-in chains:
mainnet, sepolia, holesky, dev
[default: mainnet]
--instance <INSTANCE>
Add a new instance of a node.
Configures the ports of the node to avoid conflicts with the defaults. This is useful for running multiple nodes on the same machine.
Max number of instances is 200. It is chosen in a way so that it's not possible to have port numbers that conflict with each other.
Changes to the following port numbers: - `DISCOVERY_PORT`: default + `instance` - 1 - `AUTH_PORT`: default + `instance` * 100 - 100 - `HTTP_RPC_PORT`: default - `instance` + 1 - `WS_RPC_PORT`: default + `instance` * 2 - 2
[default: 1]
-h, --help
Print help (see a summary with '-h')

View File

@@ -9,17 +9,6 @@ $ reth debug build-block --help
Usage: reth debug build-block [OPTIONS] --prev-randao <PREV_RANDAO> --timestamp <TIMESTAMP> --suggested-fee-recipient <SUGGESTED_FEE_RECIPIENT>
Options:
--instance <INSTANCE>
Add a new instance of a node.
Configures the ports of the node to avoid conflicts with the defaults. This is useful for running multiple nodes on the same machine.
Max number of instances is 200. It is chosen in a way so that it's not possible to have port numbers that conflict with each other.
Changes to the following port numbers: - `DISCOVERY_PORT`: default + `instance` - 1 - `AUTH_PORT`: default + `instance` * 100 - 100 - `HTTP_RPC_PORT`: default - `instance` + 1 - `WS_RPC_PORT`: default + `instance` * 2 - 2
[default: 1]
-h, --help
Print help (see a summary with '-h')
@@ -46,7 +35,7 @@ Datadir:
Possible values are either a built-in chain or the path to a chain specification file.
Built-in chains:
mainnet, sepolia, holesky, dev
mainnet, sepolia, holesky, hoodi, dev
[default: mainnet]
@@ -78,9 +67,6 @@ Database:
--db.read-transaction-timeout <READ_TRANSACTION_TIMEOUT>
Read transaction timeout in seconds, 0 means no timeout
--trusted-setup-file <PATH>
Overrides the KZG trusted setup by reading from the supplied file
--parent-beacon-block-root <PARENT_BEACON_BLOCK_ROOT>

View File

@@ -9,17 +9,6 @@ $ reth debug execution --help
Usage: reth debug execution [OPTIONS] --to <TO>
Options:
--instance <INSTANCE>
Add a new instance of a node.
Configures the ports of the node to avoid conflicts with the defaults. This is useful for running multiple nodes on the same machine.
Max number of instances is 200. It is chosen in a way so that it's not possible to have port numbers that conflict with each other.
Changes to the following port numbers: - `DISCOVERY_PORT`: default + `instance` - 1 - `AUTH_PORT`: default + `instance` * 100 - 100 - `HTTP_RPC_PORT`: default - `instance` + 1 - `WS_RPC_PORT`: default + `instance` * 2 - 2
[default: 1]
-h, --help
Print help (see a summary with '-h')
@@ -46,7 +35,7 @@ Datadir:
Possible values are either a built-in chain or the path to a chain specification file.
Built-in chains:
mainnet, sepolia, holesky, dev
mainnet, sepolia, holesky, hoodi, dev
[default: mainnet]
@@ -123,7 +112,7 @@ Networking:
--discovery.v5.lookup-interval <DISCOVERY_V5_LOOKUP_INTERVAL>
The interval in seconds at which to carry out periodic lookup queries, for the whole run of the program
[default: 60]
[default: 20]
--discovery.v5.bootstrap.lookup-interval <DISCOVERY_V5_BOOTSTRAP_LOOKUP_INTERVAL>
The interval in seconds at which to carry out boost lookup queries, for a fixed number of times, at bootstrap
@@ -133,7 +122,7 @@ Networking:
--discovery.v5.bootstrap.lookup-countdown <DISCOVERY_V5_BOOTSTRAP_LOOKUP_COUNTDOWN>
The number of times to carry out boost lookup queries at bootstrap
[default: 100]
[default: 200]
--trusted-peers <TRUSTED_PEERS>
Comma separated enode URLs of trusted peers for P2P connections.
@@ -245,6 +234,13 @@ Networking:
If flag is set, but no value is passed, the default interface for docker `eth0` is tried.
--tx-propagation-policy <TX_PROPAGATION_POLICY>
Transaction Propagation Policy
The policy determines which peers transactions are gossiped to.
[default: All]
--to <TO>
The maximum block height

Some files were not shown because too many files have changed in this diff Show More