Configuration Options
There is one configuration file for the Client stack and one configuration file for the Server stack.
Currently there is no default path for the configuration file, so it needs to be specified with --config or -c at start up.
Libbitcoin Server (node) configuration
As the v4 Server is currently still a WIP and only the node can be run, the Node config file is used here.
The config file needs to be created manually, called bn.cfg.
A Libbitcoin node has one configuration file, separated in 14 sections: bitcoin, bitcoind, database, electrum, explore, forks, log, network, node, socket, stratum_v1, stratum_v2, web, websocket. All config options have a comment with description and the default value.
# Libbitcoin Node configuration file
[bitcoin]
# The activation time for bip16 in unix time, defaults to '1333238400'.
bip16_activation_time = <value>
# The number of blocks considered for bip34 style soft fork activation, defaults to '1000'.
bip34_activation_sample = <value>
# The number of new version blocks required for bip34 style soft fork activation, defaults to '750'.
bip34_activation_threshold = <value>
# The number of new version blocks required for bip34 style soft fork enforcement, defaults to '950'.
bip34_enforcement_threshold = <value>
# The block height to freeze the bip34 softfork for bip90, defaults to '227931'.
bip34_freeze = <value>
# The block height to freeze the bip65 softfork for bip90, defaults to '388381'.
bip65_freeze = <value>
# The block height to freeze the bip66 softfork for bip90, defaults to '363725'.
bip66_freeze = <value>
# The hash:height checkpoint for bip9 bit0 activation, defaults to '000000000000000004a1b34462cb8aeebd5799177f7a29cf28f2d1961716b5b5:419328'.
bip9_bit0_active_checkpoint = <value>
# The target block period, defaults to '600'.
block_spacing_seconds = <value>
# The blockchain checkpoints, defaults to the consensus set.
checkpoint = <value>
# The hexideciaml encoding of the genesis block, defaults to mainnet.
genesis_block = <value>
# The initial block subsidy, defaults to '50'.
initial_block_subsidy_bitcoin = <value>
# A block presumed to be valid but not required to be present, defaults to '000000000000000000010538edbfd2d5b809a33dd83f284aeea41c6d0d96968a:900000'.
milestone = <value>
# The minimum work for any branch to be considered valid, defaults to '000000000000000000000000000000000000000052b2559353df4117b7348b64'.
minimum_work = <value>
# The proof of work limit, defaults to '486604799'.
proof_of_work_limit = <value>
# The difficulty retargeting factor, defaults to '4'.
retargeting_factor = <value>
# The difficulty retargeting period, defaults to '1209600'.
retargeting_interval_seconds = <value>
# The subsidy halving period, defaults to '210000'.
subsidy_interval = <value>
# The future timestamp allowance, defaults to '7200'.
timestamp_limit_seconds = <value>
[bitcoind]
# IP address to bind, multiple allowed, defaults to '0.0.0.0:8380' (all IPv4).
bind = <value>
# The required maximum number of connections, defaults to '0'.
connections = <value>
# The host name (http verification), multiple allowed, defaults to empty (disabled).
host = <value>
# The service requires TLS (not implemented), defaults to 'false'.
secure = <value>
# The server name (http header), defaults to 'libbitcoin/4.0'.
server = <value>
# The idle timeout (http keep-alive), defaults to '60'.
timeout_seconds = <value>
[database]
# The number of buckets in the address table head, defaults to '1' (0|1 disables).
address_buckets = <value>
# The percentage expansion of the address table body, defaults to '5'.
address_rate = <value>
# The minimum allocation of the address table body, defaults to '1'.
address_size = <value>
# The percentage expansion of the candidate table body, defaults to '5'.
candidate_rate = <value>
# The minimum allocation of the candidate table body, defaults to '2575500'.
candidate_size = <value>
# The percentage expansion of the candidate table body, defaults to '5'.
confirmed_rate = <value>
# The minimum allocation of the candidate table body, defaults to '2575500'.
confirmed_size = <value>
# The minimum number of buckets in the duplicate table head, defaults to '1024'.
duplicate_buckets = <value>
# The percentage expansion of the duplicate table, defaults to '5'.
duplicate_rate = <value>
# The minimum allocation of the duplicate table body, defaults to '44'.
duplicate_size = <value>
# The number of buckets in the filter_bk table head, defaults to '0' (0 disables).
filter_bk_buckets = <value>
# The percentage expansion of the filter_bk table body, defaults to '5'.
filter_bk_rate = <value>
# The minimum allocation of the filter_bk table body, defaults to '1'.
filter_bk_size = <value>
# The number of buckets in the filter_tx table head, defaults to '0' (0 disables).
filter_tx_buckets = <value>
# The percentage expansion of the filter_tx table body, defaults to '5'.
filter_tx_rate = <value>
# The minimum allocation of the filter_tx table body, defaults to '1'.
filter_tx_size = <value>
# The number of buckets in the header table head, defaults to '386364'.
header_buckets = <value>
# The percentage expansion of the header table body, defaults to '5'.
header_rate = <value>
# The minimum allocation of the header table body, defaults to '21000000'.
header_size = <value>
# The percentage expansion of the input table body, defaults to '5'.
input_rate = <value>
# The minimum allocation of the input table body, defaults to '92500000000'.
input_size = <value>
# The percentage expansion of the ins table body, defaults to '5'.
ins_rate = <value>
# The minimum allocation of the point table body, defaults to '8550000000'.
ins_size = <value>
# The percentage expansion of the output table body, defaults to '5'.
output_rate = <value>
# The minimum allocation of the output table body, defaults to '25300000000'.
output_size = <value>
# The percentage expansion of the puts table body, defaults to '5'.
outs_rate = <value>
# The minimum allocation of the puts table body, defaults to '3700000000'.
outs_size = <value>
# The blockchain database directory, defaults to 'blockchain'.
path = <value>
# The number of buckets in the spend table head, defaults to '1365977136'.
point_buckets = <value>
# The percentage expansion of the point table body, defaults to '5'.
point_rate = <value>
# The minimum allocation of the point table body, defaults to '25700000000'.
point_size = <value>
# The minimum number of buckets in the prevout table head, defaults to '0'.
prevout_buckets = <value>
# The percentage expansion of the prevout table, defaults to '5'.
prevout_rate = <value>
# The minimum allocation of the prevout table body, defaults to '1'.
prevout_size = <value>
# The number of buckets in the strong_tx table head, defaults to '469222525'.
strong_tx_buckets = <value>
# The percentage expansion of the strong_tx table body, defaults to '5'.
strong_tx_rate = <value>
# The minimum allocation of the strong_tx table body, defaults to '2900000000'.
strong_tx_size = <value>
# The number of buckets in the tx table head, defaults to '469222525'.
tx_buckets = <value>
# The percentage expansion of the tx table body, defaults to '5'.
tx_rate = <value>
# The minimum allocation of the tx table body, defaults to '17000000000'.
tx_size = <value>
# The number of buckets in the txs table head, defaults to '900001'.
txs_buckets = <value>
# The percentage expansion of the txs table body, defaults to '5'.
txs_rate = <value>
# The minimum allocation of the txs table body, defaults to '1050000000'.
txs_size = <value>
# The number of buckets in the validated_bk table head, defaults to '900001'.
validated_bk_buckets = <value>
# The percentage expansion of the validated_bk table body, defaults to '5'.
validated_bk_rate = <value>
# The minimum allocation of the validated_bk table body, defaults to '1700000'.
validated_bk_size = <value>
# The number of buckets in the validated_tx table head, defaults to '1'.
validated_tx_buckets = <value>
# The percentage expansion of the validated_tx table body, defaults to '5'.
validated_tx_rate = <value>
# The minimum allocation of the validated_tx table body, defaults to '1'.
validated_tx_size = <value>
[electrum]
# IP address to bind, multiple allowed, defaults to '0.0.0.0:8480' (all IPv4).
bind = <value>
# The required maximum number of connections, defaults to '0'.
connections = <value>
# The service requires TLS (not implemented), defaults to 'false'.
secure = <value>
# The idle timeout (http keep-alive), defaults to '60'.
timeout_seconds = <value>
[explore]
# IP address to bind, multiple allowed, defaults to '0.0.0.0:8180' (all IPv4).
bind = <value>
# The required maximum number of connections, defaults to '0'.
connections = <value>
# The path of the default source page, defaults to 'index.html'.
default = <value>
# The host name (http verification), multiple allowed, defaults to empty (disabled).
host = <value>
# The allowed origin (http verification), multiple allowed, defaults to empty (disabled).
origin = <value>
# The required root path of source files to be served, defaults to empty.
path = <value>
# The service requires TLS (not implemented), defaults to 'false'.
secure = <value>
# The server name (http header), defaults to 'libbitcoin/4.0'.
server = <value>
# The idle timeout (http keep-server), defaults to '60'.
timeout_seconds = <value>
[forks]
# Add check-sequence-verify op code, defaults to 'true' (soft fork).
bip112 = <value>
# Use median time past for locktime, defaults to 'true' (soft fork).
bip113 = <value>
# Segregated witness consensus layer, defaults to 'true' (soft fork).
bip141 = <value>
# Witness version 0 (segwit), defaults to 'true' (soft fork).
bip143 = <value>
# Prevent dummy value malleability, defaults to 'true' (soft fork).
bip147 = <value>
# Add pay-to-script-hash processing, defaults to 'true' (soft fork).
bip16 = <value>
# Disallow collision of unspent transaction hashes, defaults to 'true' (soft fork).
bip30 = <value>
# Require coinbase input includes block height, defaults to 'true' (soft fork).
bip34 = <value>
# Witness version 1 (taproot), defaults to 'true' (soft fork).
bip341 = <value>
# Validation of taproot script, defaults to 'true' (soft fork).
bip342 = <value>
# Finite monetary supply, defaults to 'true' (soft fork).
bip42 = <value>
# Add check-locktime-verify op code, defaults to 'true' (soft fork).
bip65 = <value>
# Require strict signature encoding, defaults to 'true' (soft fork).
bip66 = <value>
# Add relative locktime enforcement, defaults to 'true' (soft fork).
bip68 = <value>
# Assume bip34, bip65, and bip66 activation if enabled, defaults to 'true' (hard fork).
bip90 = <value>
# Require difficult blocks, defaults to 'true' (use false for testnet).
difficult = <value>
# Retarget difficulty, defaults to 'true'.
retarget = <value>
# Fix target overflow for very low difficulty, defaults to 'false' (hard fork).
retarget_overflow_patch = <value>
# Use scrypt hashing for proof of work, defaults to 'false' (hard fork).
scrypt_proof_of_work = <value>
# Fix time warp bug, defaults to 'false' (hard fork).
time_warp_patch = <value>
[log]
# Enable application logging, defaults to 'true'.
application = <value>
# Enable local fault logging, defaults to 'true'.
fault = <value>
# The maximum byte size of each pair of rotated log files, defaults to 1000000.
maximum_size = <value>
# Enable news logging, defaults to 'true'.
news = <value>
# Enable objects logging, defaults to 'false'.
objects = <value>
# The log files directory, defaults to empty.
path = <value>
# Enable protocol logging, defaults to 'false'.
protocol = <value>
# Enable proxy logging, defaults to 'false'.
proxy = <value>
# Enable quitting logging, defaults to 'false'.
quitting = <value>
# Enable remote fault logging, defaults to 'true'.
remote = <value>
# Enable session logging, defaults to 'true'.
session = <value>
# Enable verbose logging, defaults to 'false'.
verbose = <value>
[network]
# The lower bound for address selection divisor, defaults to '5'.
address_lower = <value>
# The upper bound for address selection divisor, defaults to '10'.
address_upper = <value>
# IP address to bind, multiple allowed, defaults to '0.0.0.0:8333' (all IPv4).
bind = <value>
# IP address to disallow as a peer, multiple allowed.
blacklist = <value>
# The age limit for any connection, defaults to '1440'.
channel_expiration_minutes = <value>
# The time between ping messages, defaults to '5'.
channel_heartbeat_minutes = <value>
# The inactivity time limit for any connection, defaults to '10'.
channel_inactivity_minutes = <value>
# The number of concurrent attempts to establish one connection, defaults to '5'.
connect_batch_size = <value>
# The time limit for connection establishment, defaults to '5'.
connect_timeout_seconds = <value>
# Enable address messages, defaults to 'true'.
enable_address = <value>
# Enable address v2 messages, defaults to 'false'.
enable_address_v2 = <value>
# Enable alert messages, defaults to 'false'.
enable_alert = <value>
# Enable enable compact block messages, defaults to 'false'.
enable_compact = <value>
# Enable internet protocol version 6 (IPv6), defaults to 'false'.
enable_ipv6 = <value>
# Allow connections from the node to itself, defaults to 'false'.
enable_loopback = <value>
# Enable reject messages, defaults to 'false'.
enable_reject = <value>
# Enable transaction relay, defaults to 'true'.
enable_relay = <value>
# Enable witness transaction identifier relay, defaults to 'false'.
enable_witness_tx = <value>
# The time limit to complete the connection handshake, defaults to '30'.
handshake_timeout_seconds = <value>
# The maximum number of peer hosts in the pool, defaults to '10000'.
host_pool_capacity = <value>
# The magic number for message headers, defaults to '3652501241'.
identifier = <value>
# The target number of incoming network connections, defaults to '100'.
inbound_connections = <value>
# The advertised services that cause a peer to be dropped, defaults to '176'.
invalid_services = <value>
# The maximum allowable channel clock skew, defaults to '120'.
maximum_skew_minutes = <value>
# The minimum retained read buffer size, defaults to '4000000'.
minimum_buffer = <value>
# The target number of outgoing network connections, defaults to '100'.
outbound_connections = <value>
# The peer address cache file directory, defaults to empty.
path = <value>
# A persistent peer node, multiple allowed.
peer = <value>
# The maximum network protocol version, defaults to '70012'.
protocol_maximum = <value>
# The minimum network protocol version, defaults to '31800'.
protocol_minimum = <value>
# The peer download rate limit in bytes per second, defaults to 1024 (not implemented).
rate_limit = <value>
# The time delay for failed connection retry, defaults to '1'.
retry_timeout_seconds = <value>
# A seed node for initializing the host pool, multiple allowed.
seed = <value>
# The time limit for obtaining seed addresses, defaults to '30'.
seeding_timeout_seconds = <value>
# IP address to advertise, multiple allowed.
self = <value>
# The maximum services exposed by network connections, defaults to '9' (full node, witness).
services_maximum = <value>
# The minimum services exposed by network connections, defaults to '9' (full node, witness).
services_minimum = <value>
# The minimum number of threads in the network threadpool, defaults to '16'.
threads = <value>
# The node user agent string, defaults to '/libbitcoin:4.0.0/'.
user_agent = <value>
# Validate the checksum of network messages, defaults to 'false'.
validate_checksum = <value>
# IP address to allow as a peer, multiple allowed.
whitelist = <value>
[node]
# Block deserialization buffer multiple of wire size, defaults to '20' (0 disables).
allocation_multiple = <value>
# Allowable underperformance standard deviation, defaults to '1.5' (0 disables).
allowed_deviation = <value>
# Limit of per channel cached peer block and tx announcements, to avoid replaying, defaults to '42'.
announcement_cache = <value>
# Time from present that blocks are considered current, defaults to '60' (0 disables).
currency_window_minutes = <value>
# Delay accepting inbound connections until node is current, defaults to 'true'.
delay_inbound = <value>
# Maximum number of blocks to download concurrently, defaults to '50000' (0 disables).
maximum_concurrency = <value>
# Maximum block height to populate, defaults to 0 (unlimited).
maximum_height = <value>
# Set the process to high memory priority, defaults to 'true'.
memory_priority = <value>
# Sampling period for drop of stalled channels, defaults to '10' (0 disables).
sample_period_seconds = <value>
# Set validation threads to high processing priority, defaults to 'true'.
thread_priority = <value>
# The number of threads in the validation threadpool, defaults to '32'.
threads = <value>
[socket]
# IP address to bind, multiple allowed, defaults to '0.0.0.0:8280' (all IPv4).
bind = <value>
# The required maximum number of connections, defaults to '0'.
connections = <value>
# The host name (http verification), multiple allowed, defaults to empty (disabled).
host = <value>
# The server name (http header), defaults to 'libbitcoin/4.0'.
server = <value>
# The idle timeout (http keep-alive), defaults to '60'.
timeout_seconds = <value>
[stratum_v1]
# IP address to bind, multiple allowed, defaults to '0.0.0.0:8580' (all IPv4).
bind = <value>
# The required maximum number of connections, defaults to '0'.
connections = <value>
# The service requires TLS (not implemented), defaults to 'false'.
secure = <value>
# The idle timeout (http keep-alive), defaults to '60'.
timeout_seconds = <value>
[stratum_v2]
# IP address to bind, multiple allowed, defaults to '0.0.0.0:8680' (all IPv4).
bind = <value>
# The required maximum number of connections, defaults to '0'.
connections = <value>
# The service requires TLS (not implemented), defaults to 'false'.
secure = <value>
# The idle timeout (http keep-alive), defaults to '60'.
timeout_seconds = <value>
[web]
# IP address to bind, multiple allowed, defaults to '0.0.0.0:8080' (all IPv4).
bind = <value>
# The required maximum number of connections, defaults to '0'.
connections = <value>
# The path of the default source page, defaults to 'index.html'.
default = <value>
# The host name (http verification), multiple allowed, defaults to empty (disabled).
host = <value>
# The allowed origin (http verification), multiple allowed, defaults to empty (disabled).
origin = <value>
# The required root path of source files to be served, defaults to empty.
path = <value>
# The service requires TLS (not implemented), defaults to 'false'.
secure = <value>
# The server name (http header), defaults to 'libbitcoin/4.0'.
server = <value>
# The idle timeout (http keep-alive), defaults to '60'.
timeout_seconds = <value>
[websocket]
# The service requires TLS (not implemented), defaults to 'false'.
secure = <value>