Skip to content

Releases: bitcoinknots/bitcoin

Bitcoin Knots v29.2.knots20251110

10 Nov 06:56
v29.2.knots20251110

Choose a tag to compare

Bitcoin Knots version 29.2.knots20251110 is now available from:

https://bitcoinknots.org/files/29.x/29.2.knots20251110/

This release includes default configuration changes and various bug fixes.

Please report bugs using the issue tracker at GitHub:

https://github.com/bitcoinknots/bitcoin/issues

To receive security and update notifications, please subscribe to:

https://bitcoinknots.org/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 very old versions of Bitcoin Core or Knots is possible, but it might take some time if the data directory needs to be migrated. Old wallet versions of Bitcoin Knots are generally supported.

Compatibility

Bitcoin Knots is supported on operating systems using the Linux kernel, macOS 13+, and Windows 10+. It is not recommended to use Bitcoin Knots on unsupported systems.

Known Bugs

In various locations, including the GUI's transaction details dialog and the "vsize" result in many RPC results, transaction virtual sizes may not account for an unusually high number of sigops (ie, as determined by the -bytespersigop policy) or datacarrier penalties (ie, -datacarriercost). This could result in reporting a lower virtual size than is actually used for mempool or mining purposes.

Due to disruption of the shared Bitcoin Transifex repository, this release still does not include updated translations, and Bitcoin Knots may be unable to do so until/unless that is resolved.

Notable changes

  • The low severity service degradation vulnerability CVE-2025-46598 has been fixed.

  • The default policy for datacarriersize has been increased to allow 83 bytes. While not ideal, some legacy protocols still rely on 83-byte datacarrier outputs, and it is undesirable to risk breaking those as Knots adoption grows. This is expected to be a temporary adjustment until these older applications can be updated to not require extra data, and will be reverted back to 42 in a future version. Users with a preference are encouraged to explicitly set it themselves.

  • Memory pressure detection is no longer enabled by default. It has been found to misbehave in some configurations. If you wish to re-enable it, you can do so with the -lowmem=<n> configuration option.

Consensus

  • bitcoin#32473 Introduce per-txin sighash midstate cache for legacy/p2sh/segwitv0 scripts

Policy

  • Default policy: Increase datacarriersize to 83 bytes

P2P and network changes

  • bitcoin#33050 net, validation: don't punish peers for consensus-invalid txs
  • bitcoin#33105 validation: detect witness stripping without re-running Script checks
  • bitcoin#33738 log,blocks: avoid GetHash() work when logging is disabled
  • bitcoin#33813 Changing the rpcbind argument being ignored to a pop up warning, instead of a debug log

GUI

  • bitcoin#8501 GUI: MempoolStats: Use min relay fee when mempool has none
  • gui#901 qt: add createwallet and createwalletdescriptor to history filter

Wallet

  • bitcoin#31514 bugfix: disallow label for ranged descriptors & allow external non-ranged descriptors to have label

Block and transaction handling

Test

CI

  • bitcoin#33639 ci: Only write docker build images to Cirrus cache

Credits

Thanks to everyone who directly contributed to this release:

  • Ataraxia
  • /dev/fd0
  • Anthony Towns
  • Antoine Poinsot
  • Lőrinc
  • Luke Dashjr
  • MarcoFalke
  • Pieter Wuille
  • scgbckbone
  • WakeTrainDev

Bitcoin Knots v29.2.knots20251010

10 Oct 23:19
v29.2.knots20251010

Choose a tag to compare

Bitcoin Knots version 29.2.knots20251010 is now available from:

https://bitcoinknots.org/files/29.x/29.2.knots20251010/

This release includes various bug fixes and a new Dockerfile.

Please report bugs using the issue tracker at GitHub:

https://github.com/bitcoinknots/bitcoin/issues

To receive security and update notifications, please subscribe to:

https://bitcoinknots.org/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 very old versions of Bitcoin Core or Knots is possible, but it might take some time if the data directory needs to be migrated. Old wallet versions of Bitcoin Knots are generally supported.

Compatibility

Bitcoin Knots is supported on operating systems using the Linux kernel, macOS 13+, and Windows 10+. It is not recommended to use Bitcoin Knots on unsupported systems.

Known Bugs

In various locations, including the GUI's transaction details dialog and the "vsize" result in many RPC results, transaction virtual sizes may not account for an unusually high number of sigops (ie, as determined by the -bytespersigop policy) or datacarrier penalties (ie, -datacarriercost). This could result in reporting a lower virtual size than is actually used for mempool or mining purposes.

Due to disruption of the shared Bitcoin Transifex repository, this release still does not include updated translations, and Bitcoin Knots may be unable to do so until/unless that is resolved.

Notable changes

A new Dockerfile has been added to the source code release, under the contrib/docker directory. Please read the documentation for details.

Consensus

P2P and network changes

  • bitcoin#7219 Discontinue advertising NODE_REPLACE_BY_FEE service bit
  • bitcoin#15421 Bugfix: torcontrol: Use ephemeral config file rather than stdin
  • bitcoin#32646 p2p: Add witness mutation check inside FillBlock
  • bitcoin#33296 net: check for empty header before calling FillBlock
  • bitcoin#33311 net: Quiet down logging when router doesn't support natpmp/pcp
  • bitcoin#33338 net: Add interrupt to pcp retry loop
  • bitcoin#33395 net: do not apply whitelist permissions to onion inbounds
  • bitcoin#33464 p2p: Use network-dependent timers for inbound inv scheduling
  • knots#187 add Léo Haf DNS seed
  • Bugfix: torcontrol: Map bind-any to loopback address
  • Bugfix: net: Treat connections to the first normal bind as Tor when appropriate

GUI

  • gui#886 Avoid pathological QT text/markdown behavior...
  • knots#203 add migratewallet rpc in historyFilter
  • icon: Render macOS icns as a macOS-style icon

Wallet

  • knots#205 Bugfix: Wallet: Migration: Adapt sanity checks for walletimplicitsegwit=0

RPC

  • bitcoin#31785 Have createNewBlock() wait for tip, make rpc handle shutdown during long poll and wait methods
  • bitcoin#33446 rpc: fix getblock(header) returns target for tip
  • bitcoin#33475 bugfix: miner: fix addPackageTxs unsigned integer overflow
  • bitcoin#33484 doc: rpc: fix case typo in finalizepsbt help (final_scriptwitness)
  • knots#190 Add zsh completion script generation support
  • Interpret ignore_rejects=truc to ignore all TRUC policies

Block and transaction handling

  • bitcoin#31144 [IBD] multi-byte block obfuscation
  • bitcoin#31845 Bugfix: Correctly handle pruneduringinit=0 by treating it as manual-prune until sync completes

Index

  • bitcoin#33410 coinstats: avoid unnecessary Coin copy in ApplyHash

Test

  • bitcoin#33433 Bugfix: QA: rpc_bind: Skip nonloopback test if no such address is found

Mempool

RPC

CI

Doc

Misc

  • bitcoin#33310 trace: Workaround GCC bug compiling with old systemtap
  • bitcoin#33332 common: Make arith_uint256 trivially copyable
  • bitcoin#33340 Fix benchmark CSV output
  • bitcoin#33422 build: Remove lingering Windows registry & shortcuts
  • bitcoin#33482 contrib: fix macOS deployment with no translations
  • bitcoin#33494 depends: Update URL for qrencode package source tarball
  • bitcoin#33504 Mempool: Do not enforce TRUC checks on reorg
  • bitcoin#33511 init: Fix Ctrl-C shutdown hangs during wait calls
  • bitcoin#33580 depends: Use $(package)_file_name when downloading from the fallback
  • knots#171 Add Dockerfile
  • knots#192 depends: fetch miniupnpc sources from github releases
  • guix: Rename win64*-unsigned to win64*-pgpverifiable

Credits

Thanks to everyone who directly contributed to this release:

  • /dev/fd0
  • Amisha Chhajed
  • Ava Chow
  • Claudio Raimondi
  • David Gumberg
  • Eugene Siegel
  • Fabian Jahr
  • fanquake
  • glozow
  • Greg Sanders
  • Hennadii Stepanov
  • Hodlinator
  • ismaelsadeeq
  • laanwj
  • Léo Haf
  • Lőrinc
  • Luke Dashjr
  • Marcel Stampfer
  • MarcoFalke
  • Martin Zumsande
  • Max Edwards
  • Ryan Ofsky
  • sashass1315
  • Sebastian Falbesoner
  • Sjors Provoost
  • TheCharlatan
  • Trevor Arjeski
  • Vasil Dimov
  • Will Clark

Bitcoin Knots v29.1.knots20250903

04 Sep 03:12
v29.1.knots20250903

Choose a tag to compare

Bitcoin Knots version 29.1.knots20250903 is now available from:

https://bitcoinknots.org/files/29.x/29.1.knots20250903/

This release includes new features, various bug fixes and performance improvements.

Please report bugs using the issue tracker at GitHub:

https://github.com/bitcoinknots/bitcoin/issues

To receive security and update notifications, please subscribe to:

https://bitcoinknots.org/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 very old versions of Bitcoin Core or Knots is possible, but it might take some time if the data directory needs to be migrated. Old wallet versions of Bitcoin Knots are generally supported.

Compatibility

Bitcoin Knots is supported on operating systems using the Linux kernel, macOS 13+, and Windows 10+. It is not recommended to use Bitcoin Knots on unsupported systems.

Known Bugs

In various locations, including the GUI's transaction details dialog and the "vsize" result in many RPC results, transaction virtual sizes may not account for an unusually high number of sigops (ie, as determined by the -bytespersigop policy) or datacarrier penalties (ie, -datacarriercost). This could result in reporting a lower virtual size than is actually used for mempool or mining purposes.

Due to disruption of the shared Bitcoin Transifex repository, this release still does not include updated translations, and Bitcoin Knots may be unable to do so until/unless that is resolved.

Notable changes

P2P and Network Changes

  • libnatpmp has been replaced with a built-in implementation of PCP and NAT-PMP (still enabled or disabled using the -natpmp option). This supports automatic IPv4 port forwarding as well as IPv6 pinholing. (bitcoin#30043)

  • NAT-PMP is now enabled by default. This means nodes with -listen enabled (the default) but running behind a firewall, such as a local network router, will be reachable if the firewall/router supports either of the PCP or NAT-PMP protocols. It can be turned off with the -natpmp=0 option. (bitcoin#33004)

  • Upon receiving an orphan transaction (an unconfirmed transaction that spends unknown inputs), the node will attempt to download missing parents from all peers who announced the orphan. This change may increase bandwidth usage but make orphan-handling more reliable. (bitcoin#31397)

  • In addition to the count-based -blockreconstructionextratxn limit on cached transactions not accepted for relaying, a new -blockreconstructionextratxnsize option has been added to set an upper limit on the total memory usage consumed by this cache (10 MB by default).

  • The default -blockreconstructionextratxn limit is increased to 32768 transactions.

  • -peerbloomfilters is now restricted to localhost by default. If you use BIP37 wallet software remotely, you should use the -whitelist bloomfilter@<IP> configuration. You can also set -peerbloomfilters=0 to disable it for localhost, or -peerbloomfilters=1 if you wish to provide the service to the entire network. If you wish to offer it publicly, do note that this service can be resource-intensive.

Mempool Policy and Mining Changes

  • The -maxscriptsize policy now applies to the entire witness stack of each input, to address attempts to evade overly-specific targetting.

  • Ephemeral anchors is a new concept that allows a single dummy recipient in a transaction, provided the transaction is zero fee and the "anchor" is immediately sent in another transaction broadcast together with it. This allows for smart contracts such as Lightning where neither party can unilaterally increase the transaction fee, yet using an anchor can create a followup adding the necessary fee. (bitcoin#30239) By default, these anchors are accepted by Bitcoin Knots if and only if they are minimal size and zero value. If you want a more flexible policy (allowing for dummy sends and/or dust amounts), or wish to reject these new anchors entirely, you can use the new -permitephemeral option. There is also a -permitbareanchor option which permits (or forbids) transaction that do not have real recipients (only an anchor). (knots#136)

  • A new -permitbaredatacarrier option (default 0 / not permitted) has been added to control acceptance of transactions with only a datacarrier output and no real recipients. This is sometimes used to burn bitcoins. (knots#136)

  • The maximum number of potentially executed legacy signature operations in a single standard transaction is now limited (by default) to 2500. Signature operations in all previous output scripts, in all input scripts, as well as all P2SH redeem scripts (if there are any) are counted toward the limit. (bitcoin#32521) It can be configured with the -maxtxlegacysigops option.

  • A new option -acceptunknownwitness has been provided to filter transactions sending to/using unknown/future witness script versions. While this should generally be safe, it will also affect batch transactions, which may be created be unsuspecting third parties who do not pay attention to the witness version of addresses they send to (this is considered a best practice). For that reason, the new filter is not enabled by default, and if you wish to use it, you must set -acceptunknownwitness=0 in your configuration.

  • Two new options, -minrelaycoinblocks and -minrelaymaturity, have been added to restrict transactions relayed/mined to only ones spending bitcoins with some degree of settlement. The former measures the value of bitcoins being spent at a rate of 1 BTC per block since their confirmation, while the second is a strict block-based maturity metric. In both cases, the minimum must be met by transactions before the node will relay or mine them. These are both disabled by default. (knots#148)

  • Several policy filters exist to make future protocol changes safer, collectively classified as "non-mandatory-script-verify-flag" rejections. Unlike other policies, previous versions of Bitcoin Knots did not allow disabling these filters. However, this makes recovery difficult when people accidentally lock their bitcoins behind filtered "upgradable opcodes", and to accomidate recovery, this version of Knots allows specifying these rejection reasons to the ignore_rejects parameter of sendrawtransaction, thereby overriding the rejection on a per-transaction basis (as with other filters). Please be responsible with this feature, and note that using it during a network upgrade may result in creating invalid blocks and lost mining rewards!

  • The -rejecttokens and datacarrier-related policies have been updated to detect "OLGA" spam. (knots#151)

GUI changes

  • The configured "font for amounts" is now consistently used for all monetary amounts in the GUI.

  • The embedded "Roboto Mono Bold" font has been replaced with a new "OCR-Bitcoin" font created specifically for Bitcoin Knots.

  • Qt 6.2+ is now supported as an alternative to Qt 5.15 (which remains the default for precompiled releases). As the Qt project no longer supports version 5.15, it will likely be removed in a future release. To build the source code using Qt 6, specify -D WITH_QT_VERSION=6 to your cmake command line.

  • Support for ᵇTBC and ˢTBC units has been removed, since Bitcoin's value has made them largely unnecessary. The basic TBC unit is now available to all users without jumping through hoops to install a new Tonal-enabled font. See the Bitcoin Wiki page on Tonal Bitcoin to learn more about the (eccentric) tonal bitcoin unit(s).

Logging

Unconditional logging to disk is now rate limited by giving each source location a quota of 1MiB per hour. Unconditional logging is any logging with a log level higher than debug, that is info, warning, and error. All logs will be prefixed with [*] if there is at least one source location that is currently being suppressed. (bitcoin#32604)

When -logsourcelocations is enabled, the log output now contains the entire function signature instead of just the function name. (bitcoin#32604)

Updated RPCs

  • The RPC testmempoolaccept response now includes a reject-details field in some cases, similar to the complete error messages returned by sendrawtransaction (bitcoin#28121)

  • Duplicate blocks submitted with submitblock will now persist their block data even if it was previously pruned. If pruning is activated, the data will be pruned again eventually once the block file it is persisted in is selected for pruning. This is consistent with the behaviour of getblockfrompeer where the block is persisted as well even when pruning. (bitcoin#31175)

  • getmininginfo now returns nBits and the current target in the target field. It also returns a next object which specifies the height, nBits, difficulty, and target for the next block. (bitcoin#31583)

  • getblock and getblockheader now return the current target in the target field (bitcoin#31583)

  • getblockchaininfo and getchainstates now return nBits and the current target in the target field (bitcoin#31583)

  • The newly-unhidden waitfornewblock (which simply does not return until a new block has been received) now takes an optional current_tip argument to avoid a potential race between the new block and the RPC call. If provided, the RPC will return immediately if the best block already does not match. (bitcoin#30635)

  • waitforblock (which waits for a specific block hash before returning) and waitforblockheight (which waits for a given height to be reached) are no longer hidden. (bitcoin#30635)

  • The getblocktemplate RPC mintime (BIP23) field now accounts for the ...

Read more

Bitcoin Knots v28.1.knots20250305

06 Mar 17:54
v28.1.knots20250305

Choose a tag to compare

Bitcoin Knots version 28.1.knots20250305 is now available from:

https://bitcoinknots.org/files/28.x/28.1.knots20250305/

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/bitcoinknots/bitcoin/issues

To receive security and update notifications, please subscribe to:

https://bitcoinknots.org/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 very old versions of Bitcoin Core or Knots is possible,
but it might take some time if the data directory needs to be migrated. Old
wallet versions of Bitcoin Knots are generally supported.

Compatibility

Bitcoin Knots is supported on operating systems using the Linux kernel, macOS
11.0+, and Windows 7 and newer. It is not recommended to use Bitcoin Knots on
unsupported systems.

Known Bugs

In various locations, including the GUI's transaction details dialog and the
"vsize" result in many RPC results, transaction virtual sizes may not account
for an unusually high number of sigops (ie, as determined by the
-bytespersigop policy) or datacarrier penalties (ie, -datacarriercost).
This could result in reporting a lower virtual size than is actually used for
mempool or mining purposes.

Due to disruption of the shared Bitcoin Transifex repository, this release
still does not include updated translations, and Bitcoin Knots may be unable
to do so until/unless that is resolved.

Notable changes

P2P and Network Changes

  • Previously if Bitcoin Knots was listening for P2P connections, either using
    default settings or via bind=addr:port it would always also bind to
    127.0.0.1:8334 to listen for Tor connections. It was not possible to switch
    this off, even if the node didn't use Tor. This has been changed and now
    bind=addr:port results in binding on addr:port only. The default behavior
    of binding to 0.0.0.0:8333 and 127.0.0.1:8334 has not been changed.

    If you are using a bind=... configuration without bind=...=onion and rely
    on the previous implied behavior to accept incoming Tor connections at
    127.0.0.1:8334, you need to now make this explicit by using
    bind=... bind=127.0.0.1:8334=onion. (bitcoin#22729)

  • When the -port configuration option is used, the default onion listening
    port will now be derived to be that port + 1 instead of being set to a fixed
    value (8334 on mainnet). This enables setups with multiple local nodes using
    different -port and not using -bind.

    Note that a HiddenServicePort manually configured in torrc may need
    adjustment if used in connection with the -port option. For example, if you
    are using -port=5555 with a non-standard value and not using
    -bind=...=onion, previously Bitcoin Knots would listen for incoming Tor
    connections on 127.0.0.1:8334. Now it would listen on 127.0.0.1:5556
    (-port plus one). If you configured the hidden service manually in torrc
    now you have to change it from HiddenServicePort 8333 127.0.0.1:8334 to
    HiddenServicePort 8333 127.0.0.1:5556, or configure bitcoind with
    -bind=127.0.0.1:8334=onion to get the previous behavior. (bitcoin#31223)

  • Bitcoin Knots will now fail to start up if any of its P2P binds fail, rather
    than the previous behaviour where it would only abort startup if all P2P
    binds had failed. (bitcoin#22729)

  • Support for Testnet4 as specified in BIP94
    has been added. The network can be selected with the -testnet4 option and
    the section header is also named [testnet4].
    While the intention is to phase out support for Testnet3 in an upcoming
    version, support for it is still available via the known options in this
    release. (bitcoin#29775)

  • UNIX domain sockets can now be used for proxy connections. Set -onion or
    -proxy to the local socket path with the prefix unix: (e.g.
    -onion=unix:/home/me/torsocket). (bitcoin#27375)

  • Transactions having a feerate that is too low will be opportunistically
    paired with their child transactions and submitted as a package, thus
    enabling the node to download 1-parent-1-child packages using the existing
    transaction relay protocol. Combined with other mempool policies, this change
    allows limited "package relay" when a parent transaction is below the mempool
    minimum feerate. Warning: this P2P feature is limited (unlike the
    submitpackage interface, a child with multiple unconfirmed parents is not
    supported) and not reliable. (bitcoin#28970)

Mempool Policy Changes

  • Topologically Restricted Until Confirmation (TRUC) parents are now allowed
    to be below the minimum relay feerate (i.e., pay 0 fees).

  • Pay To Anchor (P2A) is a new standard witness output type for spending,
    a newly recognised output template. This allows for key-less anchor
    outputs, with compact spending conditions for additional efficiencies on
    top of an equivalent sh(OP_TRUE) output, in addition to the txid stability
    of the spending transaction.
    N.B. propagation of this output spending on the network will be limited
    until a sufficient number of nodes on the network adopt this upgrade.
    (bitcoin#30352)

  • Limited package RBF is now enabled, where the proposed conflicting package
    would result in a connected component, aka cluster, of size 2 in the mempool.
    All clusters being conflicted against must be of size 2 or lower. (bitcoin#28984)

GUI Changes

  • Transactions no longer show as confirmed after a mere 6 blocks. Instead, the
    confirmation period has been extended to 16 blocks, which is a safer duration
    given the current problematic state of mining centralisation. Note that if
    you wish to be secure against China/Bitmain, you should consider transactions
    unconfirmed for a full week.

  • The "Migrate Wallet" menu allows users to migrate any legacy wallet in their
    wallet directory, regardless of the wallets loaded. (gui#824)

  • A very basic block visualizer has been added to the Window menu. You can use
    it to see a graphic for any block at a glance, or block templates your node
    is generating for your miner.

Signed Messages

Bitcoin has the ability for the recipient of bitcoins to a given address to
sign messages, typically intended for use agreeing to terms. Due to confusion,
this feature has often been mis-used in an attempt to prove current ownership
of bitcoins or having sent a Bitcoin transaction. However, these message
signatures do not in fact reflect either ownership or who sent a transaction.
For this reason, message signing was not implemented for Segwit in hopes of a
better standard that never manifested. Nevertheless, being able to sign as the
recipient remains useful in some scenarios, so this version of Bitcoin Knots
extends it to support newer standards:

  • Verifying BIP 137, BIP 322, and Electrum signed messages is now supported.

  • When signing messages for a Segwit or Taproot address, a BIP 322 signature
    will be produced. (bitcoin#24058)

JSON-RPC 2.0 Support

The JSON-RPC server now recognizes JSON-RPC 2.0 requests and responds with
strict adherence to the specification.
See JSON-RPC-interface.md for details. (bitcoin#27101)

JSON-RPC clients may need to be updated to be compatible with the JSON-RPC
server. Please open an issue on GitHub if any compatibility issues are found.

Updated RPCs

  • The dumptxoutset RPC now returns the UTXO set dump in a new and improved
    format. Correspondingly, the loadtxoutset RPC now expects this new format
    in the dumps it tries to load. Dumps with the old format are no longer
    supported and need to be recreated using the new format to be usable.
    (bitcoin#29612)

  • The "warnings" field in getblockchaininfo, getmininginfo and
    getnetworkinfo now returns all the active node warnings as an array
    of strings, instead of a single warning. The current behaviour
    can be temporarily restored by running Bitcoin Knots with the configuration
    option -deprecatedrpc=warnings. (bitcoin#29845)

  • Previously when using the sendrawtransaction RPC and specifying outputs
    that are already in the UTXO set, an RPC error code of -27 with the
    message "Transaction already in block chain" was returned in response.
    The error message has been changed to "Transaction outputs already in utxo
    set" to more accurately describe the source of the issue. (bitcoin#30212)

  • The default mode for the estimatesmartfee RPC has been updated from
    conservative to economical, which is expected to reduce over-estimation
    for many users, particularly if Replace-by-Fee is an option. For users that
    require high confidence in their fee estimates at the cost of potentially
    over-estimating, the conservative mode remains available. (bitcoin#30275)

  • RPC submitpackage now allows 2 new arguments to be passed: maxfeerate and
    maxburnamount. See the submitpackage help for details. (bitcoin#28950)

  • The status action of the scanblocks RPC now returns an additional array
    "relevant_blocks" containing the matching block hashes found so far during
    a scan. (bitcoin#30713)

  • The utxoupdatepsbt method now accepts an optional third parameter,
    prevtxs, containing an array of previous transactions (in hex) spent in
    ...

Read more

Bitcoin Knots v27.1.knots20240801

04 Aug 03:07
v27.1.knots20240801

Choose a tag to compare

27.1 Release Notes

Bitcoin Knots version 27.1.knots20240801 is now available from:

https://bitcoinknots.org/files/27.x/27.1.knots20240801/

This release includes new features, various bug fixes, and performance improvements.

Please report bugs using the issue tracker at GitHub:

https://github.com/bitcoinknots/bitcoin/issues

To receive security and update notifications, please subscribe to:

https://bitcoinknots.org/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 very old versions of Bitcoin Core or Knots is possible, but it might take some time if the data directory needs to be migrated. Old wallet versions of Bitcoin Knots are generally supported.

Compatibility

Bitcoin Knots is supported on operating systems using the Linux kernel, macOS 11.0+, and Windows 7 and newer. It is not recommended to use Bitcoin Knots on unsupported systems.

Known Bugs

In various locations, including the GUI's transaction details dialog and the "vsize" result in many RPC results, transaction virtual sizes may not account for an unusually high number of sigops (ie, as determined by the -bytespersigop policy) or datacarrier penalties (ie, -datacarriercost). This could result in reporting a lower virtual size than is actually used for mempool or mining purposes.

Due to disruption of the shared Bitcoin Transifex repository, this release still does not include updated translations, and Bitcoin Knots may be unable to do so until/unless that is resolved.

Notable changes

P2P and network changes

  • The prior release re-enabled UPnP and NAT-PMP by default based on the understanding that it had been many years since the libraries for these had a vulnerability. It turns out, this is not the case, and out of an abundance of caution, it has been reverted back to disabled-by-default. If you can manually forward the p2p port to your node, that is recommended.

Updated RPCs

  • The sendall RPC now attempts to include more of the wallet's balance in cases where other transactions were recently sent and have not yet confirmed. (bitcoin#28979)

  • UTXOs returned by scantxoutset now include the blockhash (the transaction creating the UTXO was confirmed in), as well as the number of confirmations. (bitcoin#30515)

Updated REST APIs

  • Parameter validation for /rest/getutxos has been improved by rejecting truncated or overly large txids and malformed outpoint indices by raising an HTTP_BAD_REQUEST "Parse error". Previously, these malformed requests would be
    silently handled. (bitcoin#30482, bitcoin#30444)

Bitcoin Knots v27.1.knots20240621

23 Jun 14:43
v27.1.knots20240621

Choose a tag to compare

27.1 Release Notes

Bitcoin Knots version 27.1.knots20240621 is now available from:

https://bitcoinknots.org/files/27.x/27.1.knots20240621/

This release includes new features, various bug fixes, and performance
improvements.

Please report bugs using the issue tracker at GitHub:

https://github.com/bitcoinknots/bitcoin/issues

To receive security and update notifications, please subscribe to:

https://bitcoinknots.org/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 very old versions of Bitcoin Core or Knots is
possible, but it might take some time if the data directory needs to be migrated. Old
wallet versions of Bitcoin Knots are generally supported.

Compatibility

Bitcoin Knots is supported on operating systems using the Linux kernel,
macOS 11.0+, and Windows 7 and newer. It is not recommended to use
Bitcoin Knots on unsupported systems.

Known Bugs

In various locations, including the GUI's transaction details dialog and the
"vsize" result in many RPC results, transaction virtual sizes may not account
for an unusually high number of sigops (ie, as determined by the
-bytespersigop policy) or datacarrier penalties (ie, -datacarriercost).
This could result in reporting a lower virtual size than is actually used for
mempool or mining purposes.

Due to disruption of the shared Bitcoin Transifex repository, this release
still does not include updated translations, and Bitcoin Knots may be unable
to do so until/unless that is resolved.

Notable changes

P2P and network changes

  • As it has been several years since the last vulnerability in the port
    mapping frameworks used by Bitcoin Knots, 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. If you wish to disable these, you can set
    -natpmp=0 and -upnp=0 - or you may prefer to disable incoming
    connections altogether with -listen=0.

  • 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. (bitcoin#28956)

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. By default,
    Bitcoin Knots v27.1 will accept, relay, and mine v3 transactions without
    these additional restrictions. If you have configured -mempoolreplacement
    to require transactions to signal replacability, v3 transactions are
    considered replacable (as this is an explicit part of the TRUC request).
    The -mempooltruc option can be set to either enforce to impose the other
    requested restrictions, or to reject to restore the previous policy of
    rejecting v3 transactions entirely. (bitcoin#28948)

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). (bitcoin#27877)

Mining

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

Bitcoin Knots v26.1.knots20240513

14 May 03:09
v26.1.knots20240513

Choose a tag to compare

26.1 Release Notes

Bitcoin Knots version 26.1.knots20240513 is now available from:

https://bitcoinknots.org/files/26.x/26.1.knots20240513/

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/bitcoinknots/bitcoin/issues

To receive security and update notifications, please subscribe to:

https://bitcoinknots.org/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 very old versions of Bitcoin Core or Knots is
possible, but it might take some time if the data directory needs to be migrated. Old
wallet versions of Bitcoin Knots are generally supported.

Compatibility

Bitcoin Knots is supported on operating systems using the Linux kernel,
macOS 11.0+, and Windows 7 and newer. It is not recommended to use
Bitcoin Knots on unsupported systems.

Known Bugs

In various locations, including the GUI's transaction details dialog and the
"vsize" result in many RPC results, transaction virtual sizes may not account
for an unusually high number of sigops (ie, as determined by the
-bytespersigop policy). This could result in reporting a lower virtual size
than is actually used for mempool or mining purposes.

Due to disruption of the shared Bitcoin Transifex repository, this release
still does not include updated translations, and Bitcoin Knots may be unable
to do so until/unless that is resolved.

Notable changes

Node policy changes

  • A new non-standard token/asset protocol launched a few weeks ago ("Runes").
    Due to its lack of competent review, design flaws (as well as the relative
    worthlessness of the tokens at least when first minted) resulted in it being
    particularly spammy in practice. Some users have chosen to block all
    datacarrier transactions in an effort to mitigate this.

    To better address users' concerns, this release adds a new -rejecttokens
    policy filter (also available in the GUI) that will only block Runes
    transactions, thereby enabling users who choose to tolerate datacarrier
    otherwise to re-enable that policy. Note that it is not enabled by
    default at this time.

  • Similarly, a new policy filter has been added to block parasitic
    transactions. Many parasite transactions cannot be detected, but this new
    filter aims to do what it can when possible, currently just so-called
    "CAT-21" transactions built using the Ordinal attack. It is enabled by
    default, and can be disabled using -rejectparasites=0 (or in the GUI) if
    you wish to tolerate these. (knots#78)

  • The dust limit has historically required outputs to be at least three times
    the value they provide when later spent. The experimental dynamic adjustment
    function, however, was adjusting it based on exactly (1x) the value the
    output provides. To address this, you can now specify a multiplier by
    prefixing your policy by a number (with up to three decimal places) followed
    by an asterisk. So -dustdynamic=3.142*target:N will require outputs to be
    3.142 times the value they provide; or -dustdynamic=1*target:N will behave
    the same as previous versions for target:N. The default multiplier, if
    none is specified, is now three times as historically has been used. If you
    use this feature, please leave a comment about your experience on GitHub:
    #74

Updated RPCs

  • submitpackage now returns results with per-transaction errors rather than
    throwing an exception potentially obscuring other transactions being
    accepted. (bitcoin#28848)

  • getprioritisedtransactions now also includes "modified_fee" in results,
    with the sum of the real transaction fee and the fee delta. (bitcoin#28885)

  • getrawaddrman has been extended to include in the results for each entry
    "mapped_as" and "source_mapped_as". (bitcoin#30062)

Bitcoin Knots v26.1.knots20240325

27 Mar 02:44
v26.1.knots20240325

Choose a tag to compare

26.1 Release Notes

Bitcoin Knots version 26.1.knots20240325 is now available from:

https://bitcoinknots.org/files/26.x/26.1.knots20240325/

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/bitcoinknots/bitcoin/issues

To receive security and update notifications, please subscribe to:

https://bitcoinknots.org/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 very old versions of Bitcoin Core or Knots is possible, but it might take some time if the data directory needs to be migrated. Old wallet versions of Bitcoin Knots are generally supported.

Compatibility

Bitcoin Knots is supported on operating systems using the Linux kernel, macOS 11.0+, and Windows 7 and newer. It is not recommended to use Bitcoin Knots on unsupported systems.

Known Bugs

In various locations, including the GUI's transaction details dialog and the "vsize" result in many RPC results, transaction virtual sizes may not account for an unusually high number of sigops (ie, as determined by the -bytespersigop policy). This could result in reporting a lower virtual size than is actually used for mempool or mining purposes.

In the interest of time, this release does not include updated translations. Please comment on GitHub #73 if this is of particular importance to you or anyone you know. If nobody expresses interest in localization, it may continue to be skipped going forward.

Notable changes

Node policy changes

  • Spam is sometimes disguised to appear as if it is a deprecated pay-to-IP (bare pubkey) transaction, where the "key" is actually arbitrary data (not a real key) instead. Due to the nature of this spam, it pollutes not only the blockchain, but also permanently bloats the "UTXO set" all nodes must retain (it cannot be pruned). Real pay-to-IP was only ever supported by Satoshi's early Bitcoin wallet, which has been abandoned since 2011. This version of Bitcoin Knots filters out this kind of spam by default. A new setting, -permitbarepubkey (also available in the GUI), is available for users who desire to relay these. (bitcoin#29309)

  • Non-standard datacarrier formats are now filtered out by default. If you wish to re-enable relaying and mining them, you can set -acceptnonstddatacarrier=1

  • There is now experimental (and disabled by default) support for dynamically adjusting the "dust" spam filter threshold. It can be enabled in the GUI, or by configuring -dustdynamic=target:N to adjust based on a fee estimate for confirmation within N blocks, or -dustdynamic=mempool:N to adjust based on the worst fee in the best N kvB of your mempool. In either mode, the fee will be adjusted every 15 minutes (the first time not for 15 minutes after startup, in an effort to ensure estimators have sufficient data to work with). Implementation details (including how often adjustment occurs) may be changed in future releases. If you use this feature, please leave a comment about your experience on GitHub: #74

P2P and network changes

  • For several years now, miners have been regularly violating the Bitcoin protocol as it pertains to the block version bits, triggering warnings in Bitcoin Knots about softforks that aren't happening. While it would be inappropriate to simply concede a protocol change without community support, it's also confusing for users to see warnings that are inaccurate. To mitigate this, therefore, Bitcoin Knots is now more specific about when it warns about potential protocol changes, and only logs simple versionbit protocol violations in the debug log once for the specific block violating it.

  • Support for the v2 transport protocol defined in BIP324 was added. It is on by default and will be negotiated on a per-connection basis with other peers that support it, but can be disabled using -v2transport=0 if desired. The existing v1 transport protocol remains fully supported. (bitcoin#28331)

  • Nodes with multiple reachable networks will actively try to have at least one outbound connection to each network. This improves individual resistance to eclipse attacks and network level resistance to partition attacks. Users no longer need to perform active measures to ensure being connected to multiple enabled networks. (bitcoin#27213)

  • Support for I2P sessions encrypted using the newer and faster ECIES-X25519 algorithm has been added. (bitcoin#29200)

Pruning

  • When using assumeutxo with -prune, the prune budget may be exceeded if it is set lower than 1100MB (i.e. MIN_DISK_SPACE_FOR_BLOCK_FILES * 2). Prune budget is normally split evenly across each chainstate, unless the resulting prune budget per chainstate is beneath MIN_DISK_SPACE_FOR_BLOCK_FILES in which case that value will be used. (bitcoin#27596)

Updated RPCs

  • The maxfeerate option for sendrawtransaction and testmempoolaccept is now limited to below 100000 sats/vB to avoid overflow bugs. (bitcoin#29434)

  • Setting -rpcserialversion=0 is deprecated and will be removed in a future release. It can currently still be used by also adding the -deprecatedrpc=serialversion option. (bitcoin#28448)

  • The hash_serialized_2 value has been removed from gettxoutsetinfo since the value it calculated contained a bug and did not take all data into account. It is superseded by hash_serialized_3 which provides the same functionality but serves the correctly calculated hash. (bitcoin#28685)

  • For RPC methods which accept options parameters (importmulti, listunspent, fundrawtransaction, bumpfee, scanblocks, send, sendall, walletcreatefundedpsbt, simulaterawtransaction), it is now possible to pass the options as named parameters without the need for a nested object. (bitcoin#26485)

This means it is possible make calls like:

src/bitcoin-cli -named bumpfee txid fee_rate=100

instead of

src/bitcoin-cli -named bumpfee txid options='{"fee_rate": 100}'
  • New fields transport_protocol_type and session_id were added to the getpeerinfo RPC to indicate whether the v2 transport protocol is in use, and if so, what the session id is. (bitcoin#28331)

  • A new argument v2transport was added to the addnode RPC to indicate whether a v2 transaction connection is to be attempted with the peer. This breaks compatibility with the old privileged parameter used with Bitcoin Knots v0.16.0.knots20180322 through v0.20.1.knots20200815. If you were relying on this deprecated parameter, you can maintain the previous behaviour by specifying "outbound-full-relay" to the "connection_type" parameter. (bitcoin#28331)

  • Miniscript expressions can now be used in Taproot descriptors for all RPCs working with descriptors. (bitcoin#27255)

  • finalizepsbt is now able to finalize a PSBT with inputs spending Miniscript-compatible Taproot leaves. (bitcoin#27255)

  • The result from getpeerinfo now includes "misbehavior_score". This number is increased (by varying amounts) when a peer doesn't follow the protocol correctly, and when it reaches 100, the peer is disconnected. It is mostly only useful for testing purposes. (bitcoin#29530)

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

New RPCs

  • loadtxoutset has been added, which allows loading a UTXO snapshot of the format generated by dumptxoutset. Once this snapshot is loaded, its contents will be deserialized into a second chainstate data structure, which is then used to sync to the network's tip.

    Meanwhile, the original chainstate will complete the initial block download process in the background, eventually validating up to the block that the snapshot is based upon.

    The result is a usable bitcoind instance that is current with the network tip in a matter of minutes rather than hours. However, until the full background sync completes, the node and any wallets using it remain insecure and should not be trusted or relied
    on for confirmation of payment. (bitcoin#27596)

    You can find more information on this process in the assumeutxo design document (https://github.com/bitcoin/bitcoin/blob/master/doc/design/assumeutxo.md).

    getchainstates has been added to aid in monitoring the assumeutxo sync process.

  • A new RPC, submitpackage, has been added. It can be used to submit a list of raw hex transactions to the mempool to be evaluated as a package using consensus and mempool policy rules. These policies include package CPFP, allowing a child with high fees to bump a parent below the mempool minimum feerate (but not minimum relay feerate). (bitcoin#27609)

    • Warning: successful submission does not mean the transactions will propagate throughout the network, as package relay is not supported.

    • Not all features are available. The package is limited to a child with all of its unconfirmed parents, and no parent may spend the output of another parent. Also, package RBF is not supported. Refer to doc/policy/packages.md for more details on package policies and limitations.

    • This RPC is experimental. Its interface may change.

  • A new importmempool RPC has been added. It loads a valid mempool.dat file and attempts to add its contents to the mempool. This can be useful to import mempool data from another node wit...

Read more

Bitcoin Knots v25.1.knots20231115

10 Dec 16:29
v25.1.knots20231115

Choose a tag to compare

25.1 Release Notes

Bitcoin Knots version 25.1.knots20231115 is now available from:

https://bitcoinknots.org/files/25.x/25.1.knots20231115/

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/bitcoinknots/bitcoin/issues

To receive security and update notifications, please subscribe to:

https://bitcoinknots.org/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 very old versions of Bitcoin Core or Knots is
possible, but it might take some time if the data directory needs to be migrated. Old
wallet versions of Bitcoin Knots are generally supported.

Compatibility

Bitcoin Knots is supported on operating systems using the Linux kernel,
macOS 10.15+, and Windows 7 and newer. It is not recommended to use
Bitcoin Knots on unsupported systems.

Known Bugs

In various locations, including the GUI's transaction details dialog, transaction
virtual sizes may not account for an unusually high number of sigops (ie, as
determined by the -bytespersigop policy). This could result in reporting a
lower virtual size than is actually used for mempool or mining purposes.

In the interest of time, this release does not include updated translations.
Please open an issue on GitHub if this is of particular importance to you or
anyone you know. If nobody expresses interest in localization, it may continue
to be skipped going forward.

Notable changes

Security vulnerabilities fixed

Several security issues (CVEs CVE-2023-40257, CVE-2023-40258, and CVE-2023-40259)
were identified in the extended rpcauth wallet-restriction syntax, which is
intended to enable semi-trusted local applications using the Bitcoin Knots API to
access only specific wallets (or none at all) and not others. The full details of
these issues will be disclosed at a future time, but they have all been fixed in
this release.

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). (bitcoin#25717)

  • Enable parallel compact block downloads to mitigate temporary stalls from a slow peer. (bitcoin#27626)

  • The rate limit on transaction relay has been doubled to 14 transactions per
    second (35 tx/s for outbound connections) to better adapt to present network
    conditions. (bitcoin#28592)

  • Transactions of non-witness size 65 and above are now allowed by mempool
    and relay policy. This is to better reflect the actual afforded protections
    against CVE-2017-12842 and open up additional use-cases of smaller transaction sizes. (bitcoin#26265)

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

  • A new net permission forceinbound (set with -whitelist=forceinbound@...
    or -whitebind=forceinbound@...) is introduced that extends noban permissions.
    Inbound connections from hosts protected by forceinbound will now be more
    likely to connect even if maxconnections is reached and the node's inbound
    slots are full. This is achieved by attempting to force the eviction of a random,
    inbound, otherwise unprotected peer. RPC getpeerinfo will also now indicate
    forced_inbound. (bitcoin#27600)

  • The -datacarriersize policy limit has been updated to match newer style datacarrier
    transactions. (bitcoin#28408)

  • An additional -datacarriercost option has also been added to avoid giving the "segwit
    discount" to aribitrary data (and can be increased to require datacarrier transactions
    to pay higher fees).

  • The spam filters limiting smart contract code sizes for pre-Segwit and Segwit
    "v0" scripts have been expanded to also cover Taproot. Since the sizes were
    inconsistent, the lower size of 1650 which actually had a rationale has been
    used as the default for this release. The size limit can be adjusted with the
    new -maxscriptsize option. If you know of any legitimate scripts that are
    larger than the default, please report a bug.

New RPCs

  • A new getprioritisedtransactions RPC has been added. It returns a map of all fee deltas created by the
    user with prioritisetransaction, indexed by txid. The map also indicates whether each transaction is
    present in the mempool.

  • getaddrmaninfo has been added to view the distribution of addresses in the
    new and tried table of the node's address manager across different networks
    (ipv4, ipv6, onion, i2p, cjdns). The RPC returns count of addresses in new
    and tried table as well as their sum for all networks. (bitcoin#27511, bitcoin#28565)

Updated RPCs

  • The verifychain RPC will now return false if the checks didn't fail,
    but couldn't be completed at the desired depth and level. This could be due
    to missing data while pruning, due to an insufficient dbcache or due to
    the node being shutdown before the call could finish. (bitcoin#25574)

  • sendrawtransaction has a new, optional argument, maxburnamount with a default value of 0.
    Any transaction containing an unspendable output with a value greater than maxburnamount will
    not be submitted. At present, the outputs deemed unspendable are those with scripts that begin
    with an OP_RETURN code (known as 'datacarriers'), scripts that exceed the maximum script size,
    and scripts that contain invalid opcodes.

  • The testmempoolaccept RPC now returns 2 additional results within the "fees" result:
    "effective-feerate" is the feerate including fees and sizes of transactions validated together if
    package validation was used, and also includes any modified fees from prioritisetransaction. The
    "effective-includes" result lists the wtxids of transactions whose modified fees and sizes were used
    in the effective-feerate (bitcoin#26646).

  • decodescript may now infer a Miniscript descriptor under P2WSH context if it is not lacking
    information. (bitcoin#27037)

  • finalizepsbt is now able to finalize a transaction with inputs spending Miniscript-compatible
    P2WSH scripts. (bitcoin#24149)

  • The -deprecatedrpc=softforks configuration option has been removed. The
    RPC getblockchaininfo no longer returns the softforks field, which was
    previously deprecated in 23.0. (bitcoin#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.
    (bitcoin#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. (bitcoin#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.

  • RPC disconnectnode now accepts a subnet into address argument. (bitcoin#26576)

  • The output from getmempoolinfo is extended to include a rbf_policy key
    briefly describing the current replace-by-fee policy ("never", "optin", or
    "always").

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

Build System

  • The --enable-upnp-default and --enable-natpmp-default options
    have been removed. If you want to use port mapping, you can
    configure it using a .conf file, or by passing the relevant
    options at runtime. (bitcoin#26896)

Updated settings

  • If the -checkblocks or -checklevel options are explicitly provided by the
    user, but the verification checks cannot be completed due to an insufficient
    dbcache, Bitcoin Knots will now return an error at startup. (bitcoin#25574)

  • Setting -blocksonly will now reduce the maximum mempool memory
    t...

Read more

Bitcoin Knots v23.0.knots20220529

26 Feb 23:48

Choose a tag to compare

23.0 Release Notes

Bitcoin Knots version 23.0.knots20220529 is now available from:

https://bitcoinknots.org/files/23.x/23.0.knots20220529/

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/bitcoinknots/bitcoin/issues

To receive security and update notifications, please subscribe to:

https://bitcoinknots.org/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 Mac)
or bitcoind/bitcoin-qt (on Linux).

Upgrading directly from very old versions of Bitcoin Core or Knots is
possible, but it might take some time if the data directory needs to be migrated. Old
wallet versions of Bitcoin Knots are generally supported.

If you need to ensure your prior transaction mempool is preserved across the
upgrade (usually you don't), be sure you upgrade to and open Knots 0.21.1
prior to upgrading to 22.0 or later.

Compatibility

Bitcoin Knots is supported on operating systems using the Linux kernel,
macOS 10.15+, and Windows 7 and newer. It is not recommended to use
Bitcoin Knots on unsupported systems.

Notable changes

P2P and network changes

  • A bitcoind node will no longer rumour addresses to inbound peers by default.
    They will become eligible for address gossip after sending an ADDR, ADDRV2,
    or GETADDR message. (bitcoin#21528)

  • Before this release, Bitcoin Knots 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 Knots peers
    connecting to them. This preference has been removed. (bitcoin#23542)

  • Full support has been added for the CJDNS network. See the new option -cjdnsreachable and doc/cjdns.md (bitcoin#23077)

Fee estimation changes

  • Fee estimation now takes the feerate of replacement (RBF) transactions into
    account. (bitcoin#22539)

Rescan startup parameter removed

The -rescan startup parameter has been removed. Wallets which require
rescanning due to corruption will still be rescanned on startup.
Otherwise, please use the rescanblockchain RPC to trigger a rescan. (bitcoin#23123)

Tracepoints and Userspace, Statically Defined Tracing support

Bitcoin Knots release binaries for Linux now include experimental tracepoints which
act as an interface for process-internal events. These can be used for review,
debugging, monitoring, and more. The tracepoint API is semi-stable. While the API
is tested, process internals might change between releases requiring changes to the
tracepoints. Information about the existing tracepoints can be found under
doc/tracing.md and
usage examples are provided in contrib/tracing/.

Updated RPCs

  • The -deprecatedrpc=addresses configuration option has been removed. RPCs
    gettxout, getrawtransaction, decoderawtransaction, decodescript,
    gettransaction verbose=true and REST endpoints /rest/tx, /rest/getutxos,
    /rest/block no longer return the addresses and reqSigs fields, which
    were previously deprecated in 22.0. (bitcoin#22650)

  • The top-level fee fields fee, modifiedfee, ancestorfees and descendantfees
    returned by RPCs getmempoolentry,getrawmempool(verbose=true),
    getmempoolancestors(verbose=true) and getmempooldescendants(verbose=true)
    are deprecated and will be removed in the next major version (use
    -deprecated=fees if needed in this version). The same fee fields can be accessed
    through the fees object in the result. WARNING: deprecated
    fields ancestorfees and descendantfees are denominated in sats, whereas all
    fields in the fees object are denominated in BTC. (bitcoin#22689)

  • The return value of the pruneblockchain method had an off-by-one bug,
    returning the height of the block after the most recent pruned. This has
    been corrected, and it now returns the height of the last pruned block as
    documented.

  • A new require_checksum option has been added to the deriveaddress method
    to allow for specifying descriptors without first calculating a checksum for
    them. (bitcoin#24162)

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

New RPCs

  • Information on soft fork status has been moved from getblockchaininfo
    to the new getdeploymentinfo RPC which allows querying soft fork status at any
    block, rather than just at the chain tip. Inclusion of soft fork
    status in getblockchaininfo can currently be restored using the
    configuration -deprecatedrpc=softforks, but this will be removed in
    a future release. Note that in either case, the status field
    now reflects the status of the current block rather than the next
    block. (bitcoin#23508)

  • 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. (bitcoin#24118)

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

Files

  • On startup, the list of banned hosts and networks (via setban RPC) in
    banlist.dat is ignored and only banlist.json is considered. Bitcoin Knots
    version 22.x is the only version that can read banlist.dat and also write
    it to banlist.json. If banlist.json already exists, version 22.x will not
    try to translate the banlist.dat into json. After an upgrade, listbanned
    can be used to double check the parsed entries. (bitcoin#22570)

Updated settings

  • -maxuploadtarget now allows human readable byte units [k|K|m|M|g|G|t|T].
    E.g. -maxuploadtarget=500g. No whitespace, +- or fractions allowed.
    Default is M if no suffix provided. (bitcoin#23249)

Tools and Utilities

  • Update -getinfo to return data in a user-friendly format that also reduces vertical space. (bitcoin#21832)

  • CLI -addrinfo now returns a single field for the number of onion addresses
    known to the node instead of separate torv2 and torv3 fields, as support
    for Tor V2 addresses was removed from Bitcoin Knots in 22.0. (bitcoin#22544)

Wallet

  • Descriptor wallets are now the default wallet type. Newly created wallets
    will use descriptors unless descriptors=false is set during createwallet, or
    the Descriptor wallet checkbox is unchecked in the GUI.

    Note that wallet RPC commands like importmulti and dumpprivkey cannot be
    used with descriptor wallets, so if your client code relies on these commands
    without specifying descriptors=false during wallet creation, you will need
    to update your code.

  • Newly created descriptor wallets will contain an automatically generated tr()
    descriptor which allows for creating single key Taproot receiving addresses.

  • upgradewallet will now automatically flush the keypool if upgrading
    from a non-HD wallet to an HD wallet, to immediately start using the
    newly-generated HD keys. (bitcoin#23093)

  • a new RPC newkeypool has been added, which will flush (entirely
    clear and refill) the keypool. (bitcoin#23093)

  • lockunspent now optionally takes a third parameter, persistent, which
    causes the lock to be written persistently to the wallet database. This
    allows UTXOs to remain locked even after node restarts or crashes. (bitcoin#23065)

  • receivedby RPCs now include coinbase transactions. Previously, the
    following wallet RPCs excluded coinbase transactions: getreceivedbyaddress,
    getreceivedbylabel, listreceivedbyaddress, listreceivedbylabel. This
    release changes this behaviour and returns results accounting for received
    coins from coinbase outputs. The previous behaviour can be restored using the
    configuration -deprecatedrpc=exclude_coinbase, but may be removed in a
    future release. (bitcoin#14707)

  • A new option in the same receivedby RPCs, include_immature_coinbase
    (default=false), determines whether to account for immature coinbase
    transactions. Immature coinbase transactions are coinbase transactions that
    have 100 or fewer confirmations, and are not spendable. (bitcoin#14707)

  • The following RPCs: listtransactions, gettransaction and listsinceblock
    now include the wtxid of the transaction. (bitcoin#24198)

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

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

  • The fundrawtransaction, send, and walletcreatefundedpsbt RPC methods
    now accept minconf and maxconf options to limit selection of inputs to
    UTXOs with a range of blocks confirmed. The previous min_conf option which
    served the same purpose is deprecated and may be removed in a future
    version. (#22...

Read more