Bitcoin full node and query server

Dec 23, 2025

View in context in the libbitcoin Slack #general mirror.

stratan17:27
Hello there! I'm having trouble getting up and running with libbitcoin-node with latest master. I'm not very familar so it's more than likely I've misunderstood something. Running bn --newstore on a fresh install fails after all database files are successfully created. The error message is confusing me. Ideally I'd like to create a regtest config. I'm using the following minimal config:
$ cat /tmp/bn.cfg
[log]
path = /tmp/bn-logs

[database]
path = /tmp/bn-db

[inbound]
bind = 127.0.0.1:18445
connections = 1

[outbound]
connections = 0

$ bn --config /tmp/bn.cfg --newstore
Output:
All files are created, opened, loaded, unloaded, and closed successfully:
create::create_file(header_head)
...
create::close_file(filter_tx_body)
Database creation failed with error 'file failed to load, disk may be full'.
Any kind of pointer would be much appreciated (storage seems fine) 🙂
(edited)
13 replies · pmienk, eynhaender, evoskuil, stratan · last Jan 08, 2026
pmienk20:17
Which files are created and what are their sizes?
pmienk20:18
Additionally, what is your storage size?
eynhaender23:26
I just checked your config and the store has successfully been created with an initial size ob 14GB. This is the minimum you need to start. Then, starting the node without -n but with outbound.connections = 0 in the config will cause the node to just idle and do nothing as it will not connect to any peers.
(edited)
👍🏻 1
evoskuil02:30
A local inbound connection could be made (if a peer has the address:port), on an empty chain. However by default inbound endpoints are suspended until the chain is current (configurable). The error message indicates the disk is full, which seems straightforward. There are other possible causes, but that is the most likely. The startup/create requires about 25% of the mainnet full chain size by default (configurable). Regtest (and testnet) is possible, but we might have to help out with the config settings, as I don't believe they are documented yet. And that hasn't been tested since v3, though I would expect it to work.
(edited)
stratan15:17
Hello folks! I appreciate the prompt feedback and I'm very sorry for ghosting you as I disconnected for a while due to holidays 😅 I'll go over your pointers and get back to you. Thank you once again!
👍🏻 1
stratan19:09
Hello again! Your feedback regarding the disk space was correct. I wasn't expecting it to really be a disk issue as I had over 100gigs of disk space (don't remember the exact number). Now libbitcoin-node spawns and works just fine. I stumbled upon another "issue" when trying to port libbitcoin-node as a target for fuzzamoto. That is, fuzzamoto uses Nyx for deterministic snapshot fuzzing but due to its limited resources it doesn't have enough space to pre-allocate a regtest db profile. I played around and hacked a regtest config that seems to work ok and I would appreciate your feedback on whether I'm overdoing it or not. I haven't found any documentation around libbitcoin-node + regtest so I'm open to suggestions on that side too.
[log]
path = {logdir}

[bitcoin]
# Regtest genesis block (hex-encoded)
genesis_block = {genesis_hex}
# Regtest proof of work limit (0x207fffff = 545259519)
proof_of_work_limit = 545259519
# Accept any valid chain (no minimum work requirement)
minimum_work = 0000000000000000000000000000000000000000000000000000000000000000

[forks]
# Regtest allows easy mining without real proof of work
difficult = false

[network]
# Regtest network magic (0xDAB5BFFA = 3669344250)
identifier = 3669344250

[inbound]
# Listen for P2P connections
bind = 127.0.0.1:{p2p_port}
connections = 10
enable_loopback = true

[outbound]
# Disable outbound connections to prevent contacting mainnet seeds
connections = 0
host_pool_capacity = 0

[database]
path = {datadir}
# Tiny regtest DB profile (avoid multi-GB prealloc).
header_buckets = 1
header_size = 1000
txs_buckets = 1
txs_size = 1000
tx_buckets = 1
tx_size = 1000
point_buckets = 1
point_size = 1000
strong_tx_buckets = 1
strong_tx_size = 1000

input_size = 1000
ins_size = 1000
output_size = 1000
outs_size = 1000

candidate_size = 1000
confirmed_size = 1000
duplicate_buckets = 1
duplicate_size = 100
prevout_buckets = 0
prevout_size = 1

validated_bk_buckets = 1
validated_bk_size = 1000
validated_tx_buckets = 1
validated_tx_size = 1000

address_buckets = 1
address_size = 1000
filter_bk_buckets = 0
filter_tx_buckets = 0

[node]
# Don't delay inbound peers waiting for "current" chain state (regtest genesis is old).
delay_inbound = false
evoskuil03:44
Hi, you've definitely got the right idea. I haven't tested regtest or testnet in a long time, so it's good to see this. I’m traveling so can provide much more feedback, but it should work. Just note that one bucket means the hash table becomes a linked list. That's fine but of course will be a bit slow if there are a lot of entries. I do it by accident sometimes and am always surprised that’s it’s pretty fast considering. Also, I don't think you want loopback. That allows the node to connect to itself.
evoskuil03:44
Also, bn is no longer. You will need to move to bs for future work. Same config and command line otherwise.
stratan07:19
Thank you for the feedback! I’ll keep it in mind.
stratan07:22
As far as I understand bs isn't at a “usable state” according to its README, which is why I pivoted to bn. How do you suggest I proceed?
(edited)
pmienk07:24
Eric is referring to changes within the last week. The readme has not been updated.
stratan11:43
Looks like latest master (libbitcoin-server) works now (--help and --version still reference bn) 🙂
./libbitcoin-server/console/bs --help

Usage: bn [-abdfhiklnrsv] [--config value] [--test value] [--write value]

Info: Runs a full bitcoin node.                                          

Options (named):

-a [--slabs]         Scan and display store slab measures.               
-b [--backup]        Backup to a snapshot (can also do live).            
-c [--config]        Specify path to a configuration settings file.      
-d [--hardware]      Display hardware compatibility.                     
-f [--flags]         Scan and display all flag transitions.              
-h [--help]          Display command line options.                       
-i [--information]   Scan and display store information.                 
-k [--buckets]       Scan and display all bucket densities.              
-l [--collisions]    Scan and display hashmap collision stats (may exceed
                     RAM and result in SIGKILL).                         
-n [--newstore]      Create new store in configured directory.           
-r [--restore]       Restore from most recent snapshot.                  
-s [--settings]      Display all configuration settings.                 
-t [--test]          Run built-in read test and display.                 
-v [--version]       Display version information.                        
-w [--write]         Run built-in write test and display.                
(edited)
eynhaender12:43
Everything but the ---help message has moved up to server, the updated readme is currently under review. All build related stuff should should work for bs (-server) like it did for bn (-node) last week.
👍 1