Skip to content

Discovery options for phase 0 #7

Description

@jannikluhn

Nodes need a way to find peers. In phase 0, this task is less challenging than in later phases as there are no shards and nodes can choose peers randomly from the whole set of nodes in the network [1]. For this reason, we should be able to just pick an existing protocol and the main consideration is implementation overhead. Here are some options that we could consider:

Bootstrap list

  • implemented in libp2p, probably trivial to implement by ourselves
  • maybe fine for a testnet, but too centralized as the only mechanism for a real network.

libp2p MulticastDNS

  • not an option as it only works in a local network.

libp2p KadDHT

  • Implementation status:
    • Go
    • Rust
    • JavaScript
    • Python
    • Nim
    • Java
    • Daemon

devp2p discovery

  • Implementation status:
    • Go
    • Rust
    • JavaScript
    • Python
    • Nim
    • Java
  • Note that it's also possible to implement devp2p's discovery protocol on top of libp2p primitives.

Do you have other suggestions? What are your preferences?

[1] One caveat has been pointed out here: Signatures still need to be aggregated at the shard level. However, since the bandwidth required to transmit signatures is much less than to transmit shard blocks, I think we can just gossip signatures to everyone, even to nodes that don't participate in the aggregation. This is something we should discuss though.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions