Glossário / Lightning e camada 2
Chave de revogação
- O que é uma chave de revogação?
- Uma chave de revogação é a chave pública cegada que bloqueia as saídas com atraso e as saídas HTLC de uma transação de compromisso Lightning, que seu parceiro de canal pode gastar no momento em que você revela o segredo que retira aquele estado.
Toda transação de compromisso Lightning carrega um ramo de revogação que ninguém pode assinar até que um dos lados revele um segredo por compromisso. O BOLT 3 numera esses segredos de 281.474.976.710.655 para baixo, e o nó receptor pode guardar todos em um vetor de 49 posições. Publicar um estado que você já revogou permite que seu par fique com todo o saldo do canal, e é por isso que uma frase de recuperação não pode fazer o backup da Lightning.
Como funciona
Uma chave de revogação é construída de propósito para que nenhum dos dois lados de um canal possa calcular sozinho a sua metade privada.
Quando seu nó prepara um novo compromisso para o seu par, ele pega o próprio revocation_basepoint e o per_commitment_point do seu par, multiplica cada um dos dois pelo SHA256 do par concatenado com esse ponto escrito primeiro, e soma os resultados. O BOLT 3 enuncia a propriedade em uma linha: a construção garante que nem o nó que fornece o ponto base nem o nó que fornece o ponto podem conhecer a chave privada sem o segredo do outro nó. A chave privada não existe em lugar nenhum até a segunda metade chegar.
Essa chegada é uma mensagem. Depois que seu par verifica sua assinatura no novo compromisso dele, ele responde com revoke_and_ack, tipo de mensagem 133, trazendo um per_commitment_secret de 32 bytes para o estado que acabou de ser aposentado, mais o ponto do próximo estado. A partir daí você pode calcular a revocationprivkey do estado antigo, e seu par não pode voltar atrás.
A chave aparece em dois tipos de saída. Uma saída to_local é um P2WSH cujo script de testemunha é OP_IF, a revocationpubkey, OP_ELSE, to_self_delay, OP_CHECKSEQUENCEVERIFY, OP_DROP, a local_delayedpubkey, OP_ENDIF, OP_CHECKSIG: o dono tem que esperar to_self_delay blocos, enquanto quem tem a chave de revogação gasta imediatamente com a pilha de testemunha de uma assinatura e um 1. Cada saída HTLC carrega a mesma chave reduzida a hash de 20 bytes com RIPEMD160 sobre SHA256, e o BOLT 5 exige que o nó que pune varra também com essa chave as transações HTLC-success e HTLC-timeout do trapaceiro.
O armazenamento é onde o desenho fica engenhoso. Um canal pode consumir 281.474.976.710.655 segredos por compromisso, um por estado, todos gerados a partir de uma única semente de 256 bits impossível de adivinhar, invertendo bits e aplicando hash, com o índice contando para baixo em vez de para cima. Como de um segredo cujo índice termina em zeros se derivam todos os segredos dali até o próximo limite de potência de dois, o nó receptor guarda apenas 49 pares de valor e índice e reconstrói o resto sob demanda. O BOLT 3 também faz o receptor rederivar seus segredos anteriores a partir de cada nova chegada, como verificação, de modo que um par que trocou de semente discretamente é descoberto na hora, e não no momento do fechamento.
Por que isso importa quando você compra bitcoin
As chaves de revogação são a razão pela qual um saldo em Lightning não se comporta em nada como os bitcoins on-chain que uma corretora envia a você.
Das 41 carteiras analisadas neste site, as que colocam você na Lightning tratam o problema de estado de formas visivelmente diferentes, e essa divisão explica suas notas. A Phoenix roda um nó autônomo de verdade no celular, atrás de uma frase de recuperação BIP39 padrão em um caminho BIP84, e nossa análise deixa explícito que a frase de recuperação é a alternativa de reserva on-chain, e não o canal: se a ACINQ desaparecesse, você faria um fechamento forçado, esperaria cerca de 720 blocos, aproximadamente cinco dias, e recuperaria on-chain com a Electrum. A Muun recusa a lista de palavras por completo e entrega a você um arquivo Emergency Kit com as duas chaves multiassinatura mais os descritores de saída, com o raciocínio publicado de que um mnemônico faz backup de chaves enquanto seus bitcoins vivem em scripts sobre os quais a carteira também precisa ser informada. O modo custodial padrão da Wallet of Satoshi elimina o problema eliminando você dele: a empresa guarda todos os segredos, e por isso ela tem status de cautela e nota 2,7 aqui, e por isso pôde parar de atender clientes dos Estados Unidos em 23 de novembro de 2023 e retirar o serviço em toda a União Europeia na virada de 2026, deixando aos titulares na UE o modo de autocustódia. A BlueWallet é de autocustódia on-chain e tem nota 4,2 por isso, enquanto um saldo Lightning nela fica em uma conta LNDHub que sua frase de recuperação on-chain não cobre.
O protocolo oferece sim uma rede de segurança, e vale conhecê-la com precisão. Se você se reconectar com um estado obsoleto, channel_reestablish o expõe: a mensagem do seu par indica um número de revogação mais alto do que você esperava e devolve o último per_commitment_secret que você enviou, o que prova que a alegação é honesta. O BOLT 2 então diz que você não deve transmitir sua própria transação de compromisso e deve enviar um erro pedindo ao seu par que faça o canal falhar. Essa é uma regra que o software honesto segue, não uma garantia de consenso, e ela protege você apenas enquanto você se abstém de publicar o estado obsoleto por conta própria. O BOLT 5 enuncia o dever correspondente em termos claros: um nó não deve transmitir uma transação de compromisso para a qual já tenha exposto o per_commitment_secret.
Na prática, o risco fica dentro da sua carteira de recebimento e em nenhum outro lugar. Comprar em qualquer uma das 63 corretoras acompanhadas aqui e sacar via Lightning não expõe você a ele, porque os canais da corretora são problema da corretora. Sua exposição começa no momento em que os bitcoins chegam a um lugar onde quem deve rodar o nó é você.
O vetor de teste do BOLT 3, chave por chave
O BOLT 3 traz no apêndice uma derivação resolvida, e lê-la é a forma mais rápida de ver que as duas metades de uma chave de revogação são essenciais.
Comece com um revocation_basepoint de 036d6caac248af96f6afa7f904f550253a0f3ef3f5aa2fe6838a95b216691468e2 e um per_commitment_point de 025f7117a78150fe2ef97db7cfc83bd57b2e2c0d0dd25eaf467a4a1c2a45ce1486. Aplicar hash primeiro ao ponto base dá efbf7ba5a074276701798376950a64a90f698997cce0dff4d24a6d2785d20963, e aplicar hash primeiro ao ponto dá cbcdd70fcfad15ea8e9e5c5a12365cf00912504f08ce01593689dd426bca9ff0. Multiplique cada ponto pelo hash que começa com ele, some os dois resultados, e sai a revocationpubkey 02916e326636d19c33f13e8c0c3a03dd157f332f3e99c317c141dd865eb01f8ff0.
Nada nessa chave pública revela a privada. Ela aparece apenas quando o par divulga o per_commitment_secret correspondente, 1f1e1d1c1b1a191817161514131211100f0e0d0c0b0a09080706050403020100, momento em que os mesmos dois hashes se combinam com esse segredo e com o segredo do ponto base para dar a revocationprivkey d09ffff62ddb2297ab000cc85bcb4283fdeb6aa052affbc9dddcf33b61078110. Uma atualização de canal, uma divulgação, e uma chave pública que um instante antes era decoração se torna um direito sobre toda a saída.
Chave de revogação vs frase de recuperação
Uma chave de revogação e uma frase de recuperação são dois segredos dos quais seu dinheiro depende, e só um deles pode ser escrito no papel.
Uma frase de recuperação é estática. Doze ou vinte e quatro palavras fixam todas as chaves que a carteira vai derivar, cópias extras deixam você mais seguro, e uma cópia antiga vale exatamente o mesmo que uma nova. Os segredos de revogação invertem as três propriedades. Eles chegam um por atualização de canal, dentro do revoke_and_ack, vindos do outro lado; as cópias que importam são as divulgações do seu par, que sua própria frase de recuperação não consegue regenerar; e uma cópia antiga do estado do canal não é um backup, mas um passivo, porque agir com base nela é indistinguível de trapacear. O esquema de armazenamento de 49 posições existe justamente porque esses segredos mudam com frequência excessiva para serem anotados.
A consequência prática é o aviso que toda carteira Lightning repete. Restaure uma carteira Lightning apenas a partir das palavras e comece a gastar, e você terá republicado um estado que já revogou, que é a única coisa que o BOLT 5 proíbe de forma categórica e a única coisa que a chave de revogação do seu parceiro de canal estava esperando.