Skip to content

Instantly share code, notes, and snippets.

@kouloumos
Created September 14, 2022 14:32
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kouloumos/662aa9c5d210cc542db37fec342bf821 to your computer and use it in GitHub Desktop.
Save kouloumos/662aa9c5d210cc542db37fec342bf821 to your computer and use it in GitHub Desktop.
24.0 Release Notes draft

[Draft] Release Notes

An aggregation of all the release notes that are currently in /doc. In preparation for Bitcoin Core 24.0 Release Candidate testing guide.

Notable changes

P2P and network changes

  • 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 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.

  • The listsinceblock, listtransactions and gettransaction output now contain a new parent_descs field for every "receive" entry.

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

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

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)

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

Updated settings

Changes to GUI or wallet related settings can be found in the GUI or Wallet section below.

New settings

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

Tools and Utilities

Wallet

  • 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.

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

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

  • The -walletrbf startup option will now default to true. The wallet will now default to opt-in RBF on transactions that it creates.

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.

GUI changes

  • A new menu item to restore a wallet from a backup file has been added

  • 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.

    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.

Low-level changes

RPC

  • The deriveaddresses, getdescriptorinfo, importdescriptors and scantxoutset commands now accept Miniscript expression within a wsh() descriptor.

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

Tests

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment