Access nodes that support public Observer nodes internally create a separate network for public traffic. They also serve a DHT which is used by ANs and Observers to discover other nodes on the public network.
Currently, ANs start with an empty network topology, which means they each use a separate DHT. Observers connecting to a given AN as its bootstrap node would effectively be on a separate network from an observer connecting to a different AN.
To improve network stability, ANs should share a public network DHT so there are a large number of ANs and Observer participating in block sync.
Add a new cli parameter to Access nodes that accepts a list of other access nodes to include in the initial public network topology.
Update the public network initialization so each of the nodes listed is included
AN operators could then publish their public network address so other operators that wanted to support observers and participate on the main public network could do so by including it in their startup configs.
AN operators that wanted to have a private (public) network could do so by only including their own set of ANs in the start config.
Definition of Done
The public network's DHT is connected across Access nodes, forming a large connected network.
There are integration tests that validate the correct behavior. e.g. given a network with 3 ANs and 3 ONs:
Test1: ANs use default config. ON1 connects only to AN1 -> ON1 should not see AN2
Test2: AN2 is configured to with AN1 as a peer. ON2 connects to AN2. ON2 should see AN1 and ON1
Test3: AN3 uses default config. ON3 connects to AN3. ON3 should only see AN3.
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.
Problem Definition
Access nodes that support public Observer nodes internally create a separate network for public traffic. They also serve a DHT which is used by ANs and Observers to discover other nodes on the public network.
Currently, ANs start with an empty network topology, which means they each use a separate DHT. Observers connecting to a given AN as its bootstrap node would effectively be on a separate network from an observer connecting to a different AN.
To improve network stability, ANs should share a public network DHT so there are a large number of ANs and Observer participating in block sync.
Proposed Solution
ANs setup their public network topology here: https://github.com/onflow/flow-go/blob/master/cmd/access/node_builder/access_node_builder.go#L930
AN operators could then publish their public network address so other operators that wanted to support observers and participate on the main public network could do so by including it in their startup configs.
AN operators that wanted to have a private (public) network could do so by only including their own set of ANs in the start config.
Definition of Done
The public network's DHT is connected across Access nodes, forming a large connected network. There are integration tests that validate the correct behavior. e.g. given a network with 3 ANs and 3 ONs: