View in context in the libbitcoin Slack #general mirror.
Bitcoin (node) does not provide for high volume (but can of course accommodate high cost small payments). Lightning is in some ways problematic, but under its assumption of infrequent on-chain transaction, I don’t see any conflict with the above observations.
FWIW, I haven’t seen the passive LN thing working, and not because nodes are expensive.
And keep in mind that libbitcoin is just one project. We have specific objectives. We don’t stop anyone else from making nodes that optimize for a pi with 4MB. But there is no reason a modest PC should take forever to sync.
Again, there is no need for outputs to persist in RAM. We are talking about sync times that are absurdly high without even performing script validation. There is no reason for scripts to be consuming RAM. Query over existence and spentness is sufficient.
When your store is slow and non-concurrent, and your processing is unduly ordered, RAM feels like the only solution.
bnevents.log. I believe current build emits only the block_archived event (with block height and time in seconds from startup). This will show the individual blocks archived since the node started up. You can also type i <enter> while the node is running and it will dump store stats to the console. Finally, you can type p <enter> and see individual blocks being archived at the console. This is a toggle, type again to disable.2024-10-15T17:45:38Z.0 Body sizes... header :84847420 txs :192929304 tx :2921586630 point :4068475272 input :14381059167 output :4461494048 puts :1088675541 candidate :2597370 confirmed :3 spend :2719974744 strong_tx :565389996 valid_tx :0 valid_bk :0 address :0 neutrino :0 2024-10-15T17:45:38Z.0 Table records... header :865790 tx :47122365 point :113013202 candidate :865790 confirmed :1 spend :113332281 strong_tx :47115833 address :0 2024-10-15T17:45:38Z.0 Head buckets... header :565129 txs :565129 tx :681968291 point :638910752 spend :1739749749 strong_tx :681968291 valid_tx :681968291 valid_bk :565129 address :1 neutrino :1 2024-10-15T17:45:38Z.0 Collision rates... header :1.53202 txs :1.53202 tx :0.0690976 point :0.176884 spend :0.0651429 strong_tx :0.069088 valid_tx :0.0690976 valid_bk :1.53202 address :0 neutrino :0
block_archived event would show a much lower number?
2024-10-15T17:44:33Z.0 Body sizes... header :84847420 txs :189308 tx :655464 point :28296 input :162756 output :856072 puts :98121 candidate :2597370 confirmed :3 spend :270960 strong_tx :126840 valid_tx :0 valid_bk :0 address :0 neutrino :0 2024-10-15T17:44:33Z.0 Table records... header :865790 tx :10572 point :786 candidate :865790 confirmed :1 spend :11290 strong_tx :10571 address :0 2024-10-15T17:44:33Z.0 Head buckets... header :524493 txs :524493 tx :551320125 point :546188501 spend :1459791875 strong_tx :551320125 valid_tx :551320125 valid_bk :524493 address :1 neutrino :1 2024-10-15T17:44:33Z.0 Collision rates... header :1.65072 txs :1.65072 tx :1.91758e-05 point :1.43906e-06 spend :7.73398e-06 strong_tx :1.91758e-05 valid_tx :1.91758e-05 valid_bk :1.65072 address :0 neutrino :0
$ tail -f events.log block_archived...... 768617 17 block_archived...... 757842 19
2024-10-15T18:18:55Z.0 Body sizes... header :84847910 txs :3127058952 tx :48304299758 point :73453346676 input :181148659338 output :75376308520 puts :19056712575 candidate :2597385 confirmed :3 spend :48987159240 strong_tx :9349219308 valid_tx :0 valid_bk :0 address :0 neutrino :0 2024-10-15T18:18:55Z.0 Table records... header :865795 tx :779101609 point :2040370741 candidate :865795 confirmed :1 spend :2041131635 strong_tx :779101609 address :0 2024-10-15T18:18:55Z.0 Head buckets... header :524493 txs :524493 tx :551320125 point :546188501 spend :1459791875 strong_tx :551320125 valid_tx :551320125 valid_bk :524493 address :1 neutrino :1 2024-10-15T18:18:55Z.0 Version Information... libbitcoin-node: 4.0.0 libbitcoin-database: 4.0.0 libbitcoin-network: 4.0.0 libbitcoin-system: 4.0.0 2024-10-15T18:18:55Z.0 Press CTRL-C to stop the node.
[log] path = X:/ application = true news = true session = true protocol = false quitting = false proxy = false remote = true fault = true verbose = false #objects = false # debug builds only [database] path = X:/bitcoin/ minimize = false [bitcoin] # defaults to all checkpoints. #checkpoint = 000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f:0 minimum_work = 000000000000000000000000000000000000000052b2559353df4117b7348b64 milestone = 0000000000000000000320283a032748cef8227873ff4872689bf23f1cda83a5:840000 [forks] [node] headers_first = true allowed_deviation = 1.5 sample_period_seconds = 10 currency_window_minutes = 60 maximum_concurrency = 50,000 maximum_height = 840,000 # stops block sync (not header sync) snapshot_bytes = 0 snapshot_valid = 0 allocation_multiple = 20 [network] threads = 16 outbound_connections = 200 connect_batch_size = 5 host_pool_capacity = 10,000 enable_loopback = false self = xxx.xxx.xxx.xxx:8333 # advertised addresses inbound_connections = 0 # Use 1 for loopback user_agent = "/libbitcoin /" enable_ipv6 = false enable_alert = false # log alert messages enable_reject = false # send reject messages enable_address = true # in/out address messages enable_transaction = false # peer should not relay txs validate_checksum = false # validate inbound message checksum invalid_services = 176 # shitcoins services_minimum = 9 # witness node services_maximum = 9 # witness node protocol_maximum = 70012 # current default (send_headers). protocol_minimum = 31800 # Satoshi:22.0.0 minimum (headers). minimum_buffer = 1,000,000 # network payload buffer (per channel) 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 handshake_timeout_seconds = 5 # time to complete handshake. channel_heartbeat_minutes = 5 # ping channel_inactivity_minutes = 10 # receive channel_expiration_minutes = 60 # unconditional [database] # TODO: These require tuning for low RAM machines. header_buckets = 565,129 header_size = 21,000,000 header_rate = 5 txs_buckets = 565,129 txs_size = 1,000,000,000 txs_rate = 5 tx_buckets = 681,968,291 tx_size = 16,000,000,000 tx_rate = 5 # compressed size point_buckets = 638,910,752 point_size = 9,000,000,000 point_rate = 5 spend_buckets = 1,739,749,749 spend_size = 16,000,000,000 spend_rate = 5 puts_size = 7,000,000,000 puts_rate = 5 input_size = 92,000,000,000 input_rate = 5 output_size = 25,000,000,000 output_rate = 5 candidate_size = 2,568,513 candidate_rate = 5 confirmed_size = 2,568,513 confirmed_rate = 5 strong_tx_buckets = 681,968,291 strong_tx_size = 3,000,000,000 strong_tx_rate = 5 validated_tx_buckets = 681,968,291 validated_tx_size = 1 validated_tx_rate = 5 validated_bk_buckets = 565,129 validated_bk_size = 2,000,000 validated_bk_rate = 5 address_buckets = 0 address_size = 1 address_rate = 0 neutrino_buckets = 0 neutrino_size = 1 neutrino_rate = 0
_size values down to 1/4 to 1/10 of above for lower RAM. This is required to prevent mmap thrashing. Also the growth _rate values must be small. I run at 15, but these are probably okay for low RAM at 5.--settings or -s.m <enter> at runtime to see the runtime options and --help or -h at the command line to see the CL options (there's some overlap).