Taproot, a proposta de atualização do Bitcoin para contratos inteligentes compactos e que preservam a privacidade, está se aproximando da ativação.
O próprio código Taproot já havia sido incluído na versão mais recente do Bitcoin Core (Bitcoin Core 0.21.0), que é hoje a implementação de referência do protocolo Bitcoin. A próxima etapa foi implantar o código de ativação para que a atualização comece a operar na rede.
Mas devido a divergências técnicas e filosóficas na comunidade sobre como o Bitcoin deveria ser atualizado, a discussão sobre a ativação do Taproot acabou sendo um debate longo e – às vezes – acalorado.
Dos debates surgiram dois caminhos diferentes de ativação da atualização, embutidos em dois clientes de software principais que poderiam, em alguns cenários, se tornar incompatíveis um com o outro.
Esta é a história desses dois principais clientes de ativação do Taproot, a diferença entre eles e alguns cenários possíveis no futuro.
A ativação do Taproot tem sido tema de discussão na comunidade de criptomoedas desde o início de 2020.
Ao longo de mais de um ano de debates na lista de e-mails dos desenvolvedores do Bitcoin – em um canal IRC (protocolo de comunicação usado para bate-papo) dedicado e outros fóruns de discussão – um consenso aproximado pareceu ter se formado em torno do uso da Proposta de Melhoria do Bitcoin 8 (BIP 8) para ativar um soft fork.
Isso permitiria que os mineradores ativassem o soft fork ao sinalizar prontidão, até que o tempo limite fosse atingido.
O ponto central da discussão ficou em torno do que deveria acontecer se não houvesse mineradores suficientes para sinalizar prontidão quando o tempo limite fosse atingido, refletido no parâmetro Lock-in On Timeout (LOT).
Se LOT for definido como “falso” (LOT=false), a atualização simplesmente expira no tempo limite. Depois disso, um novo mecanismo de ativação pode ser considerado.
No entanto, se LOT for definido como “verdadeiro” (LOT=true), os nós a partir desse ponto aceitarão apenas blocos de sinalização e rejeitarão quaisquer outros blocos. Nesse caso, a ativação do Taproot é garantida se a quantia necessária de blocos sinalizados forem minerados.
Sem entrar em todos os argumentos de ambos os lados do debate do LOT, o desacordo parecia estar caminhando para um impasse.
Para evitar isso, outras propostas foram consideradas, como por exemplo a ativação do flag day sem sinalização de poder de hash.
Talvez a proposta mais importante partiu de alguns proponentes que defendem o LOT=true. Eles decidiram lançar um cliente LOT=true: um fork do Bitcoin Core 0.21.0 que ativaria a atualização Taproot usando LOT=true, independente do que o projeto Bitcoin Core faria (se fizesse alguma coisa).
Mas, como uma reviravolta de última hora, uma espécie de meio-termo entre diferentes facções foi encontrada em uma proposta chamada “Speedy Trial”. O Speedy Trial ofereceria uma janela rápida de três meses para os mineradores sinalizarem que estão prontos para a atualização.
Se os mineradores de fato sinalizassem prontidão, a Taproot seria ativada no final do ano; um atraso foi incorporado na estimativa para permitir que os usuários também tenham tempo suficiente para atualizar.
Em um primeiro momento, os proponentes do LOT=true aceitaram o Speedy Trial porque ele foi rápido o suficiente para não atrapalhar a ativação, enquanto os defensores do LOT=false aceitaram Speedy Trial porque ele é, essencialmente, uma implementação do tipo LOT=false, só que em um cronograma mais curto.
A solução não era realmente o que a maioria dos dois lados do debate esperava, mas pelo menos era mais aceitável do que qualquer outra coisa.
Ou pelo era, até que os detalhes sobre o Speedy Trial estavam sendo finalizados e ambos os lados ainda discordavam sobre os detalhes da implementação que tornariam o Speedy Trial mais ou menos compatível com o cliente LOT=true.
A divisão filosófica original entre LOT=true e LOT=false, bem como a discordância sobre os detalhes de implementação do Speedy Trial, resultaram em dois clientes diferentes da ativação Taproot. De um lado, o Bitcoin Core 0.21.1; do outro, o cliente LOT=true, denominado de Taproot Client 0.1 baseado no Bitcoin Core 0.21.0.
Bitcoin Core 0.21.1, referido no restante deste artigo como simplesmente “Bitcoin Core”, é o próximo lançamento que chega aos clientes de software do Bitcoin Core.
Ele é desenvolvido e aprovado pela maioria dos contribuidores regulares do Bitcoin Core. Um candidato ao lançamento do Bitcoin Core 0.21.1, publicado no dia 19 de abril, poderá em breve ser confirmado como o lançamento oficial. De qualquer forma, um lançamento acontecerá em breve.
O Bitcoin Core vai utilizar a implementação final do Speedy Trial para ativar o Taproot. Isso significa que o período de sinalização de poder de hash começou depois do dia 23 de abril, no primeiro período de dificuldade de duas semanas que atualmente está estimado para começar em 2 de maio. O período de sinalização irá expirar no final das últimas duas semanas de dificuldade, antes de 11 de agosto.
Se pelo menos 90% dos mineradores sinalizarem prontidão para a atualização, em qualquer um dos períodos de dificuldade de duas semanas das datas citadas, o Taproot será ativado no bloco 709632 da blockchain do Bitcoin, estimado para ser minerado em meados de novembro.
Se os mineradores não ativarem o Taproot até o final do período de sinalização, a atualização irá expirar. Os desenvolvedores do Bitcoin Core irão então reavaliar e, provavelmente, introduzir um código diferente de ativação para um futuro lançamento do Bitcoin Core. No entanto, ainda não foi decidido qual será esta (presumida) segunda solução de ativação.
O Taproot Client 0.1 baseado no Bitcoin Core 0.21.0, para o restante deste artigo simplesmente referido como “Bitcoin Taproot,” é o cliente LOT=true.
Bitcoin Taproot é um fork de software do Bitcoin Core 0.21.0, o último grande lançamento do Bitcoin Core, mas com BIP 8 de ativação original adicionado ao Taproot.
O projeto é mantido pelos membros da comunidade conhecidos como ‘Bitcoin Mechanic’ e ‘Shinobi’, junto com Luke Dashjr, o contribuidor mais notável e experiente do projeto que também é desenvolvedor do Bitcoin Core e o líder do Bitcoin Knots. Embora “Bitcoin Core” seja referenciado no nome do cliente, a maioria dos contribuidores regulares do Bitcoin Core não endossa este cliente específico.
Bitcoin Taproot conta com um período de sinalização que começará no bloco 681408 da blockchain do Bitcoin, estimado para ser minerado em 2 de maio. Esse será (quase certamente) o mesmo bloco que marcará o início do período de sinalização do Speedy Trial. O fim desse período está marcado para o bloco 760032, que será minerado por volta de outubro de 2022.
Se pelo menos 90% dos mineradores sinalizarem prontidão para o Taproot ao longo de qualquer um dos períodos de dificuldade de duas semanas entre esses dois blocos, a atualização será ativada no bloco 709632 da blockchain do Bitcoin. Caso já tenha passado desse bloco, a atualização chega duas semanas após o limite de sinalização ser atingido.
Em outras palavras, o Taproot poderia tanto ser ativado já em novembro deste ano – no mesmo período que Speedy Trial do Bitcoin Core -, assim como poderia demorar até o fim do ano que vem, em novembro de 2022, para ser ativado.
Além disso, e o mais importante, o Bitcoin Taproot usa LOT=true. Enquanto o Speedy Trial do Bitcoin Core simplesmente expiraria se os mineradores não sinalizassem prontidão, o Bitcoin Taproot acabaria obrigando os blocos a sinalizar prontidão, já que os blocos que não o fazem serão rejeitados (se houver).
Isso significa que o limite de sinalização será definitivamente atingido (assumindo que blocos de sinalização suficientes sejam minerados) e a ativação do Taproot é garantida.
Existem atualmente três diferenças entre o Bitcoin Core e o Bitcoin Taproot.
A primeira diferença é (indiscutivelmente) a menor. Bitcoin Core usa datas e horas para marcar quando seu período de sinalização pode começar e terminar, enquanto o Bitcoin Taproot usa apenas alturas de bloco.
A maioria dos desenvolvedores do Bitcoin Core considera essa diferença pequena ou mesmo trivial; tão trivial que alguns pensaram que poderia ser decidida por meio de um “cara ou coroa”, mas acabaram decidindo usar datas e horas.
Por outro lado, o mais notável contribuidor do Bitcoin Taproot, Dashjr, tem uma forte preferência por usar alturas de bloco.
Em suma, os argumentos para usar a altura do bloco se baseiam no fato de que esse método elimina cenários extremos em que um período de dificuldade termina bem no final da janela de sinalização. Dessa forma, usar a altura de bloco pode impedir que aconteça ataques de timewarp, onde mineradores conspiram para falsificar o tempo de um bloco.
Além disso, é mais consistente: a atualização definitivamente começa a ser aplicada em uma altura de bloco específica, independentemente da data e hora. Dashjr também acredita que a comunidade do Bitcoin já havia decidido usar a altura do bloco para ativação, antes mesmo do Speedy Trial entrar em cena.
Os argumentos daqueles que defendem o uso de tempo para marcar um bloco é de que isso permite aos humanos agendar atualizações em datas mais precisas. Além disso, o método requer menos alterações de código em comparação com as ativações soft fork anteriores e é, em alguns casos, mais conveniente para executar simulações em certas redes de teste.
A segunda diferença, maior, é que o período do Speedy Trial do Bitcoin Core dura cerca de três meses, enquanto no caso do Bitcoin Taproot, pode se estender por até 18 meses.
Enquanto os períodos de sinalização para Bitcoin Core e Bitcoin Taproot são praticamente garantidos para começar ao mesmo tempo, o fim do período para o Bitcoin Taproot vai demorar até 15 meses a mais.
A terceira e maior diferença entre as propostas é que o período de sinalização do Bitcoin Core vai expirar apenas se os mineradores não sinalizarem prontidão antes do final do período de três meses (ponto em que uma estratégia diferente de ativação pode ser considerada). Já o Bitcoin Taproot usa LOT=true para, eventualmente, aceitar apenas os blocos de sinalização e, assim, garantir a ativação do Taproot.
Bitcoin Core e Bitcoin Taproot estão começando como compatíveis um com o outro. Eles coexistem na mesma rede Bitcoin, aceitam (e rejeitam) os mesmos blocos Bitcoin e geram o mesmo blockchain de Bitcoin a partir desses blocos.
Esse continuará sendo o caso se os mineradores ativarem o Taproot antes do prazo final do Speedy Trial. Nesse caso, os nós Bitcoin Core e Bitcoin Taproot começarão a aplicar a atualização Taproot a partir do bloco 709632 do Bitcoin (novembro).
Mas se os mineradores não sinalizarem que estão prontos antes do prazo final do Speedy Trial, o Bitcoin Core e o Bitcoin Taproot podem se tornar incompatíveis. Existem dois cenários principais em que isso pode acontecer.
Obviamente, se a maioria dos mineradores não estiverem preparados até o final do período de sinalização do Bitcoin Taproot (outubro de 2022), os nós Bitcoin Taproot começarão a rejeitar os blocos sem sinalização, que os nós Bitcoin Core ainda aceitarão.
Em outras palavras, o blockchain seria dividido entre nós Bitcoin Taproot e nós Bitcoin Core. A divisão teria potencial de durar, o que significa que haveria duas blockchains do Bitcoin e duas moedas diferentes; uma “divisão da moeda” portanto.
Outro impacto menos óbvio é que a maioria dos mineradores poderia, a qualquer momento após o período de sinalização do Speedy Trial, mas antes do final do período de sinalização do Bitcoin Taproot, dar um “sinal falso”. Ou seja, eles poderiam sinalizar prontidão sem realmente planejar fazer cumprir as regras do Taproot.
Isso por si só não tornaria os nós Bitcoin Taproot e Bitcoin Core incompatíveis. Mas eles teriam uma interpretação diferente do protocolo do Bitcoin: o Bitcoin Taproot aplicaria as regras do Taproot, enquanto o Bitcoin Core não.
Isso poderia, por sua vez, dividir a rede se uma transação Taproot inválida for minerada. Os nós do Bitcoin Taproot rejeitariam o bloco que inclui esta transação, enquanto os nós do Bitcoin Core o aceitariam muito bem já que eles não estariam aplicando as regras do Taproot.
Se a maioria dos mineradores continuasse a construir no bloco Taproot inválido, isso também resultaria em uma divisão da moeda.
Nenhum desses cenários, no entanto, acontecerá em breve. O mais cedo que uma divisão de moeda poderia acontecer é em novembro deste ano, enquanto o período de sinalização do Speedy Trial terminaria em agosto.
Isso deixaria pelo menos três meses em aberto para o Bitcoin Taproot ou o Bitcoin Core resolver a incompatibilidade, se eles quiserem fazer isso — ou para os usuários de Bitcoin e mineradores agirem de acordo.
*Este artigo foi traduzido com permissão do autor e publicado originalmente na Bitcoin Magazine.
Sobre o autor
Aaron van Wirdum é editor-técnico da Bitcoin Magazine. Cobre Bitcoin e mercado de criptomoedas desde 2013, com foco em privacidade e escalabilidade.