pokt-network/pocket-network-protocol

[SPIKE][P2P] Configuration - Peer Discovery and Dynamic Peer Addition/Removal - Research Gemini Algorithm

Closed this issue · 5 comments

Objective

Research Gemini DHT algorithm to determine if and/or how we apply the functionality in V1 P2P peer discovery and dynamic peer addition/removal (churn) as part of the Raintree algorithm implementation, as well as how it would be implemented alongside other P2P libraries or tooling such as LibP2P. Ideally done in parallel with #17

Origin Document

Initial research concluded that the Gemini algorithm was the best solution due to its simplicity, scalability, and efficiency:

V1 P2P discovery

You can learn more about the Gemini algorithm here:

Gemini: Probabilistic Routing Algorithm in Structured P2P Overlay

As we continue to tackle Raintree tech debt and prepare to integrate the Persistence module with P2P, we should revisit this research to confirm that the Gemini algorithm is the right solution as it relates to Peer Discovery and Churn with a focus on:

  • Sufficiency
  • Simplicity
  • Scalability
  • Efficiency
  • Extensibility / modularity

Additionally, if we do not leverage LibP2P for Peer Discovery and Churn, we should revisit that library prior to finishing the complete P2P module in case there are other elements of the library we wish to integrate and if LibP2P will be compatible with Gemini for Peer Discovery and Churn with a focus on:

  • Peer Discovery
  • Churn
  • Session Management
  • Transport Layer Security

Goals

  • Summarize research learnings and recommendations on leveraging the Gemini algorithm and recommended next steps (if any)

Deliverable

  • Determine if we should use the Gemini or a similar DHT algorithm for peer discovery and churn as part of the Raintree implementation
  • Determine if Gemini is compatible with LibP2P (if we choose to use that library)
  • Research and document the Gemini algorithm as it pertains to Raintree (and, if relevant LibP2P) in a 1-2 pager that includes:
    • Implementation plans (creating stories)
    • (if relevant) how the algorithm will interact with LibP2P

Non-goals / Non-deliverables

  • Implementing Gemini

Creator: @jessicadaugherty

@andrewnguyen22 @deblasis for your review

Nice work! The only thing is that I am not sure about the word "Configuration" in the title. Same applies to #17

Ty @deblasis :) I added configuration per the roadmap:

P2P - Configuration
Peer discovery
Dynamic peer addition / removal

So P2P = the epic, configuration = the feature set and peer discovery/dynamic peer = components that will be broken into user stories/tasks, such as "research Gemini". Lmk if this convention is confusing for you, though and I can re-organize np.

I see. Gotcha. No need to reorganize anything. Thank you @jessicadaugherty!

@jessicadaugherty We can remove the "Testing Methodology" and "General Issue Delivierables" from this issue.

Might also be worth mentioning explicitly some of the points added in #17 regarding other elements of LibP2P (session management and transport layer security) that were excluded here.