Pular para o conteúdo
buybitcoinsmart

Glossário / Lightning e camada 2

HTLC de poeira

O que é um HTLC de poeira?
Um HTLC de poeira é um pagamento Lightning pequeno demais para ter uma saída própria na transação de compromisso, então um fechamento forçado o entrega aos mineradores, e não a qualquer uma das partes do canal.

Os canais Lightning se recusam a criar uma saída para qualquer pagamento em trânsito que valha menos que o limite de poeira mais sua taxa de resgate, e esse valor se torna taxa de mineração. Com um limite de poeira de 546 satoshis e uma taxa de 5.000 por kiloweight, qualquer coisa abaixo de 3.861 satoshis é cortada. O dinheiro só se perde se o canal passar por um fechamento forçado enquanto esse pagamento ainda está em movimento.

Como funciona

Um HTLC de poeira é decidido por aritmética, e não por julgamento: o limite de poeira que o dono do canal escolheu, mais o que custaria reivindicar o pagamento on-chain.

O BOLT 3 chama a saída descartada de cortada. Para um pagamento que você está oferecendo, o canal verifica o valor menos a taxa da transação HTLC-timeout; para um que você está recebendo, o valor menos a taxa da transação HTLC-success. Essas duas transações pesam 663 e 703 unidades de peso em um canal sem âncoras, então com um valor de feerate_per_kw de 5.000 elas custam 3.315 e 3.515 satoshis. Diante de um limite de poeira de 546 satoshis, o limite dos oferecidos fica em 3.861 satoshis e o dos recebidos, em 4.061.

O exemplo prático do BOLT 3 mostra a perda. Há quatro pagamentos em trânsito com essa taxa por kiloweight: HTLCs oferecidos de 5.000 e 1.000 satoshis, HTLCs recebidos de 7.000 e 800. O de 5.000 e o de 7.000 recebem cada um uma saída. O de 1.000 e o de 800 são cortados, e a taxa da transação de compromisso sobe de uma base de 5.340 satoshis para 7.140. Esses 1.800 satoshis extras são exatamente os dois pagamentos que desapareceram, pagos a quem minerar o fechamento.

Cada lado escolhe seu próprio dust_limit_satoshis, então as duas transações de compromisso de um mesmo canal podem discordar sobre quais pagamentos contam como poeira. O BOLT 2 faz um nó falhar o canal se seu par propuser um valor abaixo de 354 satoshis, e permite recusar um que considere grande demais, já que um par com um limite alto pode publicar um compromisso repleto de pagamentos cortados.

Os canais âncora mudaram a aritmética. Sob option_anchors ou zero_fee_commitments, as transações HTLC de segundo estágio não carregam taxa, então deixam de alimentar o cálculo e o limite se reduz ao limite de poeira puro. O BOLT 3 orienta os nós a aumentar dust_limit_satoshis de propósito nesse caso, já que uma saída que supera o limite mas não pode ser varrida com taxas reais só polui o conjunto de UTXO.

O BOLT 2 também limita o total, e não cada pagamento. Acima do max_dust_htlc_exposure_msat de um nó, que é em si uma questão de política, o nó deve falhar um HTLC recebido depois de comprometido e não deve revelar a pré-imagem, transformando uma possível perda em uma falha limpa.

Onde você vê isso

Os HTLCs de poeira aparecem no modelo de custódia de uma carteira, e não em sua interface, e as 41 análises de carteiras deste site se dividem claramente nesse ponto.

A Phoenix roda um nó Lightning real de autocustódia no seu celular, então os canais são seus e essa exposição também; a ACINQ cobra 0,4% mais 4 satoshis por envio, e cada um desses envios é um HTLC que o corte pode alcançar. O lado Lightning da BlueWallet é uma conta em um servidor LNDHub, então o operador detém os canais: você nunca carrega um pagamento cortado, e carrega esse operador em troca.

O corte reaparece na hora do fechamento. O BOLT 2 só permite negociação de fechamento quando não resta nenhum HTLC em qualquer das duas transações de compromisso, incluídos os HTLCs de poeira, então um pagamento de 300 satoshis que nenhum observador on-chain consegue ver ainda mantém um fechamento cooperativo em espera.

HTLC de poeira vs limite de poeira

O limite de poeira é um número que um nó escolhe; um HTLC de poeira é um pagamento que perdeu uma comparação contra esse número mais uma taxa.

O limite é um parâmetro do canal, definido em open_channel e accept_channel e não carregado por nenhuma mensagem posterior. O corte é um resultado que se move: sem âncoras, o limite acompanha feerate_per_kw, então o mesmo pagamento de 2.500 satoshis é uma saída real em uma mempool tranquila e fica cortado em uma mempool movimentada.

Além disso, os dois se aplicam em estágios diferentes. Os limites do Bitcoin Core, 546 satoshis para uma saída legacy e 330 para pay-to-witness-script-hash, são política de retransmissão sobre transações que existem. Um HTLC cortado nunca chega a esse teste, porque sua saída nunca é escrita.

Não confundir com

Perguntas frequentes

Um HTLC de poeira pode mesmo me fazer perder dinheiro?

Sim, mas apenas o valor cortado, e somente se o canal passar por um fechamento forçado enquanto esse pagamento ainda está em trânsito. Um pagamento que é liquidado ou falha normalmente não é afetado, porque o corte só decide como seria uma transação de compromisso se alguém a publicasse.

Por que meu nó Lightning recusou um pagamento pequeno?

Uma das razões é o teto de exposição máxima a HTLC de poeira. O BOLT 2 orienta um nó a falhar esse HTLC depois de comprometido, e a reter a pré-imagem, quando aceitá-lo levaria o saldo cortado total do canal além do limite que o operador definiu.

Os canais âncora eliminam os HTLCs de poeira?

Não. Os canais âncora retiram a taxa de HTLC de segunda etapa do cálculo, então o limite volta ao limite de poeira simples, e é por isso que o BOLT 3 diz que faz sentido aumentar dust_limit_satoshis para cobrir esse custo de segunda etapa, e por que um nó deve permitir ao seu par um limite acima dos valores do próprio Bitcoin Core, que vão de 240 a 546 satoshis.

Leia a seguir

Termos relacionados

Mais em Lightning e camada 2

Ler esta página em inglês