Skip to content
This repository has been archived by the owner on Jul 19, 2023. It is now read-only.

Gossipping ENR protocol #35

Closed
nkeywal opened this issue Feb 2, 2019 · 1 comment
Closed

Gossipping ENR protocol #35

nkeywal opened this issue Feb 2, 2019 · 1 comment
Assignees

Comments

@nkeywal
Copy link
Contributor

nkeywal commented Feb 2, 2019

EIP for ENR itself it here: https://eips.ethereum.org/EIPS/eip-778

One of the proposal to communicate the ENDR, likely the simplest one actually, is that each node gossip periodically its ENR. There are at least three things to take care about:

  1. we don't want to overload the network -> we need to know how much data we send depending on the period time
  2. we don't want a new node to wait for ages before having access to the information it needs, not getting state data, even if the capabilities is rare.
  3. nodes will need to connect to peers with the capabilities they need. But this could lead to partition the network by capability which may be a bad idea.

The basic protocol would be:

  • we rely on a p2p flood protocol
  • a node has a set of capabilities (a set of string for readiness), some of them rarer than other. The distribution is a parameter; Pareto & gaussian are likely interesting.
  • for some (proportion being a parameter) nodes, these capabilities change regularly (representing a validator moving from one shard to another). The time between changes is a parameter of the protocol.
  • a node gossips its capabilities
    • when it joins the network
    • when it leaves it (sometimes it dies w/o this step, proportion another parameter)
    • when the capabilities change
    • every X seconds (another parameters)
  • nodes discard the information after a given amount of time if it didn't get an update (another parameter of the protocol).
  • new nodes enter regularly and look for given capabilities then leave the network after a given amount of time. Another parameter, may be we need it to be a random variable on a gaussian rather than an integer.

We will measure, for around 20K nodes:

  • the time it takes for a new node to get the capabilities it needs.

cc @carver

@vanessabridge vanessabridge self-assigned this Feb 4, 2019
@vanessabridge
Copy link
Contributor

#50

@nkeywal nkeywal closed this as completed May 29, 2019
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants