É perigoso ter múltiplas implementações de Bitcoin? Inteligência de dados PlatoBlockchain. Pesquisa vertical. Ai.

É perigoso ter várias implementações do Bitcoin?

Este é um editorial de opinião de Bill Scoresby, proprietário de uma pequena empresa baseada em bitcoin e escritor de vários guias para autocustódia de bitcoin.

Os bugs que recentemente fizeram com que muitos nós LND ficassem fora de sincronia com o blockchain Bitcoin foram provavelmente causado por uma implementação alternativa.

Talvez você esteja se perguntando: “Quem no mundo está usando outra coisa senão Bitcoin Core?” Você talvez não soubesse que existiam outras implementações do Bitcoin. Talvez você não tenha certeza do que significa uma implementação diferente.

Bitcoin Core começou como o software que Satoshi Nakamoto escrito em C++ e lançado para o mundo. Ele foi atualizado com novas versões até os dias atuais. Uma implementação alternativa é um software que faz a mesma coisa que o Bitcoin Core – aplica as mesmas regras de consenso – mas é escrito de forma diferente, na maioria das vezes em uma linguagem de codificação diferente.

Como uma implementação alternativa quebrou nós na Lightning Network?

Uma das principais versões do nó da Lightning Network (LND) depende de uma implementação alternativa do Bitcoin chamada btcd. Quando um desenvolvedor criou uma transação multisig muito grande, o btcd não a considerou válida porque continha muitos dados de testemunha. Outras implementações do Bitcoin – mais importante, o Bitcoin Core – não tinham esse limite nos dados de testemunhas da transação Taproot e, portanto, aceitaram a transação e o bloco que a continha como válidos.

O resultado foi que os mineradores continuaram adicionando novos blocos na cadeia porque não estavam usando btcd e de acordo com suas regras nada estava errado, mas os nós LND Lightning não conseguiram reconhecer nenhum desses novos blocos porque eles foram construídos no topo do bloco contendo aquela transação que eles consideraram inválida.

Quando o bug aconteceu novamente em 1º de novembro, não foram apenas os nós LND que foram afetados. Algumas instâncias electrs (uma implementação do servidor backend para Electrum Wallet) também não conseguiram chegar a um consenso com o resto da cadeia. Embora os nós LND tenham ficado fora de consenso por causa de um problema semelhante no BTCD, foi uma implementação do Bitcoin escrita em Rust que fez com que os nós elétricos ficassem para trás, incluindo alguns servidores muito visíveis executado por mempool.space.

Existe o limite para o tamanho dos dados testemunhas para prevenir ataques DoS, e também faz parte do Bitcoin Core (embora o Core tenha um limite maior para transações Taproot). Parece que as outras duas implementações que ficaram fora de sincronia tinham código que manteve o limite menor.

Diferenças muito pequenas nas implementações podem levar à falta de consenso.

Ter múltiplas implementações de Bitcoin é perigoso

Satoshi não gostei da ideia de múltiplas implementações de Bitcoin. “Não acredito que uma segunda implementação compatível do Bitcoin seja uma boa ideia.” A razão que ele deu foi: “Grande parte do design depende de todos os nós obterem resultados exatamente idênticos em sincronia, de modo que uma segunda implementação seria uma ameaça para a rede”.

Ameaça? Qual é o problema?

Você provavelmente já ouviu falar que a rede com maior prova de trabalho é a verdadeira. Quando dois mineradores diferentes encontram um bloco ao mesmo tempo, a cadeia se divide e outros mineradores começam a construir no bloco que ouvirem primeiro.

Assim que um novo bloco é adicionado a um lado da divisão, a maioria dos nós e mineradores aceitam isso como a nova cadeia verdadeira e abandonam o outro lado da divisão. Esses blocos são chamados de blocos obsoletos, embora algumas pessoas os chamem de blocos órfãos.

Como o tempo médio entre os blocos no Bitcoin é de 10 minutos, é provável que toda a rede aprenda sobre esse novo bloco antes que um seja adicionado ao lado perdedor da divisão, e a cadeia com mais trabalho vença.

“Os nós seguirão a cadeia válida com mais trabalho… A palavra-chave aqui é válida. Se o nó receber um bloco que ele considera inválido, não importa quanto trabalho seja feito sobre esse bloco, o nó não aceitará essa cadeia.” - André Chow

A palavra-chave é “válido”. A ameaça aparece quando um minerador encontra um bloco que alguns outros mineradores e nós consideram inválido. Os mineiros que acharem que é válido tentarão construir novos blocos nessa cadeia. Os mineiros que acham que não é válido tentarão construir sobre o último bloco válido que conhecem. O resultado: Duas correntes e nenhuma maneira de saber qual é a verdadeira.

Como no mundo tal coisa aconteceria?

Bem, como vimos no caso do bug recente com nós LND, se houver um bug em uma implementação do Bitcoin que não esteja em outras implementações, isso pode levar à falta de consenso sobre se um bloco é válido ou não.

O Bitcoin não possui um mecanismo para consertar isso. A comunidade fora do protocolo tem que decidir o que acontece a seguir. Parece muito desagradável.

Tanto é verdade que o desenvolvedor do Bitcoin, Peter Todd, disse que outras implementações precisam corresponder ao Bitcoin Core bug por bug.

Aí está: múltiplas implementações são perigosas!

Quais são as outras implementações do Bitcoin e por que elas existem?

Em primeiro lugar, quase todo mundo usa o Bitcoin Core.

Luke Dashjr vê cerca de 43,000 nós, 98% dos quais estão executando Bitcoin Core e algo chamado Coin Dance vê cerca de 15,000 nós, 96% dos quais estão executando Bitcoin Core. Portanto, no momento, parece que poucas pessoas estão usando implementações alternativas.

No entanto, existem projetos ativos que tentam construir e manter outras bases de código que implementem o protocolo Bitcoin. Eles incluem:

Jameson Lopp tem um excelente página com uma lista mais exaustiva e links para todas as outras implementações.

Todos esses projetos têm desenvolvedores extremamente talentosos trabalhando neles, e cada um já existe há mais de alguns anos. Por que colocar tanto esforço em algo que parece um grande problema?

Bitcoin não tem permissão. Qualquer pessoa pode baixar a cadeia; qualquer pessoa pode interagir com a rede; e ninguém pode impedi-lo de codificar ou executar uma implementação alternativa.

Ainda assim, claramente algumas pessoas estão no comando de fazer alterações no repositório Bitcoin e o processo para escolhê-las parece informal. Enquanto houver o Processo de Proposta de Melhoria do Bitcoin (BIP) por sugerir mudanças no Bitcoin Core, também é bastante informal.

Nada disso é um problema direto. Como destaca Marty Bent, consenso aproximado pode ser um ponto forte. Se o processo de mudança do Bitcoin for difícil e pouco claro, isso significa que as mudanças serão examinadas mais detalhadamente.

A próxima etapa do consenso aproximado é ter mais de uma implementação popular.

Não ter múltiplas implementações pode ser mais perigoso

Não há dúvida de que já é um trabalho muito difícil ser uma das pessoas que tem acesso autorizado ao Bitcoin Core. Num mundo onde o Bitcoin desempenha um papel central como instrumento monetário, este trabalho ficará muito mais difícil. Um pequeno grupo de desenvolvedores poderia se tornar um alvo muito valioso. No mínimo, a sua atenção será procurada para fazer lobby por várias inclusões ou exclusões na próxima versão do software.

Pense na indústria de lobby que existe atualmente na política. Por que tal coisa não se desenvolveria em torno das pessoas que têm acesso à única implementação do protocolo Bitcoin?

Tal como os políticos agora, eles serão percebidos como tendo acesso ao poder. Como tal, as pessoas irão atacá-los, exceto que esses desenvolvedores não terão a força de um Estado para defendê-los. Que tipo de vida será essa? Quem o escolheria voluntariamente?

No final das contas, o sistema financeiro global é um peso muito pesado para repousar sobre os ombros do pequeno grupo de pessoas que têm acesso de commit a um repositório GitHub. Talvez não seja tão diferente do sistema financeiro global que estamos a tentar afastar, onde o futuro monetário das pessoas depende das decisões de alguns banqueiros centrais.

Várias implementações para o resgate!

A presença e o uso generalizado de múltiplas implementações na rede Bitcoin podem mitigar essas pressões, tornando muito mais difícil para um ator mal-intencionado alterar o protocolo Bitcoin.

Se os participantes da rede Bitcoin estiverem distribuídos de maneira mais uniforme entre as diferentes implementações, haverá mais espaço para que boas ideias surjam. Propor mudanças no Bitcoin ou rejeitá-las é muito mais descentralizado se não for feito em um único campo.

Claramente, o uso de diferentes implementações de Bitcoin aumenta o risco de uma divisão da cadeia. Uma divisão catastrófica da cadeia – onde uma porção significativa de nós e mineradores se bifurcaram acidentalmente – não seria boa para o Bitcoin, e certamente não seria boa para o seu preço. Mas isso não ameaçaria a natureza sem permissão do Bitcoin.

Um ambiente de desenvolvimento centralizado onde todos constroem apenas no Bitcoin Core pode ameaçar a falta de permissão. A conversa sobre o assunto precisa abordar os riscos de depender tanto do Bitcoin Core, em vez de focar apenas nos problemas que podem ser causados ​​por uma implementação alternativa.

Há um grande e mais velho artigo sobre este debate por Aaron van Wirdum. Você também pode ler um artigo mais recente, tópico informativo sobre isso.

Este é um post convidado de Bill Scoresby. As opiniões expressas são inteiramente próprias e não refletem necessariamente as da BTC Inc ou da Bitcoin Magazine.

Carimbo de hora:

Mais de Bitcoin Magazine