Glosario / Lightning y capa 2
Anuncio de canal
- ¿Qué es un anuncio de canal?
- Un anuncio de canal es el mensaje gossip firmado que comunica a la red Lightning que existe un canal público, y demuestra la propiedad de la salida de financiación con cuatro firmas.
Todo canal Lightning público entra en el grafo de enrutamiento a través de uno de estos mensajes, y solo puede existir un anuncio válido por canal. No puede enviarse hasta que la transacción de financiación tenga seis confirmaciones, y los pares olvidan el canal 72 bloques después de que se gaste la salida. Anunciar cuesta privacidad, porque el mensaje publica la salida on-chain que financia su canal y la asocia a la clave de su nodo.
Cómo funciona
Un anuncio de canal es caro de falsificar, y ese es precisamente el propósito del diseño.
Enviar gossip no cuesta nada, así que, de otro modo, un nodo podría inundar la red con canales imaginarios. El BOLT 7 lo impide haciendo que cada afirmación pueda contrastarse con la blockchain. El mensaje, de tipo 256, incluye un campo short_channel_id que apunta a una salida concreta: tres bytes de altura de bloque, tres de índice de transacción y dos de índice de salida. El nodo que lo recibe busca esa salida y descarta el anuncio salvo que esa salida sea un UTXO P2WSH que paga a las dos claves de Bitcoin indicadas.
Cuatro firmas van al principio. Dos proceden de las claves de identidad de los nodos, y dos de las claves de financiación que controlan la salida on-chain, bitcoin_key_1 y bitcoin_key_2. Las cuatro firman el mismo hash, un doble SHA256 calculado desde el desplazamiento de byte 256 hasta el final del mensaje. Emparejar las claves de nodo con las claves de Bitcoin demuestra que los dos nodos que anuncian el canal son las dos partes que lo financiaron, y no desconocidos que apuntan a la salida de otra persona. Además, la clave node_id_1 debe ser la menor, en orden lexicográfico, de las dos claves comprimidas, y el nodo que recibe el mensaje debe ignorar cualquier anuncio que no respete ese orden.
Anunciar es opcional y lo determina el bit announce_channel al abrir el canal. Si está activado, los pares intercambian el mensaje announcement_signatures (tipo 259) una vez que la transacción de financiación tiene suficiente profundidad, y cualquiera de las dos partes puede entonces difundir el resultado. Un splice (empalme) produce un anuncio nuevo para la nueva transacción, y por eso los nodos esperan 72 bloques después de que se gaste una salida de financiación antes de olvidar el canal: el gasto podría ser un cambio de tamaño y no un cierre.
Dónde aparece
Los anuncios de canal son lo que lee un explorador Lightning cuando dibuja el grafo de la red.
El identificador que aparece junto a cada canal sale directamente del mensaje. Un short_channel_id escrito como 539268x845x1 significa la salida 1 de la transacción con índice 845 en el bloque 539268, así que cualquiera puede comprobar esa salida on-chain. El anuncio no lleva nada parecido a un listado: ni comisión, ni capacidad, ni nombre del operador. Un canal no se puede usar hasta que al menos una de las partes envía un mensaje channel_update con sus comisiones y su delta de expiración, y el nombre del nodo llega por separado en un mensaje node_announcement.
Esa separación explica por qué los canales desaparecen de los exploradores aunque sigan existiendo. Si el channel_update más reciente en cualquiera de los dos sentidos tiene más de dos semanas de antigüedad (1209600 segundos), un nodo puede podar el canal de su vista. Un anuncio nunca se renueva por sí solo, así que un canal permanece en el grafo solo mientras un operador siga volviendo a firmar sus condiciones.
En el lado de la billetera, los anuncios de canal se notan sobre todo por su ausencia. Un canal solo necesita anunciarse si usted quiere que desconocidos enruten pagos a través de él, y una billetera móvil existe para gastar y recibir, no para ser un salto. Por eso las cuestiones prácticas de nuestras reseñas de Phoenix y Muun son la tabla de comisiones publicada y el archivo de respaldo, no una posición en el grafo público.
Anuncio de canal frente a capacidad del canal
Un anuncio de canal demuestra que un canal existe, mientras que la capacidad del canal es el número de satoshis que contiene, y el mensaje no indica ningún monto. Sus campos son cuatro firmas, un vector de funcionalidades, un hash de la cadena, el ID corto de canal y cuatro claves públicas. Quien cite una cifra de capacidad ha combinado el anuncio con datos de la cadena, al leer el valor de la salida a la que apunta el identificador. Por eso un canal no anunciado tiene capacidad pero ninguna cifra pública: nada le indica a la red qué salida leer.