ethereum / portal-network-specs

Official repository for specifications for the Portal Network
309 stars 84 forks source link

Staged Test Network Plan #116

Closed pipermerriam closed 3 weeks ago

pipermerriam commented 2 years ago

I would like to outline some proposed structure for how we roll out our test network.

The goal of this test network is to iterate towards the full functionality necessary for the Chain History network.

Phases

Phase Zero: Overlay Only

During this phase we will simply establish our ability to establish a stable overlay network using the Portal Wire Protocol messages.

In this phase, each team will be responsible for deploying however many nodes they wish. Each team may supply the ENR records for any stable "bootnodes" they will be operating.

What we are testing:

  1. Client interoperability and stability
    • Message encoding and decoding for PING/PONG/FINDNODE/FOUNDNODES
  2. Healthy overlay network
    • Do clients populate and maintain their routing tables as expected.
    • Can we navigate the network as expected to find nodes the closest nodes to a location.
Client A B C D E F G
Fluffy :heavy_check_mark: :heavy_check_mark: :heavy_check_mark: :heavy_check_mark: :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
Trin :heavy_check_mark: :heavy_check_mark: :heavy_check_mark: :heavy_check_mark: :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
Ultralight :heavy_check_mark: :heavy_check_mark: :heavy_check_mark: :heavy_check_mark: :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:

Phase One: Simple Content Retrieval

During this phase we will be testing the ability to find and retrieve content stored in the network by other nodes.

What we are testing

  1. The ability for nodes to traverse the DHT and find the nodes which have the content they need
    • Any block header in the first million blocks should be retrievable by its block hash.
  2. The basic transmission of content without uTP
Client A B C D
Fluffy :heavy_check_mark: :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
Trin :heavy_check_mark: :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
Ultralight :heavy_check_mark: :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:

Phase Two: Gossip

During this phase we will build out the mechanisms needed for gossip, including use of the uTP protocol.

What we are testing

  1. uTP based transmission of content
  2. The effective spread of new content using gossip
  3. The passive replication of existing content using POKE mechanic.
Client A B C D.i D.ii
Fluffy :heavy_check_mark: :heavy_check_mark: :heavy_check_mark: :heavy_check_mark: :pizza:
Trin :heavy_check_mark: :heavy_check_mark: :heavy_check_mark: :heavy_check_mark: :pizza:
Ultralight :heavy_check_mark: :heavy_check_mark: :heavy_check_mark: :question: :heavy_check_mark:

Phase Three: Head Tracking

TODO: we can no longer simply follow the chain with the highest TDD after merge. Need to implement light protocol for Eth2

NOTE: establish the "correct" solution and then look for a quick solution that will get us the needed functionality quickly.

Phase Four: Full Content Transmission

During this phase we will flesh out the remaining functionality for transmission of content, specifically, large payloads that must be sent over uTP

What we are testing

  1. support for remaining content types (bodies and receipt bundles)
  2. clients implement full support for FINDCONTENT/CONTENT including full uTP based content transmission.
Client A B C D
Fluffy :heavy_check_mark: :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
Trin :heavy_check_mark: :pizza: :heavy_check_mark: :heavy_check_mark:
Ultralight :heavy_check_mark: :heavy_check_mark: :pizza: :heavy_check_mark:

Phase Five: The Road To Production

TODO: what is left?

NOTE: visibility into the state of the network is probably valuable at this stage.

NOTE: verifying cross client compatibility will need to be done

pipermerriam commented 2 years ago

Proposal for DevConnect goals:

  1. Each client has documentation on how to install and launch a node which will connect to the current testnet bootnodes.
  2. Ultralight has some documentation on how to launch and run the in-browser stuff.
  3. Hosting of at least a subset of the header chain available via the testnet.
ogenev commented 2 years ago

3. Hosting of at least a subset of the header chain available via the testnet.

Does this include 1) and 2) from Phase Two: Gossip?

pipermerriam commented 2 years ago

Does this include 1) and 2) from Phase Two: Gossip?

I think it can be done in whatever the fastest/quickest way that works is which doesn't diverge too far from the existing roadmap. Don't want us doing extra work that doesn't lead us towards the final product... but if we can have uTP streams by then in any capacity then huzzah!

acolytec3 commented 2 years ago

Have updated for Ultralight

kdeme commented 2 years ago

As have I for Fluffy

ogenev commented 2 years ago

Updated for Trin

pipermerriam commented 2 years ago

is :pizza: a no? partial?

acolytec3 commented 2 years ago

is :pizza: a no? partial?

Partial in our case

ogenev commented 2 years ago

is pizza a no? partial?

Partial/in progress for Trin. Updated POKE with :x: as It is not yet implemented.

carver commented 2 years ago

POKE in trin is merged, I updated the table

kdeme commented 3 weeks ago

Closing as this is completed since a while for all clients mentioned in the issue tracker.