Connect with us


The release of Bitcoin Core 0.17.0



The developers of Bitcoin Core presented a major update to the most popular Bitcoin client.

A new version of the client was worked on for seven months under the leadership of Vladimir van der Laan and with the participation of 135 contributors. This is also the result of processing more than 700 requests for changes. The new version of Bitcoin Core contains a number of new features, improved performance, fixed bugs.

Optimized coin selection

Coins are stored in the wallet as separate fragments (transaction outputs). As a rule, each such fragment corresponds to one received transaction. Thus, all of these fragments represent different amounts.

When a user sends a payment from his wallet, various fragments are combined together to get the required amount, taking into account the commission. Often it is not possible to collect the exact amount with whole fragments. Then a so-called “delivery address” is added to the transaction, which allows you to return the excess funds to the sender's wallet.

Until now, Bitcoin Core collected together various fragments, and then calculated the commission required to transfer the transaction. In some cases, the addition of this commission required the inclusion of another initially missing fragment in the transaction.

Bitcoin Core 0.17.0 uses the “branches and boundaries” algorithm created by BitGo developer Mark Ehrhardt. It brings two important improvements. First, the commission for each fragment is calculated before it becomes part of the transaction. This avoids the addition of new fragments to cover the commission. Secondly, the algorithm “tries” to compare different fragments in such a way as to obtain an amount as close as possible to the one requested by the sender. Thus, in some cases, there is no need for an “address for delivery”.

Such a function is particularly relevant for the “large” wallets at the disposal of cryptocurrency exchanges that can deal with many fragments. The new algorithm for selecting coins in Bitcoin Core 0.17.0 contributes to some increase in privacy.

Simple creation and use of new wallets

Starting from Bitcoin Core 0.15.0, users can create several wallets – for everyday needs, business, exchange, etc. Each of these wallets has its own address, private key and, accordingly, a balance.

Until today, various wallets could only be created at the stage of launching a new node, and not through interaction with the graphical interface. In Bitcoin Core 0.17.0, these restrictions were removed: users can create wallets at any time and through a graphical interface.

Also in Bitcoin Core 0.17.0, the “Scantxoutset” feature is introduced. It allows you to quickly check if a new wallet contains funds (for example, if it was restored by importing a private key from another wallet). In this case, verification is performed through the analysis of UTXO, and not by scanning the entire transaction history.

Compatibility of HD and non-HD wallets

Newer versions of Bitcoin Core use hierarchical deterministic (HD) wallets. Users of such wallets need to save only the seed phrase for backup.

At the same time, users upgraded to 0.13.0 or higher could not create new HD-wallets. Bitcoin Core 0.17.0 fixes this problem by allowing updated users to use HD-format wallets.

Addresses in watch-only format

BTC wallets store private keys that allow users to spend money. However, from a certain time Bitcoin Core maintains addresses in a “view only” format. Private keys to such addresses are not stored in the wallet, but the coins associated with them are still displayed in it. This allows users to easily accept payments and keep track of the balance. At the same time, private keys are stored offline.

Bitcoin Core 0.17.0 further develops this idea, allowing you to create special “view-only” wallets. In them and each separately taken address has the same status. This approach makes it convenient to monitor funds stored in hardware or paper wallets using seed phrases.

Partially signed transactions

The first cryptocurrency allows complex transaction types. These include:

  • multi-signature transactions (involving multiple users);
  • enhanced privacy transactions (for example, CoinJoin, where several users combine their transactions into one).

Bitcoin Core 0.17.0 supports the Partially Signed Bitcoin Transaction (PSBT) BIP 174 framework, developed by Andrew Chou. It allows you to partially sign a transaction by adding metadata to it, which can then be used by someone else to complete it.

Also, with the help of PSBT, the user can protect his funds by blocking them on a multi-signature wallet. At the same time to unlock will need a private key from the wallet Bitcoin Core, as well as the signature of the hardware wallet.

Currently, the function of partially signed transactions is available only through the Bitcoin Core command line or connected applications.

Blockchain reduction

The size of the bitcoin blockchain has already exceeded 180 GB and continues to grow. However, there is a method called “blockchain abbreviation”, due to which users do not have to store data about all transactions since the advent of Bitcoin.

In this mode, the reduction nodes automatically “forget” about the data of old transactions and store only what is necessary for safe operation. In the new version of Bitcoin Core, access to this function is provided through a graphical interface, and not through the command line, as it was before. This can motivate users who want to run the full node.

The full version of the Bitcoin Core 0.17.0 changes can be found on GitHub .

Recall that last month BlockchainJournal published a review of the pre-release version of Bitcoin Core 0.17.0 .

Follow BlockchainJournal on Twitter !