The paths of least resistance: Introducing WFR-Gossip tldr: WFR-Gossip applies optimal transport principles to Ethereum’s gossip layer. It preserves Gossipsub’s resilience, while cutting bandwidth by 50% and reducing 90ᵗʰ-percentile latency by 40% in simulations.
Ethereum’s Gossipsub is robust but inefficient. Nodes often receive the same message many times. Good for resilience, costly in bandwidth/latency. WFR-Gossip takes a different approach: Inspired by optimal transport theory, it forwards messages along faster paths. 👇
Classic gossip treats propagation as a random process. WFR-Gossip reframes it as mass transport: a message is like a pile of sand, and latency is the cost to move it. This connects naturally to optimal transport theory.
In a gossip network: • moving mass = forwarding a message • creating mass = duplicating a message • destroying mass = dropping a duplicate The Wasserstein-Fisher-Rao (WFR) metric captures this, allowing us to model message flow with physical intuition.
Each node uses a simple rule: • Forward to a few low-latency peers (D₍robust₎ ≈ 3) • For others, forward only if RTT_out < RTT_in This "downhill" heuristic doesn’t require global coordination. Just local Round-Trip Times (RTTs), already in libp2p.
At D_robust = 3, WFR-Gossip achieves: • ~98% network coverage • 50% less bandwidth • 40% lower 90ᵗʰ percentile latency IHAVE/IWANT fallback handles the remaining 2% of missed nodes.
WFR-Gossip isn’t just forwarding to the fastest peer. It combines redundancy with filtering: robust random propagation + selective pruning of slow paths. This avoids bottlenecks and is less prone to manipulation.
It’s also minimally invasive: • No new topologies • Compatible with peer scoring • Plays well with CHOKE, IDONTWANT, etc. • Uses only local rules and data (RTTs)
What’s next? • Implementation in libp2p simulators • Testing under more realistic/adversarial conditions early work by @open_sourcery here:
Link to the post: Link to githup repo for simulation code: Thanks to Leo Monsaingeon, @casparschwa, @_julianma, @weboftrees, @raulvk, @yannvon, @cskiraly and @open_sourcery for feedback and reviews!
11,74K