You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Context and scope
With Etna, primary network API nodes will no longer be expected to be connected to all L1 validators. info.Peers will return peers only for tracked subnets. Rather than requiring Info API nodes for all tracked subnets, we can instead fetch the global peer list over p2p. ava-labs/avalanchego#3491 relaxes the p2p.GetPeers constraints such that any primary network validator will return the list of peers across all L1s to non-primary network validator nodes. We can use this in the signature aggregator to fetch the global list of peers, and manually connect to each.
Discussion and alternatives
Peers can be fetched over p2p using the p2p.GetPeerList message type. We need to ensure that we are requesting this from a primary network validator. We can do this by calling info.Peers on a primary network API node, which matches the current API requirements.
Open questions
Is manually connecting to each of the peers the preferred approach? Currently, we connect to peers like so:
Fetch the canonical validator set of an L1
Fetch the global peer list (previously via info.Peers, with this change via p2p.GetPeerList)
Manually connect to the canonical validator set using the IP addresses from the previous step
Instead, we should be able to transitively connect to all L1 peers by manually connecting to a subset of the L1's validators. See the example here. We may be able to instead maintain an in-memory list of connected/tracked subnets that we bootstrap connections to only once. This would likely be a larger change, but could simplify peer discovery overall. Some additional research is required here, especially given potential changes to subnet tracking semantics in the Avalanchego networking code.
The text was updated successfully, but these errors were encountered:
We're waiting for this feature. Current our workaround is using manuallyTrackedPeers, but it doesn't work with PoS chains when new validators can be added permissionless.
The patch below allows us to connect only to this bootstrap validator. The signature aggregator observes new validators correctly but unable to connect to them.
Context and scope
With Etna, primary network API nodes will no longer be expected to be connected to all L1 validators.
info.Peers
will return peers only for tracked subnets. Rather than requiring Info API nodes for all tracked subnets, we can instead fetch the global peer list over p2p. ava-labs/avalanchego#3491 relaxes thep2p.GetPeers
constraints such that any primary network validator will return the list of peers across all L1s to non-primary network validator nodes. We can use this in the signature aggregator to fetch the global list of peers, and manually connect to each.Discussion and alternatives
Peers can be fetched over p2p using the p2p.GetPeerList message type. We need to ensure that we are requesting this from a primary network validator. We can do this by calling
info.Peers
on a primary network API node, which matches the current API requirements.Open questions
Is manually connecting to each of the peers the preferred approach? Currently, we connect to peers like so:
info.Peers
, with this change viap2p.GetPeerList
)Instead, we should be able to transitively connect to all L1 peers by manually connecting to a subset of the L1's validators. See the example here. We may be able to instead maintain an in-memory list of connected/tracked subnets that we bootstrap connections to only once. This would likely be a larger change, but could simplify peer discovery overall. Some additional research is required here, especially given potential changes to subnet tracking semantics in the Avalanchego networking code.
The text was updated successfully, but these errors were encountered: