|
| 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 | + |
| 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/). |
0 commit comments