Bitcoin XT, Forks e tudo mais (parte 2)

No post anterior eu expliquei o que eram os forks, e o que isso tinha a ver com o Bitcoin XT. Nesse post vou tentar esmiuçar um pouco o que é o Bitcoin XT.

Histórico

Desde os primórdios do bitcoin, o tamanho do bloco é o principal fator limitador da capacidade da rede de processar transações. No modelo atual, um bloco pode ter no máximo um megabyte de tamanho, o que limita o numero de transações a cerca de 7 por segundo 1)2). Hoje isso parece ser o suficiente, e a não ser em casos onde tentam fazer um “flood” na rede 3). Mike Hearn, o principal desenvolvedor do bitcoin XT fez estimativas usando o valor corrigido de 3,2 transações por segundo4) seria atingido ainda no primeiro semestre de 20165)6).

Dos piezas - on Flickr

Surgiram então ao menos 3 propostas de aumento dos blocos, defendidas por diferentes membros do “core developers”7). O Jeff Garzik criou o BIP 1008), que propunha um sistema de votação para aumento dos blocos e o BIP 102 9) que aumenta o bloco para 2Mb uma única vez. O Gavin Adresen propôs o BIP 10110), que propunha um aumento fixo inicial para 8Mb, dobrando esse tamanho a cada 2 anos até o limite de 20Mb. Por ultimo, o Pieter “sipa” Wuille fez uma proposta conciliatória11) que ficou conhecida como BIP “sipa” e não chegou a ganha numeração definitiva12). Essa proposta aumenta o blockchain gradualmente a cada 97 dias, numa média de 17.7% ao ano a partir de 2017. Os outros dois desenvolvedores do grupo13)14) se posicionaram contra o aumento do tamanho do bloco, por entre outros motivos15) acharem que forçar um hard fork sem consenso da comunidade seria arriscado.

Nesse contexto, a comunidade e os desenvolvedores não conseguiram entrar em consenso. O Gavin Adresen como lider nominal do grupo se sentia pressionado para que uma decisão fosse tomada rapidamente16). Aqui entra  em cena o Mike Hearn que já estava descontente com a forma como time de core developers tomava as decisões sobre o desenvolvimento do bitcoin e já vinha se desentendendo com alguns deles17). Ele então convenceu o Gavin Andresen a ajudá-lo em um novo projeto, construído em cima do Bitcoin Core, onde o processo de tomada de decisão fosse mais ágil e mais focado em atender as necessidades do usuário. O carro chefe desse novo projeto seria a BIP 101 do Gavin, mas ele comportaria outra mudanças. Em meados de agosto o projeto gerou seu primeiro fruto, que é o Bitcoin XT.18)

O que vem no pacote?

O Bitcoin XT, como o próprio projeto diz, nada mais é que uma série de patches aplicados ao Bitcoin Core para conduzi-lo na direção que os novos desenvolvedores, em especial o Mike Hear, acham correta19). O pacote completo de patches inclui, além do BIP 101, as seguintes funcionalidades:20)

  • Retransmissão de double spending pelos clientes (para facilitar a identificação de golpistas, a rede não mais filtrará as tentativas de gastar duas vezes a mesma moeda);
  • BIP 64 – “getutxos”, que permite que informações sobre transações sejam requisitadas na rede, auxiliando na implementação de carteiras descentralizadas e permitindo melhorias na interface;
  • Melhorias na lista de DNS seeds, permitindo maior diversidade e robustez nas conexões da rede;
  • Funcionalidades anti DoS – Duas propostas de proteção contra DoS, uma do Mike Hearn, outra do Tom Harding foram implementadas;

Votação e entrada em operação

O aumento de blocos não é uma mudança trivial, e não pode ser feito com uma mera atualização do software. É preciso forçar um hard fork na rede. Não existe uma forma de fazer a transição suave (usando soft forks), porque os blocos de tamanho maior seriam fatalmente rejeitados pelos clientes antigos, e não há uma maneira alternativa de encaixá-los no protocolo já que foi implementado como uma regra fixa em todos os clientes.21). Um hard fork é uma medida arriscada, que pode gerar prejuízos se feito apenas por uma parcela da rede. Normalmente ele é conduzido com o consenso da comunidade que atualiza os principais nós e clientes da rede antes de um prazo pré estabelecido. Entretanto a implementação do aumento de blocos ainda é um assunto polêmico, e o consenso nunca foi atingido. Então o Bitcoin XT se utiliza de um mecanismo de “votação” para mensurar o consenso da rede, e só após esse consenso ser atingido é que ele irá ativar as novas funcionalidades. Nesse meio tempo, ele opera exatamente igual a um cliente bitcoin core.

LuMaxArt Free Election 01

A votação tem uma regra bem simples: Após 11 de janeiro de 2016, se em algum momento 750 dos últimos 1000 blocos minerados (75%) forem marcados com o numero de versão do Bitcoin XT, o sistema considera que o consenso foi atingido.22) Uma mensagem pedindo a atualização da carteira para o XT é então enviada e exibida em todas as carteiras que ainda não foram trocadas pela versão XT, e após 2 semanas, as regras do XT passam a valer. Essa regra muda a dinâmica de obtenção de consenso de forma prévia para o que os autores do XT chama de “Economic majority voting”23), e é um dos principais pontos de crítica a forma como o projeto é conduzido 24)

Não existe Bitcoin XT, apenas Bitcoin

Em todas as discussões que acompanhei na internet o que mais tenho visto é a dificuldade de entender o que exatamente é o Bitcoin XT. Apesar da discussão ser complexa e cheia de nuances, termos tecnicos especificos do bitcoin como “fork”, “blockchain” e “broadcast de transações”, um ponto é bastante claro:

O Bitcoin XT e o Bitcoin são uma coisa só.

O bitcoin XT é uma carteira que implementa um conjunto de regras mais abrangente (blocos maiores), e por isso necessita de um hard fork para entrar em operação, mas ele não cria uma moeda paralela nem “mata” o bitcoin. Mudanças de regras no bitcoin sempre foram implementadas e nem por isso ele deixou de ser “bitcoin”. O bitcoin não deixa de existir, nem é substituído pelo XT. O XT apenas atualiza as regras de validação de blocos que o bitcoin usa, estabelecendo um novo consenso na rede, agora com blocos maiores25). A moeda continua sendo o bitcoin, a blockchain continua sendo a blockchain do bitcoin e a rede continua sendo a rede bitcoin. A expectativa dos desenvolvedores do XT é que o consenso seja atingido ainda durante  o período de duas semanas da atualização do XT e que no momento em que o primeiro bloco maior do que 1Mb for gerado, já não existam clientes desatualizados rodando na rede.26)

Existe uma controvérsia quanto ao que acontecerá se o defensores radicais do bitcoin core continuarem minerando e mantendo o bitcoin core vivo e conectado à rede. O próximo artigo irá focar nesse problema e em outros possíveis problemas do XT.

References

↑ 1. Bloco de 1Mb, 250 bytes por transação, um bloco a cada 10 minutos, ou 600 segundos, em média $$ \Rightarrow \frac{1000000}{250 \times 600} \approx 6.66$$
↑ 2. A conta de 250 bytes por transação foi feita pelo próprio Gavin Andresen e postada aqui
↑ 3. referencia par ao flood de transações na rede
↑ 4. 3,2 transações por segundo é o limite atualmente aceito pois o tamanho médio de transações cresceu desde a previsão do Adresen, veja aqui
↑ 5. ver “Bitcoin’s seasonal affective disorder“, por Mike Hearn
↑ 6. Opinião pessoal do autor aqui, olhando o gráfico de tamanho médio dos blocos (e não de numero de transações, como o Hearn fez) vejo que o crescimento dele é sublinear – pode ter a ver com a variação sazonal que ele explica no artigo – e, a não ser durante os ataques de flood que podem ser mitigados de outras maneiras, não está nem perto de chegar no limite dentro de um ano. Veja nesse gráfico
↑ 7. Core developers é o nome dado ao time principal de desenvolvimento do bitcoin core
↑ 8. BIP 100, por Jeff Garzik
↑ 9. BIP 102, por Jeff Garzik
↑ 10. BIP 101, por Gavin Andersen
↑ 11. como traduzir “compromise”, meu deus?
↑ 12. BIP “sipa”, por Pieter Wuille
↑ 13. Posição do Gregory Maxwell
↑ 14. Posição do Wladimir J. van der Laan
↑ 15. Veja um resumo dos argumentos aqui
↑ 16. citação: “A lot of people are pushing me to be more of a dictator (like Mike) … that may be what has to happen with the block size. I may just have to throw my weight around and say this is what it’s going to be. If you don’t like it, find another project.”
↑ 17. sobre a discussão com o Wladmir J. van der Laan
↑ 18. Why is Bitcoin forking?, por Mike Hearn
↑ 19. citação: “Bitcoin XT is an implementation of a Bitcoin full node, based upon the source code of Bitcoin Core. It is built by taking the latest stable Core release, applying a series of patches, and then doing deterministic builds so anyone can check the downloads correspond to the source code.”
↑ 20. Veja a lista detalhada dos patches
↑ 21. ver 1 e 2 para mais detalhes
↑ 22. O andamento da votação pode ser acompanhado aqui
↑ 23. ver “economic majority voting“, no bitcointalk
↑ 24. o outro é a estrutura hierárquica de tomada de decisão
↑ 25. estou deliberadamente ignorando as outras mudanças introduzidas pelo XT pois elas não envolvem a blockchain nem o fork, apenas afetam a apresentação ou a conectividade dos clientes, e mesmo que não forem implementadas em carteiras alternativas, não impediriam o funcionamento correto delas
↑ 26. ver uma discussão sobre isso aqui

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.