In a recent presentation at Bitcoin Meetup Switzerland, Bitcoin Core contributor Jonas Schnelli shared the changes that are included in the upcoming release of Bitcoin Core 0.14. The release does not include many exciting features from an end user’s perspective; however, there are plenty of optimizations and tweaks that should help the software run better on any hardware.
Cleaning Up the Code and Improving Performance
According to Schnelli, the main focus of Bitcoin Core 0.14 was to optimize the codebase and improve overall performance. “What we have done mainly is what you can never do in normal software projects, which is mainly refactoring [and improving] performance,” said Schnelli. “This was the main focus for [Bitcoin Core] 0.14. [It’s] a bit boring if you’re looking for new features.”
As a software contractor with roughly 20 years of experience, Schnelli noted that these sorts of performance improvements never happen in traditional, corporate software development because companies do not wish to spend resources on this type of work.
“This is important if you want to survive the next years, but [there are] no features coming out of it directly,” Schnelli added.
In terms of the details of what was technically improved in terms of performance in Bitcoin Core 0.14, Schnelli pointed to the new signature cache, an extensive network refractor, and other various optimizations and cleanups.
Better Fee Estimation
With Bitcoin blocks more full than ever before, transaction fees are becoming a critical component of network. Miners are now receiving over 1 BTC in transaction fees in blocks on a regular basis, in addition to the 12.5 BTC block reward.
According to Schnelli, Bitcoin Core is the most used resource when it comes to fee estimation. Many of the wallet providers in the Bitcoin ecosystem use the fee estimation model found in Bitcoin Core in some way.
Bitcoin Core 0.14 includes improvements to the ways fees are estimated, and the default confirmations target in the GUI has been lowered from 25 to 6. Schnelli did not provide specific details on the improved methodology found in Bitcoin Core’s new fee estimation algorithm in his talk.
Users can also now opt to have all of their transactions sent with replace-by-fee (RBF) support at startup, but this option is not enabled by default. A bumpfee RPC command was also added, although it requires RBF to be enabled.
Manually Pruning the Blockchain
The Bitcoin blockchain has continued to grow much larger over the years, which increases the the amount of time involved in an initial sync. The good news is that, according to Schnelli, many old blocks are not needed and can be pruned.
“Once you have built the UTXO set, which is the set of coins that are not spent right now, you can throw away the old blocks,” explained Schnelli. “You only need them for other nodes who want to become full nodes.”
Instead of storing the entire blockchain, which is now over 100GB, users can store a pruned version of 550MB or more.
Although pruning was originally introduced in Bitcoin Core 0.11, version 0.14 introduces manual pruning, which means users can manually prune the blockchain on their hard drive with an RPC command.
As Schnelli said, pruned nodes will perform all of the normal functions of a full node with the exception of transmitting old blocks to new nodes that are syncing with the blockchain for the first time.
Other Improvements and User Warnings
In addition to the improvements mentioned above, there are also many other, smaller changes made in Bitcoin Core 0.14.
Users now have the ability to toggle network activity on and off as a way to save bandwidth, and a more efficient method of importing multiple keys or watch only addresses at once was also added.
Some warning and activity messages were also added to better inform users about how to properly use the software. For example, a message has been added to warn users about typing certain commands into the console under the guidance of other individuals who are trying to scam them.