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
- Eclair 0.4.2 adds support for keysend-style spontaneous payments
- Eclair #1485 adds support for keysend spontaneous payments
- Zap 0.7.0 Beta adds support for spontaneous payments
- C-Lightning #3792 adds support for sending keysend spontaneous payments
- LND #4167 allows spontaneous payments made using keysend to be held
- Juggernaut uses spontaneous payments for messaging and instant payments”
- Breez wallet adds support for spontaneous payments
- C-Lightning 0.8.2 released with a plugin for sending spontaneous payments
- C-Lightning #3611 adds a keysend plugin to support spontaneous payments
- Eclair 0.3.3 adds experimental support for trampoline payments