Inside Bitcoin
Opening the selected file…
Inside Bitcoin
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.
122.0 Release Notes2==================4Bitcoin Core version 22.0 is now available from:6<https://bitcoincore.org/bin/bitcoin-core-22.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.14+, 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 22.0 onwards, macOS versions earlier than 10.14 are no longer supported.42Notable changes43===============45P2P and network changes46-----------------------47- Added support for running Bitcoin Core as an48[I2P (Invisible Internet Project)](https://en.wikipedia.org/wiki/I2P) service49and connect to such services. See [i2p.md](https://github.com/bitcoin/bitcoin/blob/22.x/doc/i2p.md) for details. (#20685)50- This release removes support for Tor version 2 hidden services in favor of Tor51v3 only, as the Tor network [dropped support for Tor52v2](https://blog.torproject.org/v2-deprecation-timeline) with the release of53Tor version 0.4.6. Henceforth, Bitcoin Core ignores Tor v2 addresses; it54neither rumors them over the network to other peers, nor stores them in memory55or to `peers.dat`. (#22050)57- Added NAT-PMP port mapping support via58[`libnatpmp`](https://miniupnp.tuxfamily.org/libnatpmp.html). (#18077)60New and Updated RPCs61--------------------63- Due to [BIP 350](https://github.com/bitcoin/bips/blob/master/bip-0350.mediawiki)64being implemented, behavior for all RPCs that accept addresses is changed when65a native witness version 1 (or higher) is passed. These now require a Bech32m66encoding instead of a Bech32 one, and Bech32m encoding will be used for such67addresses in RPC output as well. No version 1 addresses should be created68for mainnet until consensus rules are adopted that give them meaning69(as will happen through [BIP 341](https://github.com/bitcoin/bips/blob/master/bip-0341.mediawiki)).70Once that happens, Bech32m is expected to be used for them, so this shouldn't71affect any production systems, but may be observed on other networks where such72addresses already have meaning (like signet). (#20861)74- The `getpeerinfo` RPC returns two new boolean fields, `bip152_hb_to` and75`bip152_hb_from`, that respectively indicate whether we selected a peer to be76in compact blocks high-bandwidth mode or whether a peer selected us as a77compact blocks high-bandwidth peer. High-bandwidth peers send new block78announcements via a `cmpctblock` message rather than the usual inv/headers79announcements. See BIP 152 for more details. (#19776)81- `getpeerinfo` no longer returns the following fields: `addnode`, `banscore`,82and `whitelisted`, which were previously deprecated in 0.21. Instead of83`addnode`, the `connection_type` field returns manual. Instead of84`whitelisted`, the `permissions` field indicates if the peer has special85privileges. The `banscore` field has simply been removed. (#20755)87- The following RPCs: `gettxout`, `getrawtransaction`, `decoderawtransaction`,88`decodescript`, `gettransaction`, and REST endpoints: `/rest/tx`,89`/rest/getutxos`, `/rest/block` deprecated the following fields (which are no90longer returned in the responses by default): `addresses`, `reqSigs`.91The `-deprecatedrpc=addresses` flag must be passed for these fields to be92included in the RPC response. This flag/option will be available only for this major release, after which93the deprecation will be removed entirely. Note that these fields are attributes of94the `scriptPubKey` object returned in the RPC response. However, in the response95of `decodescript` these fields are top-level attributes, and included again as attributes96of the `scriptPubKey` object. (#20286)98- When creating a hex-encoded bitcoin transaction using the `bitcoin-tx` utility99with the `-json` option set, the following fields: `addresses`, `reqSigs` are no longer100returned in the tx output of the response. (#20286)102- The `listbanned` RPC now returns two new numeric fields: `ban_duration` and `time_remaining`.103Respectively, these new fields indicate the duration of a ban and the time remaining until a ban expires,104both in seconds. Additionally, the `ban_created` field is repositioned to come before `banned_until`. (#21602)106- The `setban` RPC can ban onion addresses again. This fixes a regression introduced in version 0.21.0. (#20852)108- The `getnodeaddresses` RPC now returns a "network" field indicating the109network type (ipv4, ipv6, onion, or i2p) for each address. (#21594)111- `getnodeaddresses` now also accepts a "network" argument (ipv4, ipv6, onion,112or i2p) to return only addresses of the specified network. (#21843)114- The `testmempoolaccept` RPC now accepts multiple transactions (still experimental at the moment,115API may be unstable). This is intended for testing transaction packages with dependency116relationships; it is not recommended for batch-validating independent transactions. In addition to117mempool policy, package policies apply: the list cannot contain more than 25 transactions or have a118total size exceeding 101K virtual bytes, and cannot conflict with (spend the same inputs as) each other or119the mempool, even if it would be a valid BIP125 replace-by-fee. There are some known limitations to120the accuracy of the test accept: it's possible for `testmempoolaccept` to return "allowed"=True for a121group of transactions, but "too-long-mempool-chain" if they are actually submitted. (#20833)123- `addmultisigaddress` and `createmultisig` now support up to 20 keys for124Segwit addresses. (#20867)126Changes to Wallet or GUI related RPCs can be found in the GUI or Wallet section below.128Build System129------------131- Release binaries are now produced using the new `guix`-based build system.132The [/doc/release-process.md](/doc/release-process.md) document has been updated accordingly.134Files135-----137- The list of banned hosts and networks (via `setban` RPC) is now saved on disk138in JSON format in `banlist.json` instead of `banlist.dat`. `banlist.dat` is139only read on startup if `banlist.json` is not present. Changes are only written to the new140`banlist.json`. A future version of Bitcoin Core may completely ignore141`banlist.dat`. (#20966)143New settings144------------146- The `-natpmp` option has been added to use NAT-PMP to map the listening port.147If both UPnP and NAT-PMP are enabled, a successful allocation from UPnP148prevails over one from NAT-PMP. (#18077)150Updated settings151----------------153Changes to Wallet or GUI related settings can be found in the GUI or Wallet section below.155- Passing an invalid `-rpcauth` argument now cause bitcoind to fail to start. (#20461)157Tools and Utilities158-------------------160- A new CLI `-addrinfo` command returns the number of addresses known to the161node per network type (including Tor v2 versus v3) and total. This can be162useful to see if the node knows enough addresses in a network to use options163like `-onlynet=<network>` or to upgrade to this release of Bitcoin Core 22.0164that supports Tor v3 only. (#21595)166- A new `-rpcwaittimeout` argument to `bitcoin-cli` sets the timeout167in seconds to use with `-rpcwait`. If the timeout expires,168`bitcoin-cli` will report a failure. (#21056)170Wallet171------173- External signers such as hardware wallets can now be used through the new RPC methods `enumeratesigners` and `displayaddress`. Support is also added to the `send` RPC call. This feature is experimental. See [external-signer.md](https://github.com/bitcoin/bitcoin/blob/22.x/doc/external-signer.md) for details. (#16546)175- A new `listdescriptors` RPC is available to inspect the contents of descriptor-enabled wallets.176The RPC returns public versions of all imported descriptors, including their timestamp and flags.177For ranged descriptors, it also returns the range boundaries and the next index to generate addresses from. (#20226)179- The `bumpfee` RPC is not available with wallets that have private keys180disabled. `psbtbumpfee` can be used instead. (#20891)182- The `fundrawtransaction`, `send` and `walletcreatefundedpsbt` RPCs now support an `include_unsafe` option183that when `true` allows using unsafe inputs to fund the transaction.184Note that the resulting transaction may become invalid if one of the unsafe inputs disappears.185If that happens, the transaction must be funded with different inputs and republished. (#21359)187- We now support up to 20 keys in `multi()` and `sortedmulti()` descriptors188under `wsh()`. (#20867)190- Taproot descriptors can be imported into the wallet only after activation has occurred on the network (e.g. mainnet, testnet, signet) in use. See [descriptors.md](https://github.com/bitcoin/bitcoin/blob/22.x/doc/descriptors.md) for supported descriptors.192GUI changes193-----------195- External signers such as hardware wallets can now be used. These require an external tool such as [HWI](https://github.com/bitcoin-core/HWI) to be installed and configured under Options -> Wallet. When creating a new wallet a new option "External signer" will appear in the dialog. If the device is detected, its name is suggested as the wallet name. The watch-only keys are then automatically imported. Receive addresses can be verified on the device. The send dialog will automatically use the connected device. This feature is experimental and the UI may freeze for a few seconds when performing these actions.197Low-level changes198=================200RPC201---203- The RPC server can process a limited number of simultaneous RPC requests.204Previously, if this limit was exceeded, the RPC server would respond with205[status code 500 (`HTTP_INTERNAL_SERVER_ERROR`)](https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#5xx_server_errors).206Now it returns status code 503 (`HTTP_SERVICE_UNAVAILABLE`). (#18335)208- Error codes have been updated to be more accurate for the following error cases (#18466):209- `signmessage` now returns RPC_INVALID_ADDRESS_OR_KEY (-5) if the210passed address is invalid. Previously returned RPC_TYPE_ERROR (-3).211- `verifymessage` now returns RPC_INVALID_ADDRESS_OR_KEY (-5) if the212passed address is invalid. Previously returned RPC_TYPE_ERROR (-3).213- `verifymessage` now returns RPC_TYPE_ERROR (-3) if the passed signature214is malformed. Previously returned RPC_INVALID_ADDRESS_OR_KEY (-5).216Tests217-----21922.0 change log220===============222A detailed list of changes in this version follows. To keep the list to a manageable length, small refactors and typo fixes are not included, and similar changes are sometimes condensed into one line.224### Consensus225- bitcoin/bitcoin#19438 Introduce deploymentstatus (ajtowns)226- bitcoin/bitcoin#20207 Follow-up extra comments on taproot code and tests (sipa)227- bitcoin/bitcoin#21330 Deal with missing data in signature hashes more consistently (sipa)229### Policy230- bitcoin/bitcoin#18766 Disable fee estimation in blocksonly mode (by removing the fee estimates global) (darosior)231- bitcoin/bitcoin#20497 Add `MAX_STANDARD_SCRIPTSIG_SIZE` to policy (sanket1729)232- bitcoin/bitcoin#20611 Move `TX_MAX_STANDARD_VERSION` to policy (MarcoFalke)234### Mining235- bitcoin/bitcoin#19937, bitcoin/bitcoin#20923 Signet mining utility (ajtowns)237### Block and transaction handling238- bitcoin/bitcoin#14501 Fix possible data race when committing block files (luke-jr)239- bitcoin/bitcoin#15946 Allow maintaining the blockfilterindex when using prune (jonasschnelli)240- bitcoin/bitcoin#18710 Add local thread pool to CCheckQueue (hebasto)241- bitcoin/bitcoin#19521 Coinstats Index (fjahr)242- bitcoin/bitcoin#19806 UTXO snapshot activation (jamesob)243- bitcoin/bitcoin#19905 Remove dead CheckForkWarningConditionsOnNewFork (MarcoFalke)244- bitcoin/bitcoin#19935 Move SaltedHashers to separate file and add some new ones (achow101)245- bitcoin/bitcoin#20054 Remove confusing and useless "unexpected version" warning (MarcoFalke)246- bitcoin/bitcoin#20519 Handle rename failure in `DumpMempool(…)` by using the `RenameOver(…)` return value (practicalswift)247- bitcoin/bitcoin#20749, bitcoin/bitcoin#20750, bitcoin/bitcoin#21055, bitcoin/bitcoin#21270, bitcoin/bitcoin#21525, bitcoin/bitcoin#21391, bitcoin/bitcoin#21767, bitcoin/bitcoin#21866 Prune `g_chainman` usage (dongcarl)248- bitcoin/bitcoin#20833 rpc/validation: enable packages through testmempoolaccept (glozow)249- bitcoin/bitcoin#20834 Locks and docs in ATMP and CheckInputsFromMempoolAndCache (glozow)250- bitcoin/bitcoin#20854 Remove unnecessary try-block (amitiuttarwar)
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.