Gossip e o Grafo de Canais
Como os nós descobrem a rede
⚡ Lightning · Técnico
No roteamento onion assumimos que a origem já conhece a rota. Mas como ela sabe quais nós e canais existem, se não há um servidor central? A resposta é o gossip (fofoca): os nós anunciam e repassam informações uns para os outros, e cada um monta o seu próprio grafo de canais.
As três mensagens do gossip
O protocolo de descoberta (BOLT 7) gira em torno de três mensagens, que são inundadas (flooded) pela rede:
node_announcement— um nó se apresenta: seu node id (chave pública), apelido, cor, endereços de rede e funcionalidades que suporta.channel_announcement— anuncia um canal público novo: traz o short channel id, os node ids dos dois lados e quatro assinaturas (as duas chaves dos nós + as duas chaves Bitcoin que controlam a saída de financiamento).channel_update— a política de roteamento de uma direção do canal: a taxa (base + ppm), ocltv_expiry_delta, os valores mínimo/máximo de HTLC e se a direção está ativa. São dois por canal, um para cada sentido.
Anunciar um canal custa bitcoin (anti-spam)
Qualquer um poderia inventar canais falsos para poluir a rede. Para evitar isso, o channel_announcement só é aceito se a saída de financiamento realmente existir on-chain — e as assinaturas Bitcoin provam que quem anuncia controla aquela saída multisig. Ou seja: para anunciar um canal, você precisa ter trancado bitcoin de verdade. Isso torna o spam caro.
Short Channel ID (SCID)
Como o anúncio aponta para a saída de financiamento? Pelo Short Channel ID: um identificador compacto (8 bytes) que é, literalmente, a localização da saída na blockchain:
SCID = <altura_do_bloco> x <índice_da_tx> x <índice_da_saída> É escrito como 700000x1337x0 (bloco 700000, transação 1337 do bloco, saída 0) — o x aí é só um separador, não uma multiplicação. Por baixo, é uma forma numérica com os três campos empacotados em 64 bits (24 bits de altura + 24 de índice da tx + 16 de índice da saída). Com o SCID, qualquer nó consegue ir até o bloco e verificar que o canal existe.
Converta entre as duas formas:
Short Channel ID
Montando o grafo de canais
Juntando tudo, cada nó constrói um grafo: os nós (de node_announcement), as arestas (canais, de channel_announcement) e o peso de cada aresta (a política de taxa/cltv, de channel_update). É esse grafo que a busca de caminho usa para escolher uma rota.
Canais públicos vs. privados
Nem todo canal é anunciado. Um canal privado (unannounced) não entra no gossip — ele existe, mas a rede não o conhece. Para receber por um canal privado, o destinatário inclui dicas de roteamento (routing hints) na invoice, contando ao pagador o caminho final que ele não acharia sozinho.
Mantendo o grafo fresco
Para não inundar a rede sem parar, os anúncios têm timestamps e há regras de throttling (limites de frequência) e staggered broadcast (envios em lotes periódicos). Canais sem atualização há muito tempo são considerados obsoletos e podados (pruned) do grafo.
Com o grafo em mãos, falta o último passo do roteamento: escolher uma boa rota entre as muitas possíveis. É a busca de caminho — a próxima página.