A new version of the original Bitcoin software client launched by Satoshi Nakamoto has been released today.
Bitcoin Core 23.0 has been worked on by 132 developers over nearly seven months to bring tangible improvements to the Bitcoin Core wallet, communication, peer-to-peer network, fee estimation, and more.
This article explores some of the major changes.
Bitcoin Core now allows the user to choose the new Taproot address type when creating a new wallet. Although this is not the default, since many wallets in the ecosystem cannot send to a Taproot address yet, the user is given the option to create Taproot receive addresses in newly created wallets.
The Taproot address created by the Bitcoin Core wallet to receive bitcoin is a simple address with a single signature. Therefore, users will not automatically save BTC in fees compared to regular single-signature Bech32 addresses, with greater savings coming from moving more complex spending terms and address settings into the Taproot scheme.
By adding native support for Taproot addresses, Bitcoin Core is taking a step in the direction of encouraging greater Taproot adoption. As more users opt for the new upgrade features, its benefits are better able to permeate through the user base.
Descriptor wallets are now the default
Bitcoin Core wallets are now used by default Descriptors When it is created, it is an important change that promises a better backup and recovery of bitcoin funds.
Since the advent of hierarchical deterministic (HD) wallets, a Bitcoin wallet will typically use recovery seeds (usually 12 or 24 words) to generate a master private key. The wallet then uses this master private key to generate a master public key, which can be leveraged to generate an almost infinite number of receiving addresses through derivation paths, which as the name says, directs the wallet to the path it must follow to properly derive the address.
Therefore, the recovery of funds in a Bitcoin wallet is generally based on this derivation path, as most applications today default to HD wallets. (The use of different derivation paths by wallets is the reason why it is common to see a user trying to recover funds in a second wallet who finds a balance of zero.)
However, descriptor wallets make it easier for the user to recover any funds by explicitly specifying the derivation path in the descriptor. Thus, the user is relieved of having to care about the derivation path their wallet is using – a huge improvement in user experience (UX).
Typos can now be spotted in Bech32 addresses
Bech32 addresses, the format in which the address begins with “bc1”, have the interesting property of detecting potential typos. However, the user was not able to take advantage of this until Bitcoin Core 23.0.
Bitcoin Core will now alert the user about up to two Bech32 address errors. The tool is currently only available on the command line, through the “Validateaddress” RPC, although there are plans to integrate it into a graphical user interface (GUI) in the future. If the user makes more than two mistakes when typing the title, the typos finder will not guarantee success.
Limiting errors that the tool is committed to looking for is important because trying to find a large number of typos can lead to unwanted behavior. If a user types an address with the wrong number of characters, even if the tool can detect them all, they may end up suggesting an address completely different from what the user intended to send to in the first place – a much worse result.
A Bitcoin Core user has the option of choosing coins, or unspent transaction outputs (UTXOs), to use in a transaction for years now. But this currency control feature requires manually defining what UTXOs should use each time – a cumbersome, cumbersome process that is highly error-prone.
Now, Bitcoin Core allows the user to “freeze” the UTXO indefinitely. The freezing process is still a manual process, but the user only needs to do it once and can then rest assured that the frozen coin will not be automatically spent by Bitcoin Core until the user unfreezes that coin.
Accurate identification of UTXOs to be used to fund a transaction is important to prevent unwanted linking of addresses with conflicting purposes. For example, a user may not want to join UTXOs that they earned through Know Your Customer (KYC) methods with non-KYC coins. If they did, any observer of the blockchain would be able to conclude that this user, who could know them due to the KYC information provided, also owns the non-KYC address and their coins – to the detriment of user privacy.
Changes to P2P connections
Port preference 8333 . removed
In general, computers need two vital pieces of information to communicate with each other on the Internet: an IP address and a port number. While the IP address acts as an identifier for the computer in the network, helping to locate it, the port number helps identify the type of connection being made on the Internet as each communication protocol defaults to a specific port number. As a result, the ports enable a computer to run multiple types of traffic simultaneously while easily distinguishing between them. For example, HTTP for the web defaults to port 80, its more secure counterpart HTTPS typically runs on port 443, and email SMTP powers port 25.
With Bitcoin, it is no different. Historically, when starting up Bitcoin Core, computers defaulted to port 8333 and looked for peers using the same port.
While ports facilitate communication between computers on the Internet, they also make it easier for Internet Service Providers (ISPs) to monitor traffic because it is easy to assume the type of connection being made. In an adversarial setup, the ISP can filter and block certain traffic based on the destination port. Although it is not the most effective censorship mechanism available to ISPs, it is the easiest, and the attacking protocol will need to change its default communication port to bypass censorship or throttling.
By removing the preference for port 8333, Bitcoin Core now mitigates the easiest path for ISPs to filter or block Bitcoin traffic. Additionally, nodes that are not running on port 8333 will have less friction in getting incoming connections from other nodes as the network no longer prioritizes that port.
CJDNS network support
Bitcoin Core 23.0 also protects users from hostile ISPs by adding support for CJDNS, a security-enhanced alternative to the standard Internet Protocol (IP).
CJDNS takes advantage of public key cryptography to implement an encrypted copy of IPv6 – the latest version of IP. By providing end-to-end encryption locally, CJDNS improves IPv6 and IPv4 (the former still widely used IP version) while increasing security and privacy as it protects the nodes it uses from traffic analysis and filtering.
The extension provides a new optional for users who are interested in protecting their traffic from prying eyes or increasing the security of their Bitcoin setup. While Tor and I2P exist as alternatives to clearnet IP, CJDNS serves as a complementary option that can enhance the robustness of the Bitcoin network and its nodes.
Better Fee Estimates
Bitcoin Core’s built-in fee estimator is a bit more complete.
According to a blog post by John Newbery on the topic, Bitcoin Core Fee Estimate “records and reports meaningful statistics about past events, and uses this data to give the user a reasonable estimate of how much fee they need to attach in order to get their transaction included within n blocks,” with n Being the number of blocks, the user is willing to wait for his transaction to be confirmed.
The algorithm that calculates such estimates is used to take into account all transactions on the mempool, and Bitcoin’s “waiting area” for transactions that are not yet included in the block. However, since the introduction of Exchange Fee Transactions (RBF), which enables a user to effectively pay the fees pledged by their transaction to miners in an effort to get faster confirmation, Bitcoin Core has not taken into account the new transaction type when estimating the fee out of doubt as to whether The feature will be widely adopted by users and miners.
Now, with Bitcoin Core 23.0, RBF transactions are taken into account in Bitcoin Core fee estimates, providing a more accurate estimate for users who take advantage of the software to send transactions.
Support tracking points and user space, statically selected tracking
Bitcoin Core now includes beta tracking points in its Linux release binaries with a user space, Static Defined Tracking (USDT).
USDT allows users to get detailed information from their nodes that can be used for review, debugging, and monitoring. This feature enables custom micro-statistics to be tracked and otherwise hidden internal node events monitored with little or no performance impact when not in use.
One example where this is useful is to detect and most likely prevent attacks. A security researcher can create multiple nodes and track messages from peers to identify attacks early.
Thanks to Aaron van Wirdum for the info and comments.
For more details and other changes, see Bitcoin Core 23.0 Release Notes. To download Bitcoin Core 23.0, navigate here. Details about Bitcoin Core 23.0 are also explained with audio in the file Explain Bitcoin Podcast Episode 56.