|
| 1 | +--- |
| 2 | +description: >- |
| 3 | + Learn how to send messages to anyone in the Lightning Network from the command |
| 4 | + line |
| 5 | +--- |
| 6 | + |
| 7 | +# Send messages with keysend |
| 8 | + |
| 9 | +Keysend allows users in the Lightning network to send payments to others , directly to their public key, as long as their node has public channels and has keysend enabled. Keysend does not require the payee to issue an invoice. |
| 10 | + |
| 11 | +This payment type can also be used to attach messages and other data. |
| 12 | + |
| 13 | +Keysend is currently implemented in LND in two ways, the widely accepted “`--keysend`” and the newer “[`--amp`](amp.md)” |
| 14 | + |
| 15 | +## Enable your node to receive keysend |
| 16 | + |
| 17 | +To make sure you are able to receive spontaneous payments, add the following lines to your `lnd.conf` file: |
| 18 | + |
| 19 | +`accept-amp=1`\ |
| 20 | +`accept-keysend=true` |
| 21 | + |
| 22 | +Then restart your node with `lncli stop` and `lnd`. |
| 23 | + |
| 24 | +If you want to accept spontaneous payments using AMP, you may also create an invoice with routing hints and distribute it to prospective payers. You can use the command: |
| 25 | + |
| 26 | +`lncli addinvoice –amp` |
| 27 | + |
| 28 | +You can optionally also specify an amount (`--amt`), expiry (`--expiry`), a memo (`--memo`) routing hints are needed if your node only has private channels (`--private`). |
| 29 | + |
| 30 | +## Send a spontaneous payment |
| 31 | + |
| 32 | +To send a spontaneous payment, you can craft a command like this: |
| 33 | + |
| 34 | +`lncli sendpayment --dest <destination public key> --amt <amount> --keysend` |
| 35 | + |
| 36 | +or using AMP (recommended): |
| 37 | + |
| 38 | +`lncli sendpayment --dest <destination public key> --amt <amount> --amp` |
| 39 | + |
| 40 | +### Paying AMP invoices |
| 41 | + |
| 42 | +If the payee has a private node without public channels, they can create an AMP invoice and include routing hints as explained above. The payer can then pay this invoice with the command: |
| 43 | + |
| 44 | +`lncli payinvoice <invoice>` |
| 45 | + |
| 46 | +If an amount is not set in the invoice, it can be set by the payer with  |
| 47 | + |
| 48 | +`lncli payinvoice <invoice> –amt <amount>` |
| 49 | + |
| 50 | +## Send a message to other nodes |
| 51 | + |
| 52 | +You can include messages into your spontaneous payments with the `–data` flag. It must follow the convention `<record_id>=<hex_value>,<record_id>=<hex_value>,..` |
| 53 | + |
| 54 | +Messages are typically sent with the record ID `34349334`. You can find a registry for such records [here](https://github.com/satoshisstream/satoshis.stream/blob/main/TLV\_registry.md). You may also submit your own suggestions. |
| 55 | + |
| 56 | +You can encode any data in hex, either using your favorite command line or web tool. |
| 57 | + |
| 58 | +The phrase “`Happy Genesis Block Day!`” becomes `48617070792047656E6573697320426C6F636B2044617921` |
| 59 | + |
| 60 | +The full command below will send this message together with 10 satoshis to [Amboss.space](https://amboss.space), where it is displayed publicly. |
| 61 | + |
| 62 | +`lncli sendpayment --dest 03006fcf3312dae8d068ea297f58e2bd00ec1ffe214b793eda46966b6294a53ce6 --amt 10 --data 34349334=48617070792047656E6573697320426C6F636B2044617921 --keysend` |
| 63 | + |
| 64 | +If the payee has created an AMP invoice, the data can also be appended to the command: |
| 65 | + |
| 66 | +lncli payinvoice \<invoice> --data 34349334=486170707920477265676F7269616E204E6577205965617220746F2065766572796F6E65206174204C696768746E696E67204C61627321 |
0 commit comments