Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Epic] Peer Exchange is supported and used by default #1429

Closed
10 tasks done
fryorcraken opened this issue Jul 18, 2023 · 11 comments
Closed
10 tasks done

[Epic] Peer Exchange is supported and used by default #1429

fryorcraken opened this issue Jul 18, 2023 · 11 comments
Assignees
Labels
E:2.1: Production testing of existing protocols See https://github.com/waku-org/pm/issues/49 for details epic Tracks a yearly team epic (only for waku-org/pm repo)

Comments

@fryorcraken
Copy link
Collaborator

fryorcraken commented Jul 18, 2023

Planned start date:
Due date:

Summary

This milestone tracks the development, testing and hardening of 34/WAKU2-PEER-EXCHANGE protocol in js-waku.

Acceptance Criteria

  • Waku Peer Exchange enables js-waku client to find peers, outside the waku v2 fleet.
  • Waku Peer Exchange is part of the defaultBootstrap protocol for js-waku, it connects to peer exchange peers BUT only use bootstrap peer for filter, store: feat!: set peer-exchange with default bootstrap #1469. peer exchange + bootstrap peers are used for light push.

Tasks

Notes

Finding other Waku Store services using peer exchange is out of scope due to the current federated nature/high requirements on Waku Store service node.
Tracking the usage of peer exchange to find other store node is part of decentralisation of Waku Store roadmap.

RAID (Risks, Assumptions, Issues and Dependencies)

  • Dogfooding must happen.
  • depends on nwaku/research to improve the protocol.
@danisharora099
Copy link
Collaborator

danisharora099 commented Aug 7, 2023

Weekly Update

  • achieved: robustness around peer-exchange, and highlight discovery vs connections for PX on the web-chat example
  • next: saving successfully connected PX peers to local storage for easier connections on reload

@fryorcraken
Copy link
Collaborator Author

Thinking how we can deliver this with a net positive in terms of reliability.
The main risk is connecting to node that are unreliable.

I would recommend to make peer exchange by default:

  • Keep using bootstrap node for store (1) + light push (1) + filter (1)
  • implement redundant usage of light push and filter on peer discovery nodes (ie, filter subscrive to 2-3 nodes, including one bootstrap).

That would be enough to use peer exchange and close the issue.
Further work such as remembering discovered peers and having some sort of scoring can be done with follow-up milestones.

@fryorcraken
Copy link
Collaborator Author

@danisharora099 see my comment above #1429 (comment)

I don't think #1326 should be part of the scope of this issue.
Let's limit the scope of peer exchange so we can ship it.

@danisharora099
Copy link
Collaborator

@fryorcraken thanks!

could you explain this what we mean by this?

implement redundant usage of light push and filter on peer discovery nodes (ie, filter subscrive to 2-3 nodes, including one bootstrap).

not sure what i'm missing: if we setup redundant usage, we would start receiving multiple messages on subscription, and also pushing the same message multiple times

@fryorcraken
Copy link
Collaborator Author

not sure what i'm missing: if we setup redundant usage, we would start receiving multiple messages on subscription, and also pushing the same message multiple times

Yes absolutely. Which is why we will need to have a duplicate filtering mechanism in place on js-waku side to not emit dupe messages to the API, as described in the Notes of #1463

Sending the same message twice over light push using 2 different nodes is fine and enables you to put less trust on one remote peer.
The message will not be "duplicated" over the relay network as it's actually very similar on how the relay network works: seending the same messages to all peers in the mesh.

@danisharora099
Copy link
Collaborator

danisharora099 commented Aug 14, 2023

Weekly update

  • achieved: close the "fallback mechanism for peer rejections", refactor peer-exchange compliance test
  • next: peer-exchange to be included with default discovery, action peer-exchange browser feedback

@danisharora099
Copy link
Collaborator

danisharora099 commented Aug 21, 2023

Weekly update

  • achieved: peer-exchange included by default (PR opened)
  • next: tasks breakdown and followup from dogfooding feedback

@fryorcraken fryorcraken changed the title [Milestone] Peer Exchange is supported and used by default [Epic] Peer Exchange is supported and used by default Aug 24, 2023
@fryorcraken fryorcraken added epic Tracks a yearly team epic (only for waku-org/pm repo) and removed milestone Tracks a subteam milestone labels Aug 24, 2023
@danisharora099
Copy link
Collaborator

danisharora099 commented Aug 28, 2023

Weekly Update

  • achieved: break down dogfooding into tasks for peer-exchange

@danisharora099 danisharora099 moved this from In Progress to Code Review / QA in Waku Sep 6, 2023
@danisharora099 danisharora099 moved this from Code Review / QA to In Progress in Waku Sep 7, 2023
@danisharora099
Copy link
Collaborator

Weekly Update

  • achieved: Peer Exchange is now merged included in defaultBootstrap
  • next: followup on browser investigation and confirm if the EPIC can be safely closed

@fryorcraken fryorcraken added E:2.1: Production testing of existing protocols See https://github.com/waku-org/pm/issues/49 for details and removed E:2023-light-protocols labels Sep 22, 2023
@danisharora099
Copy link
Collaborator

tracking some work on circuit relay here: #1527

@danisharora099
Copy link
Collaborator

Weekly Update

  • achieved: The Peer Exchange Epic is now completed & closed

@github-project-automation github-project-automation bot moved this from In Progress to Done in Waku Sep 22, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
E:2.1: Production testing of existing protocols See https://github.com/waku-org/pm/issues/49 for details epic Tracks a yearly team epic (only for waku-org/pm repo)
Projects
Archived in project
Development

No branches or pull requests

3 participants