mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-03-16 16:32:47 +00:00
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:
commit
b97abdcdf1
@ -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)
|
||||
|
||||
@ -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)).
|
||||
|
||||
@ -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)
|
||||
@ -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.
|
||||
@ -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)
|
||||
@ -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 node’s 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.
|
||||
@ -1,5 +0,0 @@
|
||||
Build System
|
||||
------------
|
||||
|
||||
- The minimum supported Clang compiler version has been raised to 17.0
|
||||
(#33555).
|
||||
@ -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.
|
||||
@ -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>`.
|
||||
@ -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).
|
||||
@ -1,4 +0,0 @@
|
||||
Build System
|
||||
------------
|
||||
|
||||
- The minimum supported GCC compiler version has been raised to 12.1 (#33842).
|
||||
@ -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)
|
||||
@ -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)
|
||||
@ -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)
|
||||
@ -1,2 +0,0 @@
|
||||
- When `-logsourcelocations` is enabled, the log output now contains just the
|
||||
function name instead of the entire function signature. (#34088)
|
||||
@ -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)
|
||||
@ -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)
|
||||
@ -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)
|
||||
@ -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()`.
|
||||
- Cap’n Proto default values were updated to match the corresponding C++ defaults for mining-related option structs (e.g. `BlockCreateOptions`, `BlockWaitOptions`, `BlockCheckOptions`).
|
||||
@ -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`.
|
||||
Loading…
x
Reference in New Issue
Block a user