Skip to content

Configuration Options

There is one configuration file for the Client stack and one configuration file for the Server stack.

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.

A Libbitcoin node has one configuration file, separated in 6 sections: bitcoin, database, forks, log, network, node. 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 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>

[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>

[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>
# 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>
# Path to windows debug build symbols file (.pdb).
symbols = <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 entries allowed, defaults to 0.0.0.0:8333.
bind = <value>
# IP address to disallow as a peer, multiple entries 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 entries 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 entries allowed.
seed = <value>
# The time limit for obtaining seed addresses, defaults to 30.
seeding_timeout_seconds = <value>
# IP address to advertise, multiple entries 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 entries 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 validation threadpool to high priority, defaults to true.
priority = <value>
# Sampling period for drop of stalled channels, defaults to 10 (0 disables).
sample_period_seconds = <value>
# The number of threads in the validation threadpool, defaults to 32.
threads = <value>

[server]
# IP address to bind, multiple entries allowed, defaults to 0.0.0.0:8080.
bind = <value>
# The target number of incoming network connections, defaults to 0.
inbound_connections = <value>