Glosario / Lightning y capa 2
Factura BOLT11
También se conoce como Factura Lightning o BOLT 11.
- ¿Qué es una factura BOLT11?
- Una factura BOLT11 es la larga cadena de caracteres que empieza por lnbc y que una billetera Lightning genera para solicitar un pago; codifica el monto, un hash de pago, una expiración y una firma.
Todo pago Lightning parte de una de estas facturas. La factura fija un hash de pago de 256 bits que solo el destinatario puede desbloquear, y expira al cabo de una hora salvo que el emisor indique otra cosa, y por eso una captura de pantalla de un código QR antiguo no sirve de nada. Pagar una es seguro en el sentido de que el dinero o bien llega al nodo indicado, o bien vuelve a usted.
Cómo funciona
Una factura BOLT11 es un código bech32 con un prefijo que indica la red y un cuerpo formado por campos etiquetados.
El prefijo, llamado parte legible por humanos, es lnbc en la mainnet, lntb en la testnet, lntbs en la signet y lnbcrt en la regtest. Justo después viene el monto, escrito como un número más una letra multiplicadora: m para milésimas de bitcoin, u para millonésimas, n para milmillonésimas y p para billonésimas. Así, lnbc2500u pide 0,0025 bitcoin. Si se omite el monto por completo, se obtiene una factura abierta que completa el pagador.
El cuerpo es una secuencia de campos etiquetados, cada uno formado por una etiqueta de un solo carácter, una longitud y un valor. Dos son obligatorios: el hash de pago, etiqueta p, 256 bits escritos como 52 caracteres bech32, y el secreto de pago, etiqueta s, otros 52 caracteres que el pagador debe repetir en la carga útil cebolla final. El BOLT 11 indica a quien escribe la factura que incluya exactamente uno de cada uno, y a quien la lee que haga fallar el pago de inmediato si no hay ningún campo s válido. Después vienen los opcionales: una descripción o, para descripciones largas, un hash de la descripción; una expiración, de 3600 segundos por defecto; una delta de expiración CLTV final mínima, de 18 bloques por defecto, que es el margen de seguridad que el destinatario quiere en el último salto; un ID de nodo del beneficiario; una dirección on-chain alternativa; y route hints (pistas de ruta) que indican al pagador cómo llegar a un nodo cuyos canales no están anunciados.
Todo el conjunto va firmado. La firma ocupa 520 bits, un valor de 64 bytes más un byte de recuperación, y eso es lo que permite a una billetera derivar el destino del pago a partir de la factura aunque no haya ningún campo de ID de nodo. Al final va una suma de comprobación bech32 de seis caracteres, de modo que un carácter mal escrito se detecta en lugar de enviar dinero a ninguna parte.
El hash de pago es el mecanismo que convierte una factura en algo más que un archivo de texto. El destinatario genera una preimagen aleatoria, calcula su hash y lo pone en la factura. Cada salto de la ruta bloquea en ese mismo hash el monto que reenvía, y solo revelar la preimagen libera el dinero. Por eso un pago liquidado deja al pagador con una preimagen cuyo hash coincide con el de la factura, un recibo criptográfico que ningún comerciante puede negar de forma verosímil.
Por qué importa cuando compra bitcoin
En la factura es donde se cometen varios errores evitables cuando usted retira fondos de un exchange.
El primero es la expiración. Los procesos de retiro de un exchange pueden tardar minutos, y una factura generada al comienzo de un proceso lento puede haber expirado para cuando se pague. Si un retiro por Lightning falla sin una razón evidente, vuelva a generar la factura en su billetera antes de suponer que el fallo es del exchange. El valor predeterminado es una hora, pero las billeteras que esperan pagos rápidos suelen establecerlo en diez o quince minutos.
El segundo es el monto. Una factura que incluye un monto solo puede pagarse por ese monto, que es justo lo que usted quiere, porque elimina la posibilidad de escribir un cero de más. Una factura sin monto, a veces llamada factura abierta o de monto cero, es cómoda para donaciones y peligrosa en un proceso de retiro. Prefiera la versión con la cifra ya incluida.
El tercero es la reutilización. Una factura BOLT11 es de un solo uso por diseño. Publicar una en una página de donaciones significa que el pago del segundo donante o bien falla o bien, si el sistema que recibe el pago está mal construido, vuelve a pagar el hash del primer donante. Ese es precisamente el problema que las ofertas BOLT12 se diseñaron para resolver, y por eso esa especificación se integró en el estándar Lightning en septiembre de 2024, el primer BOLT nuevo desde 2017. Hasta que tanto su billetera como su contraparte admitan las ofertas, una dirección Lightning es la forma práctica de publicar un destino reutilizable.
Por último, compruebe que el exchange realmente admite Lightning antes de hacer planes contando con ello. Strike, reseñado en este sitio, admite retiros tanto por Lightning como on-chain. Muchas de las plataformas de nuestra comparativa de exchanges no lo admiten, y en ellas la forma más barata de mover montos pequeños es no moverlos a menudo.
Leer una factura campo por campo
Al desmontar una factura corta, deja de parecer ruido.
Un código que empieza por lnbc1500n ya le dice dos cosas antes de decodificar nada: es una factura de la mainnet y pide 1500 nanobitcoin, es decir, 0,0000015 bitcoin, o 150 satoshis. Lo que sigue es una marca de tiempo y después los campos etiquetados. Un campo d lleva una descripción breve como "table 4"; un campo x de 600 establecería la expiración en diez minutos en lugar de la hora predeterminada; un campo c cambiaría la delta CLTV final de 18 bloques si el destinatario quiere un margen de seguridad mayor.
Si el nodo del destinatario no tiene canales públicos, un campo r lleva un route hint: el ID de nodo de un par bien conectado, el ID corto de canal que debe usarse, y la comisión y la delta de ese par. Sin él, su billetera consultaría el grafo público, no vería ninguna ruta y se rendiría. Por eso las facturas de las billeteras móviles suelen ser notablemente más largas que las de los grandes nodos públicos.
Factura BOLT11 frente a URI de Bitcoin
Una factura BOLT11 es una solicitud de pago Lightning; un URI de Bitcoin es una solicitud de pago on-chain. La forma URI, bitcoin: seguido de una dirección y parámetros opcionales, apunta a la blockchain y puede pagarse desde cualquier billetera, cualquier número de veces y por cualquier monto. Una factura apunta a un nodo, expira y está pensada para pagarse una sola vez. Cada vez más billeteras muestran un código QR unificado que lleva ambos, para que el pagador elija, pero las dos cargas útiles son estándares distintos con modos de fallo distintos.
Factura BOLT11 frente a dirección Lightning
Una factura BOLT11 es la solicitud de pago en sí; una dirección Lightning es una forma de ir a buscar una. Escribir una dirección como you@example.com en una billetera desencadena una solicitud HTTPS a ese dominio, que responde con una factura BOLT11 recién generada por el monto que usted eligió. La dirección es reutilizable y legible por humanos porque no es en absoluto una solicitud de pago: es un puntero a un servidor que acuñará una bajo demanda.