SegWit2x

Origem: Wikipédia, a enciclopédia livre.

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.[1] 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.[2]

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[editar | editar código-fonte]

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[3] 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[editar | editar código-fonte]

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.[4] 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[editar | editar código-fonte]

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[editar | editar código-fonte]

Menores taxas de transação e/ou confirmações mais rápidas[editar | editar código-fonte]

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[editar | editar código-fonte]

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[editar | editar código-fonte]

Aumento dos custos[editar | editar código-fonte]

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[editar | editar código-fonte]

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[editar | editar código-fonte]

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%.[5] 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.[6] 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”.[7]

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

  • NÃO para “acordos de portas fechadas”. Muitos não ficaram satisfeitos com o fato da decisão da implementação do SegWit2x ter sido tomada em uma reunião privada por um grupo relativamente pequeno. Embora haja um canal de discussão no BTC1, ele não é muito movimentado, ou seja, não há muitas discussões da implementação. 
  • NÃO para hard forks controversos e apressados. As regras do sistema não devem ser alteradas em relação à vontade de um usuário: isso prejudicaria a confiança neste tipo de dinheiro. E mesmo que o fork não fosse controverso, a implementação do SegWit2x foi feita em apenas três meses e muitos acreditam que o tempo mínimo necessário para preparar melhor a comunidade é de 1 a 2 anos.
  • NÃO para confusão da marca. Caso houvesse uma divisão do Bitcoin, muitos usuários poderiam se confundir na hora de identificar qual é qual podendo ocasionar uma compra de um Bitcoin quando se queria comprar o outro ou até transferir a cripto-moeda errada. Uma solução para isso seria a troca do nome do novo fork.
  • NÃO para os mineradores sendo o fator decisivo. Os usuários acreditam que eles é quem devem decidem qual moeda eles querem comprar ou aceitam como pagamento. Ou seja, são eles quem decidem qual protocolo é mais valioso. E segundo os oposicionistas, este é o protocolo que os mineiros querem minerar e ponto.

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

  • SIM para baixar taxas de transação e/ou confirmações mais rápidas. Como já dito anteriormente, o aumento do tamanho dos bloco devem aumentar a velocidade das transações e reduzir as taxas médias.
  • SIM para o comprometimento e mantimento da palavra. O acordo de Nova Iorque propôs como solução tanto a implementação do SegWit como o aumento do tamanho dos blocos (SegWit2x) e como apenas o SegWit foi devidamente implementado e integrado, o acordo ficaria feito pela metade.
  • SIM aos mineradores sendo o fator decisivo. O número de mineradores que apoiaram o SegWit2x chegou a 95% e alguns defensores da mudança dizem que os mineradores são quem decidem ou devem decidir o futuro dos protocolos do Bitcoin.

Suspensão do SegWit2x[editar | editar código-fonte]

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[editar | editar código-fonte]

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.[8]

A falha na ativação[editar | editar código-fonte]

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.[9]

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.[10]

Outros bugs[editar | editar código-fonte]

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[editar | editar código-fonte]

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[editar | editar código-fonte]

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

Referências

  1. «Hard Fork». Wikipédia, a enciclopédia livre. 9 de dezembro de 2017 
  2. «[Bitcoin-segwit2x] Segwit2x Final Steps». lists.linuxfoundation.org. Consultado em 9 de dezembro de 2017 
  3. «Lei de Woo: Usuários de Bitcoin Dobram a cada 12 meses - Portal do Bitcoin». Portal do Bitcoin. 14 de outubro de 2017 
  4. «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 
  5. «Coin Dance». coin.dance (em inglês). Consultado em 9 de dezembro de 2017 
  6. «Bitcoin's Big Split: What You Need to Know». Fortune (em inglês) 
  7. «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 
  8. «SegWit2x Falha ao Ativar; Entenda - Bitcoin News». Bitcoin News. 22 de novembro de 2017 
  9. «Segwit2x Bugs Explained – Bitcoin Tech Talk». Bitcoin Tech Talk. 20 de novembro de 2017 
  10. Wirdum, Aaron van. «Now the SegWit2x Hard Fork Has Really Failed to Activate». Bitcoin Magazine. Consultado em 11 de dezembro de 2017