[P2P] P2P Module Knowledge Transfer #438
Labels
discussion
It has a related Discussion
documentation
Improvements or additions to documentation
p2p
P2P specific changes
Milestone
Objective
This is an umbrella ticket to capture references and discussion around knowledge transfer of the P2P module. The primary focus is to integrate Pocket V1 with LibP2P and answer outstanding questions in RainTree.
Origin Document
The results of the V1 P2P Research ultimately resulted in the development of a structured gossip algorithm called RainTree, presented here, and also summarized in the V1 P2P specification.
RainTree
A Python simulator was developed based on the RainTree specifications outlined here. Pocket is a Network with many nodes but not transmit large blobs of data (i.e. akin to smart contract blockchains), so whenever a new block is being committed or proposed, our goal is to distribute it throughout the network as quickly as possible. RainTree was designed to achieve this via a structured gossip algorithm with
O(log3(n))
complexity. Though it was not formally proven, here were some preliminary stats collected:This comment summarizes well the different types of broadcasts necessary in Pocket.
The current implementation of RainTree and the P2P module lives here.
Redundancy & Cleanup
While working on implementing the redundancy & cleanup layers in #368, we determined that the original specifications are not clear enough about the direction of these two features and require deeper thought before implementation. The next steps were outlined in this comment. The foundation for both is in place, but needs to be outlined & documented in more detail before implementation. The original PR should be referenced when this is undertaken, and the simulator needs to be updated appropriately as well.
LibP2P Integration
Though RainTree takes care of gossip (i.e. message routing), it does not take into account many other important parts of the P2P module, such as, but not limited to:
Our team conducted research on integrating LibP2P into our library and have decided that it is the right approach, with next steps summarized here.
Goals
Deliverable
Non-goals / Non-deliverables
Creator: @Olshansk
Co-Owners: @deblasis
The text was updated successfully, but these errors were encountered: