Os caminhos de menor resistência: Apresentando o WFR-Gossip tldr: O WFR-Gossip aplica princípios de transporte ótimo à camada de gossip do Ethereum. Preserva a resiliência do Gossipsub, enquanto reduz a largura de banda em 50% e diminui a latência do 90º percentil em 40% em simulações.
O Gossipsub do Ethereum é robusto, mas ineficiente. Os nós frequentemente recebem a mesma mensagem muitas vezes. Bom para resiliência, caro em largura de banda/latência. O WFR-Gossip adota uma abordagem diferente: inspirado pela teoria do transporte ótimo, ele encaminha mensagens por caminhos mais rápidos. 👇
O boato clássico trata a propagação como um processo aleatório. O WFR-Gossip reformula isso como transporte em massa: uma mensagem é como um monte de areia, e a latência é o custo para movê-la. Isso se conecta naturalmente à teoria do transporte ótimo.
Numa rede de boatos: • massa em movimento = encaminhar uma mensagem • criar massa = duplicar uma mensagem • destruir massa = descartar uma duplicata A métrica Wasserstein-Fisher-Rao (WFR) captura isso, permitindo-nos modelar o fluxo de mensagens com intuição física.
Cada nó usa uma regra simples: • Encaminhar para alguns pares de baixa latência (D₍robust₎ ≈ 3) • Para outros, encaminhar apenas se RTT_out < RTT_in Esta heurística "descendente" não requer coordenação global. Apenas tempos de ida e volta (RTTs) locais, já em libp2p.
Com D_robust = 3, o WFR-Gossip alcança: • ~98% de cobertura da rede • 50% menos largura de banda • 40% menos latência no 90ᵗʰ percentil O fallback IHAVE/IWANT lida com os 2% restantes de nós perdidos.
O WFR-Gossip não se limita a encaminhar para o par mais rápido. Ele combina redundância com filtragem: propagação aleatória robusta + poda seletiva de caminhos lentos. Isso evita gargalos e é menos suscetível a manipulações.
É também minimamente invasivo: • Sem novas topologias • Compatível com pontuação entre pares • Funciona bem com CHOKE, IDONTWANT, etc. • Usa apenas regras e dados locais (RTTs)
O que vem a seguir? • Implementação em simuladores libp2p • Testes em condições mais realistas/adversariais trabalho inicial de @open_sourcery aqui:
Link para o post: Link para o repositório do GitHub para o código de simulação: Obrigado a Leo Monsaingeon, @casparschwa, @_julianma, @weboftrees, @raulvk, @yannvon, @cskiraly e @open_sourcery pelo feedback e revisões!
11,73K