Inside Bitcoin
Opening the selected file…
Opening the selected file…
The code behind the network, with room to understand it.
Release published 2026-10-28 · Snapshot fetched 2026-11-01. Latest stable release at fetch time; development branches and Git history are excluded. Only the selected code window and visible folders load here.
10.21.0 Release Notes2====================4Bitcoin Core version 0.21.0 is now available from:6<https://bitcoincore.org/bin/bitcoin-core-0.21.0/>8This release includes new features, various bug fixes and performance9improvements, as well as updated translations.11Please report bugs using the issue tracker at GitHub:13<https://github.com/bitcoin/bitcoin/issues>15To receive security and update notifications, please subscribe to:17<https://bitcoincore.org/en/list/announcements/join/>19How to Upgrade20==============22If you are running an older version, shut it down. Wait until it has completely23shut down (which might take a few minutes in some cases), then run the24installer (on Windows) or just copy over `/Applications/Bitcoin-Qt` (on Mac)25or `bitcoind`/`bitcoin-qt` (on Linux).27Upgrading directly from a version of Bitcoin Core that has reached its EOL is28possible, but it might take some time if the data directory needs to be migrated. Old29wallet versions of Bitcoin Core are generally supported.31Compatibility32==============34Bitcoin Core is supported and extensively tested on operating systems35using the Linux kernel, macOS 10.12+, and Windows 7 and newer. Bitcoin36Core should also work on most other Unix-like systems but is not as37frequently tested on them. It is not recommended to use Bitcoin Core on38unsupported systems.40From Bitcoin Core 0.20.0 onwards, macOS versions earlier than 10.12 are no41longer supported. Additionally, Bitcoin Core does not yet change appearance42when macOS "dark mode" is activated.44The node's known peers are persisted to disk in a file called `peers.dat`. The45format of this file has been changed in a backwards-incompatible way in order to46accommodate the storage of Tor v3 and other BIP155 addresses. This means that if47the file is modified by 0.21.0 or newer then older versions will not be able to48read it. Those old versions, in the event of a downgrade, will log an error49message "Incorrect keysize in addrman deserialization" and will continue normal50operation as if the file was missing, creating a new empty one. (#19954, #20284)52Notable changes53===============55P2P and network changes56-----------------------58- The mempool now tracks whether transactions submitted via the wallet or RPCs59have been successfully broadcast. Every 10-15 minutes, the node will try to60announce unbroadcast transactions until a peer requests it via a `getdata`61message or the transaction is removed from the mempool for other reasons.62The node will not track the broadcast status of transactions submitted to the63node using P2P relay. This version reduces the initial broadcast guarantees64for wallet transactions submitted via P2P to a node running the wallet. (#18038)66- The size of the set of transactions that peers have announced and we consider67for requests has been reduced from 100000 to 5000 (per peer), and further68announcements will be ignored when that limit is reached. If you need to dump69(very) large batches of transactions, exceptions can be made for trusted70peers using the "relay" network permission. For localhost for example it can71be enabled using the command line option `-whitelist=relay@127.0.0.1`.72(#19988)74- This release adds support for Tor version 3 hidden services, and rumoring them75over the network to other peers using76[BIP155](https://github.com/bitcoin/bips/blob/master/bip-0155.mediawiki).77Version 2 hidden services are still fully supported by Bitcoin Core, but the78Tor network will start79[deprecating](https://blog.torproject.org/v2-deprecation-timeline) them in the80coming months. (#19954)82- The Tor onion service that is automatically created by setting the83`-listenonion` configuration parameter will now be created as a Tor v3 service84instead of Tor v2. The private key that was used for Tor v2 (if any) will be85left untouched in the `onion_private_key` file in the data directory (see86`-datadir`) and can be removed if not needed. Bitcoin Core will no longer87attempt to read it. The private key for the Tor v3 service will be saved in a88file named `onion_v3_private_key`. To use the deprecated Tor v2 service (not89recommended), the `onion_private_key` can be copied over90`onion_v3_private_key`, e.g.91`cp -f onion_private_key onion_v3_private_key`. (#19954)93- The client writes a file (`anchors.dat`) at shutdown with the network addresses94of the node’s two outbound block-relay-only peers (so called "anchors"). The95next time the node starts, it reads this file and attempts to reconnect to those96same two peers. This prevents an attacker from using node restarts to trigger a97complete change in peers, which would be something they could use as part of an98eclipse attack. (#17428)100- This release adds support for serving101[BIP157](https://github.com/bitcoin/bips/blob/master/bip-0157.mediawiki) compact102filters to peers on the network when enabled using103`-blockfilterindex=1 -peerblockfilters=1`. (#16442)105- This release adds support for signets106([BIP325](https://github.com/bitcoin/bips/blob/master/bip-0325.mediawiki)) in107addition to the existing mainnet, testnet, and regtest networks. Signets are108centrally-controlled test networks, allowing them to be more predictable109test environments than the older testnet. One public signet is maintained, and110selectable using `-signet`. It is also possible to create personal signets.111(#18267).113- This release implements114[BIP339](https://github.com/bitcoin/bips/blob/master/bip-0339.mediawiki)115wtxid relay. When negotiated, transactions are announced using their wtxid116instead of their txid. (#18044).118- This release implements the proposed Taproot consensus rules119([BIP341](https://github.com/bitcoin/bips/blob/master/bip-0341.mediawiki) and120[BIP342](https://github.com/bitcoin/bips/blob/master/bip-0342.mediawiki)),121without activation on mainnet. Experimentation with Taproot can be done on122signet, where its rules are already active. (#19553)124Updated RPCs125------------127- The `getpeerinfo` RPC has a new `network` field that provides the type of128network ("ipv4", "ipv6", or "onion") that the peer connected through. (#20002)130- The `getpeerinfo` RPC now has additional `last_block` and `last_transaction`131fields that return the UNIX epoch time of the last block and the last *valid*132transaction received from each peer. (#19731)134- `getnetworkinfo` now returns two new fields, `connections_in` and135`connections_out`, that provide the number of inbound and outbound peer136connections. These new fields are in addition to the existing `connections`137field, which returns the total number of peer connections. (#19405)139- Exposed transaction version numbers are now treated as unsigned 32-bit140integers instead of signed 32-bit integers. This matches their treatment in141consensus logic. Versions greater than 2 continue to be non-standard142(matching previous behavior of smaller than 1 or greater than 2 being143non-standard). Note that this includes the `joinpsbt` command, which combines144partially-signed transactions by selecting the highest version number.145(#16525)147- `getmempoolinfo` now returns an additional `unbroadcastcount` field. The148mempool tracks locally submitted transactions until their initial broadcast149is acknowledged by a peer. This field returns the count of transactions150waiting for acknowledgement.152- Mempool RPCs such as `getmempoolentry` and `getrawmempool` with153`verbose=true` now return an additional `unbroadcast` field. This indicates154whether initial broadcast of the transaction has been acknowledged by a155peer. `getmempoolancestors` and `getmempooldescendants` are also updated.157- The `getpeerinfo` RPC no longer returns the `banscore` field unless the configuration158option `-deprecatedrpc=banscore` is used. The `banscore` field will be fully159removed in the next major release. (#19469)161- The `testmempoolaccept` RPC returns `vsize` and a `fees` object with the `base` fee162if the transaction would pass validation. (#19940)164- The `getpeerinfo` RPC now returns a `connection_type` field. This indicates165the type of connection established with the peer. It will return one of six166options. For more information, see the `getpeerinfo` help documentation.167(#19725)169- The `getpeerinfo` RPC no longer returns the `addnode` field by default. This170field will be fully removed in the next major release. It can be accessed171with the configuration option `-deprecatedrpc=getpeerinfo_addnode`. However,172it is recommended to instead use the `connection_type` field (it will return173`manual` when addnode is true). (#19725)175- The `getpeerinfo` RPC no longer returns the `whitelisted` field by default.176This field will be fully removed in the next major release. It can be accessed177with the configuration option `-deprecatedrpc=getpeerinfo_whitelisted`. However,178it is recommended to instead use the `permissions` field to understand if specific179privileges have been granted to the peer. (#19770)181- The `walletcreatefundedpsbt` RPC call will now fail with182`Insufficient funds` when inputs are manually selected but are not enough to cover183the outputs and fee. Additional inputs can automatically be added through the184new `add_inputs` option. (#16377)186- The `fundrawtransaction` RPC now supports `add_inputs` option that when `false`187prevents adding more inputs if necessary and consequently the RPC fails.189Changes to Wallet or GUI related RPCs can be found in the GUI or Wallet section below.191New RPCs192--------194- The `getindexinfo` RPC returns the actively running indices of the node,195including their current sync status and height. It also accepts an `index_name`196to specify returning the status of that index only. (#19550)198Build System199------------201Updated settings202----------------204- The same ZeroMQ notification (e.g. `-zmqpubhashtx=address`) can now be205specified multiple times to publish the same notification to different ZeroMQ206sockets. (#18309)208- The `-banscore` configuration option, which modified the default threshold for209disconnecting and discouraging misbehaving peers, has been removed as part of210changes in 0.20.1 and in this release to the handling of misbehaving peers.211Refer to "Changes regarding misbehaving peers" in the 0.20.1 release notes for212details. (#19464)214- The `-debug=db` logging category, which was deprecated in 0.20 and replaced by215`-debug=walletdb` to distinguish it from `coindb`, has been removed. (#19202)217- A `download` permission has been extracted from the `noban` permission. For218compatibility, `noban` implies the `download` permission, but this may change219in future releases. Refer to the help of the affected settings `-whitebind`220and `-whitelist` for more details. (#19191)222- Netmasks that contain 1-bits after 0-bits (the 1-bits are not contiguous on223the left side, e.g. 255.0.255.255) are no longer accepted. They are invalid224according to RFC 4632. Netmasks are used in the `-rpcallowip` and `-whitelist`225configuration options and in the `setban` RPC. (#19628)227- The `-blocksonly` setting now completely disables fee estimation. (#18766)229Changes to Wallet or GUI related settings can be found in the GUI or Wallet section below.231Tools and Utilities232-------------------234- A new `bitcoin-cli -netinfo` command provides a network peer connections235dashboard that displays data from the `getpeerinfo` and `getnetworkinfo` RPCs236in a human-readable format. An optional integer argument from `0` to `4` may237be passed to see increasing levels of detail. (#19643)239- A new `bitcoin-cli -generate` command, equivalent to RPC `generatenewaddress`240followed by `generatetoaddress`, can generate blocks for command line testing241purposes. This is a client-side version of the former `generate` RPC. See the242help for details. (#19133)244- The `bitcoin-cli -getinfo` command now displays the wallet name and balance for245each of the loaded wallets when more than one is loaded (e.g. in multiwallet246mode) and a wallet is not specified with `-rpcwallet`. (#18594)248- The `connections` field of `bitcoin-cli -getinfo` is now expanded to return a JSON249object with `in`, `out` and `total` numbers of peer connections. It previously250returned a single integer value for the total number of peer connections. (#19405)
Independent explanations by MyBitcoinExplorer. Not affiliated with or endorsed by Bitcoin Core. Guides are educational and do not replace the source or its tests.
Bitcoin Core source © its contributors, distributed under the MIT license. Original notices and bundled third-party licenses are retained in the source tree.