Today marks the official release of Bitcoin Core 0.15.0, the fifteenth generation of Bitcoin’s original software client launched by Satoshi Nakamoto almost nine years ago. Overseen by Bitcoin Core lead maintainer Wladimir van der Laan, this latest major release was developed by nearly 100 contributors over a six-month period, with major contributions through Chaincode Labs, Blockstream and MIT’s Digital Currency Initiative.
Bitcoin Core 0.15.0 offers significant performance and usability improvements over previous versions of the software implementation. It also introduces several new features to better deal with the current status of the network.
These are some of the more notable changes.
Chainstate Database Restructure
One of the biggest changes compared to previous versions of the software involves how the state of Bitcoin’s blockchain is stored. This “chainstate” or “UTXO-set” is saved in a dedicated database, whereas previously it had been categorized per transaction. If one transaction sent bitcoins to several outputs (“addresses”), these different outputs were stored as a single database entry, referring to that one transaction.
With Bitcoin Core 0.15.0, these outputs are instead stored in a single database entry each. If a single transaction sends bitcoins to different outputs, every output is stored separately. While this method does claim more disc space, it requires less computational resources if one of these outputs is spent later on.
The most concrete benefit of this new data structure is that initial sync-time for new nodes is decreased by about 40 percent. It also introduces simpler code, reduces memory usage and more. Additionally, it fixes a bug that could theoretically crash Bitcoin Core nodes, controversially revealed at last weekend’s Breaking Bitcoin conference in Paris.
Improved Fee Estimation
As Bitcoin blocks have been filling up over the last year or two, not all transactions fit in the first block that is mined. Instead, miners typically prioritize the transactions that include the most fees. If a user wants to have his transaction confirmed quickly, he should include a high enough fee. If he’s not in a rush, a lower fee should suffice.
However, the Bitcoin network deals with inherent unpredictability in terms of the speed at which blocks are found or the number of transactions that is being transmitted at any time. This makes it hard to include the right transaction fee.
Bitcoin Core 0.15.0 lowers this fee uncertainty: The newest version of the software includes significantly better fee estimation algorithms. This is mostly because the software takes more data into account when making the estimations, such as the fees included in older confirmed transactions, as well as fees in unconfirmed transactions — the fees that proved insufficient.
Additionally, users can enjoy more flexibility. For one, Bitcoin Core 0.15.0 for the first time allows users to include fees that could take their transactions up to a week to confirm. And, also newly introduced, users can choose to accept more or less risk that their transaction could be delayed due to a sudden influx of transactions.
Replace-by-fee in User Interface
Even with improved fee estimation, it is possible that users will still need to wait longer than they want for their transactions to confirm, perhaps because there is a sudden rush of transactions on the network, or maybe because a user changed his mind and prefers to have a transaction confirm faster than originally paid for, or for other reasons.
For these cases, some wallets let users add a “replace-by-fee” tag to their transactions. With such a tag, nodes and miners on the network know that the sender may want to replace that transaction with a newer transaction that includes a higher fee. This effectively allows users to bump the transaction in line to have it confirmed faster.
Bitcoin Core nodes have supported replace-by-fee for well over a year now: They already replace “replace-by-fee” tagged transactions if the new transaction includes more fees. But it was never easy to utilize for Bitcoin Core wallet users themselves.
The Bitcoin Core 0.15.0 wallet introduces a replace-by-fee toggle in its user interface. This lets users include the appropriate tag, allowing them to easily increase the fees on their transactions later on.
Multi-wallet Support (Client and RPC Only)
Bitcoin Core 0.15.0 lets users create several wallets for the first time. These wallets all have their own separate Bitcoin addresses, private keys and, therefore, funds. Users can utilize the different wallets for different purposes; for example, one wallet can be used for personal day-to-day purchases, another for business-related transactions, and a third just for trading.
Using several wallets can offer a number of benefits. For instance, it makes accounting easier and more convenient. Additionally, users can more easily benefit from increased privacy as the different wallets cannot be linked to each other by blockchain analysis. It’s also possible to use different wallets for specific applications and more.
For now, multi-wallet support is not yet available for regular wallet users; only advanced users who operate from the command line or through connected applications can utilize the feature.
Apart from the above mentioned notable changes, Bitcoin Core 0.15.0 includes a number of additional performance improvements, as most new major Bitcoin Core releases do. Concretely, these changes speed up how quickly blocks are downloaded from the network, they let nodes start up faster, and up-to-date nodes will be able to validate new blocks more quickly, in turn benefiting network-propagation time.
Finally, it’s worth mentioning that Bitcoin Core 0.15.0 will disconnect from BTC1 peers on the network. This means that the Bitcoin network will experience less disruption if the SegWit2x hard fork splits the network, as both types of nodes will more easily find compatible peers. While this change has gotten some media attention, this change shouldn’t really be noticeable.
Thanks to Chaincode Labs developer John Newbery for feedback and suggestions. For more details on what’s new in Bitcoin Core 0.15.0, see the release notes, or watch Bitcoin Core contributor Gregory Maxwell’s “deep dive” presentation at the San Francisco Bitcoin developers meetup.