March 2013 chain fork
The accidental split of 11–12 March 2013, when Bitcoin 0.8 accepted a large block that older nodes could not process; pools downgraded to 0.7 to end it.
The wiki's angle: Bitcoin Takeover's fork history calls this “the closest Bitcoin has come to hard forking”: a limit no one had written down acted as a consensus rule, and the fix was to make it explicit and then remove it.[3]
What happened
The bitcoin.org alert says a miner running 0.8.0 created a large block at height 225,430 that was incompatible with earlier versions, and that the chain forked between nodes on the new and old software[1]. BIP-50 says the 0.8 chain had about 60% of mining hashpower, so the split would not resolve on its own[2].
Cause
According to BIP-50, versions before 0.8 configured too few Berkeley DB locks to process some large but valid blocks, which made the lock limit an implicit and inconsistent consensus rule[2]. Bitcoin 0.8 had switched to LevelDB, which had no such limit[2]. Bitcoin Takeover's history adds that the block triggered a split of at least 24 blocks[3].
Resolution
BTCGuild and Slush downgraded to 0.7 so that majority hashpower moved to the chain without the large block, “despite the fact that this caused them to sacrifice significant amounts of money”, BIP-50 says[2]. One large double spend succeeded during the split, by someone experimenting rather than attacking[2]. Version 0.8.1 temporarily limited blocks to rules older nodes could handle[2].
Aftermath
BIP-50 records that on 16 August 2013 block 252,451 was accepted by the network and forked unpatched nodes off[2]. Bitcoin Takeover's fork history notes that BIP-50 later dropped the words “hard fork”, and concludes that this was the closest Bitcoin has come to one[3].
References
- primarybitcoin.org, “11/12 March 2013 Chain Fork Information” network alert [archived]
- primaryBIP-50 (March 2013 Chain Fork Post-Mortem), Gavin Andresen [archived]
- btkBitcoin: All the Hard Forks and Soft Forks (BTCTKVR: Forks!) [archived]