Skip to content

fix(engine): align Amsterdam endpoint validation#23625

Merged
mattsse merged 2 commits into
mainfrom
codex/amsterdam-engine-validation
Apr 20, 2026
Merged

fix(engine): align Amsterdam endpoint validation#23625
mattsse merged 2 commits into
mainfrom
codex/amsterdam-engine-validation

Conversation

@mattsse
Copy link
Copy Markdown
Collaborator

@mattsse mattsse commented Apr 18, 2026

Aligns Amsterdam engine validation with the actual staggered endpoint versions. engine_newPayloadV5 now validates as V5, engine_forkchoiceUpdatedV4 validates as V4, and the version-specific field and timestamp checks reject Amsterdam data on the older staggered endpoints.

The root cause is that forkchoiceUpdated, newPayload, and getPayload do not all advance in lockstep around Amsterdam, so using a single later version for validation accepted the wrong fork window and fields. Validated with cargo test -p reth-payload-primitives -p reth-rpc-engine-api.

Engine API method versions stop advancing in lockstep around Amsterdam.\nValidate the staggered endpoints against their actual method versions and tighten the Amsterdam field checks accordingly.
@github-project-automation github-project-automation Bot moved this to Backlog in Reth Tracker Apr 18, 2026
@mattsse mattsse added A-rpc Related to the RPC implementation A-engine Related to the engine implementation E-Amsterdam Amsterdam/Glamsterdam labels Apr 18, 2026
@mattsse mattsse marked this pull request as ready for review April 18, 2026 14:34
@mattsse mattsse requested a review from Rjected as a code owner April 18, 2026 14:34
@mattsse mattsse enabled auto-merge April 19, 2026 07:09
@mattsse mattsse added this pull request to the merge queue Apr 20, 2026
@github-project-automation github-project-automation Bot moved this from Backlog to In Progress in Reth Tracker Apr 20, 2026
Merged via the queue into main with commit d577814 Apr 20, 2026
34 checks passed
@mattsse mattsse deleted the codex/amsterdam-engine-validation branch April 20, 2026 13:44
@github-project-automation github-project-automation Bot moved this from In Progress to Done in Reth Tracker Apr 20, 2026
crazywriter1 pushed a commit to crazywriter1/tempo that referenced this pull request Apr 23, 2026
Automated nightly update of reth dependencies from `paradigmxyz/reth`
main branch.

## Upstream reth changes


[`98ebc34...7839f3d`](paradigmxyz/reth@98ebc34...7839f3d)

🔗 Amp thread:
https://ampcode.com/threads/T-019db884-a7c3-738b-8f38-cc04f8942d8a
**Engine**
- Suppress persistence during payload building
([#23618](paradigmxyz/reth#23618))
- Align Amsterdam endpoint validation
([#23625](paradigmxyz/reth#23625))
- Revert [#23541](paradigmxyz/reth#23541) and
[#23578](paradigmxyz/reth#23578)
([#23646](paradigmxyz/reth#23646))
- Let consensus impls control which errors are transient
([#23668](paradigmxyz/reth#23668))
- Configure invalid header cache hit eviction
([#23670](paradigmxyz/reth#23670))

**Perf**
- Relax executor reset thresholds for re-execute
([#23617](paradigmxyz/reth#23617))
- Replace `BTreeMap` with `imbl::OrdMap` in `BestTransactions`
([#23621](paradigmxyz/reth#23621))
- Avoid reopening `.csoff` on every changeset lookup
([#23687](paradigmxyz/reth#23687))
- Disable read tx timeout during re-execute
([#23680](paradigmxyz/reth#23680))

**P2P / Net**
- Add snap/2 wire helpers and messages
([#23611](paradigmxyz/reth#23611))
- Optionally fetch BAL with full blocks
([#23629](paradigmxyz/reth#23629))
- Discv5 enabled by default
([#23686](paradigmxyz/reth#23686))

**DB**
- Add `reth db migrate-v2` for v1→v2 storage migration
([#23422](paradigmxyz/reth#23422))
- Detect and warn about ZFS
([#23685](paradigmxyz/reth#23685))

**BAL**
- Scaffold BAL store abstraction
([#23596](paradigmxyz/reth#23596))
- Enable BAL building in ethereum payload
([#23597](paradigmxyz/reth#23597))
- Add parallelization and batch IO flags
([#23663](paradigmxyz/reth#23663))

**Refactor**
- Make `WorkerPool` lazy by default
([#23627](paradigmxyz/reth#23627))
- Encapsulate state fetching in db provider
([#23656](paradigmxyz/reth#23656))
- Remove `TrieNodeProvider`
([#23658](paradigmxyz/reth#23658))
- Unify opaque consensus error helpers
([#23669](paradigmxyz/reth#23669))

**Payload**
- Add gas limit and slot number to `BlockOrPayload`
([#23624](paradigmxyz/reth#23624),
[#23626](paradigmxyz/reth#23626))

**Bench**
- Add CLI flag to fetch balances by default; require local benchmark
data ([#23655](paradigmxyz/reth#23655),
[#23679](paradigmxyz/reth#23679))

**Deps**
- Bump alloy crates to 2.0.1
([#23677](paradigmxyz/reth#23677)),
rustls-webpki
([#23681](paradigmxyz/reth#23681)), weekly
`cargo update`
([#23628](paradigmxyz/reth#23628))

**Testing**
- Remove unsafe `env::set_var(RUST_LOG)` from tests
([#23672](paradigmxyz/reth#23672))
- Address nightly clippy warnings
([#23630](paradigmxyz/reth#23630))

## Migrations

🔗 Amp thread:
https://ampcode.com/threads/T-019db884-dc46-71f5-a823-00c3a16191d4
- **Reth dependency bump**: All `reth-*` git dependencies updated from
rev `98ebc34` to `7839f3d`
- **Alloy version bump**: `alloy-*` crates updated from `2.0.0` to
`2.0.1`; `alloy-evm` changed from `0.33.2` to `0.33.0`
- **`ConsensusError::Other` → `ConsensusError::msg`**: All
`ConsensusError::Other(...)` calls migrated to
`ConsensusError::msg(...)`, which accepts `&str`/`impl Display` directly
instead of requiring `String` (removes `.to_string()` calls for string
literals)
- **`deny.toml` license exceptions**: Added MPL-2.0 exceptions for
`bitmaps`, `imbl`, and `imbl-sized-chunks` (new transitive dependencies)

[GitHub
Workflow](https://github.com/tempoxyz/tempo/actions/runs/24816009191)

---------

Co-authored-by: Alexey Shekhirin <github@shekhirin.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-engine Related to the engine implementation A-rpc Related to the RPC implementation E-Amsterdam Amsterdam/Glamsterdam

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

2 participants