Bitcoin Core 0.14.1: SegWit Signalling and Memory Accounting

The Bitcoin Core project, launched by Satoshi Nakamoto eight years ago and today led by Wladimir van der Laan, aims to release a new major release of the
The Bitcoin Core project, launched by Satoshi Nakamoto eight years ago and today led by Wladimir van der Laan, aims to release a new major release of the
Technical - Bitcoin Core 0.14.1: SegWit Signalling and Memory Accounting

The Bitcoin Core project, launched by Satoshi Nakamoto eight years ago and today led by Wladimir van der Laan, aims to release a new major release of the software about once every six months. Such a release (0.12.0, 0.13.0, 0.14.0…) includes most of the improvements made since the last major release.

In between major releases, the Bitcoin Core project often offers minor releases (0.12.1, 0.13.1, 0.13.2…). These either include soft fork upgrades, which are included in minor releases to make opting out as easy as possible. Or they include bug fixes and other modest improvements.

This weekend marks the official release of a new minor release: Bitcoin Core 0.14.1.

Here’s what the newest iteration of the first most-used Bitcoin implementation has to offer.

SegWit Signaling

Perhaps the most noteworthy change in the new release affects miners, and in particular concerns Segregated Witness (SegWit), the protocol upgrade at the heart of Bitcoin Core’s scaling roadmap.

Segregated Witness is a soft fork, which means that non-upgraded nodes will remain part of the same network as upgraded nodes. This is technically also true for miners; they can continue to mine blocks without including any SegWit transactions if they so choose. (Though, if they do not upgrade at all, they may want to take some precautions to avoid mining on top of invalid blocks.)

Bitcoin Core 0.14.1 now also offers miners the option to exclude any Segregated Witness transactions even if the soft fork activates. They can continue to mine blocks that only include “old style” transactions if they prefer.

Additionally, Bitcoin Core 0.14.1 miners that prefer to exclude SegWit transactions will, by default, still signal support for the upgrade regardless. After all, SegWit activation shouldn’t really be a problem for them: With Bitcoin Core 0.14.1, they are technically ready to avoid invalid blocks, and they can themselves create blocks without SegWit transactions all the same.

Memory Accounting

For normal, non-mining users, the biggest change in Bitcoin Core 0.14.1 is probably an improvement in memory use.

Bitcoin nodes keep a buffer of recent changes to the state of the blockchain (the “UTXO-set”) in memory. Recent changes are most likely to change again, and keeping this in memory lets nodes access it as fast as possible. This way, nodes can accept and validate transactions and blocks rapidly, and forward them accordingly, thereby benefiting the whole network. Once in a while, the current state of the UTXO-set is “flushed”: This is when the data is stored on disc more permanently.

Bitcoin Core 0.14.0 showed some problems estimating how much headroom is needed in memory to perform this flush. This could have detrimental effects on low-end systems in particular, like some Raspberry Pi’s, and other computers with limited memory. In Bitcoin Core 0.14.1, memory usage for the UTXO-set is calculated more accurately, which should help well-configured machines run more smoothly.

Additionally, Bitcoin Core 0.14.1 includes a number of smaller bug fixes and optimisations.

The next major release, Bitcoin Core 0.15.0, is expected around autumn of this year.

For more information, see the Bitcoin Core 0.14.1 release notes. You can download Bitcoin Core 0.14.1 from bitcoin.org and bitcoincore.org.