Unidad 9 · Lección 9.4

Facturas BOLT 11

Unidad 9: Lightning Network · lección 4 de 6

Al terminar esta lección podrás

  • Leer en una factura el importe, la caducidad, el payment_hash y el nodo que cobra
  • Explicar por qué una factura no se debe pagar dos veces

Para cobrar por Lightning hay que pedir el pago con una factura. La más común sigue el estándar BOLT 11 y tiene esta pinta: lnbc2500u1p…. Es texto en Bech32, como las direcciones bc1, pero bastante más largo.

El principio se lee a simple vista. ln dice que es Lightning y bc, que es Bitcoin (en testnet sería tb). Después va el importe en BTC con un multiplicador: m son milésimas, u millonésimas, n milmillonésimas y p billonésimas. Así, 2500u son 0,0025 BTC, es decir, 250.000 sats. Si no hay importe, lo decide quien paga.

Detrás del separador 1 van la fecha y los campos. El más importante es el payment_hash: el SHA-256 de un secreto, la preimagen, que solo conoce quien cobra. Al cobrar tiene que revelarla, y esa preimagen es tu recibo. Están también el payment_secret, la descripción, cuánto tiempo vale (una hora si no dice nada) y, a veces, pistas de ruta o una dirección de la cadena de respaldo.

Al final va una firma del nodo que cobra. De ella se recupera su clave pública: es el nodo al que irá el pago. Si alguien cambiara el importe por el camino, de la firma saldría otro nodo, uno que no existe, y el pago fallaría. Pero la firma no dice que ese nodo sea el comercio que esperas. Si alguien te da una factura entera suya, firmada por su nodo, la firma cuadra igual. Por eso importa de dónde sacas la factura: de la pantalla del comercio o de su web, no de un mensaje que te llega de cualquier parte.

Una factura BOLT 11 es de un solo uso. Si se pagara dos veces, el segundo pago usaría el mismo payment_hash y cualquier nodo de la ruta que hubiera visto el primero podría quedarse con él. Para un identificador fijo, como una dirección de correo para cobrar propinas, existen Lightning Address y las ofertas de BOLT 12: por debajo, generan una factura nueva para cada pago.

Lee en Bitcoinpedia

Pruébalo

Decodificador de facturas LightningAbrir aparte
O pega una factura (lnbc…)

Una factura no lleva claves privadas, pero sí su payment_secret: no la publiques si no es para cobrar. Aquí se lee en tu navegador y no se paga ni se envía a ningún sitio.

Los ejemplos son los de la especificación BOLT 11, firmados con una clave de prueba conocida por todos y caducados desde 2017.

100 % local: nada sale de tu navegador
Actividad

Ejercicio de decodificación. Abre en el decodificador el ejemplo «Un café en 2017». Apunta el importe en sats, cuándo caduca la factura, su payment_hash y el nodo que cobra. Explica con tus palabras para qué sirve cada uno. Después abre «Donativo sin importe»: ¿quién decide cuánto se paga?

Piénsalo o escríbelo a mano. No guardamos lo que respondas.