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