-
Notifications
You must be signed in to change notification settings - Fork 42
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
feat: SDK for redundant usage of filter/lightpush #1463
Comments
Some idea for a logic: #914 (comment) |
@danisharora099 to check a way to understand how reliable a peer (scoring) is by using existing |
@danisharora099 Shall we add a latency check as part of this milestone where we select the peers with lowest latency. Maybe latency can be part of some scoring mechanism? not sure |
Great initiative to look at some of these questions, especially as it relates to filter usage!
As such it will be helpful to provide a configurable "reliability" SDK on top of filter for projects without the scope to build these features from the ground up with filter.
Indeed. For now I'd suggest just selecting random nodes in the network as filter/lightpush peers, with some redundancy factor built in.
I wouldn't necessarily bring scoring into this. Relay/gossipsub, for example, simply choose to eventually disconnect from peers that provides less value than others (peer scoring may be too long-lived and complex if there's simply a temporary connectivity issue). You could for example have
I wouldn't imagine that the DNS lookups, followed by initial peer-exchange should take very long. It's probably a good idea to cache some peers, but I would try to flush out that cache as soon as possible after a startup and replace each of these subscriptions with a new one to a random node. This is to prevent a node from always using the same peers and so being vulnerable to bias. Note that @siphiuel has been doing similar work on filter for status-go, so definitely worth getting his input here. :) |
@jm-clius agree with your overall idea, thanks for the comment! re:
we decided to use the peer with the lowest ping for this, with the aim of having fastest responses to protocol requests so not sure how useful randomness is in the context of js-waku |
I'd suggest to follow @jm-clius 's recommendation here and not introduce scoring. |
attributes that could contribute to defining "reliability":
rough implementation (needs improvement):
cc @waku-org/research @fryorcraken |
IMO the most important criteria is missing from the list:
|
action plan:
PRs:
The scope of unreliability can be tackled as a followup PR cc @jm-clius @waku-org/js-waku-developers please let me know if you have thoughts |
What peers? do you mean you do DNS discovery and peer exchange?
|
With "cache existing on startup" means the nodes that we were previously able to connect to healthily, and are stored in our local storage. We connect to them, run PX on them, find new peers and eventually remove them and add these new found peers so we don't keep reusing the same peers to connect to. |
remainder:
|
As the last working item in this issue is linked to Reliability milestone - I am closing this with decoupling peer scoring into #2017 |
Another working item from this issue: #2018 |
Planned start date:
Due date:
Summary
Implement a scoring or other mechanism to enable js-waku nodes to:
Implementing (2) without (1) would mean that upon start up, a node would not connect to bootstrap (Waku fleet) peers but previously found peers. Such peers may not be reliable and could lead to a full degradation of the experience.
A js-waku needs to determine whether it can avoid using bootstrap peers.
Also note:
Acceptance Criteria
Notes
To ensure the API consumers does not receive duplicate messages when several nodes are used for filter, caching of message (MUID) will be necessary.
Tasks
RAID (Risks, Assumptions, Issues and Dependencies)
The text was updated successfully, but these errors were encountered: