/ doc / release-notes / release-notes-26.0.md
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/).