Commit Graph

135 Commits

Author SHA1 Message Date
tomFlowee a298d86f5f This seed has 1 IP which is currently offline.
For now lets just disable it.
2022-07-14 10:52:00 +02:00
tomFlowee 62a6f5c7d9 Cleanups in spv sync for multiple peers
This makes the logic much more pridictable.
2022-07-13 14:00:47 +02:00
tomFlowee d32013f8be Avoid accidental sync. 2022-07-13 13:57:45 +02:00
tomFlowee 5f629a161e Let the actions do the assignments of segments.
This removes some code from the connectionmanager / blockchain classes
which assigned a random segment on a new peer.
2022-07-13 13:50:23 +02:00
tomFlowee 1ab4d88993 Split version.h
Version.h held mostly stuff for protocol.h, which is a hub-specific file.
The only thing that we actually use is the PROTOCOL_VERSION in our code
and as such that one moved to the interfaces dir.
2022-07-06 22:50:53 +02:00
tomFlowee c33d54ed7d Rename class CKeyID -> KeyId 2022-07-06 21:52:47 +02:00
tomFlowee 640d327311 Make disabled wallet stop getting data. 2022-06-24 14:13:32 +02:00
tomFlowee e17ba3bc58 Add a property 'enabled' on PrivacySegment
A not-enabled PrivacySegment will not have its merkleblocks downloaded.
2022-06-23 23:17:05 +02:00
tomFlowee c2c5fd7973 Make compile 2022-06-20 16:27:00 +02:00
tomFlowee 9fa877f425 Rename hashing methods to start with lowercase 2022-05-17 00:46:54 +02:00
tomFlowee 0f434e0425 Check file exists before using it. 2022-05-03 18:50:53 +02:00
tomFlowee 2eb7273d3b Don't assume value. 2022-05-01 17:34:59 +02:00
tomFlowee 2dea9d4884 API review this class 2022-04-30 20:27:59 +02:00
tomFlowee 512d49785a Pass enum by value 2022-04-05 22:13:55 +02:00
tomFlowee 7e3e7c2fb7 Fix testing failure 2022-01-24 12:26:37 +01:00
tomFlowee 7376c28a3c Move pool thread-local getter to utils.
This nicely cleans up the calling usage a static on the connection
manager instance.
2022-01-24 12:06:37 +01:00
tomFlowee c8ed2ec382 Make compile 2022-01-22 23:27:29 +01:00
tomFlowee 9c4984dcf7 [P2Plib] Make initial startup 70% faster
What we did previously is load a static chain which was to avoid lots of
work by simply memory-mapping the data instead of inserting it in a
vector.

This improves upon that by also having a metadata file which holds the
block-hashes directly readable. This avoids us having to iterate over
the blockheaders and hashing them.

Additionally we now have a single chain-work field that is the total
amount added work for the headers. This saves us from doing 256-bit
divisions and work for each blockheader as well.

Result is that we make the statup mostly about memory moving and remove
all CPU intensive stuff. Going from 1450ms to 400ms on desktop.
I expect an even greater gain on mobile CPUs.
2022-01-12 19:45:51 +01:00
tomFlowee c71ebb9bee Avoid reporting incorrect updates 2021-11-26 18:10:31 +01:00
tomFlowee 3a9863dbe3 Simplify the backup sync feature.
The bloom filter includes all the unspent outputs, so we can just
use the latest one if we want to get any transactions the first
peer omitted.
2021-11-26 18:04:38 +01:00
tomFlowee 9a65a2f9c9 Remove empty and sometimes hanging DNS 2021-11-19 14:16:41 +01:00
tomFlowee 1b5ae89d31 [Refactor] rename FastTransaction.{h|cpp} -> Tx.* 2021-11-02 11:05:14 +01:00
tomFlowee d79ab0a301 Special case peers that are behind
A peer that is behind is marked as "on a different chain", which is
ultimately correct, but the response to punish or ban them is too much.
We could very well reconnect later when the situation is resolved.

So, detect when a peer is simply behind and respond by disconnecting
without punishment.
2021-11-01 17:19:00 +01:00
tomFlowee 3841257505 Fix possible deadlock.
The new iteration avoids having the blockchain mutex locked when it
calls up to the connection manager (which locks its own mutex).
2021-11-01 15:52:55 +01:00
tomFlowee a7c8f02c09 Face the reality of low number of testnet nodes. 2021-10-31 15:14:34 +01:00
tomFlowee 701698d6e1 Fix merkleblock download as bloom filters change.
In HD wallets we get an issue where not-yet-generated keys are needed in
the merkle-block request and we notice this as a chunk of blocks is
being downloaded.
This is solved with some extra code.

Also avoid re-uploading the bloom filter during initial sync.
2021-10-27 19:14:09 +02:00
tomFlowee c5e845b11b Be more generous with asking for headers.
On connect, we should ask for a HEADERS overview from the remote peer,
even if we aren't fully at the tip yet.

Also remove some old lookup no longer used.
2021-10-27 19:14:09 +02:00
tomFlowee bdbde16e28 Make CleanPeers not ban good nodes 2021-10-27 19:14:09 +02:00
tomFlowee 1af7fea053 Fix too-fast-banning bug
Sometimes a node would not be online for a while and we'd incorrectly
ban them for a long time when we just need to mark them as not-
reachable-right-now.
2021-10-27 19:14:09 +02:00
tomFlowee 1efcc39f42 Avoid doing work for an empty wallet. 2021-10-27 19:14:09 +02:00
tomFlowee a5c4a308f4 We reached 700K, pre-allocate more :) 2021-08-09 21:22:25 +02:00
tomFlowee 6692a0a11a Follow API change in NWM.
Setting the ringbuffers to not-so-tiny values
2021-08-05 23:03:19 +02:00
tomFlowee d73763977c Avoid calls to listeners while we have a lock.
This is a library class, lets be nice to users of our class and
avoid deadlocks.
2021-07-31 18:25:24 +02:00
tomFlowee 77bd1ac74f Improve the SPV sync action.
This re-thinks the way we assign new peers and massively speeds up the
finding of enough peer for our wallets.
2021-07-30 16:56:25 +02:00
tomFlowee 0e6f2bec29 Add 'Last' priority. 2021-07-30 14:03:29 +02:00
tomFlowee 4411ecb2e5 Fix API docs. 2021-07-30 14:03:03 +02:00
tomFlowee 45851de8b9 Fix and add log message on action. 2021-07-30 14:02:33 +02:00
tomFlowee e998e64c8f Register task. 2021-07-30 10:01:31 +02:00
tomFlowee 0d8845386d API docs. 2021-07-30 10:01:06 +02:00
tomFlowee c8a531e6f8 Comments and fix warning
Statics should be PODs.
2021-06-24 19:10:14 +02:00
tomFlowee d18e13b93b Add new callback on DataListenerInterface when we synched headers 2021-05-28 14:53:19 +02:00
tomFlowee 460d4be807 Add new method Blockchain::blockHeightAtTime() 2021-05-28 14:52:27 +02:00
tomFlowee d17b8f0c40 Add API docs for new static-headers method. 2021-05-28 12:42:30 +02:00
tomFlowee c45e7d9c3e [P2P] Do not save blockchain data when not changed 2021-05-27 19:08:46 +02:00
tomFlowee d1fa3fa4a9 [P2P] Allow static loading of blockheaders
This adds a unit test for the Blockchain class in the p2p lib and this
introduces the functionality to have a blockchain pre-shipped with an
app.
2021-05-27 19:08:46 +02:00
tomFlowee ccb1016ac7 Avoid deep-copying a bloomfilter when possible. 2021-05-27 19:08:46 +02:00
tomFlowee d3f1d7f454 Whitepace and minor fixes. 2021-02-05 17:32:36 +01:00
tomFlowee ceb44cc3b5 Remove dead code. 2021-02-05 17:26:40 +01:00
tomFlowee f026e626a1 Add notifications for the p2pnet lib. 2021-02-05 17:22:52 +01:00
tomFlowee 70f363cabb Also allow downloading of dsproofs. 2021-02-04 18:09:38 +01:00