15. August 2010: 184 Milliarden Bitcoin
Block 74.638 enthielt eine Transaktion mit zwei Outputs zu je 92.233.720.368,54 BTC. Die Summe war so groß, dass sie einen Integer-Overflow auslöste: die Softwaresprüfung, dass Outputs die Inputs nicht übersteigen, wurde ausgetrickst. Etwa 184 Milliarden Coins entstanden aus dem Nichts. Der Fehler ist als CVE-2010-5139 katalogisiert.
Der Fix
Nutzer bemerkten es innerhalb von Stunden („Strange block 74638“ auf BitcoinTalk). Eine gepatchte Version 0.3.10 machte solche Transaktionen ungültig. Miner wechselten, eine neue Kette überholte die schlechte, und der Block wurde orphaned. Die erfundenen Coins verschwanden mit ihm.
11. März 2013: ein versehentlicher Fork
Version 0.8 ersetzte ihre Datenbank. Ältere Versionen stießen an ein verstecktes Database-Lock-Limit und verwarfen Block 225.430, den 0.8 akzeptierte – ein Chain-Split. Laut dem BIP-50-Post-Mortem stiegen die Pools BTC Guild und Slush auf 0.7 zurück, „despite the fact that this caused them to sacrifice significant amounts of money“, und das Netz vereinte sich wieder. Ein Test-Double-Spend trat auf; er war nicht böswillig.
Was wir lernten
- Bugs werden gefunden, weil Tausende die Kette prüfen.
- Konsenscode muss äußerst vorsichtig geändert werden – eine Lehre hinter Bitcoins vorsichtiger Entwicklung heute.
- Die Angebotsregel überstand ihren härtesten Test.