Files
thehub/libs
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
..
2024-02-09 18:52:04 +01:00
2022-11-23 16:31:29 +01:00
2022-09-10 00:35:59 +02:00
2024-02-12 21:29:33 +01:00
2024-02-14 00:16:39 +01:00
2024-01-24 21:03:58 +01:00
2022-02-26 11:49:56 +01:00

Flowee libs

There are a series of libraries that are shipped by Flowee, which are all in production by one or more of its applications.

Most of these libraries are also installed and shipped by deb/aur packages. You can use them from cmake.

  • crypto
    Basic crypto primitives. AES/SHA256.

  • interfaces
    Provides enums and interfaces.

  • utils
    This is the most useful one, lots of Bitcoin Cash util classes.

  • networkmanager
    A series of classes to do network communications with BCH and/or Flowee apps.

  • p2p
    A specific set of libs that implements the BCH p2p network communications.

  • utxo
    This is a library that supplies a sha256 specific database.

  • httpengine
    A webserver based on QtNetwork libs.

  • apputils
    Standalone-apps utils, depends on Qt libs.

Stability

While Flowee is in major version 1 the libraries are shipped to be statically linked because while the code is stable and known to work, the APIs can be changed in a binary incompatible and (much rarer) source incompatible way. Users are isolated from binary incompatible changes this way.

We have a developer-notes doc which specifies a coding style, which is at this time mostly used for new code and a wish for old code. Many APIs have been written and have been stable for a lot of years and they may not at this time follow those coding guidelines. We apologize for this and point out that slow changes and stability are more important than strict confirmation to some rules. Even though those rules will make new users more comfortable. Slow changes and stability.

License

All libraries are GPLv3, except for the httpengine one which is LGPL as it is derived from the qhttpengine open source project.

The original Satoshi codebase was MIT licensed. This has been combined with copyrighted works from Tom Zander which are GPLv3 licensed with the result that those files are new licensed under the GPLv3.