mirror of
				https://github.com/ChristopherA/Learning-Bitcoin-from-the-Command-Line.git
				synced 2025-10-31 02:17:24 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			206 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			206 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # 20.2: Pagando um Invoice
 | |
| 
 | |
| > :information_source: **NOTA:** Esta seção foi adicionada recentemente ao curso e é um rascunho inicial que ainda pode estar aguardando revisão.
 | |
| 
 | |
| Neste capítulo, aprenderemos como pagar um invoice usando o comando `lightning-cli pay`. Presume-se que já sabemos como analisar um invoice, de acordo com a seção [§20.1](20_1_Generate_a_Payment_Request.md), e se ele é válido.
 | |
| 
 | |
| ## Verificando o Saldo
 | |
| 
 | |
| Obviamente, a primeira coisa que precisamos fazer é nos certificarmos de que possuímos fundos suficientes para pagar o invoice. Neste caso, o canal configurado anteriormente com `032a7572dc013b6382cde391d79f292ced27305aa4162ec3906279fc4334602543` contém 100.000 satoshis. Este será o canal de pagamento do invoice.
 | |
| 
 | |
| ```
 | |
| c$ lightning-cli --testnet listfunds
 | |
| {
 | |
|    "outputs": [
 | |
|       {
 | |
|          "txid": "66694d23ca15efe379e5f4a71d9be1a2d65e383b89ee3abe126ee36a12f23c1d",
 | |
|          "output": 1,
 | |
|          "value": 99847,
 | |
|          "amount_msat": "99847000msat",
 | |
|          "scriptpubkey": "00142fe02e5be9283e8c5bcb93ae61421baf8cb64f9c",
 | |
|          "address": "tb1q9lszuklf9qlgck7tjwhxzssm47xtvnuu4jslf8",
 | |
|          "status": "confirmed",
 | |
|          "blockheight": 1862856,
 | |
|          "reserved": false
 | |
|       }
 | |
|    ],
 | |
|    "channels": [
 | |
|       {
 | |
|          "peer_id": "032a7572dc013b6382cde391d79f292ced27305aa4162ec3906279fc4334602543",
 | |
|          "connected": true,
 | |
|          "state": "CHANNELD_NORMAL",
 | |
|          "short_channel_id": "1862856x29x0",
 | |
|          "channel_sat": 100000,
 | |
|          "our_amount_msat": "100000000msat",
 | |
|          "channel_total_sat": 100000,
 | |
|          "amount_msat": "100000000msat",
 | |
|          "funding_txid": "66694d23ca15efe379e5f4a71d9be1a2d65e383b89ee3abe126ee36a12f23c1d",
 | |
|          "funding_output": 0
 | |
|       }
 | |
|    ]
 | |
| }
 | |
| ```
 | |
| Se não tivermos fundos suficientes, precisamos criar um novo canal.
 | |
| 
 | |
| ## Pagando Nosso Invoice
 | |
| 
 | |
| Vamos usar o comando `lightning-cli pay` para pagar o invoice. Ele tentará encontrar uma rota para o destino fornecido, para posteriormente enviar os fundos solicitados. Isso é muito simples porque há um canal direto entre o pagador e o destinatário:
 | |
| ```
 | |
| c$ lightning-cli --testnet pay lntb100u1p0cwnqtpp5djkdahy4hz0wc909y39ap9tm3rq2kk9320hw2jtntwv4x39uz6asdr5ge5hyum5ypxyugzsv9uk6etwwssz6gzvv4shymnfdenjqsnfw33k76twypskuepqf35kw6r5de5kueeqveex7mfqw35x2gzrdakk6ctwvssxc6twv5hqcqzpgsp5a9ryqw7t23myn9psd36ra5alzvp6lzhxua58609teslwqmdljpxs9qy9qsq9ee7h500jazef6c306psr0ncru469zgyr2m2h32c6ser28vrvh5j4q23c073xsvmjwgv9wtk2q7j6pj09fn53v2vkrdkgsjv7njh9aqqtjn3vd
 | |
| {
 | |
|    "destination": "032a7572dc013b6382cde391d79f292ced27305aa4162ec3906279fc4334602543",
 | |
|    "payment_hash": "6cacdedc95b89eec15e5244bd0957b88c0ab58b153eee549735b995344bc16bb",
 | |
|    "created_at": 1602704828.948,
 | |
|    "parts": 1,
 | |
|    "msatoshi": 10000000,
 | |
|    "amount_msat": "10000000msat",
 | |
|    "msatoshi_sent": 10000000,
 | |
|    "amount_sent_msat": "10000000msat",
 | |
|    "payment_preimage": "1af4a9bb830e49b6bc8f0bef980630e189e3794ad1705f06ad1b9c71571dce0c",
 | |
|    "status": "complete"
 | |
| }
 | |
| ```
 | |
| Vamos observar que todos os valores estão em `msats`, não em `sats`!
 | |
| 
 | |
| ### Pagando o Invoice pela Lightning
 | |
| 
 | |
| No entanto, _não_ precisamos ter um canal com um node para pagá-lo. Só precisamos ter uma rota razoável pela Lightning Network.
 | |
| 
 | |
| Imagine que recebemos esta minúscula solicitação de pagamento de 11.111 msat:
 | |
| ```
 | |
| c$ lightning-cli --testnet decodepay lntb111110p1p0cw43ppp5u0ngjytlw6ywec3x784jale4xd7h058g9u4mthcaf9rl2f7g8zxsdp2t9hh2gr0wajjqmt9ypnx7u3qv35kumn9wgs8gmm0yyxqyjw5qcqp2sp5kj4xhrthmfgcgyl84zaqpl9vvdjwm5x368kr09fu5nym74setw4s9qy9qsq8hxjr73ee77vat0ay603e4w9aa8ag9sa2n55xznk5lsfrjffxxdj2k0wznvcfa98l4a57s80j7dhg0cc03vwqdwehkujlzxgm0xyynqqslwhvl
 | |
| {
 | |
|    "currency": "tb",
 | |
|    "created_at": 1602704929,
 | |
|    "expiry": 604800,
 | |
|    "payee": "02f3d74746934494fa378235e5bc44cfdbb5b8779d839263fb7f9218be032f6f61",
 | |
|    "msatoshi": 11111,
 | |
|    "amount_msat": "11111msat",
 | |
|    "description": "You owe me for dinner too!",
 | |
|    "min_final_cltv_expiry": 10,
 | |
|    "payment_secret": "b4aa6b8d77da518413e7a8ba00fcac6364edd0d1d1ec37953ca4c9bf56195bab",
 | |
|    "features": "028200",
 | |
|    "payment_hash": "e3e689117f7688ece226f1eb2eff35337d77d0e82f2bb5df1d4947f527c8388d",
 | |
|    "signature": "304402203dcd21fa39cfbcceadfd269f1cd5c5ef4fd4161d54e9430a76a7e091c929319b02202559ee14d984f4a7fd7b4f40ef979b743f187c58e035d9bdb92f88c8dbcc424c"
 | |
| }
 | |
| ```
 | |
| Se tentássemos pagar e não tivéssemos uma rota para o destinatário por meio da Lightning Network, poderíamos esperar um erro como este:
 | |
| ```
 | |
| c$ lightning-cli --testnet pay lntb111110p1p0cw43ppp5u0ngjytlw6ywec3x784jale4xd7h058g9u4mthcaf9rl2f7g8zxsdp2t9hh2gr0wajjqmt9ypnx7u3qv35kumn9wgs8gmm0yyxqyjw5qcqp2sp5kj4xhrthmfgcgyl84zaqpl9vvdjwm5x368kr09fu5nym74setw4s9qy9qsq8hxjr73ee77vat0ay603e4w9aa8ag9sa2n55xznk5lsfrjffxxdj2k0wznvcfa98l4a57s80j7dhg0cc03vwqdwehkujlzxgm0xyynqqslwhvl
 | |
| {
 | |
|    "code": 210,
 | |
|    "message": "Ran out of routes to try after 11 attempts: see `paystatus`",
 | |
|    "attempts": [
 | |
|       {
 | |
|          "status": "failed",
 | |
|          "failreason": "Error computing a route to 02f3d74746934494fa378235e5bc44cfdbb5b8779d839263fb7f9218be032f6f61: \"Could not find a route\" (205)",
 | |
|          "partid": 1,
 | |
|          "amount": "11111msat"
 | |
|       },
 | |
| ...
 | |
| ```
 | |
| Mas e se um host com o qual tínhamos um canal aberto é o destinatário pretendido?
 | |
| 
 | |
| Nesse caso, quando formos pagar a fatura, ele _automaticamente funcionará_!
 | |
| ```
 | |
| c$ lightning-cli --testnet pay lntb111110p1p0cw43ppp5u0ngjytlw6ywec3x784jale4xd7h058g9u4mthcaf9rl2f7g8zxsdp2t9hh2gr0wajjqmt9ypnx7u3qv35kumn9wgs8gmm0yyxqyjw5qcqp2sp5kj4xhrthmfgcgyl84zaqpl9vvdjwm5x368kr09fu5nym74setw4s9qy9qsq8hxjr73ee77vat0ay603e4w9aa8ag9sa2n55xznk5lsfrjffxxdj2k0wznvcfa98l4a57s80j7dhg0cc03vwqdwehkujlzxgm0xyynqqslwhvl
 | |
| {
 | |
|    "destination": "02f3d74746934494fa378235e5bc44cfdbb5b8779d839263fb7f9218be032f6f61",
 | |
|    "payment_hash": "e3e689117f7688ece226f1eb2eff35337d77d0e82f2bb5df1d4947f527c8388d",
 | |
|    "created_at": 1602709081.324,
 | |
|    "parts": 1,
 | |
|    "msatoshi": 11111,
 | |
|    "amount_msat": "11111msat",
 | |
|    "msatoshi_sent": 12111,
 | |
|    "amount_sent_msat": "12111msat",
 | |
|    "payment_preimage": "ec7d1b28a7b877cd92b83be396899e8bfc3ecb0b4f944f65afb4be7d0ee72617",
 | |
|    "status": "complete"
 | |
| }
 | |
| ```
 | |
| Essa é a verdadeira beleza da Lightning Network: sem nenhum esforço dos participantes ponto a ponto, nossos canais individuais se tornam uma rede!
 | |
| 
 | |
| > :book: ***Como funcionam os pagamentos na rede?*** Digamos que o node A tem um canal aberto com o node B, o node B tem um canal aberto com o node C e o node A recebe uma fatura do node C de 11.111 msat. O node A paga ao node B 11.111 msat, mais uma pequena taxa, e então o node B paga 11.111 msat ao node C. Muito fácil. Mas lembre-se de que todos os canais são, na verdade, apenas registros de quem é o proprietário e de quanto é a Transação de Financiamento. Então o que realmente acontece é 11.111 msat da Transação de Financiamento no canal AB muda de A para B e, em seguida, 11.111 msat da Transação de Financiamento no canal BC muda de B para C. Isso significa que duas coisas são necessárias para que este pagamento funcione: primeiro, cada canal deve ter capacidade suficiente para o pagamento; e segundo, o pagador em cada canal deve possuir o suficiente da capacidade para fazer o pagamento.
 | |
| 
 | |
| Observe que, neste exemplo, 12.111 msat foram enviados para pagar uma fatura de 11.111 msat: o extra sendo uma taxa fixa muito pequena (não uma porcentagem) que foi paga ao intermediário.
 | |
| 
 | |
| ## Verificando Nosso Saldo
 | |
| 
 | |
| Após efetuar um pagamento com sucesso, veremos que nossos fundos foram alterados corretamente.
 | |
| 
 | |
| Aqui está a aparência dos fundos para o node pagador após o pagamento inicial de 10.000 satoshis:
 | |
| ```
 | |
| c$ lightning-cli --testnet listfunds
 | |
| {
 | |
|    "outputs": [
 | |
|       {
 | |
|          "txid": "66694d23ca15efe379e5f4a71d9be1a2d65e383b89ee3abe126ee36a12f23c1d",
 | |
|          "output": 1,
 | |
|          "value": 99847,
 | |
|          "amount_msat": "99847000msat",
 | |
|          "scriptpubkey": "00142fe02e5be9283e8c5bcb93ae61421baf8cb64f9c",
 | |
|          "address": "tb1q9lszuklf9qlgck7tjwhxzssm47xtvnuu4jslf8",
 | |
|          "status": "confirmed",
 | |
|          "blockheight": 1862856,
 | |
|          "reserved": false
 | |
|       }
 | |
|    ],
 | |
|    "channels": [
 | |
|       {
 | |
|          "peer_id": "032a7572dc013b6382cde391d79f292ced27305aa4162ec3906279fc4334602543",
 | |
|          "connected": true,
 | |
|          "state": "CHANNELD_NORMAL",
 | |
|          "short_channel_id": "1862856x29x0",
 | |
|          "channel_sat": 90000,
 | |
|          "our_amount_msat": "90000000msat",
 | |
|          "channel_total_sat": 100000,
 | |
|          "amount_msat": "100000000msat",
 | |
|          "funding_txid": "66694d23ca15efe379e5f4a71d9be1a2d65e383b89ee3abe126ee36a12f23c1d",
 | |
|          "funding_output": 0
 | |
|       }
 | |
|    ]
 | |
| }
 | |
| ```
 | |
| Observe que a capacidade do canal permanece em 100.000 satoshis (isso nunca irá mudar!), mas que o `our_amount` agora é de apenas 90.000 satoshis (ou 90.000.000 msat).
 | |
| 
 | |
| Depois de pagar a segunda fatura, de 11.111 msat, os fundos mudam novamente:
 | |
| ```
 | |
| $ lightning-cli --testnet listfunds
 | |
| {
 | |
|    "outputs": [
 | |
|       {
 | |
|          "txid": "66694d23ca15efe379e5f4a71d9be1a2d65e383b89ee3abe126ee36a12f23c1d",
 | |
|          "output": 1,
 | |
|          "value": 99847,
 | |
|          "amount_msat": "99847000msat",
 | |
|          "scriptpubkey": "00142fe02e5be9283e8c5bcb93ae61421baf8cb64f9c",
 | |
|          "address": "tb1q9lszuklf9qlgck7tjwhxzssm47xtvnuu4jslf8",
 | |
|          "status": "confirmed",
 | |
|          "blockheight": 1862856,
 | |
|          "reserved": false
 | |
|       }
 | |
|    ],
 | |
|    "channels": [
 | |
|       {
 | |
|          "peer_id": "032a7572dc013b6382cde391d79f292ced27305aa4162ec3906279fc4334602543",
 | |
|          "connected": true,
 | |
|          "state": "CHANNELD_NORMAL",
 | |
|          "short_channel_id": "1862856x29x0",
 | |
|          "channel_sat": 89987,
 | |
|          "our_amount_msat": "89987000msat",
 | |
|          "channel_total_sat": 100000,
 | |
|          "amount_msat": "100000000msat",
 | |
|          "funding_txid": "66694d23ca15efe379e5f4a71d9be1a2d65e383b89ee3abe126ee36a12f23c1d",
 | |
|          "funding_output": 0
 | |
|       }
 | |
|    ]
 | |
| }
 | |
| ```
 | |
| O `our_amount` agora é de apenas 89.987 satoshis, tendo pago 11.111 msat mais uma taxa de 1.000 msat.
 | |
| 
 | |
| ## Resumo: Pagando um Invoice
 | |
| 
 | |
| Depois de recebermos um invoice, é fácil pagar com um único comando na Lightning. Mesmo se não tivermos um canal para o destinatário, o pagamento é simples, desde que haja uma rota entre nós e o node de destino.
 | |
| 
 | |
| ## O Que Vem Depois?
 | |
| 
 | |
| Vamos continuar "Usando a Lightning" na seção [§20.3: Fechando um Canal Lightning](20_3_Closing_a_Channel.md). |