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.
124.0.1 Release Notes2====================4Due to last-minute issues (#26616), 24.0, although tagged, was never fully5announced or released.7Bitcoin Core version 24.0.1 is now available from:9<https://bitcoincore.org/bin/bitcoin-core-24.0.1/>11This release includes new features, various bug fixes and performance12improvements, as well as updated translations.14Please report bugs using the issue tracker at GitHub:16<https://github.com/bitcoin/bitcoin/issues>18To receive security and update notifications, please subscribe to:20<https://bitcoincore.org/en/list/announcements/join/>22How to Upgrade23==============25If you are running an older version, shut it down. Wait until it has completely26shut down (which might take a few minutes in some cases), then run the27installer (on Windows) or just copy over `/Applications/Bitcoin-Qt` (on macOS)28or `bitcoind`/`bitcoin-qt` (on Linux).30Upgrading directly from a version of Bitcoin Core that has reached its EOL is31possible, but it might take some time if the data directory needs to be migrated. Old32wallet versions of Bitcoin Core are generally supported.34Compatibility35==============37Bitcoin Core is supported and extensively tested on operating systems38using the Linux kernel, macOS 10.15+, and Windows 7 and newer. Bitcoin39Core should also work on most other Unix-like systems but is not as40frequently tested on them. It is not recommended to use Bitcoin Core on41unsupported systems.43Notice of new option for transaction replacement policies44=========================================================46This version of Bitcoin Core adds a new `mempoolfullrbf` configuration47option which allows users to change the policy their individual node48will use for relaying and mining unconfirmed transactions. The option49defaults to the same policy that was used in previous releases and no50changes to node policy will occur if everyone uses the default.52Some Bitcoin services today expect that the first version of an53unconfirmed transaction that they see will be the version of the54transaction that ultimately gets confirmed---a transaction acceptance55policy sometimes called "first-seen".57The Bitcoin Protocol does not, and cannot, provide any assurance that58the first version of an unconfirmed transaction seen by a particular59node will be the version that gets confirmed. If there are multiple60versions of the same unconfirmed transaction available, only the miner61who includes one of those transactions in a block gets to decide which62version of the transaction gets confirmed.64Despite this lack of assurance, multiple merchants and services today65still make this assumption.67There are several benefits to users from removing this *first-seen*68simplification. One key benefit, the ability for the sender of a69transaction to replace it with an alternative version paying higher70fees, was realized in [Bitcoin Core 0.12.0][] (February 2016) with the71introduction of [BIP125][] opt-in Replace By Fee (RBF).73Since then, there has been discussion about completely removing the74first-seen simplification and allowing users to replace any of their75older unconfirmed transactions with newer transactions, a feature called76*full-RBF*. This release includes a `mempoolfullrbf` configuration77option that allows enabling full-RBF, although it defaults to off78(allowing only opt-in RBF).80Several alternative node implementations have already enabled full-RBF by81default for years, and several contributors to Bitcoin Core are82advocating for enabling full-RBF by default in a future version of83Bitcoin Core.85As more nodes that participate in relay and mining begin enabling86full-RBF, replacement of unconfirmed transactions by ones offering higher87fees may rapidly become more reliable.89Contributors to this project strongly recommend that merchants and services90not accept unconfirmed transactions as final, and if they insist on doing so,91to take the appropriate steps to ensure they have some recourse or plan for92when their assumptions do not hold.94[Bitcoin Core 0.12.0]: https://bitcoincore.org/en/releases/0.12.0/#opt-in-replace-by-fee-transactions95[bip125]: https://github.com/bitcoin/bips/blob/master/bip-0125.mediawiki97Notable changes98===============100P2P and network changes101-----------------------103- To address a potential denial-of-service, the logic to download headers from peers104has been reworked. This is particularly relevant for nodes starting up for the105first time (or for nodes which are starting up after being offline for a long time).107Whenever headers are received from a peer that have a total chainwork that is either108less than the node's `-minimumchainwork` value or is sufficiently below the work at109the node's tip, a "presync" phase will begin, in which the node will download the110peer's headers and verify the cumulative work on the peer's chain, prior to storing111those headers permanently. Once that cumulative work is verified to be sufficiently high,112the headers will be redownloaded from that peer and fully validated and stored.114This may result in initial headers sync taking longer for new nodes starting up for115the first time, both because the headers will be downloaded twice, and because the effect116of a peer disconnecting during the presync phase (or while the node's best headers chain has less117than `-minimumchainwork`), will result in the node needing to use the headers presync mechanism118with the next peer as well (downloading the headers twice, again). (#25717)120- With I2P connections, a new, transient address is used for each outbound121connection if `-i2pacceptincoming=0`. (#25355)123Updated RPCs124------------126- The `-deprecatedrpc=softforks` configuration option has been removed. The127RPC `getblockchaininfo` no longer returns the `softforks` field, which was128previously deprecated in 23.0. (#23508) Information on soft fork status is129now only available via the `getdeploymentinfo` RPC.131- The `deprecatedrpc=exclude_coinbase` configuration option has been removed.132The `receivedby` RPCs (`listreceivedbyaddress`, `listreceivedbylabel`,133`getreceivedbyaddress` and `getreceivedbylabel`) now always return results134accounting for received coins from coinbase outputs, without an option to135change that behaviour. Excluding coinbases was previously deprecated in 23.0.136(#25171)138- The `deprecatedrpc=fees` configuration option has been removed. The top-level139fee fields `fee`, `modifiedfee`, `ancestorfees` and `descendantfees` are no140longer returned by RPCs `getmempoolentry`, `getrawmempool(verbose=true)`,141`getmempoolancestors(verbose=true)` and `getmempooldescendants(verbose=true)`.142The same fee fields can be accessed through the `fees` object in the result.143The top-level fee fields were previously deprecated in 23.0. (#25204)145- The `getpeerinfo` RPC has been updated with a new `presynced_headers` field,146indicating the progress on the presync phase mentioned in the147"P2P and network changes" section above.149Changes to wallet related RPCs can be found in the Wallet section below.151New RPCs152--------154- The `sendall` RPC spends specific UTXOs to one or more recipients155without creating change. By default, the `sendall` RPC will spend156every UTXO in the wallet. `sendall` is useful to empty wallets or to157create a changeless payment from select UTXOs. When creating a payment158from a specific amount for which the recipient incurs the transaction159fee, continue to use the `subtractfeefromamount` option via the160`send`, `sendtoaddress`, or `sendmany` RPCs. (#24118)162- A new `gettxspendingprevout` RPC has been added, which scans the mempool to find163transactions spending any of the given outpoints. (#24408)165- The `simulaterawtransaction` RPC iterates over the inputs and outputs of the given166transactions, and tallies up the balance change for the given wallet. This can be167useful e.g. when verifying that a coin join like transaction doesn't contain unexpected168inputs that the wallet will then sign for unintentionally. (#22751)170Updated REST APIs171-----------------173- The `/headers/` and `/blockfilterheaders/` endpoints have been updated to use174a query parameter instead of path parameter to specify the result count. The175count parameter is now optional, and defaults to 5 for both endpoints. The old176endpoints are still functional, and have no documented behaviour change.178For `/headers`, use179`GET /rest/headers/<BLOCK-HASH>.<bin|hex|json>?count=<COUNT=5>`180instead of181`GET /rest/headers/<COUNT>/<BLOCK-HASH>.<bin|hex|json>` (deprecated)183For `/blockfilterheaders/`, use184`GET /rest/blockfilterheaders/<FILTERTYPE>/<BLOCK-HASH>.<bin|hex|json>?count=<COUNT=5>`185instead of186`GET /rest/blockfilterheaders/<FILTERTYPE>/<COUNT>/<BLOCK-HASH>.<bin|hex|json>` (deprecated)188(#24098)190Build System191------------193- Guix builds are now reproducible across architectures (x86_64 & aarch64). (#21194)195New settings196------------198- A new `mempoolfullrbf` option has been added, which enables the mempool to199accept transaction replacement without enforcing BIP125 replaceability200signaling. (#25353)202Wallet203------205- The `-walletrbf` startup option will now default to `true`. The206wallet will now default to opt-in RBF on transactions that it creates. (#25610)208- The `replaceable` option for the `createrawtransaction` and209`createpsbt` RPCs will now default to `true`. Transactions created210with these RPCs will default to having opt-in RBF enabled. (#25610)212- The `wsh()` output descriptor was extended with Miniscript support. You can import Miniscript213descriptors for P2WSH in a watchonly wallet to track coins, but you can't spend from them using214the Bitcoin Core wallet yet.215You can find more about Miniscript on the [reference website](https://bitcoin.sipa.be/miniscript/). (#24148)217- The `tr()` output descriptor now supports multisig scripts through the `multi_a()` and218`sortedmulti_a()` functions. (#24043)220- To help prevent fingerprinting transactions created by the Bitcoin Core wallet, change output221amounts are now randomized. (#24494)223- The `listtransactions`, `gettransaction`, and `listsinceblock`224RPC methods now include a wtxid field (hash of serialized transaction,225including witness data) for each transaction. (#24198)227- The `listsinceblock`, `listtransactions` and `gettransaction` output now contain a new228`parent_descs` field for every "receive" entry. (#25504)230- A new optional `include_change` parameter was added to the `listsinceblock` command.232- RPC `getreceivedbylabel` now returns an error, "Label not found233in wallet" (-4), if the label is not in the address book. (#25122)235Migrating Legacy Wallets to Descriptor Wallets236---------------------------------------------238An experimental RPC `migratewallet` has been added to migrate Legacy (non-descriptor) wallets to239Descriptor wallets. More information about the migration process is available in the240[documentation](https://github.com/bitcoin/bitcoin/blob/master/doc/managing-wallets.md#migrating-legacy-wallets-to-descriptor-wallets).242GUI changes243-----------245- A new menu item to restore a wallet from a backup file has been added (gui#471).247- Configuration changes made in the bitcoin GUI (such as the pruning setting,248proxy settings, UPNP preferences) are now saved to `<datadir>/settings.json`249file rather than to the Qt settings backend (windows registry or unix desktop250config files), so these settings will now apply to bitcoind, instead of being
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.