May 24, 2022

Bitcoin Core client for Bitcoin blockchain

Bitcoin Core client for Bitcoin blockchain

The official release of Bitcoin Core 0.19.0, the nineteenth major release of the original, took place this Sunday. Bitcoin software (BTC),launched by Satoshi Nakamoto almost 11 years ago and still remains the main software implementation for interacting with the leading cryptocurrency network. The current version is officially called Bitcoin Core, as unforeseen difficulties arose at the last stage of the 0.19.0 release.

As before, the development of Bitcoin Core overseesVladimir van der Laan, and more than a hundred people took part in the preparation of his latest version. In total, within six months, 550 requests for adding code were issued, which resulted in a number of performance improvements, upgrades, fixes and other changes, writes Aaron van Wirdum for Bitcoin Magazine.

Default Bech32 GUI Addresses

The bech32 address format was included in the Bitcoin releaseCore 0.16.0, held in early 2018, however, it was now first activated as a default option in the graphical user interface (GUI).

Bech32 addresses begin with the “bc1” prefix and allow you to take advantage of Segregated Witness (SegWit) technology.

Because not all bitcoin wallets are currentlywhile they support sending funds to bech32 addresses, Bitcoin Core 0.19.0 users can still create PS2H addresses for receiving transactions using the option in the graphical interface.

Providing additional connectivity to external nodes

Bitcoin network may be subject to variousattacks, including a “separation attack”. If an attacker controls a sufficient number of nodes of the Bitcoin blockchain, he will potentially be able to "cut off" certain nodes, preventing them from participating in the formation of consensus. Then, the separated part of the network can be transferred to a smaller chain, which will open up opportunities for replaying transactions.

The problem can be solved if the separated nodewill maintain a connection with at least one honest node in the main network. To complicate the implementation of separation attacks, it is advisable to ensure that the node is connected to more than one node in the network. This is exactly what is done in Bitcoin Core 0.19.0, where by default the node maintains a connection with two other network participants, which transmit to it only data about blocks, but not about transactions or additional information. Thus, it is possible to achieve a minimum increase in bandwidth requirements and reduce the risks of attacks.

Disabling Bloom Filters

Bitcoin Core is a full node implementation,downloading and verification of all blocks in the network. It has an optimal level of security, but is not suitable for low-performance devices such as mobile phones. Mobile wallets, as a rule, are lightweight customers who download only transactions that are directly related to them.

To solve the problem useda cryptographic technique called “Bloom filters”, which allows lightweight clients to request the necessary information from more or less random nodes on the network. Over time, it became clear that this approach entails negative consequences in the context of privacy, as it reveals all user addresses to a full node.

In addition, the use of these filters requires additional CPU resources and storage space for a full node, without providing it with any direct advantages.

Because of this, it was decided to disable the support for Bloom filter requests in Bitcoin Core 0.19.0 by default.

Enhanced support for compact client-side block filtering

An alternative to Bloom filters is the newer one.a solution called “compact client-side block filtering”. It completely changes the concept of Bloom filters, forcing full nodes to create filters for each block instead of lightweight clients.

Bitcoin Core 0.19.0 expands the possibilities of this approach, allowing users to create such filters through remote procedure call (RPC) for applications running on the basis of a full node, such as wallets. So far, owners of full nodes cannot transfer filters to other users of bitcoin wallets, but such an opportunity may appear in the future.

Disabling BIP 70 payment protocol in GUI

BIP 70 payment protocol was created severalyears ago in order to improve the user experience in the implementation of bitcoin payments. In addition to the payment itself, the user or seller can provide related information, such as the address for a refund in case of problems.

Bitcoin Core developers integrated paymentprotocol in a graphical interface, however, the standard was not widely used. In addition, a number of vulnerabilities have been associated with it in the context of security and privacy.

However, the protocol was adopted by the popularBitPay processing service, which slowed down the process of abandoning it. In Bitcoin Core 0.19.0, after all thought, the BIP 70 was removed from the graphical user interface. Its activation will require special tuning of the node.

Other improvements

In addition to the aforementioned updates, Bitcoin Core 0.19.0 includes many smaller improvements and upgrades.

Now a limited node can be started immediatelyfrom the moment of installation, which will interest users with a small amount of hard drive. Bitcoin Core 0.19.0 offers new features for the partially signed Bitcoin Transaction Protocol (PSBT), which can be useful when using multi-signature transactions and CoinJoin transactions. Additional wallet descriptors have been introduced for application developers.

Full Bitcoin Core 0.19.0 documentation is available at