Bitcoin full node and query server

Jan 3, 2025

View in context in the libbitcoin Slack #general mirror.

M
Marnix19:31
on a fresh install on debian 12, bn was working. Then I executed ./bn -t
./bn -t
Using default configuration settings.
Database is started.
Getting first [100] output address hashes.
Segmentation fault
and now bn doesn't run anymore
./bn
2025-01-03T16:18:31Z.0 ====================== startup =======================
2025-01-03T16:18:31Z.0 Using default configuration settings.
2025-01-03T16:18:31Z.0 Database failed to start with error 'flush lock failure'.
2025-01-03T16:18:31Z.0 Please wait while restoring from most recent snapshot...
2025-01-03T16:18:31Z.0 restore::recover_snapshot(store)
2025-01-03T16:18:31Z.0 Database restore failed with error 'missing snapshot'.
2025-01-03T16:18:31Z.0 Node stopped successfully.
2025-01-03T16:18:31Z.0 ====================== shutdown ======================
2025-01-03T16:18:31Z.0 Press <enter> to exit...
how to fix?
121 replies · evoskuil, Marnix, cguida · last Jan 06, 2025
evoskuil19:33
There's no fix unless you took a snapshot (which you didn't) so you have to resync.
evoskuil19:35
I don't know what the issue with the test query was, but it's a fairly lengthy ad-hoc piece of temporary code, so not surprising.
evoskuil19:36
Running it at the console, for the current query, causes a massive dump to the console, but that should be ok. I'll look at it and see if there's anything obvious.
M
Marnix19:37
ok thanks
👍🏻 1
evoskuil19:38
The error occurred between these two console writes:
void executor::read_test(bool dump) const
{
    using namespace database;
    constexpr auto start_tx = 1'000'000_u32;
    constexpr auto target_count = 100_size;

    // Set ensures unique addresses.
    std::set<hash_digest> keys{};
    auto tx = start_tx;

    logger(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())
        {
            // fault, tx with no outputs.
            return;
        }

        for (const auto& put: *outputs)
        {
            keys.emplace(put->script().hash());
            if (cancel_ || keys.size() == target_count)
                break;
        }
    }

    auto span = duration_cast<milliseconds>(fine_clock::now() - start);
    logger(format("Got first [%1%] unique addresses above tx [%2%] in [%3%] ms.") %
        keys.size() % start_tx % span.count());
evoskuil19:41
To recover just delete the store directory.
🔥 1
evoskuil19:41
Do you know what height you had synced to prior to running the test query?
M
Marnix19:42
this was at height 0
M
Marnix19:42
fresh install
evoskuil19:43
Oh, well that may be the issue, maybe there's a boundary issue in the test.
evoskuil19:43
Yep
evoskuil19:44
The query just arbitrarily starts collecting outputs at the 1 millionth tx in the store (by insertion order (primary key).
evoskuil19:47
That shouldn't cause a segfault obviously, but it hasn't been tested. But at least it may repro here.
evoskuil19:51
Repro'd and resolved.
🚀 1
evoskuil19:51
const auto outputs = query_.get_outputs(tx++);
evoskuil19:52
This returns a null shared pointer, which is dereferenced on the next line.
evoskuil19:54
The tx doesn't exist. All txs that get stored have outputs, so it's generally a safe assumption. And I think in this code I assumed it would come back empty if non-exist, but it comes back null to indicate the error.
evoskuil19:55
The reason a tx that doesn't exist is getting dereferenced is this hacky test technique of just grabbing txs from the store based on a made up (not queried) primary key.
evoskuil19:58
You can pull the change to libbitcoin-node and rebuild, or just change that line to this:
        const auto outputs = query_.get_outputs(tx++);
        if (is_null(outputs))...
The test would just end normally if there is a missing tx.
M
Marnix20:03
./bn 
2025-01-03T16:57:47Z.0 ====================== startup =======================
2025-01-03T16:57:47Z.0 Using default configuration settings.
2025-01-03T16:57:47Z.0 The "bitcoin" database directory does not exist.
2025-01-03T16:57:47Z.0 Using default configuration settings.
2025-01-03T16:57:47Z.0 Initializing "bitcoin" directory...
2025-01-03T16:57:47Z.0 Failed because the directory "bitcoin" already exists.
2025-01-03T16:57:47Z.0 Node stopped successfully.
2025-01-03T16:57:47Z.0 ====================== shutdown ======================
2025-01-03T16:57:47Z.0 Press <enter> to exit...
bitcoin dir doesn't exist -> initializing bitcoin dir -> fail because bitcoin dir already exists🤔
evoskuil20:04
To recover just delete the store directory.
M
Marnix20:05
I did, you mean the bitcoin dir right?
evoskuil20:05
Right. After doing that it's the same as when you first started it up, brand new.
evoskuil20:07
The check for existence returned false, and the attempt to create failed because it already existed. Not sure how that happens on Linux, seems like a race. Was the directory fully deleted?
M
Marnix20:09
yes, earlier I encountered this btw "bus error"
./bn -n
Using default configuration settings.
Initializing "bitcoin" directory...
Please wait while creating the database...
create::create_file(header_head)
create::create_file(header_body)
create::create_file(input_head)
create::create_file(input_body)
create::create_file(output_head)
create::create_file(output_body)
create::create_file(point_head)
create::create_file(point_body)
create::create_file(puts_head)
create::create_file(puts_body)
create::create_file(spend_head)
create::create_file(spend_body)
create::create_file(tx_head)
create::create_file(tx_body)
create::create_file(txs_head)
create::create_file(txs_body)
create::create_file(candidate_head)
create::create_file(candidate_body)
create::create_file(confirmed_head)
create::create_file(confirmed_body)
create::create_file(strong_tx_head)
create::create_file(strong_tx_body)
create::create_file(validated_bk_head)
create::create_file(validated_bk_body)
create::create_file(validated_tx_head)
create::create_file(validated_tx_body)
create::create_file(address_head)
create::create_file(address_body)
create::create_file(neutrino_head)
create::create_file(neutrino_body)
create::open_file(header_head)
create::open_file(header_body)
create::open_file(input_head)
create::open_file(input_body)
create::open_file(output_head)
create::open_file(output_body)
create::open_file(point_head)
create::open_file(point_body)
create::open_file(puts_head)
create::open_file(puts_body)
create::open_file(spend_head)
create::open_file(spend_body)
create::open_file(tx_head)
create::open_file(tx_body)
create::open_file(txs_head)
create::open_file(txs_body)
create::open_file(candidate_head)
create::open_file(candidate_body)
create::open_file(confirmed_head)
create::open_file(confirmed_body)
create::open_file(strong_tx_head)
create::open_file(strong_tx_body)
create::open_file(validated_bk_head)
create::open_file(validated_bk_body)
create::open_file(validated_tx_head)
create::open_file(validated_tx_body)
create::open_file(address_head)
create::open_file(address_body)
create::open_file(neutrino_head)
create::open_file(neutrino_body)
create::load_file(header_head)
create::load_file(header_body)
create::load_file(input_head)
create::load_file(input_body)
create::load_file(output_head)
create::load_file(output_body)
create::load_file(point_head)
create::load_file(point_body)
create::load_file(puts_head)
create::load_file(puts_body)
create::load_file(spend_head)
create::load_file(spend_body)
create::load_file(tx_head)
create::load_file(tx_body)
create::load_file(txs_head)
create::load_file(txs_body)
create::load_file(candidate_head)
create::load_file(candidate_body)
create::load_file(confirmed_head)
create::load_file(confirmed_body)
create::load_file(strong_tx_head)
create::load_file(strong_tx_body)
create::load_file(validated_bk_head)
create::load_file(validated_bk_body)
create::load_file(validated_tx_head)
create::load_file(validated_tx_body)
create::load_file(address_head)
create::load_file(address_body)
create::load_file(neutrino_head)
create::load_file(neutrino_body)
create::create_table(header_table)
create::create_table(input_table)
create::create_table(output_table)
create::create_table(point_table)
create::create_table(puts_table)
create::create_table(spend_table)
create::create_table(tx_table)
Bus error
evoskuil20:11
Another cause of bus errors (on Linux anyway) is when the operating system can't back a virtual page with physical memory (e.g. low-memory conditions or out of huge pages when using huge page memory.)
evoskuil20:12
It failed once and then it worked another time?
evoskuil20:13
Those table creations will allocate 1/4 the size of the chain. So about 150GB of memory map. I've done very little v4 testing on Linux, but v3 uses basically the same techniques.
(edited)
M
Marnix20:19
It failed once and then it worked another time?
after that it keeps saying the bitcoin dir already exists, but it doesn't 🤷‍♂️
evoskuil20:19
It just means create directory is failing. Could be for any reason.
👍 1
evoskuil20:23
std::filesystem::create_directories(path, ec) is returning false.
evoskuil20:24
Return value
true if a directory was newly created for the directory p resolves to, false otherwise.
evoskuil20:26
Maybe try another directory.
evoskuil20:48
I added the full error message to the output:
Initializing "M:/bitcoin/" directory...
Failed creating directory "M:/bitcoin/" with error 'is a directory'.
evoskuil19:36
Let me know when you get a chance whether this produces a different result code. thx
M
Marnix20:01
well, now I ran into segmentation fault when running bn
M
Marnix20:05
fresh install, execute install script, run bn:
./bn 
2025-01-05T16:58:12Z.0 ====================== startup =======================
2025-01-05T16:58:12Z.0 Using default configuration settings.
2025-01-05T16:58:12Z.0 The "bitcoin" database directory does not exist.
2025-01-05T16:58:12Z.0 Using default configuration settings.
2025-01-05T16:58:12Z.0 Initializing "bitcoin" directory...
2025-01-05T16:58:12Z.0 Please wait while creating the database...
2025-01-05T16:58:12Z.0 create::create_file(header_head)
2025-01-05T16:58:12Z.0 create::create_file(header_body)
2025-01-05T16:58:12Z.0 create::create_file(input_head)
2025-01-05T16:58:12Z.0 create::create_file(input_body)
2025-01-05T16:58:12Z.0 create::create_file(output_head)
2025-01-05T16:58:12Z.0 create::create_file(output_body)
2025-01-05T16:58:12Z.0 create::create_file(point_head)
2025-01-05T16:58:12Z.0 create::create_file(point_body)
2025-01-05T16:58:12Z.0 create::create_file(puts_head)
2025-01-05T16:58:12Z.0 create::create_file(puts_body)
2025-01-05T16:58:12Z.0 create::create_file(spend_head)
2025-01-05T16:58:12Z.0 create::create_file(spend_body)
2025-01-05T16:58:12Z.0 create::create_file(tx_head)
2025-01-05T16:58:12Z.0 create::create_file(tx_body)
2025-01-05T16:58:12Z.0 create::create_file(txs_head)
2025-01-05T16:58:12Z.0 create::create_file(txs_body)
2025-01-05T16:58:12Z.0 create::create_file(candidate_head)
2025-01-05T16:58:12Z.0 create::create_file(candidate_body)
2025-01-05T16:58:12Z.0 create::create_file(confirmed_head)
2025-01-05T16:58:12Z.0 create::create_file(confirmed_body)
2025-01-05T16:58:12Z.0 create::create_file(strong_tx_head)
2025-01-05T16:58:12Z.0 create::create_file(strong_tx_body)
2025-01-05T16:58:12Z.0 create::create_file(validated_bk_head)
2025-01-05T16:58:12Z.0 create::create_file(validated_bk_body)
2025-01-05T16:58:12Z.0 create::create_file(validated_tx_head)
2025-01-05T16:58:12Z.0 create::create_file(validated_tx_body)
2025-01-05T16:58:12Z.0 create::create_file(address_head)
2025-01-05T16:58:12Z.0 create::create_file(address_body)
2025-01-05T16:58:12Z.0 create::create_file(neutrino_head)
2025-01-05T16:58:12Z.0 create::create_file(neutrino_body)
2025-01-05T16:58:12Z.0 create::open_file(header_head)
2025-01-05T16:58:12Z.0 create::open_file(header_body)
2025-01-05T16:58:12Z.0 create::open_file(input_head)
2025-01-05T16:58:12Z.0 create::open_file(input_body)
2025-01-05T16:58:12Z.0 create::open_file(output_head)
2025-01-05T16:58:12Z.0 create::open_file(output_body)
2025-01-05T16:58:12Z.0 create::open_file(point_head)
2025-01-05T16:58:12Z.0 create::open_file(point_body)
2025-01-05T16:58:12Z.0 create::open_file(puts_head)
2025-01-05T16:58:12Z.0 create::open_file(puts_body)
2025-01-05T16:58:12Z.0 create::open_file(spend_head)
2025-01-05T16:58:12Z.0 create::open_file(spend_body)
2025-01-05T16:58:12Z.0 create::open_file(tx_head)
2025-01-05T16:58:12Z.0 create::open_file(tx_body)
2025-01-05T16:58:12Z.0 create::open_file(txs_head)
2025-01-05T16:58:12Z.0 create::open_file(txs_body)
2025-01-05T16:58:12Z.0 create::open_file(candidate_head)
2025-01-05T16:58:12Z.0 create::open_file(candidate_body)
2025-01-05T16:58:12Z.0 create::open_file(confirmed_head)
2025-01-05T16:58:12Z.0 create::open_file(confirmed_body)
2025-01-05T16:58:12Z.0 create::open_file(strong_tx_head)
2025-01-05T16:58:12Z.0 create::open_file(strong_tx_body)
2025-01-05T16:58:12Z.0 create::open_file(validated_bk_head)
2025-01-05T16:58:12Z.0 create::open_file(validated_bk_body)
2025-01-05T16:58:12Z.0 create::open_file(validated_tx_head)
2025-01-05T16:58:12Z.0 create::open_file(validated_tx_body)
2025-01-05T16:58:12Z.0 create::open_file(address_head)
2025-01-05T16:58:12Z.0 create::open_file(address_body)
2025-01-05T16:58:12Z.0 create::open_file(neutrino_head)
2025-01-05T16:58:12Z.0 create::open_file(neutrino_body)
2025-01-05T16:58:12Z.0 create::load_file(header_head)
2025-01-05T16:58:12Z.0 create::load_file(header_body)
2025-01-05T16:58:12Z.0 create::load_file(input_head)
2025-01-05T16:58:12Z.0 create::load_file(input_body)
2025-01-05T16:58:12Z.0 create::load_file(output_head)
2025-01-05T16:58:12Z.0 create::load_file(output_body)
2025-01-05T16:58:12Z.0 create::load_file(point_head)
2025-01-05T16:58:12Z.0 create::load_file(point_body)
2025-01-05T16:58:12Z.0 create::load_file(puts_head)
2025-01-05T16:58:12Z.0 create::load_file(puts_body)
2025-01-05T16:58:12Z.0 create::load_file(spend_head)
2025-01-05T16:58:12Z.0 create::load_file(spend_body)
2025-01-05T16:58:12Z.0 create::load_file(tx_head)
2025-01-05T16:58:12Z.0 create::load_file(tx_body)
2025-01-05T16:58:12Z.0 create::load_file(txs_head)
2025-01-05T16:58:12Z.0 create::load_file(txs_body)
2025-01-05T16:58:12Z.0 create::load_file(candidate_head)
2025-01-05T16:58:12Z.0 create::load_file(candidate_body)
2025-01-05T16:58:12Z.0 create::load_file(confirmed_head)
2025-01-05T16:58:12Z.0 create::load_file(confirmed_body)
2025-01-05T16:58:12Z.0 create::load_file(strong_tx_head)
2025-01-05T16:58:12Z.0 create::load_file(strong_tx_body)
2025-01-05T16:58:12Z.0 create::load_file(validated_bk_head)
2025-01-05T16:58:12Z.0 create::load_file(validated_bk_body)
2025-01-05T16:58:12Z.0 create::load_file(validated_tx_head)
2025-01-05T16:58:12Z.0 create::load_file(validated_tx_body)
2025-01-05T16:58:12Z.0 create::load_file(address_head)
2025-01-05T16:58:12Z.0 create::load_file(address_body)
2025-01-05T16:58:12Z.0 create::load_file(neutrino_head)
2025-01-05T16:58:12Z.0 create::load_file(neutrino_body)
2025-01-05T16:58:12Z.0 create::create_table(header_table)
2025-01-05T16:58:12Z.0 create::create_table(input_table)
2025-01-05T16:58:12Z.0 create::create_table(output_table)
2025-01-05T16:58:12Z.0 create::create_table(point_table)
2025-01-05T16:58:15Z.0 create::create_table(puts_table)
2025-01-05T16:58:15Z.0 create::create_table(spend_table)
2025-01-05T16:58:24Z.0 create::create_table(tx_table)
2025-01-05T16:58:27Z.0 create::create_table(txs_table)
2025-01-05T16:58:27Z.0 create::create_table(candidate_table)
2025-01-05T16:58:27Z.0 create::create_table(confirmed_table)
2025-01-05T16:58:27Z.0 create::create_table(strong_tx_table)
2025-01-05T16:58:31Z.0 create::create_table(validated_bk_table)
2025-01-05T16:58:31Z.0 create::create_table(validated_tx_table)
2025-01-05T16:58:35Z.0 create::create_table(address_table)
2025-01-05T16:58:35Z.0 create::create_table(neutrino_table)
2025-01-05T16:58:35Z.0 Storing genesis block.
2025-01-05T16:58:35Z.0 Created the database in 23 secs.
2025-01-05T16:58:35Z.0 Body sizes...
   header    :98
   txs       :18
   tx        :62
   point     :0
   input     :79
   output    :81
   puts      :9
   candidate :3
   confirmed :3
   spend     :24
   strong_tx :12
   valid_tx  :0
   valid_bk  :0
   address   :0
   neutrino  :0
2025-01-05T16:58:35Z.0 Table records...
   header    :1
   tx        :1
   point     :0
   candidate :1
   confirmed :1
   spend     :1
   strong_tx :1
   address   :0
2025-01-05T16:58:35Z.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
2025-01-05T16:58:35Z.0 Version Information...
libbitcoin-node:       4.0.0
libbitcoin-database:   4.0.0
libbitcoin-network:    4.0.0
libbitcoin-system:     4.0.0
2025-01-05T16:58:35Z.0 Hardware configuration...
2025-01-05T16:58:35Z.0 arm..... platform:0.
2025-01-05T16:58:35Z.0 intel... platform:1.
2025-01-05T16:58:35Z.0 avx512.. platform:0 compiled:0.
2025-01-05T16:58:35Z.0 avx2.... platform:1 compiled:0.
2025-01-05T16:58:35Z.0 sse41... platform:1 compiled:0.
2025-01-05T16:58:35Z.0 shani... platform:1 compiled:0.
2025-01-05T16:58:35Z.0 neon.... platform:0 compiled:0.
2025-01-05T16:58:35Z.0 Log system configuration...
2025-01-05T16:58:35Z.0 [a]pplication.. compiled:1 enabled:1.
2025-01-05T16:58:35Z.0 [n]ews......... compiled:1 enabled:1.
2025-01-05T16:58:35Z.0 [s]ession...... compiled:1 enabled:1.
2025-01-05T16:58:35Z.0 [p]rotocol..... compiled:1 enabled:0.
2025-01-05T16:58:35Z.0 [x]proxy....... compiled:1 enabled:0.
2025-01-05T16:58:35Z.0 [r]emote....... compiled:1 enabled:1.
2025-01-05T16:58:35Z.0 [f]ault........ compiled:1 enabled:1.
2025-01-05T16:58:35Z.0 [q]uitting..... compiled:1 enabled:0.
2025-01-05T16:58:35Z.0 [o]bjects...... compiled:1 enabled:0.
2025-01-05T16:58:35Z.0 [v]erbose...... compiled:1 enabled:0.
2025-01-05T16:58:35Z.0 Press CTRL-C to stop the node.
Segmentation fault
M
Marnix20:07
running aec9f18cc489e27da2163af9e337132901b99001
evoskuil20:52
One thing at a time. What happened with the directory question?
evoskuil20:54
I didn't really change anything except for reporting the full error code. Did it just work?
evoskuil21:05
Re the segfault, This commit includes a number of unverified changes. I'm working through a significant bunch of changes. I suggest working form this one until I can verify them (though I'm not sure if this remains in sync with other repos, as they have advanced as well). We have release branches for this reason. Working form master can be a challenge because it changes quickly. https://github.com/libbitcoin/libbitcoin-node/pull/704/commits/3fe83b9e1236e35f7451342cf82cd709dc04d91f
evoskuil21:12
It's also possible there's a problem unique to Linux, but there wasn't the last time I synced there. @cguida should be setting up an Ubuntu build, debug and perf analysis environment soon.
evoskuil21:28
I'm also curious about your build process. Are you using the node repository install.sh or are you building manually and incrementally?
C
cguida22:18
yep, i am also hitting this
evoskuil22:19
Yeah, I found it.
evoskuil22:19
Variable initialization order in validate/confirm chasers.
C
cguida22:19
built using sudo ./install.sh --build-boost --disable-shared
C
cguida22:19
from the libbitcoin-node repo
evoskuil22:20
Yeah, I have my build PC on wifi this week, so haven't been runtime testing. xmas tree took my workspace. 😅
😂 1
evoskuil22:22
Let's see if I can get a good build in in a few mins.
🙏 1
evoskuil22:28
2025-01-05T22:27:32Z.0 Press CTRL-C to stop the node.
2025-01-05T22:27:32Z.0 Please wait while network is starting...
2025-01-05T22:27:32Z.1 Candidate top [000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f:0].
2025-01-05T22:27:32Z.1 Fork point (0) unassociated (0).
2025-01-05T22:27:33Z.1 Loaded (50000) addresses.
2025-01-05T22:27:33Z.1 Bypassed seeding because outbound connections disabled.
2025-01-05T22:27:33Z.0 Node is started.
2025-01-05T22:27:33Z.1 Not configured for inbound connections.
2025-01-05T22:27:33Z.1 Not configured for outbound connections.
2025-01-05T22:27:33Z.0 Node is running.
C
cguida22:29
should i build that instead?
evoskuil22:29
Yeah, that was it. Just wait for the most recent node PR and rerun the full install (other repos are changed too).
C
cguida22:29
ah cool, thanks!
C
cguida22:29
cguida
built using sudo ./install.sh --build-boost --disable-shared
C
cguida22:29
or do i need to cleanup?
evoskuil22:30
Yeah, full build from installer. Always clear build dir and rerun install.sh.
C
cguida22:30
ok hmm, where is the build dir?
evoskuil22:30
On your build machine 🙂
😂 1
C
cguida22:30
/usr/local something iirc?
(edited)
evoskuil22:31
It's an install.sh option, like prefix. Not sure where it defaults to.
C
cguida22:31
ah. yeah i just used the default.. brb hunting down build dir..
C
cguida22:33
oh i think it's just wherever your cwd is where you run the install
evoskuil22:33
yep
👍 1
evoskuil22:35
Lemee know if you get it. C++ thing.
C
cguida22:36
i don't really. you changed the order of the lines, but i'm not sure what the lines do
C
cguida22:36
some kind of concurrency thing haha
evoskuil22:37
Not because of concurrency. Constructors have initializer lists, for class member variables and base classes.
evoskuil22:37
The cpp listed order is not the order of the initialization, which is deceptive. Every once in a while I miss it.
C
cguida22:37
ahh
evoskuil22:38
So the threadpool init got moved to after the strand init, which takes the threadpool. Even though in the CPP file they are listed in the correct order (before and after the change).
👍 1
evoskuil22:38
The member declaration order controls their initialization. But that's in the HPP.
evoskuil22:39
So this was a problem:
    // These are thread safe.
    const bool concurrent_;
    const size_t maximum_backlog_;
    const uint64_t initial_subsidy_;
    const uint32_t subsidy_interval_;
    network::asio::strand independent_strand_;

    // These are protected by strand.
    network::threadpool threadpool_;
evoskuil22:39
One compiler caught it in CI.
evoskuil22:40
I try to group the members by thread safe and not thread safe. It's important to keep track of those that are not. But they don't always group so nicely into two groups and also the required order. Takes some creativity.
evoskuil22:41
No promises on validation behavior.
👍 1
evoskuil22:42
Merged
C
cguida22:43
cool, i'm building from evoskuil:master
👍🏻 1
C
cguida22:43
i assume nothing changed between 2 minutes ago and now haha
evoskuil22:43
Right, it's all in sync with master repos.
(edited)
👍 1
C
cguida22:48
ah right i need seed nodes
C
cguida22:48
let's see i have that cache file somewhere..
evoskuil22:51
I was telling you that the cache defaults to 10k entries before. It actually defaults to 50k unique entries. Are there that many nodes on the network? It builds this in almost no time from the network.
evoskuil22:51
We operate under the assumption that 4 out of 5 addresses are actually invalid.
C
cguida22:53
according to bitnodes, there are like 20k listening nodes, but there's a whole lot more that aren't listening
C
cguida22:53
ok running the sync!
C
cguida22:53
we'll see how long it takes, just to set a baseline
C
cguida22:54
do you recommend any particular config options?
C
cguida22:54
i'm just using the defaults
evoskuil23:17
If they aren't listening then you can't connect to them, in which case they should not be publishing their addresses.
👍 1
evoskuil23:17
I thought you already had a baseline config/run.
C
cguida23:37
Not on Linux.
C
cguida23:42
ok this must be a milestone run? i'm already at 500,000 after less than an hour haha
C
cguida23:42
ah ok i need to add the genesis block as the milestone in the config
C
cguida23:42
which part is slow on linux?
evoskuil23:54
The settings should all be the same.
evoskuil23:54
It's the same box right?
evoskuil23:55
500k is 27.5%, so that in in an hour is slow,
evoskuil23:56
block	txs	%
000k	1	0.00%
050k	50,780	0.00%
100k	216,577	0.02%
150k	1,718,407	0.17%
200k	7,316,696	0.71%
250k	21,491,097	2.08%
300k	38,463,787	3.73%
350k	63,960,713	6.20%
400k	112,477,764	10.90%
450k	190,757,159	18.48%
500k	283,595,037	27.47%
550k	356,588,225	34.54%
600k	466,297,403	45.17%
650k	571,876,797	55.40%
700k	669,566,380	64.86%
750k	757,720,472	73.40%
800k	868,965,224	84.18%
850k	1,032,289,555	100.00%
evoskuil23:58
But that's fine, we know it's slow on linux/osx. First step is just complete a milestone run. Don't worry about validation. To be clear, this is not a benchmark. This is development. I won't support any numbers that come out of linux/osx until we've optimized on those platforms. I've only run each of them one time.
👍 1
C
cguida23:58
Same model, but I have 2, 1 windows 1 linux
👍🏻 1
evoskuil23:59
That's commitment. I figured you went with dual boot.
C
cguida00:00
Of course, I'm "benchmarking" here so I can figure out which parts are slow.
C
cguida00:00
Haha I'm too lazy to dual boot
C
cguida00:01
Never quite got comfortable with it
C
cguida00:01
Honestly it's a great little machine
evoskuil00:01
BTW, this is a side thread from #general that @Marnix created. We should prob. reset. Slack threading blows.
👍 1
M
Marnix00:40
One thing at a time. What happened with the directory question?
This was a new run on a fresh deb12 environment.
M
Marnix00:41
I'm also curious about your build process. Are you using the node repository install.sh or are you building manually and incrementally?
yes clone node repo and run install script
evoskuil00:41
No issues with the path?
evoskuil00:41
The segfault was a bug I added yesterday, it's fixed. Current build should be fine.
👍 1
M
Marnix00:44
No issues with the path?
Specifying the/a different dir you mean? I didn't try, was afk then and now decided to do again on fresh OS env
evoskuil00:45
Ok, well let me know if it pops up again. These things tend to keep coming back until they're figured out. I've never seen that but I'm mostly on Windows these days.
evoskuil00:45
You could post an issue to the node repo. https://github.com/libbitcoin/libbitcoin-node/issues
M
Marnix00:48
Yes will open gh issue next time I run into something. This was in reply to your question if I could run again
evoskuil00:49
Yeah, you could try and reproduce it., change the directory, etc. I added the full error message output to the latest build. It should be fine to run now. @cguida is running latest.