mirror of
https://github.com/ChristopherA/Learning-Bitcoin-from-the-Command-Line.git
synced 2025-06-07 16:06:26 +00:00
Update 19_1_Generate_a_Payment_Request.md
This commit is contained in:
parent
2ea77bb500
commit
77b2dbdc00
@ -10,12 +10,19 @@ For this example we've created a second lightning node using LND implementation
|
|||||||
|
|
||||||
Almost all payments made on the Lightning Network require an invoice, which is nothing more than a **request for payment** made by the recipient of the money and sent by different means to the user who will pay. The format for a Lightning invoice uses bech32 encoding, which is already used for Bitcoin Segregated Witness and all payment requests are single use.
|
Almost all payments made on the Lightning Network require an invoice, which is nothing more than a **request for payment** made by the recipient of the money and sent by different means to the user who will pay. The format for a Lightning invoice uses bech32 encoding, which is already used for Bitcoin Segregated Witness and all payment requests are single use.
|
||||||
|
|
||||||
An invoice is made up of two parts, one is human readable and other is
|
An invoice is made up of two parts, one is human readable and other is data part.
|
||||||
|
|
||||||
- Human readable part: `ln` + (`lnbc` for Bitcoin mainnet, `lntb` for Bitcoin testnet, and `lnbcrt` for Bitcoin regtest) + data amount
|
- Human readable part: `ln` + (`lnbc` for Bitcoin mainnet, `lntb` for Bitcoin testnet, and `lnbcrt` for Bitcoin regtest) + data amount
|
||||||
|
|
||||||
- Data part : UNIX Timestamp + tagged parts include a payment hash, the pubkey of the payee node, an optional description of the payment, an expiration time, and some extra routing information.
|
- Data part : UNIX Timestamp + tagged parts include a payment hash, the pubkey of the payee node, an optional description of the payment, an expiration time, and some extra routing information.
|
||||||
|
|
||||||
|
1. Destination: The public key of the person receiving the LN payment.
|
||||||
|
2. payment_hash: The hash of the preimage that is used to lock the payment. You can only redeem a locked payment with the corresponding preimage to the payment hash. This enables routing on the Lightning Network without trusted third parties creating a conditional payment to be filled.
|
||||||
|
3. num_satoshis: The amount of satoshis to be paid.
|
||||||
|
4. expiry: Time when your node marks the invoice as invalid. Default is 1 hour or 3600 seconds.
|
||||||
|
5. timestamp: Time when the invoice was created. This is measured in seconds since 1970.
|
||||||
|
6. cltv_expiry: Delta to use for time-lock of CLTV extended to the final hop.
|
||||||
|
|
||||||
> :book: ***Conditional payments.
|
> :book: ***Conditional payments.
|
||||||
|
|
||||||
As we said in Setting a channel chapter and although the channels are created between two participants, the channels can be connected to each other forming a payment network to allow payments between all the network participants without having a direct channel between them using an smart contract called **Hashed Time Locked Contract**.
|
As we said in Setting a channel chapter and although the channels are created between two participants, the channels can be connected to each other forming a payment network to allow payments between all the network participants without having a direct channel between them using an smart contract called **Hashed Time Locked Contract**.
|
||||||
@ -105,7 +112,20 @@ lnd$ lncli -n testnet getinfo
|
|||||||
|
|
||||||
### Generate a Payment request.
|
### Generate a Payment request.
|
||||||
|
|
||||||
Now you can create a payment request using `lnd$lncli -n testnet addinvoice` command. You can use --amt argument to indicate amount to be payed and add a description using --memo argument.
|
To create a new invoice on c-lightning you should use invoice `lightning-cli --network=testnet invoice` command.
|
||||||
|
It receives amount expresed on milisatoshis and description invoices texts.
|
||||||
|
|
||||||
|
```
|
||||||
|
c$ lightning-cli --network=testnet invoice 100000 test22 test22
|
||||||
|
{
|
||||||
|
"payment_hash": "743487bca87bb39a8f07314864e80d02f7686d97693ada32c69ee3a5e06132f7",
|
||||||
|
"expires_at": 1600684714,
|
||||||
|
"bolt11": "lntb1u1p047jp2pp5ws6g009g0wee4rc8x9yxf6qdqtmksmvhdyad5vkxnm36tcrpxtmsdq2w3jhxapjxgxqyjw5qcqp2sp5s3pyvvknhnaej6ukssvxlwc4sdqpcc2prrwue8jreke587ms68qq9qy9qsqhf5uhxk0mfw3sl87ukx8e5d757pkla6zlyu07p0wc666juzm5unhlaxeqmnl8f7v7vs3wz2thme9szs3f7whzr9uewz0kexqkl9jxgsq5r752l",
|
||||||
|
"warning_offline": "No channel with a peer that is currently connected has sufficient incoming capacity"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
For this example we'll create a payment request using `lnd$lncli -n testnet addinvoice` command. You can use --amt argument to indicate amount to be payed and add a description using --memo argument.
|
||||||
|
|
||||||
```
|
```
|
||||||
lnd$ lncli -n testnet addinvoice --amt 100000 --memo "First LN Payment - Learning Bitcoin and Lightning from the Command line."
|
lnd$ lncli -n testnet addinvoice --amt 100000 --memo "First LN Payment - Learning Bitcoin and Lightning from the Command line."
|
||||||
|
Loading…
x
Reference in New Issue
Block a user