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/).