Configuration Guide
Bitcoin Knots is configured through bitcoin.conf and command-line options.
Configuration File Location
| Platform | Location |
|---|---|
| Linux | ~/.bitcoin/bitcoin.conf |
| macOS | ~/Library/Application Support/Bitcoin/bitcoin.conf |
| Windows | %APPDATA%\Bitcoin\bitcoin.conf |
Basic Configuration
# Network
server=1
listen=1
# RPC
rpcuser=user
rpcpassword=password
# Data
datadir=/path/to/data
Network Configuration
# Enable incoming connections
listen=1
# Maximum connections
maxconnections=125
# Bind to specific IP
bind=0.0.0.0
# Use Tor: route outgoing connections through a Tor SOCKS proxy
proxy=127.0.0.1:9050
# Accept incoming connections via a Tor onion service
listenonion=1
# Tor control host and port (default: 127.0.0.1:9051)
torcontrol=127.0.0.1:9051
# Only connect to .onion addresses
onlynet=onion
# Knots: Enable UPnP
upnp=1
When built with subprocess support, Bitcoin Knots automatically launches Tor as a subprocess if onion listening is enabled and no already-running Tor daemon is reachable. The command used is controlled by the hidden -torexecute=<command> option (default: tor), so you normally only need tor installed — no manual torrc configuration required.
RPC Configuration
# Enable RPC server
server=1
# RPC credentials (legacy method — prefer cookie auth or rpcauth below)
rpcuser=bitcoinrpc
rpcpassword=CHANGE_ME
# Allow remote RPC (be careful!)
rpcallowip=192.168.1.0/24
rpcbind=0.0.0.0
# RPC authentication file (Knots)
rpcauthfile=/path/to/rpcauth
If you don't set rpcuser/rpcpassword, bitcoind writes a random .cookie file to the data directory that local bitcoin-cli uses automatically — this is the safest default. For remote clients, use rpcauth=<userpw> (generated with the share/rpcauth/rpcauth.py script) or Knots' rpcauthfile instead of storing a plaintext password in bitcoin.conf.
Performance
# Database cache (MiB)
dbcache=4000
# Maximum mempool size (MB)
maxmempool=300
# Block verification threads
par=4
Since v29.3, when dbcache is not set, Bitcoin Knots automatically selects a value based on available system memory — platform dependent, between 100 MiB and 2 GiB. Only set dbcache explicitly if you want a different size (e.g. a larger cache to speed up initial sync).
Knots Policy Options
# Data carrier limit (bytes)
datacarriersize=42
# Data carrier cost multiplier
datacarriercost=1.0
# Reject token transactions
rejecttokens=1
# Reject inscription transactions
rejectparasites=1
# Equivalent bytes per sigop for relay and mining (default: 20)
bytespersigop=20
# Minimum bytes per sigop in relayed/mined transactions (default: 20)
bytespersigopstrict=20
# Dynamic dust threshold (experimental; default: off)
# Syntax: off | [<multiplier>*]target:<blocks> | [<multiplier>*]mempool:<kvB>
# Example: raise dustrelayfee to the fee expected to confirm within 6 blocks
dustdynamic=target:6
# Bare pubkey policy (0 is already the default)
permitbarepubkey=0
Consensus Rules (RDTS / BIP-110)
New in v29.3.knots20260508: Bitcoin Knots ships the Reduced Data Temporary Softfork (RDTS, BIP-110). The standard build enforces RDTS on its deployment schedule and asks for your explicit confirmation — through the GUI dialog at startup, or in bitcoin.conf:
# Confirm the RDTS (BIP-110) upgrade; bitcoind warns hourly until this is set
consensusrules=rdts
consensusrules=rdts records your confirmation — it does not switch enforcement on or off. RDTS is a change to consensus validation, not just relay policy: if the soft fork activates without broad support across the network, enforcing nodes could follow a different chain than the rest of the network (a chain split). If you do not want your node to enforce RDTS, run the parallel build without it (v29.3.knots20260507).
See BIP-110 / RDTS Integration for the full mechanics and BIP-110 for an explanation of the rules.
Wallet Options
# Disable wallet
disablewallet=0
# Wallet directory
walletdir=/path/to/wallets
# Address type default
addresstype=bech32
# Change address type
changetype=bech32
Mining Options (Knots)
# Maximum block size in bytes (Knots default: 300000)
blockmaxsize=300000
# Priority space for transactions
blockprioritysize=50000
blockmaxweight is the preferred option since SegWit. Setting blockmaxsize to anything other than maximum will reduce your income — see the Mining Guide for details and full-block configurations.
Pruning
# Prune to ~10GB
prune=10000
# Or disable (full node)
prune=0
Debugging
# Debug categories
debug=net
debug=rpc
debug=mempool
# Log file
debuglogfile=/path/to/debug.log
# Print to console
printtoconsole=1
Example Configurations
Privacy-Focused Node
server=1
listen=1
proxy=127.0.0.1:9050
listenonion=1
onlynet=onion
rejecttokens=1
rejectparasites=1
datacarriersize=42
High-Performance Node
server=1
listen=1
dbcache=8000
maxconnections=200
par=8
maxmempool=1000
Minimal Pruned Node
server=1
prune=5000
maxconnections=20
dbcache=1000
See Also
- Configuration Options Reference - Complete option list
- Running a Node - Node setup guide