Glosario / Lightning y capa 2
Expiración de la factura
- ¿Qué es la expiración de la factura?
- La expiración de la factura es el campo x de una solicitud de pago BOLT11, un número de segundos contados desde la propia marca de tiempo de la factura, tras el cual tanto el pagador como el beneficiario deberían rechazarla.
Toda factura Lightning lleva un plazo, y la cuenta regresiva empieza en el momento en que se firmó la factura, no en el momento en que le llegó a usted. Si no hay un campo x, el valor predeterminado es de 3600 segundos, una hora. Así que una factura que pasó la mayor parte de esa hora en un hilo de chat puede fallar minutos después de llegarle, sin ninguna razón visible.
Cómo funciona
La expiración de la factura viaja como el campo etiquetado de tipo 6, escrito con la letra x, que lleva un recuento de segundos en big endian.
Una cadena de caracteres BOLT11 empieza con una marca de tiempo de 35 bits que cuenta los segundos desde el 1 de enero de 1970 UTC, seguida de los campos etiquetados y luego de una firma. La expiración es uno de esos campos y es relativa: el plazo es esa marca de tiempo más la expiración, así que nada en la factura indica una hora legible. BOLT11 indica al pagador que no intente un pago una vez rebasada esa suma, y al beneficiario que tampoco acepte ninguno.
Ambas instrucciones son un SHOULD y no un MUST, así que una factura expirada no está criptográficamente muerta. El hash de pago sigue funcionando; lo que detiene el pago es la política de ambos extremos, no un bloqueo. Su billetera se niega a intentarlo, y un nodo que haya descartado la preimagen no podría liquidarlo de todos modos.
El valor se empaqueta en grupos de cinco bits y debe usar la longitud más corta en la que quepa, sin grupos de ceros a la izquierda. Los propios ejemplos de la especificación muestran el rango: 60 segundos ocupan dos grupos, que se escriben pu, y 604800 segundos ocupan cuatro, que se escriben jw5q. Un codificador que rellena el campo no es solo descuidado: se indica a los lectores de la factura que traten como no válida una factura con un campo x, c o 9 no mínimo.
Nadie puede prolongar una factura una vez emitida. La firma cubre el prefijo legible por humanos y toda la parte de datos, así que editar un solo carácter de la expiración la rompe. Un comerciante que quiera darle más tiempo debe emitir una nueva solicitud y volver a firmarla.
El valor predeterminado de una hora no se eligió al azar: la justificación de la especificación dice que deja tiempo para pagar on-chain en su lugar, mediante la dirección alternativa que puede llevar el campo f.
Dónde aparece
La expiración de la factura aparece como el anillo de cuenta regresiva alrededor de un código QR, como una línea con la etiqueta expiry en cualquier decodificador y como el rechazo que da una billetera cuando usted pega algo obsoleto.
Los vectores de prueba de la especificación muestran los dos extremos del rango. Una factura por 2500 microbitcoin descrita como 1 cup coffee establece la expiración en 60 segundos, porque asegura un precio de tres dólares en el mostrador. Una factura de la Blockstream Store, por 88,85 USD en productos que incluyen un Ledger Nano S, la establece en 604800 segundos, siete días, porque la confirmación de un pedido es una cuenta por pagar y no un mostrador.
Dónde se crea la factura decide quién eligió la cifra. Phoenix, reseñada en este sitio, ejecuta un nodo Lightning real en el teléfono en lugar de una cuenta en un servidor, así que la expiración de una solicitud para recibir es la configuración de su propio nodo. Con una aplicación con custodia, la cifra la pone el operador, y decodificar una de sus facturas suele ser la única forma de conocerla.
Expiración de la factura frente a delta de expiración CLTV
La expiración de la factura y la delta de expiración CLTV son dos relojes de un pago Lightning, y funcionan en unidades distintas sobre mitades distintas del problema.
La expiración de la factura se mide en segundos de hora real contados desde la marca de tiempo de la factura, y decide si el pago puede siquiera intentarse. Una delta de expiración CLTV se mide en bloques, y el campo c de la misma factura lleva el mínimo del destinatario para el último salto, que el pagador debe considerar de al menos 18 bloques cuando el campo no está presente. Una le dice si empezar; la otra, cuánto tiempo puede quedar bloqueado su dinero en un HTLC después de haber empezado.