- Em 15 de agosto de 2010, uma falha no código do Bitcoin permitiu a criação de aproximadamente 184,4 bilhões de BTC em uma única transação.
- Satoshi Nakamoto precisou corrigir a vulnerabilidade, acrescentando 19 linhas de código para impedir transações que ultrapassassem o limite monetário.
- A recuperação exigiu uma reorganização da blockchain, que excluiu o bloco fraudulento 74.638 e eliminou os bitcoins criados artificialmente.
Em 15 de agosto de 2010, o Bitcoin enfrentou uma das maiores crises de sua história. Um invasor desconhecido explorou uma vulnerabilidade no código da criptomoeda e conseguiu criar aproximadamente 184,4 bilhões de BTC em uma única transação, superando milhares de vezes o limite de 21 milhões de unidades previsto para a moeda digital.
O episódio aconteceu quando a rede tinha pouco mais de um ano e Satoshi Nakamoto ainda participava diretamente do desenvolvimento do projeto. A falha não envolveu o roubo de chaves privadas ou a quebra da criptografia do Bitcoin. O problema estava nas regras usadas pelo software para verificar os valores movimentados nas transações.
Para impedir que a vulnerabilidade comprometesse definitivamente o projeto, Satoshi precisou agir rapidamente. Os registros originais do código, preservados no GitHub, mostram que sua primeira correção acrescentou apenas 19 linhas, removeu outras duas e modificou três arquivos. Entretanto, salvar o Bitcoin exigiu mais do que corrigir um erro matemático: foi necessário fazer a rede abandonar uma parte de seu próprio histórico.

Hacker criou 184 bilhões de BTC e colocou em risco o limite do Bitcoin
O ataque aconteceu no bloco 74.638, registrado em 15 de agosto de 2010. A transação maliciosa utilizou uma entrada de apenas 0,5 BTC para gerar duas saídas de aproximadamente 92,23 bilhões de BTC cada. O valor ultrapassava completamente a quantidade de bitcoins que deveria existir, mas o software aceitou a operação como válida.
O problema ficou conhecido como Value Overflow Incident, ou incidente de estouro de valor. Na época, o Bitcoin utilizava números inteiros de 64 bits para representar os valores das transações. O invasor criou duas saídas positivas tão grandes que, quando o software tentou somá-las, o resultado ultrapassou a capacidade do tipo numérico utilizado e foi interpretado como um valor negativo.

Com isso, o programa calculou incorretamente uma soma de -0,01 BTC para as saídas. Como a entrada possuía 0,5 BTC, a diferença foi interpretada como uma taxa de transação de 0,51 BTC. Dessa maneira, a operação passou pelas verificações existentes e entrou em um bloco. O minerador responsável chegou a registrar uma recompensa de 50,51 BTC, incluindo a taxa calculada incorretamente.
O desenvolvedor Jeff Garzik identificou a anomalia e publicou um alerta no fórum BitcoinTalk, às 18h08 UTC. A mensagem apresentava os valores impossíveis encontrados no bloco. Outros participantes identificaram rapidamente o estouro matemático e alertaram que novas transações não deveriam ser realizadas até que o problema fosse resolvido.

Satoshi modificou 19 linhas e criou uma proteção para os 21 milhões de BTC
O registro original da correção, identificado pelo commit d4c6b90, permite observar exatamente como Satoshi respondeu ao ataque. A atualização corresponde à revisão 132 do antigo repositório SVN do Bitcoin e recebeu a descrição de correção da transação com estouro de valor no bloco 74.638.
Uma das mudanças mais importantes foi a inclusão de uma constante que estabelecia explicitamente o limite máximo de valores permitido durante a validação das transações:
static const int64 MAX_MONEY = 21000000 * COIN;
Antes da atualização, a função CheckTransaction() verificava se os valores individuais das saídas eram negativos, mas não impunha um limite superior nem verificava adequadamente a soma acumulada. Satoshi acrescentou condições para rejeitar qualquer saída superior a 21 milhões de BTC e impedir que a soma dos valores ultrapassasse esse teto. A correção também incluiu verificações dos valores de entrada das transações.
O detalhe histórico é que Satoshi não criou o limite de 21 milhões de bitcoins naquele momento. A política de emissão já estava incorporada ao projeto desde sua origem. O ataque, porém, mostrou que uma regra monetária prevista pelo protocolo não estava suficientemente protegida contra operações matemáticas inválidas.
- Leia também: Valor da Binance.us despenca 80% e exchange busca US$ 100 milhões em investidores para expandir nos EUA
A primeira atualização acrescentou 19 linhas e removeu duas, distribuídas pelos arquivos main.cpp, main.h e serialize.h. Mas Satoshi também publicou uma segunda alteração, na revisão 133, que adicionou uma verificação específica para rejeitar cadeias que contivessem o bloco fraudulento. O código passou a identificar o hash do bloco comprometido, impedindo que novas partes da blockchain fossem construídas sobre aquele histórico.

E-mails mostram alerta de Satoshi e como o Bitcoin foi salvo
A gravidade do episódio aparece nas próprias mensagens de Satoshi. Um dos registros está entre os e-mails divulgados em 2024 por Martti Malmi, conhecido como Sirius, um dos primeiros colaboradores do Bitcoin.
Na mensagem nº 231 do arquivo, enviada à lista pública de desenvolvedores em 15 de agosto de 2010, Satoshi emitiu um alerta emergencial para que os participantes não confiassem nas transações posteriores ao bloco 74.638 enquanto o problema estivesse sendo investigado.
No fórum BitcoinTalk, Satoshi também recomendou interromper temporariamente a mineração para facilitar a construção de uma nova cadeia válida. Gavin Andresen participou das discussões técnicas e apresentou uma proposta inicial de correção. A resposta envolveu, portanto, outros membros da comunidade, embora Satoshi tenha coordenado publicamente parte importante do trabalho de emergência.
Ainda em 15 de agosto, Satoshi anunciou a versão 0.3.10 do software Bitcoin, que incorporou a correção. Os participantes que atualizaram seus programas passaram a rejeitar a transação fraudulenta e a trabalhar em uma cadeia alternativa. À medida que mais mineradores adotaram as novas regras, essa cadeia acumulou trabalho suficiente para ultrapassar a versão comprometida.
Em 16 de agosto, às 12h59 UTC, Satoshi confirmou que a cadeia corrigida havia superado a anterior por volta do bloco 74.689. A reorganização retirou a transação fraudulenta do histórico válido, fazendo com que os bilhões de BTC criados artificialmente deixassem de existir na blockchain aceita pela rede.

O episódio permanece como um dos exemplos históricos mais importantes de como o Bitcoin enfrentou uma falha crítica enquanto seu próprio criador ainda estava presente para ajudar a resolvê-la.



