Lightning Network: pague una factura de Bolt11 en varios pagos

¿Hay alguna forma de pagar una factura de Bolt 11 en varios pagos con Lightning Network?

Por ejemplo, el monto total de esta factura a pagar es 5000 satoshi:

lnbc50u1pwsyhx9pp57ppqvzwex3qapu0wn63v06jzxqdtt46qypks4pnexwrr2ansz9msdqcgejhxctzd9kxjare23jhxap3cqzysxqy2ljqd47a9cdlnj84cy0a0zg7frd8jnera8fen2du6d2g500wzs7mpsmpqe0c3ddhrrxpehyhj4c9fwj3cfr5mvyxcyaaq98fw39jketl89cq0j9hy2

En este caso, ¿podemos pagar 2 veces 2500 satoshi y luego obtener el secreto (preimagen) solo después de recibir el pago completo ?

Me di cuenta de que en el cliente LND con lncli sendpayment y c-lightning client con los comandos lightning-cli pay hay un parámetro de cantidad en satoshi.

Respuestas (1)

Actualmente no. El receptor rechazará un intento por menos de la cantidad solicitada y fallará con incorrect_or_unknown_payment_details.

Cada factura tiene a la payment_hashque corresponde un pago, y el hash de pago se genera a partir de un archivo payment_preimage. Esto preimagedebe ser único para cada pago, de lo contrario, es posible que cualquier parte a lo largo de la ruta de un pago tome dinero sin reenviar el pago.

Cuando el beneficiario recibe el monto total de un pago, libera al payment_preimagepenúltimo salto en la ruta, quien luego elimina el HTLC de su canal y el pago se completa. El penúltimo salto luego reenvía al payment_preimagesalto anterior, y así sucesivamente, hasta que llega al pagador.

Puede ver que, si solo se realizó la mitad del pago, todos los participantes a lo largo de la ruta ya tendrían conocimiento del payment_preimage. Si intentó pagar nuevamente con el mismo correo electrónico payment_hash, cualquier salto en esa ruta podría eliminar instantáneamente el HTLC y tomar el pago utilizando el que payment_preimageya conocen, sin reenviar el pago al próximo salto.

Se está trabajando para permitir que los pagos se dividan y se envíen a lo largo de múltiples rutas, y el beneficiario solo entregará el pago payment_preimagesi se recibe el monto total de todas las rutas. Esto se conoce como AMP (Atomic Multi-path Payments). Hay múltiples propuestas para esto que se han discutido en la lista de correo.

Se agregó una aclaración en la pregunta. La idea es enviar pagos múltiples hasta alcanzar el monto total especificado en la factura. Luego (solo entonces) ¿devolver la preimagen? ¿Hay algún plan en la especificación en este asunto?
Nada actualmente en la especificación con respecto a esto. Hay propuestas para llevar AMP a la especificación 1.1. Comience aquí para ver la propuesta original de AMP.
Esta idea de retrasar el envío de la preimagen se llama BASE AMP IIRC y ya se puede hacer manualmente (no hay nada en el protocolo para evitarlo), pero no hay compatibilidad con la interfaz de usuario en ninguna de las implementaciones AFAIK. LND podría tener algún soporte preliminar allí, porque usan la misma técnica en otros casos de uso y lo llaman factura HODL. Tenga en cuenta que Base AMP es realmente un nombre inapropiado porque ya no es atómico. Solo una parte del pago podría tener éxito.