Bitcoin full node and query server

Jun 1, 2026

View in context in the libbitcoin Slack #general mirror.

josie15:43
for the linux people, im also maintaining a nix module and pkg for libbitcoin: https://github.com/josibake/nix-libbitcoin . one thing im missing is knowing what defaults to recommend for linux. i also like to include a few recipes when making nix modules like this , e.g., like running libbitcoin on a raspi. for the people who have been running on linux and smaller harder: id very much appreciate if you could share the configs and ill update my nix repo defaults and include some overlays
👍🏻 1
12 replies · Slackbot, eynhaender, josie, evoskuil · last Jun 02, 2026
Slackbot16:26
👻
eynhaender16:30
This is the config I use on the PI5. The most crucial part here is the bucket sizes of the store, which reduces memory requirement and therefore thrashing. Eric might want to help us to boil it down to the minimum entries.
[log] # --------------------------------------------------------------------------------------------- Logging Settings
path = /home/eynhaender/test/log
maximum_size = 10000000

application = true
news = true
session = true
protocol = false
quitting = false
proxy = false
remote = true
fault = true
verbose = false

[database] # ---------------------------------------------------------------------------------------- Database Settings
path = /mnt/ssd/bitcoin
turbo = true
point_buckets = 682988568        # statt 1365977136  → spart 5,09 GB
tx_buckets = 234611262           # statt 469222525   → spart 0,87 GB
strong_tx_buckets = 234611262    # statt 469222525   → spart 0,87 GB
interval_depth = 11

[bitcoin] # ----------------------------------------------------------------------------------------- Bitcoin Settings
milestone=000000000000000000010b93c9ea1c29fea277383f0f7d1f26de8b5802e885ff:950000

[node] # -------------------------------------------------------------------------------------------- Node Settings
# Pruning snapshot occurs at first coalesced, otherwise manual snapshot only.
threads = 1
thread_priority = true
memory_priority = true
delay_inbound = true
allocation_multiple = 1
allowed_deviation = 1.5
sample_period_seconds = 10
currency_window_minutes = 5000
maximum_concurrency = 50000
minimum_fee_rate = 0.00001
maximum_height = 950000

[network] # ----------------------------------------------------------------------------------------- General Network Settings
threads = 6
retry_timeout_seconds = 5           # 1s, 2s, 7s f/m/s loopback,  5s for large
connect_timeout_seconds = 5         # 1s, 3s, 5s f/m/s loopback, 10s for large

[peer] # -------------------------------------------------------------------------------------------- General P2P Settings
path = eynhaender/development/libbitcoin/test/network # cashed hosts file goes here
user_agent = "/libbitcoin4:0.14.2/"
enable_alert = false                # send/log alert messages (no send option)
enable_reject = false               # send/log reject messages
enable_address = true               # in/out address messages
enable_address_v2 = false           # in/out address v2 messages
enable_witness_tx = false           # in/out wtxid for tx announcements
enable_compact = false              # in/out compact block announcements
enable_relay = false                # in/out transaction announcements
validate_checksum = false           # validate inbound message checksum
invalid_services = 176              # shitcoins
services_minimum = 9                # witness node (required of peer to outbound)
services_maximum = 9                # witness node (provided to peer of non-seed) [+64 for filters]
protocol_maximum = 70015            # current default (send_headers). [70015 for filters, else 70012]
protocol_minimum = 31800            # Satoshi:22.0.0 minimum (headers).

handshake_timeout_seconds = 5       # time to complete handshake.
channel_heartbeat_minutes = 5       # ping
maximum_skew_minutes = 5000

[outbound] # ---------------------------------------------------------------------------------------- P2P Outbound Settings
connections = 100
host_pool_capacity = 10000
connect_batch_size = 5
use_ipv6 = true
seeding_timeout_seconds = 42
Slackbot16:30
👻
eynhaender16:31
I am currently testing on a PI4 but that's rather to show that it's not feasible.
josie16:32
this is awesome! thanks for sharing
eynhaender16:36
Unfortunately, this can only be set as root.
evoskuil18:33
bucket sizing is a tradeoff, as it reduces head size but proportionally increases hashmap paging. But when we aren't searching the hashmaps (as in milestone) it's a good one.
evoskuil18:34
Yeah, there's a lot of defaults in that config.
node.threads = 1
This will give you one thread for block validation. Prob only ideal on a 1 thread machine.
(edited)
evoskuil18:35
This is now dead code (startup will fail):
node.allocation_multiple = 1
evoskuil18:37
Otherwise apart from node and network threads, and database tables, this is basically defaults. This will stop the sync at block 950,000, mostly for benchmarking and testin.
maximum_height = 950000
This depends on your situation, it's bumped up above:
seeding_timeout_seconds = 42
evoskuil03:59
Prob only ideal on a 1 thread machine. (edited)
unless milestone, and there it's moot.