No final do domingo (09), pesquisadores descobriram um bug crítico de validação no LND, uma implementação popular da Lightning Network, apoiada pela Lightning Labs.
Especificamente, a implementação completa do node de Bitcoin do LND, BTCD, teve um bug em sua implementação do Taproot. BTCD é uma implementação completa de node para Bitcoin, que é popular entre os usuários da Lightning Network.
O bug afeta as versões LND 0.15.1 e anteriores. O LND pediu para que todos os seus usuários o atualizassem para a versão 0.15.2.
Durante a noite de domingo, o desenvolvedor do Bitcoin Jameson Lopp recomendou aos operadores de nós LND que não fizessem nada até que uma nova versão fosse lançada. “Espero que pagamentos e roteamento [de pagamentos] ainda funcionem. O que não está funcionando é abertura e fechamento de canais porque a sincronização do blockchain está travada.”
Sem a possibilidade de fechar canais, os bitcoins na rede Lightning (de quem opera essa implementação específica da LN) estavam essencialmente congelados lá por algumas horas, sem a possibilidade de serem movidos para a rede de primeira camada.
Transação multi-sig de Taproot revelou o bug
Os pesquisadores descobriram o bug ao testar os limites da Bitcoin Scripting Language, uma linguagem de programação do Bitcoin. Eles queriam testar um contrato inteligente extremamente avançado que exigia co-autenticação por inúmeras partes.
Para realizar este teste, um pesquisador, Burak, criou uma grande transação multi-sig no Taproot. Isto exigiu 998 assinaturas de chaves privadas para autenticar o envio de bitcoin, uma quantidade extraordinária de co-assinantes.
Para contextualizar esse número, considere que os usuários da Lightning Network normalmente abrem canais usando apenas transações multi-sig de 2-de-2.
A transação 998-de-999 foi aceita pelos produtores de blocos de teste. A transação foi posteriormente minerada em um bloco de Bitcoin da rede principal. Em seguida, a transação quebrou o LND.
Essa transação confundiu o método usado pelo LND para calcular o que era o bloco mais recente. Especificamente, o LND não conseguiu analisar um novo bloco devido a sua biblioteca defeituosa.
A seguinte mensagem aparecia nos registros de erros: “Incapaz de completar a redimensionamento da cadeia: readScript: o item do script é maior do que o tamanho máximo permitido.”
A Lightning Labs começou imediatamente a trabalhar na correção do bug, atualizando a biblioteca de análise de fios do BTCD, e anunciou o lançamento da versão 0.15.2.
Necessidade de serviços watchtower de implementação cruzada
Após o processo de resolução de bugs, os pesquisadores começaram a expressar a necessidade de serviços de observação, que são implementados independentemente.
Este bug só afetou o LND, uma implementação popular da Lightning Network. Outras implementações incluem o Éclair e o Core Lightning.
O serviço de observação, watchtower, são terceiros que monitoram a Lightning Network visível publicamente e permitem que os usuários busquem restituição para mau comportamento, podendo monitorar todas as implementações para proteger os usuários durante interrupções de qualquer implementação em particular.
Por exemplo, como a maioria dos usuários adere ao Lightning como uma transação multi-sig 2-de-2, eles geralmente confiam em uma contraparte para não mentir sobre o equilíbrio final do bitcoin em posse uns dos outros ao fecharem o canal e saírem da rede para o Bitcoin da rede principal.
Se alguém mente sobre o bitcoin em sua posse ao tentar fechar um canal Lightning, um usuário que possa provar esta mentira pode publicar a chamada Justice Transaction (Transação de Justiça), e receber 100% dos bitcoins em seu canal como recompensa por pegar a mentira.
Uma watchtower que monitora todas as implementações (LND, Core Lightning, Éclair, etc.) pode proteger um usuário durante bugs ou hacks, permitindo-lhes publicar Justice Transaction se alguém tentar roubar seu dinheiro durante interrupções de serviço.
Leia também: