Bitcoin 0.8.5 Released – Provides Critical Bug Fixes

  129 Flares Twitter 89   "”> Facebook 34   Google+ 3   LinkedIn 3   Email   Email” friend< a>”> 129 Flares ×

A critical bug fix was provided in an emergency release of Bitcoin 0.8.5 earlier this evening. On September 9, Bitcoin-Qt users with versions more recent than 0.8.0 were unable to start their software and received errors that their database was corrupt:

coin database inconsistencies found

Users were then prompted to reindex the block chain, a process that could take hours and was ineffective in resolving the inconsistencies. Bitcoin-Qt is the graphical version of the standard bitcoin client and the problem was later observed in Bitcoind, the command line version.

Negative Transaction Version Numbers

The problem was caused by an abnormal transaction published in block 256818 around midnight EST on September 9. Bitcoin transactions contain fields including a version number, input parameters and output parameters among other things. The version number is currently set to 1 and allows for the network to adapt to different transaction types in the future while still providing support for older transactions.

The transaction number is stored as a 32 bit (4 byte) positive integer. The leftmost bit is reserved to indicate positive (0) or negative (1) values of the integer. When the bitcoin client read any version numbers larger than 0x7fffffff (which is 0 followed by 31 digits of 1 in hexadecimal) it would return an error since negative numbers were not expected.

The problem block contained a transaction which used a negative version number, causing errors when any database consistency checks were run. Since this is not possible to do using the standard bitcoin client, it is likely that a developer incorrectly set the transaction parameters before publishing it to the network. This bug only affected users starting-up the bitcoin client, since that is when the database consistency check was run. Those continuously running bitcoin software were unaffected.

The Solution

Gregory Maxwell, a bitcoin core developer, quickly provided a solution on the forums which could be used until an updated version of the client could be released. He recommended adding “-checklevel=2” to the bitcoin configuration file. This used a less aggressive consistency check but did not create any security concerns.

This issue was not observed to affect any critical infrastructure, such as miners or exchanges, since they do not frequently restart their bitcoin software and use multiple nodes simultaneously. If they were forced to restart they could use the less aggressive consistency check and operate normally.

Maxwell submitted a workaround to be included in bitcoin version 0.8.5 four days ago which also made negative version numbers in transactions non-standard, preventing the issue from occurring in the future. This was tested by the bitcoin core development team and other members of the community before being released for public use.

 

  129 Flares Twitter 89   "”> Facebook 34   Google+ 3   LinkedIn 3   Email   Email” friend< a>”> 129 Flares ×

About the author  ⁄ Phillip Archer

3 Comments

  • Reply
    Miki
    September 13, 2013

    So do non-standard transactions mean that negative version numbers won’t be included in the block chain?

  • Reply
    Rod
    September 15, 2013

    I’m having the opposite problem. I downloaded 0.8.4 and had no problems opening and running the program. This morning, I downloaded 0.8.5 and the program will not open. Frustrating……….and scary.

  • Reply
    John
    September 15, 2013

    For newbies:
    Can you please provide the exact steps for upgrading: Do we download first or start the old version? once we download, what do we do to get it to read the old wallet?
    thanks

Leave a Comment

74 Flares Twitter 47 Facebook 17 Google+ 8 LinkedIn 2 Email -- 74 Flares ×