From 807fd305670fc82400fb3bac9b4c676e3e3bc841 Mon Sep 17 00:00:00 2001 From: Ian Suvak Date: Thu, 3 Oct 2024 12:21:24 -0400 Subject: [PATCH 1/6] bump avalanchego and update uptime interface --- go.mod | 6 +++--- go.sum | 8 ++++---- peers/info_client.go | 4 ++-- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/go.mod b/go.mod index f5aaddd2..8877b32d 100644 --- a/go.mod +++ b/go.mod @@ -1,9 +1,9 @@ module github.com/ava-labs/awm-relayer -go 1.22.7 +go 1.22.8 require ( - github.com/ava-labs/avalanchego v1.11.11 + github.com/ava-labs/avalanchego v1.12.0-initial-poc.0 github.com/ava-labs/coreth v0.13.8 github.com/ava-labs/subnet-evm v0.6.10 github.com/ava-labs/teleporter v1.0.7 @@ -85,7 +85,7 @@ require ( github.com/google/uuid v1.6.0 // indirect github.com/gorilla/mux v1.8.0 // indirect github.com/gorilla/rpc v1.2.0 // indirect - github.com/gorilla/websocket v1.4.2 // indirect + github.com/gorilla/websocket v1.5.0 // indirect github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 // indirect github.com/hashicorp/go-bexpr v0.1.10 // indirect github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d // indirect diff --git a/go.sum b/go.sum index e04ce3d0..ad89e032 100644 --- a/go.sum +++ b/go.sum @@ -58,8 +58,8 @@ github.com/alexliesenfeld/health v0.8.0/go.mod h1:TfNP0f+9WQVWMQRzvMUjlws4ceXKEL github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156 h1:eMwmnE/GDgah4HI848JfFxHt+iPb26b4zyfspmqY0/8= github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= -github.com/ava-labs/avalanchego v1.11.11 h1:MIQq8xRavRj4ZXHA4G+aMiymig7SOScGOG1SApmMvBc= -github.com/ava-labs/avalanchego v1.11.11/go.mod h1:yFx3V31Jy9NFa8GZlgGnwiVf8KGjeF2+Uc99l9Scd/8= +github.com/ava-labs/avalanchego v1.12.0-initial-poc.0 h1:9JO0Yh4+fWfuoNenPgkJsaVuIh8cq4c1rYTD8Hv9fU8= +github.com/ava-labs/avalanchego v1.12.0-initial-poc.0/go.mod h1:qSHmog3wMVjo/ruIAQo0ppXAilyni07NIu5K88RyhWE= github.com/ava-labs/coreth v0.13.8 h1:f14X3KgwHl9LwzfxlN6S4bbn5VA2rhEsNnHaRLSTo/8= github.com/ava-labs/coreth v0.13.8/go.mod h1:t3BSv/eQv0AlDPMfEDCMMoD/jq1RkUsbFzQAFg5qBcE= github.com/ava-labs/subnet-evm v0.6.10 h1:uIh6bFMA4GCMVMQ3agBPxTMlYHL8FBR5FrhMR+drfKI= @@ -355,8 +355,8 @@ github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB7 github.com/gorilla/rpc v1.2.0 h1:WvvdC2lNeT1SP32zrIce5l0ECBfbAlmrmSBsuc57wfk= github.com/gorilla/rpc v1.2.0/go.mod h1:V4h9r+4sF5HnzqbwIez0fKSpANP0zlYd3qR7p36jkTQ= github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= -github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= +github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway/v2 v2.18.0 h1:RtRsiaGvWxcwd8y3BiRZxsylPT8hLWZ5SPcfI+3IDNk= diff --git a/peers/info_client.go b/peers/info_client.go index 53c5dd6e..bf6ea091 100644 --- a/peers/info_client.go +++ b/peers/info_client.go @@ -72,6 +72,6 @@ func (i *InfoAPI) Peers(ctx context.Context) ([]info.Peer, error) { return i.client.Peers(ctx, i.options...) } -func (i *InfoAPI) Uptime(ctx context.Context, subnetID ids.ID) (*info.UptimeResponse, error) { - return i.client.Uptime(ctx, subnetID, i.options...) +func (i *InfoAPI) Uptime(ctx context.Context) (*info.UptimeResponse, error) { + return i.client.Uptime(ctx, i.options...) } From bceba83023b81e560b7cd65ad91700c1bcc0341a Mon Sep 17 00:00:00 2001 From: Felipe Madero Date: Thu, 10 Oct 2024 10:00:39 -0300 Subject: [PATCH 2/6] add extra endpoints to the peer network --- peers/app_request_network.go | 49 ++++++++++++++++++++++++++----- relayer/main/main.go | 1 + signature-aggregator/main/main.go | 1 + 3 files changed, 44 insertions(+), 7 deletions(-) diff --git a/peers/app_request_network.go b/peers/app_request_network.go index df4e20e0..365886b0 100644 --- a/peers/app_request_network.go +++ b/peers/app_request_network.go @@ -11,9 +11,11 @@ import ( "sync" "time" + "github.com/ava-labs/avalanchego/api/info" "github.com/ava-labs/avalanchego/ids" "github.com/ava-labs/avalanchego/message" "github.com/ava-labs/avalanchego/network" + "github.com/ava-labs/avalanchego/network/peer" avagoCommon "github.com/ava-labs/avalanchego/snow/engine/common" snowVdrs "github.com/ava-labs/avalanchego/snow/validators" "github.com/ava-labs/avalanchego/subnets" @@ -58,6 +60,8 @@ type appRequestNetwork struct { lock *sync.Mutex validatorClient *validators.CanonicalValidatorClient metrics *AppRequestNetworkMetrics + // endpoints for peers otherwise not available on canonical peers + extraPeerEndpoints []string } // NewNetwork creates a p2p network client for interacting with validators @@ -65,6 +69,7 @@ func NewNetwork( logLevel logging.Level, registerer prometheus.Registerer, trackedSubnets set.Set[ids.ID], + extraPeerEndpoints []string, cfg Config, ) (AppRequestNetwork, error) { logger := logging.NewLogger( @@ -121,13 +126,14 @@ func NewNetwork( validatorClient := validators.NewCanonicalValidatorClient(logger, cfg.GetPChainAPI()) arNetwork := &appRequestNetwork{ - network: testNetwork, - handler: handler, - infoAPI: infoAPI, - logger: logger, - lock: new(sync.Mutex), - validatorClient: validatorClient, - metrics: metrics, + network: testNetwork, + handler: handler, + infoAPI: infoAPI, + logger: logger, + lock: new(sync.Mutex), + validatorClient: validatorClient, + metrics: metrics, + extraPeerEndpoints: extraPeerEndpoints, } go logger.RecoverAndPanic(func() { testNetwork.Dispatch() @@ -165,6 +171,35 @@ func (n *appRequestNetwork) ConnectPeers(nodeIDs set.Set[ids.NodeID]) set.Set[id return nil } + // Add specific endpoints not available at canonical peers + for _, endpoint := range n.extraPeerEndpoints { + client := info.NewClient(endpoint) + nodeID, _, err := client.GetNodeID(context.Background()) + if err != nil { + n.logger.Error( + "Failed to get node ID for extra peer", + zap.String("endpoint", endpoint), + zap.Error(err), + ) + return nil + } + IP, err := client.GetNodeIP(context.Background()) + if err != nil { + n.logger.Error( + "Failed to get node IP for extra peer", + zap.String("endpoint", endpoint), + zap.Error(err), + ) + return nil + } + peers = append(peers, info.Peer{ + Info: peer.Info{ + ID: nodeID, + PublicIP: IP, + }, + }) + } + // Attempt to connect to each peer var trackedNodes set.Set[ids.NodeID] for _, peer := range peers { diff --git a/relayer/main/main.go b/relayer/main/main.go index 06e4c6e5..da4a3d41 100644 --- a/relayer/main/main.go +++ b/relayer/main/main.go @@ -153,6 +153,7 @@ func main() { networkLogLevel, registerer, trackedSubnets, + nil, &cfg, ) if err != nil { diff --git a/signature-aggregator/main/main.go b/signature-aggregator/main/main.go index 27edfd3b..829f8600 100644 --- a/signature-aggregator/main/main.go +++ b/signature-aggregator/main/main.go @@ -88,6 +88,7 @@ func main() { networkLogLevel, prometheus.DefaultRegisterer, nil, + nil, &cfg, ) if err != nil { From 572a248aad3f53fe1c75415323d0d2f012aeeddc Mon Sep 17 00:00:00 2001 From: Michael Kaplan Date: Fri, 11 Oct 2024 10:24:36 -0400 Subject: [PATCH 3/6] Manually tracked peers --- peers/app_request_network.go | 60 +++++++++++------------------------- 1 file changed, 18 insertions(+), 42 deletions(-) diff --git a/peers/app_request_network.go b/peers/app_request_network.go index 365886b0..2b766dfb 100644 --- a/peers/app_request_network.go +++ b/peers/app_request_network.go @@ -15,7 +15,6 @@ import ( "github.com/ava-labs/avalanchego/ids" "github.com/ava-labs/avalanchego/message" "github.com/ava-labs/avalanchego/network" - "github.com/ava-labs/avalanchego/network/peer" avagoCommon "github.com/ava-labs/avalanchego/snow/engine/common" snowVdrs "github.com/ava-labs/avalanchego/snow/validators" "github.com/ava-labs/avalanchego/subnets" @@ -60,16 +59,19 @@ type appRequestNetwork struct { lock *sync.Mutex validatorClient *validators.CanonicalValidatorClient metrics *AppRequestNetworkMetrics - // endpoints for peers otherwise not available on canonical peers - extraPeerEndpoints []string + + // Nodes that we should connect to that are not publicly discoverable. + // Should only be used local or custom networks where validators are not + // publicly discoverable to the primary network. + manuallyTrackedPeers []info.Peer } -// NewNetwork creates a p2p network client for interacting with validators +// NewNetwork creates a P2P network client for interacting with validators func NewNetwork( logLevel logging.Level, registerer prometheus.Registerer, trackedSubnets set.Set[ids.ID], - extraPeerEndpoints []string, + manuallyTrackedPeers []info.Peer, cfg Config, ) (AppRequestNetwork, error) { logger := logging.NewLogger( @@ -126,14 +128,14 @@ func NewNetwork( validatorClient := validators.NewCanonicalValidatorClient(logger, cfg.GetPChainAPI()) arNetwork := &appRequestNetwork{ - network: testNetwork, - handler: handler, - infoAPI: infoAPI, - logger: logger, - lock: new(sync.Mutex), - validatorClient: validatorClient, - metrics: metrics, - extraPeerEndpoints: extraPeerEndpoints, + network: testNetwork, + handler: handler, + infoAPI: infoAPI, + logger: logger, + lock: new(sync.Mutex), + validatorClient: validatorClient, + metrics: metrics, + manuallyTrackedPeers: manuallyTrackedPeers, } go logger.RecoverAndPanic(func() { testNetwork.Dispatch() @@ -160,7 +162,7 @@ func (n *appRequestNetwork) ConnectPeers(nodeIDs set.Set[ids.NodeID]) set.Set[id // re-adding connections to already tracked peers. startInfoAPICall := time.Now() - // Get the list of peers + // Get the list of publicly discoverable peers peers, err := n.infoAPI.Peers(context.Background()) n.setInfoAPICallLatencyMS(float64(time.Since(startInfoAPICall).Milliseconds())) if err != nil { @@ -171,34 +173,8 @@ func (n *appRequestNetwork) ConnectPeers(nodeIDs set.Set[ids.NodeID]) set.Set[id return nil } - // Add specific endpoints not available at canonical peers - for _, endpoint := range n.extraPeerEndpoints { - client := info.NewClient(endpoint) - nodeID, _, err := client.GetNodeID(context.Background()) - if err != nil { - n.logger.Error( - "Failed to get node ID for extra peer", - zap.String("endpoint", endpoint), - zap.Error(err), - ) - return nil - } - IP, err := client.GetNodeIP(context.Background()) - if err != nil { - n.logger.Error( - "Failed to get node IP for extra peer", - zap.String("endpoint", endpoint), - zap.Error(err), - ) - return nil - } - peers = append(peers, info.Peer{ - Info: peer.Info{ - ID: nodeID, - PublicIP: IP, - }, - }) - } + // Add manually tracked peers + peers = append(peers, n.manuallyTrackedPeers...) // Attempt to connect to each peer var trackedNodes set.Set[ids.NodeID] From ef7daa2575dbe3e7d7b704023ce658e72cbea998 Mon Sep 17 00:00:00 2001 From: Michael Kaplan Date: Fri, 11 Oct 2024 10:27:21 -0400 Subject: [PATCH 4/6] Bump AvalancheGo --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 8877b32d..020cfa26 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/ava-labs/awm-relayer go 1.22.8 require ( - github.com/ava-labs/avalanchego v1.12.0-initial-poc.0 + github.com/ava-labs/avalanchego v1.12.0-initial-poc.5 github.com/ava-labs/coreth v0.13.8 github.com/ava-labs/subnet-evm v0.6.10 github.com/ava-labs/teleporter v1.0.7 diff --git a/go.sum b/go.sum index ad89e032..e20f2f37 100644 --- a/go.sum +++ b/go.sum @@ -58,8 +58,8 @@ github.com/alexliesenfeld/health v0.8.0/go.mod h1:TfNP0f+9WQVWMQRzvMUjlws4ceXKEL github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156 h1:eMwmnE/GDgah4HI848JfFxHt+iPb26b4zyfspmqY0/8= github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= -github.com/ava-labs/avalanchego v1.12.0-initial-poc.0 h1:9JO0Yh4+fWfuoNenPgkJsaVuIh8cq4c1rYTD8Hv9fU8= -github.com/ava-labs/avalanchego v1.12.0-initial-poc.0/go.mod h1:qSHmog3wMVjo/ruIAQo0ppXAilyni07NIu5K88RyhWE= +github.com/ava-labs/avalanchego v1.12.0-initial-poc.5 h1:gW4xAqZNvkA4gP8M9yDyd7YUzuwfQbbCR+hgd1ztOto= +github.com/ava-labs/avalanchego v1.12.0-initial-poc.5/go.mod h1:qSHmog3wMVjo/ruIAQo0ppXAilyni07NIu5K88RyhWE= github.com/ava-labs/coreth v0.13.8 h1:f14X3KgwHl9LwzfxlN6S4bbn5VA2rhEsNnHaRLSTo/8= github.com/ava-labs/coreth v0.13.8/go.mod h1:t3BSv/eQv0AlDPMfEDCMMoD/jq1RkUsbFzQAFg5qBcE= github.com/ava-labs/subnet-evm v0.6.10 h1:uIh6bFMA4GCMVMQ3agBPxTMlYHL8FBR5FrhMR+drfKI= From da3275fdd8412dd2c4d8bfc710aeaaf5949ccad0 Mon Sep 17 00:00:00 2001 From: Michael Kaplan Date: Fri, 11 Oct 2024 10:28:38 -0400 Subject: [PATCH 5/6] Comment wording --- peers/app_request_network.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/peers/app_request_network.go b/peers/app_request_network.go index 2b766dfb..1f6695e2 100644 --- a/peers/app_request_network.go +++ b/peers/app_request_network.go @@ -61,8 +61,8 @@ type appRequestNetwork struct { metrics *AppRequestNetworkMetrics // Nodes that we should connect to that are not publicly discoverable. - // Should only be used local or custom networks where validators are not - // publicly discoverable to the primary network. + // Should only be used for local or custom networks where validators are not + // publicly discoverable by primary network nodes. manuallyTrackedPeers []info.Peer } From 79cf0c787ba52252cf989ca0115b979974972f89 Mon Sep 17 00:00:00 2001 From: Michael Kaplan Date: Fri, 11 Oct 2024 10:29:08 -0400 Subject: [PATCH 6/6] Comment wording --- peers/app_request_network.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/peers/app_request_network.go b/peers/app_request_network.go index 1f6695e2..6de1a72d 100644 --- a/peers/app_request_network.go +++ b/peers/app_request_network.go @@ -61,7 +61,7 @@ type appRequestNetwork struct { metrics *AppRequestNetworkMetrics // Nodes that we should connect to that are not publicly discoverable. - // Should only be used for local or custom networks where validators are not + // Should only be used for local or custom blockchains where validators are not // publicly discoverable by primary network nodes. manuallyTrackedPeers []info.Peer }