Spontaneous payments is the ability of one LN node to pay another node without receiving an invoice first.
The invoice used for regular LN payments contains a hash that the payer and each routing node uses as part of the Hash-Time-Locked-Contract. Spontaneous payments need to replicate this security mechanism but without the invoice mechanism for communication. At least two different mechanisms have been proposed for accomplishing this:
Add data to the routing packet: the person sending the payment chooses a hash pre-image, encrypts it to the receiver’s key, and appends it as extra data in the routing packet. When the payment arrives at the receiver, they can decrypt the data and use the pre-image to claim the payment.
Using a shared secret: the person sending the payment combines their key and the receiver’s key to create a shared secret. Then the spender uses a hash of this secret as the pre-image. The receiver can also generate a shared secret and can use it to accept the payment.
Optech newsletter and website mentions
- 2020-05-20 Breez wallet adds support for spontaneous payments
- 2020-05-20 Juggernaut uses spontaneous payments for messaging and instant payments”
- 2020-05-06 C-Lightning 0.8.2 released with a plugin for sending spontaneous payments
- 2020-04-22 C-Lightning #3611 adds a keysend plugin to support spontaneous payments
- 2020-02-05 Eclair 0.3.3 adds experimental support for trampoline payments
- 2019-06-19 Using ECDH for uncoordinated LN payments
2019-01-22 LND PR for spontaneous LN payments