Commit Graph

12790 Commits

Author SHA1 Message Date
tomFlowee 20e6b356da Add ability for Export to take a dir
This will iterate over all DBs and list all of them.

Additionally, add a 'height' option to list at a specific height.
2024-04-07 20:19:46 +02:00
tomFlowee d680346e25 Make the command line arguments a bit clearer
This allows us to explicitly specify dir/info/db arguments.
2024-04-07 20:19:46 +02:00
tomFlowee 1165da7336 Make bloom filter cheaper 2024-04-05 12:38:21 +02:00
tomFlowee 995750fc99 Increase the requested FD count
Our database uses memmapping and each blk file allocates a file-
descriptor (FD). As such we should increase the number at the start of
the app, if we can.

Notice that the 2000 is chosen to work with a full node that still uses
tiny blk files (128 typically) instead of 1GB files as the Hub makes by
default.

Also fix a bug in the handing code. Using the hardcoded default
FD_SETSIZE made no sense there..
2024-03-28 16:16:48 +01:00
tomFlowee f84c61e187 Follow styleguide; methods start with a lowercase char. 2024-03-20 19:12:50 +01:00
tomFlowee 517a90abeb Detect too many orphans
If for some reason there are a massive amount of orphaned headers, we
don't just keep them around until they are resolved as that is
detrimental to the operation of the node.

Special case this for a reindex and simply skip all orphans fur the
duration.
2024-03-20 19:11:58 +01:00
tomFlowee f1505c0ac7 Handle a large set of metadata files better
Don't wait more than 10 seconds for missing DB data, we'll have to
conclude they won't be forthcoming and just register this in the log.
2024-03-20 19:05:38 +01:00
tomFlowee 96660d90c6 remove unused includes 2024-03-20 19:03:10 +01:00
tomFlowee 53d417e727 Allow using tiny DB files.
Doing a -reindex on a datadir of a different client gives us thousands
of small blk files, which may result in us hitting the max simultaneous
open files limit.
This change forces us to flush the list a bit more aggressively and
close open files.
2024-03-19 09:08:55 +01:00
tomFlowee 2983c8e7a0 Add txversion getter/setter 2024-03-13 17:02:19 +01:00
tomFlowee f62acbed6b New version 2024.02.0 2024-02-27 19:43:19 +01:00
tomFlowee 6ade318b2e Introduce interleaving during download
The download from a peer is now limited to just 4000 blocks, at which
point the download proceeds from another peer.
Naturally it can go back to the first afterwards too.

The idea is that we download a month worth of blocks at a time and then
fetch the same blocks from a backup peer in order to be certain we
actually see the real state.
The problem we've seen is that after the first downloads we end up
starting the second and if the initial sync or a similar large download
happens, many people won't leave it running until the backup actually
completes since the UI looks like its finished.

This is also a good starting point for rating peers at download speed by
having predictable chunks and that means we could time and aim to use
the faster peers.
This is becoming relevant as we can see a huge difference where peers
give you 10x performance compared to some of the slower ones.
2024-02-23 22:08:28 +01:00
tomFlowee a53d03c5a3 Avoid too harsh a reaction on slowness
Afterall, the slowness can very well be temporary.
2024-02-23 22:01:48 +01:00
tomFlowee 58ec8fb8f8 Fix typo in enum name. 2024-02-23 17:28:40 +01:00
tomFlowee 6b88f6ad7b Ensure addressDB is updated upon connection.
Even if the user disqualifies the connection, we should still register
that there was a successful handshake.
2024-02-14 16:20:02 +01:00
tomFlowee 8a0ece8316 Doc fixes 2024-02-14 00:16:39 +01:00
tomFlowee ee354b62d1 Avoid repeating myself. 2024-02-12 21:29:33 +01:00
tomFlowee 64fa922605 fix whitespace 2024-02-12 21:16:55 +01:00
tomFlowee b93a993eaf Fix rare case of not downloading 1 block.
If between the first peer finishing downloading and the second
finishing downloading a block was mined, we need to pick a different
peer for the block the first one didn't download.
2024-02-10 19:50:44 +01:00
tomFlowee 3877df4e2f Improve comment grammar 2024-02-10 19:49:15 +01:00
tomFlowee 04fd3bbf1d Treat DNS based addresses as more reliant 2024-02-10 19:49:00 +01:00
tomFlowee 99c63db936 Try new peers more agressively
Every cycle (1500ms) we try to connect to a new peer if we're low on
peers.
This avoid waiting for a connection to time-out.
2024-02-09 21:12:45 +01:00
tomFlowee 6fc769af55 Remove old config ifdefs 2024-02-09 18:52:04 +01:00
tomFlowee 1125e5d329 Add new field 'tried'.
For addresses that we tried to connect to, even though it may
have failed to actually reach the handshake phase.
2024-02-09 18:52:04 +01:00
tomFlowee feb3b29a08 Tweak numbers 2024-02-07 16:30:20 +01:00
tomFlowee c6548c82e6 add more seeds 2024-01-30 20:50:53 +01:00
tomFlowee 2612db6fb4 Add IP to log message 2024-01-30 20:48:36 +01:00
tomFlowee 4cb4100cec Check peers more agressively
With the expansion of the database more agressive, checking a
larger set of peers for one that works becomes more important, as
such open more connections ever cycle if we can't find good ones
after half a minute.
2024.01.3
2024-01-29 13:03:25 +01:00
tomFlowee 13d494efef Check more datapoints
With the expansion of the database more agressive, checking a
larger set of items for the best one becomes more important, as
such do a 10x for finding the best sccoring item.

The observed effect is finding previously useful peers within seconds
instead of a minute.
2024-01-29 11:54:40 +01:00
tomFlowee 9452bfb4f1 New version 2024-01-28 21:35:42 +01:00
tomFlowee 35be013a19 Detect low number of usable addresses
When our addresses database is filled with old or wrong addresses, we
end up trying to connect to a large number of IPs before we find actual
peers.
When we see that is the case, let's try to find more IP addresses from
our peers.
2024-01-28 21:31:28 +01:00
tomFlowee 5d00848897 Check addresses are on our chain
Validate that the addresses message we received are from a peer we
actually validated as being on our chain.
2024-01-28 21:31:28 +01:00
tomFlowee 17fd9b84e2 Always fetch the DNS feeds 2024-01-28 21:31:28 +01:00
tomFlowee 9fd2e37bba Ensure we ask for the mempool details also when there are no new blocks 2024-01-28 21:31:28 +01:00
tomFlowee e508631885 The effects of resetAll was better than just pardons 2024-01-28 21:31:28 +01:00
tomFlowee 3f9bb5ba06 Don't assign a peer to an archived wallet
Just because this action doesn't open connections to such peers doesn't
mean they may not have been opened by someone else.
2024-01-28 19:54:54 +01:00
tomFlowee 2e50054d69 Tweaks to the punishment values. 2024-01-28 19:53:59 +01:00
tomFlowee ffe458a1f6 Remove unused member 2024-01-28 19:51:56 +01:00
tomFlowee 9d980fdcad Minor tweaks to IP selection.
When we didn't personally verify the services, don't judge the IP based
on them and connect anyway.

In addition to not trusting the services we receive from the net, be
more careful with the usage of the 'lastConnected' field.
Notice that we don't actually use the result of that variable in the end
if the everConnected is likewise incorrect.
2024-01-28 17:01:01 +01:00
tomFlowee dc9ef827b4 Fix various issues in the addressDB
this introduces a new version of the address-db, as stored in the db
file itself. Causing a one-time 'upgrade'.
Main issue solved is that the 'everSeen' bool was restored incorrectly
and from then on out saved wrong too.
This may have caused bad selection of peers to connect to as the DB
grew.

Together with the various bugs in the last months update we also reset
the punishment to not avoid connecting to possibly perfectly fine peers.
2024-01-26 13:32:39 +01:00
tomFlowee 249ea8c2c8 Add new callback for peers before the handshake. 2024-01-26 12:08:03 +01:00
tomFlowee eace700859 Add EndPoint::isOutgoing() -> bool & isIncomimg() 2024-01-24 21:06:25 +01:00
tomFlowee dcdeb6dec0 Don't assume company name in this library class. 2024-01-24 21:03:58 +01:00
tomFlowee 9ad2ec7c02 Be consistent, use a subdir for header files. 2024-01-24 21:03:58 +01:00
tomFlowee 01b7d9eb45 Remove this old file 2024-01-24 21:03:58 +01:00
tomFlowee 5c4d6a987d Add the missing headers to this combined set 2024-01-24 21:03:58 +01:00
tomFlowee b6958d4ad7 Install the combined header too 2024-01-24 21:03:58 +01:00
tomFlowee 4fe9d69e7b Use more specific define-guards 2024-01-24 21:03:58 +01:00
tomFlowee ef95af0177 Define the lifetime better.
A connection that is 'shutdown' now ensures one more time we'll call
onDisconnected() (is it was..) allowing the application level logic to
get notified and avoid memory leaks.
2024-01-24 21:03:58 +01:00
tomFlowee 40e5eaa78d Add EndPoint::toString() 2024-01-21 23:16:56 +01:00