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.
252Build System253------------255- The next major release is planned to drop support for building Bitcoin Core on256Windows with MSVC, once clang-cl support is ready. See257[#36153](https://github.com/bitcoin/bitcoin/issues/36153).258- The undocumented `BITCOIN_GENBUILD_NO_GIT` environment variable is no longer259required and has been removed. The build system now automatically detects when260it is being built from a source archive or as a subproject of a git-aware261parent project and skips git metadata fetching. Users who need to disable git262execution explicitly can still do so by configuring with263`-DCMAKE_DISABLE_FIND_PACKAGE_Git=ON`. (#32220)265Updated settings266----------------268- The `bip125-replaceable` key in the wallet transaction RPCs such as269`listtransactions`, `listsinceblock`, and `gettransaction` is marked as270deprecated. Users still have the option to retrieve this key by passing the271`-deprecatedrpc=bip125` startup option. Also, the `-walletrbf` startup option272has been marked as deprecated and will be fully removed in the next release.273Using this option emits a warning in the logs. (#34917)274- The `libevent` logging category has been removed. Configurations like275`-debug=libevent` or `-debugexclude=libevent` will log a deprecation warning276and be ignored. These configurations will result in an error in a future277release.278- A new configuration option `-rpcmaxconnections` (default `16`) limits the279number of simultaneously connected HTTP clients to the server. The application280will now attempt to reserve file descriptors for the HTTP server sockets. If281your system has limited resources, consider using a lower setting.282- A new `mining` logging category has been added, enabled with `-debug=mining`.283The `CreateNewBlock(): block weight: ...` line, previously logged on every284block template build regardless of logging configuration, is now logged only285when this category is enabled. `getblocktemplate` and Mining IPC users are286encouraged to enable it to see this log and future mining log.288Changes to GUI or wallet related settings can be found in the GUI or Wallet section below.290New settings291------------293- Block validation can now prefetch input prevouts from the chainstate database294in parallel while connecting blocks, speeding up validation when prevouts need295to be read from disk. A new `-prevoutfetchthreads=<n>` option controls the296number of prefetch worker threads. The default is 8 threads, up to a maximum297of 16; set it to 0 to disable parallel prefetching. (#35295)299Tools and Utilities300-------------------302- CLI -addrinfo now returns the full set of known addresses. In previous303versions (v22.0 - v30.0) the set of returned addresses was filtered for304quality and recency. This was changed since it does not match the logic for305selecting peers to connect to, which does not filter. Note: CLI -addrinfo now306requires bitcoind v26.0 or later, as it uses the getaddrmaninfo RPC307internally. Users querying older, unmaintained node versions would need to use308an older bitcoin-cli version. (#26988)309- A new `bitcoin-util getchainparams` command returns hardcoded details about310the selected chain. (#35610)312Wallet313------315- A new RPC `addhdkey` is added which allows a BIP 32 extended key to be added316to the wallet without needing to import it as part of a separate descriptor.317This key will not be used to produce any output scripts unless it is318explicitly imported as part of a separate descriptor independent of the319`addhdkey` RPC. (#29136)320- A new `exportwatchonlywallet` RPC creates a watchonly wallet file from an321existing descriptor wallet. The exported file contains the wallet's public322descriptors (with derived key caches where needed), transactions, and address323book data, but no private keys. It can be imported on another node using the324existing `restorewallet` RPC. (#32489)325- The [Offline Signing Tutorial](/doc/offline-signing-tutorial.md) has been326updated to use `exportwatchonlywallet` for setting up the online watch-only327wallet, replacing the previous manual descriptor import workflow. (#32489)328- A new `derivehdkey` RPC is available to obtain an xpub or xprv for a329derivation path with at least one hardened step from an HD key known to the330wallet. This can be used to coordinate a multisig setup, where each signer331shares an xpub using a different derivation path than the default332single-signature descriptors. The example in `doc/multisig-tutorial.md` is333updated to use this RPC. (#32784)334- The `fee_reason` field returned by wallet transaction creation RPCs now335reports the reason the wallet selected the fee rate ("Fee Rate Estimator",336"Mempool Min Fee", "User Specified Fee", "Fallback fee" or337"Minimum Required Fee") instead of the block policy fee rate estimator's338internal threshold details. Those details remain available in the block339policy fee rate estimator debug log. (#34075)340- Wallet names that are relative paths including `..` and `.` elements, and341wallets named `/` are no longer allowed. Any users that depended on this342behavior can instead use absolute paths to their wallet or move their wallet343to a safer path. (#34544)344- The `send` and `sendall` RPCs are no longer marked as experimental. (#35601)345- The `fundrawtransaction` RPC no longer accepts a boolean as the second346positional argument. This silent no-op fallback was removed and the argument347is now fully type checked. Passing a boolean will raise an error. (#35836)348- On non-Windows systems, an authenticated RPC caller allowed to create wallets349could execute arbitrary commands as the node process account when350`-walletnotify` was configured, by crafting a wallet name with regex351replacement characters. Wallet notification placeholder replacement now treats352wallet names literally. (#36048)353- The `removeprunedfunds` RPC has been deprecated and will be removed in the354next major release. In order to continue using it, `bitcoind` must be started355with the `-deprecatedrpc=removeprunedfunds` option. (#35605)357GUI changes358-----------360- A menu action has been added to allow creating a watchonly wallet file from an361existing descriptor wallet. This option mirrors the `exportwatchonlywallet`362RPC - the exported file can be imported to another node using the Restore363Wallet menu action. (gui#872)364- The "Enable Replace-By-Fee" checkbox has been removed from the Send tab, and365the send confirmation dialog no longer states whether a transaction signals366BIP 125 replaceability. Transactions created in the GUI now follow the wallet's367`-walletrbf` setting, which defaults to signalling replaceability and is368deprecated in this release (see Updated settings). (gui#936)369- The migrate wallet option now allows to disable wallet loading after370migrating. It is useful in case the node is pruned and the wallet was created371before the pruned height. (gui#953)372- The GUI is now built with Qt 6.8.4. (#35709)374Mining375------377- The IPC mining interface now rejects out-of-range block template options378instead of silently clamping them, such as oversized reserved block weight or379coinbase sigops limits. (#33966)380- The `-blockmaxweight` startup option is now rejected when it is lower than381`-blockreservedweight`, instead of being silently clamped. (#33966)384IPC Interface385-------------387- `BlockTemplate.submitSolution` now returns `reason` and `debug` rejection388details in addition to the boolean result. Clients must regenerate IPC389bindings from the updated `mining.capnp` schema to use the new method. The390previous `@7` method now returns an error directing clients to update.391(#34672)392- `BlockTemplate.submitSolution` now reports duplicate blocks as failures with393`reason="duplicate"`, matching `Mining.submitBlock`, instead of returning394success for duplicate submissions. (#34672)396Logging397-------399- BIP 9 bits 5 to 28 inclusive are now ignored for soft fork signaling, as per400BIP 323. We won't warn about unknown deployments when receiving blocks that401set any of those bits in their version. (#34779)403REST API404--------406- REST responses now include `Cache-Control` headers to guide intermediary407caches. Immutable responses such as block binary and hex data, block parts,408block filters, spent transaction outputs, and block-specific deployment info409are marked cacheable for one day. Responses that can change with active chain410or node state, as well as errors, are marked `no-store`. (#34794)412Low-level changes413=================415Indexes416-------418- The transaction index (`-txindex`) now stores less data on disk; a fully419rebuilt index takes less than half the space. The index is backwards420compatible, so existing users will not see the space saving unless the index421is recreated. To do so, stop the node, delete the `<datadir>/indexes/txindex`422directory, and restart; rebuilding can take up to a few hours depending on423hardware. Progress can be monitored using the `getindexinfo` RPC. Once424rebuilt, the index can no longer be read by previous releases, so downgrading425will rebuild it again in the old format. When downgrading permanently, delete426the `<datadir>/indexes/txindex` directory first, since previous releases do427not reclaim the space used by entries in the new format. (#35531)428- The transaction output spender index (`-txospenderindex`) now uses less disk429space. Existing indexes remain compatible and no action is required. To430reclaim the space for data indexed before upgrading, stop the node, delete the431`<datadir>/indexes/txospenderindex/` directory, and restart with432`-txospenderindex` enabled to rebuild it. (#35634, #35568)434RPC435---437- Libevent has been replaced with a custom HTTP server (#35182). Certain HTTP438edge cases will observe different behavior to be more RFC-compliant:439- Stricter enforcement of maximum headers size (8192 bytes)440- Reject requests with whitespace in header field-names441- "Line Folding" is rejected (whitespace at start of a header line)442- Tolerate `%` at the end of requested URLs443- Multiple "Content-Length" headers with different values are rejected444- Clients attempting to connect from addresses not allowed by the `-rpcallowip`445option (or its default, `localhost`) will now be immediately disconnected446instead of receiving a `403 Forbidden`. (#35592)448Credits449=======451Thanks to everyone who directly contributed to this release:453- 0xb10c454- Adam Andrews455- Alexander Wiederin456- Alfonso Roman Zubeldia457- ameen-alam458- amisha459- Amiti Uttarwar460- Andreas Kouloumos461- Andrew Toth462- Anthony Towns463- Anthropic Security464- Antoine Poinsot465- ArvinFarrelP466- Ava Chow467- azuchi468- benthecarman469- Ben Woosley470- Bicaru20471- b-l-u-e472- Bortlesboat473- Brandon Odiwuor474- Bruno Garcia475- CaesarCoder476- Chandra Pratap477- codeabysss478- Cory Fields479- Craig Raw480- crStiv481- csjones482- cyb3ralbert483- Daniela Brozzoni484- Daniel Pfeifer485- Danny van Heumen486- David Gumberg487- deadmanoz488- dergoegge489- ekzyis490- Enoch Azariah491- Eugene Siegel492- Evan Sultanik493- Fabian Jahr494- fanquake495- frankomosh496- Gloria Zhao497- Greg Sanders498- Guillermo Fernandes499- GuTS805500- Hao Xu
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.