092015–2017

Blocksize War: quem pode mudar as regras do Bitcoin

A disputa não começou com heróis e vilões, mas com blocos cheios. Terminou com várias cadeias e uma resposta prática: nem o hashpower, nem as empresas, nem os programadores determinam sozinhos aquilo que um nó tem de aceitar.

Um megabyte parecia um parâmetro técnico que computadores mais rápidos e um benchmark razoável resolveriam. Em 2015, transformara-se numa disputa sobre a futura forma do dinheiro e sobre as pessoas que podiam dizer o que era o Bitcoin. Gavin Andresen e Mike Hearn defendiam blocos muito maiores. Programadores como Pieter Wuille e Gregory Maxwell alertavam para o preço que os operadores de nós pagariam. Mineradores, exchanges, investidores e utilizadores anónimos acrescentavam a sua própria pressão. A Blocksize War não foi uma única discussão nem um duelo entre dois campos. Foi uma sequência de propostas, ultimatos, conferências, versões de software e prazos ao longo de dois anos, durante a qual cada grupo descobriu a diferença entre aquilo que podia influenciar e aquilo que podia impor.

01

Blocos cheios e dois receios diferentes

À medida que a utilização crescia, os blocos aproximavam-se do limite e as taxas subiam. Os defensores de blocos maiores alertavam que transações caras expulsariam os pagamentos correntes e transformariam o Bitcoin numa rede para ricos. Os defensores de uma abordagem mais cautelosa alertavam que o rápido crescimento dos dados e dos requisitos reduziria a possibilidade de executar um Full Node em casa e concentraria a verificação em centros de dados.

Ambos os lados falaram sobre descentralização, mas mediram-na de forma diferente. Um lado, pelo número de pessoas que podem pagar uma transação; o outro, pelo número de pessoas que podem verificar as regras de forma independente. As propostas Bitcoin XT, Classic e posteriores Unlimited prometiam aumentos diretos. O desenvolvimento em torno do SegWit procurou alterar o formato da transação e usar o espaço de forma mais eficiente.

O limite de um megabyte não era uma lei natural nem o objetivo original do Bitcoin. Satoshi introduziu-o para proteger a rede ainda jovem de blocos demasiado grandes. A disputa não era, portanto, sobre a possibilidade de alterar uma única constante sagrada, mas sobre a rapidez do crescimento sem transferir a verificação para as pessoas com as ligações mais rápidas, os maiores discos e a maior paciência para a sincronização inicial. Mesmo uma pequena alteração técnica continha uma visão a longo prazo de quem poderia dizer: eu próprio verifiquei as regras.

O BIP101 de Andresen propunha um salto para oito megabytes e depois um crescimento previsível do limite. Hearn incorporou-o no cliente Bitcoin XT e ambos pediram publicamente a mineradores e utilizadores que apoiassem a alteração. Para eles, uma fila cheia de transações quebrava a promessa original de dinheiro eletrónico barato. Se um novo utilizador tivesse de disputar um pequeno pagamento com uma taxa elevada, a rede perderia para os cartões antes de chegar à vida quotidiana.

Do outro lado não estavam pessoas que desejassem manter o Bitcoin pequeno. Pieter Wuille propôs o Segregated Witness, enquanto Gregory Maxwell e outros programadores falavam de segundas camadas e de usar cada byte com maior eficiência. A preocupação deles olhava vários passos em frente: um bloco maior hoje significa requisitos maiores de ligação, armazenamento e verificação para sempre. Quando deixa de ser prático operar um nó em casa, o utilizador começa a confiar no servidor de outra pessoa. Ambos os campos protegiam a acessibilidade; cada um via-a num lado diferente da transação.

02

O Acordo de Nova York

Em maio de 2017, um grupo de grandes empresas e mineradores anunciou o New York Agreement. O plano SegWit2x combinava a rápida ativação do SegWit com um posterior Hard Fork para um bloco base de dois megabytes. Os signatários afirmavam representar uma grande parte do hashpower e do volume de transações e agiam como se a coordenação das principais empresas pudesse encerrar a disputa.

O acordo, porém, não vinculava os utilizadores que executavam outro software. Os críticos rejeitavam sobretudo a ideia de que uma reunião à porta fechada pudesse prometer, em nome da rede, uma alteração incompatível. Os mineradores podem propor blocos e as empresas dar-lhes uma marca; um nó continua a poder declará-los inválidos.

O anúncio original falava de 58 empresas de 22 países e de 83,28 por cento do hashpower. Os números tinham peso, mas não mediam o consentimento dos nós independentes nem das pessoas que guardavam bitcoin fora dos serviços dos signatários. A união do SegWit a um hard fork posterior criou ainda uma troca política: cada lado receberia parte daquilo que queria. Quando a primeira parte foi ativada e a segunda continuou em disputa, tornou-se claro que o pacote não dispunha de qualquer instituição capaz de obrigar à sua conclusão.

O acordo foi organizado por Barry Silbert, fundador do Digital Currency Group, durante a conferência Consensus em Nova Iorque. À mesa estavam representantes de exchanges, carteiras, empresas de pagamentos e companhias de mineração; Jeff Garzik liderava a implementação do SegWit2x. Para empresários esgotados por uma longa disputa, parecia um compromisso adulto: pessoas influentes tinham finalmente acordado uma data e colocado por baixo o nome das suas empresas. Mas o Bitcoin não tinha um registo de membros no qual aquelas assinaturas representassem uma maioria qualificada.

Os críticos não reagiram apenas aos dois megabytes, mas também à forma de decisão. Adam Back, Gregory Maxwell e outros alertaram que uma alteração incompatível com um prazo curto colocava os utilizadores perante um facto consumado. Os signatários controlavam serviços por onde passavam muitas pessoas e os mineradores podiam fornecer a maior parte do hashpower. Não podiam, porém, alterar à distância as regras de validação de um nó instalado no apartamento de outra pessoa. O acordo criou assim uma situação estranha: as maiores empresas podiam anunciar aquilo a que chamariam Bitcoin, mas o proprietário de cada nó conservava o seu próprio botão de rejeição.

03

UASF, BIP91 e a cadeia que não se dividiu

O BIP148 propôs um soft fork ativado pelo utilizador: a partir de 1.º de agosto, os nós participantes deveriam rejeitar blocos que não sinalizassem SegWit. Foi uma forma arriscada de pressão. Se uma parte economicamente significativa da rede permanecesse noutro local, poderiam surgir histórias concorrentes ou reorganizações caóticas.

Antes do dia decisivo, porém, os mineradores começaram, através do BIP91, a sinalizar as condições que conduziriam ao bloqueio do SegWit. Por isso, não é honesto atribuir o resultado a um único ator: a ameaça do UASF alterou os incentivos, os mineradores coordenaram a sinalização e os nós existentes fizeram cumprir as regras compatíveis introduzidas por um Soft Fork. O SegWit foi ativado em 24 de agosto de 2017.

Os nós com BIP148 não podiam minerar o SegWit por si próprios nem obrigar os outros a usá-lo. Só podiam prometer antecipadamente que, depois do prazo, não aceitariam um determinado grupo de blocos. A força dessa promessa dependia de ser seguida por exchanges, comerciantes, carteiras e detentores cujas moedas davam significado económico à cadeia. O UASF funcionava assim como um compromisso público num jogo de coordenação: o seu efeito não vinha de uma ordem, mas da possibilidade credível de que uma cadeia desobediente tivesse hashpower e, ao mesmo tempo, menos compradores.

A proposta BIP148 foi publicada por um programador sob o pseudónimo Shaolinfry. As pessoas começaram a usar bonés com as letras UASF e chamaram ao dia 1 de agosto o dia da independência. Por trás dos memes, porém, estava uma aposta séria. Se os mineradores continuassem sem sinalizar e uma parte importante da economia seguisse o BIP148, as histórias podiam dividir-se durante algum tempo e os utilizadores não saberiam qual transferência recebida permaneceria válida. O ativista que operava um nó não arriscava apenas um slogan; arriscava a própria capacidade de receber dinheiro em segurança.

O BIP91 de James Hilliard ofereceu aos mineradores uma forma de se coordenarem antes do prazo e bloquearem a sinalização do SegWit com um limiar mais baixo. Quando o apoio subiu de repente, cada lado interpretou o resultado à sua maneira. Os defensores do UASF viram a prova de que a pressão dos utilizadores mudara os incentivos. Os mineradores apontaram para a sua coordenação e os signatários do New York Agreement para o seu compromisso. A história não fornece uma experiência de controlo na qual se possa retirar um dos grupos. O certo é que a ameaça de conflito levou todos a agir mais cedo.

04

Bitcoin Cash saiu, SegWit2x recuou

Em 1 de agosto, o Bitcoin Cash separou-se, com blocos maiores e regras próprias. Não foi uma reescrita dos nós originais, mas uma nova cadeia incompatível que partilhava a história até ao ponto da divisão. O mercado e os utilizadores puderam então avaliar e operar os dois ativos separadamente.

A segunda parte do New York Agreement deveria ativar, em novembro, um hard fork para dois megabytes. Os organizadores suspenderam-no em 8 de novembro, admitindo que não tinham obtido consenso suficiente para uma atualização limpa. Uma sinalização elevada do hashpower não se transformou na certeza de que a economia aceitaria os novos blocos como Bitcoin.

No momento da separação, as duas cadeias partilhavam a história anterior e a mesma imagem das moedas não gastas. Quem controlava as chaves antes da divisão podia, sob certas condições, movimentar depois os ativos correspondentes nos dois lados. A partir daí, porém, cada cadeia aceitou blocos futuros diferentes e construiu o seu próprio efeito de rede. A divisão não obrigou os nós antigos a alterar a definição de uma transação válida; deu aos defensores de regras diferentes a possibilidade de suportar tanto os custos como o resultado da sua escolha.

O Bitcoin Cash deu aos defensores de blocos maiores algo que um debate interminável não podia dar: uma cadeia funcional segundo as suas regras. As exchanges tiveram de lhe atribuir um ticker, as carteiras de resolver a proteção contra replay e os detentores de decidir se venderiam, guardariam ou ignorariam as novas moedas. A disputa passou em parte das listas de discussão para o mercado. O preço, o hashpower e o uso das duas cadeias começaram a expressar uma decisão contínua, não uma votação única sobre um só vencedor.

O SegWit2x deveria ser diferente. Os seus defensores queriam que a cadeia de dois megabytes herdasse a marca BTC e se tornasse a continuação, não um ramo secundário. À medida que novembro se aproximava, faltavam apoio amplo no software cliente e um plano claro para gerir duas cadeias em segurança. Em 8 de novembro, Mike Belshe, Wences Casares, Jihan Wu, Jeff Garzik, Peter Smith e Erik Voorhees anunciaram o adiamento. Admitiram que, sem um acordo mais amplo, continuariam a dividir a comunidade que pretendiam unir.

05

O poder está dividido, não ausente

A guerra é muitas vezes apresentada como uma vitória limpa dos utilizadores. Uma conclusão mais rigorosa é mais complexa. Os programadores controlam a atenção e a qualidade do código; os mineradores, a ordem dos blocos; as empresas, a liquidez e a marca; os utilizadores, a escolha do software e das contrapartes. Nenhum grupo possui sozinho todas as alavancas, embora alguns tenham muito mais do que outros.

Naquele momento, o Bitcoin não votou através de um único número. Coordenou-se por meio de código, argumentos públicos, decisões comerciais, prazos e disposição para arriscar uma divisão. O resultado não foi silencioso nem barato. É precisamente essa a sua importância: as regras permaneceram iguais não porque o conflito não existisse, mas porque, para as alterar, não bastava convencer apenas a sala mais visível.

O consenso de Nakamoto decide a ordem das transações dentro de regras aceites em comum; não é um parlamento que reescreve as próprias regras através de uma votação do hashpower. Um minerador pode criar um bloco com uma enorme quantidade de trabalho, mas um nó rejeita-o se o bloco violar as regras do seu software. A escolha das regras ocorre, portanto, fora da própria blockchain: no código, nas versões dos clientes, nos preços, nos contratos e nas pessoas com quem se está disposto a negociar. A Blocksize War não descobriu uma constituição simples do Bitcoin. Mostrou um sistema no qual a mudança é possível, mas ninguém tem o direito garantido de lhe chamar consenso.

Pessoas de todos os lados pagaram um preço pessoal. Mike Hearn abandonou publicamente o projeto em janeiro de 2016 e declarou a experiência fracassada. Gavin Andresen perdeu a posição que antes ocupava no Bitcoin Core. Os programadores enfrentaram campanhas, as empresas boicotes e os indivíduos ataques que transformaram uma divergência técnica numa prova de caráter. A narrativa vencedora reduz muitas vezes estas pessoas a traidores e heróis. É mais rigoroso admitir que muitas protegiam visões diferentes do mesmo objetivo e, por vezes, usavam uma pressão que elas próprias consideravam uma defesa necessária.

Depois da guerra, a palavra consenso passou a ser usada com maior cautela. Já não significava simplesmente contar sinais dos mineradores, enumerar empresas ou obter a concordância dos principais programadores. Descrevia um estado em que atores suficientes consideram a mudança mais segura do que a divisão e os restantes não têm vontade ou força para sustentar regras concorrentes. Não é um sistema de votação elegante. É uma negociação contínua na qual a possibilidade de sair dá peso até a pessoas sem qualquer título — e, ao mesmo tempo, nunca garante que a sua cadeia terá preço, utilizadores ou segurança.

Atlas

Personagens e conceitos no Atlas

2017Guerra do tamanho dos blocosBIP141SegWitNODEFull NodeFORK↓Soft ForkFORK↑Hard ForkRULESRegras de consensoCOREBitcoin CoreGAVINGavin AndresenHEARNMike HearnSIPAPieter WuilleGMAXGregory MaxwellBACKAdam BackGARZIKJeff Garzik
  1. 01
    BIP 101 — Increase maximum block size

    Uma das principais propostas formais para o aumento automático do limite.

  2. 02
    BIP 141 — Segregated Witness

    Especificação técnica do SegWit e do block weight.

  3. 03
    Digital Currency Group — Bitcoin Scaling Agreement at Consensus 2017

    Texto original do New York Agreement e lista de signatários.

  4. 04
    SegWit2x Working Group — archived repository

    Documentação contemporânea do objetivo e da implementação do SegWit2x.

  5. 05
    BIP 148 — Mandatory activation of SegWit deployment

    Especificação e calendário da UASF.

  6. 06
    BIP 91 — Reduced threshold SegWit MASF

    Mecanismo de coordenação dos mineradores que assegurou a sinalização antes de 1.º de agosto.

  7. 07
    Bitcoin ABC — UAHF technical specification

    Especificação contemporânea da separação do Bitcoin Cash.

  8. 08
    SegWit2x mailing list — Onwards

    Anúncio de 8 de novembro de 2017 de que o hard fork não tinha consenso suficiente.

Próxima história · 10FTX: o saldo que não estava onde devia