NethermindEth / NethermindEth/pluto
Wire the `QUIC` transport feature
Open
@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 hardcodesNodeType::TCP(TODO(#402 part B)), sowith_quic_enabled(true)is never reached and the upgrade loop early-returns every tick.Feature::Quicis declared, parsed, and defaulted (Alpha, matching Charon) — but never queried:feature_set.enabled(Feature::Quic)has zero call sites.--feature-set-enable=quicandrun's--p2p-udp-addressare silently inert.- Charon's wiring is one conditional:
app.go#L368-L372picksNodeTypeQUICvsNodeTypeTCPoff the featureset. - Related dead code:
is_quic_enabledhas zero call sites;quic_upgrade.rshas no test module (Charon hasTestNewQUICHostplus QUIC-host test helpers).
Proposed change
- Branch
NodeTypeonfeature_set.enabled(Feature::Quic)inwire_p2p, mirroring Charon. - Fix the server-path
with_quic_enabledomission — covered by the transport unification (draft15b), 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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.