/ doc / release-notes / release-notes-23.0.md
release-notes-23.0.md
  1  23.0 Release Notes
  2  ==================
  3  
  4  Bitcoin Core version 23.0 is now available from:
  5  
  6    <https://bitcoincore.org/bin/bitcoin-core-23.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 Mac)
 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  - A bitcoind node will no longer rumour addresses to inbound peers by default.
 47    They will become eligible for address gossip after sending an ADDR, ADDRV2,
 48    or GETADDR message. (#21528)
 49  
 50  - Before this release, Bitcoin Core had a strong preference to try to connect only to peers that listen on port 8333. As a result of that, Bitcoin nodes listening on non-standard ports would likely not get any Bitcoin Core peers connecting to them. This preference has been removed. (#23542)
 51  
 52  - Full support has been added for the CJDNS network. See the new option `-cjdnsreachable` and [doc/cjdns.md](https://github.com/bitcoin/bitcoin/tree/23.x/doc/cjdns.md) (#23077)
 53  
 54  Fee estimation changes
 55  ----------------------
 56  
 57  - Fee estimation now takes the feerate of replacement (RBF) transactions into
 58    account. (#22539)
 59  
 60  Rescan startup parameter removed
 61  --------------------------------
 62  
 63  The `-rescan` startup parameter has been removed. Wallets which require
 64  rescanning due to corruption will still be rescanned on startup.
 65  Otherwise, please use the `rescanblockchain` RPC to trigger a rescan. (#23123)
 66  
 67  Tracepoints and Userspace, Statically Defined Tracing support
 68  -------------------------------------------------------------
 69  
 70  Bitcoin Core release binaries for Linux now include experimental tracepoints which
 71  act as an interface for process-internal events. These can be used for review,
 72  debugging, monitoring, and more. The tracepoint API is semi-stable. While the API
 73  is tested, process internals might change between releases requiring changes to the
 74  tracepoints. Information about the existing tracepoints can be found under
 75  [doc/tracing.md](https://github.com/bitcoin/bitcoin/blob/23.x/doc/tracing.md) and
 76  usage examples are provided in [contrib/tracing/](https://github.com/bitcoin/bitcoin/tree/23.x/contrib/tracing).
 77  
 78  Updated RPCs
 79  ------------
 80  
 81  - The `validateaddress` RPC now returns an `error_locations` array for invalid
 82    addresses, with the indices of invalid character locations in the address (if
 83    known). For example, this will attempt to locate up to two Bech32 errors, and
 84    return their locations if successful. Success and correctness are only guaranteed
 85    if fewer than two substitution errors have been made.
 86    The error message returned in the `error` field now also returns more specific
 87    errors when decoding fails. (#16807)
 88  
 89  - The `-deprecatedrpc=addresses` configuration option has been removed.  RPCs
 90    `gettxout`, `getrawtransaction`, `decoderawtransaction`, `decodescript`,
 91    `gettransaction verbose=true` and REST endpoints `/rest/tx`, `/rest/getutxos`,
 92    `/rest/block` no longer return the `addresses` and `reqSigs` fields, which
 93    were previously deprecated in 22.0. (#22650)
 94  - The `getblock` RPC command now supports verbosity level 3 containing transaction inputs'
 95    `prevout` information.  The existing `/rest/block/` REST endpoint is modified to contain
 96    this information too. Every `vin` field will contain an additional `prevout` subfield
 97    describing the spent output. `prevout` contains the following keys:
 98    - `generated` - true if the spent coins was a coinbase.
 99    - `height`
100    - `value`
101    - `scriptPubKey`
102  
103  - The top-level fee fields `fee`, `modifiedfee`, `ancestorfees` and `descendantfees`
104    returned by RPCs `getmempoolentry`,`getrawmempool(verbose=true)`,
105    `getmempoolancestors(verbose=true)` and `getmempooldescendants(verbose=true)`
106    are deprecated and will be removed in the next major version (use
107    `-deprecated=fees` if needed in this version). The same fee fields can be accessed
108    through the `fees` object in the result. WARNING: deprecated
109    fields `ancestorfees` and `descendantfees` are denominated in sats, whereas all
110    fields in the `fees` object are denominated in BTC. (#22689)
111  
112  - Both `createmultisig` and `addmultisigaddress` now include a `warnings`
113    field, which will show a warning if a non-legacy address type is requested
114    when using uncompressed public keys. (#23113)
115  
116  Changes to wallet related RPCs can be found in the Wallet section below.
117  
118  New RPCs
119  --------
120  
121  - Information on soft fork status has been moved from `getblockchaininfo`
122    to the new `getdeploymentinfo` RPC which allows querying soft fork status at any
123    block, rather than just at the chain tip. Inclusion of soft fork
124    status in `getblockchaininfo` can currently be restored using the
125    configuration `-deprecatedrpc=softforks`, but this will be removed in
126    a future release. Note that in either case, the `status` field
127    now reflects the status of the current block rather than the next
128    block. (#23508)
129  
130  Files
131  -----
132  
133  * On startup, the list of banned hosts and networks (via `setban` RPC) in
134    `banlist.dat` is ignored and only `banlist.json` is considered. Bitcoin Core
135    version 22.x is the only version that can read `banlist.dat` and also write
136    it to `banlist.json`. If `banlist.json` already exists, version 22.x will not
137    try to translate the `banlist.dat` into json. After an upgrade, `listbanned`
138    can be used to double check the parsed entries. (#22570)
139  
140  Updated settings
141  ----------------
142  
143  - In previous releases, the meaning of the command line option
144    `-persistmempool` (without a value provided) incorrectly disabled mempool
145    persistence.  `-persistmempool` is now treated like other boolean options to
146    mean `-persistmempool=1`. Passing `-persistmempool=0`, `-persistmempool=1`
147    and `-nopersistmempool` is unaffected. (#23061)
148  
149  - `-maxuploadtarget` now allows human readable byte units [k|K|m|M|g|G|t|T].
150    E.g. `-maxuploadtarget=500g`. No whitespace, +- or fractions allowed.
151    Default is `M` if no suffix provided. (#23249)
152  
153  - If `-proxy=` is given together with `-noonion` then the provided proxy will
154    not be set as a proxy for reaching the Tor network. So it will not be
155    possible to open manual connections to the Tor network for example with the
156    `addnode` RPC. To mimic the old behavior use `-proxy=` together with
157    `-onlynet=` listing all relevant networks except `onion`. (#22834)
158  
159  Tools and Utilities
160  -------------------
161  
162  - Update `-getinfo` to return data in a user-friendly format that also reduces vertical space. (#21832)
163  
164  - CLI `-addrinfo` now returns a single field for the number of `onion` addresses
165    known to the node instead of separate `torv2` and `torv3` fields, as support
166    for Tor V2 addresses was removed from Bitcoin Core in 22.0. (#22544)
167  
168  Wallet
169  ------
170  
171  - Descriptor wallets are now the default wallet type. Newly created wallets
172    will use descriptors unless `descriptors=false` is set during `createwallet`, or
173    the `Descriptor wallet` checkbox is unchecked in the GUI.
174  
175    Note that wallet RPC commands like `importmulti` and `dumpprivkey` cannot be
176    used with descriptor wallets, so if your client code relies on these commands
177    without specifying `descriptors=false` during wallet creation, you will need
178    to update your code.
179  
180  - Newly created descriptor wallets will contain an automatically generated `tr()`
181    descriptor which allows for creating single key Taproot receiving addresses.
182  
183  - `upgradewallet` will now automatically flush the keypool if upgrading
184    from a non-HD wallet to an HD wallet, to immediately start using the
185    newly-generated HD keys. (#23093)
186  
187  - a new RPC `newkeypool` has been added, which will flush (entirely
188    clear and refill) the keypool. (#23093)
189  
190  - `listunspent` now includes `ancestorcount`, `ancestorsize`, and
191    `ancestorfees` for each transaction output that is still in the mempool.
192    (#12677)
193  
194  - `lockunspent` now optionally takes a third parameter, `persistent`, which
195    causes the lock to be written persistently to the wallet database. This
196    allows UTXOs to remain locked even after node restarts or crashes. (#23065)
197  
198  - `receivedby` RPCs now include coinbase transactions. Previously, the
199    following wallet RPCs excluded coinbase transactions: `getreceivedbyaddress`,
200    `getreceivedbylabel`, `listreceivedbyaddress`, `listreceivedbylabel`. This
201    release changes this behaviour and returns results accounting for received
202    coins from coinbase outputs. The previous behaviour can be restored using the
203    configuration `-deprecatedrpc=exclude_coinbase`, but may be removed in a
204    future release. (#14707)
205  
206  - A new option in the same `receivedby` RPCs, `include_immature_coinbase`
207    (default=`false`), determines whether to account for immature coinbase
208    transactions. Immature coinbase transactions are coinbase transactions that
209    have 100 or fewer confirmations, and are not spendable. (#14707)
210  
211  GUI changes
212  -----------
213  
214  - UTXOs which are locked via the GUI are now stored persistently in the
215    wallet database, so are not lost on node shutdown or crash. (#23065)
216  
217  - The Bech32 checkbox has been replaced with a dropdown for all address types, including the new Bech32m (BIP-350) standard for Taproot enabled wallets.
218  
219  Low-level changes
220  =================
221  
222  RPC
223  ---
224  
225  - `getblockchaininfo` now returns a new `time` field, that provides the chain tip time. (#22407)
226  
227  Tests
228  -----
229  
230  - For the `regtest` network the activation heights of several softforks were
231    set to block height 1. They can be changed by the runtime setting
232    `-testactivationheight=name@height`. (#22818)
233  
234  Credits
235  =======
236  
237  Thanks to everyone who directly contributed to this release:
238  
239  - 0xb10c
240  - 0xree
241  - Aaron Clauson
242  - Adrian-Stefan Mares
243  - agroce
244  - aitorjs
245  - Alex Groce
246  - amadeuszpawlik
247  - Amiti Uttarwar
248  - Andrew Chow
249  - Andrew Poelstra
250  - Andrew Toth
251  - anouar kappitou
252  - Anthony Towns
253  - Antoine Poinsot
254  - Arnab Sen
255  - Ben Woosley
256  - benthecarman
257  - Bitcoin Hodler
258  - BitcoinTsunami
259  - brianddk
260  - Bruno Garcia
261  - CallMeMisterOwl
262  - Calvin Kim
263  - Carl Dong
264  - Cory Fields
265  - Cuong V. Nguyen
266  - Darius Parvin
267  - Dhruv Mehta
268  - Dimitri Deijs
269  - Dimitris Apostolou
270  - Dmitry Goncharov
271  - Douglas Chimento
272  - eugene
273  - Fabian Jahr
274  - fanquake
275  - Florian Baumgartl
276  - fyquah
277  - Gleb Naumenko
278  - glozow
279  - Gregory Sanders
280  - Heebs
281  - Hennadii Stepanov
282  - hg333
283  - HiLivin
284  - Igor Cota
285  - Jadi
286  - James O'Beirne
287  - Jameson Lopp
288  - Jarol Rodriguez
289  - Jeremy Rand
290  - Jeremy Rubin
291  - Joan Karadimov
292  - John Newbery
293  - Jon Atack
294  - João Barbosa
295  - josibake
296  - junderw
297  - Karl-Johan Alm
298  - katesalazar
299  - Kennan Mell
300  - Kiminuo
301  - Kittywhiskers Van Gogh
302  - Klement Tan
303  - Kristaps Kaupe
304  - Kuro
305  - Larry Ruane
306  - lsilva01
307  - lucash-dev
308  - Luke Dashjr
309  - MarcoFalke
310  - Martin Leitner-Ankerl
311  - Martin Zumsande
312  - Matt Corallo
313  - Matt Whitlock
314  - MeshCollider
315  - Michael Dietz
316  - Murch
317  - naiza
318  - Nathan Garabedian
319  - Nelson Galdeman
320  - NikhilBartwal
321  - Niklas Gögge
322  - node01
323  - nthumann
324  - Pasta
325  - Patrick Kamin
326  - Pavel Safronov
327  - Pavol Rusnak
328  - Perlover
329  - Pieter Wuille
330  - practicalswift
331  - pradumnasaraf
332  - pranabp-bit
333  - Prateek Sancheti
334  - Prayank
335  - Rafael Sadowski
336  - rajarshimaitra
337  - randymcmillan
338  - ritickgoenka
339  - Rob Fielding
340  - Rojar Smith
341  - Russell Yanofsky
342  - S3RK
343  - Saibato
344  - Samuel Dobson
345  - sanket1729
346  - seaona
347  - Sebastian Falbesoner
348  - sh15h4nk
349  - Shashwat
350  - Shorya
351  - ShubhamPalriwala
352  - Shubhankar Gambhir
353  - Sjors Provoost
354  - sogoagain
355  - sstone
356  - stratospher
357  - Suriyaa Rocky Sundararuban
358  - Taeik Lim
359  - TheCharlatan
360  - Tim Ruffing
361  - Tobin Harding
362  - Troy Giorshev
363  - Tyler Chambers
364  - Vasil Dimov
365  - W. J. van der Laan
366  - w0xlt
367  - willcl-ark
368  - William Casarin
369  - zealsham
370  - Zero-1729
371  
372  As well as to everyone that helped with translations on
373  [Transifex](https://www.transifex.com/bitcoin/bitcoin/).