“Libbitcoinkernel” é uma atualização abrangente e em andamento do código do Bitcoin que está um pouco fora do radar, , mas provavelmente tornará mais fácil para os desenvolvedores experimentarem mudanças no Bitcoin.
O objetivo do ambicioso projeto é desembaraçar o código do Bitcoin Core — o principal software subjacente ao Bitcoin — de modo que grande parte do código “crítico para a segurança” seja cortado do resto. Isso tende a abrir caminho para novas melhorias no Bitcoin.
Desembaraçar esse código facilita a vida dos desenvolvedores e é provável que as mudanças (eventualmente) se espalhem para os usuários também. Quanto mais rápido os desenvolvedores conseguirem criar novos recursos — sejam eles de privacidade, segurança ou ferramentas de carteira mais fáceis de usar —, mais rápido os usuários poderão aproveitar essas novidades.
Libbitcoinkernel tem um nome prolixo e esotérico porque a ideia é que ele acabará por ser uma biblioteca que os desenvolvedores podem usar. Mas mesmo que seja especificamente voltado para desenvolvedores, essa mudança pode ter consequências mais amplas para o universo BTC.
“O que realmente me atraiu para dedicar tempo à Libbitcoinkernel foi quando percebi que poderia ser uma solução técnica para alguns dos obstáculos sociais do Bitcoin Core”, disse Carl Dong, desenvolvedor de Bitcoin ao Decrypt. Foi ele quem inicialmente liderou o projeto.
Dong tem desde então recuado, deixando o desenvolvedor Spiral, Sebastian Kung, o veterano colaborador do Bitcoin Core, Cory Fields, e outros tomarem as rédeas do projeto. Kung disse ao Decrypt que ele acredita que o Libbitcoinkernel é um dos projetos mais impactantes para se trabalhar no Bitcoin agora.
Evitando um “cenário de pesadelo”
Compreender o Libbitcoinkernel começa com a compreensão do código “de consenso”. O código de consenso é um código crítico de segurança no Bitcoin Core, o código que mantém todos os nós da rede de acordo entre si.
Se metade da rede seguir algumas regras, enquanto a outra metade segue regras ligeiramente diferentes, isso pode levar a um “hard fork” não intencional, em que a rede efetivamente se divide em duas. “Esse é o cenário de pesadelo que mantém os desenvolvedores de Bitcoin acordados à noite”, disse Dong em uma apresentação em vídeo explicando seu trabalho sobre o Libbitcoinkernel.
A questão é que o código de consenso está emaranhado com todo o resto do código do Bitcoin Core. Isso é um baita problema para os desenvolvedores que tentam fazer alterações, porque nem sempre é fácil para eles detectar quando estão tocando em um pedaço de código crítico para a segurança. E mesmo que eles saibam, pode levar algum tempo para contornar isso.
O objetivo do Libbitcoinkernel é extrair lentamente todo esse código em uma biblioteca separada, para que os desenvolvedores que trabalham em outras seções do código não precisem ficar nervosos.
Se os desenvolvedores puderem gastar menos tempo tentando garantir que não estejam acidentalmente cutucando nenhuma bomba no código de consenso, eles podem gastar mais tempo em recursos BTC mais interessantes ou correções de bugs.
“Isso permite que os desenvolvedores façam uma revisão mais focada no código de consenso crítico, enquanto se preocupam menos com o resto do Bitcoin Core. Também permite que os desenvolvedores falem sobre o corpo do código de consenso como uma entidade bem definida pela primeira vez”, disse Kung.
O objetivo ‘maior’: vários clientes de Bitcoin
Há também um segundo objetivo, esse de longo prazo, que pode ser alcançado com a ajuda da Libbitcoinkernel. O Bitcoin Core é a principal implementação do código do Bitcoin. Os usuários o executam para se conectar à rede Bitcoin e verificar as transações.
Mas e se houvesse outras opções além do Bitcoin Core? Se isso fosse uma opção, os desenvolvedores teriam uma maneira de experimentar novos recursos com mais facilidade. “As implementações também podem priorizar os recursos de maneira diferente para atender melhor aos usuários-alvo”, explicou Dong.
Em segundo lugar, várias implementações de Bitcoin podem aumentar a resiliência da rede — se uma implementação for coberta por um bug relacionado a não consenso, a outra implementação pode não ser afetada pelo mesmo bug, mantendo o Bitcoin intacto. Isso poderia reforçar a descentralização do Bitcoin, que é, bem, todo o foco do BTC.
O recurso de vários clientes parece algo fácil, mas não é. Sem o Libbitcoinkernel, muitos desenvolvedores de BTC expressaram preocupações sobre ter várias implementações. O raciocínio remonta ao código de consenso emaranhado. Digamos que o “Bitcoin B” tenta copiar o código do Bitcoin Core. Se os desenvolvedores do Bitcoin B fizerem um único passo em falso reimplementando esse código, a rede poderá se dividir em dois em um hard fork não intencional.
O Libbitcoinkernel poderia mudar isso. Ao extrair o código de consenso em uma biblioteca separada, o Bitcoin Core e o Bitcoin B podem usar o mesmo código de consenso. Não há mais necessidade de se preocupar com discrepâncias sutis de consenso gerando o caos entre as duas implementações.
“Ter uma biblioteca de consenso reutilizável permitiria que as pessoas construíssem implementações alternativas de Bitcoin, que antes eram consideradas muito perigosas por causa das potenciais incompatibilidades de consenso agora eliminadas”, disse Dong.
Aprendendo com tentativas abandonadas
Extrair o código de consenso dos restantes não é uma ideia nova. No início da história do Bitcoin, parte do código de consenso foi extraído, mas o projeto ficou inacabado. Em seguida, uma tentativa de 2016 de ressuscitar o projeto talvez “tenha desmoronado sob o peso de sua própria ambição”, como disse Dong.
Com isso em mente, Dong e Kung têm adotado uma abordagem mais iterativa ao extrair o código de consenso do resto, que “respeita o tamanho do trabalho.”
Dessa forma, o projeto tornou-se um projeto de vários passos, que os leitores ultracuriosos podem acompanhar no GitHub, a Meca do desenvolvedor de código aberto. Os desenvolvedores do projeto contribuíram com dezenas de pull requests — propostas de mudanças no Bitcoin Core — e ainda há muito mais a fazer.
Os desenvolvedores esperam que o projeto completo leve vários ciclos de lançamento. “Este projeto é uma maratona”, disse Dong, “e uma das longas”.
*Traduzido por Gustavo Martins com autorização do Decrypt.
- Quer ganhar mais com Ethereum? Abra sua conta no Mercado Bitcoin, a corretora mais segura do Brasil, e comece a fazer staking agora mesmo