Merge bitcoin/bitcoin#34766: Pre-31.x branching updates

48b952cbb67e4a59e1f036375240bbb23ae21648 build: bump to 31.99 (Ava Chow)
1b3d58f128a5b917b9b33d255e2cd77a3f6188cf docs Remove 31.0 release notes fragments (Ava Chow)
b7cf2f87d0c550f33397b5d9460eb85953871914 docs: Update bips.md (Ava Chow)

Pull request description:

  Completes the final steps immediately prior to branching:

  * Bump version to 31.99
  * Update bips.md
  * Remove release note fragments

ACKs for top commit:
  davidgumberg:
    ACK 48b952cbb6
  ryanofsky:
    Code review ACK 48b952cbb67e4a59e1f036375240bbb23ae21648

Tree-SHA512: b812d93ffc37cbc4ac37467d20459b453530a8d5bf712c8d931031a16f71884cc011faefab741d8939ad283907ed70b51e1def1f922d7c002379dd7e0f36d676
This commit is contained in:
Ava Chow 2026-03-10 18:55:44 -07:00
commit b97abdcdf1
No known key found for this signature in database
GPG Key ID: 17565732E08E5E41
20 changed files with 5 additions and 174 deletions

View File

@ -27,7 +27,7 @@ get_directory_property(precious_variables CACHE_VARIABLES)
# Project / Package metadata
#=============================
set(CLIENT_NAME "Bitcoin Core")
set(CLIENT_VERSION_MAJOR 30)
set(CLIENT_VERSION_MAJOR 31)
set(CLIENT_VERSION_MINOR 99)
set(CLIENT_VERSION_BUILD 0)
set(CLIENT_VERSION_RC 0)

View File

@ -51,6 +51,8 @@ BIPs that are implemented by Bitcoin Core:
* [`BIP 176`](https://github.com/bitcoin/bips/blob/master/bip-0176.mediawiki): Bits Denomination [QT only] is supported as of **v0.16.0** ([PR 12035](https://github.com/bitcoin/bitcoin/pull/12035)).
* [`BIP 324`](https://github.com/bitcoin/bips/blob/master/bip-0324.mediawiki): The v2 transport protocol specified by BIP324 and the associated `NODE_P2P_V2` service bit are supported as of **v26.0**, but off by default ([PR 28331](https://github.com/bitcoin/bitcoin/pull/28331)). On by default as of **v27.0** ([PR 29347](https://github.com/bitcoin/bitcoin/pull/29347)).
* [`BIP 325`](https://github.com/bitcoin/bips/blob/master/bip-0325.mediawiki): Signet test network is supported as of **v0.21.0** ([PR 18267](https://github.com/bitcoin/bitcoin/pull/18267)).
* [`BIP 327`](https://github.com/bitcoin/bips/blob/master/bip-0327.mediawiki): Key aggregation via `musig()` descriptors is supported as of **v30.0** ([PR 31244](https://github.com/bitcoin/bitcoin/pull/31244)). Signing is supported as of **v31.0** ([PR 29675](https://github.com/bitcoin/bitcoin/pull/29675))
* [`BIP 328`](https://github.com/bitcoin/bips/blob/master/bip-0328.mediawiki): MuSig2 derivation via `musig()` descriptors is supported as of **v30.0** ([PR 31244](https://github.com/bitcoin/bitcoin/pull/31244))
* [`BIP 339`](https://github.com/bitcoin/bips/blob/master/bip-0339.mediawiki): Relay of transactions by wtxid is supported as of **v0.21.0** ([PR 18044](https://github.com/bitcoin/bitcoin/pull/18044)).
* [`BIP 340`](https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki)
[`341`](https://github.com/bitcoin/bips/blob/master/bip-0341.mediawiki)
@ -62,6 +64,7 @@ BIPs that are implemented by Bitcoin Core:
always active as of **v24.0** ([PR 23536](https://github.com/bitcoin/bitcoin/pull/23536)).
* [`BIP 350`](https://github.com/bitcoin/bips/blob/master/bip-0350.mediawiki): Addresses for native v1+ segregated Witness outputs use Bech32m instead of Bech32 as of **v22.0** ([PR 20861](https://github.com/bitcoin/bitcoin/pull/20861)).
* [`BIP 371`](https://github.com/bitcoin/bips/blob/master/bip-0371.mediawiki): Taproot fields for PSBT as of **v24.0** ([PR 22558](https://github.com/bitcoin/bitcoin/pull/22558)).
* [`BIP 373`](https://github.com/bitcoin/bips/blob/master/bip-0373.mediawiki): MuSig2 fields for PSBT as of **v30.0** ([PR 31247](https://github.com/bitcoin/bitcoin/pull/31247))
* [`BIP 379`](https://github.com/bitcoin/bips/blob/master/bip-0379.md): Miniscript was partially implemented in **v24.0** ([PR 24148](https://github.com/bitcoin/bitcoin/pull/24148)), and fully implemented as of **v26.0** ([PR 27255](https://github.com/bitcoin/bitcoin/pull/27255)).
* [`BIP 380`](https://github.com/bitcoin/bips/blob/master/bip-0380.mediawiki)
[`381`](https://github.com/bitcoin/bips/blob/master/bip-0381.mediawiki)
@ -72,5 +75,6 @@ BIPs that are implemented by Bitcoin Core:
Output Script Descriptors, and most of Script Expressions are implemented as of **v0.17.0** ([PR 13697](https://github.com/bitcoin/bitcoin/pull/13697)).
* [`BIP 386`](https://github.com/bitcoin/bips/blob/master/bip-0386.mediawiki): tr() Output Script Descriptors are implemented as of **v22.0** ([PR 22051](https://github.com/bitcoin/bitcoin/pull/22051)).
* [`BIP 387`](https://github.com/bitcoin/bips/blob/master/bip-0387.mediawiki): Tapscript Multisig Output Script Descriptors are implemented as of **v24.0** ([PR 24043](https://github.com/bitcoin/bitcoin/pull/24043)).
* [`BIP 390`](https://github.com/bitcoin/bips/blob/master/bip-0390.mediawiki): MuSig2 Descriptor parsing is implemented in **v30.0** ([PR 31244](https://github.com/bitcoin/bitcoin/pull/31244)) and signing in **v31.0** ([PR 29675](https://github.com/bitcoin/bitcoin/pull/29675))
* [`BIP 431`](https://github.com/bitcoin/bips/blob/master/bip-0431.mediawiki): transactions with nVersion=3 are standard and treated as Topologically Restricted Until Confirmation as of **v28.0** ([PR 29496](https://github.com/bitcoin/bitcoin/pull/29496)).
* [`BIP 433`](https://github.com/bitcoin/bips/blob/master/bip-0433.mediawiki): Spending of Pay to Anchor (P2A) outputs is standard as of **v28.0** ([PR 30352](https://github.com/bitcoin/bitcoin/pull/30352)).

View File

@ -1,14 +0,0 @@
New settings
------------
- `-txospenderindex` enables the creation of a transaction output spender
index that, if present, will be scanned by `gettxspendingprevout` if a
spending transaction was not found in the mempool.
(#24539)
Updated RPCs
------------
- `gettxspendingprevout` has 2 new optional arguments: `mempool_only` and `return_spending_tx`.
If `mempool_only` is true it will limit scans to the mempool even if `txospenderindex` is available.
If `return_spending_tx` is true, the full spending tx will be returned.
In addition if `txospenderindex` is available and a confirmed spending transaction is found,
its block hash will be returned. (#24539)

View File

@ -1,19 +0,0 @@
P2P and network changes
-----------------------
- Normally local transactions are broadcast to all connected peers with
which we do transaction relay. Now, for the `sendrawtransaction` RPC
this behavior can be changed to only do the broadcast via the Tor or
I2P networks. A new boolean option `-privatebroadcast` has been added
to enable this behavior. This improves the privacy of the transaction
originator in two aspects:
1. Their IP address (and thus geolocation) is never known to the
recipients.
2. If the originator sends two otherwise unrelated transactions, they
will not be linkable. This is because a separate connection is used
for broadcasting each transaction. (#29415)
- New RPCs have been added to introspect and control private broadcast:
`getprivatebroadcastinfo` reports transactions currently being privately
broadcast, and `abortprivatebroadcast` removes matching
transactions from the private broadcast queue.

View File

@ -1,3 +0,0 @@
RPC and Startup Option
---
The `-paytxfee` startup option and the `settxfee` RPC are now deleted after being deprecated in Bitcoin Core 30.0. They used to allow the user to set a static fee rate for wallet transactions, which could potentially lead to overpaying or underpaying. Users should instead rely on fee estimation or specify a fee rate per transaction using the `fee_rate` argument in RPCs such as `fundrawtransaction`, `sendtoaddress`, `send`, `sendall`, and `sendmany`. (#32138)

View File

@ -1,9 +0,0 @@
Fee Estimation
========================
- The Bitcoin Core fee estimator minimum fee rate bucket was updated from **1 sat/vB** to **0.1 sat/vB**,
which matches the nodes default `minrelayfee`.
This means that for a given confirmation target, if a sub-1 sat/vB fee rate bucket is the minimum tracked
with sufficient data, its average value will be returned as the fee rate estimate.
- Note: Restarting a node with this change invalidates previously saved estimates in `fee_estimates.dat`, the fee estimator will start tracking fresh stats.

View File

@ -1,5 +0,0 @@
Build System
------------
- The minimum supported Clang compiler version has been raised to 17.0
(#33555).

View File

@ -1,51 +0,0 @@
Mempool
=======
The mempool has been reimplemented with a new design ("cluster mempool"), to
facilitate better decision-making when constructing block templates, evicting
transactions, relaying transactions, and validating replacement transactions
(RBF). Most changes should be transparent to users, but some behavior changes
are noted:
- The mempool no longer enforces ancestor or descendant size/count limits.
Instead, two new default policy limits are introduced governing connected
components, or clusters, in the mempool, limiting clusters to 64 transactions
and up to 101 kB in virtual size. Transactions are considered to be in the
same cluster if they are connected to each other via any combination of
parent/child relationships in the mempool. These limits can be overridden
using command line arguments; see the extended help (`-help-debug`)
for more information.
- Within the mempool, transactions are ordered based on the feerate at which
they are expected to be mined, which takes into account the full set, or
"chunk", of transactions that would be included together (e.g., a parent and
its child, or more complicated subsets of transactions). This ordering is
utilized by the algorithms that implement transaction selection for
constructing block templates; eviction from the mempool when it is full; and
transaction relay announcements to peers.
- The replace-by-fee validation logic has been updated so that transaction
replacements are only accepted if the resulting mempool's feerate diagram is
strictly better than before the replacement. This eliminates all known cases
of replacements occurring that make the mempool worse off, which was possible
under previous RBF rules. For singleton transactions (that are in clusters by
themselves) it's sufficient for a replacement to have a higher fee and
feerate than the original. See
[delvingbitcoin.org post](https://delvingbitcoin.org/t/an-overview-of-the-cluster-mempool-proposal/393#rbf-can-now-be-made-incentive-compatible-for-miners-11)
for more information.
- Two new RPCs have been added: `getmempoolcluster` will provide the set of
transactions in the same cluster as the given transaction, along with the
ordering of those transactions and grouping into chunks; and
`getmempoolfeeratediagram` will return the feerate diagram of the entire
mempool.
- Chunk size and chunk fees are now also included in the output of `getmempoolentry`.
- The "CPFP Carveout" has been removed from the mempool logic. The CPFP carveout
allowed one additional child transaction to be added to a package that's already
at its descendant limit, but only if that child has exactly one ancestor
(the package's root) and is small (no larger than 10kvB). Nothing is allowed to
bypass the cluster count limit. It is expected that smart contracting use-cases
requiring similar functionality employ TRUC transactions and sibling eviction
instead going forward.

View File

@ -1,5 +0,0 @@
New REST API
------------
- A new REST API endpoint (`/rest/blockpart/<BLOCK-HASH>.<bin|hex>?offset=<OFFSET>&size=<SIZE>`) has been introduced
for efficiently fetching a range of bytes from block `<BLOCK-HASH>`.

View File

@ -1,4 +0,0 @@
`-asmap` requires explicit filename
-----------------------------------
In previous releases, if `-asmap` was specified without a filename, this would try to load an `ip_asn.map` data file. Now loading an asmap file requires an explicit filename like `-asmap=ip_asn.map`. This change was made to make the option easier to understand, because it was confusing for there to be a default filename not actually loaded by default (https://github.com/bitcoin/bitcoin/issues/33386). Also this change makes the option more future-proof, because in upcoming releases, specifying `-asmap` will load embedded asmap data instead of an external file (https://github.com/bitcoin/bitcoin/pull/28792).

View File

@ -1,4 +0,0 @@
Build System
------------
- The minimum supported GCC compiler version has been raised to 12.1 (#33842).

View File

@ -1,5 +0,0 @@
P2P and network changes
-----------------------
- The `-maxorphantx` startup option has been removed. It was
previously deprecated and has no effect anymore since v30.0. (#33872)

View File

@ -1,8 +0,0 @@
P2P and network changes
-----------------------
- Transactions participating in one-parent-one-child package relay can now have the parent
with a feerate lower than the `-minrelaytxfee` feerate, even 0 fee. This expands the change
from 28.0 to also cover packages of non-TRUC transactions. Note that in general the
package child can have additional unconfirmed parents, but they must already be
in-mempool for the new package to be relayed. (#33892)

View File

@ -1,4 +0,0 @@
Net
---
- `tor` has been removed as a network specification. It
was deprecated in favour of `onion` in v0.17.0. (#34031)

View File

@ -1,2 +0,0 @@
- When `-logsourcelocations` is enabled, the log output now contains just the
function name instead of the entire function signature. (#34088)

View File

@ -1,8 +0,0 @@
Mining IPC
----------
- `Mining.createNewBlock` now has a `cooldown` behavior (enabled by default)
that waits for IBD to finish and for the tip to catch up. This usually
prevents a flood of templates during startup, but is not guaranteed. (#34184)
- `Mining.interrupt()` can be used to interrupt `Mining.waitTipChanged` and
`Mining.createNewBlock`. (#34184)

View File

@ -1,7 +0,0 @@
Updated RPCs
------------
- The `getpeerinfo` RPC no longer returns the `startingheight` field unless
the configuration option `-deprecatedrpc=startingheight` is used. The
`startingheight` field will be fully removed in the next major release.
(#34197)

View File

@ -1,8 +0,0 @@
Updated RPCs
------------
- The `getblock` RPC now returns a `coinbase_tx` object at verbosity levels 1, 2,
and 3. It contains `version`, `locktime`, `sequence`, `coinbase` and
`witness`. This allows for efficiently querying coinbase
transaction properties without fetching the full transaction data at
verbosity 2+. (#34512)

View File

@ -1,11 +0,0 @@
Mining IPC
----------
The IPC mining interface now requires mining clients to use the latest `mining.capnp` schema. Clients built against older schemas will fail when calling `Init.makeMining` and receive an RPC error indicating the old mining interface is no longer supported. Mining clients must update to the latest schema and regenerate bindings to continue working. (#34568)
Notable IPC mining interface changes since the last release:
- `Mining.createNewBlock` and `Mining.checkBlock` now require a `context` parameter.
- `Mining.waitTipChanged` now has a default `timeout` (effectively infinite / `maxDouble`) if the client omits it.
- `BlockTemplate.getCoinbaseTx()` now returns a structured `CoinbaseTx` instead of raw bytes.
- Removed `BlockTemplate.getCoinbaseCommitment()` and `BlockTemplate.getWitnessCommitmentIndex()`.
- Capn Proto default values were updated to match the corresponding C++ defaults for mining-related option structs (e.g. `BlockCreateOptions`, `BlockWaitOptions`, `BlockCheckOptions`).

View File

@ -1,6 +0,0 @@
## Updated settings
- The default `-dbcache` value has been increased to `1024` MiB from `450` MiB
on systems where at least `4096` MiB of RAM is detected.
This is a performance increase, but will use more memory.
To maintain the previous behaviour, set `-dbcache=450`.