A new version of the original Bitcoin software client created by Satoshi Nakamoto has been released today.
Bitcoin Core 23.0 has been worked on by 132 developers for approximately seven months to bring tangible improvements to the Bitcoin Core portfolio, peer-to-peer communication and networking, rate estimation and more.
This article explores some of the key changes.
Portfolio updates
Touch root support
Bitcoin Core now allows the user to choose the new Taproot address type when creating a new wallet. While not the default, as many wallets in the ecosystem still can’t send to a Taproot address, the user has the option to create Taproot receive addresses in newly created wallets.
By adding native support for Taproot addresses, Bitcoin Core is taking a step in the direction of a broader adoption of Taproot. As more and more users opt for the new update features, their benefits can be better extended to the user base.
Descriptor portfolios are now the defaults
Bitcoin Core wallets now have the default descriptors once created, a significant change that promises a better process for saving and recovering bitcoin funds.
Since the advent of hierarchical deterministic (HD) wallets, a Bitcoin wallet typically uses 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 used to generate an almost infinite number of receiving addresses using bypass paths that, as its name suggests, guide the wallet to the path that must follow to derive. correctly. an address.
Therefore, fund recovery in a Bitcoin wallet generally depends on this derivation path, as most current applications use HD wallets by default. (The use of wallets in different derivation paths is why it is common to see a user trying to recover funds from a second wallet by finding a zero balance.)
However, descriptor portfolios make it easy for the user to retrieve funds by explicitly indicating the referral path to the descriptor. This relieves the user of having to worry about which derivation route their wallet is using: a huge improvement in the user experience (UX).
Spelling errors can now be detected in Bech32 addresses
Bech32 addresses, the format in which the address begins with “bc1”, have an interesting property that allows you to detect possible spelling errors. However, it took Bitcoin Core 23.0 to benefit the user.
Bitcoin Core will now alert the user of up to two errors in a Bech32 address. The tool is currently only available on the command line, using the “validateaddress” PRC, although there are plans to integrate it into the graphical user interface (GUI) in the future. If the user makes more than two mistakes when entering the address, the spelling mistake finder cannot guarantee success.
The error limit that the tool is committed to finding is important because trying to find a large number of typos can lead to unwanted behavior. If the user typed in an address with several incorrect letters, even if the tool could detect them all, it could end up suggesting a completely different address than the one the user wanted to send in the first place, a much worse result.
Freeze pieces
A Bitcoin Core user has been able to choose which currencies, or outflows of unspent transactions (UTXO), to use in a transaction for years. But this coin-checking feature required a manual selection of which UTXO to use each time: a tedious and tedious process that is very prone to errors.
Now, Bitcoin Core allows the user to “freeze” a UTXO indefinitely. The freezing process is still manual, but the user only has to do it once and then you can be sure that Bitcoin Core will not automatically spend the frozen currency until the user unlocks this room.
It is important to carefully select which UTXOs to use to fund a transaction to avoid undesirably linking conflicting addresses. For example, a user might not want to join the UTXOs obtained by your customer’s knowledge (KYC) methods with non-KYC currencies. If they did, any observer in the blockchain might infer that this user, who may be familiar with the KYC information provided, is also the owner of the non-KYC address and its life-threatening coins.
Changes in P2P communications
Port 8333 Preference Removed
In general, computers need two vital data to communicate with each other on the Internet: an IP address and a port number. While the IP address serves as the identifier of a computer on a network, helping to determine its location, the port number helps to inform about the type of communication that takes place on the Internet, as each communication protocol usually uses a specific port number by default. . Therefore, ports allow a computer to run several types of traffic at once, while easily differentiating them. For example, the web HTTP protocol uses port 80 by default, while its more secure counterpart HTTPS typically runs on port 443 and the email SMTP protocol uses port 25.
With Bitcoin, it’s no different. Historically, when Bitcoin Core began, computers were running on port 8333 by default and looking for partners to use that same port.
While ports make it easier for computers to communicate over the Internet, they also make it easier for Internet Service Providers (ISPs) to monitor traffic because it’s easy to assume what kind of communication is happening. In an adverse setting, an ISP could filter and block certain traffic depending on the destination port. While not the most effective censorship mechanism available to ISPs, it is the simplest and an attacked protocol should change its default communication port to prevent censorship or acceleration.
By removing the 8333 port preference, Bitcoin Core now mitigates the easiest way for ISPs to filter or block Bitcoin traffic. In addition, nodes that do not run on port 8333 will now have less friction to get incoming connections from other nodes, as the network no longer prioritizes that port.
CJDNS network support
Bitcoin Core 23.0 also protects users from opposing ISPs by adding support for CJDNS, a secure alternative to the standard Internet Protocol (IP).
CJDNS leverages public key cryptography to implement an encrypted version of IPv6, the latest version of IP. By providing end-to-end encryption natively, CJDNS enhances IPv6 and IPv4 (the previous IP version that is still widely used) with greater security and privacy, as it protects the nodes that use it from traffic analysis and filtering.
This addition offers new options for users who want to protect their traffic from prying eyes or increase the security of their Bitcoin settings. 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.
Best rate estimates
The integrated Bitcoin Core rate estimator has just been a little more complete.
According to a post on John Newbery’s blog on the subject, the Bitcoin Core Fee Estimator “simply records and reports significant statistics on past events, and uses this data to give the user a reasonable estimate of the amount of the fee to include your transaction NO blogs “, with NO being the number of blocks the user is willing to wait for their transaction to be confirmed.
The algorithm for calculating these estimates took into account all transactions in mempool, Bitcoin’s “waiting area” for transactions that have not yet been included in a block. However, since the introduction of rate replacement transactions (RBFs), which effectively allow the user to increase the rate that their transaction promises to miners in an attempt to get a faster confirmation, Bitcoin Core has not had consider the new type of transaction. when rates are estimated there is no doubt that the feature would be widely adopted by users and miners.
Now, with Bitcoin Core 23.0, RBF transactions are taken into account in Bitcoin Core rate estimates, providing a more accurate estimate for users who use the software to send transactions.
Support for trace points and user space, statically defined trace
Bitcoin Core now includes experimental trace points in its user binaries for Linux with statically defined (USDT) user space.
USDT allows users to get detailed information about their node that can be used for review, debugging, and tracking. The feature keeps track of detailed custom statistics and monitors internal node events that are otherwise hidden, although it has little or no impact on performance when not in use.
An example where this is useful is to detect and possibly prevent attacks. A security investigator could set up multiple nodes and track messages received from peers to identify attacks in advance.
Thanks to Aaron van Wirdum for the information and comments.
For more details and other changes, see Bitcoin Core 23.0 publication notes. To download Bitcoin Core 23.0, browse here. Details about Bitcoin Core 23.0 are also explained in audio in Bitcoin Explained Podcast Episode 56.