• The Bitcoin Core developer community has released a new major version of the Bitcoin Core software.
  • Version 0.19.0.1 is intended to improve the security and speed of Bitcoin Core.

The main client for Bitcoin Full Nodes, Bitcoin Core, has received a new version. Yesterday, Sunday, November 24, 2019, the Bitcoin Core developer community released version 0.19.0.1. The new release is intended to improve the security and speed of Bitcoin Core. With it the Bitcoin Core wallet software has been released.

Release of the 19th major release of Satoshis Bitcoin software

The original software client, released almost 11 years ago by Satoshi Nakamoto, is still the dominant Bitcoin implementation on the network today. It received its 19th major version yesterday. The current version is officially called Bitcoin Core 0.19.0.1 because of some difficulties in the last phase of the 0.19.0 release. The new version is already available for download and is compatible with Linux (kernel), macOS 10.10 (and newer versions) and Windows 7 (and newer versions).

The Bitcoin Core developer community around Wladimir van der Laan worked on the release for a total of six months with over a hundred contributors. As a result, Bitcoin Core 0.19.0.1 contains a total of 550 merged pull requests.

The upgrade is expected to save up to 9 percent of memory for full nodes. In addition, the software contains several bug fixes and improvements. Many features have either been added or removed to ensure the security of the system. Some features can be enabled or disabled at will. Below is an overview of the most important changes.

New Remote Procedure Calls and BIP 158

To reduce the amount of memory, the new version includes three new Remote Procedure Calls (RPCs), which improve the configuration of the client for operation on a device with limited memory.

  • “getbalances” – Verification of confirmed and unconfirmed balances.
  • “setwalletflag” – Enable and disable certain properties of a particular wallet.
  • “getblockfilter” – implementation of BIP158 filter.

BIP 158 is a new solution to replace the so-called “Bloom filters”. These have been used by light clients, especially mobile Bitcoin wallets and a few desktop wallets, to request data from full nodes in the network. Due to data protection problems and increased CPU and disk space costs for full nodes, they are no longer supported by default.

The new solution to this problem is “compact client-side block filtering” (BIP 158). This allows the full nodes to create the filters themselves. The light clients can then use these filters to find out whether relevant transactions have taken place in a block.

Default integration of “bech32”

Furthermore, the new version of the GUI creates bech32 addresses by default, although the user can still change the address type manually. The address format “bech32” (BIP 173) was already introduced with Bitcoin Core 0.16.0 at the beginning of 2018, but is now set as a standard option in the Bitcoin Core Wallet Graphical User Interface (GUI) for the first time.

Prevention of “partitioning attacks”

The new upgrade also makes so-called “partitioning attacks” more difficult. The background is that in a peer-to-peer network like Bitcoin’s, each node establishes connections to other nodes. One way to counteract partitioning attacks is for nodes to establish more connections to each other. This is exactly what the new Bitcoin Core version does.

Bitcoin Core 0.19.0 increases the standard for outgoing connections by two. However, these additional connections are only used for forwarding blocks and not for transactions. This minimally increases the additional bandwidth requirement, while partition attacks become more difficult.

Removal of the Payment Protocol

The Payment Protocol (BIP 70) has also been deactivated by default. The only service that uses it is BitPay. The Payment Protocol was developed several years ago to provide users and merchants with additional details about a payment, such as a human readable target address (the merchant’s name) and a refund address. However, the standard was not widely used and was therefore removed from the GUI by default.