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.
123.0 Release Notes2==================4Bitcoin Core version 23.0 is now available from:6<https://bitcoincore.org/bin/bitcoin-core-23.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.15+, 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.40Notable changes41===============43P2P and network changes44-----------------------46- A bitcoind node will no longer rumour addresses to inbound peers by default.47They will become eligible for address gossip after sending an ADDR, ADDRV2,48or GETADDR message. (#21528)50- Before this release, Bitcoin Core had a strong preference to try to connect only to peers that listen on port 8333. As a result of that, Bitcoin nodes listening on non-standard ports would likely not get any Bitcoin Core peers connecting to them. This preference has been removed. (#23542)52- Full support has been added for the CJDNS network. See the new option `-cjdnsreachable` and [doc/cjdns.md](https://github.com/bitcoin/bitcoin/tree/23.x/doc/cjdns.md) (#23077)54Fee estimation changes55----------------------57- Fee estimation now takes the feerate of replacement (RBF) transactions into58account. (#22539)60Rescan startup parameter removed61--------------------------------63The `-rescan` startup parameter has been removed. Wallets which require64rescanning due to corruption will still be rescanned on startup.65Otherwise, please use the `rescanblockchain` RPC to trigger a rescan. (#23123)67Tracepoints and Userspace, Statically Defined Tracing support68-------------------------------------------------------------70Bitcoin Core release binaries for Linux now include experimental tracepoints which71act as an interface for process-internal events. These can be used for review,72debugging, monitoring, and more. The tracepoint API is semi-stable. While the API73is tested, process internals might change between releases requiring changes to the74tracepoints. Information about the existing tracepoints can be found under75[doc/tracing.md](https://github.com/bitcoin/bitcoin/blob/23.x/doc/tracing.md) and76usage examples are provided in [contrib/tracing/](https://github.com/bitcoin/bitcoin/tree/23.x/contrib/tracing).78Updated RPCs79------------81- The `validateaddress` RPC now returns an `error_locations` array for invalid82addresses, with the indices of invalid character locations in the address (if83known). For example, this will attempt to locate up to two Bech32 errors, and84return their locations if successful. Success and correctness are only guaranteed85if fewer than two substitution errors have been made.86The error message returned in the `error` field now also returns more specific87errors when decoding fails. (#16807)89- The `-deprecatedrpc=addresses` configuration option has been removed. RPCs90`gettxout`, `getrawtransaction`, `decoderawtransaction`, `decodescript`,91`gettransaction verbose=true` and REST endpoints `/rest/tx`, `/rest/getutxos`,92`/rest/block` no longer return the `addresses` and `reqSigs` fields, which93were previously deprecated in 22.0. (#22650)94- The `getblock` RPC command now supports verbosity level 3 containing transaction inputs'95`prevout` information. The existing `/rest/block/` REST endpoint is modified to contain96this information too. Every `vin` field will contain an additional `prevout` subfield97describing the spent output. `prevout` contains the following keys:98- `generated` - true if the spent coins was a coinbase.99- `height`100- `value`101- `scriptPubKey`103- The top-level fee fields `fee`, `modifiedfee`, `ancestorfees` and `descendantfees`104returned by RPCs `getmempoolentry`,`getrawmempool(verbose=true)`,105`getmempoolancestors(verbose=true)` and `getmempooldescendants(verbose=true)`106are deprecated and will be removed in the next major version (use107`-deprecated=fees` if needed in this version). The same fee fields can be accessed108through the `fees` object in the result. WARNING: deprecated109fields `ancestorfees` and `descendantfees` are denominated in sats, whereas all110fields in the `fees` object are denominated in BTC. (#22689)112- Both `createmultisig` and `addmultisigaddress` now include a `warnings`113field, which will show a warning if a non-legacy address type is requested114when using uncompressed public keys. (#23113)116Changes to wallet related RPCs can be found in the Wallet section below.118New RPCs119--------121- Information on soft fork status has been moved from `getblockchaininfo`122to the new `getdeploymentinfo` RPC which allows querying soft fork status at any123block, rather than just at the chain tip. Inclusion of soft fork124status in `getblockchaininfo` can currently be restored using the125configuration `-deprecatedrpc=softforks`, but this will be removed in126a future release. Note that in either case, the `status` field127now reflects the status of the current block rather than the next128block. (#23508)130Files131-----133* On startup, the list of banned hosts and networks (via `setban` RPC) in134`banlist.dat` is ignored and only `banlist.json` is considered. Bitcoin Core135version 22.x is the only version that can read `banlist.dat` and also write136it to `banlist.json`. If `banlist.json` already exists, version 22.x will not137try to translate the `banlist.dat` into json. After an upgrade, `listbanned`138can be used to double check the parsed entries. (#22570)140Updated settings141----------------143- In previous releases, the meaning of the command line option144`-persistmempool` (without a value provided) incorrectly disabled mempool145persistence. `-persistmempool` is now treated like other boolean options to146mean `-persistmempool=1`. Passing `-persistmempool=0`, `-persistmempool=1`147and `-nopersistmempool` is unaffected. (#23061)149- `-maxuploadtarget` now allows human readable byte units [k|K|m|M|g|G|t|T].150E.g. `-maxuploadtarget=500g`. No whitespace, +- or fractions allowed.151Default is `M` if no suffix provided. (#23249)153- If `-proxy=` is given together with `-noonion` then the provided proxy will154not be set as a proxy for reaching the Tor network. So it will not be155possible to open manual connections to the Tor network for example with the156`addnode` RPC. To mimic the old behavior use `-proxy=` together with157`-onlynet=` listing all relevant networks except `onion`. (#22834)159Tools and Utilities160-------------------162- Update `-getinfo` to return data in a user-friendly format that also reduces vertical space. (#21832)164- CLI `-addrinfo` now returns a single field for the number of `onion` addresses165known to the node instead of separate `torv2` and `torv3` fields, as support166for Tor V2 addresses was removed from Bitcoin Core in 22.0. (#22544)168Wallet169------171- Descriptor wallets are now the default wallet type. Newly created wallets172will use descriptors unless `descriptors=false` is set during `createwallet`, or173the `Descriptor wallet` checkbox is unchecked in the GUI.175Note that wallet RPC commands like `importmulti` and `dumpprivkey` cannot be176used with descriptor wallets, so if your client code relies on these commands177without specifying `descriptors=false` during wallet creation, you will need178to update your code.180- Newly created descriptor wallets will contain an automatically generated `tr()`181descriptor which allows for creating single key Taproot receiving addresses.183- `upgradewallet` will now automatically flush the keypool if upgrading184from a non-HD wallet to an HD wallet, to immediately start using the185newly-generated HD keys. (#23093)187- a new RPC `newkeypool` has been added, which will flush (entirely188clear and refill) the keypool. (#23093)190- `listunspent` now includes `ancestorcount`, `ancestorsize`, and191`ancestorfees` for each transaction output that is still in the mempool.192(#12677)194- `lockunspent` now optionally takes a third parameter, `persistent`, which195causes the lock to be written persistently to the wallet database. This196allows UTXOs to remain locked even after node restarts or crashes. (#23065)198- `receivedby` RPCs now include coinbase transactions. Previously, the199following wallet RPCs excluded coinbase transactions: `getreceivedbyaddress`,200`getreceivedbylabel`, `listreceivedbyaddress`, `listreceivedbylabel`. This201release changes this behaviour and returns results accounting for received202coins from coinbase outputs. The previous behaviour can be restored using the203configuration `-deprecatedrpc=exclude_coinbase`, but may be removed in a204future release. (#14707)206- A new option in the same `receivedby` RPCs, `include_immature_coinbase`207(default=`false`), determines whether to account for immature coinbase208transactions. Immature coinbase transactions are coinbase transactions that209have 100 or fewer confirmations, and are not spendable. (#14707)211GUI changes212-----------214- UTXOs which are locked via the GUI are now stored persistently in the215wallet database, so are not lost on node shutdown or crash. (#23065)217- The Bech32 checkbox has been replaced with a dropdown for all address types, including the new Bech32m (BIP-350) standard for Taproot enabled wallets.219Low-level changes220=================222RPC223---225- `getblockchaininfo` now returns a new `time` field, that provides the chain tip time. (#22407)227Tests228-----230- For the `regtest` network the activation heights of several softforks were231set to block height 1. They can be changed by the runtime setting232`-testactivationheight=name@height`. (#22818)234Credits235=======237Thanks to everyone who directly contributed to this release:239- 0xb10c240- 0xree241- Aaron Clauson242- Adrian-Stefan Mares243- agroce244- aitorjs245- Alex Groce246- amadeuszpawlik247- Amiti Uttarwar248- Andrew Chow249- Andrew Poelstra250- Andrew Toth
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.