Bitcoin Core 24.0.1 Released

Bitcoin Core 24.0.1 Released
2022-12-13 21:17 ` Peter Todd
  
From: Michael Ford @ 2022-12-13 12:06 UTC (permalink / raw)
  To: bitcoin-dev

[-- Attachment #1: Type: text/plain, Size: 16550 bytes --]

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

Due to last-minute issues (https://github.com/bitcoin/bitcoin/pull/26616),
24.0, although tagged, was never fully announced or released.

Bitcoin Core version 24.0.1 is now available from:

  https://bitcoincore.org/bin/bitcoin-core-24.0.1/

Or through BitTorrent:


 magnet:?xt=urn:btih:d7604a67c8ed6e3b35da15138f8ac81d7618788c&dn=bitcoin-core-24.0.1&tr=udp%3A%2F%
2Ftracker.openbittorrent.com%3A80&tr=udp%3A%2F%2Ftracker.opentrackr.org
%3A1337%2Fannounce&tr=udp%3A%2F%2Ftracker.coppersurfer.tk
%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.leechers-paradise.org
%3A6969%2Fannounce&tr=udp%3A%2F%2Fexplodie.org%3A6969%2Fannounce&tr=udp%3A%2F%
2Ftracker.torrent.eu.org%3A451%2Fannounce&tr=udp%3A%2F%
2Ftracker.bitcoin.sprovoost.nl%3A6969

This release includes new features, various bug fixes and performance
improvements, as well as updated translations.

Please report bugs using the issue tracker at GitHub:

  <https://github.com/bitcoin/bitcoin/issues>

To receive security and update notifications, please subscribe to:

  <https://bitcoincore.org/en/list/announcements/join/>

How to Upgrade
==============

If you are running an older version, shut it down. Wait until it has
completely
shut down (which might take a few minutes in some cases), then run the
installer (on Windows) or just copy over `/Applications/Bitcoin-Qt` (on
macOS)
or `bitcoind`/`bitcoin-qt` (on Linux).

Upgrading directly from a version of Bitcoin Core that has reached its EOL
is
possible, but it might take some time if the data directory needs to be
migrated. Old
wallet versions of Bitcoin Core are generally supported.

Compatibility
==============

Bitcoin Core is supported and extensively tested on operating systems
using the Linux kernel, macOS 10.15+, and Windows 7 and newer.  Bitcoin
Core should also work on most other Unix-like systems but is not as
frequently tested on them.  It is not recommended to use Bitcoin Core on
unsupported systems.

Notice of new option for transaction replacement policies
=========================================================

This version of Bitcoin Core adds a new `mempoolfullrbf` configuration
option which allows users to change the policy their individual node
will use for relaying and mining unconfirmed transactions.  The option
defaults to the same policy that was used in previous releases and no
changes to node policy will occur if everyone uses the default.

Some Bitcoin services today expect that the first version of an
unconfirmed transaction that they see will be the version of the
transaction that ultimately gets confirmed---a transaction acceptance
policy sometimes called "first-seen".

The Bitcoin Protocol does not, and cannot, provide any assurance that
the first version of an unconfirmed transaction seen by a particular
node will be the version that gets confirmed.  If there are multiple
versions of the same unconfirmed transaction available, only the miner
who includes one of those transactions in a block gets to decide which
version of the transaction gets confirmed.

Despite this lack of assurance, multiple merchants and services today
still make this assumption.

There are several benefits to users from removing this *first-seen*
simplification.  One key benefit, the ability for the sender of a
transaction to replace it with an alternative version paying higher
fees, was realized in [Bitcoin Core 0.12.0][] (February 2016) with the
introduction of [BIP125][] opt-in Replace By Fee (RBF).

Since then, there has been discussion about completely removing the
first-seen simplification and allowing users to replace any of their
older unconfirmed transactions with newer transactions, a feature called
*full-RBF*.  This release includes a `mempoolfullrbf` configuration
option that allows enabling full-RBF, although it defaults to off
(allowing only opt-in RBF).

Several alternative node implementations have already enabled full-RBF by
default for years, and several contributors to Bitcoin Core are
advocating for enabling full-RBF by default in a future version of
Bitcoin Core.

As more nodes that participate in relay and mining begin enabling
full-RBF, replacement of unconfirmed transactions by ones offering higher
fees may rapidly become more reliable.

Contributors to this project strongly recommend that merchants and services
not accept unconfirmed transactions as final, and if they insist on doing
so,
to take the appropriate steps to ensure they have some recourse or plan for
when their assumptions do not hold.

[Bitcoin Core 0.12.0]:
https://bitcoincore.org/en/releases/0.12.0/#opt-in-replace-by-fee-transactions
[bip125]: https://github.com/bitcoin/bips/blob/master/bip-0125.mediawiki

Notable changes
===============

P2P and network changes
- - -----------------------

- - - To address a potential denial-of-service, the logic to download
headers
from peers
  has been reworked.  This is particularly relevant for nodes starting up
for the
  first time (or for nodes which are starting up after being offline for a
long time).

  Whenever headers are received from a peer that have a total chainwork
that is either
  less than the node's `-minimumchainwork` value or is sufficiently below
the work at
  the node's tip, a "presync" phase will begin, in which the node will
download the
  peer's headers and verify the cumulative work on the peer's chain, prior
to storing
  those headers permanently. Once that cumulative work is verified to be
sufficiently high,
  the headers will be redownloaded from that peer and fully validated and
stored.

  This may result in initial headers sync taking longer for new nodes
starting up for
  the first time, both because the headers will be downloaded twice, and
because the effect
  of a peer disconnecting during the presync phase (or while the node's
best headers chain has less
  than `-minimumchainwork`), will result in the node needing to use the
headers presync mechanism
  with the next peer as well (downloading the headers twice, again).
(#25717)

- - - With I2P connections, a new, transient address is used for each
outbound
  connection if `-i2pacceptincoming=0`. (#25355)

Updated RPCs
- - ------------

- - - The `-deprecatedrpc=softforks` configuration option has been removed.
The
  RPC `getblockchaininfo` no longer returns the `softforks` field, which was
  previously deprecated in 23.0. (#23508) Information on soft fork status is
  now only available via the `getdeploymentinfo` RPC.

- - - The `deprecatedrpc=exclude_coinbase` configuration option has been
removed.
  The `receivedby` RPCs (`listreceivedbyaddress`, `listreceivedbylabel`,
  `getreceivedbyaddress` and `getreceivedbylabel`) now always return results
  accounting for received coins from coinbase outputs, without an option to
  change that behaviour. Excluding coinbases was previously deprecated in
23.0.
  (#25171)

- - - The `deprecatedrpc=fees` configuration option has been removed. The
top-level
  fee fields `fee`, `modifiedfee`, `ancestorfees` and `descendantfees` are
no
  longer returned by RPCs `getmempoolentry`, `getrawmempool(verbose=true)`,
  `getmempoolancestors(verbose=true)` and
`getmempooldescendants(verbose=true)`.
  The same fee fields can be accessed through the `fees` object in the
result.
  The top-level fee fields were previously deprecated in 23.0. (#25204)

- - - The `getpeerinfo` RPC has been updated with a new `presynced_headers`
field,
  indicating the progress on the presync phase mentioned in the
  "P2P and network changes" section above.

Changes to wallet related RPCs can be found in the Wallet section below.

New RPCs
- - --------

- - - The `sendall` RPC spends specific UTXOs to one or more recipients
  without creating change. By default, the `sendall` RPC will spend
  every UTXO in the wallet. `sendall` is useful to empty wallets or to
  create a changeless payment from select UTXOs. When creating a payment
  from a specific amount for which the recipient incurs the transaction
  fee, continue to use the `subtractfeefromamount` option via the
  `send`, `sendtoaddress`, or `sendmany` RPCs. (#24118)

- - - A new `gettxspendingprevout` RPC has been added, which scans the
mempool to find
  transactions spending any of the given outpoints. (#24408)

- - - The `simulaterawtransaction` RPC iterates over the inputs and outputs
of the given
  transactions, and tallies up the balance change for the given wallet.
This can be
  useful e.g. when verifying that a coin join like transaction doesn't
contain unexpected
  inputs that the wallet will then sign for unintentionally. (#22751)

Updated REST APIs
- - -----------------

- - - The `/headers/` and `/blockfilterheaders/` endpoints have been updated
to use
  a query parameter instead of path parameter to specify the result count.
The
  count parameter is now optional, and defaults to 5 for both endpoints.
The old
  endpoints are still functional, and have no documented behaviour change.

  For `/headers`, use
  `GET /rest/headers/<BLOCK-HASH>.<bin|hex|json>?count=<COUNT=5>`
  instead of
  `GET /rest/headers/<COUNT>/<BLOCK-HASH>.<bin|hex|json>` (deprecated)

  For `/blockfilterheaders/`, use
  `GET
/rest/blockfilterheaders/<FILTERTYPE>/<BLOCK-HASH>.<bin|hex|json>?count=<COUNT=5>`
  instead of
  `GET
/rest/blockfilterheaders/<FILTERTYPE>/<COUNT>/<BLOCK-HASH>.<bin|hex|json>`
(deprecated)

  (#24098)

Build System
- - ------------

- - - Guix builds are now reproducible across architectures (x86_64 &
aarch64). (#21194)

New settings
- - ------------

- - - A new `mempoolfullrbf` option has been added, which enables the
mempool
to
  accept transaction replacement without enforcing BIP125 replaceability
  signaling. (#25353)

Wallet
- - ------

- - - The `-walletrbf` startup option will now default to `true`. The
  wallet will now default to opt-in RBF on transactions that it creates.
(#25610)

- - - The `replaceable` option for the `createrawtransaction` and
  `createpsbt` RPCs will now default to `true`. Transactions created
  with these RPCs will default to having opt-in RBF enabled. (#25610)

- - - The `wsh()` output descriptor was extended with Miniscript support.
You
can import Miniscript
  descriptors for P2WSH in a watchonly wallet to track coins, but you can't
spend from them using
  the Bitcoin Core wallet yet.
  You can find more about Miniscript on the [reference website](
https://bitcoin.sipa.be/miniscript/). (#24148)

- - - The `tr()` output descriptor now supports multisig scripts through the
`multi_a()` and
  `sortedmulti_a()` functions. (#24043)

- - - To help prevent fingerprinting transactions created by the Bitcoin
Core
wallet, change output
  amounts are now randomized. (#24494)

- - - The `listtransactions`, `gettransaction`, and `listsinceblock`
  RPC methods now include a wtxid field (hash of serialized transaction,
  including witness data) for each transaction. (#24198)

- - - The `listsinceblock`, `listtransactions` and `gettransaction` output
now contain a new
  `parent_descs` field for every "receive" entry. (#25504)

- - - A new optional `include_change` parameter was added to the
`listsinceblock` command.

- - - RPC `getreceivedbylabel` now returns an error, "Label not found
  in wallet" (-4), if the label is not in the address book. (#25122)

Migrating Legacy Wallets to Descriptor Wallets
- - ---------------------------------------------

An experimental RPC `migratewallet` has been added to migrate Legacy
(non-descriptor) wallets to
Descriptor wallets. More information about the migration process is
available in the
[documentation](
https://github.com/bitcoin/bitcoin/blob/master/doc/managing-wallets.md#migrating-legacy-wallets-to-descriptor-wallets
).

GUI changes
- - -----------

- - - A new menu item to restore a wallet from a backup file has been added
(gui#471).

- - - Configuration changes made in the bitcoin GUI (such as the pruning
setting,
proxy settings, UPNP preferences) are now saved to `<datadir>/settings.json`
file rather than to the Qt settings backend (windows registry or unix
desktop
config files), so these settings will now apply to bitcoind, instead of
being
ignored. (#15936, gui#602)

- - - Also, the interaction between GUI settings and `bitcoin.conf` settings
is
simplified. Settings from `bitcoin.conf` are now displayed normally in the
GUI
settings dialog, instead of in a separate warning message ("Options set in
this
dialog are overridden by the configuration file: -setting=value"). And these
settings can now be edited because `settings.json` values take precedence
over
`bitcoin.conf` values. (#15936)

Low-level changes
=================

RPC
- - ---

- - - The `deriveaddresses`, `getdescriptorinfo`, `importdescriptors` and
`scantxoutset` commands now
  accept Miniscript expression within a `wsh()` descriptor. (#24148)

- - - The `getaddressinfo`, `decodescript`, `listdescriptors` and
`listunspent` commands may now output
  a Miniscript descriptor inside a `wsh()` where a `wsh(raw())` descriptor
was previously returned. (#24148)

Credits
=======

Thanks to everyone who directly contributed to this release:

- - - /dev/fd0
- - - 0xb10c
- - - Adam Jonas
- - - akankshakashyap
- - - Ali Sherief
- - - amadeuszpawlik
- - - Andreas Kouloumos
- - - Andrew Chow
- - - Anthony Towns
- - - Antoine Poinsot
- - - Antoine Riard
- - - Aurèle Oulès
- - - avirgovi
- - - Ayush Sharma
- - - Baas
- - - Ben Woosley
- - - BrokenProgrammer
- - - brunoerg
- - - brydinh
- - - Bushstar
- - - Calvin Kim
- - - CAnon
- - - Carl Dong
- - - chinggg
- - - Cory Fields
- - - Daniel Kraft
- - - Daniela Brozzoni
- - - darosior
- - - Dave Scotese
- - - David Bakin
- - - dergoegge
- - - dhruv
- - - Dimitri
- - - dontbyte
- - - Duncan Dean
- - - eugene
- - - Eunoia
- - - Fabian Jahr
- - - furszy
- - - Gleb Naumenko
- - - glozow
- - - Greg Weber
- - - Gregory Sanders
- - - gruve-p
- - - Hennadii Stepanov
- - - hiago
- - - Igor Bubelov
- - - ishaanam
- - - Jacob P.
- - - Jadi
- - - James O'Beirne
- - - Janna
- - - Jarol Rodriguez
- - - Jeremy Rand
- - - Jeremy Rubin
- - - jessebarton
- - - João Barbosa
- - - John Newbery
- - - Jon Atack
- - - Josiah Baker
- - - Karl-Johan Alm
- - - KevinMusgrave
- - - Kiminuo
- - - klementtan
- - - Kolby Moroz
- - - kouloumos
- - - Kristaps Kaupe
- - - Larry Ruane
- - - Luke Dashjr
- - - MarcoFalke
- - - Marnix
- - - Martin Leitner-Ankerl
- - - Martin Zumsande
- - - Michael Dietz
- - - Michael Folkson
- - - Michael Ford
- - - Murch
- - - mutatrum
- - - muxator
- - - Oskar Mendel
- - - Pablo Greco
- - - pasta
- - - Patrick Strateman
- - - Pavol Rusnak
- - - Peter Bushnell
- - - phyBrackets
- - - Pieter Wuille
- - - practicalswift
- - - randymcmillan
- - - Robert Spigler
- - - Russell Yanofsky
- - - S3RK
- - - Samer Afach
- - - Sebastian Falbesoner
- - - Seibart Nedor
- - - Shashwat
- - - Sjors Provoost
- - - Smlep
- - - sogoagain
- - - Stacie
- - - Stéphan Vuylsteke
- - - Suhail Saqan
- - - Suhas Daftuar
- - - t-bast
- - - TakeshiMusgrave
- - - Vasil Dimov
- - - W. J. van der Laan
- - - w0xlt
- - - whiteh0rse
- - - willcl-ark
- - - William Casarin
- - - Yancy Ribbens

As well as to everyone that helped with translations on
[Transifex](https://www.transifex.com/bitcoin/bitcoin/).
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCAAdFiEEz7FuIclQ9n+pXlWPLuufXMCVJsEFAmOYaq4ACgkQLuufXMCV
JsH8DQ/+PFPSLM3lOL2yZAHMlXuEKbG8at/H+pXDjwDcZsKs+cuF1Z3JfR6VmAX9
OB8tOvBbqJklZd6GlCeDs4XsBAdXppy50fdZSQ6Dqh7N/+nERUT8GEwTtU11sL7W
vAVWhOmUn5fgCqOI/J2r4jjpZYMDys/NaCUYxmUF5Vm4JaJcs1JIfSUyHtQHdS6t
VIdqb8D2+9mXM7qXbJ6OzF9KzrKFcujRHGPzcTnDvF3kOYKlpjT8w6bfFiBeuSeo
G56X5CR61iXNU5W9HmHIKXBZv6Vnblc9cust7/5ESdgn6OMEnYghnaFSuMsWWAFd
OKAGbuzunh+G9wMl1JWWG4sVVWLDtz6jNwwUu+1a0wrFryYPaPnq/JK09VL32xJr
WKx6iNYqsEcno6kXfjSxLsQTIKzJw2T7iYaQCe8KTpYkaGitNzYMpEtFD68PU/gj
0LEf1sV+BgCuBR7hSBv31pse195Fd/wR71Yk4VVYx26u+82fIhK3ssyWxiiL6ycB
K7FK9Q4QCt0QlO30oD/y/YQMuyVoVCf71qgp5ZB4TehwP+U4qYTp8wiCej7ta0rY
vwjHbFZCYhzw05pIGE7bkbpGjdrnWK5ulaQztGAH6IXw0IPfsh9UJIr42VuXh1Nt
AH6dVC+VwKsr/FjPHuFaj7lwyGw831bKiePptaQYPN9MEELqZqI=
=5tAr
-----END PGP SIGNATURE-----

[-- Attachment #2: Type: text/html, Size: 18786 bytes --]

 permalink raw reply	[|nested]
2022-12-13 12:06 [bitcoin-dev] Bitcoin Core 24.0.1 Released Michael Ford

  2022-12-13 21:28   ` Matt Corallo
  
From: Peter Todd @ 2022-12-13 21:17 UTC (permalink / raw)
  To: Michael Ford, Bitcoin Protocol Discussion

[-- Attachment #1: Type: text/plain, Size: 1277 bytes --]

On Tue, Dec 13, 2022 at 12:06:47PM +0000, Michael Ford via bitcoin-dev wrote:
> Due to last-minute issues (https://github.com/bitcoin/bitcoin/pull/26616),
> 24.0, although tagged, was never fully announced or released.
> 
> Bitcoin Core version 24.0.1 is now available from:
> 
>   https://bitcoincore.org/bin/bitcoin-core-24.0.1/

Note that the PGP signature on this email is bad:

    [-- PGP output follows (current time: Tue 13 Dec 2022 04:15:30 PM EST) --]
    gpg: WARNING: no command supplied.  Trying to guess what you mean ...
    gpg: Signature made Tue 13 Dec 2022 07:06:06 AM EST
    gpg:                using RSA key CFB16E21C950F67FA95E558F2EEB9F5CC09526C1
    gpg: BAD signature from "Michael Ford (bitcoin-otc) <fanquake@gmail•com>" [full]
    [-- End of PGP output --]

    [-- BEGIN PGP SIGNED MESSAGE --]

    Due to last-minute issues (https://github.com/bitcoin/bitcoin/pull/26616),
    24.0, although tagged, was never fully announced or released.

The announcement on bitcoin-core-dev was had an invalid signature.

Likely some formatting error - your mail client also send it as text and html
at the same time. No-one should be sending html emails to this mailing list.

-- 
https://petertodd.org 'peter'[:-1]@petertodd.org

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

 permalink raw reply	[|nested]
2022-12-13 21:17 ` Peter Todd

  
From: Matt Corallo @ 2022-12-13 21:28 UTC ( / )
  To: Peter Todd, Bitcoin Protocol Discussion, Michael Ford

The signature verifies for me, however the email was sent HTML and the signature only verifies in 
plaintext, so I had to copy it into a text file. I've included the email as-verified below.

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

Due to last-minute issues (https://github.com/bitcoin/bitcoin/pull/26616),
24.0, although tagged, was never fully announced or released.

Bitcoin Core version 24.0.1 is now available from:

   https://bitcoincore.org/bin/bitcoin-core-24.0.1/

Or through BitTorrent:


  magnet:?xt=urn:btih:d7604a67c8ed6e3b35da15138f8ac81d7618788c&dn=bitcoin-core-24.0.1&tr=udp%3A%2F%
2Ftracker.openbittorrent.com%3A80&tr=udp%3A%2F%2Ftracker.opentrackr.org
%3A1337%2Fannounce&tr=udp%3A%2F%2Ftracker.coppersurfer.tk
%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.leechers-paradise.org
%3A6969%2Fannounce&tr=udp%3A%2F%2Fexplodie.org%3A6969%2Fannounce&tr=udp%3A%2F%
2Ftracker.torrent.eu.org%3A451%2Fannounce&tr=udp%3A%2F%
2Ftracker.bitcoin.sprovoost.nl%3A6969

This release includes new features, various bug fixes and performance
improvements, as well as updated translations.

Please report bugs using the issue tracker at GitHub:

   <https://github.com/bitcoin/bitcoin/issues>

To receive security and update notifications, please subscribe to:

   <https://bitcoincore.org/en/list/announcements/join/>

How to Upgrade
==============

If you are running an older version, shut it down. Wait until it has
completely
shut down (which might take a few minutes in some cases), then run the
installer (on Windows) or just copy over `/Applications/Bitcoin-Qt` (on
macOS)
or `bitcoind`/`bitcoin-qt` (on Linux).

Upgrading directly from a version of Bitcoin Core that has reached its EOL
is
possible, but it might take some time if the data directory needs to be
migrated. Old
wallet versions of Bitcoin Core are generally supported.

Compatibility
==============

Bitcoin Core is supported and extensively tested on operating systems
using the Linux kernel, macOS 10.15+, and Windows 7 and newer.  Bitcoin
Core should also work on most other Unix-like systems but is not as
frequently tested on them.  It is not recommended to use Bitcoin Core on
unsupported systems.

Notice of new option for transaction replacement policies
=========================================================

This version of Bitcoin Core adds a new `mempoolfullrbf` configuration
option which allows users to change the policy their individual node
will use for relaying and mining unconfirmed transactions.  The option
defaults to the same policy that was used in previous releases and no
changes to node policy will occur if everyone uses the default.

Some Bitcoin services today expect that the first version of an
unconfirmed transaction that they see will be the version of the
transaction that ultimately gets confirmed---a transaction acceptance
policy sometimes called "first-seen".

The Bitcoin Protocol does not, and cannot, provide any assurance that
the first version of an unconfirmed transaction seen by a particular
node will be the version that gets confirmed.  If there are multiple
versions of the same unconfirmed transaction available, only the miner
who includes one of those transactions in a block gets to decide which
version of the transaction gets confirmed.

Despite this lack of assurance, multiple merchants and services today
still make this assumption.

There are several benefits to users from removing this *first-seen*
simplification.  One key benefit, the ability for the sender of a
transaction to replace it with an alternative version paying higher
fees, was realized in [Bitcoin Core 0.12.0][] (February 2016) with the
introduction of [BIP125][] opt-in Replace By Fee (RBF).

Since then, there has been discussion about completely removing the
first-seen simplification and allowing users to replace any of their
older unconfirmed transactions with newer transactions, a feature called
*full-RBF*.  This release includes a `mempoolfullrbf` configuration
option that allows enabling full-RBF, although it defaults to off
(allowing only opt-in RBF).

Several alternative node implementations have already enabled full-RBF by
default for years, and several contributors to Bitcoin Core are
advocating for enabling full-RBF by default in a future version of
Bitcoin Core.

As more nodes that participate in relay and mining begin enabling
full-RBF, replacement of unconfirmed transactions by ones offering higher
fees may rapidly become more reliable.

Contributors to this project strongly recommend that merchants and services
not accept unconfirmed transactions as final, and if they insist on doing
so,
to take the appropriate steps to ensure they have some recourse or plan for
when their assumptions do not hold.

[Bitcoin Core 0.12.0]:
https://bitcoincore.org/en/releases/0.12.0/#opt-in-replace-by-fee-transactions
[bip125]: https://github.com/bitcoin/bips/blob/master/bip-0125.mediawiki

Notable changes
===============

P2P and network changes
- - -----------------------

- - - To address a potential denial-of-service, the logic to download headers
from peers
   has been reworked.  This is particularly relevant for nodes starting up
for the
   first time (or for nodes which are starting up after being offline for a
long time).

   Whenever headers are received from a peer that have a total chainwork
that is either
   less than the node's `-minimumchainwork` value or is sufficiently below
the work at
   the node's tip, a "presync" phase will begin, in which the node will
download the
   peer's headers and verify the cumulative work on the peer's chain, prior
to storing
   those headers permanently. Once that cumulative work is verified to be
sufficiently high,
   the headers will be redownloaded from that peer and fully validated and
stored.

   This may result in initial headers sync taking longer for new nodes
starting up for
   the first time, both because the headers will be downloaded twice, and
because the effect
   of a peer disconnecting during the presync phase (or while the node's
best headers chain has less
   than `-minimumchainwork`), will result in the node needing to use the
headers presync mechanism
   with the next peer as well (downloading the headers twice, again).
(#25717)

- - - With I2P connections, a new, transient address is used for each outbound
   connection if `-i2pacceptincoming=0`. (#25355)

Updated RPCs
- - ------------

- - - The `-deprecatedrpc=softforks` configuration option has been removed.
The
   RPC `getblockchaininfo` no longer returns the `softforks` field, which was
   previously deprecated in 23.0. (#23508) Information on soft fork status is
   now only available via the `getdeploymentinfo` RPC.

- - - The `deprecatedrpc=exclude_coinbase` configuration option has been
removed.
   The `receivedby` RPCs (`listreceivedbyaddress`, `listreceivedbylabel`,
   `getreceivedbyaddress` and `getreceivedbylabel`) now always return results
   accounting for received coins from coinbase outputs, without an option to
   change that behaviour. Excluding coinbases was previously deprecated in
23.0.
   (#25171)

- - - The `deprecatedrpc=fees` configuration option has been removed. The
top-level
   fee fields `fee`, `modifiedfee`, `ancestorfees` and `descendantfees` are
no
   longer returned by RPCs `getmempoolentry`, `getrawmempool(verbose=true)`,
   `getmempoolancestors(verbose=true)` and
`getmempooldescendants(verbose=true)`.
   The same fee fields can be accessed through the `fees` object in the
result.
   The top-level fee fields were previously deprecated in 23.0. (#25204)

- - - The `getpeerinfo` RPC has been updated with a new `presynced_headers`
field,
   indicating the progress on the presync phase mentioned in the
   "P2P and network changes" section above.

Changes to wallet related RPCs can be found in the Wallet section below.

New RPCs
- - --------

- - - The `sendall` RPC spends specific UTXOs to one or more recipients
   without creating change. By default, the `sendall` RPC will spend
   every UTXO in the wallet. `sendall` is useful to empty wallets or to
   create a changeless payment from select UTXOs. When creating a payment
   from a specific amount for which the recipient incurs the transaction
   fee, continue to use the `subtractfeefromamount` option via the
   `send`, `sendtoaddress`, or `sendmany` RPCs. (#24118)

- - - A new `gettxspendingprevout` RPC has been added, which scans the
mempool to find
   transactions spending any of the given outpoints. (#24408)

- - - The `simulaterawtransaction` RPC iterates over the inputs and outputs
of the given
   transactions, and tallies up the balance change for the given wallet.
This can be
   useful e.g. when verifying that a coin join like transaction doesn't
contain unexpected
   inputs that the wallet will then sign for unintentionally. (#22751)

Updated REST APIs
- - -----------------

- - - The `/headers/` and `/blockfilterheaders/` endpoints have been updated
to use
   a query parameter instead of path parameter to specify the result count.
The
   count parameter is now optional, and defaults to 5 for both endpoints.
The old
   endpoints are still functional, and have no documented behaviour change.

   For `/headers`, use
   `GET /rest/headers/<BLOCK-HASH>.<bin|hex|json>?count=<COUNT=5>`
   instead of
   `GET /rest/headers/<COUNT>/<BLOCK-HASH>.<bin|hex|json>` (deprecated)

   For `/blockfilterheaders/`, use
   `GET
/rest/blockfilterheaders/<FILTERTYPE>/<BLOCK-HASH>.<bin|hex|json>?count=<COUNT=5>`
   instead of
   `GET
/rest/blockfilterheaders/<FILTERTYPE>/<COUNT>/<BLOCK-HASH>.<bin|hex|json>`
(deprecated)

   (#24098)

Build System
- - ------------

- - - Guix builds are now reproducible across architectures (x86_64 &
aarch64). (#21194)

New settings
- - ------------

- - - A new `mempoolfullrbf` option has been added, which enables the mempool
to
   accept transaction replacement without enforcing BIP125 replaceability
   signaling. (#25353)

Wallet
- - ------

- - - The `-walletrbf` startup option will now default to `true`. The
   wallet will now default to opt-in RBF on transactions that it creates.
(#25610)

- - - The `replaceable` option for the `createrawtransaction` and
   `createpsbt` RPCs will now default to `true`. Transactions created
   with these RPCs will default to having opt-in RBF enabled. (#25610)

- - - The `wsh()` output descriptor was extended with Miniscript support. You
can import Miniscript
   descriptors for P2WSH in a watchonly wallet to track coins, but you can't
spend from them using
   the Bitcoin Core wallet yet.
   You can find more about Miniscript on the [reference website](
https://bitcoin.sipa.be/miniscript/). (#24148)

- - - The `tr()` output descriptor now supports multisig scripts through the
`multi_a()` and
   `sortedmulti_a()` functions. (#24043)

- - - To help prevent fingerprinting transactions created by the Bitcoin Core
wallet, change output
   amounts are now randomized. (#24494)

- - - The `listtransactions`, `gettransaction`, and `listsinceblock`
   RPC methods now include a wtxid field (hash of serialized transaction,
   including witness data) for each transaction. (#24198)

- - - The `listsinceblock`, `listtransactions` and `gettransaction` output
now contain a new
   `parent_descs` field for every "receive" entry. (#25504)

- - - A new optional `include_change` parameter was added to the
`listsinceblock` command.

- - - RPC `getreceivedbylabel` now returns an error, "Label not found
   in wallet" (-4), if the label is not in the address book. (#25122)

Migrating Legacy Wallets to Descriptor Wallets
- - ---------------------------------------------

An experimental RPC `migratewallet` has been added to migrate Legacy
(non-descriptor) wallets to
Descriptor wallets. More information about the migration process is
available in the
[documentation](
https://github.com/bitcoin/bitcoin/blob/master/doc/managing-wallets.md#migrating-legacy-wallets-to-descriptor-wallets
).

GUI changes
- - -----------

- - - A new menu item to restore a wallet from a backup file has been added
(gui#471).

- - - Configuration changes made in the bitcoin GUI (such as the pruning
setting,
proxy settings, UPNP preferences) are now saved to `<datadir>/settings.json`
file rather than to the Qt settings backend (windows registry or unix
desktop
config files), so these settings will now apply to bitcoind, instead of
being
ignored. (#15936, gui#602)

- - - Also, the interaction between GUI settings and `bitcoin.conf` settings
is
simplified. Settings from `bitcoin.conf` are now displayed normally in the
GUI
settings dialog, instead of in a separate warning message ("Options set in
this
dialog are overridden by the configuration file: -setting=value"). And these
settings can now be edited because `settings.json` values take precedence
over
`bitcoin.conf` values. (#15936)

Low-level changes
=================

RPC
- - ---

- - - The `deriveaddresses`, `getdescriptorinfo`, `importdescriptors` and
`scantxoutset` commands now
   accept Miniscript expression within a `wsh()` descriptor. (#24148)

- - - The `getaddressinfo`, `decodescript`, `listdescriptors` and
`listunspent` commands may now output
   a Miniscript descriptor inside a `wsh()` where a `wsh(raw())` descriptor
was previously returned. (#24148)

Credits
=======

Thanks to everyone who directly contributed to this release:

- - - /dev/fd0
- - - 0xb10c
- - - Adam Jonas
- - - akankshakashyap
- - - Ali Sherief
- - - amadeuszpawlik
- - - Andreas Kouloumos
- - - Andrew Chow
- - - Anthony Towns
- - - Antoine Poinsot
- - - Antoine Riard
- - - Aurèle Oulès
- - - avirgovi
- - - Ayush Sharma
- - - Baas
- - - Ben Woosley
- - - BrokenProgrammer
- - - brunoerg
- - - brydinh
- - - Bushstar
- - - Calvin Kim
- - - CAnon
- - - Carl Dong
- - - chinggg
- - - Cory Fields
- - - Daniel Kraft
- - - Daniela Brozzoni
- - - darosior
- - - Dave Scotese
- - - David Bakin
- - - dergoegge
- - - dhruv
- - - Dimitri
- - - dontbyte
- - - Duncan Dean
- - - eugene
- - - Eunoia
- - - Fabian Jahr
- - - furszy
- - - Gleb Naumenko
- - - glozow
- - - Greg Weber
- - - Gregory Sanders
- - - gruve-p
- - - Hennadii Stepanov
- - - hiago
- - - Igor Bubelov
- - - ishaanam
- - - Jacob P.
- - - Jadi
- - - James O'Beirne
- - - Janna
- - - Jarol Rodriguez
- - - Jeremy Rand
- - - Jeremy Rubin
- - - jessebarton
- - - João Barbosa
- - - John Newbery
- - - Jon Atack
- - - Josiah Baker
- - - Karl-Johan Alm
- - - KevinMusgrave
- - - Kiminuo
- - - klementtan
- - - Kolby Moroz
- - - kouloumos
- - - Kristaps Kaupe
- - - Larry Ruane
- - - Luke Dashjr
- - - MarcoFalke
- - - Marnix
- - - Martin Leitner-Ankerl
- - - Martin Zumsande
- - - Michael Dietz
- - - Michael Folkson
- - - Michael Ford
- - - Murch
- - - mutatrum
- - - muxator
- - - Oskar Mendel
- - - Pablo Greco
- - - pasta
- - - Patrick Strateman
- - - Pavol Rusnak
- - - Peter Bushnell
- - - phyBrackets
- - - Pieter Wuille
- - - practicalswift
- - - randymcmillan
- - - Robert Spigler
- - - Russell Yanofsky
- - - S3RK
- - - Samer Afach
- - - Sebastian Falbesoner
- - - Seibart Nedor
- - - Shashwat
- - - Sjors Provoost
- - - Smlep
- - - sogoagain
- - - Stacie
- - - Stéphan Vuylsteke
- - - Suhail Saqan
- - - Suhas Daftuar
- - - t-bast
- - - TakeshiMusgrave
- - - Vasil Dimov
- - - W. J. van der Laan
- - - w0xlt
- - - whiteh0rse
- - - willcl-ark
- - - William Casarin
- - - Yancy Ribbens

As well as to everyone that helped with translations on
[Transifex](https://www.transifex.com/bitcoin/bitcoin/).
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCAAdFiEEz7FuIclQ9n+pXlWPLuufXMCVJsEFAmOYaq4ACgkQLuufXMCV
JsH8DQ/+PFPSLM3lOL2yZAHMlXuEKbG8at/H+pXDjwDcZsKs+cuF1Z3JfR6VmAX9
OB8tOvBbqJklZd6GlCeDs4XsBAdXppy50fdZSQ6Dqh7N/+nERUT8GEwTtU11sL7W
vAVWhOmUn5fgCqOI/J2r4jjpZYMDys/NaCUYxmUF5Vm4JaJcs1JIfSUyHtQHdS6t
VIdqb8D2+9mXM7qXbJ6OzF9KzrKFcujRHGPzcTnDvF3kOYKlpjT8w6bfFiBeuSeo
G56X5CR61iXNU5W9HmHIKXBZv6Vnblc9cust7/5ESdgn6OMEnYghnaFSuMsWWAFd
OKAGbuzunh+G9wMl1JWWG4sVVWLDtz6jNwwUu+1a0wrFryYPaPnq/JK09VL32xJr
WKx6iNYqsEcno6kXfjSxLsQTIKzJw2T7iYaQCe8KTpYkaGitNzYMpEtFD68PU/gj
0LEf1sV+BgCuBR7hSBv31pse195Fd/wR71Yk4VVYx26u+82fIhK3ssyWxiiL6ycB
K7FK9Q4QCt0QlO30oD/y/YQMuyVoVCf71qgp5ZB4TehwP+U4qYTp8wiCej7ta0rY
vwjHbFZCYhzw05pIGE7bkbpGjdrnWK5ulaQztGAH6IXw0IPfsh9UJIr42VuXh1Nt
AH6dVC+VwKsr/FjPHuFaj7lwyGw831bKiePptaQYPN9MEELqZqI=
=5tAr
-----END PGP SIGNATURE-----

On 12/13/22 1:17 PM, Peter Todd via bitcoin-dev wrote:
> On Tue, Dec 13, 2022 at 12:06:47PM +0000, Michael Ford via bitcoin-dev wrote:
>> Due to last-minute issues (https://github.com/bitcoin/bitcoin/pull/26616),
>> 24.0, although tagged, was never fully announced or released.
>>
>> Bitcoin Core version 24.0.1 is now available from:
>>
>>    https://bitcoincore.org/bin/bitcoin-core-24.0.1/
> 
> Note that the PGP signature on this email is bad:
> 
>      [-- PGP output follows (current time: Tue 13 Dec 2022 04:15:30 PM EST) --]
>      gpg: WARNING: no command supplied.  Trying to guess what you mean ...
>      gpg: Signature made Tue 13 Dec 2022 07:06:06 AM EST
>      gpg:                using RSA key CFB16E21C950F67FA95E558F2EEB9F5CC09526C1
>      gpg: BAD signature from "Michael Ford (bitcoin-otc) <fanquake@gmail•com>" [full]
>      [-- End of PGP output --]
> 
>      [-- BEGIN PGP SIGNED MESSAGE --]
> 
>      Due to last-minute issues (https://github.com/bitcoin/bitcoin/pull/26616),
>      24.0, although tagged, was never fully announced or released.
> 
> The announcement on bitcoin-core-dev was had an invalid signature.
> 
> Likely some formatting error - your mail client also send it as text and html
> at the same time. No-one should be sending html emails to this mailing list.
> 
> 
> _______________________________________________
> bitcoin-dev mailing list
> bitcoin-dev@lists•linuxfoundation.org
> https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev