SegWit2x

O SegWit2x é um hard fork da criptomoeda Bitcoin. Resumidamente, hard fork é quando uma blockchain divide-se em dois caminhos distintos que coexistem de modo paralelo. A proposta desta mudança é de duplicar o tamanho dos blocos de transações. Este aumento tem como intenção melhorar a escalabilidade da rede e tornar as transações mais rápidas. A integração do SegWit2x à rede Bitcoin estava prevista para acontecer no dia 16 de novembro de 2017 mas foi suspensa segundo um dos autores Mike Belshe, por não haver o total consenso da comunidade em relação a mudança.

O código do programa da implementação do SegWit2x foi criado no repositório do BTC1 e liderado pelo programador Jeff Garzik. De acordo com o acordo de Nova York, o SegWit2x viria a acontecer 144*90 (centro e quarenta e quatro vezes noventa) blocos após a ativação do SegWit2x. Esse número foi escolhido baseado na criação de blocos a cada 10 minutos, sendo 144 blocos por dia vezes 90 dias.

Contexto

Durante três anos houve muitos debates em relação às preocupações futuras da rede Bitcoin e a maior delas é em relação a sua escalabilidade. O número de usuários do Bitcoin têm aumentado muito, com o número de usuários dobrando a cada 12 meses mas em relação a sua infraestrutura não houve muitas mudanças. Fazendo uma analogia, é como uma cidade onde cresce muito o número de carros na rua mas não há nenhuma melhoria ou aumento das pistas.

Apesar de algumas mudanças terem sido aplicadas, a preocupação em relação ao crescimento da rede ainda é contínua, uma vez que para que um novo fork seja aplicado é necessário haver um consenso dos membros da comunidade do Bitcoin tornando a implementação de novos forks um pouco mais demorado e muitas vezes até suspenso como foi o caso do SegWit2x.

Tamanho do bloco

Em meados de 2015 Gavin Andresen, ex-desenvolvedor do Bitcoin Core, e o desenvolvedor principal do Bitcoin, Mike Hearn, acreditavam que o limite de tamanho de bloco de 1 megabyte do Bitcoin deveria ser aumentado com um hard fork. A partir disso o debate sobre o tamanho dos blocos se intensificou ainda mais e em 2017 o fundador e CEO da DCG, Barry Silbert, também preocupado com um possível fork organizou uma reunião antes da Consensus Conference 2017 em Nova York.

O acordo de Nova Iorque

Esta reunião organizada por Barry Silbert envolveu empreendedores de Bitcoin e outros membros proeminentes da indústria (um pedaço significativo da indústria Bitcoin). Este encontro ficou conhecido como o Acordo de Nova York e ficou decidido que, com base em uma ideia originalmente proposta pelo fundador da RSK Sergio Demian Lerner, a SegWit seria ativado em condições específicas, enquanto também haveria um hard fork para duplicar o limite de tamanho dos blocos do Bitcoin (mudança futuramente conhecido como SegWit2x).

Pontos positivos

Menores taxas de transação e/ou confirmações mais rápidas

Com o aumento dos blocos de Bitcoin, mais transações poderão ser feitas na rede e isso deve aumentar a velocidade das transações e reduzir as taxas médias. Também acredita-se que o aumento do tamanho do bloco trará mais usuários de forma mais rapidamente. Esse aumento do número de usuários pode aumentar a taxa de câmbio de Bitcoin ocasionando o aumento da receita de mineração, o que deveria se traduzir em mais poder de hash para proteger a rede. 

Manter a rede unida

O protocolo alternativo Bitcoin Unlimited, um dos impulsionadores da criação do acordo de Nova Irque, era considerado uma ameaça iminente para a rede Bitcoin. Esse movimento foi liderado por empresas que apoiavam o aumento do limite do tamanho dos blocos da blockchain e opositores da atualização do protocolo SegWit. Essas empresas alavancaram o poder de hash de seus pools de mineração para atrasar a ativação do SegWit, enquanto planejava aumentar o limite do tamanho do bloco com um hard fork. Isso poderia ter “dividido” a rede Bitcoin em duas blockchains e moedas incompatíveis.

O SegWit2x foi apresentado como um compromisso intermediário entre os dois campos de guerra do debate em escala. “Um lado” obteria o SegWit, enquanto o “outro lado” receberia um hard fork de aumento de capacidade. A maioria dos signatários acreditava, pelo menos no momento do acordo, que esta seria uma solução que deveria manter a rede Bitcoin junta.

Pontos negativos

Aumento dos custos

Em contrapartida às menores taxas e confirmações mais rápidas, o aumento dos blocos também aumentam os requisitos de recursos para operar um nó completo, como maior uso de banda e maior tempo de sincronização. Isso aumenta o custo para os usuários individuais participarem da rede.

Efeito centralizador

Blocos maiores tornariam mais devagar a propagação do bloco através da rede peer-to-peer, o que potencialmente beneficia os mineradores maiores e as pools de mineração e isso é visto como mais um efeito centralizador que vai contra toda a filosofia do Bitcoin.

Posicionamento da Comunidade

Gráfico retirado do BitCoin Dance com os dados de Abril 2017 a Dezembro 2017 sobre a aprovação do SegWit2x pela comunidade.

A mudança para duplicar o tamanho do bloco pareceu ser controvérsia e isso traz bastante tensão e incerteza para a comunidade. De acordo com o site Coin Dance, os mineradores do Bitcoin foram maioria em relação ao apoio do hard fork para o SegWit2x. O número de mineradores que apoiam a mudança chegou a 84% em meados de Julho/Agosto e atingiu 95% em setembro e em 06 de dezembro este número ficou em 9%. O principal argumento dos mineradores é que o aumento do tamanho dos blocos é necessário para o crescimento da rede e que também irá reduzir o aumento das taxas de transação que acompanham esse crescimento. Entre os apoiadores estavam também empresas como casas de câmbios de bitcoin, wallet providers, market makers e donos de Cofre de Bitcoin (o posicionamento dessas empresas mudam muito de acordo com o sentimento da comunidade).

Embora uma grande fração da comunidade de mineradores apoiem a mudança, muitas pessoas concordam que o aumento do tamanho do bloco Bitcoin vem com uma série de poréns. A maioria da comunidade de desenvolvedores do Bitcoin, algumas empresas e algumas pools de mineração e (se as pesquisas públicas e os mercados de futuros são representativos) a maioria dos usuários e o mercado não estão à vontade com este hard fork. Alguns deles estão envolvidos em uma espécie de protesto, sob a bandeira “NO2X”.

O site Bitcoin Magazine publicou alguns dos principais pontos levantados pelos que levantas a bandeira "NO2X" que são:

Em contrapartida, também há os pontos dos que apoiam o SegWit2x:

Suspensão do SegWit2x

Gráfico do preço do Bitcoin minutos após o anuncio da suspensão do SegWit2x.

Em 08 de novembro de 2017, em uma postagem, um dos responsáveis pelo SegWit2x anunciou a suspensão do hard fork. Na postagem, ele explicou os principais motivos da suspensão e declarou que a mudança poderia dividir a comunidade e prejudicar o crescimento do Bitcoin, já que não conseguiu o consenso total para a mudança.

Reação à suspensão

A Reação do mercado à suspensão foi quase imediata, aumentando seu preço a quase 400 dólares, pois diminui a tensão e incerteza dos que eram contra o aumento da capacidade dos blocos e dos que achavam que o fork era de alto risco.

Mesmo com a notícia da suspensão, alguns programadores e empresas continuaram insistindo de que a mudança deveria ser feita de qualquer forma e aguardaram ansiosamente pelo bloco 494784 para verificar se o fork 2x seria minerado ou não. A reviravolta foi que havia algum erro no código do SegWit2x e o fez com que parasse no bloco 494782.

A falha na ativação

A diferença de linhas do código no repositório do BTC1 para o do Bitcoin Core era de aproximadamente 500 linhas onde a maioria não era consensus-critical. Mas mesmo assim, haviam bugs em pelo menos 100 linhas de código no suporte para a realização do fork no bloco 494784. A falha mais crítica envolve a principal verificação, que é a condição de verificar se o tamanho possuía 2MB ou mais (anteriormente, a verificação era feita para 1MB). Esta é a parte crítica do código de consenso que rejeita blocos muito grandes e, portanto, requer um hard fork.

A falha encontrada foi na verificação que era foi feita quando o bloco 144 * 90 após a ativação do SegWit foi alcançado. Deveria verificado se o bloco 144 * 90 antes do atual é o que possui o SegWit ativado mas acontece que a verificação foi feita no bloco (144 * 90) - 1 onde o SegWit não havia sido ativado.

O pull request realizado possui cerca de 220 comentários mas a maioria é sobre o aumento do tamanho do bloco para 2mb. Outros fatores que podem ter ocasionado o não percebimento dos bugs, é que apenas uma pessoa aprovou a mudança no repositório e também há algumas reclamações de que o código não foi bem testado pelos desenvolvedores.

Este bug fez com que os mineradores de Bitcoin não pudessem minerar a criptomoeda com os blocos maiores quando necessário. E mesmo que eles procedessem com o fork, eles não iriam conseguir, não de forma automática.Os mineradores teriam, ao invés disso, que configurar manualmente o tamanho dos blocos mas dificilmente saberiam como fazê-lo. Jeff Garzik que defendeu que não havia problemas com o código submeteu um patch no repositório que resolve este problema.

Outros bugs

O bug encontrado na lógica da ativação dos blocos com 2MB não era o único, outro bug foi encontrado no código do BlockAssembler que é o responsável pela criação de novos blocos.Essa parte é mais voltadas para os mineradores que são os responsáveis pela criação de novos blocos. O erro era basicamente uma variável que estava sendo usada mas nunca havia sido declarada e a importância dela é que essa variável é a responsável por definir qual o tamanho e peso que o bloco produzido terá. Se a variável booleana tiver o valor como false, os blocos maiores nunca serão ativados. Esse pull havia sido revisado por apenas um usuário (que provavelmente não percebeu a falha).

Próximos passos

As discussões sobre o futuro da escalabilidade do Bitcoin ainda é algo que vai continuar pelos próximos meses ou até anos. Ainda não se sabe o futuro do SegWit2x, talvez o aumento do tamanho dos blocos das transações seja algo necessário no futuro e talvez ela tenha o tão esperado consenso que não foi obtido na primeira tentativa. Espera-se também que estes acontecimentos sirvam de aprendizado para os próximos forks, pois uma mudança traz muito mais confiança para os usuários de algum software quando ela é feita com calma e bem testada.

Ligações externas

O Commons possui uma categoria com imagens e outros ficheiros sobre SegWit2x

Referências

  1. ↑ «[Bitcoin-segwit2x] Segwit2x Final Steps». lists.linuxfoundation.org. Consultado em 9 de dezembro de 2017
  2. ↑ «Lei de Woo: Usuários de Bitcoin Dobram a cada 12 meses - Portal do Bitcoin». Portal do Bitcoin. 14 de outubro de 2017
  3. ↑ «A Estrada até a SegWit: Como a maior atualização do protocolo Bitcoin se tornou realidade - Portal do Bitcoin». Portal do Bitcoin. 24 de agosto de 2017
  4. ↑ «Coin Dance». coin.dance (em inglês). Consultado em 9 de dezembro de 2017
  5. ↑ «Bitcoin's Big Split: What You Need to Know». Fortune (em inglês)
  6. ↑ «Entenda o SegWit2x: O que está por trás do Hard Fork do Bitcoin - Portal do Bitcoin». Portal do Bitcoin. 8 de outubro de 2017
  7. ↑ «SegWit2x Falha ao Ativar; Entenda - Bitcoin News». Bitcoin News. 22 de novembro de 2017 [ligação inativa]
  8. ↑ «Segwit2x Bugs Explained – Bitcoin Tech Talk». Bitcoin Tech Talk. 20 de novembro de 2017
  9. ↑ Wirdum, Aaron van. «Now the SegWit2x Hard Fork Has Really Failed to Activate». Bitcoin Magazine. Consultado em 11 de dezembro de 2017