Archive of the libbitcoin Slack #general channel.
void executor::read_test() const
{
constexpr auto start_tx = 15'000_u32;
constexpr auto ns_to_ms = 1'000'000_i64;
constexpr auto target_count = 3000_size;
// Set ensures unique addresses.
std::set<hash_digest> keys{};
auto tx = start_tx;
console(format("Getting first [%1%] output address hashes.") %
target_count);
auto start = fine_clock::now();
while (!cancel_ && keys.size() < target_count)
{
const auto outputs = query_.get_outputs(tx++);
if (outputs->empty())
return;
for (const auto& put: *outputs)
{
keys.emplace(put->script().hash());
if (cancel_ || keys.size() == target_count)
break;
}
}
auto end = fine_clock::now();
console(format("Got first [%1%] unique addresses above tx [%2%] in [%3%] ms.") %
keys.size() % start_tx % ((end - start).count() / ns_to_ms));
struct out
{
// Address hash, output link, first spender link.
hash_digest address;
uint64_t output_fk;
uint64_t spend_fk;
uint64_t input_fk;
// Output's tx link, hash, and block position.
uint64_t tx_fk;
hash_digest tx_hash;
uint16_t tx_position;
// Output tx's block link, hash, and height.
uint32_t bk_fk;
hash_digest bk_hash;
uint32_t bk_height;
// Spender's tx link, hash, and block position.
uint64_t in_tx_fk;
hash_digest in_tx_hash;
uint16_t in_tx_position;
// Spender tx's block link, hash, and height.
uint32_t in_bk_fk;
hash_digest in_bk_hash;
uint32_t in_bk_height;
// Spender (first input) and output.
chain::output::cptr output{};
chain::input::cptr input{};
};
std::vector<out> outs{};
outs.reserve(target_count);
using namespace database;
start = fine_clock::now();
for (auto& key: keys)
{
auto address_it = store_.address.it(key);
if (cancel_ || address_it.self().is_terminal())
return;
do
{
table::address::record address{};
if (cancel_ || !store_.address.get(address_it.self(), address))
return;
const auto out_fk = address.output_fk;
table::output::get_parent output{};
if (!store_.output.get(out_fk, output))
return;
const auto tx_fk = output.parent_fk;
const auto block_fk = query_.to_block(tx_fk);
// Output tx block has height.
database::height_link bk_height{};
table::header::get_height bk_header{};
if (!block_fk.is_terminal())
if (!store_.header.get(block_fk, bk_header))
return;
else
bk_height = bk_header.height;
// The block is confirmed by height.
table::height::record height_record{};
const auto confirmed = store_.confirmed.get(bk_height,
height_record) && (height_record.header_fk == block_fk);
// unconfirmed tx: max height/pos, null hash, terminal/zero links.
if (!confirmed)
{
outs.emplace_back(
key,
out_fk,
max_uint64, // spend_fk
max_uint64, // input_fk
tx_fk,
null_hash,
max_uint16, // position
block_fk,
null_hash,
max_uint32, // height
// in_tx
max_uint64,
null_hash,
max_uint16, // position
// in_bk_tx
max_uint32,
null_hash,
max_uint32, // height
nullptr,
nullptr);
continue;
}
// Get confirmed output tx block position.
auto out_position = max_uint16;
table::txs::get_position txs{ {}, tx_fk };
if (!store_.txs.get(query_.to_txs_link(block_fk), txs))
return;
else
out_position = possible_narrow_cast<uint16_t>(txs.position);
// Get first spender only (may or may not be confirmed).
const auto spenders = query_.to_spenders(out_fk);
spend_link sp_fk{};
if (!spenders.empty())
sp_fk = spenders.front();
// Get spender input, tx, position, block, height.
auto in_position = max_uint16;
input_link in_fk{};
tx_link in_tx_fk{};
header_link in_bk_fk{};
height_link in_bk_height{};
if (!sp_fk.is_terminal())
{
table::spend::record spend{};
if (!store_.spend.get(sp_fk, spend))
{
return;
}
else
{
in_fk = spend.input_fk;
in_tx_fk = spend.parent_fk;
}
// Get spender tx block.
in_bk_fk = query_.to_block(in_tx_fk);
// Get in_tx position in the confirmed block.
table::txs::get_position in_txs{ {}, in_tx_fk };
if (!in_bk_fk.is_terminal())
if (!store_.txs.get(query_.to_txs_link(in_bk_fk), in_txs))
return;
else
in_position = possible_narrow_cast<uint16_t>(in_txs.position);
// Get spender input tx block height.
table::header::get_height in_bk_header{};
if (!in_bk_fk.is_terminal())
if (!store_.header.get(in_bk_fk, in_bk_header))
return;
else
in_bk_height = in_bk_header.height;
}
const auto in = query_.get_input(sp_fk);
const auto out = query_.get_output(out_fk);
// confirmed tx has block height and tx position.
outs.emplace_back(
key,
out_fk,
sp_fk,
in_fk,
tx_fk,
query_.get_tx_key(tx_fk),
out_position,
block_fk,
query_.get_header_key(block_fk),
bk_height,
in_tx_fk,
query_.get_tx_key(in_tx_fk),
in_position,
in_bk_fk,
query_.get_header_key(in_bk_fk),
in_bk_height,
out,
in);
}
while (address_it.advance());
}
end = fine_clock::now();
console(format("Got all [%1%] payments to [%2%] addresses in [%3%] ms.") %
outs.size() % keys.size() % ((end - start).count() / ns_to_ms));
}disk full errors emanating from one or more tables. Basically the queries weren't written with that expectation, but now are. Running tests now in the disk full scenario, where presently I just leave it running while it rejects storage in whatever table is full, resulting in partial writes but valid data.backup implementation that can result in a deadlock. The node broadcasts a pause event so that network traffic halts, and then waits until there are no outstanding writes by waiting on a database write lock. But new channels often pop up and have not received the event, resulting in a log wait (until there is no actual write traffic). It's similar to the shutdown wait, but that's safe because it permanently terminates all channels.pause event rebroadcast in the backup event handler in the case of a wait_lock event. The wait_lock signals that store write exclusivity was not obtained for a full second and will retry. Resending the pause event suspends any channels that may have missed it on the initial send. This does technically present a halting problem, since that back and forth can theoretically go on forever, but that's extremely unlikely. If it did for some reason happen, all that occurs is the backup is deferred until store close, which suspends all channels, resulting in backup obtaining the lock, completing the snapshot, and then close obtaining the lock. So a simple one line good solution to a tricky race condition.pause event rebroadcast in the backup event handler in the case of a wait_lock event. The wait_lock signals that store write exclusivity was not obtained for a full second and will retry. Resending the pause event suspends any channels that may have missed it on the initial send. This does technically present a halting problem, since that back and forth can theoretically go on forever, but that's extremely unlikely. If it did for some reason happen, all that occurs is the backup is deferred until store close, which suspends all channels, resulting in backup obtaining the lock, completing the snapshot, and then close obtaining the lock. So a simple one line good solution to a tricky race condition.disk_full error state. Some will succeed because each table has an independent file with its own preallocation. Since disk_full is no longer a terminal error, the node will just continue to iterate with potential partial success and failure. Eventually if there are successes, those can fill up the preallocation and then will start failing as well. The only down side is wasted store space prior to resumption following space being freed up. Currently if I free up space the node just continues normally. But to limit wasted space we want to suspend operations as soon as a disk_full condition arises, and resume once space becomes available.libbitcoin-network stack to enable connect/accept suspension. Normally the connectors are allocated at startup and run in a callback loop, always attempting to maintain the configured number of connections. But for both backup and store full/fault conditions, we need to suspend this.
So I made those modifications, which were simple. The connector and acceptor classes are now constructed with a reference to an atomic bool, owned by p2p. This tells them to bypass connection attempts with a specific error code. Since certain errors result in a delayed retry (precluding tight loops on things like no internet or no addresses), this fits naturally into the design.flush_lock file so that the corruption knowledge is retained. Disk full is not a corrupted state, so it's just a normal shutdown. However space can be freed and the command line option triggered to resume, which works perfectly.node object timer that gets set on disk full, which will poll for sufficient space to resume (this can be computed from table properties) automatically. Polling isn't probably absolutely necessary, but system events are a little more platform-specific.
Also I'm going to track accumulated store work/size (bytes, txs, validation...) so that snapshots can be taken automatically at reasonable/configurable intervals.[network] peer = <local network node IP address>:8333 outbound_connections = 1 [blockchain] # I set this to the number of virtual cores since default is physical cores cores = 12 checkpoint = 000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f:0 [database] cache_capacity = 100000

node (not network) is leaking closed channels. It's also possible for channels to miss chaser events given how they asynchronously subscribe. So I'll be cleaning that up (requires a desubscriber object vs. a simple subscriber).bn command line and settings as well as the add-hoc executable source. Added a few things while I was at it, including an option to detect platform intrinsics:
Intrinsics... arm..... present:0. intel... present:1. avx512.. present:0 compiled:1. avx2.... present:1 compiled:1. sse41... present:1 compiled:1. shani... present:0 compiled:1. neon.... present:0 compiled:0.
2024-05-09T05:03:27Z.0 ====================== startup ======================= 2024-05-09T05:03:27Z.0 Press CTRL-C to stop the node. 2024-05-09T05:03:27Z.0 Log system configuration... 2024-05-09T05:03:27Z.0 Application.. compiled:1 enabled:1. 2024-05-09T05:03:27Z.0 News......... compiled:1 enabled:1. 2024-05-09T05:03:27Z.0 Session...... compiled:1 enabled:1. 2024-05-09T05:03:27Z.0 Protocol..... compiled:1 enabled:0. 2024-05-09T05:03:27Z.0 ProXy........ compiled:1 enabled:0. 2024-05-09T05:03:27Z.0 Wire......... compiled:0 enabled:0. 2024-05-09T05:03:27Z.0 Remote....... compiled:1 enabled:1. 2024-05-09T05:03:27Z.0 Fault........ compiled:1 enabled:1. 2024-05-09T05:03:27Z.0 Quit......... compiled:1 enabled:0. 2024-05-09T05:03:27Z.0 Object....... compiled:0 enabled:0. 2024-05-09T05:03:27Z.0 Verbose...... compiled:1 enabled:0. 2024-05-09T05:03:27Z.0 Using config file: "f:\\bn.cfg" 2024-05-09T05:03:27Z.0 Database failed to start with error 'flush lock failure'. 2024-05-09T05:03:27Z.0 Please wait while restoring from most recent snapshot... 2024-05-09T05:03:27Z.0 restore::recover_snapshot(store) 2024-05-09T05:03:45Z.0 restore::open_file(header_head) 2024-05-09T05:03:45Z.0 restore::open_file(header_body) 2024-05-09T05:03:45Z.0 restore::open_file(input_head) 2024-05-09T05:03:45Z.0 restore::open_file(input_body) 2024-05-09T05:03:45Z.0 restore::open_file(output_head) 2024-05-09T05:03:45Z.0 restore::open_file(output_body) 2024-05-09T05:03:45Z.0 restore::open_file(point_head) 2024-05-09T05:03:45Z.0 restore::open_file(point_body) 2024-05-09T05:03:45Z.0 restore::open_file(puts_head) 2024-05-09T05:03:45Z.0 restore::open_file(puts_body) 2024-05-09T05:03:45Z.0 restore::open_file(spend_head) 2024-05-09T05:03:45Z.0 restore::open_file(spend_body) 2024-05-09T05:03:45Z.0 restore::open_file(tx_head) 2024-05-09T05:03:45Z.0 restore::open_file(tx_body) 2024-05-09T05:03:45Z.0 restore::open_file(txs_head) 2024-05-09T05:03:45Z.0 restore::open_file(txs_body) 2024-05-09T05:03:45Z.0 restore::open_file(candidate_head) 2024-05-09T05:03:45Z.0 restore::open_file(candidate_body) 2024-05-09T05:03:45Z.0 restore::open_file(confirmed_head) 2024-05-09T05:03:45Z.0 restore::open_file(confirmed_body) 2024-05-09T05:03:45Z.0 restore::open_file(strong_tx_head) 2024-05-09T05:03:45Z.0 restore::open_file(strong_tx_body) 2024-05-09T05:03:45Z.0 restore::open_file(validated_bk_head) 2024-05-09T05:03:45Z.0 restore::open_file(validated_bk_body) 2024-05-09T05:03:45Z.0 restore::open_file(validated_tx_head) 2024-05-09T05:03:45Z.0 restore::open_file(validated_tx_body) 2024-05-09T05:03:45Z.0 restore::open_file(address_head) 2024-05-09T05:03:45Z.0 restore::open_file(address_body) 2024-05-09T05:03:45Z.0 restore::open_file(neutrino_head) 2024-05-09T05:03:45Z.0 restore::open_file(neutrino_body) 2024-05-09T05:03:45Z.0 restore::load_file(header_head) 2024-05-09T05:03:45Z.0 restore::load_file(header_body) 2024-05-09T05:03:45Z.0 restore::load_file(input_head) 2024-05-09T05:03:45Z.0 restore::load_file(input_body) 2024-05-09T05:03:45Z.0 restore::load_file(output_head) 2024-05-09T05:03:45Z.0 restore::load_file(output_body) 2024-05-09T05:03:45Z.0 restore::load_file(point_head) 2024-05-09T05:03:45Z.0 restore::load_file(point_body) 2024-05-09T05:03:45Z.0 restore::load_file(puts_head) 2024-05-09T05:03:45Z.0 restore::load_file(puts_body) 2024-05-09T05:03:45Z.0 restore::load_file(spend_head) 2024-05-09T05:03:45Z.0 restore::load_file(spend_body) 2024-05-09T05:03:45Z.0 restore::load_file(tx_head) 2024-05-09T05:03:45Z.0 restore::load_file(tx_body) 2024-05-09T05:03:45Z.0 restore::load_file(txs_head) 2024-05-09T05:03:45Z.0 restore::load_file(txs_body) 2024-05-09T05:03:45Z.0 restore::load_file(candidate_head) 2024-05-09T05:03:45Z.0 restore::load_file(candidate_body) 2024-05-09T05:03:45Z.0 restore::load_file(confirmed_head) 2024-05-09T05:03:45Z.0 restore::load_file(confirmed_body) 2024-05-09T05:03:45Z.0 restore::load_file(strong_tx_head) 2024-05-09T05:03:45Z.0 restore::load_file(strong_tx_body) 2024-05-09T05:03:45Z.0 restore::load_file(validated_bk_head) 2024-05-09T05:03:45Z.0 restore::load_file(validated_bk_body) 2024-05-09T05:03:45Z.0 restore::load_file(validated_tx_head) 2024-05-09T05:03:45Z.0 restore::load_file(validated_tx_body) 2024-05-09T05:03:45Z.0 restore::load_file(address_head) 2024-05-09T05:03:45Z.0 restore::load_file(address_body) 2024-05-09T05:03:45Z.0 restore::load_file(neutrino_head) 2024-05-09T05:03:45Z.0 restore::load_file(neutrino_body) 2024-05-09T05:03:45Z.0 restore::restore_table(header_table) 2024-05-09T05:03:45Z.0 restore::restore_table(input_table) 2024-05-09T05:03:45Z.0 restore::restore_table(output_table) 2024-05-09T05:03:45Z.0 restore::restore_table(point_table) 2024-05-09T05:03:45Z.0 restore::restore_table(puts_table) 2024-05-09T05:03:45Z.0 restore::restore_table(spend_table) 2024-05-09T05:03:45Z.0 restore::restore_table(tx_table) 2024-05-09T05:03:45Z.0 restore::restore_table(txs_table) 2024-05-09T05:03:45Z.0 restore::restore_table(candidate_table) 2024-05-09T05:03:45Z.0 restore::restore_table(confirmed_table) 2024-05-09T05:03:45Z.0 restore::restore_table(strong_tx_table) 2024-05-09T05:03:45Z.0 restore::restore_table(validated_bk_table) 2024-05-09T05:03:45Z.0 restore::restore_table(validated_tx_table) 2024-05-09T05:03:45Z.0 restore::restore_table(address_table) 2024-05-09T05:03:45Z.0 restore::restore_table(neutrino_table) 2024-05-09T05:03:45Z.0 Restored the database in 17 secs.
2024-05-09T05:05:53Z.0 ====================== startup ======================= 2024-05-09T05:05:53Z.0 Press CTRL-C to stop the node. 2024-05-09T05:05:53Z.0 Log system configuration... 2024-05-09T05:05:53Z.0 Application.. compiled:1 enabled:1. 2024-05-09T05:05:53Z.0 News......... compiled:1 enabled:1. 2024-05-09T05:05:53Z.0 Session...... compiled:1 enabled:1. 2024-05-09T05:05:53Z.0 Protocol..... compiled:1 enabled:0. 2024-05-09T05:05:53Z.0 ProXy........ compiled:1 enabled:0. 2024-05-09T05:05:53Z.0 Wire......... compiled:0 enabled:0. 2024-05-09T05:05:53Z.0 Remote....... compiled:1 enabled:1. 2024-05-09T05:05:53Z.0 Fault........ compiled:1 enabled:1. 2024-05-09T05:05:53Z.0 Quit......... compiled:1 enabled:0. 2024-05-09T05:05:53Z.0 Object....... compiled:0 enabled:0. 2024-05-09T05:05:53Z.0 Verbose...... compiled:1 enabled:0. 2024-05-09T05:05:53Z.0 Using config file: "f:\\bn.cfg" 2024-05-09T05:05:53Z.0 Database failed to start with error 'flush lock failure'. 2024-05-09T05:05:53Z.0 Please wait while restoring from most recent snapshot... 2024-05-09T05:05:53Z.0 restore::recover_snapshot(store) 2024-05-09T05:05:53Z.0 Database restore failed with error 'missing snapshot'. 2024-05-09T05:05:53Z.0 Node stopped successfully. 2024-05-09T05:05:53Z.0 ====================== shutdown ====================== 2024-05-09T05:05:53Z.0 Press <enter> to exit...
$ bn -c f:\bn.cfg -b Using config file: "f:\bn.cfg" Database is started. Backup is started. backup::flush_body(header_body) backup::flush_body(input_body) backup::flush_body(output_body) backup::flush_body(point_body) ...(edited)
$ bn -c f:\bn.cfg -f Using config file: "f:\bn.cfg" Database is started. Press CTRL-C to cancel operation. Forked from [00000000000000000000000000000000] to [00000000000000100000000010001011] at [00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048:1] Forked from [00000000000000100000000010001011] to [00000000000000100000000010000011] at [00000000000a4d0a398161ffc163c503763b1f4360639393e0e4c8e300e0caec:91842] Forked from [00000000000000100000000010000011] to [00000000000000100000000010001011] at [0000000000016ca756e810d44aee6be7eabad75d2209d7f4542d1fd53bafc984:91843] Forked from [00000000000000100000000010001011] to [00000000000000100000000010000011] at [00000000000743f190a18c5577a3c2d2a1f610ae9601ac046a38084ccb7cd721:91880] Forked from [00000000000000100000000010000011] to [00000000000000100000000010001011] at [00000000000cf6204ce82deed75b050014dc57d7bb462d7214fcc4e59c48d66d:91881] Forked from [00000000000000100000000010001011] to [00000000000000100000000010001111] at [00000000000000ce80a7e057163a4db1d5ad7b20fb6f598c9597b9665c8fb0d4:173805] Forked from [00000000000000100000000010001111] to [00000000000000100000000010011111] at [000000000000024b89b42a942fe0d9fea3bb44ab7bd1b19115dd6a759c0808b8:227931] Forked from [00000000000000100000000010011111] to [00000000000000100000000010010111] at [0000000000000000242af5e3a276d9c1546dffa6ba59de791c7e89afe929f22c:295001] Forked from [00000000000000100000000010010111] to [00000000000000100000000010110111] at [00000000000000000379eaa19dce8c9b722d46ae6a57c2f1a988119488b50931:363725] Forked from [00000000000000100000000010110111] to [00000000000000100000000011110111] at [000000000000000004c2b624ed5d7756c508d90fd0da2c7c679febfa6c4735f0:388381] Forked from [00000000000000100000000011110111] to [00000000000000100000011111110111] at [000000000000000004a1b34462cb8aeebd5799177f7a29cf28f2d1961716b5b5:419328] Forked from [00000000000000100000011111110111] to [00000000000000100011111111110111] at [0000000000000000001c8018d9cb3b742ef25114f27563e3fc4a1902167f9893:481824] Scanned 842658 headers for rule forks in 731 ms.(edited)
$ bn -c f:\bn.cfg -h Usage: bn [-abdfhiklmrsvwx] [--config 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 [--initchain] Initialize store in configured directory. -k [--buckets] Scan and display all bucket densities. -l [--collisions] Scan and display hashmap collision stats. -m [--measure] Scan and display store measures. -r [--read] Read test and display performance. -s [--settings] Display all configuration settings. -v [--version] Display version information. -w [--write] Write test and display performance. -x [--restore] Restore from most recent snapshot.
$ bn -c f:\bn.cfg -m Using config file: "f:\\bn.cfg" Database is started. Body sizes... header :81737923 txs :782483017 tx :12038595862 point :9237925692 input :68112813752 output :18806129371 puts :4695083260 candidate :2527977 confirmed :606444 spend :11951874960 strong_tx :92825832 valid_tx :23 valid_bk :8 address :22706074440 neutrino :0 Table records... header :842659 tx :194170901 point :256609047 candidate :842659 confirmed :202148 spend :497994790 strong_tx :7735486 address :540620820 Head buckets... header :524493 txs :524493 tx :551320125 point :546188501 spend :1459791875 strong_tx :551320125 valid_tx :551320125 valid_bk :524493 address :1459791875 neutrino :1 Collision rates... header :1.60662 txs :1.60662 tx :0.352193 point :0.469818 spend :0.341141 strong_tx :0.0140308 valid_tx :0.352193 valid_bk :1.60662 address :0.370341 neutrino :0 Thinking... Chain progress... fork pt :202147 top conf :202147:00000000000001ba80ec8a53d799eabfd6697d4df4eb8bff22b0c997c0240373 top cand :842658:000000000000000000022644b4cc8c65ab3564c1e01de433e50d9582beb033f8 top assoc :202148 associated:386626 wire conf :3343025952 wire cand :108292014268 Please wait while database is stopping... Database stopped successfully in 11 secs.
libbitcoin-consensus today, since Core has removed their support for it. They never gave it a serious effort and as a result it wasn't really worth us maintaining.w allows us to dump the download work distribution across peers. The number is the count of block hashes held by the channel. These get subtracted out as the requested blocks arrive. Work load balancing is an important part of maintaining performance. When the node is close to complete, this is a list of all (1) and then all (0) - which is cool to see, as that balancing isn't easy.
2024-05-09T05:36:19Z.1 Work (401) for channel [3.81.214.163:8333]. 2024-05-09T05:36:19Z.1 Work (275) for channel [3.130.132.234:8333]. 2024-05-09T05:36:19Z.1 Work (814) for channel [167.99.125.50:8333]. 2024-05-09T05:36:19Z.1 Work (1135) for channel [108.49.232.210:8333]. 2024-05-09T05:36:19Z.1 Work (919) for channel [54.84.231.203:8333]. 2024-05-09T05:36:19Z.1 Work (1191) for channel [3.19.154.196:8333]. 2024-05-09T05:36:19Z.1 Work (914) for channel [34.204.100.116:8333]. 2024-05-09T05:36:19Z.1 Work (1042) for channel [51.222.249.153:8339]. 2024-05-09T05:36:19Z.1 Work (936) for channel [154.38.185.146:8333]. 2024-05-09T05:36:19Z.1 Work (2948) for channel [71.127.40.169:8333]. 2024-05-09T05:36:19Z.1 Work (847) for channel [66.94.103.62:8333]. 2024-05-09T05:36:19Z.1 Work (958) for channel [154.38.185.204:8333]. 2024-05-09T05:36:19Z.1 Work (998) for channel [99.99.12.59:8333]. 2024-05-09T05:36:19Z.1 Work (1325) for channel [51.81.67.34:8333]. 2024-05-09T05:36:19Z.1 Work (1404) for channel [203.161.33.132:8333]. 2024-05-09T05:36:19Z.1 Work (999) for channel [119.224.78.28:8333]. 2024-05-09T05:36:19Z.1 Work (838) for channel [18.224.59.88:8333]. 2024-05-09T05:36:19Z.1 Work (310) for channel [3.143.225.236:8333]. 2024-05-09T05:36:19Z.1 Work (990) for channel [66.94.117.48:8333]. 2024-05-09T05:36:19Z.1 Work (2873) for channel [89.117.74.213:8333]. 2024-05-09T05:36:19Z.1 Work (3121) for channel [100.36.127.250:8333]. 2024-05-09T05:36:19Z.1 Work (1434) for channel [99.8.76.101:8333]. 2024-05-09T05:36:19Z.1 Work (3005) for channel [138.197.173.43:8333]. 2024-05-09T05:36:19Z.1 Work (1013) for channel [89.117.76.95:8333]. 2024-05-09T05:36:19Z.1 Work (1577) for channel [169.197.147.164:51172]. 2024-05-09T05:36:19Z.1 Work (1588) for channel [88.198.10.155:30865]. 2024-05-09T05:36:19Z.1 Work (1356) for channel [166.78.241.9:8333]. 2024-05-09T05:36:19Z.1 Work (1345) for channel [18.188.94.72:8333]. 2024-05-09T05:36:19Z.1 Work (1433) for channel [149.28.219.168:48871]. 2024-05-09T05:36:19Z.1 Work (1057) for channel [147.135.70.192:8333]. 2024-05-09T05:36:19Z.1 Work (2625) for channel [192.99.101.86:8333]. 2024-05-09T05:36:19Z.1 Work (1431) for channel [134.122.46.153:8333]. 2024-05-09T05:36:19Z.1 Work (1404) for channel [69.131.98.87:8333]. 2024-05-09T05:36:19Z.1 Work (1259) for channel [18.27.79.17:8333]. 2024-05-09T05:36:19Z.1 Work (1298) for channel [64.225.29.221:8333]. 2024-05-09T05:36:19Z.1 Work (3092) for channel [34.201.35.203:8333]. 2024-05-09T05:36:19Z.1 Work (1472) for channel [141.98.219.12:8333]. 2024-05-09T05:36:19Z.1 Work (1383) for channel [89.117.78.19:8333]. 2024-05-09T05:36:19Z.1 Work (1471) for channel [212.227.234.138:8333]. 2024-05-09T05:36:19Z.1 Work (3066) for channel [31.220.98.248:8333]. 2024-05-09T05:36:19Z.1 Work (3030) for channel [31.220.96.182:8333]. 2024-05-09T05:36:19Z.1 Work (1513) for channel [154.38.185.98:8333]. 2024-05-09T05:36:19Z.1 Work (1362) for channel [154.38.186.125:8333]. 2024-05-09T05:36:19Z.1 Work (3149) for channel [204.16.244.120:8333]. 2024-05-09T05:36:19Z.1 Work (1338) for channel [104.57.241.130:8333]. 2024-05-09T05:36:19Z.1 Work (3182) for channel [31.220.78.114:8333]. 2024-05-09T05:36:19Z.1 Work (1541) for channel [209.126.12.178:8333]. 2024-05-09T05:36:19Z.1 Work (1478) for channel [154.12.237.82:8333]. 2024-05-09T05:36:19Z.1 Work (1447) for channel [8.209.70.77:8333]. 2024-05-09T05:36:19Z.1 Work (1439) for channel [158.220.116.145:8333]. 2024-05-09T05:36:19Z.1 Work (509) for channel [131.153.168.226:8333]. 2024-05-09T05:36:19Z.1 Work (1398) for channel [207.244.244.12:8333]. 2024-05-09T05:36:19Z.1 Work (1422) for channel [185.111.156.55:8333]. 2024-05-09T05:36:19Z.1 Work (1395) for channel [174.91.192.47:8333]. 2024-05-09T05:36:19Z.1 Work (977) for channel [37.60.235.23:8333]. 2024-05-09T05:36:19Z.1 Work (1462) for channel [64.23.238.176:8333]. 2024-05-09T05:36:19Z.1 Work (1405) for channel [108.225.35.253:8333]. 2024-05-09T05:36:19Z.1 Work (1275) for channel [86.155.192.194:8333]. 2024-05-09T05:36:19Z.1 Work (1458) for channel [84.247.172.213:8333]. 2024-05-09T05:36:19Z.1 Work (1523) for channel [174.109.172.57:8333]. 2024-05-09T05:36:19Z.1 Work (834) for channel [73.68.70.94:8333]. 2024-05-09T05:36:19Z.1 Work (1512) for channel [38.242.222.117:8333]. 2024-05-09T05:36:19Z.1 Work (1424) for channel [35.199.190.33:8333]. 2024-05-09T05:36:19Z.1 Work (3136) for channel [74.96.167.182:8333]. 2024-05-09T05:36:19Z.1 Work (1504) for channel [154.12.237.188:8333]. 2024-05-09T05:36:19Z.1 Work (1140) for channel [62.169.29.253:8333]. 2024-05-09T05:36:19Z.1 Work (1490) for channel [37.120.191.196:8333]. 2024-05-09T05:36:19Z.1 Work (1540) for channel [62.169.19.165:8333]. 2024-05-09T05:36:19Z.1 Work (1365) for channel [96.232.127.245:8333]. 2024-05-09T05:36:19Z.1 Work (1384) for channel [5.2.79.49:8333]. 2024-05-09T05:36:19Z.1 Work (2082) for channel [50.99.219.56:8333]. 2024-05-09T05:36:19Z.1 Work (2548) for channel [148.113.159.109:8333]. 2024-05-09T05:36:19Z.1 Work (1421) for channel [37.60.224.4:8333]. 2024-05-09T05:36:19Z.1 Work (1285) for channel [35.92.50.35:8333]. 2024-05-09T05:36:19Z.1 Work (1313) for channel [37.60.227.181:8333]. 2024-05-09T05:36:19Z.1 Work (1357) for channel [91.66.77.135:8333]. 2024-05-09T05:36:19Z.1 Work (1492) for channel [64.20.45.42:8333]. 2024-05-09T05:36:19Z.1 Work (1438) for channel [82.65.34.49:8333]. 2024-05-09T05:36:19Z.1 Work (1591) for channel [37.187.122.25:8333]. 2024-05-09T05:36:19Z.1 Work (1373) for channel [169.197.82.211:8333]. 2024-05-09T05:36:19Z.1 Work (1566) for channel [173.171.2.241:8333]. 2024-05-09T05:36:19Z.1 Work (1521) for channel [154.202.2.224:8333]. 2024-05-09T05:36:19Z.1 Work (1445) for channel [75.172.7.116:8333]. 2024-05-09T05:36:19Z.1 Work (1420) for channel [50.67.16.54:8333]. 2024-05-09T05:36:19Z.1 Work (1359) for channel [75.119.153.252:8333]. 2024-05-09T05:36:19Z.1 Work (1102) for channel [85.1.106.229:8333]. 2024-05-09T05:36:19Z.1 Work (1466) for channel [69.176.188.251:8333]. 2024-05-09T05:36:19Z.1 Work (1249) for channel [31.220.76.171:8333]. 2024-05-09T05:36:19Z.1 Work (1338) for channel [69.165.205.142:8833]. 2024-05-09T05:36:19Z.1 Work (1519) for channel [68.191.43.118:8333]. 2024-05-09T05:36:19Z.1 Work (2278) for channel [84.247.187.27:8333]. 2024-05-09T05:36:19Z.1 Work (1416) for channel [35.194.39.250:8333]. 2024-05-09T05:36:19Z.1 Work (1387) for channel [34.31.229.3:8333]. 2024-05-09T05:36:19Z.1 Work (1248) for channel [91.123.183.219:8333]. 2024-05-09T05:36:19Z.1 Work (1413) for channel [213.165.72.125:8333]. 2024-05-09T05:36:19Z.1 Work (1505) for channel [47.144.22.230:8333]. 2024-05-09T05:36:19Z.1 Work (2977) for channel [34.123.213.165:8333]. 2024-05-09T05:36:19Z.1 Work (2555) for channel [65.108.122.251:8333]. 2024-05-09T05:36:19Z.1 Work (1069) for channel [89.58.10.65:8333]. 2024-05-09T05:36:19Z.1 Work (1393) for channel [74.96.169.16:8333]. 2024-05-09T05:36:19Z.1 Work (1265) for channel [84.112.189.182:8333]. 2024-05-09T05:36:19Z.1 Work (2828) for channel [62.169.20.134:8333]. 2024-05-09T05:36:19Z.1 Work (1543) for channel [70.77.91.155:8333]. 2024-05-09T05:36:19Z.1 Work (1408) for channel [204.194.220.39:8333]. 2024-05-09T05:36:19Z.1 Work (750) for channel [34.18.69.244:8333]. 2024-05-09T05:36:19Z.1 Work (1427) for channel [37.60.224.208:8333]. 2024-05-09T05:36:19Z.1 Work (1299) for channel [178.38.6.52:8333]. 2024-05-09T05:36:19Z.1 Work (1500) for channel [76.156.91.221:8333]. 2024-05-09T05:36:19Z.1 Work (1390) for channel [82.181.221.241:8333]. 2024-05-09T05:36:19Z.1 Work (1346) for channel [68.197.203.181:8333]. 2024-05-09T05:36:19Z.1 Work (1382) for channel [141.94.100.216:8333]. 2024-05-09T05:36:19Z.1 Work (3123) for channel [73.250.52.95:8333]. 2024-05-09T05:36:19Z.1 Work (1509) for channel [194.163.162.249:8333]. 2024-05-09T05:36:19Z.1 Work (1420) for channel [87.236.146.176:8333]. 2024-05-09T05:36:19Z.1 Work (1450) for channel [47.234.214.220:8333]. 2024-05-09T05:36:19Z.1 Work (3073) for channel [98.233.86.37:8333]. 2024-05-09T05:36:19Z.1 Work (1292) for channel [34.106.139.46:8333]. 2024-05-09T05:36:19Z.1 Work (292) for channel [136.243.89.18:8333]. 2024-05-09T05:36:19Z.1 Work (1438) for channel [216.186.236.98:8333]. 2024-05-09T05:36:19Z.1 Work (1384) for channel [37.60.240.121:8333]. 2024-05-09T05:36:19Z.1 Work (1495) for channel [37.60.237.59:8333]. 2024-05-09T05:36:19Z.1 Work (1509) for channel [158.220.85.6:8333]. 2024-05-09T05:36:19Z.1 Work (781) for channel [108.180.186.165:8333]. 2024-05-09T05:36:19Z.1 Work (1541) for channel [73.19.158.188:8333]. 2024-05-09T05:36:19Z.1 Work (1518) for channel [84.247.188.28:8333]. 2024-05-09T05:36:19Z.1 Work (1573) for channel [47.201.168.50:8333]. 2024-05-09T05:36:19Z.1 Work (1239) for channel [194.163.142.136:8333]. 2024-05-09T05:36:19Z.1 Work (1221) for channel [162.231.245.176:8333]. 2024-05-09T05:36:19Z.1 Work (1431) for channel [154.12.225.43:8333]. 2024-05-09T05:36:19Z.1 Work (1425) for channel [104.192.226.106:8333]. 2024-05-09T05:36:19Z.1 Work (1369) for channel [90.11.209.115:8333]. 2024-05-09T05:36:19Z.1 Work (2991) for channel [35.180.33.119:8333]. 2024-05-09T05:36:19Z.1 Work (3079) for channel [185.69.53.153:8333]. 2024-05-09T05:36:19Z.1 Work (1481) for channel [37.60.232.75:8333]. 2024-05-09T05:36:19Z.1 Work (1275) for channel [84.247.179.36:8333]. 2024-05-09T05:36:19Z.1 Work (1463) for channel [66.35.84.30:8333]. 2024-05-09T05:36:19Z.1 Work (1453) for channel [149.102.130.84:8333]. 2024-05-09T05:36:19Z.1 Work (1482) for channel [62.178.135.222:8333]. 2024-05-09T05:36:19Z.1 Work (1551) for channel [71.224.113.86:8333]. 2024-05-09T05:36:19Z.1 Work (3041) for channel [37.60.231.198:8333]. 2024-05-09T05:36:19Z.1 Work (1497) for channel [142.112.147.96:8333]. 2024-05-09T05:36:19Z.1 Work (1473) for channel [37.60.231.199:8333]. 2024-05-09T05:36:19Z.1 Work (1496) for channel [3.134.106.29:8333]. 2024-05-09T05:36:19Z.1 Work (2905) for channel [37.60.227.179:8333]. 2024-05-09T05:36:19Z.1 Work (1465) for channel [158.220.89.7:8333]. 2024-05-09T05:36:19Z.1 Work (1459) for channel [104.196.231.248:8333]. 2024-05-09T05:36:19Z.1 Work (1489) for channel [156.47.69.226:8333]. 2024-05-09T05:36:19Z.1 Work (1424) for channel [123.60.213.192:8333]. 2024-05-09T05:36:19Z.1 Work (1121) for channel [51.75.144.69:8333]. 2024-05-09T05:36:19Z.1 Work (1437) for channel [209.145.52.23:8333]. 2024-05-09T05:36:19Z.1 Work (1529) for channel [62.133.28.74:8333]. 2024-05-09T05:36:19Z.1 Work (1388) for channel [66.94.112.105:8333]. 2024-05-09T05:36:19Z.1 Work (1283) for channel [143.110.171.5:8333]. 2024-05-09T05:36:19Z.1 Work (864) for channel [146.90.179.212:8333]. 2024-05-09T05:36:19Z.1 Work (1454) for channel [192.184.254.35:8333]. 2024-05-09T05:36:19Z.1 Work (1477) for channel [130.185.119.91:8333]. 2024-05-09T05:36:19Z.1 Work (1490) for channel [35.82.222.134:8333]. 2024-05-09T05:36:19Z.1 Work (558) for channel [34.94.255.160:8333]. 2024-05-09T05:36:19Z.1 Work (1584) for channel [31.220.88.12:8333]. 2024-05-09T05:36:19Z.1 Work (1415) for channel [82.66.105.60:8333]. 2024-05-09T05:36:19Z.1 Work (1525) for channel [34.94.246.180:8333]. 2024-05-09T05:36:19Z.1 Work (1507) for channel [95.144.4.168:8333]. 2024-05-09T05:36:19Z.1 Work (1448) for channel [77.237.233.94:8333]. 2024-05-09T05:36:19Z.1 Work (1375) for channel [51.9.205.49:8333]. 2024-05-09T05:36:19Z.1 Work (1349) for channel [78.46.78.181:8333]. 2024-05-09T05:36:19Z.1 Work (1529) for channel [207.244.239.215:8333]. ...(edited)
input_body is showing disk_full , while the others still have capacity from their preallocations. Once space is freed the network will start right back up again, otherwise it just sits idle but able to answer queries.
2024-05-09T05:41:14Z.0 condition::header_body(success) 2024-05-09T05:41:14Z.0 condition::input_body(disk full) 2024-05-09T05:41:14Z.0 condition::output_body(success) 2024-05-09T05:41:14Z.0 condition::point_body(success) 2024-05-09T05:41:14Z.0 condition::puts_body(success) 2024-05-09T05:41:14Z.0 condition::spend_body(success) 2024-05-09T05:41:14Z.0 condition::tx_body(success) 2024-05-09T05:41:14Z.0 condition::txs_body(success) 2024-05-09T05:41:14Z.0 condition::candidate_body(success) 2024-05-09T05:41:14Z.0 condition::confirmed_body(success) 2024-05-09T05:41:14Z.0 condition::strong_tx_body(success) 2024-05-09T05:41:14Z.0 condition::validated_bk_body(success) 2024-05-09T05:41:14Z.0 condition::validated_tx_body(success) 2024-05-09T05:41:14Z.0 condition::address_body(success) 2024-05-09T05:41:14Z.0 condition::neutrino_body(success)

$ bn --help Usage: bn [-abdfhiklnrstvw] [--config 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. -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.
2024-05-15T05:58:16Z.0 Log system configuration... 2024-05-15T05:58:16Z.0 [a]pplication.. compiled:1 enabled:1. 2024-05-15T05:58:16Z.0 [n]ews......... compiled:1 enabled:1. 2024-05-15T05:58:16Z.0 [s]ession...... compiled:1 enabled:1. 2024-05-15T05:58:16Z.0 [p]rotocol..... compiled:1 enabled:0. 2024-05-15T05:58:16Z.0 [x]proxy....... compiled:1 enabled:0. 2024-05-15T05:58:16Z.0 [r]emote....... compiled:1 enabled:0. 2024-05-15T05:58:16Z.0 [f]ault........ compiled:1 enabled:1. 2024-05-15T05:58:16Z.0 [q]uitting..... compiled:1 enabled:0. 2024-05-15T05:58:16Z.0 [o]bjects...... compiled:0 enabled:0. 2024-05-15T05:58:16Z.0 [v]erbose...... compiled:1 enabled:0.(edited)
2024-05-15T06:00:21Z.0 Toggle: [a]pplication 2024-05-15T06:00:21Z.0 Toggle: [n]ews 2024-05-15T06:00:21Z.0 Toggle: [s]ession 2024-05-15T06:00:21Z.0 Toggle: [p]rotocol 2024-05-15T06:00:21Z.0 Toggle: [x]proxy 2024-05-15T06:00:21Z.0 Toggle: [r]emote 2024-05-15T06:00:21Z.0 Toggle: [f]ault 2024-05-15T06:00:21Z.0 Toggle: [q]uitting 2024-05-15T06:00:21Z.0 Toggle: [o]bjects 2024-05-15T06:00:21Z.0 Toggle: [v]erbose 2024-05-15T06:00:21Z.0 Option: [b]ackup the store 2024-05-15T06:00:21Z.0 Option: [c]lose the node 2024-05-15T06:00:21Z.0 Option: [e]rrors in store display 2024-05-15T06:00:21Z.0 Option: [g]o network communication 2024-05-15T06:00:21Z.0 Option: [h]old network communication 2024-05-15T06:00:21Z.0 Option: [i]nfo about store display 2024-05-15T06:00:21Z.0 Option: [m]enu of options and toggles 2024-05-15T06:00:21Z.0 Option: [t]est built-in case 2024-05-15T06:00:21Z.0 Option: [v]ersion information 2024-05-15T06:00:21Z.0 Option: [w]ork distribution display 2024-05-15T06:00:21Z.0 Option: [z]eroize disk full error
system::ceilinged_multiply() to /math for use supporting a new database::system_memory() utility. This will facilitate the config automation necessary to optimize based on total system RAM.database::query class on SQLite!78,279,395 transactions for an average of 1,566 txs per block. In the first almost 300k blocks the average is closer to 2 txs/block.1,009,048,114 txs so at that tx rate the full chain would complete in a total of 4.5 hours - download with validation. Though there are still a few +/- caveats. But still, a great ballpark to be in.182,702,366 txs in 57 minutes. So now at 466,297,403 txs total, or close to half way done, and total time is 2:10. I'd expect it to complete in 4:30 at this rate. Increasing the step to 2,500 blocks and running 600-700k now.199,398,844 txs in 63 mins. Total time to 800k about 4:15.122,066,968 txs took 27 minutes. That was the fastest rate yet, at 4,520,998 txs/min vs. previous runs at around 3,100,000 txs/min . I attribute this to two things. (1) a lot of unspendable outputs (jpegs) that don't get validated or have signatures, and (2) we don't execute taproot scripts, so these signatures aren't getting verified. So this run should have really been closer to 35 minutes.
block_archived...... 826466 3565 block_archived...... 826489 3565 block_archived...... 817480 3565 block_archived...... 826478 3565 block_archived...... 820717 3565 block_archived...... 826474 3566 block_archived...... 826473 3566 block_archived...... 826468 3566 block_archived...... 826469 3566 block_archived...... 828493 3566 block_archived...... 826475 3566 block_archived...... 826477 3566 block_archived...... 802989 3566 block_archived...... 826470 3566 block_archived...... 826471 3567 block_archived...... 826476 3567 block_archived...... 804193 3569 block_archived...... 826499 3572