Skip to content

Commit b3c76ab

Browse files
author
MacroFake
committed
Merge bitcoin/bitcoin#26524: doc: add 24.0 release notes
b93beef doc: Mac -> macOS in release notes template (fanquake) 2747adb doc: Add 24.0 release notes (fanquake) Pull request description: Same as past releases. ACKs for top commit: stickies-v: ACK b93beef Tree-SHA512: c28bc7286f330a6058ae266b238468044439457ff5b9df191232d91dc17b8092facd6ed72accec8bc9db10f055f7bb7e06700cc1ed0bd045fc15f612bc023a46
2 parents cfee93f + b93beef commit b3c76ab

File tree

2 files changed

+389
-1
lines changed

2 files changed

+389
-1
lines changed

doc/release-notes-empty-template.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ How to Upgrade
2525

2626
If you are running an older version, shut it down. Wait until it has completely
2727
shut down (which might take a few minutes in some cases), then run the
28-
installer (on Windows) or just copy over `/Applications/Bitcoin-Qt` (on Mac)
28+
installer (on Windows) or just copy over `/Applications/Bitcoin-Qt` (on macOS)
2929
or `bitcoind`/`bitcoin-qt` (on Linux).
3030

3131
Upgrading directly from a version of Bitcoin Core that has reached its EOL is
Lines changed: 388 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,388 @@
1+
24.0 Release Notes
2+
==================
3+
4+
Bitcoin Core version 24.0 is now available from:
5+
6+
<https://bitcoincore.org/bin/bitcoin-core-24.0/>
7+
8+
This release includes new features, various bug fixes and performance
9+
improvements, as well as updated translations.
10+
11+
Please report bugs using the issue tracker at GitHub:
12+
13+
<https://github.com/bitcoin/bitcoin/issues>
14+
15+
To receive security and update notifications, please subscribe to:
16+
17+
<https://bitcoincore.org/en/list/announcements/join/>
18+
19+
How to Upgrade
20+
==============
21+
22+
If you are running an older version, shut it down. Wait until it has completely
23+
shut down (which might take a few minutes in some cases), then run the
24+
installer (on Windows) or just copy over `/Applications/Bitcoin-Qt` (on macOS)
25+
or `bitcoind`/`bitcoin-qt` (on Linux).
26+
27+
Upgrading directly from a version of Bitcoin Core that has reached its EOL is
28+
possible, but it might take some time if the data directory needs to be migrated. Old
29+
wallet versions of Bitcoin Core are generally supported.
30+
31+
Compatibility
32+
==============
33+
34+
Bitcoin Core is supported and extensively tested on operating systems
35+
using the Linux kernel, macOS 10.15+, and Windows 7 and newer. Bitcoin
36+
Core should also work on most other Unix-like systems but is not as
37+
frequently tested on them. It is not recommended to use Bitcoin Core on
38+
unsupported systems.
39+
40+
Notice of new option for transaction replacement policies
41+
=========================================================
42+
43+
This version of Bitcoin Core adds a new `mempoolfullrbf` configuration
44+
option which allows users to change the policy their individual node
45+
will use for relaying and mining unconfirmed transactions. The option
46+
defaults to the same policy that was used in previous releases and no
47+
changes to node policy will occur if everyone uses the default.
48+
49+
Some Bitcoin services today expect that the first version of an
50+
unconfirmed transaction that they see will be the version of the
51+
transaction that ultimately gets confirmed---a transaction acceptance
52+
policy sometimes called "first-seen".
53+
54+
The Bitcoin Protocol does not, and cannot, provide any assurance that
55+
the first version of an unconfirmed transaction seen by a particular
56+
node will be the version that gets confirmed. If there are multiple
57+
versions of the same unconfirmed transaction available, only the miner
58+
who includes one of those transactions in a block gets to decide which
59+
version of the transaction gets confirmed.
60+
61+
Despite this lack of assurance, multiple merchants and services today
62+
still make this assumption.
63+
64+
There are several benefits to users from removing this *first-seen*
65+
simplification. One key benefit, the ability for the sender of a
66+
transaction to replace it with an alternative version paying higher
67+
fees, was realized in [Bitcoin Core 0.12.0][] (February 2016) with the
68+
introduction of [BIP125][] opt-in Replace By Fee (RBF).
69+
70+
Since then, there has been discussion about completely removing the
71+
first-seen simplification and allowing users to replace any of their
72+
older unconfirmed transactions with newer transactions, a feature called
73+
*full-RBF*. This release includes a `mempoolfullrbf` configuration
74+
option that allows enabling full-RBF, although it defaults to off
75+
(allowing only opt-in RBF).
76+
77+
Several alternative node implementations have already enabled full-RBF by
78+
default for years, and several contributors to Bitcoin Core are
79+
advocating for enabling full-RBF by default in a future version of
80+
Bitcoin Core.
81+
82+
As more nodes that participate in relay and mining begin enabling
83+
full-RBF, replacement of unconfirmed transactions by ones offering higher
84+
fees may rapidly become more reliable.
85+
86+
Contributors to this project strongly recommend that merchants and services
87+
not accept unconfirmed transactions as final, and if they insist on doing so,
88+
to take the appropriate steps to ensure they have some recourse or plan for
89+
when their assumptions do not hold.
90+
91+
[Bitcoin Core 0.12.0]: https://bitcoincore.org/en/releases/0.12.0/#opt-in-replace-by-fee-transactions
92+
[bip125]: https://github.com/bitcoin/bips/blob/master/bip-0125.mediawiki
93+
94+
Notable changes
95+
===============
96+
97+
P2P and network changes
98+
-----------------------
99+
100+
- To address a potential denial-of-service, the logic to download headers from peers
101+
has been reworked. This is particularly relevant for nodes starting up for the
102+
first time (or for nodes which are starting up after being offline for a long time).
103+
104+
Whenever headers are received from a peer that have a total chainwork that is either
105+
less than the node's `-minimumchainwork` value or is sufficiently below the work at
106+
the node's tip, a "presync" phase will begin, in which the node will download the
107+
peer's headers and verify the cumulative work on the peer's chain, prior to storing
108+
those headers permanently. Once that cumulative work is verified to be sufficiently high,
109+
the headers will be redownloaded from that peer and fully validated and stored.
110+
111+
This may result in initial headers sync taking longer for new nodes starting up for
112+
the first time, both because the headers will be downloaded twice, and because the effect
113+
of a peer disconnecting during the presync phase (or while the node's best headers chain has less
114+
than `-minimumchainwork`), will result in the node needing to use the headers presync mechanism
115+
with the next peer as well (downloading the headers twice, again). (#25717)
116+
117+
- With I2P connections, a new, transient address is used for each outbound
118+
connection if `-i2pacceptincoming=0`. (#25355)
119+
120+
Updated RPCs
121+
------------
122+
123+
- The `-deprecatedrpc=softforks` configuration option has been removed. The
124+
RPC `getblockchaininfo` no longer returns the `softforks` field, which was
125+
previously deprecated in 23.0. (#23508) Information on soft fork status is
126+
now only available via the `getdeploymentinfo` RPC.
127+
128+
- The `deprecatedrpc=exclude_coinbase` configuration option has been removed.
129+
The `receivedby` RPCs (`listreceivedbyaddress`, `listreceivedbylabel`,
130+
`getreceivedbyaddress` and `getreceivedbylabel`) now always return results
131+
accounting for received coins from coinbase outputs, without an option to
132+
change that behaviour. Excluding coinbases was previously deprecated in 23.0.
133+
(#25171)
134+
135+
- The `deprecatedrpc=fees` configuration option has been removed. The top-level
136+
fee fields `fee`, `modifiedfee`, `ancestorfees` and `descendantfees` are no
137+
longer returned by RPCs `getmempoolentry`, `getrawmempool(verbose=true)`,
138+
`getmempoolancestors(verbose=true)` and `getmempooldescendants(verbose=true)`.
139+
The same fee fields can be accessed through the `fees` object in the result.
140+
The top-level fee fields were previously deprecated in 23.0. (#25204)
141+
142+
- The `getpeerinfo` RPC has been updated with a new `presynced_headers` field,
143+
indicating the progress on the presync phase mentioned in the
144+
"P2P and network changes" section above.
145+
146+
Changes to wallet related RPCs can be found in the Wallet section below.
147+
148+
New RPCs
149+
--------
150+
151+
- The `sendall` RPC spends specific UTXOs to one or more recipients
152+
without creating change. By default, the `sendall` RPC will spend
153+
every UTXO in the wallet. `sendall` is useful to empty wallets or to
154+
create a changeless payment from select UTXOs. When creating a payment
155+
from a specific amount for which the recipient incurs the transaction
156+
fee, continue to use the `subtractfeefromamount` option via the
157+
`send`, `sendtoaddress`, or `sendmany` RPCs. (#24118)
158+
159+
- A new `gettxspendingprevout` RPC has been added, which scans the mempool to find
160+
transactions spending any of the given outpoints. (#24408)
161+
162+
- The `simulaterawtransaction` RPC iterates over the inputs and outputs of the given
163+
transactions, and tallies up the balance change for the given wallet. This can be
164+
useful e.g. when verifying that a coin join like transaction doesn't contain unexpected
165+
inputs that the wallet will then sign for unintentionally. (#22751)
166+
167+
Updated REST APIs
168+
-----------------
169+
170+
- The `/headers/` and `/blockfilterheaders/` endpoints have been updated to use
171+
a query parameter instead of path parameter to specify the result count. The
172+
count parameter is now optional, and defaults to 5 for both endpoints. The old
173+
endpoints are still functional, and have no documented behaviour change.
174+
175+
For `/headers`, use
176+
`GET /rest/headers/<BLOCK-HASH>.<bin|hex|json>?count=<COUNT=5>`
177+
instead of
178+
`GET /rest/headers/<COUNT>/<BLOCK-HASH>.<bin|hex|json>` (deprecated)
179+
180+
For `/blockfilterheaders/`, use
181+
`GET /rest/blockfilterheaders/<FILTERTYPE>/<BLOCK-HASH>.<bin|hex|json>?count=<COUNT=5>`
182+
instead of
183+
`GET /rest/blockfilterheaders/<FILTERTYPE>/<COUNT>/<BLOCK-HASH>.<bin|hex|json>` (deprecated)
184+
185+
(#24098)
186+
187+
Build System
188+
------------
189+
190+
- Guix builds are now reproducible across architectures (x86_64 & aarch64). (#21194)
191+
192+
New settings
193+
------------
194+
195+
- A new `mempoolfullrbf` option has been added, which enables the mempool to
196+
accept transaction replacement without enforcing BIP125 replaceability
197+
signaling. (#25353)
198+
199+
Wallet
200+
------
201+
202+
- The `-walletrbf` startup option will now default to `true`. The
203+
wallet will now default to opt-in RBF on transactions that it creates. (#25610)
204+
205+
- The `replaceable` option for the `createrawtransaction` and
206+
`createpsbt` RPCs will now default to `true`. Transactions created
207+
with these RPCs will default to having opt-in RBF enabled. (#25610)
208+
209+
- The `wsh()` output descriptor was extended with Miniscript support. You can import Miniscript
210+
descriptors for P2WSH in a watchonly wallet to track coins, but you can't spend from them using
211+
the Bitcoin Core wallet yet.
212+
You can find more about Miniscript on the [reference website](https://bitcoin.sipa.be/miniscript/). (#24148)
213+
214+
- The `tr()` output descriptor now supports multisig scripts through the `multi_a()` and
215+
`sortedmulti_a()` functions. (#24043)
216+
217+
- To help prevent fingerprinting transactions created by the Bitcoin Core wallet, change output
218+
amounts are now randomized. (#24494)
219+
220+
- The `listtransactions`, `gettransaction`, and `listsinceblock`
221+
RPC methods now include a wtxid field (hash of serialized transaction,
222+
including witness data) for each transaction. (#24198)
223+
224+
- The `listsinceblock`, `listtransactions` and `gettransaction` output now contain a new
225+
`parent_descs` field for every "receive" entry. (#25504)
226+
227+
- A new optional `include_change` parameter was added to the `listsinceblock` command.
228+
229+
- RPC `getreceivedbylabel` now returns an error, "Label not found
230+
in wallet" (-4), if the label is not in the address book. (#25122)
231+
232+
Migrating Legacy Wallets to Descriptor Wallets
233+
---------------------------------------------
234+
235+
An experimental RPC `migratewallet` has been added to migrate Legacy (non-descriptor) wallets to
236+
Descriptor wallets. More information about the migration process is available in the
237+
[documentation](https://github.com/bitcoin/bitcoin/blob/master/doc/managing-wallets.md#migrating-legacy-wallets-to-descriptor-wallets).
238+
239+
GUI changes
240+
-----------
241+
242+
- A new menu item to restore a wallet from a backup file has been added (gui#471).
243+
244+
- Configuration changes made in the bitcoin GUI (such as the pruning setting,
245+
proxy settings, UPNP preferences) are now saved to `<datadir>/settings.json`
246+
file rather than to the Qt settings backend (windows registry or unix desktop
247+
config files), so these settings will now apply to bitcoind, instead of being
248+
ignored. (#15936, gui#602)
249+
250+
- Also, the interaction between GUI settings and `bitcoin.conf` settings is
251+
simplified. Settings from `bitcoin.conf` are now displayed normally in the GUI
252+
settings dialog, instead of in a separate warning message ("Options set in this
253+
dialog are overridden by the configuration file: -setting=value"). And these
254+
settings can now be edited because `settings.json` values take precedence over
255+
`bitcoin.conf` values. (#15936)
256+
257+
Low-level changes
258+
=================
259+
260+
RPC
261+
---
262+
263+
- The `deriveaddresses`, `getdescriptorinfo`, `importdescriptors` and `scantxoutset` commands now
264+
accept Miniscript expression within a `wsh()` descriptor. (#24148)
265+
266+
- The `getaddressinfo`, `decodescript`, `listdescriptors` and `listunspent` commands may now output
267+
a Miniscript descriptor inside a `wsh()` where a `wsh(raw())` descriptor was previously returned. (#24148)
268+
269+
Credits
270+
=======
271+
272+
Thanks to everyone who directly contributed to this release:
273+
274+
- /dev/fd0
275+
- 0xb10c
276+
- Adam Jonas
277+
- akankshakashyap
278+
- Ali Sherief
279+
- amadeuszpawlik
280+
- Andreas Kouloumos
281+
- Andrew Chow
282+
- Anthony Towns
283+
- Antoine Poinsot
284+
- Antoine Riard
285+
- Aurèle Oulès
286+
- avirgovi
287+
- Ayush Sharma
288+
- Baas
289+
- Ben Woosley
290+
- BrokenProgrammer
291+
- brunoerg
292+
- brydinh
293+
- Bushstar
294+
- Calvin Kim
295+
- CAnon
296+
- Carl Dong
297+
- chinggg
298+
- Cory Fields
299+
- Daniel Kraft
300+
- Daniela Brozzoni
301+
- darosior
302+
- Dave Scotese
303+
- David Bakin
304+
- dergoegge
305+
- dhruv
306+
- Dimitri
307+
- dontbyte
308+
- Duncan Dean
309+
- eugene
310+
- Eunoia
311+
- Fabian Jahr
312+
- furszy
313+
- Gleb Naumenko
314+
- glozow
315+
- Greg Weber
316+
- Gregory Sanders
317+
- gruve-p
318+
- Hennadii Stepanov
319+
- hiago
320+
- Igor Bubelov
321+
- ishaanam
322+
- Jacob P.
323+
- Jadi
324+
- James O'Beirne
325+
- Janna
326+
- Jarol Rodriguez
327+
- Jeremy Rand
328+
- Jeremy Rubin
329+
- jessebarton
330+
- João Barbosa
331+
- John Newbery
332+
- Jon Atack
333+
- Josiah Baker
334+
- Karl-Johan Alm
335+
- KevinMusgrave
336+
- Kiminuo
337+
- klementtan
338+
- Kolby Moroz
339+
- kouloumos
340+
- Kristaps Kaupe
341+
- Larry Ruane
342+
- Luke Dashjr
343+
- MarcoFalke
344+
- Marnix
345+
- Martin Leitner-Ankerl
346+
- Martin Zumsande
347+
- Michael Dietz
348+
- Michael Folkson
349+
- Michael Ford
350+
- Murch
351+
- mutatrum
352+
- muxator
353+
- Oskar Mendel
354+
- Pablo Greco
355+
- pasta
356+
- Patrick Strateman
357+
- Pavol Rusnak
358+
- Peter Bushnell
359+
- phyBrackets
360+
- Pieter Wuille
361+
- practicalswift
362+
- randymcmillan
363+
- Robert Spigler
364+
- Russell Yanofsky
365+
- S3RK
366+
- Samer Afach
367+
- Sebastian Falbesoner
368+
- Seibart Nedor
369+
- Shashwat
370+
- Sjors Provoost
371+
- Smlep
372+
- sogoagain
373+
- Stacie
374+
- Stéphan Vuylsteke
375+
- Suhail Saqan
376+
- Suhas Daftuar
377+
- t-bast
378+
- TakeshiMusgrave
379+
- Vasil Dimov
380+
- W. J. van der Laan
381+
- w0xlt
382+
- whiteh0rse
383+
- willcl-ark
384+
- William Casarin
385+
- Yancy Ribbens
386+
387+
As well as to everyone that helped with translations on
388+
[Transifex](https://www.transifex.com/bitcoin/bitcoin/).

0 commit comments

Comments
 (0)