Bitcoin Core v27.0: BIP324 v2 Transport On by Default, New mempool.dat Format & More

Bitcoin Core is free and open-source software that serves as a bitcoin node (the set of which form the Bitcoin network) and provides a bitcoin wallet which fully verifies payments.

Bitcoin Core v27.0: BIP324 v2 Transport On by Default, New mempool.dat Format & More

What's new

  • libbitcoinconsensus is deprecated and will be removed for v28. This library has existed for nearly 10 years with very little known uptake or impact. It has become a maintenance burden.
    • "In the future, libbitcoinkernel will provide a much more useful API that is aware of the UTXO set, and therefore be able to fully validate transactions and blocks."
  • mempool.dat compatibility. The mempool.dat file created by -persistmempool or the savemempool RPC will be written in a new format. This new format includes the XOR'ing of transaction contents to mitigate issues where external programs (such as anti-virus) attempt to interpret and potentially modify the file."
    • This new format can not be read by previous software releases. To allow for a downgrade, a temporary setting -persistmempoolv1 has been added to fall back to the legacy format.

P2P and network changes

  • BIP324 v2 transport is now enabled by default. It remains possible to disable v2 by running with -v2transport=0.
  • Manual connection options (-connect-addnode and -seednode) will now follow -v2transport to connect with v2 by default. They will retry with v1 on failure.
  • Network-adjusted time has been removed from consensus code. It is replaced with (unadjusted) system time.
    • The warning for a large median time offset (70 minutes or more) is kept. This removes the implicit security assumption of requiring an honest majority of outbound peers, and increases the importance of the node operator ensuring their system time is (and stays) correct to not fall out of consensus with the network.

Mempool Policy Changes

  • Opt-in Topologically Restricted Until Confirmation (TRUC) Transactions policy (aka v3 transaction policy) is available for use on test networks when -acceptnonstdtxn=1 is set.

External Signing

  • Support for external signing on Windows has been disabled. It will be re-enabled once the underlying dependency (Boost Process), has been replaced with a different library.

Updated RPCs

  • The addnode RPC now follows the -v2transport option (now on by default, see above) for making connections. It remains possible to specify the transport type manually with the v2transport argument of addnode.

Build System

  • A C++20 capable compiler is now required to build Bitcoin Core.
  • MacOS releases are configured to use the hardened runtime libraries.

Wallet

  • The CoinGrinder coin selection algorithm has been introduced to mitigate unnecessary large input sets and lower transaction costs at high feerates. CoinGrinder searches for the input set with minimal weight. Solutions found by CoinGrinder will produce a change output. CoinGrinder is only active at elevated feerates (default: 30+ sat/vB, based on -consolidatefeerate×3).
  • The Branch And Bound coin selection algorithm will be disabled when the subtract fee from outputs feature is used.
  • If the birth time of a descriptor is detected to be later than the first transaction involving that descriptor, the birth time will be reset to the earlier time.

Low-level changes

  • Pruning. "When pruning during initial block download, more blocks will be pruned at each flush in order to speed up the syncing of such nodes."
  • Init. "Various fixes to prevent issues where subsequent instances of Bitcoin Core would result in deletion of files in use by an existing instance."
  • Improved handling of empty settings.json files.

GitHub Repo