Meerdere versies van de bitcoin-client begonnen deze week te falen, nadat een frauduleuze transactie ervoor zorgde dat gebruikers de software niet opnieuw konden opstarten.

De problemen kwamen aanvankelijk op maandagmorgen in de VS aan de oppervlakte, met een bericht op het Bitcoin Talk-forum.

"Ik heb net mijn laptop geopend en Bitcoin QT gestart en de berichtblokkering corrupt ontvangen, ik klikte op OK en nu verschijnt" Blokken opnieuw indexeren - 204 weken ", aldus de poster." Mijn Bitcoins zijn ook onbevestigd. het bericht? "

Anderen meldden snel dezelfde fout op meerdere computers met verschillende versies van Bitcoin-QT, wat de standaard grafische gebruikersinterface (GUI) -versie van de bitcoin-client is. De blokken opnieuw indexeren met behulp van de bitcoin-client het probleem niet kon oplossen. Hetzelfde probleem was van invloed op Bitcoind, de niet-GUI-gebaseerde versie van de client.

Het probleem was het gevolg van een bug die oorspronkelijk werd geïntroduceerd in versie 0. 8. 0 van de bitcoin-client, welke voor het eerst werd uitgebracht in februari. Die versie was een belangrijke release, die de database veranderde die werd gebruikt om de blockchain van Berkeley DB naar LevelDB op te slaan, om een ​​beveiligingsprobleem op te lossen.

"Het is een fout in onze code die controleert op LevelDB database inconsistenties introduceren d toen we overschakelden naar LevelDB-opslag in de 0. 8. 0 release, gecombineerd met een bug die het versienummer in transacties controleert, "zei Gavin Andresen, hoofdontwikkelaar. "Een transactie met een slecht versienummer heeft het probleem veroorzaakt. "

Gregory Maxwell, een ander lid van het kernontwikkelaarsteam, heeft gisterenochtend een oplossing voor het probleem gepost. Hij legde aan CoinDesk uit dat de software sinds 0. 8. 0 transacties met negatieve versienummers verkeerd heeft opgeslagen in de lokale versie van de blockchain.

"Dit onjuiste gedrag is op zichzelf onschadelijk en tot gisteren waren er geen transacties met een negatieve versie."

Echter, op maandag is een dergelijke transactie vrijgegeven en opgeslagen in de client. Omdat de software een rigoureuze consistentiecontrole van de database afdwingt die wordt uitgevoerd wanneer deze wordt gestart, weigert deze te starten nadat deze transacties in de keten waren opgenomen, zei hij.

Andresen of Maxwell hebben niet gezegd dat ze enig bewijs hebben gezien van een aanzienlijke netwerkverstoring. Andresen wees erop dat dit niet van invloed is op de grootste, kritieke stukken netwerkinfrastructuur zoals mijnpools, handelaren of uitwisselingen, omdat ze de neiging hebben om hun bitcoin-software actief te houden, meestal met meerdere knooppunten.

"Aangezien het probleem eenvoudig kan worden opgelost (zodra u instructies hebt gevonden), vermoed ik dat dit waarschijnlijk een veel grotere bron van frustratie is dan een echte storing," zei Maxwell.

Waar kwamen de transacties vandaan? Maxwell traceerde ze naar een aantal hergebruikte adressen. Hij wees naar een ontwikkelaar van bitcoin-wallets, wiens software de versie niet initialiseerde voordat hij een transactie stuurde. "Dit is een moeilijke fout om te maken, vooral in de C-code," zei hij, eraan toevoegend dat de Github-pagina van de wallet nu offline is. " Misschien heeft hij het vanwege deze bug offline gehaald. "

De bug was misschien alleen maar frustrerend, maar laat ook zien hoe netwerkaanvallen kunnen worden gemount - zelfs onbedoeld en niet-kwaadwillig - door simpelweg een transactie op te zetten die het systeem in de war brengt. dankzij een al lang bestaande bug. In dit geval was het gewoon een ongeldige transactie, waardoor een stuk gegevens werd vervormd dat niet actief door de bitcoin-client werd gebruikt.

"Als de fout in iets was gebruikt dat werd gebruikt, zou een erg serieuze bug voor het maken van een vork zijn geweest, "zei Maxwell. Dit zou echter een overeenkomstige kwetsbaarheid in de code vereisen.

Het kernontwikkelingsteam werkt nu aan een oplossing." Zodra we zeker zijn, hebben we een goede oplossing en het probleem kan in sommige gevallen niet worden veroorzaakt Daarom zullen we een versie van 0. 8. 5 vrijgeven, "concludeerde Andresen.