hs-libp2p: A Haskell Implementation of the libp2p Stack
2026-11-04 –, Lightning Stage

Ethereum's entire p2p layer runs on libp2p, but only a handful of implementations maintain it, and when they silently disagree on the spec the network fractures. I built a full libp2p stack from scratch in Haskell (Noise, Yamux, Kademlia DHT, GossipSub) and joined the cross-client interop effort. This talk is what a fresh, strongly-typed implementation reveals about Ethereum's networking spec — and why implementation diversity at the network layer matters.


Every Ethereum node reaches peers through libp2p: multiaddr, Noise, Yamux, Identify, Kademlia DHT, GossipSub. Yet this layer rests on a few implementations; when two read an underspecified spec corner differently, peers fail to connect or silently drop messages — a systemic risk with no owner.

I built the full libp2p stack independently in Haskell — TCP, Noise XX, Yamux, multistream-select, Switch, Identify, Ping, Kademlia DHT, GossipSub — with 547 unit, property, and end-to-end tests, and joined libp2p/unified-testing to interop with other libp2p implementations.

A layer-by-layer tour of Ethereum's p2p stack; the concrete spec ambiguities a fresh, strongly-typed implementation surfaces that incumbents absorbed as folklore; how cross-client interop keeps the network coherent; and why implementation diversity at the networking layer — not just the client layer — is a resilience and censorship-resistance property.

Ethereum protocol researcher at Nyx Foundation, working on formal verification of the consensus layer. Building Verity, a Lean 4 / Rust consensus client for the next-generation Lean Consensus spec. Building hs-libp2p, a Haskell implementation of the libp2p networking stack.

This speaker also appears in: