15 de agosto de 2010: 184 mil milhões de bitcoin
O bloco 74.638 continha uma transação com duas saídas de 92.233.720.368,54 BTC cada. A soma era tão grande que causou um overflow de inteiros: a verificação do software de que as saídas não excedem as entradas foi enganada. Cerca de 184 mil milhões de moedas apareceram do nada. A falha está catalogada como CVE-2010-5139.
A correção
Usuários notaram em horas («Strange block 74638» no BitcoinTalk). Uma versão corrigida, 0.3.10, tornou tais transações inválidas. Mineradores mudaram, uma nova cadeia ultrapassou a má, e o bloco foi orphaned. As moedas inventadas desapareceram com ele.
11 de março de 2013: um fork acidental
A versão 0.8 substituiu a sua base de dados. Versões mais antigas bateram num limite oculto de lock da base de dados e rejeitaram o bloco 225.430, que a 0.8 aceitou – uma divisão de cadeia. Segundo o post-mortem do BIP 50, os pools BTC Guild e Slush fizeram downgrade para 0.7, «despite the fact that this caused them to sacrifice significant amounts of money», e a rede reuniu-se. Ocorreu um double-spend de teste; não foi malicioso.
O que aprendemos
- Bugs são encontrados porque milhares de pessoas verificam a cadeia.
- Código de consenso deve ser mudado com extremo cuidado – uma lição por trás do desenvolvimento cauteloso do Bitcoin hoje.
- A regra de oferta sobreviveu ao seu pior teste.