Bitcoin v0.8.6 was released yesterday, offering updates to existing restrictions on the size of free transactions and full blocks, as well as a series of fixes for bugs in certain node transmissions and OSX usage. The update follows the 0.8.5 release in September and precedes the much-anticipated 0.9 release.
Free Transaction Limit Changes
In an effort to make free transactions more commonly accessible, Bitcoin 0.8.6 lowers the maximum size of free transactions from 10,000 bytes to 1,000 bytes and eliminates the minimum 0.01 XBT output requirement.
By lowering the maximum size of a free transaction to 1,000 bytes, there is theoretically room for more free transactions per block. The current default space per block for free transactions is 27,000 bytes, meaning before the latest update each block had room for as few as three free transactions if they were all at or near the existing maximum size. With the change, each block would have room for a minimum of 27 free transactions.
The previous minimum of 0.01 XBT output per free transaction has also been lifted. This was originally implemented to prevent large amounts of dust transactions (then defined as 0.01 XBT, or a fraction of a US cent at the time) from cluttering the block chain. However, given the large increase in the XBT/USD exchange rate and improvements in the bitcoin code to reduce the likelihood of dust being inadvertently created, this requirement has become outdated.
Increased Miners’ Default Block Size
Bitcoin 0.8.6 also increased the default maximum block size from 300,000 to 350,000 bytes. Notably, the true hard limit on block size per the protocol is 1 MB – the latest update merely increases the default setting.
With an average block size trending to approximately 200K, the cap generally does not come into play. The new default limit also covers edge cases in the event that a block is not found for some multiple of the targeted 10-minute interval, which could dramatically increase the number of transactions included and associated block size.
After LevelDB was implemented to store the block chain in 0.8, some users of the Mac OS X software client suffered corruption issues. Reports were inconsistent and not always replicable, but it seemed to be caused by restarting the client and affected mostly OSX 10.8 and 10.9 users. Several solutions have been implemented which should provide relief to Mac users including an upgraded version of LevelDB 1.13 and adjustments to the syncing and writing functions. It remains to be seen whether this will completely resolve the corruption issues users have noticed, but there is a $10,000 bounty available for the person who can provide a definitive solution.
Invalid Transaction Broadcasting
Bitcoin transactions reassign an incoming transaction from one address (the “vin” of the new transaction) to a recipient address (the “vout”). There was an error in 0.8.5 that caused certain transactions to be broadcast with a vin of 0. As a clearly invalid transaction, the nodes inadvertently broadcasting them were being blocked. The solution appears to have been discovered and solved by Wladimir J. van der Laan who identified a faulty logic statement. When none of the conditions of the if statement were met, an empty transaction was stored and broadcast. The 0.8.6 update contains a patch that resolves this bug by adding a ‘continue’ clause to the end which prevents 0 vin transactions.