Skip to content

feat(net): add snap/2 wire helpers and messages#23611

Merged
mattsse merged 1 commit into
paradigmxyz:mainfrom
mattsse:codex/snap2-wire-prep
Apr 22, 2026
Merged

feat(net): add snap/2 wire helpers and messages#23611
mattsse merged 1 commit into
paradigmxyz:mainfrom
mattsse:codex/snap2-wire-prep

Conversation

@mattsse
Copy link
Copy Markdown
Collaborator

@mattsse mattsse commented Apr 17, 2026

Adds preparatory snap/2 wire support without changing negotiation or sync behavior yet.

This introduces SnapVersion, snap/2 BAL messages, Capability::snap_* and Protocol::snap_* helpers, and lets EthSnapStream carry a snap version while defaulting existing behavior to snap/1.

This is groundwork for EIP-8189 BAL-based healing.

Checks:

  • cargo +nightly fmt --all
  • cargo test -p reth-eth-wire-types snap --lib
  • cargo test -p reth-eth-wire eth_snap_stream --lib

@mattsse mattsse requested a review from Rjected as a code owner April 17, 2026 12:34
@github-project-automation github-project-automation Bot moved this to Backlog in Reth Tracker Apr 17, 2026
@mattsse mattsse added A-devp2p Related to the Ethereum P2P protocol C-enhancement New feature or request M-eip This change relates to the implementation of an EIP labels Apr 17, 2026
@mattsse mattsse enabled auto-merge April 17, 2026 13:38
}

/// Returns the highest supported message id for this version.
pub const fn max_message_id(self) -> u8 {
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is this used anywhere @mattsse ?

Copy link
Copy Markdown
Collaborator Author

@mattsse mattsse Apr 21, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not yet, but we need this value if this is combined with other subprotocols

@mattsse mattsse disabled auto-merge April 22, 2026 07:03
@mattsse mattsse merged commit f39c47b into paradigmxyz:main Apr 22, 2026
38 checks passed
@github-project-automation github-project-automation Bot moved this from Backlog to Done in Reth Tracker Apr 22, 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-devp2p Related to the Ethereum P2P protocol C-enhancement New feature or request M-eip This change relates to the implementation of an EIP

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

2 participants