release-notes-26.0.md
1 26.0 Release Notes 2 ================== 3 4 Bitcoin Core version 26.0 is now available from: 5 6 <https://bitcoincore.org/bin/bitcoin-core-26.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 11.0+, 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 - Experimental support for the v2 transport protocol defined in 47 [BIP324](https://github.com/bitcoin/bips/blob/master/bip-0324.mediawiki) was added. 48 It is off by default, but when enabled using `-v2transport` it will be negotiated 49 on a per-connection basis with other peers that support it too. The existing 50 v1 transport protocol remains fully supported. 51 52 - Nodes with multiple reachable networks will actively try to have at least one 53 outbound connection to each network. This improves individual resistance to 54 eclipse attacks and network level resistance to partition attacks. Users no 55 longer need to perform active measures to ensure being connected to multiple 56 enabled networks. (#27213) 57 58 Pruning 59 ------- 60 61 - When using assumeutxo with `-prune`, the prune budget may be exceeded if it is set 62 lower than 1100MB (i.e. `MIN_DISK_SPACE_FOR_BLOCK_FILES * 2`). Prune budget is normally 63 split evenly across each chainstate, unless the resulting prune budget per chainstate 64 is beneath `MIN_DISK_SPACE_FOR_BLOCK_FILES` in which case that value will be used. (#27596) 65 66 Updated RPCs 67 ------------ 68 69 - Setting `-rpcserialversion=0` is deprecated and will be removed in 70 a future release. It can currently still be used by also adding 71 the `-deprecatedrpc=serialversion` option. (#28448) 72 73 - The `hash_serialized_2` value has been removed from `gettxoutsetinfo` since the value it 74 calculated contained a bug and did not take all data into account. It is superseded by 75 `hash_serialized_3` which provides the same functionality but serves the correctly calculated hash. (#28685) 76 77 - New fields `transport_protocol_type` and `session_id` were added to the `getpeerinfo` RPC to indicate 78 whether the v2 transport protocol is in use, and if so, what the session id is. 79 80 - A new argument `v2transport` was added to the `addnode` RPC to indicate whether a v2 transaction connection 81 is to be attempted with the peer. 82 83 - [Miniscript](https://bitcoin.sipa.be/miniscript/) expressions can now be used in Taproot descriptors for all RPCs working with descriptors. (#27255) 84 85 - `finalizepsbt` is now able to finalize a PSBT with inputs spending [Miniscript](https://bitcoin.sipa.be/miniscript/)-compatible Taproot leaves. (#27255) 86 87 Changes to wallet related RPCs can be found in the Wallet section below. 88 89 New RPCs 90 -------- 91 92 - `loadtxoutset` has been added, which allows loading a UTXO snapshot of the format 93 generated by `dumptxoutset`. Once this snapshot is loaded, its contents will be 94 deserialized into a second chainstate data structure, which is then used to sync to 95 the network's tip. 96 97 Meanwhile, the original chainstate will complete the initial block download process in 98 the background, eventually validating up to the block that the snapshot is based upon. 99 100 The result is a usable bitcoind instance that is current with the network tip in a 101 matter of minutes rather than hours. UTXO snapshot are typically obtained via 102 third-party sources (HTTP, torrent, etc.) which is reasonable since their contents 103 are always checked by hash. 104 105 You can find more information on this process in the `assumeutxo` design 106 document (<https://github.com/bitcoin/bitcoin/blob/master/doc/design/assumeutxo.md>). 107 108 `getchainstates` has been added to aid in monitoring the assumeutxo sync process. 109 110 - A new `getprioritisedtransactions` RPC has been added. It returns a map of all fee deltas created by the 111 user with prioritisetransaction, indexed by txid. The map also indicates whether each transaction is 112 present in the mempool. (#27501) 113 114 - A new RPC, `submitpackage`, has been added. It can be used to submit a list of raw hex 115 transactions to the mempool to be evaluated as a package using consensus and mempool policy rules. 116 These policies include package CPFP, allowing a child with high fees to bump a parent below the 117 mempool minimum feerate (but not minimum relay feerate). (#27609) 118 119 - Warning: successful submission does not mean the transactions will propagate throughout the 120 network, as package relay is not supported. 121 122 - Not all features are available. The package is limited to a child with all of its 123 unconfirmed parents, and no parent may spend the output of another parent. Also, package 124 RBF is not supported. Refer to doc/policy/packages.md for more details on package policies 125 and limitations. 126 127 - This RPC is experimental. Its interface may change. 128 129 - A new RPC `getaddrmaninfo` has been added to view the distribution of addresses in the new and tried table of the 130 node's address manager across different networks(ipv4, ipv6, onion, i2p, cjdns). The RPC returns count of addresses 131 in new and tried table as well as their sum for all networks. (#27511) 132 133 - A new `importmempool` RPC has been added. It loads a valid `mempool.dat` file and attempts to 134 add its contents to the mempool. This can be useful to import mempool data from another node 135 without having to modify the datadir contents and without having to restart the node. (#27460) 136 - Warning: Importing untrusted files is dangerous, especially if metadata from the file is taken over. 137 - If you want to apply fee deltas, it is recommended to use the `getprioritisedtransactions` and 138 `prioritisetransaction` RPCs instead of the `apply_fee_delta_priority` option to avoid 139 double-prioritising any already-prioritised transactions in the mempool. 140 141 Updated settings 142 ---------------- 143 144 - `bitcoind` and `bitcoin-qt` will now raise an error on startup 145 if a datadir that is being used contains a bitcoin.conf file that 146 will be ignored, which can happen when a datadir= line is used in 147 a bitcoin.conf file. The error message is just a diagnostic intended 148 to prevent accidental misconfiguration, and it can be disabled to 149 restore the previous behavior of using the datadir while ignoring 150 the bitcoin.conf contained in it. (#27302) 151 152 - Passing an invalid `-debug`, `-debugexclude`, or `-loglevel` logging configuration 153 option now raises an error, rather than logging an easily missed warning. (#27632) 154 155 Changes to GUI or wallet related settings can be found in the GUI or Wallet section below. 156 157 New settings 158 ------------ 159 160 Tools and Utilities 161 ------------------- 162 163 - A new `bitcoinconsensus_verify_script_with_spent_outputs` function is available in libconsensus which optionally accepts the spent outputs of the transaction being verified. 164 - A new `bitcoinconsensus_SCRIPT_FLAGS_VERIFY_TAPROOT` flag is available in libconsensus that will verify scripts with the Taproot spending rules. 165 166 Wallet 167 ------ 168 169 - Wallet loading has changed in this release. Wallets with some corrupted records that could be 170 previously loaded (with warnings) may no longer load. For example, wallets with corrupted 171 address book entries may no longer load. If this happens, it is recommended 172 load the wallet in a previous version of Bitcoin Core and import the data into a new wallet. 173 Please also report an issue to help improve the software and make wallet loading more robust 174 in these cases. (#24914) 175 176 - The `createwallet` RPC will no longer create legacy (BDB) wallets when 177 setting `descriptors=false` without also providing the 178 `-deprecatedrpc=create_bdb` option. This is because the legacy wallet is 179 being deprecated in a future release. (#28597) 180 181 - The `gettransaction`, `listtransactions`, `listsinceblock` RPCs now return 182 the `abandoned` field for all transactions. Previously, the "abandoned" field 183 was only returned for sent transactions. (#25158) 184 185 - The `listdescriptors`, `decodepsbt` and similar RPC methods now show `h` rather than apostrophe (`'`) to indicate 186 hardened derivation. This does not apply when using the `private` parameter, which 187 matches the marker used when descriptor was generated or imported. Newly created 188 wallets use `h`. This change makes it easier to handle descriptor strings manually. 189 E.g. the `importdescriptors` RPC call is easiest to use `h` as the marker: `'["desc": ".../0h/..."]'`. 190 With this change `listdescriptors` will use `h`, so you can copy-paste the result, 191 without having to add escape characters or switch `'` to 'h' manually. 192 Note that this changes the descriptor checksum. 193 For legacy wallets the `hdkeypath` field in `getaddressinfo` is unchanged, 194 nor is the serialization format of wallet dumps. (#26076) 195 196 - The `getbalances` RPC now returns a `lastprocessedblock` JSON object which contains the wallet's last processed block 197 hash and height at the time the balances were calculated. This result shouldn't be cached because importing new keys could invalidate it. (#26094) 198 199 - The `gettransaction` RPC now returns a `lastprocessedblock` JSON object which contains the wallet's last processed block 200 hash and height at the time the transaction information was generated. (#26094) 201 202 - The `getwalletinfo` RPC now returns a `lastprocessedblock` JSON object which contains the wallet's last processed block 203 hash and height at the time the wallet information was generated. (#26094) 204 205 - Coin selection and transaction building now accounts for unconfirmed low-feerate ancestor transactions. When it is necessary to spend unconfirmed outputs, the wallet will add fees to ensure that the new transaction with its ancestors will achieve a mining score equal to the feerate requested by the user. (#26152) 206 207 - For RPC methods which accept `options` parameters ((`importmulti`, `listunspent`, 208 `fundrawtransaction`, `bumpfee`, `send`, `sendall`, `walletcreatefundedpsbt`, 209 `simulaterawtransaction`), it is now possible to pass the options as named 210 parameters without the need for a nested object. (#26485) 211 212 This means it is possible make calls like: 213 214 ```sh 215 src/bitcoin-cli -named bumpfee txid fee_rate=100 216 ``` 217 218 instead of 219 220 ```sh 221 src/bitcoin-cli -named bumpfee txid options='{"fee_rate": 100}' 222 ``` 223 224 - The `deprecatedrpc=walletwarningfield` configuration option has been removed. 225 The `createwallet`, `loadwallet`, `restorewallet` and `unloadwallet` RPCs no 226 longer return the "warning" string field. The same information is provided 227 through the "warnings" field added in v25.0, which returns a JSON array of 228 strings. The "warning" string field was deprecated also in v25.0. (#27757) 229 230 - The `signrawtransactionwithkey`, `signrawtransactionwithwallet`, 231 `walletprocesspsbt` and `descriptorprocesspsbt` calls now return the more 232 specific RPC_INVALID_PARAMETER error instead of RPC_MISC_ERROR if their 233 sighashtype argument is malformed. (#28113) 234 235 - RPC `walletprocesspsbt`, and `descriptorprocesspsbt` return 236 object now includes field `hex` (if the transaction 237 is complete) containing the serialized transaction 238 suitable for RPC `sendrawtransaction`. (#28414) 239 240 - It's now possible to use [Miniscript](https://bitcoin.sipa.be/miniscript/) inside Taproot leaves for descriptor wallets. (#27255) 241 242 Descriptors 243 ----------- 244 245 - The usage of hybrid public keys in output descriptors has been removed. Hybrid 246 public keys are an exotic public key encoding not supported by output descriptors 247 (as specified in BIP380 and documented in doc/descriptors.md). Bitcoin Core would 248 previously incorrectly accept descriptors containing such hybrid keys. (#28587) 249 250 GUI changes 251 ----------- 252 253 - The transaction list in the GUI no longer provides a special category for "payment to yourself". Now transactions that have both inputs and outputs that affect the wallet are displayed on separate lines for spending and receiving. (gui#119) 254 255 - A new menu option allows migrating a legacy wallet based on keys and implied output script types stored in BerkeleyDB (BDB) to a modern wallet that uses descriptors stored in SQLite. (gui#738) 256 257 - The PSBT operations dialog marks outputs paying your own wallet with "own address". (gui#740) 258 259 - The ability to create legacy wallets is being removed. (gui#764) 260 261 Contrib 262 ------- 263 264 - Bash completion files have been renamed from `bitcoin*.bash-completion` to 265 `bitcoin*.bash`. This means completions can be automatically loaded on demand 266 based on invoked commands' names when they are put into the completion 267 directory (found with `pkg-config --variable=completionsdir 268 bash-completion`) without requiring renaming. (#28507) 269 270 Low-level changes 271 ================= 272 273 Tests 274 ----- 275 276 - Non-standard transactions are now disabled by default on testnet 277 for relay and mempool acceptance. The previous behaviour can be 278 re-enabled by setting `-acceptnonstdtxn=1`. (#28354) 279 280 Credits 281 ======= 282 283 Thanks to everyone who directly contributed to this release: 284 285 - 0xb10c 286 - Amiti Uttarwar 287 - Andrew Chow 288 - Andrew Toth 289 - Anthony Towns 290 - Antoine Poinsot 291 - Antoine Riard 292 - Ari 293 - Aurèle Oulès 294 - Ayush Singh 295 - Ben Woosley 296 - Brandon Odiwuor 297 - Brotcrunsher 298 - brunoerg 299 - Bufo 300 - Carl Dong 301 - Casey Carter 302 - Cory Fields 303 - David Álvarez Rosa 304 - dergoegge 305 - dhruv 306 - dimitaracev 307 - Erik Arvstedt 308 - Erik McKelvey 309 - Fabian Jahr 310 - furszy 311 - glozow 312 - Greg Sanders 313 - Harris 314 - Hennadii Stepanov 315 - Hernan Marino 316 - ishaanam 317 - ismaelsadeeq 318 - Jake Rawsthorne 319 - James O'Beirne 320 - John Moffett 321 - Jon Atack 322 - josibake 323 - kevkevin 324 - Kiminuo 325 - Larry Ruane 326 - Luke Dashjr 327 - MarcoFalke 328 - Marnix 329 - Martin Leitner-Ankerl 330 - Martin Zumsande 331 - Matthew Zipkin 332 - Michael Ford 333 - Michael Tidwell 334 - mruddy 335 - Murch 336 - ns-xvrn 337 - pablomartin4btc 338 - Pieter Wuille 339 - Reese Russell 340 - Rhythm Garg 341 - Ryan Ofsky 342 - Sebastian Falbesoner 343 - Sjors Provoost 344 - stickies-v 345 - stratospher 346 - Suhas Daftuar 347 - TheCharlatan 348 - Tim Neubauer 349 - Tim Ruffing 350 - Vasil Dimov 351 - virtu 352 - vuittont60 353 - willcl-ark 354 - Yusuf Sahin HAMZA 355 356 As well as to everyone that helped with translations on 357 [Transifex](https://www.transifex.com/bitcoin/bitcoin/).