Skip to content

Instantly share code, notes, and snippets.

@1ma
Created January 20, 2023 12:09
Show Gist options
  • Save 1ma/65751ba7f148612dfb39ff3527486a92 to your computer and use it in GitHub Desktop.
Save 1ma/65751ba7f148612dfb39ff3527486a92 to your computer and use it in GitHub Desktop.
Bitcoin Core v24.0.1 Config Reference
##
## bitcoin.conf configuration file.
## Generated by contrib/devtools/gen-bitcoin-conf.sh.
##
## Lines beginning with # are comments.
## All possible configuration options are provided. To use, copy this file
## to your data directory (default or specified by -datadir), uncomment
## options you would like to change, and save the file.
##
### Options
# Execute command when an alert is raised (%s in cmd is replaced by
# message)
#alertnotify=<cmd>
# If this block is in the chain assume that it and its ancestors are valid
# and potentially skip their script verification (0 to verify all,
# default:
# 000000000000000000052d314a259755ca65944e68df6b12a067ea8f1f5a7091,
# testnet:
# 00000000000163cfb1f97c4e4098a3692c8053ad9cab5ad9c86b338b5c00b8b7,
# signet:
# 00000112852484b5fe3451572368f93cfd2723279af3464e478aee35115256ef)
#assumevalid=<hex>
# Maintain an index of compact filters by block (default: 0, values:
# basic). If <type> is not supplied or if <type> = 1, indexes for
# all known types are enabled.
#blockfilterindex=<type>
# Execute command when the best block changes (%s in cmd is replaced by
# block hash)
#blocknotify=<cmd>
# Extra transactions to keep in memory for compact block reconstructions
# (default: 100)
#blockreconstructionextratxn=<n>
# Specify directory to hold blocks subdirectory for *.dat files (default:
# <datadir>)
#blocksdir=<dir>
# Whether to reject transactions from network peers. Automatic broadcast
# and rebroadcast of any transactions from inbound peers is
# disabled, unless the peer has the 'forcerelay' permission. RPC
# transactions are not affected. (default: 0)
#blocksonly=1
# Maintain coinstats index used by the gettxoutsetinfo RPC (default: 0)
#coinstatsindex=1
# Specify path to read-only configuration file. Relative paths will be
# prefixed by datadir location. (default: bitcoin.conf)
#conf=<file>
# Run in the background as a daemon and accept commands (default: 0)
#daemon=1
# Wait for initialization to be finished before exiting. This implies
# -daemon (default: 0)
#daemonwait=1
# Specify data directory
#datadir=<dir>
# Maximum database cache size <n> MiB (4 to 16384, default: 450). In
# addition, unused mempool memory is shared for this cache (see
# -maxmempool).
#dbcache=<n>
# Specify location of debug log file. Relative paths will be prefixed by a
# net-specific datadir location. (-nodebuglogfile to disable;
# default: debug.log)
#debuglogfile=<file>
# Specify additional configuration file, relative to the -datadir path
# (only useable from configuration file, not command line)
#includeconf=<file>
# Imports blocks from external file on startup
#loadblock=<file>
# Keep the transaction memory pool below <n> megabytes (default: 300)
#maxmempool=<n>
# Keep at most <n> unconnectable transactions in memory (default: 100)
#maxorphantx=<n>
# Do not keep transactions in the mempool longer than <n> hours (default:
# 336)
#mempoolexpiry=<n>
# Set the number of script verification threads (-4 to 15, 0 = auto, <0 =
# leave that many cores free, default: 0)
#par=<n>
# Whether to save the mempool on shutdown and load on restart (default: 1)
#persistmempool=1
# Specify pid file. Relative paths will be prefixed by a net-specific
# datadir location. (default: bitcoind.pid)
#pid=<file>
# Reduce storage requirements by enabling pruning (deleting) of old
# blocks. This allows the pruneblockchain RPC to be called to
# delete specific blocks, and enables automatic pruning of old
# blocks if a target size in MiB is provided. This mode is
# incompatible with -txindex and -coinstatsindex. Warning:
# Reverting this setting requires re-downloading the entire
# blockchain. (default: 0 = disable pruning blocks, 1 = allow
# manual pruning via RPC, >=550 = automatically prune block files
# to stay under the specified target size in MiB)
#prune=<n>
# Rebuild chain state and block index from the blk*.dat files on disk
#reindex=1
# Rebuild chain state from the currently indexed blocks. When in pruning
# mode or if blocks on disk might be corrupted, use full -reindex
# instead.
#reindex-chainstate=1
# Use the experimental syscall sandbox in the specified mode
# (-sandbox=log-and-abort or -sandbox=abort). Allow only expected
# syscalls to be used by bitcoind. Note that this is an
# experimental new feature that may cause bitcoind to exit or crash
# unexpectedly: use with caution. In the "log-and-abort" mode the
# invocation of an unexpected syscall results in a debug handler
# being invoked which will log the incident and terminate the
# program (without executing the unexpected syscall). In the
# "abort" mode the invocation of an unexpected syscall results in
# the entire process being killed immediately by the kernel without
# executing the unexpected syscall.
#sandbox=<mode>
# Specify path to dynamic settings data file. Can be disabled with
# -nosettings. File is written at runtime and not meant to be
# edited by users (use bitcoin.conf instead for custom settings).
# Relative paths will be prefixed by datadir location. (default:
# settings.json)
#settings=<file>
# Execute command on startup.
#startupnotify=<cmd>
# Create new files with system default permissions, instead of umask 077
# (only effective with disabled wallet functionality)
#sysperms=1
# Maintain a full transaction index, used by the getrawtransaction rpc
# call (default: 0)
#txindex=1
# Print version and exit
#version=1
### Connection options
# Add a node to connect to and attempt to keep the connection open (see
# the addnode RPC help for more info). This option can be specified
# multiple times to add multiple nodes; connections are limited to
# 8 at a time and are counted separately from the -maxconnections
# limit.
#addnode=<ip>
# Specify asn mapping used for bucketing of the peers (default:
# ip_asn.map). Relative paths will be prefixed by the net-specific
# datadir location.
#asmap=<file>
# Default duration (in seconds) of manually configured bans (default:
# 86400)
#bantime=<n>
# Bind to given address and always listen on it (default: 0.0.0.0). Use
# [host]:port notation for IPv6. Append =onion to tag any incoming
# connections to that address and port as incoming Tor connections
# (default: 127.0.0.1:8334=onion, testnet: 127.0.0.1:18334=onion,
# signet: 127.0.0.1:38334=onion, regtest: 127.0.0.1:18445=onion)
#bind=<addr>[:<port>][=onion]
# If set, then this host is configured for CJDNS (connecting to fc00::/8
# addresses would lead us to the CJDNS network, see doc/cjdns.md)
# (default: 0)
#cjdnsreachable=1
# Connect only to the specified node; -noconnect disables automatic
# connections (the rules for this peer are the same as for
# -addnode). This option can be specified multiple times to connect
# to multiple nodes.
#connect=<ip>
# Discover own IP addresses (default: 1 when listening and no -externalip
# or -proxy)
#discover=1
# Allow DNS lookups for -addnode, -seednode and -connect (default: 1)
#dns=1
# Query for peer addresses via DNS lookup, if low on addresses (default: 1
# unless -connect used)
#dnsseed=1
# Specify your own public address
#externalip=<ip>
# Allow fixed seeds if DNS seeds don't provide peers (default: 1)
#fixedseeds=1
# Always query for peer addresses via DNS lookup (default: 0)
#forcednsseed=1
# If set and -i2psam is also set then incoming I2P connections are
# accepted via the SAM proxy. If this is not set but -i2psam is set
# then only outgoing connections will be made to the I2P network.
# Ignored if -i2psam is not set. Listening for incoming I2P
# connections is done through the SAM proxy, not by binding to a
# local address and port (default: 1)
#i2pacceptincoming=1
# I2P SAM proxy to reach I2P peers and accept I2P connections (default:
# none)
#i2psam=<ip:port>
# Accept connections from outside (default: 1 if no -proxy or -connect)
#listen=1
# Automatically create Tor onion service (default: 1)
#listenonion=1
# Maintain at most <n> connections to peers (default: 125). This limit
# does not apply to connections manually added via -addnode or the
# addnode RPC, which have a separate limit of 8.
#maxconnections=<n>
# Maximum per-connection receive buffer, <n>*1000 bytes (default: 5000)
#maxreceivebuffer=<n>
# Maximum per-connection send buffer, <n>*1000 bytes (default: 1000)
#maxsendbuffer=<n>
# Maximum allowed median peer time offset adjustment. Local perspective of
# time may be influenced by outbound peers forward or backward by
# this amount (default: 4200 seconds).
#maxtimeadjustment=1
# Tries to keep outbound traffic under the given target per 24h. Limit
# does not apply to peers with 'download' permission or blocks
# created within past week. 0 = no limit (default: 0M). Optional
# suffix units [k|K|m|M|g|G|t|T] (default: M). Lowercase is 1000
# base while uppercase is 1024 base
#maxuploadtarget=<n>
# Enable all P2P network activity (default: 1). Can be changed by the
# setnetworkactive RPC command
#networkactive=1
# Use separate SOCKS5 proxy to reach peers via Tor onion services, set
# -noonion to disable (default: -proxy)
#onion=<ip:port>
# Make automatic outbound connections only to network <net> (ipv4, ipv6,
# onion, i2p, cjdns). Inbound and manual connections are not
# affected by this option. It can be specified multiple times to
# allow multiple networks.
#onlynet=<net>
# Serve compact block filters to peers per BIP 157 (default: 0)
#peerblockfilters=1
# Support filtering of blocks and transaction with bloom filters (default:
# 0)
#peerbloomfilters=1
# Relay non-P2SH multisig (default: 1)
#permitbaremultisig=1
# Listen for connections on <port>. Nodes not using the default ports
# (default: 8333, testnet: 18333, signet: 38333, regtest: 18444)
# are unlikely to get incoming connections. Not relevant for I2P
# (see doc/i2p.md).
#port=<port>
# Connect through SOCKS5 proxy, set -noproxy to disable (default:
# disabled)
#proxy=<ip:port>
# Randomize credentials for every proxy connection. This enables Tor
# stream isolation (default: 1)
#proxyrandomize=1
# Connect to a node to retrieve peer addresses, and disconnect. This
# option can be specified multiple times to connect to multiple
# nodes.
#seednode=<ip>
# Specify socket connection timeout in milliseconds. If an initial attempt
# to connect is unsuccessful after this amount of time, drop it
# (minimum: 1, default: 5000)
#timeout=<n>
# Tor control port to use if onion listening enabled (default:
# 127.0.0.1:9051)
#torcontrol=<ip>:<port>
# Tor control port password (default: empty)
#torpassword=<pass>
# Bind to the given address and add permission flags to the peers
# connecting to it. Use [host]:port notation for IPv6. Allowed
# permissions: bloomfilter (allow requesting BIP37 filtered blocks
# and transactions), noban (do not ban for misbehavior; implies
# download), forcerelay (relay transactions that are already in the
# mempool; implies relay), relay (relay even in -blocksonly mode,
# and unlimited transaction announcements), mempool (allow
# requesting BIP35 mempool contents), download (allow getheaders
# during IBD, no disconnect after maxuploadtarget limit), addr
# (responses to GETADDR avoid hitting the cache and contain random
# records with the most up-to-date info). Specify multiple
# permissions separated by commas (default:
# download,noban,mempool,relay). Can be specified multiple times.
#whitebind=<[permissions@]addr>
# Add permission flags to the peers connecting from the given IP address
# (e.g. 1.2.3.4) or CIDR-notated network (e.g. 1.2.3.0/24). Uses
# the same permissions as -whitebind. Can be specified multiple
# times.
#whitelist=<[permissions@]IP address or network>
### Wallet options
# What type of addresses to use ("legacy", "p2sh-segwit", "bech32", or
# "bech32m", default: "bech32")
#addresstype=1
# Group outputs by address, selecting many (possibly all) or none, instead
# of selecting on a per-output basis. Privacy is improved as
# addresses are mostly swept with fewer transactions and outputs
# are aggregated in clean change addresses. It may result in higher
# fees due to less optimal coin selection caused by this added
# limitation and possibly a larger-than-necessary number of inputs
# being used. Always enabled for wallets with "avoid_reuse"
# enabled, otherwise default: 0.
#avoidpartialspends=1
# What type of change to use ("legacy", "p2sh-segwit", "bech32", or
# "bech32m"). Default is "legacy" when -addresstype=legacy, else it
# is an implementation detail.
#changetype=1
# The maximum feerate (in BTC/kvB) at which transaction building may use
# more inputs than strictly necessary so that the wallet's UTXO
# pool can be reduced (default: 0.0001).
#consolidatefeerate=<amt>
# Do not load the wallet and disable wallet RPC calls
#disablewallet=1
# The fee rate (in BTC/kvB) that indicates your tolerance for discarding
# change by adding it to the fee (default: 0.0001). Note: An output
# is discarded if it is dust at this rate, but we will always
# discard up to the dust relay fee and a discard fee above that is
# limited by the fee estimate for the longest target
#discardfee=<amt>
# A fee rate (in BTC/kvB) that will be used when fee estimation has
# insufficient data. 0 to entirely disable the fallbackfee feature.
# (default: 0.00)
#fallbackfee=<amt>
# Set key pool size to <n> (default: 1000). Warning: Smaller sizes may
# increase the risk of losing funds when restoring from an old
# backup, if none of the addresses in the original keypool have
# been used.
#keypool=<n>
# Spend up to this amount in additional (absolute) fees (in BTC) if it
# allows the use of partial spend avoidance (default: 0.00)
#maxapsfee=<n>
# Fee rates (in BTC/kvB) smaller than this are considered zero fee for
# transaction creation (default: 0.00001)
#mintxfee=<amt>
# Fee rate (in BTC/kvB) to add to transactions you send (default: 0.00)
#paytxfee=<amt>
# External signing tool, see doc/external-signer.md
#signer=<cmd>
# Spend unconfirmed change when sending transactions (default: 1)
#spendzeroconfchange=1
# If paytxfee is not set, include enough fee so transactions begin
# confirmation on average within n blocks (default: 6)
#txconfirmtarget=<n>
# Specify wallet path to load at startup. Can be used multiple times to
# load multiple wallets. Path is to a directory containing wallet
# data and log files. If the path is not absolute, it is
# interpreted relative to <walletdir>. This only loads existing
# wallets and does not create new ones. For backwards compatibility
# this also accepts names of existing top-level data files in
# <walletdir>.
#wallet=<path>
# Make the wallet broadcast transactions (default: 1)
#walletbroadcast=1
# Specify directory to hold wallets (default: <datadir>/wallets if it
# exists, otherwise <datadir>)
#walletdir=<dir>
# Execute command when a wallet transaction changes. %s in cmd is replaced
# by TxID, %w is replaced by wallet name, %b is replaced by the
# hash of the block including the transaction (set to 'unconfirmed'
# if the transaction is not included) and %h is replaced by the
# block height (-1 if not included). %w is not currently
# implemented on windows. On systems where %w is supported, it
# should NOT be quoted because this would break shell escaping used
# to invoke the command.
#walletnotify=<cmd>
# Send transactions with full-RBF opt-in enabled (RPC only, default: 0)
#walletrbf=1
### Debugging/Testing options
# Output debugging information (default: -nodebug, supplying <category> is
# optional). If <category> is not supplied or if <category> = 1,
# output all debugging information. <category> can be: addrman,
# bench, blockstorage, cmpctblock, coindb, estimatefee, http, i2p,
# ipc, leveldb, libevent, mempool, mempoolrej, net, proxy, prune,
# qt, rand, reindex, rpc, selectcoins, tor, util, validation,
# walletdb, zmq. This option can be specified multiple times to
# output multiple categories.
#debug=<category>
# Exclude debugging information for a category. Can be used in conjunction
# with -debug=1 to output debug logs for all categories except the
# specified category. This option can be specified multiple times
# to exclude multiple categories.
#debugexclude=<category>
# Print help message with debugging options and exit
#help-debug=1
# Include IP addresses in debug output (default: 0)
#logips=1
# Prepend debug output with name of the originating source location
# (source file, line number and function name) (default: 0)
#logsourcelocations=1
# Prepend debug output with name of the originating thread (only available
# on platforms supporting thread_local) (default: 0)
#logthreadnames=1
# Prepend debug output with timestamp (default: 1)
#logtimestamps=1
# Maximum total fees (in BTC) to use in a single wallet transaction;
# setting this too low may abort large transactions (default: 0.10)
#maxtxfee=<amt>
# Send trace/debug info to console (default: 1 when no -daemon. To disable
# logging to file, set -nodebuglogfile)
#printtoconsole=1
# Shrink debug.log file on client startup (default: 1 when no -debug)
#shrinkdebugfile=1
# Append comment to the user agent string
#uacomment=<cmt>
### Chain selection options
# Use the chain <chain> (default: main). Allowed values: main, test,
# signet, regtest
#chain=<chain>
# Use the signet chain. Equivalent to -chain=signet. Note that the network
# is defined by the -signetchallenge parameter
#signet=1
# Blocks must satisfy the given script to be considered valid (only for
# signet networks; defaults to the global default signet test
# network challenge)
#signetchallenge=1
# Specify a seed node for the signet network, in the hostname[:port]
# format, e.g. sig.net:1234 (may be used multiple times to specify
# multiple seed nodes; defaults to the global default signet test
# network seed node(s))
#signetseednode=1
# Use the test chain. Equivalent to -chain=test.
#testnet=1
### Node relay options
# Equivalent bytes per sigop in transactions for relay and mining
# (default: 20)
#bytespersigop=1
# Relay and mine data carrier transactions (default: 1)
#datacarrier=1
# Maximum size of data in data carrier transactions we relay and mine
# (default: 83)
#datacarriersize=1
# Fees (in BTC/kvB) smaller than this are considered zero fee for
# relaying, mining and transaction creation (default: 0.00001)
#minrelaytxfee=<amt>
# Add 'forcerelay' permission to whitelisted inbound peers with default
# permissions. This will relay transactions even if the
# transactions were already in the mempool. (default: 0)
#whitelistforcerelay=1
# Add 'relay' permission to whitelisted inbound peers with default
# permissions. This will accept relayed transactions even when not
# relaying transactions (default: 1)
#whitelistrelay=1
### Block creation options
# Set maximum BIP141 block weight (default: 3996000)
#blockmaxweight=<n>
# Set lowest fee rate (in BTC/kvB) for transactions to be included in
# block creation. (default: 0.00001)
#blockmintxfee=<amt>
### RPC server options
# Accept public REST requests (default: 0)
#rest=1
# Allow JSON-RPC connections from specified source. Valid for <ip> are a
# single IP (e.g. 1.2.3.4), a network/netmask (e.g.
# 1.2.3.4/255.255.255.0) or a network/CIDR (e.g. 1.2.3.4/24). This
# option can be specified multiple times
#rpcallowip=<ip>
# Username and HMAC-SHA-256 hashed password for JSON-RPC connections. The
# field <userpw> comes in the format: <USERNAME>:<SALT>$<HASH>. A
# canonical python script is included in share/rpcauth. The client
# then connects normally using the
# rpcuser=<USERNAME>/rpcpassword=<PASSWORD> pair of arguments. This
# option can be specified multiple times
#rpcauth=<userpw>
# Bind to given address to listen for JSON-RPC connections. Do not expose
# the RPC server to untrusted networks such as the public internet!
# This option is ignored unless -rpcallowip is also passed. Port is
# optional and overrides -rpcport. Use [host]:port notation for
# IPv6. This option can be specified multiple times (default:
# 127.0.0.1 and ::1 i.e., localhost)
#rpcbind=<addr>[:port]
# Location of the auth cookie. Relative paths will be prefixed by a
# net-specific datadir location. (default: data dir)
#rpccookiefile=<loc>
# Password for JSON-RPC connections
#rpcpassword=<pw>
# Listen for JSON-RPC connections on <port> (default: 8332, testnet:
# 18332, signet: 38332, regtest: 18443)
#rpcport=<port>
# Sets the serialization of raw transaction or block hex returned in
# non-verbose mode, non-segwit(0) or segwit(1) (default: 1)
#rpcserialversion=1
# Set the number of threads to service RPC calls (default: 4)
#rpcthreads=<n>
# Username for JSON-RPC connections
#rpcuser=<user>
# Set a whitelist to filter incoming RPC calls for a specific user. The
# field <whitelist> comes in the format: <USERNAME>:<rpc 1>,<rpc
# 2>,...,<rpc n>. If multiple whitelists are set for a given user,
# they are set-intersected. See -rpcwhitelistdefault documentation
# for information on default whitelist behavior.
#rpcwhitelist=<whitelist>
# Sets default behavior for rpc whitelisting. Unless rpcwhitelistdefault
# is set to 0, if any -rpcwhitelist is set, the rpc server acts as
# if all rpc users are subject to empty-unless-otherwise-specified
# whitelists. If rpcwhitelistdefault is set to 1 and no
# -rpcwhitelist is set, rpc server acts as if all rpc users are
# subject to empty whitelists.
#rpcwhitelistdefault=1
# Accept command line and JSON-RPC commands
#server=1
# [Sections]
# Most options will apply to all networks. To confine an option to a specific
# network, add it under the relevant section below.
#
# Note: If not specified under a network section, the options addnode, connect,
# port, bind, rpcport, rpcbind, and wallet will only apply to mainnet.
# Options for mainnet
[main]
# Options for testnet
[test]
# Options for signet
[signet]
# Options for regtest
[regtest]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment