Glossário / Lightning e camada 2
Fatura BOLT11
Outros nomes: Fatura Lightning, BOLT 11.
- O que é uma fatura BOLT11?
- Uma fatura BOLT11 é a longa sequência de caracteres que começa com lnbc e que uma carteira Lightning gera para solicitar um pagamento, codificando o valor, um hash de pagamento, uma expiração e uma assinatura.
Todo pagamento Lightning começa com uma destas. A fatura se compromete com um hash de pagamento de 256 bits que só o destinatário pode desbloquear, e ela expira depois de uma hora, a menos que o emissor diga outra coisa, e é por isso que uma captura de tela de um QR code antigo não serve para nada. Pagar uma é seguro no sentido de que o dinheiro ou chega ao nó indicado ou volta para você.
Como funciona
Uma fatura BOLT11 é uma string bech32 com um prefixo que nomeia a rede e um corpo formado por campos etiquetados.
O prefixo, chamado de parte legível por humanos, é lnbc na mainnet, lntb na testnet, lntbs na signet e lnbcrt na regtest. Logo depois vem o valor, escrito como um número mais uma letra multiplicadora: m para milésimos de bitcoin, u para milionésimos, n para bilionésimos e p para trilionésimos. Assim, lnbc2500u pede 0,0025 bitcoin. Deixar o valor totalmente de fora produz uma fatura aberta que o pagador preenche.
O corpo é uma sequência de campos etiquetados, cada um com uma etiqueta de um único caractere, um comprimento e um valor. Dois são obrigatórios: o hash de pagamento, etiqueta p, 256 bits escritos como 52 caracteres bech32, e o segredo de pagamento, etiqueta s, outros 52 caracteres que o pagador precisa repetir na carga útil final da cebola. O BOLT 11 diz a quem escreve para incluir exatamente um de cada, e diz a quem lê para fazer o pagamento falhar de imediato quando não há nenhum campo s válido. Depois vêm os opcionais: uma descrição ou, para descrições longas, um hash da descrição; uma expiração, com padrão de 3600 segundos; um delta de expiração CLTV final mínimo, com padrão de 18 blocos, que é a margem de segurança que o destinatário quer no último salto; um id de nó do beneficiário; um endereço on-chain alternativo; e dicas de roteamento que dizem ao pagador como chegar a um nó cujos canais não são anunciados.
O conjunto todo é assinado. A assinatura tem 520 bits, um valor de 64 bytes mais um byte de recuperação, e é isso que permite a uma carteira derivar o destino do pagamento a partir da fatura mesmo quando não há nenhum campo de id de nó. Uma soma de verificação bech32 de seis caracteres fica no fim, de modo que um caractere digitado errado é detectado em vez de enviar dinheiro para o nada.
O hash de pagamento é o mecanismo que faz uma fatura ser mais que um arquivo de texto. O destinatário gera uma pré-imagem aleatória, calcula seu hash e coloca o hash na fatura. Cada salto da rota bloqueia o valor que repassa nesse mesmo hash, e só revelar a pré-imagem libera o dinheiro. Um pagamento liquidado, portanto, deixa o pagador com uma pré-imagem cujo hash corresponde ao da fatura, o que é um recibo criptográfico que nenhum comerciante pode negar de forma plausível.
Por que isso importa quando você compra bitcoin
É na fatura que acontecem vários erros evitáveis quando você saca de uma corretora.
O primeiro é a expiração. Os fluxos de saque de uma corretora podem levar minutos para processar, e uma fatura gerada no começo de um fluxo lento pode estar morta na hora em que for paga. Se um saque por Lightning falhar sem motivo óbvio, gere a fatura de novo na sua carteira antes de supor que a corretora quebrou. O padrão é uma hora, mas carteiras que esperam pagamentos rápidos costumam defini-lo em dez ou quinze minutos.
O segundo é o valor. Uma fatura que traz um valor só pode ser paga por esse valor, que é exatamente o que você quer, porque elimina a possibilidade de digitar um zero a mais. Uma fatura sem valor, às vezes chamada de fatura aberta ou de valor zero, é conveniente para doações e perigosa em um fluxo de saque. Prefira a versão com o número já embutido.
O terceiro é a reutilização. Uma fatura BOLT11 é de uso único por definição. Publicar uma em uma página de doações significa que o pagamento do segundo doador ou falha ou, em um receptor mal construído, paga o hash do primeiro doador de novo. Esse é precisamente o problema que as ofertas BOLT12 foram projetadas para resolver, e é por isso que essa especificação foi integrada ao padrão Lightning em setembro de 2024, o primeiro BOLT novo desde 2017. Até que sua carteira e sua contraparte aceitem ofertas, um endereço Lightning é a forma prática de publicar um destino reutilizável.
Por fim, verifique se a corretora de fato aceita Lightning antes de fazer planos contando com isso. A Strike, que este site analisa, aceita saques tanto por Lightning quanto on-chain. Muitas das plataformas da nossa comparação de corretoras não aceitam, e nelas a forma mais barata de mover valores pequenos é não movê-los com frequência.
Ler uma fatura campo por campo
Desmonte uma fatura curta e ela deixa de parecer ruído.
Uma string que começa com lnbc1500n já diz duas coisas antes de você decodificar qualquer coisa: é uma fatura da mainnet e está pedindo 1500 nanobitcoin, que é 0,0000015 bitcoin, ou 150 satoshis. O que vem depois é um carimbo de data e hora, e em seguida os campos etiquetados. Um campo d traz uma descrição curta como "table 4"; um campo x de 600 definiria a expiração em dez minutos em vez da hora padrão; um campo c substituiria o delta CLTV final de 18 blocos se o destinatário quiser uma margem de segurança maior.
Se o nó do destinatário não tem canais públicos, um campo r traz uma dica de roteamento: o id de nó de um par bem conectado, o id curto de canal a usar e a taxa e o delta desse par. Sem isso, sua carteira olharia o grafo público, não veria caminho nenhum e desistiria. É por isso que faturas de carteiras móveis costumam ser bem mais longas que faturas de grandes nós públicos.
Fatura BOLT11 vs URI de Bitcoin
Uma fatura BOLT11 é uma solicitação de pagamento Lightning; um URI de Bitcoin é uma solicitação de pagamento on-chain. A forma URI, bitcoin: seguido de um endereço e parâmetros opcionais, aponta para a blockchain e pode ser paga por qualquer carteira, qualquer número de vezes, com qualquer valor. Uma fatura aponta para um nó, expira e deve ser paga uma única vez. As carteiras mostram cada vez mais um QR code unificado que carrega os dois, para que o pagador escolha, mas as duas cargas úteis são padrões separados com modos de falha separados.
Fatura BOLT11 vs endereço Lightning
Uma fatura BOLT11 é a própria solicitação de pagamento; um endereço Lightning é uma forma de ir buscar uma. Digitar um endereço como you@example.com em uma carteira dispara uma solicitação HTTPS para esse domínio, que responde com uma fatura BOLT11 recém-gerada pelo valor que você escolheu. O endereço é reutilizável e legível por humanos porque não é uma solicitação de pagamento: é um ponteiro para um servidor que vai emitir uma sob demanda.