Gossip y el Grafo de Canales
Cómo los nodos descubren la red
⚡ Lightning · Técnico
En el enrutamiento onion asumimos que la origen ya conoce la ruta. Pero, ¿cómo sabe ella qué nodos y canales existen, si no hay un servidor central? La respuesta es el gossip (cotilleo): los nodos anuncian y reenvían información unos a otros, y cada uno construye su propio grafo de canales.
Los tres mensajes del gossip
El protocolo de descubrimiento (BOLT 7) gira en torno a tres mensajes, que se inundan (flooded) por la red:
node_announcement— un nodo se presenta: su node id (clave pública), apodo, color, direcciones de red y funcionalidades que soporta.channel_announcement— anuncia un canal público nuevo: trae el short channel id, los node ids de ambos lados y cuatro firmas (las dos claves de los nodos + las dos claves Bitcoin que controlan la salida de financiación).channel_update— la política de enrutamiento de una dirección del canal: la comisión (base + ppm), elcltv_expiry_delta, los valores mínimo/máximo de HTLC y si la dirección está activa. Son dos por canal, uno para cada sentido.
Anunciar un canal cuesta bitcoin (anti-spam)
Cualquiera podría inventar canales falsos para ensuciar la red. Para evitarlo, el channel_announcement solo se acepta si la salida de financiación realmente existe on-chain — y las firmas Bitcoin prueban que quien anuncia controla esa salida multisig. Es decir: para anunciar un canal, tienes que haber bloqueado bitcoin de verdad. Eso hace que el spam sea caro.
Short Channel ID (SCID)
¿Cómo apunta el anuncio a la salida de financiación? Por el Short Channel ID: un identificador compacto (8 bytes) que es, literalmente, la ubicación de la salida en la blockchain:
SCID = <altura_del_bloque> x <índice_de_la_tx> x <índice_de_la_salida> Se escribe como 700000x1337x0 (bloque 700000, transacción 1337 del bloque, salida 0) — la x ahí es solo un separador, no una multiplicación. Por debajo, es una forma numérica con los tres campos empaquetados en 64 bits (24 bits de altura + 24 de índice de la tx + 16 de índice de la salida). Con el SCID, cualquier nodo puede ir al bloque y verificar que el canal existe.
Convierte entre las dos formas:
Short Channel ID
Construyendo el grafo de canales
Juntándolo todo, cada nodo construye un grafo: los nodos (de node_announcement), las aristas (canales, de channel_announcement) y el peso de cada arista (la política de comisión/cltv, de channel_update). Es ese grafo el que la búsqueda de camino usa para elegir una ruta.
Canales públicos vs. privados
No todo canal se anuncia. Un canal privado (unannounced) no entra en el gossip — existe, pero la red no lo conoce. Para recibir por un canal privado, el destinatario incluye pistas de enrutamiento (routing hints) en la invoice, diciéndole al pagador el camino final que no encontraría por sí solo.
Manteniendo el grafo fresco
Para no inundar la red sin parar, los anuncios tienen timestamps y existen reglas de throttling (límites de frecuencia) y staggered broadcast (envíos en lotes periódicos). Los canales sin actualización durante mucho tiempo se consideran obsoletos y se podan (pruned) del grafo.
Con el grafo en mano, falta el último paso del enrutamiento: elegir una buena ruta entre muchas posibles. Es la búsqueda de camino — la próxima página.