O mês de novembro se aproxima e com ele vem a possibilidade de uma nova divisão (hard fork) na rede do bitcoin. A proposta denominada SegWit2X tem como objetivo implementar uma alteração no tamanho máximo dos blocos de transações de bitcoin, o que poderia dobrar a capacidade de processamento.
Contudo, o SegWit2X tem gerado controvérsia entre a comunidade técnica pelo fato desta proposta não apresentar proteção contra ataques de repetição [replay attacks protection].
Antes de entendermos do que isso se trata, precisamos falar sobre como funciona uma transação na rede do bitcoin.
As transações de bitcoin podem ser analogamente pensadas como cheques bancários. A rede do bitcoin, por sua vez, é um livro global que registra as transações desses cheques. Como a rede é aberta, qualquer um pode auditá-la. Para fazer isso, basta fazer um download da cópia completa da blockchain, ou seja, do livro de registro. As transações de bitcoin também são públicas e qualquer um pode olhar a assinatura digital de uma transação e verificar se ela é válida.
Uma divisão na rede, também conhecida pelo termo técnico hard fork, é uma atualização do livro global de registros (blockchain). Se todo mundo atualizar, o livro permanece o mesmo. Se nem todos fizerem isso, teremos dois livros: a blockchain original e a blockchain que se atualizou e ramificou (forked).
Quando uma rede ramifica, ela mantém o histórico de transações que ocorreu até o momento exato de sua separação da rede original e começa a incluir os novos blocos de transações que passam a acontecer somente na rede atualizada. Isso foi o que aconteceu no dia 1º de agosto com o hard fork do Bitcoin Cash.
Se você tem fundos na blockchain antes da divisão na rede, você terá a mesma quantidade nas duas redes após o hard fork. Mas e se você quiser gastar moedas em uma rede e não quiser gastar na outra?
É aí que vem o problema, porque se você gastar em uma blockchain, alguém poderá copiar o mesmo cheque, que contém a sua assinatura, e apresentá-lo para ser incluído na blockchain que se ramificou. Ou seja, eles podem gastar o seu dinheiro na outra rede porque a sua assinatura é válida em ambas. É claro que para quem você está enviando o dinheiro e a quantidade precisam ser idênticas (ou a assinatura será inválida), mas isso ainda assim é um problema.
A pessoa que está apresentando a cópia do cheque na outra rede está repetindo a transação, ou seja, isso é um ataque de repetição.
O Bitcoin Cash resolveu esse problema ao mudar o cheque de maneira sutil. Eles criaram uma marca especial que o identifica como sendo da rede do Bitcoin Cash e não da rede original do Bitcoin. Assim, qualquer computador que esteja auditando a rede do Bitcoin irá automaticamente rejeitar o cheque do Bitcoin Cash e vice-versa.
Esta marca especial é chamada de proteção de repetição [replay protection].
Os desenvolvedores por trás do SegWit2X estão se recusando a adicionar a função de proteção de repetição no código. Ao invés disso, eles estão dizendo que o Bitcoin Core, que é o time de desenvolvedores do Bitcoin original, deveria adicionar a proteção em sua própria rede, se isso for uma preocupação.
O problema é que a maioria das proteções contra repetição são, por essência, hard forks da rede. Ou seja, para se implementar isso na rede original do Bitcoin, seria necessário ramificá-la, criando uma versão, digamos, chamada “Bitcoin original com proteção contra repetição”.
O time do Bitcoin Core se recusa a fazer isso, principalmente pela falta de tempo para executar essa atualização e o consequente hard fork que seria gerado.
Em um cenário hipotético, se isso ocorresse, teríamos: o bitcoin original, o bitcoin original com a proteção, o bitcoin cash e o bitcoin 2X. Teríamos quatro versões!
Restam cerca de 45 dias para que os desenvolvedores cheguem a um acordo ou não. Se o 2X acontecer realmente e não tiver a proteção contra repetição, os próprios usuários precisarão tomar precauções para se prevenir dos possíveis ataques ou terão que contar com a boa vontade das corretoras que precisarão desenvolver maneiras de proteger aos seus clientes.