NethermindEth / NethermindEth/pluto

Wire the `QUIC` transport feature

Open
#619 0 comments 0 reactions 1 assignee View on GitHub

@emlautarom1 is already working on this.

Since Sep 17, 2026.

enhancement
Dominant language
Rust
Stars
8
Forks
5
Avg merge
4d 16h
Merged PRs (30d)
37

Description

Summary

The QUIC machinery is fully implemented but unreachable in production:

  • QuicUpgradeBehaviour (431 lines, complete port of Charon's upgrade loop) is always installed, but the node hardcodes NodeType::TCP (TODO(#402 part B)), so with_quic_enabled(true) is never reached and the upgrade loop early-returns every tick.
  • Feature::Quic is declared, parsed, and defaulted (Alpha, matching Charon) — but never queried: feature_set.enabled(Feature::Quic) has zero call sites. --feature-set-enable=quic and run's --p2p-udp-address are silently inert.
  • Charon's wiring is one conditional: app.go#L368-L372 picks NodeTypeQUIC vs NodeTypeTCP off the featureset.
  • Related dead code: is_quic_enabled has zero call sites; quic_upgrade.rs has no test module (Charon has TestNewQUICHost plus QUIC-host test helpers).

Proposed change

  • Branch NodeType on feature_set.enabled(Feature::Quic) in wire_p2p, mirroring Charon.
  • Fix the server-path with_quic_enabled omission — covered by the transport unification (draft 15b), which should land first or together.
  • Remove or use is_quic_enabled; add QUIC tests.

Acceptance

--feature-set-enable=quic on run produces a node that listens on the configured UDP address and upgrades established TCP connections to QUIC (observable via the upgrade behaviour's logs/metrics in a two-node test).

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.