Commit 479fe5b
* chore(deps): bump reth to the v2.4.1-aligned pin f2eecc6
Move the reth workspace pin from 27bfddea to f2eecc65 (v2.4.0 + 9) and
the reth-optimism-trie pin to the OP monorepo rev 4f21ce6b that pins the
same reth commit, keeping a single reth git source in the graph. Align
crates.io deps with the reth v2.4.1 release set: alloy 2.1.1, alloy
core 1.6.1 (the release's only functional delta), alloy-evm 0.37,
reth-codecs/reth-primitives-traits 0.5, revm-database-interface 41,
tokio 1.52.3, Rust 1.95.0.
The reth umbrella crate is consumed with default-features = false minus
the new default jit feature, so no revmc/LLVM enters the build; the
upstream --jit flag is rejected explicitly. Replays the v2.4.x API
migration across consensus/evm/block/payload/primitives/rpc/node, ports
the Taiko LiveTrieCollector in-repo (upstream removed the live module),
adopts the new proof-history storage initialization with a legacy
migration, and adds a CI guard that fails when Cargo.lock resolves more
than one reth revision.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* docs(node): fix --jit flag plural in build_evm doc
The guard checks only `ctx.config().jit.enabled` (the literal --jit
flag); the --jit.* tuning flags fall through untouched, so the doc's
plural overstated what is rejected. Doc-accuracy fix from a
code-simplifier pass over the PR diff, which otherwise confirmed the
changed surface is already minimal (33/46 files byte-identical to the
five-times-reviewed #222 hunks).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* fix(primitives): fail closed on BAL input to block_to_payload
`PayloadTypes::block_to_payload` discarded its `bal` argument and always
built a sidecar with `block_access_list: None`. reth's `reth_newPayload`
BlockRlp arm (mounted unconditionally on the authenticated engine server
via `create_auth_module`) and the debug consensus clients pass
caller-supplied BAL data through this method, so an unsupported block
access list was silently dropped and the payload proceeded without it —
bypassing the validator's `BlockAccessListNotSupported` check and the
fail-closed Amsterdam invariant. Store the caller's BAL on the sidecar's
inbound-only sentinel instead so engine validation rejects it, and pin
the behavior with a validator regression test (Some(bal) rejected, None
still valid).
Note for the #222 rebase: its engine/mod.rs hunk carries the same
`_bal` discard and should adopt this fix.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* fix(rpc): reject inbound sentinels at the engine-tree conversion
The previous BAL fix rejected the sentinels only in
EngineApiValidator::validate_version_specific_fields, which runs on the
engine_newPayloadVx handlers. reth's reth_newPayload extension submits
payloads straight to the engine tree (BeaconEngineMessage::RethNewPayload),
whose entry point is PayloadValidator::convert_payload_to_block — and the
tree decodes a present block access list into its BAL execution path
(BlockOrPayload::try_decoded_access_list), so a retained sentinel was
consumable instead of rejected on that route. Its ExecutionData arm also
accepts a caller-supplied sidecar, making slotNumber equally reachable.
Reject both inbound-only sentinels at the top of convert_payload_to_block,
the choke point every payload route funnels through. Regression tests now
exercise the production route: the block_to_payload BAL and JSON-borne
blockAccessList/slotNumber payloads are all rejected at conversion, and
sentinel-free payloads still convert.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
1 parent 7ddf2b3 commit 479fe5b
46 files changed
Lines changed: 2985 additions & 1083 deletions
File tree
- .github
- scripts
- workflows
- crates
- block/src
- tx_selection
- cli/src
- consensus/src/validation
- evm/src
- zk_gas
- node
- src
- proof_history
- payload
- src/builder
- primitives/src
- engine
- payload
- rpc
- src
- engine
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
16 | 16 | | |
17 | 17 | | |
18 | 18 | | |
19 | | - | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
20 | 22 | | |
21 | 23 | | |
22 | 24 | | |
23 | | - | |
| 25 | + | |
24 | 26 | | |
25 | 27 | | |
26 | 28 | | |
| |||
40 | 42 | | |
41 | 43 | | |
42 | 44 | | |
43 | | - | |
| 45 | + | |
44 | 46 | | |
45 | 47 | | |
46 | 48 | | |
| |||
56 | 58 | | |
57 | 59 | | |
58 | 60 | | |
59 | | - | |
| 61 | + | |
60 | 62 | | |
61 | 63 | | |
62 | 64 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
11 | | - | |
12 | | - | |
| 11 | + | |
| 12 | + | |
13 | 13 | | |
14 | 14 | | |
15 | 15 | | |
| |||
0 commit comments