Improving payment UX with low-latency route probing



Summary:

Sending payments that remain pending can be a significant challenge for Lightning Network (LN) and a source of complaints from users. It is not always easy to investigate why payments are not fulfilled quickly, but intermediate nodes can sometimes be stuck waiting for a revocation, and recipients may take a long time to reply with a payment preimage. One potential solution is to disconnect from a node that is taking too long to send a revocation and reconnect immediately to the same node. This would allow pending downstream Hashed Time-Locked Contracts (HTLCs) to be forgotten and their corresponding upstream HTLCs to fail.Another possible solution is to use probing with short timeout requirements. Before sending the actual payment, a "blank" probe request could be sent along the same route. This request would be similar to a payment request but with additional requirements that if the next node in the route does not reply within the timeout period, then the current node will immediately send back an error message. The probe request could include the same amounts and fee constraints as the actual payment request or include no amount information, in which case it would just try to "ping" every node on the route.To implement this solution, a "0 satoshi" payment request could be generated by the receiving node along with the real one. The sender would first try to "pay" the "0 satoshi" request using the route computed with the actual payment parameters. Not using the actual amount and fees means that the actual payment could fail because of capacity issues, but as long as this happens quickly, it should still be much better than "stuck" payments. Although this solution would not help if a node decides to misbehave, it would not make things worse than they currently are.


Updated on: 2023-05-25T14:58:57.850747+00:00