Glosario / Lightning y capa 2
Alias del nodo
- ¿Qué es el alias del nodo?
- El alias del nodo es el nombre de 32 bytes que un nodo Lightning escribe en su propio mensaje node_announcement firmado: algo legible que exploradores y billeteras muestran en vez de una clave pública en bruto.
Cada nodo Lightning elige su propio nombre y lo firma, y en eso consiste todo el mecanismo y también todo el problema. BOLT 7 le da al campo exactamente 32 bytes, rellena el resto con ceros e indica al software que recibe el anuncio que sugiera que el nombre es autofirmado. Nada impide que dos nodos se llamen igual, así que nunca tome un alias como prueba de a quién le está pagando.
Cómo funciona
El alias del nodo viaja dentro de node_announcement, el mensaje gossip de tipo 257, firmado por la misma clave a la que nombra.
El mensaje lleva una firma, un campo de bits de funcionalidades, una marca de tiempo, el node_id, un rgb_color de 3 bytes, el alias de 32 bytes y las direcciones de red en las que el nodo acepta conexiones. Establecer el alias y el color es opcional; que el alias sea UTF-8 válido no lo es, y los bytes finales que no se usen deben ser cero.
Treinta y dos bytes son un presupuesto de bytes, no un número de caracteres. El campo contiene UTF-8 válido, así que un nombre en un sistema de escritura que gasta varios bytes por carácter admite menos letras que uno en alfabeto latino simple.
Cambiar de nombre es barato. Un nodo debe dar a cada marca de tiempo un valor mayor que el de la anterior, así que un nombre nuevo es solo un node_announcement nuevo que los pares aceptan en lugar del registro anterior y ponen en cola para volver a difundirlo. En el protocolo no hay registro, ni comisión, ni comprobación de unicidad.
El campo no es espacio publicitario gratuito. BOLT 7 ignora los anuncios de nodos que no estén ya asociados a un canal conocido, y ningún canal puede anunciarse hasta que su salida de financiación tenga seis confirmaciones, así que un nombre legible cuesta una transacción on-chain y capital bloqueado antes de que nadie lo retransmita.
BOLT 7 incluye una sección de seguridad escrita específicamente sobre los alias. Como los define el usuario, son un vector de inyección tanto al mostrarse como al almacenarse, así que se indica a los implementadores que los saneen antes de insertarlos en HTML o JavaScript y que usen sentencias preparadas al guardarlos. Al software que muestra uno también se le indica que insinúe su origen autofirmado.
Dónde aparece
Los alias de los nodos aparecen allí donde se dibuja el grafo de Lightning para una persona.
BOLT 7 permite que el software que recibe el anuncio use el alias y el rgb_color para referirse a los nodos en sus interfaces, y por eso un explorador del grafo o un selector de pares muestra un nombre en lugar de una clave. Un operador de enrutamiento se apoya en ello, ya que el node_id no es algo que nadie escriba dos veces.
Que usted tenga uno depende de lo que su billetera sea en realidad. Phoenix ejecuta un nodo Lightning real y autocontenido en el teléfono, así que tiene una clave de identidad y podría anunciar un nombre. Wallet of Satoshi, en modo con custodia, conserva las claves por usted, así que no hay ningún nodo suyo en el grafo ni nada que nombrar.
Nada de lo que usted paga o recibe depende del nombre: las facturas, las rutas y las aperturas de canal se basan todas en el node_id.
Alias del nodo frente a dirección Lightning
El alias del nodo nombra una máquina, mientras que la dirección Lightning nombra un lugar al que solicitar una factura. No se puede pagar a un alias: no lleva dominio, ni endpoint, ni monto, y nada en el protocolo lo resuelve en algo que se pueda pagar. La dirección Lightning hace el trabajo opuesto: se resuelve por HTTPS y entrega a su billetera una factura real.
Alias del nodo frente a ID corto de canal
El ID corto de canal es el localizador de ocho bytes de la salida de financiación de un canal, y BOLT 7 también permite que un par entregue un alias de ID corto de canal que ocupe su lugar. Ese segundo alias no comparte nada con el alias del nodo salvo la palabra. Un nodo puede enviar un mensaje channel_update para un canal que no se ha anunciado, con el campo short_channel_id igual a un alias que le proporcionó su par en lugar del real, y debe activar el indicador dont_forward y no retransmitir nunca esa actualización, por motivos de privacidad. Un alias es un nombre público que un nodo quiere que se vea; el otro, un sustituto privado de un número que un nodo quiere mantener oculto.