From 932a609312cb7b72bf5f23112763ab933a54389c Mon Sep 17 00:00:00 2001 From: fanquake Date: Sun, 12 Mar 2023 17:01:57 +0100 Subject: doc: add initial release notes for v24.1 Move historical 24.0.1 to doc/release-notes. --- doc/release-notes.md | 355 ++++----------------------------------------------- 1 file changed, 26 insertions(+), 329 deletions(-) (limited to 'doc/release-notes.md') diff --git a/doc/release-notes.md b/doc/release-notes.md index 24920ba450..19f604c66b 100644 --- a/doc/release-notes.md +++ b/doc/release-notes.md @@ -1,12 +1,9 @@ -24.0.1 Release Notes +24.1rc1 Release Notes ==================== -Due to last-minute issues (#26616), 24.0, although tagged, was never fully -announced or released. +Bitcoin Core version 24.1rc1 is now available from: -Bitcoin Core version 24.0.1 is now available from: - - + This release includes new features, various bug fixes and performance improvements, as well as updated translations. @@ -40,352 +37,52 @@ Core should also work on most other Unix-like systems but is not as frequently tested on them. It is not recommended to use Bitcoin Core on unsupported systems. -Notice of new option for transaction replacement policies -========================================================= - -This version of Bitcoin Core adds a new `mempoolfullrbf` configuration -option which allows users to change the policy their individual node -will use for relaying and mining unconfirmed transactions. The option -defaults to the same policy that was used in previous releases and no -changes to node policy will occur if everyone uses the default. - -Some Bitcoin services today expect that the first version of an -unconfirmed transaction that they see will be the version of the -transaction that ultimately gets confirmed---a transaction acceptance -policy sometimes called "first-seen". - -The Bitcoin Protocol does not, and cannot, provide any assurance that -the first version of an unconfirmed transaction seen by a particular -node will be the version that gets confirmed. If there are multiple -versions of the same unconfirmed transaction available, only the miner -who includes one of those transactions in a block gets to decide which -version of the transaction gets confirmed. - -Despite this lack of assurance, multiple merchants and services today -still make this assumption. - -There are several benefits to users from removing this *first-seen* -simplification. One key benefit, the ability for the sender of a -transaction to replace it with an alternative version paying higher -fees, was realized in [Bitcoin Core 0.12.0][] (February 2016) with the -introduction of [BIP125][] opt-in Replace By Fee (RBF). - -Since then, there has been discussion about completely removing the -first-seen simplification and allowing users to replace any of their -older unconfirmed transactions with newer transactions, a feature called -*full-RBF*. This release includes a `mempoolfullrbf` configuration -option that allows enabling full-RBF, although it defaults to off -(allowing only opt-in RBF). - -Several alternative node implementations have already enabled full-RBF by -default for years, and several contributors to Bitcoin Core are -advocating for enabling full-RBF by default in a future version of -Bitcoin Core. - -As more nodes that participate in relay and mining begin enabling -full-RBF, replacement of unconfirmed transactions by ones offering higher -fees may rapidly become more reliable. - -Contributors to this project strongly recommend that merchants and services -not accept unconfirmed transactions as final, and if they insist on doing so, -to take the appropriate steps to ensure they have some recourse or plan for -when their assumptions do not hold. - -[Bitcoin Core 0.12.0]: https://bitcoincore.org/en/releases/0.12.0/#opt-in-replace-by-fee-transactions -[bip125]: https://github.com/bitcoin/bips/blob/master/bip-0125.mediawiki - -Notable changes -=============== - -P2P and network changes ------------------------ - -- To address a potential denial-of-service, the logic to download headers from peers - has been reworked. This is particularly relevant for nodes starting up for the - first time (or for nodes which are starting up after being offline for a long time). - - Whenever headers are received from a peer that have a total chainwork that is either - less than the node's `-minimumchainwork` value or is sufficiently below the work at - the node's tip, a "presync" phase will begin, in which the node will download the - peer's headers and verify the cumulative work on the peer's chain, prior to storing - those headers permanently. Once that cumulative work is verified to be sufficiently high, - the headers will be redownloaded from that peer and fully validated and stored. - - This may result in initial headers sync taking longer for new nodes starting up for - the first time, both because the headers will be downloaded twice, and because the effect - of a peer disconnecting during the presync phase (or while the node's best headers chain has less - than `-minimumchainwork`), will result in the node needing to use the headers presync mechanism - with the next peer as well (downloading the headers twice, again). (#25717) - -- With I2P connections, a new, transient address is used for each outbound - connection if `-i2pacceptincoming=0`. (#25355) - -Updated RPCs ------------- - -- The `-deprecatedrpc=softforks` configuration option has been removed. The - RPC `getblockchaininfo` no longer returns the `softforks` field, which was - previously deprecated in 23.0. (#23508) Information on soft fork status is - now only available via the `getdeploymentinfo` RPC. - -- The `deprecatedrpc=exclude_coinbase` configuration option has been removed. - The `receivedby` RPCs (`listreceivedbyaddress`, `listreceivedbylabel`, - `getreceivedbyaddress` and `getreceivedbylabel`) now always return results - accounting for received coins from coinbase outputs, without an option to - change that behaviour. Excluding coinbases was previously deprecated in 23.0. - (#25171) - -- The `deprecatedrpc=fees` configuration option has been removed. The top-level - fee fields `fee`, `modifiedfee`, `ancestorfees` and `descendantfees` are no - longer returned by RPCs `getmempoolentry`, `getrawmempool(verbose=true)`, - `getmempoolancestors(verbose=true)` and `getmempooldescendants(verbose=true)`. - The same fee fields can be accessed through the `fees` object in the result. - The top-level fee fields were previously deprecated in 23.0. (#25204) - -- The `getpeerinfo` RPC has been updated with a new `presynced_headers` field, - indicating the progress on the presync phase mentioned in the - "P2P and network changes" section above. - -Changes to wallet related RPCs can be found in the Wallet section below. - -New RPCs --------- - -- The `sendall` RPC spends specific UTXOs to one or more recipients - without creating change. By default, the `sendall` RPC will spend - every UTXO in the wallet. `sendall` is useful to empty wallets or to - create a changeless payment from select UTXOs. When creating a payment - from a specific amount for which the recipient incurs the transaction - fee, continue to use the `subtractfeefromamount` option via the - `send`, `sendtoaddress`, or `sendmany` RPCs. (#24118) - -- A new `gettxspendingprevout` RPC has been added, which scans the mempool to find - transactions spending any of the given outpoints. (#24408) - -- The `simulaterawtransaction` RPC iterates over the inputs and outputs of the given - transactions, and tallies up the balance change for the given wallet. This can be - useful e.g. when verifying that a coin join like transaction doesn't contain unexpected - inputs that the wallet will then sign for unintentionally. (#22751) - -Updated REST APIs ------------------ - -- The `/headers/` and `/blockfilterheaders/` endpoints have been updated to use - a query parameter instead of path parameter to specify the result count. The - count parameter is now optional, and defaults to 5 for both endpoints. The old - endpoints are still functional, and have no documented behaviour change. - - For `/headers`, use - `GET /rest/headers/.?count=` - instead of - `GET /rest/headers//.` (deprecated) - - For `/blockfilterheaders/`, use - `GET /rest/blockfilterheaders//.?count=` - instead of - `GET /rest/blockfilterheaders///.` (deprecated) - - (#24098) - -Build System ------------- - -- Guix builds are now reproducible across architectures (x86_64 & aarch64). (#21194) - -New settings ------------- - -- A new `mempoolfullrbf` option has been added, which enables the mempool to - accept transaction replacement without enforcing BIP125 replaceability - signaling. (#25353) - -Wallet ------- - -- The `-walletrbf` startup option will now default to `true`. The - wallet will now default to opt-in RBF on transactions that it creates. (#25610) - -- The `replaceable` option for the `createrawtransaction` and - `createpsbt` RPCs will now default to `true`. Transactions created - with these RPCs will default to having opt-in RBF enabled. (#25610) - -- The `wsh()` output descriptor was extended with Miniscript support. You can import Miniscript - descriptors for P2WSH in a watchonly wallet to track coins, but you can't spend from them using - the Bitcoin Core wallet yet. - You can find more about Miniscript on the [reference website](https://bitcoin.sipa.be/miniscript/). (#24148) - -- The `tr()` output descriptor now supports multisig scripts through the `multi_a()` and - `sortedmulti_a()` functions. (#24043) - -- To help prevent fingerprinting transactions created by the Bitcoin Core wallet, change output - amounts are now randomized. (#24494) - -- The `listtransactions`, `gettransaction`, and `listsinceblock` - RPC methods now include a wtxid field (hash of serialized transaction, - including witness data) for each transaction. (#24198) - -- The `listsinceblock`, `listtransactions` and `gettransaction` output now contain a new - `parent_descs` field for every "receive" entry. (#25504) - -- A new optional `include_change` parameter was added to the `listsinceblock` command. +### P2P -- RPC `getreceivedbylabel` now returns an error, "Label not found - in wallet" (-4), if the label is not in the address book. (#25122) +- #26878 I2P network optimizations +- #26909 net: prevent peers.dat corruptions by only serializing once -Migrating Legacy Wallets to Descriptor Wallets ---------------------------------------------- +### RPC and other APIs -An experimental RPC `migratewallet` has been added to migrate Legacy (non-descriptor) wallets to -Descriptor wallets. More information about the migration process is available in the -[documentation](https://github.com/bitcoin/bitcoin/blob/master/doc/managing-wallets.md#migrating-legacy-wallets-to-descriptor-wallets). +- #26515 rpc: Require NodeStateStats object in getpeerinfo -GUI changes ------------ +### Build System -- A new menu item to restore a wallet from a backup file has been added (gui#471). +- #26944 depends: fix systemtap download URL -- Configuration changes made in the bitcoin GUI (such as the pruning setting, -proxy settings, UPNP preferences) are now saved to `/settings.json` -file rather than to the Qt settings backend (windows registry or unix desktop -config files), so these settings will now apply to bitcoind, instead of being -ignored. (#15936, gui#602) +### Wallet -- Also, the interaction between GUI settings and `bitcoin.conf` settings is -simplified. Settings from `bitcoin.conf` are now displayed normally in the GUI -settings dialog, instead of in a separate warning message ("Options set in this -dialog are overridden by the configuration file: -setting=value"). And these -settings can now be edited because `settings.json` values take precedence over -`bitcoin.conf` values. (#15936) +- #26595 wallet: be able to specify a wallet name and passphrase to migratewallet +- #26675 wallet: For feebump, ignore abandoned descendant spends +- #26679 wallet: Skip rescanning if wallet is more recent than tip +- #26761 wallet: fully migrate address book entries for watchonly/solvable wallets +- #27053 wallet: reuse change dest when re-creating TX with avoidpartialspends +- #27080 wallet: Zero out wallet master key upon locking so it doesn't persist in memory -Low-level changes -================= +### GUI changes -RPC ---- +- gui#687 Load PSBTs using istreambuf_iterator rather than istream_iterator +- gui#704 Correctly limit overview transaction list -- The `deriveaddresses`, `getdescriptorinfo`, `importdescriptors` and `scantxoutset` commands now - accept Miniscript expression within a `wsh()` descriptor. (#24148) +### Miscellaneous -- The `getaddressinfo`, `decodescript`, `listdescriptors` and `listunspent` commands may now output - a Miniscript descriptor inside a `wsh()` where a `wsh(raw())` descriptor was previously returned. (#24148) +- #26880 ci: replace Intel macOS CI job +- #26924 refactor: Add missing includes to fix gcc-13 compile error Credits ======= Thanks to everyone who directly contributed to this release: -- /dev/fd0 -- 0xb10c -- Adam Jonas -- akankshakashyap -- Ali Sherief -- amadeuszpawlik -- Andreas Kouloumos - Andrew Chow -- Anthony Towns -- Antoine Poinsot -- Antoine Riard -- Aurèle Oulès -- avirgovi -- Ayush Sharma -- Baas -- Ben Woosley -- BrokenProgrammer -- brunoerg -- brydinh -- Bushstar -- Calvin Kim -- CAnon -- Carl Dong -- chinggg -- Cory Fields -- Daniel Kraft -- Daniela Brozzoni -- darosior -- Dave Scotese -- David Bakin -- dergoegge -- dhruv -- Dimitri -- dontbyte -- Duncan Dean -- eugene -- Eunoia -- Fabian Jahr -- furszy -- Gleb Naumenko -- glozow -- Greg Weber -- Gregory Sanders -- gruve-p - Hennadii Stepanov -- hiago -- Igor Bubelov -- ishaanam -- Jacob P. -- Jadi -- James O'Beirne -- Janna -- Jarol Rodriguez -- Jeremy Rand -- Jeremy Rubin -- jessebarton -- João Barbosa -- John Newbery -- Jon Atack -- Josiah Baker -- Karl-Johan Alm -- KevinMusgrave -- Kiminuo -- klementtan -- Kolby Moroz -- kouloumos -- Kristaps Kaupe -- Larry Ruane -- Luke Dashjr -- MarcoFalke -- Marnix -- Martin Leitner-Ankerl +- John Moffett +- Marco Falke - Martin Zumsande -- Michael Dietz -- Michael Folkson +- Matthew Zipkin - Michael Ford -- Murch -- mutatrum -- muxator -- Oskar Mendel -- Pablo Greco -- pasta -- Patrick Strateman -- Pavol Rusnak -- Peter Bushnell -- phyBrackets -- Pieter Wuille -- practicalswift -- randymcmillan -- Robert Spigler -- Russell Yanofsky -- S3RK -- Samer Afach - Sebastian Falbesoner -- Seibart Nedor -- Shashwat -- Sjors Provoost -- Smlep -- sogoagain -- Stacie -- Stéphan Vuylsteke -- Suhail Saqan -- Suhas Daftuar -- t-bast -- TakeshiMusgrave - Vasil Dimov -- W. J. van der Laan -- w0xlt -- whiteh0rse -- willcl-ark -- William Casarin -- Yancy Ribbens As well as to everyone that helped with translations on [Transifex](https://www.transifex.com/bitcoin/bitcoin/). -- cgit v1.2.3