On Thursday, January 14th, Bitcoin Core 0.21.0, a major bitcoin client update launched by Satoshi Nakamoto 12 years ago, was released. About a hundred programmers have been working on the update for over six months under the guidance of the lead Bitcoin Core developer Vladimir van der Laan. Bitcoin Core 0.21.0 is one of the largest Bitcoin Core releases in recent years, introducing several new features to improve the privacy of the Bitcoin network, as well as taking a big step towards updating the Schnorr / Taproot protocol. Aaron van Widrum in an article for Bitcoin Magazine highlighted the most significant changes. Descriptor wallets To send coins to a bitcoin address, you need to fulfill the condition for creating an unspent transaction output (UTXO). The typical condition is to include a valid signature that matches a specific public key. But the conditions also require, for example, the inclusion of a secret code, the expiration of a certain period, or the provision of multiple signatures (multi-signatures). Until now, Bitcoin Core has been designed to manage UTXOs in its wallet using the appropriate private keys, although private keys are just one of several possible conditions for spending coins. Bitcoin Core 0.21.0 introduces so-called “descriptor wallets”. Descriptor wallets allow users to categorize their UTXOs based on the types of conditions required to spend them. Descriptor wallets are especially useful for developers who build applications based on Bitcoin Core. A specific application can now be easily designed to use only a specific type of UTXO (for example, a multi-signature UTXO application that will ignore any non-multi-signature UTXO). Due to this, the most notable change is that no wallet is created by default when the new Bitcoin Core is launched. Instead, a new wallet is only created when the user chooses to do so, which allows him to create only a specific type of wallet. Client Side Block Filtering Light Clients are bitcoin wallets that do not download or verify the entire bitcoin blockchain. Instead, they download and validate only those parts of the latest blocks and transactions. This is not the safest use case for Bitcoin, but it requires far fewer resources. Bloom filters are often used to load blockchain data. Bloom filters are a cryptographic scheme for requesting specific data from relatively random nodes on the network. Over the years, it has become clear that Bloom’s filters are quite unfriendly to privacy: they essentially expose all user addresses to a (random) node, which may well be collecting sensitive information about Bitcoin users. A new and more confidential alternative to Bloom filters is called Compact client-side block filtering (BIP 157/158). Client-side block filtering essentially flips the concept of Bloom filters. Instead of light wallets that create filters to send to full nodes, full nodes create filters for each block and send them to light clients upon request. Light clients then use these filters to see if their related transactions could have been included in the block. The light wallet will then receive the entire block and fetch all transaction data from it. Tor V3 Support A recent update to the Tor protocol introduced Tor V3 (version 3) addresses that are longer than V2 (version 2) addresses. V2 addresses are still in use, but will be phased out in about a year. The end of support for V2 addresses could be a problem for Bitcoin Core users who want to use Bitcoin on the Tor network. Bitcoin Core nodes find peers by distributing Tor addresses of famous Bitcoin nodes that use Tor. Bitcoin Core 0.21.0 supports a new format for exchanging Tor addresses. Schnorr / TaprootSchnorr / Taproot will be the first major bitkin protocol update since Segregated Witness (SegWit) in August 2017. The Schnorr signature algorithm is considered a significant improvement over the current ECDSA signature algorithm. Combined with the Taproot update, which hides various coin spending conditions, the update will offer more flexibility for creating smart contracts while maintaining user privacy. The Schnorr / Taproot code is included in Bitcoin Core 0.21.0. However, Schnorr / Taproot will not be available on the Bitcoin mainnet yet. The update must be activated first, and this requires activation logic that is not yet included in Bitcoin Core. The activation logic is expected to be included in the Bitcoin Core minor release over the coming months.