diff --git a/doc/release-notes.md b/doc/release-notes.md index a855d10cc98..43aff7ec531 100644 --- a/doc/release-notes.md +++ b/doc/release-notes.md @@ -1,9 +1,9 @@ -v30.0 Release Notes +v30.x Release Notes =================== -Bitcoin Core version v30.0 is now available from: +Bitcoin Core version v30.x is now available from: - + This release includes new features, various bug fixes and performance improvements, as well as updated translations. @@ -40,399 +40,57 @@ unsupported systems. Notable changes =============== -Policy ------- +### Build -- The maximum number of potentially executed legacy signature operations in a - single standard transaction is now limited to 2500. Signature operations in all - previous output scripts, in all input scripts, as well as all P2SH redeem - scripts (if there are any) are counted toward the limit. The new limit is - assumed to not affect any known typically formed standard transactions. The - change was done to prepare for a possible BIP54 deployment in the future. (#32521) +- #33580 depends: Use `$(package)_file_name` when downloading from the fallback +- #33906 depends: Add patch for Windows11Style plugin -- `-datacarriersize` is increased to 100,000 by default, which effectively uncaps - the limit (as the maximum transaction size limit will be hit first). It can be - overridden with `-datacarriersize=83` to revert to the limit enforced in previous - versions. (#32406) +### IPC -- Multiple data carrier (OP_RETURN) outputs in a transaction are now permitted for - relay and mining. The `-datacarriersize` limit applies to the aggregate size of - the scriptPubKeys across all such outputs in a transaction, not including the - scriptPubKey size itself. (#32406) +- #33229 multiprocess: Don't require bitcoin -m argument when IPC options are used +- #33517 multiprocess: Fix high overhead from message logging +- #33519 Update libmultiprocess subtree in 30.x branch +- #33566 miner: fix empty mempool case for waitNext() +- #33676 interfaces: enable cancelling running waitNext calls -- The minimum block feerate (`-blockmintxfee`) has been changed to 0.001 satoshi per - vB. It can still be changed using the configuration option. This option can be used - by miners to set a minimum feerate on packages added to block templates. (#33106) +### GUI -- The default minimum relay feerate (`-minrelaytxfee`) and incremental relay feerate - (`-incrementalrelayfee`) have been changed to 0.1 satoshis per vB. They can still - be changed using their respective configuration options, but it is recommended to - change both together if you decide to do so. (#33106) +- gui#899 qt: Modernize custom filtering +- gui#901 Add createwallet, createwalletdescriptor, and migratewallet to history filter - Other minimum feerates (e.g. the dust feerate, the minimum returned by the fee - estimator, and all feerates used by the wallet) remain unchanged. The mempool minimum - feerate still changes in response to high volume. +### Test - Note that unless these lower defaults are widely adopted across the network, transactions - created with lower fee rates are not guaranteed to propagate or confirm. The wallet - feerates remain unchanged; `-mintxfee` must be changed before attempting to create - transactions with lower feerates using the wallet. (#33106) +- #33612 test: change log rate limit version gate -P2P and network changes ------------------------ +### Doc -- Opportunistic 1-parent-1-child package relay has been improved to handle - situations when the child already has unconfirmed parent(s) in the mempool. - This means that 1p1c packages can be accepted and propagate, even if they are - connected to broader topologies: multi-parent-1-child (where only 1 parent - requires fee-bumping), grandparent-parent-child (where only parent requires - fee-bumping) etc. (#31385) +- #33630 doc: correct topology requirements in submitpackage helptext +- #33826 scripted-diff: Remove obsolete comment +- #33827 doc: Correct pkgin command usage on NetBSD -- The transaction orphanage, which holds transactions with missing inputs temporarily - while the node attempts to fetch its parents, now has improved Denial of Service protections. - Previously, it enforced a maximum number of unique transactions (default 100, - configurable using `-maxorphantx`). Now, its limits are as follows: the number of - entries (unique by wtxid and peer), plus each unique transaction's input count divided - by 10, must not exceed 3,000. The total weight of unique transactions must not exceed - `404,000` Wu multiplied by the number of peers. (#31829) +### Misc -- The `-maxorphantx` option no longer has any effect, since the orphanage no longer - limits the number of unique transactions. Users should remove this configuration - option if they were using it, as the setting will cause an error in future versions - when it is no longer recognized. (#31829) - -New `bitcoin` command ---------------------- - -- A new `bitcoin` command line tool has been added to make features more discoverable - and convenient to use. The `bitcoin` tool just calls other executables and does not - implement any functionality on its own. Specifically `bitcoin node` is a synonym for - `bitcoind`, `bitcoin gui` is a synonym for `bitcoin-qt`, and `bitcoin rpc` is a synonym - for `bitcoin-cli -named`. Other commands and options can be listed with `bitcoin help`. - The new `bitcoin` command is an alternative to calling other commands directly, but it - doesn't replace them, and there are no plans to deprecate existing commands. (#31375) - -External Signing ----------------- - -- Support for external signing on Windows has been re-enabled. (#29868) - -IPC Mining Interface --------------------- - -- The new `bitcoin` command does support one new feature: an (experimental) IPC Mining - Interface that allows the node to work with Stratum v2 or other mining client software, - see (#31098). When the node is started with `bitcoin -m node -ipcbind=unix` it will - listen on a unix socket for IPC client connections, allowing clients to request block - templates and submit mined blocks. The `-m` option launches a new internal binary - (`bitcoin-node` instead of `bitcoind`) and is currently required but will become optional - in the future (with [#33229](https://github.com/bitcoin/bitcoin/pull/33229)). - -- IPC connectivity introduces new dependencies (see [multiprocess.md](https://github.com/bitcoin/bitcoin/blob/master/doc/multiprocess.md)), - which can be turned off with the `-DENABLE_IPC=OFF` build option if you do not intend - to use IPC. (#31802) - -Install changes ---------------- - -- The `test_bitcoin` executable is now installed in `libexec/` instead of `bin/`. - It can still be executed directly, or accessed through the new `bitcoin` command - as `bitcoin test`. The `libexec/` directory also contains new `bitcoin-node` and - `bitcoin-gui` binaries which support IPC features and are called through the - `bitcoin` tool. In source builds only, `test_bitcoin-qt`, `bench_bitcoin`, and - `bitcoin-chainstate` are also now installed to `libexec/` instead of `bin/` and - can be accessed through the new `bitcoin` command. See `bitcoin help` output for - details. (#31679) - -- On Windows, the installer no longer adds a “(64-bit)” suffix to entries in the - Start Menu (#32132), and it now automatically removes obsolete artifacts during - upgrades (#33422). - -Indexes -------- - -- The implementation of coinstatsindex was changed to prevent an overflow bug that - could already be observed on the default Signet. The new version of the index will - need to be synced from scratch when starting the upgraded node for the first time. - - The new version is stored in `/indexes/coinstatsindex/` in contrast to the old version - which was stored at `/indexes/coinstats/`. The old version of the index is not deleted - by the upgraded node in case the user chooses to downgrade their node in the future. - If the user does not plan to downgrade it is safe for them to remove `/indexes/coinstats/` - from their datadir. A future release of Bitcoin Core may remove the old version of the - index automatically. (#30469) - -Logging -------- -- Unconditional logging to disk is now rate limited by giving each source location - a quota of 1MiB per hour. Unconditional logging is any logging with a log level - higher than debug, that is `info`, `warning`, and `error`. All logs will be - prefixed with `[*]` if there is at least one source location that is currently - being suppressed. (#32604) - -- When `-logsourcelocations` is enabled, the log output now contains the entire - function signature instead of just the function name. (#32604) - -Updated RPCs ------------- - -- The `-paytxfee` startup option and the `settxfee` RPC are now deprecated and - will be removed in Bitcoin Core 31.0. They allowed 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`. (#31278) - -- Any RPC in which one of the parameters is a descriptor will throw an error - if the provided descriptor contains a whitespace at the beginning or the end - of the public key within a fragment - e.g. `pk( KEY)` or `pk(KEY )`. (#31603) - -- The `submitpackage` RPC, which allows submissions of child-with-parents - packages, no longer requires that all unconfirmed parents be present. The - package may contain other in-mempool ancestors as well. (#31385) - -- The `waitfornewblock` RPC now takes an optional `current_tip` argument. It - is also no longer hidden. (#30635) - -- The `waitforblock` and `waitforblockheight` RPCs are no longer hidden. (#30635) - -- The `psbtbumpfee` and `bumpfee` RPCs allow a replacement under fullrbf and no - longer require BIP-125 signalling. (#31953) - -- Transaction Script validation errors used to return the reason for the error - prefixed by either `mandatory-script-verify-flag-failed` if it was a consensus - error, or `non-mandatory-script-verify-flag` (without "-failed") if it was a - standardness error. This has been changed to `block-script-verify-flag-failed` - and `mempool-script-verify-flag-failed` for all block and mempool errors - respectively. (#33183) - -- The `getmininginfo` RPC now returns "blockmintxfee" result specifying the value of - `-blockmintxfee` configuration. (#33189) - -- The `getmempoolinfo` RPC now returns an additional "permitbaremultisig" and - "maxdatacarriersize" field, reflecting the `-permitbaremultisig` and `-datacarriersize` - config values. (#29954) - -Changes to wallet-related RPCs can be found in the Wallet section below. - -New RPCs --------- - -- A new REST API endpoint (`/rest/spenttxouts/BLOCKHASH`) has been introduced for - efficiently fetching spent transaction outputs using the block's undo data (#32540). - -Build System ------------- - -Updated settings ----------------- - -- The `-maxmempool` and `-dbcache` startup parameters are now capped on 32-bit systems - to 500MB and 1GiB respectively. (#32530) - -- The `-natpmp` option is now set to `1` by default. This means nodes with `-listen` - enabled (the default) but running behind a firewall, such as a local network router, - will be reachable if the firewall/router supports any of the `PCP` or `NAT-PMP` - protocols. (#33004) - -- The `-upnp` setting has now been fully removed. Use `-natpmp` instead. (#32500) - -- Previously, `-proxy` specified the proxy for all networks (except I2P which - uses `-i2psam`) and only the Tor proxy could have been specified separately - via `-onion`. Now, the syntax of `-proxy` has been extended and it is possible - to specify separately the proxy for IPv4, IPv6, Tor and CJDNS by appending `=` - followed by the network name, for example `-proxy=127.0.0.1:5555=ipv6` - configures a proxy only for IPv6. The `-proxy` option can be used multiple - times to define different proxies for different networks, such as - `-proxy=127.0.0.1:4444=ipv4 -proxy=10.0.0.1:6666=ipv6`. Later settings - override earlier ones for the same network; this can be used to remove an - earlier all-networks proxy and use direct connections only for a given - network, for example `-proxy=127.0.0.1:5555 -proxy=0=cjdns`. (#32425) - -- The `-blockmaxweight` startup option has been updated to be debug-only. - It is still available to users, but now hidden from the default `-help` text - and shown only in `-help-debug` (#32654). - -Changes to GUI or wallet related settings can be found in the GUI or Wallet section below. - -Wallet ------- - -- BDB legacy wallets can no longer be created or loaded. They can be migrated - to the new descriptor wallet format. Refer to the `migratewallet` RPC for more - details. - -- The legacy wallet removal drops redundant options in the bitcoin-wallet tool, - such as `-withinternalbdb`, `-legacy`, and `-descriptors`. Moreover, the - legacy-only RPCs `addmultisigaddress`, `dumpprivkey`, `dumpwallet`, - `importaddress`, `importmulti`, `importprivkey`, `importpubkey`, - `importwallet`, `newkeypool`, `sethdseed`, and `upgradewallet`, are removed. - (#32944, #28710, #32438, #31250) - -- Support has been added for spending TRUC transactions received by the - wallet, as well as creating TRUC transactions. The wallet ensures that - TRUC policy rules are being met. The wallet will throw an error if the - user is trying to spend TRUC utxos with utxos of other versions. - Additionally, the wallet will treat unconfirmed TRUC sibling - transactions as mempool conflicts. The wallet will also ensure that - transactions spending TRUC utxos meet the required size restrictions. (#32896) - -- Since descriptor wallets do not allow mixing watchonly and non-watchonly descriptors, - the `include_watchonly` option (and its variants in naming) are removed from all RPCs - that had it. (#32618) - -- The `iswatchonly` field is removed from any RPCs that returned it. (#32618) - -- `unloadwallet` - Return RPC_INVALID_PARAMETER when both the RPC wallet endpoint - and wallet_name parameters are unspecified. Previously the RPC failed with a JSON - parsing error. (#32845) - -- `getdescriptoractivity` - Mark blockhashes and scanobjects arguments as required, - so the user receives a clear help message when either is missing. As in `unloadwallet`, - previously the RPC failed with a JSON parsing error. (#32845) - -- `getwalletinfo` - Removes the fields `balance`, `immature_balance` and - `unconfirmed_balance`. (#32721) - -- `getunconfirmedbalance` - Removes this RPC command. You can query the `getbalances` - RPC and inspect the `["mine"]["untrusted_pending"]` entry within the JSON - response. (#32721) - -- The following RPCs now contain a `version` parameter that allows - the user to create transactions of any standard version number (1-3): - - `createrawtransaction` - - `createpsbt` - - `send` - - `sendall` - - `walletcreatefundedpsbt` - (#32896) - -GUI changes ------------ - -- The GUI has been migrated from Qt 5 to Qt 6. On Windows, dark mode is now supported. - On macOS, the Metal backend is now used. (#30997) - -- A transaction's fee bump is allowed under fullrbf and no longer requires - BIP-125 signalling. (#31953) - -- Custom column widths in the Transactions tab are reset as a side-effect of legacy - wallet removal. (#32459) - -Low-level changes -================= - -- Logs now include which peer sent us a header. Additionally there are fewer - redundant header log messages. A side-effect of this change is that for - some untypical cases new headers aren't logged anymore, e.g. a direct - `BLOCK` message with a previously unknown header and `submitheader` RPC. (#27826) +- #33508 ci: fix buildx gha cache authentication on forks +- #33558 ci: Use native platform for win-cross task +- #33581 ci: Properly include $FILE_ENV in DEPENDS_HASH +- #33744 ci: Fix lint runner selection (and docker cache) Credits ======= Thanks to everyone who directly contributed to this release: -- 0xb10c -- amisha -- Andrew Toth -- Anthony Towns -- Antoine Poinsot - Ava Chow -- benthecarman -- Brandon Odiwuor -- brunoerg -- Bue-von-hon -- Bufo -- Chandra Pratap -- Chris Stewart - Cory Fields -- Daniel Pfeifer -- Daniela Brozzoni -- David Gumberg -- deadmanoz -- dennsikl -- dergoegge -- enoch -- Ethan Heilman - Eugene Siegel -- Eunovo -- Eval EXEC -- Fabian Jahr -- fanquake -- Florian Schmaus -- fuder.eth -- furszy - glozow -- Greg Sanders -- Hao Xu -- Haoran Peng -- Haowen Liu - Hennadii Stepanov -- Hodlinator -- hoffman -- ishaanam - ismaelsadeeq -- Jameson Lopp -- janb84 -- Jiri Jakes -- John Bampton -- Jon Atack -- josibake -- jurraca -- kevkevin -- kevkevinpal -- kilavvy -- Kristaps Kaupe -- l0rinc -- laanwj -- leopardracer -- Lőrinc -- Luis Schwab -- Luke Dashjr - MarcoFalke -- marcofleon -- Martin Zumsande -- Matt Corallo -- Matthew Zipkin -- Max Edwards -- monlovesmango -- Murch -- naiyoma -- nervana21 -- Nicola Leonardo Susca -- Novo -- pablomartin4btc -- Peter Todd -- Pieter Wuille -- Pol Espinasa -- Prabhat Verma -- rkrux -- Roman Zeyde - Ryan Ofsky -- Saikiran -- Salvatore Ingala -- Sebastian Falbesoner -- Sergi Delgado Segura -- Shunsuke Shimizu - Sjors Provoost -- stickies-v -- stratospher -- stringintech -- strmfos -- stutxo -- tdb3 -- TheCharlatan -- Tomás Andróil -- UdjinM6 -- Vasil Dimov -- VolodymyrBg -- w0xlt -- will +- WakeTrainDev - willcl-ark -- William Casarin -- woltx -- yancy -- zaidmstrr As well as to everyone that helped with translations on [Transifex](https://explore.transifex.com/bitcoin/bitcoin/).