Pular para o conteúdo
buybitcoinsmart

Glossário / Lightning e camada 2

Transação de penalização

O que é uma transação de penalização?
Uma transação de penalização é a varredura on-chain que leva todas as saídas de um canal Lightning quando seu par publica um compromisso revogado, assinada com a chave de revogação que você já possui.

Os canais Lightning são policiados pelos seus dois participantes, e a transação de penalização é a forma de fazer cumprir as regras. O BOLT 5 dá a essa varredura uma testemunha de 160 bytes para a saída do saldo principal, e diz para dividi-la por saída se ela não tiver sido confirmada 18 blocos antes de expirar o timelock do trapaceiro. Se você mantém bitcoins em canais, essa transação é o que fica entre você e um par que rebobina o seu saldo.

Como funciona

Uma transação de penalização gasta saídas cujo dono já lhe entregou o direito de tomá-las.

Toda vez que o saldo de um canal muda, cada lado entrega o segredo por trás do estado que está substituindo. Guarde esse segredo e você pode derivar a chave privada de revogação da antiga transação de compromisso do seu par, que é a chave que destranca o lado dele nessa transação. O BOLT 5 resume a consequência em uma linha: quando um nó descobre uma transação de compromisso para a qual tem uma chave privada de revogação, a saída da transação que depositou os fundos do canal fica resolvida. Não sobra nada a negociar.

O que você varre depende do que o compromisso obsoleto carregava. A especificação manda você resolver a saída principal do trapaceiro com a chave de revogação, resolver cada pagamento que ele ofereceu de uma de três formas (gastar o compromisso com a chave de revogação, gastá-lo com a preimagem do pagamento se você a conhece, ou gastar a transação HTLC-timeout dele depois que ele a publicar) e resolver as transações HTLC-success e HTLC-timeout dele também com a chave de revogação. Ela também diz para você retirar a preimagem da testemunha da entrada enquanto está nisso, porque um pagamento que você estava prestes a perder ainda pode ser resgatado do salto anterior a você.

Três formatos de testemunha cobrem tudo isso, e o BOLT 5 dá o tamanho de cada um: 160 bytes para a saída do saldo principal, 243 bytes para um pagamento oferecido, 249 bytes para um aceito. Some o peso de 164 da própria entrada e cada saída resgatada custa 324, 407 ou 413. O restante da transação são 53 bytes de dados que não são de testemunha mais um cabeçalho de testemunha de 2 bytes. Você também pode incorporar a sua própria saída principal do mesmo compromisso, o que acrescenta 272 e serve principalmente para reduzir a taxa que você paga.

Duas coisas que uma transação de penalização não é. Ela não é automática: o bitcoin não pune ninguém, e a varredura só acontece se um software que você executa, ou que você contratou, vê a transação obsoleta ser confirmada e reage antes de o timelock do trapaceiro expirar. Ela também não é gratuita. A varredura paga a taxa vigente como qualquer outra transação, então um canal que contém menos do que custa esvaziá-lo não vale a pena defender, permitam o que permitirem as regras.

Por que isso importa quando você compra bitcoin

Uma transação de penalização só defende você em uma carteira na qual você guarda transações de compromisso próprias, o que exclui a maioria dos aplicativos Lightning fáceis.

As 41 análises de carteiras neste site se dividem exatamente nessa linha. A Phoenix executa um nó Lightning de autocustódia de verdade no celular, então o mecanismo de punição pertence a você, e também o dever de vigiar: a rota de recuperação da ACINQ faz você forçar o fechamento e esperar aproximadamente 720 blocos, cerca de cinco dias, antes que os fundos do canal sejam seus on-chain. A BlueWallet é somente bitcoin e incomumente capaz on-chain, mas seu lado Lightning é uma conta em um servidor LNDHub, e a menos que esse servidor seja seu, o operador pode mover esses bitcoins, então não existe nenhuma transação de compromisso sua para punir ninguém. A Wallet of Satoshi também é custodial no modo padrão, o que é parte do motivo de ela ter uma classificação de 2,7 aqui em vez de estar em uma recomendação.

Leia isso como uma troca, não como um veredito. A Lightning custodial elimina os pares trapaceiros da sua lista de ameaças e os substitui por uma única empresa que pode congelar ou retirar o serviço. A Lightning de autocustódia entrega a você a transação de penalização e a obrigação de estar acordado. O erro que pega as pessoas dos dois lados é reutilizar um backup antigo da frase de recuperação: doze palavras restauram bitcoins on-chain e não sabem nada sobre qual estado do canal é o atual, então o compromisso que você publica é obsoleto e a transação de penalização que se segue mira você.

Um fechamento revogado em um canal da Phoenix

Imagine um canal da Phoenix com três pagamentos ainda em trânsito quando o nó do outro lado publica um compromisso da semana passada.

Seu software detecta o txid, deriva a chave de revogação e monta uma única varredura. O peso dela é 324 pela saída principal do trapaceiro, 413 por cada uma das três saídas de pagamentos aceitos, 272 por incorporar a sua própria saída principal, quatro vezes 53 bytes de corpo da transação e um cabeçalho de 2 bytes: 2.049 unidades de peso, ou cerca de 512 bytes virtuais. O dinheiro deles fica atrás do timelock relativo que os dois lados acordaram quando o canal foi aberto, e atrasos desse tipo correm em dias, não em minutos: recuperar-se de um fechamento forçado na Phoenix leva aproximadamente 720 blocos, cerca de cinco dias. O seu é gastável no momento em que um minerador aceita a sua transação.

O BOLT 5 também calcula o teto. Contra um peso padrão máximo de 400.000 e a maior entrada em 413, uma única transação de penalização alcança 966 saídas de pagamento, o dobro dos 483 pagamentos pendentes por lado que o protocolo entre pares já permite, então até um canal completamente cheio pode ser esvaziado de uma só vez.

Depois vem o motivo para não fazer isso. Onde o canal usa saídas âncora, as próprias transações de pagamento do trapaceiro são assinadas com SIGHASH_SINGLE e SIGHASH_ANYONECANPAY, então ele pode anexar entradas próprias e fixar a sua varredura combinada na mempool por tempo suficiente para o timelock da saída principal dele expirar. Se a confirmação não tiver chegado quando faltar para essa saída menos que o atraso de segurança para expirar, uma janela que o BOLT 5 deixa a critério de cada nó embora recomende 18 blocos, você é instruído a dividir o trabalho: uma transação de penalização por saída revogada, com a taxa aumentada até que cada uma seja confirmada. Sob compromissos sem taxa, cada uma delas também deve ficar dentro do limite de 10.000 bytes virtuais que as transações de versão 3 carregam, ou pode nunca chegar aos mineradores.

Transação de penalização vs fechamento forçado

Um fechamento forçado é qualquer saída unilateral de um canal, enquanto uma transação de penalização é a resposta a uma saída desonesta.

A maioria dos fechamentos forçados é sem graça. Um par ficou offline, um prazo de pagamento se aproximou, o nó de alguém publicou o estado atual, e os dois lados recebem o saldo que lhes era devido quando o atraso passa. Uma transação de penalização existe apenas no caso restrito em que o compromisso publicado já havia sido revogado, e ela toma o canal inteiro em vez de uma parte. Toda transação de penalização segue um fechamento forçado, e quase nenhum fechamento forçado produz uma.

Transação de penalização vs watchtower

Uma transação de penalização é uma transação de bitcoin assinada, enquanto uma watchtower é uma máquina que fica esperando para transmitir uma em seu nome.

A watchtower guarda um prefixo curto do txid revogado e um bloco de dados que ela não consegue descriptografar até que essa transação apareça em um bloco. A varredura lá dentro foi construída e assinada pelo seu próprio nó, com pagamento para um endereço escolhido antes de qualquer coisa dar errado, então contratar uma não custa nenhuma chave sua. Confundir as duas produz a preocupação errada. Não executar nenhuma watchtower não enfraquece em nada a transação de penalização; significa que ninguém está acordado para enviá-la enquanto o seu notebook está fechado.

Não confundir com

Perguntas frequentes

Uma transação de penalização pode tirar dinheiro de você por engano?

Não. Ela só pode gastar uma transação de compromisso que você já revogou, então só é acionada se você difundir um estado de canal desatualizado, e é por isso que restaurar uma carteira Lightning a partir de uma frase de recuperação e depois usá-la é perigoso.

Quem realmente difunde uma transação de penalização?

Seu próprio nó difunde, ou uma watchtower para a qual você entregou a varredura criptografada. O Bitcoin não faz cumprir nada aqui por conta própria: se nenhum software estiver vigiando antes de expirar o timelock do trapaceiro, o saldo roubado continua roubado.

Preciso pensar nisso em um aplicativo Lightning custodial?

Não. Em um saldo custodial, como uma conta LNDHub, você não detém transações de compromisso, então não há penalização para você difundir nem estado revogado para vigiar. Seu risco ali é o operador, não um par que trapaceia.

Quanto tempo tenho para penalizar um par que trapaceia?

Até expirar o timelock relativo na saída principal do trapaceiro, um prazo acordado quando o canal foi aberto. O BOLT 5 acrescenta que, se sua varredura não tiver sido confirmada 18 blocos antes desse prazo, você deve passar a uma transação por saída revogada e aumentar a taxa de cada uma, caso o trapaceiro tente fixar a combinada.

Leia a seguir

Termos relacionados

Mais em Lightning e camada 2

Ler esta página em inglês