Een van de redenen dat het belangrijk is dat bitcoin niet zomaar aangepast kan worden is om te voorkomen dat er per ongeluk foutjes of bugs worden doorgevoerd. Alle wijzigingen aan de broncode worden daarom zeer grondig gecontroleerd door een grote groep ontwikkelaars. In het verleden is er echter wel eens wat fout gegaan…
Een overloop aan bitcoins
Op 15 augustus 2010 werd namelijk ontdekt dat block nummer 74638 een transactie bevatte die 184.467.440.737,09551616 bitcoins aanmaakte. De transactie was het gevolg van een fout in de code die verantwoordelijk is voor het controleren van de geldigheid van transacties voordat deze in een block worden opgenomen. Er werd in de code geen rekening gehouden met de mogelijkheid dat de som van twee outputs zo groot is dat deze een overflow veroorzaakt.
Bij een overflow is een getal te groot of te klein om gerepresenteerd te worden door het beschikbare aantal bits, waardoor een incorrect getal wordt doorgegeven. Een overflow is vergelijkbaar met een kilometerteller die overloopt naar 0000 nadat een afstand van 9999 bereikt is.
De fout werd snel ontdekt en binnen enkele uren werd er een nieuwe versie van de software uitgerold waarin de fout gerepareerd werd. De aanpassing zorgde voor een fork in de blockchain, waardoor nodes die nog niet geüpdatet waren nog voortbouwden op de verkeerde blockchain. Vanaf block 74691 zat iedereen weer op de juiste versie van de blockchain.
De fout zoals deze voorkwam is zeer zeldzaam in de geschiedenis van bitcoin en vond gelukkig in de beginjaren plaats. De persoon (of personen) achter de moniker Satoshi Nakamoto heeft aangegeven de code van bitcoin in een periode van zo’n anderhalf jaar geschreven te hebben. Het is aannemelijk dat de focus tijdens deze periode lag op het werkend krijgen van het systeem, en niet op het schrijven van waterdichte code. Deze eerste versies van de broncode bestonden maar uit zo’n 3000 regels code, waar de broncode van bitcoin van vandaag ruim 100.000 regels code bevat. Hoewel de broncode nu uitgebreider is dan voorheen, is er ook veel meer aandacht besteed aan het robuust maken van de code door middel van een langdurig proces met veel verschillende ogen op de code. De kans op een herhaling van het incident is dus zeer klein.
Lees het originele artikel op Bitcoin.nl