Welcome to p2p.today’s documentation!¶
We are trying to make peer-to-peer networking easy. Right now there are very few libraries which allow multiple languages to use the same distributed network.
We’re aiming to fix that by providing several network models, which you can use simply by creating an object. These objects will have the simplest API possible to do the job, as well as some features under the hood which you can hook into.
What We Have¶
There are several projects in the work right now. Several of these could be considered stable, but we’re going to operate under the “beta” label for some time now.
Base Network Structures¶
All of our networks will be built on common base classes. Because of this, we can guarantee some network features.
- Networks will have as much common codebase as possible
- Networks will have opportunistic compression across the board
- Node IDs will be generated in a consistent manner
- Command codes will be consistent across network types
This is our unorganized network. It operates under three simple rules:
- The first node to broadcast sends the message to all its peers
- Each node which receives a message relays the message to each of its peers, except the node which sent it to them
- Nodes do not relay a message they have seen before
Using these principles you can create a messaging network which scales linearly with the number of nodes.
This is an extension of the above network. It inherits all of the message sending properties, while also syncronizing a local dictionary-like object.
The only limitation is that it can only have string-like keys. There is also an optional “leasing” system, which is enabled by default. This means that a user can own a particular key for a period of time.
The idea is that you can use this as a dictionary-like object. The only limitation is that it can only have string-like keys. It uses five separate hash tables for hash collision avoidance and data backup in case a node unexpectedly exits.
Contributing, Credits, and Licenses¶
Contributors are always welcome! Information on how you can help is located on the Contributing page.
Credits and License are located on their own page.