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.
1v30.0 Release Notes2===================4Bitcoin Core version v30.0 is now available from:6<https://bitcoincore.org/bin/bitcoin-core-30.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 macOS)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 tested on operating systems using the35Linux Kernel 3.17+, macOS 13+, and Windows 10+. 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===============43Policy44------46- The maximum number of potentially executed legacy signature operations in a47single standard transaction is now limited to 2500. Signature operations in all48previous output scripts, in all input scripts, as well as all P2SH redeem49scripts (if there are any) are counted toward the limit. The new limit is50assumed to not affect any known typically formed standard transactions. The51change was done to prepare for a possible BIP54 deployment in the future. (#32521)53- `-datacarriersize` is increased to 100,000 by default, which effectively uncaps54the limit (as the maximum transaction size limit will be hit first). It can be55overridden with `-datacarriersize=83` to revert to the limit enforced in previous56versions. (#32406)58- Multiple data carrier (OP_RETURN) outputs in a transaction are now permitted for59relay and mining. The `-datacarriersize` limit applies to the aggregate size of60the scriptPubKeys across all such outputs in a transaction, not including the61scriptPubKey size itself. (#32406)63- The minimum block feerate (`-blockmintxfee`) has been changed to 0.001 satoshi per64vB. It can still be changed using the configuration option. This option can be used65by miners to set a minimum feerate on packages added to block templates. (#33106)67- The default minimum relay feerate (`-minrelaytxfee`) and incremental relay feerate68(`-incrementalrelayfee`) have been changed to 0.1 satoshis per vB. They can still69be changed using their respective configuration options, but it is recommended to70change both together if you decide to do so. (#33106)72Other minimum feerates (e.g. the dust feerate, the minimum returned by the fee73estimator, and all feerates used by the wallet) remain unchanged. The mempool minimum74feerate still changes in response to high volume.76Note that unless these lower defaults are widely adopted across the network, transactions77created with lower fee rates are not guaranteed to propagate or confirm. The wallet78feerates remain unchanged; `-mintxfee` must be changed before attempting to create79transactions with lower feerates using the wallet. (#33106)81P2P and network changes82-----------------------84- Opportunistic 1-parent-1-child package relay has been improved to handle85situations when the child already has unconfirmed parent(s) in the mempool.86This means that 1p1c packages can be accepted and propagate, even if they are87connected to broader topologies: multi-parent-1-child (where only 1 parent88requires fee-bumping), grandparent-parent-child (where only parent requires89fee-bumping) etc. (#31385)91- The transaction orphanage, which holds transactions with missing inputs temporarily92while the node attempts to fetch its parents, now has improved Denial of Service protections.93Previously, it enforced a maximum number of unique transactions (default 100,94configurable using `-maxorphantx`). Now, its limits are as follows: the number of95entries (unique by wtxid and peer), plus each unique transaction's input count divided96by 10, must not exceed 3,000. The total weight of unique transactions must not exceed97`404,000` Wu multiplied by the number of peers. (#31829)99- The `-maxorphantx` option no longer has any effect, since the orphanage no longer100limits the number of unique transactions. Users should remove this configuration101option if they were using it, as the setting will cause an error in future versions102when it is no longer recognized. (#31829)104New `bitcoin` command105---------------------107- A new `bitcoin` command line tool has been added to make features more discoverable108and convenient to use. The `bitcoin` tool just calls other executables and does not109implement any functionality on its own. Specifically `bitcoin node` is a synonym for110`bitcoind`, `bitcoin gui` is a synonym for `bitcoin-qt`, and `bitcoin rpc` is a synonym111for `bitcoin-cli -named`. Other commands and options can be listed with `bitcoin help`.112The new `bitcoin` command is an alternative to calling other commands directly, but it113doesn't replace them, and there are no plans to deprecate existing commands. (#31375)115External Signing116----------------118- Support for external signing on Windows has been re-enabled. (#29868)120IPC Mining Interface121--------------------123- The new `bitcoin` command does support one new feature: an (experimental) IPC Mining124Interface that allows the node to work with Stratum v2 or other mining client software,125see (#31098). When the node is started with `bitcoin -m node -ipcbind=unix` it will126listen on a unix socket for IPC client connections, allowing clients to request block127templates and submit mined blocks. The `-m` option launches a new internal binary128(`bitcoin-node` instead of `bitcoind`) and is currently required but will become optional129in the future (with [#33229](https://github.com/bitcoin/bitcoin/pull/33229)).131- IPC connectivity introduces new dependencies (see [multiprocess.md](https://github.com/bitcoin/bitcoin/blob/master/doc/multiprocess.md)),132which can be turned off with the `-DENABLE_IPC=OFF` build option if you do not intend133to use IPC. (#31802)135Install changes136---------------138- The `test_bitcoin` executable is now installed in `libexec/` instead of `bin/`.139It can still be executed directly, or accessed through the new `bitcoin` command140as `bitcoin test`. The `libexec/` directory also contains new `bitcoin-node` and141`bitcoin-gui` binaries which support IPC features and are called through the142`bitcoin` tool. In source builds only, `test_bitcoin-qt`, `bench_bitcoin`, and143`bitcoin-chainstate` are also now installed to `libexec/` instead of `bin/` and144can be accessed through the new `bitcoin` command. See `bitcoin help` output for145details. (#31679)147- On Windows, the installer no longer adds a “(64-bit)” suffix to entries in the148Start Menu (#32132), and it now automatically removes obsolete artifacts during149upgrades (#33422).151Indexes152-------154- The implementation of coinstatsindex was changed to prevent an overflow bug that155could already be observed on the default Signet. The new version of the index will156need to be synced from scratch when starting the upgraded node for the first time.158The new version is stored in `/indexes/coinstatsindex/` in contrast to the old version159which was stored at `/indexes/coinstats/`. The old version of the index is not deleted160by the upgraded node in case the user chooses to downgrade their node in the future.161If the user does not plan to downgrade it is safe for them to remove `/indexes/coinstats/`162from their datadir. A future release of Bitcoin Core may remove the old version of the163index automatically. (#30469)165Logging166-------167- Unconditional logging to disk is now rate limited by giving each source location168a quota of 1MiB per hour. Unconditional logging is any logging with a log level169higher than debug, that is `info`, `warning`, and `error`. All logs will be170prefixed with `[*]` if there is at least one source location that is currently171being suppressed. (#32604)173- When `-logsourcelocations` is enabled, the log output now contains the entire174function signature instead of just the function name. (#32604)176Updated RPCs177------------179- The `-paytxfee` startup option and the `settxfee` RPC are now deprecated and180will be removed in Bitcoin Core 31.0. They allowed the user to set a static fee181rate for wallet transactions, which could potentially lead to overpaying or underpaying.182Users should instead rely on fee estimation or specify a fee rate per transaction183using the `fee_rate` argument in RPCs such as `fundrawtransaction`, `sendtoaddress`,184`send`, `sendall`, and `sendmany`. (#31278)186- Any RPC in which one of the parameters is a descriptor will throw an error187if the provided descriptor contains a whitespace at the beginning or the end188of the public key within a fragment - e.g. `pk( KEY)` or `pk(KEY )`. (#31603)190- The `submitpackage` RPC, which allows submissions of child-with-parents191packages, no longer requires that all unconfirmed parents be present. The192package may contain other in-mempool ancestors as well. (#31385)194- The `waitfornewblock` RPC now takes an optional `current_tip` argument. It195is also no longer hidden. (#30635)197- The `waitforblock` and `waitforblockheight` RPCs are no longer hidden. (#30635)199- The `psbtbumpfee` and `bumpfee` RPCs allow a replacement under fullrbf and no200longer require BIP-125 signalling. (#31953)202- Transaction Script validation errors used to return the reason for the error203prefixed by either `mandatory-script-verify-flag-failed` if it was a consensus204error, or `non-mandatory-script-verify-flag` (without "-failed") if it was a205standardness error. This has been changed to `block-script-verify-flag-failed`206and `mempool-script-verify-flag-failed` for all block and mempool errors207respectively. (#33183)209- The `getmininginfo` RPC now returns "blockmintxfee" result specifying the value of210`-blockmintxfee` configuration. (#33189)212- The `getmempoolinfo` RPC now returns an additional "permitbaremultisig" and213"maxdatacarriersize" field, reflecting the `-permitbaremultisig` and `-datacarriersize`214config values. (#29954)216Changes to wallet-related RPCs can be found in the Wallet section below.218New RPCs219--------221- A new REST API endpoint (`/rest/spenttxouts/BLOCKHASH`) has been introduced for222efficiently fetching spent transaction outputs using the block's undo data (#32540).224Build System225------------227Updated settings228----------------230- The `-maxmempool` and `-dbcache` startup parameters are now capped on 32-bit systems231to 500MB and 1GiB respectively. (#32530)233- The `-natpmp` option is now set to `1` by default. This means nodes with `-listen`234enabled (the default) but running behind a firewall, such as a local network router,235will be reachable if the firewall/router supports any of the `PCP` or `NAT-PMP`236protocols. (#33004)238- The `-upnp` setting has now been fully removed. Use `-natpmp` instead. (#32500)240- Previously, `-proxy` specified the proxy for all networks (except I2P which241uses `-i2psam`) and only the Tor proxy could have been specified separately242via `-onion`. Now, the syntax of `-proxy` has been extended and it is possible243to specify separately the proxy for IPv4, IPv6, Tor and CJDNS by appending `=`244followed by the network name, for example `-proxy=127.0.0.1:5555=ipv6`245configures a proxy only for IPv6. The `-proxy` option can be used multiple246times to define different proxies for different networks, such as247`-proxy=127.0.0.1:4444=ipv4 -proxy=10.0.0.1:6666=ipv6`. Later settings248override earlier ones for the same network; this can be used to remove an249earlier all-networks proxy and use direct connections only for a given250network, for example `-proxy=127.0.0.1:5555 -proxy=0=cjdns`. (#32425)
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.