/ doc / release-notes / release-notes-25.0.md
release-notes-25.0.md
  1  25.0 Release Notes
  2  ==================
  3  
  4  Bitcoin Core version 25.0 is now available from:
  5  
  6    <https://bitcoincore.org/bin/bitcoin-core-25.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  Notable changes
 41  ===============
 42  
 43  P2P and network changes
 44  -----------------------
 45  
 46  - Transactions of non-witness size 65 bytes and above are now allowed by mempool
 47    and relay policy. This is to better reflect the actual afforded protections
 48    against CVE-2017-12842 and open up additional use-cases of smaller transaction sizes. (#26265)
 49  
 50  New RPCs
 51  --------
 52  
 53  - The scanblocks RPC returns the relevant blockhashes from a set of descriptors by
 54    scanning all blockfilters in the given range. It can be used in combination with
 55    the getblockheader and rescanblockchain RPCs to achieve fast wallet rescans. Note
 56    that this functionality can only be used if a compact block filter index
 57    (-blockfilterindex=1) has been constructed by the node. (#23549)
 58  
 59  Updated RPCs
 60  ------------
 61  
 62  - All JSON-RPC methods accept a new [named
 63    parameter](https://github.com/bitcoin/bitcoin/blob/master/doc/JSON-RPC-interface.md#parameter-passing) called `args` that can
 64    contain positional parameter values. This is a convenience to allow some
 65    parameter values to be passed by name without having to name every value. The
 66    python test framework and `bitcoin-cli` tool both take advantage of this, so
 67    for example:
 68  
 69  ```sh
 70  bitcoin-cli -named createwallet wallet_name=mywallet load_on_startup=1
 71  ```
 72  
 73  Can now be shortened to:
 74  
 75  ```sh
 76  bitcoin-cli -named createwallet mywallet load_on_startup=1
 77  ```
 78  
 79  - The `verifychain` RPC will now return `false` if the checks didn't fail,
 80    but couldn't be completed at the desired depth and level. This could be due
 81    to missing data while pruning, due to an insufficient dbcache or due to
 82    the node being shutdown before the call could finish. (#25574)
 83  
 84  - `sendrawtransaction` has a new, optional argument, `maxburnamount` with a default value of `0`.
 85    Any transaction containing an unspendable output with a value greater than `maxburnamount` will
 86    not be submitted. At present, the outputs deemed unspendable are those with scripts that begin
 87    with an `OP_RETURN` code (known as 'datacarriers'), scripts that exceed the maximum script size,
 88    and scripts that contain invalid opcodes.
 89  
 90  - The `testmempoolaccept` RPC now returns 2 additional results within the "fees" result:
 91    "effective-feerate" is the feerate including fees and sizes of transactions validated together if
 92    package validation was used, and also includes any modified fees from prioritisetransaction. The
 93    "effective-includes" result lists the wtxids of transactions whose modified fees and sizes were used
 94    in the effective-feerate (#26646).
 95  
 96  - `decodescript` may now infer a Miniscript descriptor under P2WSH context if it is not lacking
 97    information. (#27037)
 98  
 99  - `finalizepsbt` is now able to finalize a transaction with inputs spending Miniscript-compatible
100    P2WSH scripts. (#24149)
101  
102  Changes to wallet related RPCs can be found in the Wallet section below.
103  
104  Build System
105  ------------
106  
107  - The `--enable-upnp-default` and `--enable-natpmp-default` options
108    have been removed. If you want to use port mapping, you can
109    configure it using a .conf file, or by passing the relevant
110    options at runtime. (#26896)
111  
112  Updated settings
113  ----------------
114  
115  - If the `-checkblocks` or `-checklevel` options are explicitly provided by the
116  user, but the verification checks cannot be completed due to an insufficient
117  dbcache, Bitcoin Core will now return an error at startup. (#25574)
118  
119  - Ports specified in `-port` and `-rpcport` options are now validated at startup.
120    Values that previously worked and were considered valid can now result in errors. (#22087)
121  
122  - Setting `-blocksonly` will now reduce the maximum mempool memory
123    to 5MB (users may still use `-maxmempool` to override). Previously,
124    the default 300MB would be used, leading to unexpected memory usage
125    for users running with `-blocksonly` expecting it to eliminate
126    mempool memory usage.
127  
128    As unused mempool memory is shared with dbcache, this also reduces
129    the dbcache size for users running with `-blocksonly`, potentially
130    impacting performance.
131  - Setting `-maxconnections=0` will now disable `-dnsseed`
132    and `-listen` (users may still set them to override).
133  
134  Changes to GUI or wallet related settings can be found in the GUI or Wallet section below.
135  
136  New settings
137  ------------
138  
139  - The `shutdownnotify` option is used to specify a command to execute synchronously
140  before Bitcoin Core has begun its shutdown sequence. (#23395)
141  
142  
143  Wallet
144  ------
145  
146  - The `minconf` option, which allows a user to specify the minimum number
147  of confirmations a UTXO being spent has, and the `maxconf` option,
148  which allows specifying the maximum number of confirmations, have been
149  added to the following RPCs in #25375:
150    - `fundrawtransaction`
151    - `send`
152    - `walletcreatefundedpsbt`
153    - `sendall`
154  
155  - Added a new `next_index` field in the response in `listdescriptors` to
156    have the same format as `importdescriptors` (#26194)
157  
158  - RPC `listunspent` now has a new argument `include_immature_coinbase`
159    to include coinbase UTXOs that don't meet the minimum spendability
160    depth requirement (which before were silently skipped). (#25730)
161  
162  - Rescans for descriptor wallets are now significantly faster if compact
163    block filters (BIP158) are available. Since those are not constructed
164    by default, the configuration option "-blockfilterindex=1" has to be
165    provided to take advantage of the optimization. This improves the
166    performance of the RPC calls `rescanblockchain`, `importdescriptors`
167    and `restorewallet`. (#25957)
168  
169  - RPC `unloadwallet` now fails if a rescan is in progress. (#26618)
170  
171  - Wallet passphrases may now contain null characters.
172    Prior to this change, only characters up to the first
173    null character were recognized and accepted. (#27068)
174  
175  - Address Purposes strings are now restricted to the currently known values of "send",
176    "receive", and "refund". Wallets that have unrecognized purpose strings will have
177    loading warnings, and the `listlabels` RPC will raise an error if an unrecognized purpose
178    is requested. (#27217)
179  
180  - In the `createwallet`, `loadwallet`, `unloadwallet`, and `restorewallet` RPCs, the
181    "warning" string field is deprecated in favor of a "warnings" field that
182    returns a JSON array of strings to better handle multiple warning messages and
183    for consistency with other wallet RPCs. The "warning" field will be fully
184    removed from these RPCs in v26. It can be temporarily re-enabled during the
185    deprecation period by launching bitcoind with the configuration option
186    `-deprecatedrpc=walletwarningfield`. (#27279)
187  
188  - Descriptor wallets can now spend coins sent to P2WSH Miniscript descriptors. (#24149)
189  
190  GUI changes
191  -----------
192  
193  - The "Mask values" is a persistent option now. (gui#701)
194  - The "Mask values" option affects the "Transaction" view now, in addition to the
195    "Overview" one. (gui#708)
196  
197  REST
198  ----
199  
200  - A new `/rest/deploymentinfo` endpoint has been added for fetching various
201    state info regarding deployments of consensus changes. (#25412)
202  
203  Binary verification
204  ----
205  
206  - The binary verification script has been updated. In previous releases it
207    would verify that the binaries had been signed with a single "release key".
208    In this release and moving forward it will verify that the binaries are
209    signed by a _threshold of trusted keys_. For more details and
210    examples, see:
211    https://github.com/bitcoin/bitcoin/blob/master/contrib/verify-binaries/README.md
212    (#27358)
213  
214  Low-level changes
215  =================
216  
217  RPC
218  ---
219  
220  - The JSON-RPC server now rejects requests where a parameter is specified multiple
221    times with the same name, instead of silently overwriting earlier parameter values
222    with later ones. (#26628)
223  - RPC `listsinceblock` now accepts an optional `label` argument
224    to fetch incoming transactions having the specified label. (#25934)
225  - Previously `setban`, `addpeeraddress`, `walletcreatefundedpsbt`, methods
226    allowed non-boolean and non-null values to be passed as boolean parameters.
227    Any string, number, array, or object value that was passed would be treated
228    as false. After this change, passing any value except `true`, `false`, or
229    `null` now triggers a JSON value is not of expected type error. (#26213)
230  
231  Credits
232  =======
233  
234  Thanks to everyone who directly contributed to this release:
235  
236  - 0xb10c
237  - 721217.xyz
238  - @RandyMcMillan
239  - amadeuszpawlik
240  - Amiti Uttarwar
241  - Andrew Chow
242  - Andrew Toth
243  - Anthony Towns
244  - Antoine Poinsot
245  - Aurèle Oulès
246  - Ben Woosley
247  - Bitcoin Hodler
248  - brunoerg
249  - Bushstar
250  - Carl Dong
251  - Chris Geihsler
252  - Cory Fields
253  - David Gumberg
254  - dergoegge
255  - Dhruv Mehta
256  - Dimitris Tsapakidis
257  - dougEfish
258  - Douglas Chimento
259  - ekzyis
260  - Elichai Turkel
261  - Ethan Heilman
262  - Fabian Jahr
263  - FractalEncrypt
264  - furszy
265  - Gleb Naumenko
266  - glozow
267  - Greg Sanders
268  - Hennadii Stepanov
269  - hernanmarino
270  - ishaanam
271  - ismaelsadeeq
272  - James O'Beirne
273  - jdjkelly@gmail.com
274  - Jeff Ruane
275  - Jeffrey Czyz
276  - Jeremy Rubin
277  - Jesse Barton
278  - João Barbosa
279  - JoaoAJMatos
280  - John Moffett
281  - Jon Atack
282  - Jonas Schnelli
283  - jonatack
284  - Joshua Kelly
285  - josibake
286  - Juan Pablo Civile
287  - kdmukai
288  - klementtan
289  - Kolby ML
290  - kouloumos
291  - Kristaps Kaupe
292  - laanwj
293  - Larry Ruane
294  - Leonardo Araujo
295  - Leonardo Lazzaro
296  - Luke Dashjr
297  - MacroFake
298  - MarcoFalke
299  - Martin Leitner-Ankerl
300  - Martin Zumsande
301  - Matt Whitlock
302  - Matthew Zipkin
303  - Michael Ford
304  - Miles Liu
305  - mruddy
306  - Murray Nesbitt
307  - muxator
308  - omahs
309  - pablomartin4btc
310  - Pasta
311  - Pieter Wuille
312  - Pttn
313  - Randall Naar
314  - Riahiamirreza
315  - roconnor-blockstream
316  - Russell O'Connor
317  - Ryan Ofsky
318  - S3RK
319  - Sebastian Falbesoner
320  - Seibart Nedor
321  - sinetek
322  - Sjors Provoost
323  - Skuli Dulfari
324  - SomberNight
325  - Stacie Waleyko
326  - stickies-v
327  - stratospher
328  - Suhas Daftuar
329  - Suriyaa Sundararuban
330  - TheCharlatan
331  - Vasil Dimov
332  - Vasil Stoyanov
333  - virtu
334  - w0xlt
335  - willcl-ark
336  - yancy
337  - Yusuf Sahin HAMZA
338  
339  As well as to everyone that helped with translations on
340  [Transifex](https://www.transifex.com/bitcoin/bitcoin/).