EthResearch Technical Report ·

Gossip IWANT/IHAVE Effectiveness in Ethereum’s Gossipsusb Network

Mikel Cortes · Yiannis Psaras

Abstract

This study by Yiannis Psaras from ProbeLab examines the efficiency of Gossipsub's IHAVE/IWANT control message mechanism in Ethereum's peer-to-peer network using the custom-built Hermes monitoring tool, which traces all GossipSub protocol interactions. Based on a 3.5-hour trace of network activity, the research reveals that the gossip mechanism is substantially inefficient, with ratios of sent IHAVE message IDs to received IWANT message IDs reaching approximately 1:100 for beacon blocks, 1:10 for beacon aggregate and proofs, and 1:6 for sync committee contributions—indicating that over 10 times more bandwidth is consumed by control messages than what is actually needed. The analysis shows that IHAVE and IWANT messages serve different purposes depending on message type: less frequent large messages (like beacon blocks) rely primarily on mesh propagation and receive minimal benefit from gossip, while very frequent small messages incur substantial control message overhead. The study identifies implementation anomalies in Teku nodes that send IHAVE and IWANT messages with empty topics, and proposes three optimization directions: replacing message ID lists with bloom filters, reducing the GossipsubHistoryGossip parameter from 3 to 2 heartbeats, and implementing adaptive GossipFactor per topic to balance bandwidth efficiency with network robustness. The authors emphasize that while IHAVE/IWANT mechanisms are essential for network resilience during attacks and anomalies, significant optimization potential exists under normal operating conditions.

Citation

@misc{psaras2024gossip,
	title        = {Gossip {IWANT}/{IHAVE} Effectiveness in Ethereum's {GossipSub} network},
	author       = {Mikel Cortes, Yiannis Psaras},
	year         = 2024,
	month        = {May},
	url          = {https://ethresear.ch/t/gossip-iwant-ihave-effectiveness-in-ethereums-gossipsusb-network/19686},
	note         = {Accessed: \today},
	organization = {Ethereum Research}
}