Skip to main content

Dust and Fees

Bitcoin Knots provides enhanced control over dust thresholds and fee-related policies.

What is Dust?​

"Dust" refers to transaction outputs so small that the cost to spend them exceeds their value. These outputs are economically irrational and can bloat the UTXO set.

Dust Configuration​

Static Dust Relay Fee​

Set the fee rate used to calculate the dust threshold. Like the other fee-rate options, it's expressed in BTC per 1000 virtual bytes (BTC/kvB):

bitcoin.conf
# BTC per kvB (default: 0.00003, i.e. 3000 satoshis/kvB)
dustrelayfee=0.00003

An output is dust if spending it would cost more than its value at this fee rate.

Dynamic Dust​

Automatically raise dustrelayfee based on current fee conditions (experimental):

bitcoin.conf
# Syntax: off | [<multiplier>*]target:<blocks> | [<multiplier>*]mempool:<kvB>
# Default: off

# Track the fee estimate for confirmation within 6 blocks
dustdynamic=target:6

# Or track the feerate of the best 3000 kvB of your mempool
dustdynamic=mempool:3000

With dynamic dust enabled, the threshold adjusts to either the expected fee to be mined within <blocks> blocks, or the feerate needed to be within the best <kvB> kilo-vbytes of your node's mempool. If no multiplier is given, 3.0 is used.

Fee Policies​

Minimum Relay Fee​

Set the minimum fee rate for transaction relay. Fees below this are treated as zero fee for relaying, mining, and transaction creation:

bitcoin.conf
# BTC per 1000 virtual bytes (default: 0.00001)
minrelaytxfee=0.00001

Incremental Relay Fee​

Fee rate used to define the cost of relay, applied to mempool limiting and replacement (RBF) policy:

bitcoin.conf
# BTC per kvB (default: 0.00001)
incrementalrelayfee=0.00001

Sub-Dust Fee Penalty (v29.3+)​

New in v29.3: transactions creating sub-dust outputs have their effective fee reduced by the dust threshold for each sub-dust output, so dust-creating transactions need higher fees to compete:

bitcoin.conf
# Default: 1 (enabled)
subdustfeepenalty=1

# Disable the penalty
subdustfeepenalty=0

Confirmation Target Default​

Set the default confirmation target used by the wallet for fee estimation (Knots patch):

bitcoin.conf
# Knots default: 144 blocks (~1 day) vs Core's 6-block default
txconfirmtarget=144

Fee Estimation​

Save Fee Estimates​

Persist fee estimates across restarts:

bitcoin-cli savefeeestimates

Accept Stale Estimates​

Allow reading fee estimates even if they are stale — regtest only (a debug/test option, not usable on mainnet):

bitcoin.conf
# Regtest only; default: 0
acceptstalefeeestimates=1

Fee Histogram​

Knots can include fee histogram data in mempool info when you pass the Knots-only argument:

bitcoin-cli getmempoolinfo true

This returns a fee_histogram field with fee statistics grouped by fee rate ranges, useful for better fee estimation.

See Also​