Almost 10 years, Satoshi Nakamoto launched Bitcoin. Still, the most dominant token in the market receives an upgrade, Bitcoin Core 0.17.0, the 17th generation of Bitcoin’s original software client.
A team of some 135 contributors led by Bitcoin Core lead maintainer Wladimir van der Laan took about seven months to create the latest update. Bitcoin Core 0.17.0 is the result of over 700 merged pull requests and includes a range of performance improvements and bug fixes among other changes.
Here is the list of a few notable upgrades:
Branch and Bound
Typically, Coins in a wallet are stored as separate chunks (“transaction outputs”). A chunk for every payment received, making chunks that may represent different amounts. Now when a payment is made from the wallet, the amount that is to be paid is achieved by adding different chunks along with the respective fee.
Often the chunks do not congregate up to the exact amount to be paid. This necessitates the addition of a “change address” to the transaction and any leftover funds is returned back into the same wallet. Till now, the process was that Bitcoin Core wallet adds different chunks together and only then calculate the fee. Once the fee is applied, the added chunks might not satisfy the payment amount and thus more chunks are included.
Here comes the role of the “Branch and Bound” algorithm designed by Mark Erhardt, BitGo engineer that has been introduced in the Bitcoin Core 0.17.0 upgrade.
Fee calculation: Tweaking the process, the fee for each is calculated before it is being added, avoiding the need of adding new chunks later.
Avoiding change addresses: the algorithm tries to match different chunks in order to add up the exact amount needed. This feature enables the transaction to avoid “change addresses” wherever possible. A feature that can come in handy for big wallets with lots of chunks like that of exchanges or other high-traffic entities.
Privacy improvement: Though not suggested, multiple payments can be received to the same Bitcoin address as in case of donation addresses. Reusing addresses indicated that all the coins on that address and all payments made from that address are from the same user which is bad for privacy.
What worsen’s the situation is different chunks tied to the same address are used in different transactions, inadvertently linking them to chunks that weren’t initially associated with that address. Bitcoin Core 0.17.0 presents a solution for the same and enables the user to prioritize adding chunks tied to the same address together in a transaction while leaving other chunks out of the transaction wherever possible.
Creation of New or Multiple Wallets
Bitcoin Core 0.15.0 enables you to operate several wallets that are independent of each other. Each wallet has it own separate Bitcoin addresses, private keys, and the subsequent funds. Basically, this enables a user to segregate their wallets in a similar manner of accounts. For instance, one wallet for personal day-to-day purchases and the other ones for business or savings or investment purposes. Additionally, the user is provided with increased privacy as a blockchain analysis would not link these different wallets to each other.
GUI: Earlier, new wallets were only created when starting up the node and weren’t available for Bitcoin Core wallet (GUI) users. The upgrade resolves these issues and lets the user create new wallets whenever they’d like and offers this feature in the GUI as well.
Scantxoutset: This feature enables the user to quickly verify whether their new wallet already includes coins by checking the unspent transaction output (UTXO) set, instead of rescanning the entire transaction history.
Hierarchical Deterministic wallets compatibility
Bitcoin Core versions older than 0.13.0 requires the user to back up all their private keys, while all the later Bitcoin Core versions offer Hierarchical Deterministic ( HD ) wallets. In the case of an HD wallet, the user needs to store only one seed phrase (a list of words) as a backup.
An issue arises when Bitcoin Core users who upgrade their system to Bitcoin Core 0.13.0 and newer create an HD wallet, due to incompatibility between non-HD wallets and HD wallets the users still have to back up all their private keys. Resolving this issue as well, Bitcoin Core 0.17.0 allows the users to upgrade to the HD format without issue. Moreover, the HD wallet users opt to generate or import a new HD seed.
Watch Only Wallets
For a while now, Bitcoin Core supports “Watch Only” addresses that let the user to not to store their private keys in the wallet, while coins attached to these addresses are still visible. The upgrade has advanced this facility, a step further by allowing users to create specific Watch Only wallets in which every address is a Watch Only address. In simpler words, Bitcoin Core could be used to keep track of funds in a hardware wallet or on a paper wallet in the form of an HD seed.
While most transactions are one to one, Bitcoin also facilitates more complex transaction such as multisignature (multisig) transactions, which requires sign off from several users to send off fund. Another example is privacy-enhancing CoinJoin transactions, which allows different users to merge their independent transactions into one big transaction.
The upgrade introduces the BIP 174, Partially Signed Bitcoin Transaction (PSBT) framework, designed by Andrew Chow to freely allow such a complex transaction. The Bitcoin Core users will be able to sign a transaction partially and add metadata to such a partially signed transaction. The metadata will enable someone else to complete the transaction.
Enhanced blockchain pruning
Bitcoin blockchain stores all (on-chain) Bitcoin transactions that ever happened and has grown over 180 gigabytes, with substantial daily additions. A New Bitcoin Core users must download and validate all this data. A trick called “blockchain pruning” saved the user from the need of storing all this data.
In pruning mode, nodes automatically forget older transaction data and remembering only the data required to operate securely. Until now, the feature could only be enabled only through the command line. In its’ latest update bitcoin core offers a convenient GUI toggle to enable pruning from the wallet. A beneficiary feature for non-technical Bitcoin users who wish to run a full node for optimal security.
For more details on the latest version of Bitcoin Core, check out Bitcoin Core 0.17.0 release notes or watch the presentation by Chaincode Labs engineer and Bitcoin Core contributor John Newberry’s.