github bitcoinknots/bitcoin v29.3.knots20260507
Bitcoin Knots v29.3.knots20260507

4 hours ago

Bitcoin Knots version 29.3.knots20260507 is now available from:

https://bitcoinknots.org/files/29.x/29.3.knots20260507/

This release includes new features, default configuration changes, and various bug fixes. However, it does not support the upcoming BIP110/RDTS network upgrade (IMPORTANT INFORMATION BELOW).

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

Before upgrading, read the Reduced Data Temporary Softfork section below, and if you run the bitcoind server, be sure to add the consensusrules=rdts parameter to your bitcoin.conf file.

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.

NOT Supported: Reduced Data Temporary Softfork

This version of Bitcoin Knots does not support the upcoming BIP110 (RDTS) network upgrade, which fixes critical vulnerabilities in long-standing network design.

Important: Because this upgrade already has broad community support, continuing to run older versions (such as this version) does not reject it. Running outdated software after any network upgrade only leaves your node vulnerable to displaying fake or fraudulent transactions. To effectively reject this upgrade, you need to run alternative software designed to split away from the upgraded network.

To adopt this upgrade and remain secure, please update Bitcoin Knots:

https://bitcoinknots.org

For more information, see:

https://bitcoinknots.org/learn/2026-rdts

Notable changes

Default configuration changes

  • When -dbcache is not set explicitly, Bitcoin Knots now chooses a RAM-aware default between 100 MiB and 2 GiB. The selected -dbcache value is still used for both IBD and steady-state operation and unused mempool allocation may be shared with this cache. In environments with external memory limits (e.g. containers), automatic sizing may not match effective limits. The previous behavior can be restored by setting -dbcache explicitly. (bitcoin#34641)

New spam filters

  • Transactions creating outputs with a value less than the expected value to spend them (ie, "dust") are now treated by policy as if those outputs had a value at least meeting that threshold by having their effective fees reduced by the difference. This only affects transactions otherwise allowed by your node policy (it does not expand the range of accepted transactions), so typically this only applies to datacarrier or anchor outputs. It is enabled by default, and can be disabled with subdustfeepenalty=0 (or the GUI option) in your configuration. (knots#272)

  • Datacarrier policy options now match a newer variation of spam designed to bypass the prior implementation. (knots#292)

New features

  • The sweepprivkeys RPC method now looks for segwit (p2wpkh) and taproot (p2tr) UTXOs, in addition to the older p2pk and p2pkh formats. (knots#296)

  • "Sweep private key" dialog added to the GUI (File menu) for easy access. (knots#297)

P2P and network changes

  • Tor hidden services that are created automatically by Bitcoin Knots will have PoW defenses enabled if the Tor daemon supports that. (bitcoin#33414)

Change log

Wallet

  • bitcoin#30221 wallet: Ensure best block matches wallet scan state
  • bitcoin#31953 Bugfix: RPC/Wallet: bumpfee: Avoid nullptr dereference if transaction isn't in wallet
  • bitcoin#32580 wallet, test: best block locator matches scan state follow-ups
  • bitcoin#34603 wallet: Fix detection of symlinks on Windows
  • bitcoin#34642 wallet: call SyncWithValidationInterfaceQueue after disconnecting chain notifications
  • bitcoin#34870 wallet: feebumper, fix crash when combined bump fee is unavailable
  • bitcoin#34888 wallet: fix amount computed as boolean in coin selection
  • bitcoin#34959 wallet: Enforce BDB btree levels and overflow item sizes
  • bitcoin#35227 wallet: check the final BDB page LSN during migration
  • knots#266 external_signer: validate fingerprint is hex before shell command use
  • knots#267 codex32: early return on validation error to prevent OOB read
  • knots#269 Wallet: When about to cleanup an empty directory that isn't empty, log it

Block and transaction handling

  • bitcoin#29640 Bugfix: validation: Reinsert the correct CBlockIndex in Chainstate::LoadChainTip
  • bitcoin#33333 coins: warn on oversized -dbcache
  • bitcoin#34692 Bump dbcache to 1 GiB
  • bitcoin#34641 node: scale default -dbcache with system RAM
  • bitcoin#35209 validation: correct lifetime of precomputed tx data
  • knots#268 Saturate CalculateExtraTxWeight and cap GUI datacarriercost to 1024
  • knots#272 Policy: Penalize effective fee for sub-dust outputs
  • knots#292 policy: add 'opnet' to datacarriersize

Networking

  • bitcoin#33414 tor: enable PoW defenses for automatically created hidden services
  • bitcoin#34093 netif: fix compilation warning in QueryDefaultGatewayImpl()
  • bitcoin#35087 tor: limit torcontrol line size that is processed to prevent OOM
  • bitcoin#35116 net: cleanup SOCKS5 auth logging
  • bitcoin#35117 i2p: clean up SESSION CREATE error logging
  • secp256k1#1821 ellswift: fix overflow flag handling in secp256k1_ellswift_xdh
  • torcontrol: Enforce MAX_LINE_LENGTH even on completed lines
  • Bugfix: torcontrol: Attempt to reconnect after MAX_LINE_LENGTH-triggered disconnection
  • chainparams: Remove DNS seed hosted by PT

GUI

  • bitcoin#34767 Bugfix: GUI/Intro: Handle errors from SelectParams the same as if during InitConfig
  • gui#929 Use plurals where necessary
  • gui#935 bugfix: truncate header sync percentage
  • knots#214 feat(qt): add /clearhistory command
  • knots#215 GUI: Port Windows taskbar progress to COM
  • knots#277 banman: schedule sweep at ban expiry instead of polling
  • knots#287 qt: warn when script threads exceed CPU cores
  • knots#289 Inform user of upcoming RDTS softfork and lack of enforcement by this software
  • knots#288 qt: Expand sync progress bar in status bar
  • knots#297 qt: Add sweep private key dialog
  • Recognise service bit 27 as NODE_REDUCED_DATA / "REDUCED_DATA?"

REST & RPC

  • bitcoin#29016 Bugfix: rest: Handle /rest/mempool/transactions parse error
  • bitcoin#34988 rpc: fix initialization-order-fiasco by lazy-init of decodepsbt_inputs
  • knots#294 blockstorage: fix unsigned underflow in GetBlockFileInfo bounds check
  • knots#296 rpc: add segwit and taproot support to sweepprivkeys

PSBT

  • bitcoin#34893 psbt: preserve proprietary fields when combining PSBTs

Build

  • bitcoin#34612 leveldb: remove unused files
  • bitcoin#34776 guix: Make guix-clean more careful
  • bitcoin#35197 guix: add -Wl,--icf=safe to darwin build
  • build: Workaround incompatibilities with Boost 1.91
  • depends: bump miniupnpc to 2.3.4_pre20260407
  • Bugfix: build: If sanitizers are enabled, we cannot link with --no-undefined
  • Bugfix: libbitcoinkernel: Add missing external_lib_interface

Documentation

  • bitcoin#34561 wallet: rpc: manpage: fix example missing fee_rate argument
  • bitcoin#34702 doc: Fix fee field in getblock RPC result
  • bitcoin#35076 doc: clarify pruning impact on wallet sync
  • knots#262 init: improve error message when index needs pruned block data
  • CTxMemPoolEntry: Document when GetPriority might have a currentHeight < cachedHeight or go slightly negative

Test

  • bitcoin#33118 test: fix anti-fee-sniping off-by-one error
  • bitcoin#34158 QA: Add tests for torcontrol
  • bitcoin#34589 test: Scale feature_dbcrash.py timeout with factor
  • bitcoin#34622 test: assert_debug_log timeouts follow-up
  • bitcoin#35161 test: check merkle mutation root invariant
  • bitcoin#35164 test: cover P2SH sigop counting in test_witness_sigops
  • bitcoin#35218 test: fix P2SH script in coins cache fuzz target
  • Bugfix: fuzz/wallet_bdb_parser: SeedRandomStateForTest is needed for IsDirWritable check

Misc

Credits

Thanks to everyone who contributed to this release, including but not necessarily limited to:

  • Andrew Toth
  • Antoine Poinsot
  • Ava Chow
  • BitcoinMechanic
  • Bortlesboat
  • David Gumberg
  • Eugene Siegel
  • Fabian Jahr
  • fanquake
  • furszy
  • gzJx0DuTRHytnHe7P5RmMbPf3wKy2BztweVGXTf
  • Hennadii Stepanov
  • Hodlinator
  • Íñigo Aréjula Aísa
  • ishaanam
  • ismaelsadeeq
  • janb84
  • Kyle Santiago
  • Léo Haf
  • Lőrinc
  • Luke Dashjr
  • MarcoFalke
  • Memetic Money
  • Musa Haruna
  • nervana21
  • optout
  • pablomartin4btc
  • Pieter Wuille
  • rkrux
  • Ryan Ofsky
  • Sjors Provoost
  • SomberNight
  • SpectrGen
  • stickies-v
  • takeshikurosawaa
  • Vasil Dimov
  • w0xlt
  • willcl-ark

Don't miss a new bitcoin release

NewReleases is sending notifications on new releases.