Glossário / Lightning e camada 2
Protocolo gossip
- O que é o protocolo gossip?
- O protocolo gossip é como os nós da Lightning inundam uns aos outros com anúncios assinados de canais e de nós, para que cada nó possa construir seu próprio mapa da rede sem consultar um servidor.
A Lightning não tem um diretório, então os nós contam uns aos outros o que existe e cada nó guarda sua própria cópia. O BOLT 7 define três mensagens para isso, e um nó receptor deve ignorar um canal cuja saída de financiamento tenha menos de 6 confirmações. Sua carteira encontra uma rota porque ela, ou um nó em que ela confia, escutou antes essa conversa.
Como funciona
O protocolo gossip transporta três tipos de mensagem, e cada uma precisa provar algo on-chain ou por assinatura antes que um par a repasse.
channel_announcement (tipo 256) afirma que um canal existe. Um nó receptor procura a saída de financiamento na blockchain: uma mensagem cuja saída não seja o script P2WSH esperado, ou que já esteja gasta, deve ser ignorada, e uma cuja saída tenha menos de 6 confirmações deve ser ignorada, a menos que esteja tão perto que o nó talvez esteja apenas atrasado em blocos. Anunciar um canal, portanto, custa uma transação on-chain real, e é nisso que consiste todo o desenho antispam: ninguém consegue inventar mil canais de graça.
node_announcement (tipo 257) carrega os próprios dados do operador. Nós não associados a um canal já conhecido são ignorados, "to avoid trivial denial of service attacks", então um operador sem nada em jogo nunca chega ao mapa de ninguém.
channel_update (tipo 258) carrega os preços, um por direção, e é a mensagem que de fato muda. As taxas e o delta de expiração ficam aqui, e quando um operador aumenta uma taxa, a especificação recomenda que esse mesmo operador continue aceitando os parâmetros antigos por pelo menos 10 minutos, porque a nova precisa viajar.
A propagação é deliberadamente sem pressa. Um nó armazena o que recebe, substitui atualizações mais antigas da mesma origem e envia o lote a cada 60 segundos; a especificação chama isso de difusão escalonada, e assim um operador muito ativo não enche a largura de banda de todos.
O esquecimento também está especificado. Depois que a saída de financiamento de um canal é gasta, um nó espera 72 confirmações de bloco antes de descartar o canal, para que um splice tenha tempo de se anunciar em vez de parecer um fechamento. Separadamente, se o channel_update mais recente em qualquer das direções tiver mais de duas semanas (1.209.600 segundos), um nó pode podar o canal de imediato.
Onde você vê isso
O gossip é a razão pela qual um nó Lightning recém-iniciado é inútil por um tempo e depois de repente deixa de ser.
Ao se conectar, um nó pede o que lhe falta: query_channel_range (tipo 263) para saber quais canais existem em um intervalo de blocos, query_short_channel_ids (261) para trazer os específicos que nunca viu, e gossip_timestamp_filter (265) para definir uma janela de tempo sobre tudo o que for enviado depois. Essa última mensagem é um interruptor, não uma preferência: até você enviá-la, um par não repassa nada que ele mesmo não gerou, e é assim que um dispositivo pequeno continua pequeno.
As consequências chegam à sua carteira como taxas. A cotação de uma rota é montada a partir das mensagens channel_update que sua carteira tem naquele momento, então uma visão desatualizada produz tentativas fracassadas e preços que não batem com o que foi mostrado a você. As carteiras de celular se apoiam no mapa de outra pessoa: A Phoenix roda um nó de autocustódia de verdade no celular, mas se conecta pelos próprios nós da ACINQ, ao custo que nossa análise registra: a ACINQ sabe o destino e o valor dos seus pagamentos. Uma conta custodial ignora o gossip por completo, porque a empresa roteia por você.
Protocolo gossip vs mensagens P2P
O protocolo gossip roda entre nós Lightning; as mensagens P2P do bitcoin rodam entre nós de bitcoin, e os dois não compartilham nada além do hábito de inundar.
Um nó de bitcoin retransmite transações e blocos com comandos como inv, getdata e tx, e não sabe nada dos canais de ninguém. O gossip da Lightning é uma conversa separada que carrega os tipos de mensagem de 256 a 265, e recorre à blockchain apenas para verificar que uma saída de financiamento anunciada é real e não está gasta. Nenhum pagamento é propagado pelo gossip: valores e destinos viajam dentro de pacotes cebola que os nós intermediários não conseguem ler, então o mapa público diz onde os canais estão, nunca o que passou por eles.