Pular para o conteúdo
buybitcoinsmart

Glossário / Lightning e camada 2

Valor máximo de HTLC em trânsito

O que é o valor máximo de HTLC em trânsito?
Valor máximo de HTLC em trânsito é o teto que cada par Lightning define sobre o valor total dos pagamentos que a outra parte pode ter pendentes de uma só vez.

O teto é um único campo, max_htlc_value_in_flight_msat, acordado quando um canal é aberto e aplicado em cada pagamento depois disso. O Eclair traz um padrão de 5.000.000.000 milissatoshis ou 45% da capacidade do canal, o que for menor, então um canal de 60 mBTC fica com 27 mBTC. Seu pagamento Lightning grande pode falhar em um canal que visivelmente tem dinheiro suficiente, e muitas vezes esta é a razão.

Como funciona

O valor máximo de HTLC em trânsito é negociado, não imposto: cada lado declara o teto que quer que o outro respeite.

O campo viaja em open_channel (mensagem do tipo 32) e volta em accept_channel (tipo 33); canais com depósito duplo o carregam em open_channel2 (64) e accept_channel2 (65). O BOLT 2 o descreve como "a cap on total value of outstanding HTLCs offered by the remote node, which allows the local node to limit its exposure to HTLCs". Observe a direção: o número que você envia restringe seu par, não você, então um canal carrega dois tetos que não precisam coincidir.

A aplicação é dura nas duas pontas. Um nó que envia não deve adicionar um pagamento se o valor total que ele já ofereceu ultrapassaria então o teto do remoto, e um nó receptor cujo par quebra a regra é instruído a alertar e derrubar a conexão, ou fazer o canal falhar de vez. O campo irmão max_accepted_htlcs conta os pagamentos pendentes em vez de medi-los, e a especificação limita esse campo a 483, caindo para 114 quando o canal usa compromissos sem taxa. O teto de valor não tem limite equivalente: é pura política do nó, e a única salvaguarda da especificação é que um nó que recebe pode recusar um canal cujo número pareça pequeno demais.

Dinheiro parado não é afetado. Um canal pode ter muitas vezes o teto em saldo liquidado, porque o limite conta apenas os pagamentos em movimento, os que precisariam ser desenrolados on-chain se o canal fechasse mal.

Onde você vê isso

O valor máximo de HTLC em trânsito nunca aparece no grafo público da Lightning, então nenhum explorador de canais vai mostrar isso para você.

Ele vaza de uma forma específica. O BOLT 7 exige que um nó que publica um channel_update defina htlc_maximum_msat, o maior pagamento único que ele vai encaminhar, como não mais que o max_htlc_value_in_flight_msat que recebeu do seu par. Um número privado, portanto, coloca um teto firme sobre um público: um par cauteloso força a redução do número anunciado, embora um nó seja livre para anunciar menos do que seu par permite.

Os padrões diferem o bastante entre implementações para importar. A configuração de referência do Eclair define max-htlc-value-in-flight-msat como 5.000.000.000 e max-htlc-value-in-flight-percent como 45, aplica o que for menor, e observa que o ajuste é por direção, então os dois juntos podem chegar ao dobro do número. O Eclair também define max-accepted-htlcs como 30, enquanto a configuração de exemplo do LND traz default-remote-max-htlcs em 483, o máximo da especificação. Dois operadores com padrões intactos podem discordar por um fator de dezesseis só na contagem.

Para um comprador o sintoma é um pagamento que falha sem explicação. Dividir o valor em partes não resolve quando as partes usam o mesmo canal, porque o teto soma todas elas. A ACINQ, que publica esses padrões do eclair, também oferece Phoenix, a carteira para celular analisada neste site; qualquer carteira que abra canais para você escolhe esses números em seu nome.

Valor máximo de HTLC em trânsito vs capacidade do canal

A capacidade do canal é o valor travado na saída de depósito de um canal, enquanto o valor máximo de HTLC em trânsito governa quanto desse valor pode estar no meio de um pagamento em um dado momento.

A capacidade é um fato público, fixado pela transação de depósito e anunciado para toda a rede. O teto em trânsito é privado, trocado apenas entre os dois pares, definido separadamente para cada direção e escolhido por política, não por aritmética. O padrão percentual do Eclair torna a diferença concreta: os 45% se aplicam a cada direção por si só, então mais da metade da capacidade fica impedida de circular em uma única direção por vez. Um canal que mostra bastante espaço do seu lado ainda pode recusar um pagamento, e o número que o recusou é um que você não pode consultar.

Não confundir com

Perguntas frequentes

Por que meu pagamento Lightning falhou se o canal tinha saldo suficiente?

Muitas vezes porque os pagamentos já pendentes naquele canal mais o novo ultrapassariam o max_htlc_value_in_flight_msat, o teto que seu par definiu quando o canal foi aberto. O teto limita o dinheiro em movimento, não o dinheiro parado, então um canal pode parecer bem abastecido e ainda assim recusar você.

O valor máximo de HTLC em trânsito é o mesmo que max_accepted_htlcs?

Não, um limita o valor e o outro limita a contagem. O BOLT 2 limita o max_accepted_htlcs a 483, ou 114 para canais que usam compromissos sem taxa, enquanto o teto de valor não tem limite na especificação e é definido puramente pela política do nó.

Dividir um pagamento em partes contorna o teto?

Não quando as partes trafegam pelo mesmo canal, porque o teto soma todos os pagamentos pendentes naquela direção. Distribuir as partes entre canais diferentes pode ajudar, já que cada canal tem seu próprio limite, negociado separadamente.

Leia a seguir

Termos relacionados

Mais em Lightning e camada 2

Ler esta página em inglês