Glosario / Lightning y capa 2
Protocolo gossip
- ¿Qué es el protocolo gossip?
- El protocolo gossip es el modo en que los nodos Lightning se envían por inundación anuncios firmados de canales y de nodos, para que cada nodo pueda construir su propio mapa de la red sin consultar a un servidor.
Lightning no tiene un directorio, así que los nodos se cuentan entre sí qué existe y cada nodo guarda su propia copia. BOLT 7 define tres mensajes para ello, y un nodo receptor debería ignorar un canal cuya salida de financiación tenga menos de 6 confirmaciones. Su billetera encuentra una ruta porque ella, o un nodo en el que confía, escuchó antes ese intercambio de mensajes.
Cómo funciona
El protocolo gossip transporta tres tipos de mensaje, y cada uno tiene que demostrar algo on-chain o mediante una firma antes de que un par lo retransmita.
El mensaje channel_announcement (tipo 256) afirma que existe un canal. Un nodo receptor busca la salida de financiación en la blockchain: un mensaje cuya salida no sea el script P2WSH esperado, o que ya esté gastada, debe ignorarse, y uno cuya salida tenga menos de 6 confirmaciones debería ignorarse, salvo que esté tan cerca que el nodo quizá simplemente no esté al día con los bloques. Por lo tanto, anunciar un canal cuesta una transacción on-chain real, y en eso consiste todo el diseño contra el spam: nadie puede inventar mil canales gratis.
El mensaje node_announcement (tipo 257) lleva los datos del propio operador. Los nodos que no están asociados a un canal ya conocido se ignoran, "to avoid trivial denial of service attacks" (para evitar ataques triviales de denegación de servicio), así que un operador sin nada en juego nunca llega al mapa de nadie.
El mensaje channel_update (tipo 258) lleva los precios, uno por sentido, y es el mensaje que realmente cambia. Aquí van las comisiones y la delta de expiración, y cuando un operador sube una comisión, la especificación recomienda que ese mismo operador siga aceptando los parámetros anteriores durante al menos 10 minutos, porque la nueva tiene que viajar.
La propagación es deliberadamente pausada. Un nodo almacena lo que recibe, reemplaza las actualizaciones más antiguas del mismo origen y envía el lote una vez cada 60 segundos; la especificación lo llama difusión escalonada, y así se evita que un solo operador muy activo llene el ancho de banda de todos.
El olvido también está especificado. Una vez gastada la salida de financiación de un canal, un nodo espera 72 confirmaciones de bloque antes de descartar el canal, para que un splice (empalme) tenga tiempo de anunciarse en lugar de parecer un cierre. Por otro lado, si el mensaje channel_update más reciente en cualquiera de los dos sentidos tiene más de dos semanas (1.209.600 segundos), un nodo puede podar el canal directamente.
Dónde aparece
El gossip es la razón por la que un nodo Lightning recién iniciado es inútil durante un rato y luego, de repente, deja de serlo.
Al conectarse, un nodo pide lo que le falta: el mensaje query_channel_range (tipo 263) para saber qué canales existen en un rango de bloques, query_short_channel_ids (261) para traer los concretos que nunca ha visto y gossip_timestamp_filter (265) para establecer una ventana de tiempo sobre todo lo que se envíe después. Ese último mensaje es un interruptor, no una preferencia: hasta que un nodo lo envía, un par no le retransmite nada que no haya generado él mismo, y así es como un dispositivo pequeño sigue siendo pequeño.
Las consecuencias llegan a su billetera en forma de comisiones. La cotización de una ruta se arma con los mensajes channel_update que su billetera tenga en ese momento, así que una visión obsoleta produce intentos fallidos y precios que no coinciden con los que se le mostraron. Las billeteras de teléfono se apoyan en el mapa de otro: Phoenix ejecuta un auténtico nodo de autocustodia en el teléfono, pero se conecta a través de los nodos de la propia ACINQ, con el costo que recoge nuestra reseña: ACINQ conoce el destino y el monto de sus pagos. Una cuenta con custodia se salta el gossip por completo, porque la empresa enruta por usted.
Protocolo gossip frente a mensajes P2P
El protocolo gossip funciona entre nodos Lightning; los mensajes P2P de bitcoin circulan entre nodos de bitcoin, y los dos no comparten nada más allá de la costumbre de la inundación.
Un nodo de bitcoin retransmite transacciones y bloques con comandos como inv, getdata y tx, y no sabe nada de los canales de nadie. El gossip de Lightning es una conversación aparte que lleva los tipos de mensaje del 256 al 265, y solo recurre a la blockchain para comprobar que una salida de financiación anunciada es real y no está gastada. Ningún pago se propaga nunca por gossip: los montos y los destinos viajan dentro de paquetes cebolla que los nodos intermedios no pueden leer, así que el mapa público dice dónde están los canales, nunca qué se movió por ellos.