Bitcoin Knots v27.1: CoinGrinder, Fixes & Improvements

Bitcoin Knots connects to the Bitcoin peer-to-peer network to download and fully validate blocks and transactions. It also includes a wallet and graphical user interface, which can be optionally built.

Bitcoin Knots v27.1: CoinGrinder, Fixes & Improvements
  • Bitcoin Knots v27.1 bitcoin node and wallet implementation has been released with the CoinGrinder coin selection algorithm, Experimental support for Opt-in Topologically Restricted Until Confirmation (TRUC) Transactions policy (aka v3 transaction policy), and a variety of other new features, various bug fixes, and performance improvements.

What's new

P2P and network changes

  • Both UPnP and NAT-PMP have been re-enabled by default when your node is configured to listen for incoming connections (which is also on by default). This helps automatically configure routers and VPNs to not block those incoming connections, making the network more resilient.
  • 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 reduces 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.

Node policy changes

  • Experimental support for Opt-in Topologically Restricted Until Confirmation (TRUC) Transactions policy (aka v3 transaction policy) is available. By setting the transaction version number to 3, TRUC transactions request some stricter relay filtering of themselves and related transactions.


  • 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 getblocktemplate RPC method's template request mode now accepts new parameters "blockmaxsize", "blockmaxweight", and "minfeerate" to override the configured parameters on a call-by-call basis. Setting these differently from their defaults will disable the internal template caching for now, so may be less efficient if you have multiple applications using getblocktemplate directly.
  • getblocktemplate (template request mode) also will now accept
    "skip_validity_test" in the list of client "capabilities."
    • If this is specified, the internal template validity safety check is skipped, and the new template (if one isn't already cached) will not be cached for future
      calls. It is recommended that this feature is not used unless you plan to
      follow up with a template proposal getblocktemplate call (defined in BIP 23).

Updated RPCs

  • disconnectnode now supports disconnecting by IP (without specifying a port
    number or subnet).
  • getrawaddrman will no longer include a dummy "mapped_as" nor
    "source_mapped_as" when an AS map has not been enabled.

Updated settings

  • The rpccookieperms setting has been simplified to values "owner", "group",
    or "all". The old octal permissions may still be used, but are deprecated
    and may be removed in a future version.

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 obfuscation of
    transaction contents to mitigate issues where external programs (such as
    anti-virus) attempt to interpret and potentially quarantine 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. (bitcoin#28207)

Build System

  • A C++20 capable compiler is now required to build Bitcoin Knots. (bitcoin#28349)

GitHub Repo