Pular para o conteúdo
buybitcoinsmart

Glossário / Lightning e camada 2

Millisatoshi

Outros nomes: msat.

O que é um millisatoshi?
Um millisatoshi é um milésimo de satoshi, a unidade que a Lightning usa para contar saldos de canal e taxas de roteamento, e um valor que a própria blockchain do bitcoin não consegue registrar.

A Lightning faz sua contabilidade um passo mais fina do que a blockchain, em milésimos de satoshi. O BOLT 2 fixa a proporção de forma direta: push_msat não pode exceder 1000 vezes funding_satoshis, e a execução on-chain só é possível para valores em satoshis inteiros. Qualquer resto de millisatoshi no seu saldo é real dentro do canal e é arredondado no momento em que esse canal se fecha.

Como funciona

Um millisatoshi é uma unidade de conta dentro de um canal Lightning, e não uma unidade de liquidação na blockchain.

Todo valor de pagamento dentro de um canal é escrito em millisatoshi e o diz no nome do seu campo. A mensagem que adiciona um pagamento a um canal, update_add_htlc, carrega um amount_msat de 64 bits, e abrir um canal negocia push_msat, htlc_minimum_msat e max_htlc_value_in_flight_msat na mesma unidade. O BOLT 2 declara a ressalva ao lado da definição: os valores estão em millisatoshi, "though on-chain enforcement is only possible for whole satoshi amounts greater than the dust limit", e a transação de compromisso os arredonda para baixo.

O fator de conversão não é folclore. Um nó que abre um canal deve definir push_msat em no máximo 1000 vezes funding_satoshis, e o par que recebe a mensagem deve fazer o canal falhar se push_msat for maior que funding_satoshis vezes 1000. A proporção de 1.000 para 1 está escrita no handshake pelos dois lados.

As faturas herdam o mesmo piso. Um valor BOLT 11 é expresso em bitcoin com uma letra multiplicadora, e a menor delas, p de pico, carrega uma regra que as outras não têm: o último dígito do valor deve ser zero. Um pico de bitcoin é um décimo de millisatoshi, então o zero final obriga a solicitação a um número inteiro de millisatoshis. A especificação diz sua razão de forma clara, que valores abaixo de um millisatoshi não podem ser transferidos na rede, já que os HTLC são denominados em millisatoshis, e os vetores de teste incluem uma fatura rejeitada sob o título "Invalid sub-millisatoshi precision".

As três casas decimais extras se justificam na aritmética das taxas. Um nó que encaminha cobra uma taxa proporcional cotada em milionésimos de satoshi por satoshi encaminhado, então uma taxa de 1 sobre um pagamento de 1.000 satoshis resulta em um único millisatoshi. Arredonde para um satoshi inteiro e você terá multiplicado a taxa por mil ou a descartado.

Onde você vê isso

Os números em millisatoshi aparecem onde uma ferramenta Lightning mostra seus números reais em vez de uma exibição arredondada.

Decodifique uma fatura BOLT 11 e as dicas de rota aparecem nessa unidade. O próprio exemplo prático da especificação lista dois saltos que cobram uma taxa base de 1 millisatoshi e 2 millisatoshi, e sua fatura de exemplo para um pedido da loja da Blockstream carrega uma dica de rota cuja taxa base é 1000, um satoshi inteiro. A atualização de gossip de um canal publica htlc_minimum_msat e fee_base_msat na mesma unidade, então um painel que lê esses campos mostra um número mil vezes maior que o valor em satoshis ao lado.

As carteiras de consumo escondem a unidade, mas não a aritmética. A Phoenix publica uma tabela de taxas em vez de descobrir as taxas no momento do pagamento, e seu envio pela Lightning custa 0,4% mais 4 satoshis; em um pagamento de 137 satoshis, a parte percentual resulta em 548 millisatoshi, uma quantidade sem nenhuma representação on-chain. A Muun apresenta on-chain e Lightning como um único saldo, o que esconde a fronteira por completo sem removê-la.

Millisatoshi vs satoshi

Um satoshi é o menor valor que a blockchain do bitcoin pode registrar, enquanto um millisatoshi é um milésimo disso e existe apenas nas mensagens da Lightning e nos livros que seus dois pares mantêm.

A diferença aparece na hora do fechamento. Um saldo de canal de 1.234.567 millisatoshi é executável como 1.234 satoshis e nada mais, porque a transação de compromisso que liquida o canal na blockchain paga satoshis inteiros; os 567 millisatoshi restantes não têm nenhuma saída on-chain onde existir, e só podem ser gastos enquanto o canal permanecer aberto. Essa diferença vale uma fração de centavo, e ainda assim é a razão pela qual as duas unidades não podem ser trocadas uma pela outra em nada que toque a blockchain.

Não confundir com

Perguntas frequentes

Quantos millisatoshis há em um satoshi?

Exatamente 1.000. A especificação da Lightning escreve a proporção no handshake de abertura do canal: um nó deve definir push_msat em no máximo 1000 vezes funding_satoshis, e o par que recebe essa mensagem deve fazer o canal falhar se push_msat for maior que funding_satoshis vezes 1000.

Posso realmente sacar um millisatoshi?

Não, porque a blockchain do bitcoin registra apenas satoshis inteiros. Um saldo em millisatoshi é real enquanto um canal Lightning está aberto, mas o BOLT 2 diz que a execução on-chain só é possível para valores em satoshis inteiros acima do limite de poeira, e a transação de compromisso arredonda o resto para baixo.

Por que a Lightning se dá ao trabalho de ter uma unidade tão pequena?

Porque as taxas de roteamento proporcionais são cotadas em milionésimos de satoshi por satoshi encaminhado, então a taxa sobre um pagamento pequeno fica entre satoshis. Uma taxa de 1 sobre um pagamento de 1.000 satoshis é um millisatoshi, e arredondá-la para um satoshi inteiro ou apagaria a taxa ou a multiplicaria por mil.

Leia a seguir

Termos relacionados

Mais em Lightning e camada 2

Ler esta página em inglês