Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

peers diff #2246

Merged
merged 3 commits into from
Oct 16, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
84 changes: 81 additions & 3 deletions cmd/blockchaincmd/deploy.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,14 @@ import (
"time"

"github.com/ava-labs/avalanche-cli/pkg/node"
"github.com/ava-labs/avalanchego/network/peer"

"github.com/ava-labs/avalanchego/vms/platformvm/warp/message"
"github.com/ethereum/go-ethereum/common"

"github.com/ava-labs/avalanche-cli/pkg/contract"
"github.com/ava-labs/avalanche-cli/pkg/utils"
"github.com/ava-labs/avalanchego/api/info"
"github.com/ava-labs/avalanchego/utils/formatting/address"
"github.com/ava-labs/avalanchego/vms/platformvm/fx"
"github.com/ava-labs/avalanchego/vms/platformvm/signer"
Expand Down Expand Up @@ -700,9 +702,12 @@ func deployBlockchain(cmd *cobra.Command, args []string) error {
}

if !generateNodeID {
clusterName, err := node.GetClusterNameFromList(app)
if err != nil {
return err
clusterName := network.ClusterName
if clusterName == "" {
clusterName, err = node.GetClusterNameFromList(app)
if err != nil {
return err
}
}

if err = node.SyncSubnet(app, clusterName, blockchainName, true, nil); err != nil {
Expand Down Expand Up @@ -734,6 +739,10 @@ func deployBlockchain(cmd *cobra.Command, args []string) error {
if err != nil {
return err
}
extraAggregatorPeers, err := GetAggregatorExtraPeerEndpoints(network)
if err != nil {
return err
}
if err := validatormanager.SetupPoA(
app,
network,
Expand All @@ -744,6 +753,7 @@ func deployBlockchain(cmd *cobra.Command, args []string) error {
genesisPrivateKey,
common.HexToAddress(sidecar.PoAValidatorManagerOwner),
avaGoBootstrapValidators,
extraAggregatorPeers,
); err != nil {
return err
}
Expand Down Expand Up @@ -1016,3 +1026,71 @@ func LoadBootstrapValidator(filepath string) ([]models.SubnetValidator, error) {
}
return subnetValidators, nil
}

func UrisToPeers(uris []string) ([]info.Peer, error) {
peers := []info.Peer{}
ctx, cancel := utils.GetAPIContext()
defer cancel()
for _, uri := range uris {
client := info.NewClient(uri)
nodeID, _, err := client.GetNodeID(ctx)
if err != nil {
return nil, err
}
ip, err := client.GetNodeIP(ctx)
if err != nil {
return nil, err
}
peers = append(peers, info.Peer{
Info: peer.Info{
ID: nodeID,
PublicIP: ip,
},
})
}
return peers, nil
}

func GetAggregatorExtraPeerEndpoints(network models.Network) ([]info.Peer, error) {
aggregatorExtraPeerEndpointsUris, err := GetAggregatorExtraPeerEndpointsUris(network)
if err != nil {
return nil, err
}
aggregatorPeers, err := UrisToPeers(aggregatorExtraPeerEndpointsUris)
if err != nil {
return nil, err
}
for _, uri := range aggregatorExtraPeerEndpointsUris {
infoClient := info.NewClient(uri)
ctx, cancel := utils.GetAPILargeContext()
defer cancel()
peers, err := infoClient.Peers(ctx)
if err != nil {
return nil, err
}
aggregatorPeers = append(aggregatorPeers, peers...)
}
return aggregatorPeers, nil
}

func GetAggregatorExtraPeerEndpointsUris(network models.Network) ([]string, error) {
aggregatorExtraPeerEndpointsUris := []string{}
if network.ClusterName != "" {
clusterConfig, err := app.GetClusterConfig(network.ClusterName)
if err != nil {
return nil, err
}
// support etna devnet
if clusterConfig.Network.Kind == models.EtnaDevnet {
for _, node := range clusterConfig.Nodes {
nodeConfig, err := app.LoadClusterNodeConfig(node)
if err != nil {
return nil, err
}
uri := fmt.Sprintf("http://%s:%d", nodeConfig.ElasticIP, constants.AvalanchegoAPIPort)
aggregatorExtraPeerEndpointsUris = append(aggregatorExtraPeerEndpointsUris, uri)
}
}
}
return aggregatorExtraPeerEndpointsUris, nil
}
5 changes: 5 additions & 0 deletions cmd/contractcmd/init_poa_validator_manager.go
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,10 @@ func initPOAManager(_ *cobra.Command, args []string) error {
if err != nil {
return err
}
extraAggregatorPeers, err := blockchaincmd.GetAggregatorExtraPeerEndpoints(network)
if err != nil {
return err
}
if err := validatormanager.SetupPoA(
app,
network,
Expand All @@ -124,6 +128,7 @@ func initPOAManager(_ *cobra.Command, args []string) error {
privateKey,
common.HexToAddress(sc.PoAValidatorManagerOwner),
avaGoBootstrapValidators,
extraAggregatorPeers,
); err != nil {
return err
}
Expand Down
6 changes: 3 additions & 3 deletions cmd/nodecmd/create.go
Original file line number Diff line number Diff line change
Expand Up @@ -280,6 +280,9 @@ func createNodes(cmd *cobra.Command, args []string) error {
createSupportedNetworkOptions,
"",
)
if err := preCreateChecks(clusterName); err != nil {
return err
}
if network.Kind == models.EtnaDevnet {
publicHTTPPortAccess = true // public http port access for etna devnet api for PoAManagerDeployment
bootstrapIDs = constants.EtnaDevnetBootstrapNodeIDs
Expand Down Expand Up @@ -315,9 +318,6 @@ func createNodes(cmd *cobra.Command, args []string) error {
_ = os.Remove(upgradeTmpFile.Name())
}()
}
if err := preCreateChecks(clusterName); err != nil {
return err
}
network = models.NewNetworkFromCluster(network, clusterName)
globalNetworkFlags.UseDevnet = network.Kind == models.Devnet // set globalNetworkFlags.UseDevnet to true if network is devnet for further use
avalancheGoVersion, err := getAvalancheGoVersion()
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ require (
github.com/ava-labs/apm v1.0.0
github.com/ava-labs/avalanche-network-runner v1.8.4-0.20241005224128-cc3c07bb1344
github.com/ava-labs/avalanchego v1.12.0-initial-poc.5
github.com/ava-labs/awm-relayer v1.4.1-0.20241003162124-807fd305670f
github.com/ava-labs/awm-relayer v1.4.1-0.20241014222901-4b34ab86afd0
github.com/ava-labs/coreth v0.13.8
github.com/ava-labs/subnet-evm v0.6.10
github.com/aws/aws-sdk-go-v2 v1.31.0
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -87,8 +87,8 @@ github.com/ava-labs/avalanche-network-runner v1.8.4-0.20241005224128-cc3c07bb134
github.com/ava-labs/avalanche-network-runner v1.8.4-0.20241005224128-cc3c07bb1344/go.mod h1:l4QzFnujbyyyeq6oBQ4F6sw9TrTQCjD2V4vUd7ZBCCo=
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/awm-relayer v1.4.1-0.20241003162124-807fd305670f h1:YUQF1wQJeEcTMC5W/OrwgSFTFMS4zeCM8O02rLeEDow=
github.com/ava-labs/awm-relayer v1.4.1-0.20241003162124-807fd305670f/go.mod h1:K01Md6zPkOFRWeQyxmZ/t9HJfoNgUGqa1L8rOp35GXw=
github.com/ava-labs/awm-relayer v1.4.1-0.20241014222901-4b34ab86afd0 h1:zsoK+TbXg/XOTXd+PXRrF6aGmpilcunfpcw/McPVBho=
github.com/ava-labs/awm-relayer v1.4.1-0.20241014222901-4b34ab86afd0/go.mod h1:K01Md6zPkOFRWeQyxmZ/t9HJfoNgUGqa1L8rOp35GXw=
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/ledger-avalanche/go v0.0.0-20240610153809-9c955cc90a95 h1:dOVbtdnZL++pENdTCNZ1nu41eYDQkTML4sWebDnnq8c=
Expand Down
5 changes: 5 additions & 0 deletions pkg/validatormanager/validatormanager.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import (
"github.com/ava-labs/avalanche-cli/pkg/evm"
"github.com/ava-labs/avalanche-cli/pkg/models"
"github.com/ava-labs/avalanche-cli/sdk/interchain"
"github.com/ava-labs/avalanchego/api/info"
"github.com/ava-labs/avalanchego/ids"
avagoconstants "github.com/ava-labs/avalanchego/utils/constants"
"github.com/ava-labs/avalanchego/utils/logging"
Expand Down Expand Up @@ -102,6 +103,7 @@ func PoaValidatorManagerGetPChainSubnetConversionWarpMessage(
managerBlockchainID ids.ID,
managerAddress common.Address,
convertSubnetValidators []*txs.ConvertSubnetValidator,
extraAggregatorPeers []info.Peer,
) (*warp.Message, error) {
validators := []warpMessage.SubnetConversionValidatorData{}
for _, convertSubnetValidator := range convertSubnetValidators {
Expand Down Expand Up @@ -146,6 +148,7 @@ func PoaValidatorManagerGetPChainSubnetConversionWarpMessage(
aggregatorLogLevel,
subnetID,
aggregatorQuorumPercentage,
extraAggregatorPeers,
)
if err != nil {
return nil, err
Expand Down Expand Up @@ -216,6 +219,7 @@ func SetupPoA(
privateKey string,
ownerAddress common.Address,
convertSubnetValidators []*txs.ConvertSubnetValidator,
extraAggregatorPeers []info.Peer,
) error {
if err := evm.SetupProposerVM(
rpcURL,
Expand Down Expand Up @@ -259,6 +263,7 @@ func SetupPoA(
blockchainID,
managerAddress,
convertSubnetValidators,
extraAggregatorPeers,
)
if err != nil {
return fmt.Errorf("failure signing subnet conversion warp message: %w", err)
Expand Down
22 changes: 16 additions & 6 deletions sdk/interchain/signature-aggregator.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import (
"time"

"github.com/ava-labs/avalanche-cli/pkg/models"
"github.com/ava-labs/avalanchego/api/info"
"github.com/ava-labs/avalanchego/ids"
"github.com/ava-labs/avalanchego/message"
"github.com/ava-labs/avalanchego/utils/constants"
Expand Down Expand Up @@ -45,11 +46,17 @@ type SignatureAggregator struct {
// Returns:
// - peers.AppRequestNetwork: The created AppRequestNetwork, or nil if an error occurred.
// - error: An error if the creation of the AppRequestNetwork failed.
func createAppRequestNetwork(network models.Network, logLevel logging.Level) (peers.AppRequestNetwork, error) {
func createAppRequestNetwork(
network models.Network,
logLevel logging.Level,
registerer prometheus.Registerer,
extraPeerEndpoints []info.Peer,
) (peers.AppRequestNetwork, error) {
peerNetwork, err := peers.NewNetwork(
logLevel,
prometheus.DefaultRegisterer,
registerer,
nil,
extraPeerEndpoints,
&config.Config{
PChainAPI: &apiConfig.APIConfig{
BaseURL: network.Endpoint,
Expand All @@ -76,6 +83,7 @@ func createAppRequestNetwork(network models.Network, logLevel logging.Level) (pe
func initSignatureAggregator(
network peers.AppRequestNetwork,
logger logging.Logger,
registerer prometheus.Registerer,
subnetID ids.ID,
quorumPercentage uint64,
) (*SignatureAggregator, error) {
Expand All @@ -91,15 +99,15 @@ func initSignatureAggregator(

messageCreator, err := message.NewCreator(
logger,
prometheus.DefaultRegisterer,
registerer,
constants.DefaultNetworkCompressionType,
constants.DefaultNetworkMaximumInboundTimeout,
)
if err != nil {
return nil, fmt.Errorf("failed to create message creator: %w", err)
}

metricsInstance := metrics.NewSignatureAggregatorMetrics(prometheus.DefaultRegisterer)
metricsInstance := metrics.NewSignatureAggregatorMetrics(registerer)
signatureAggregator, err := aggregator.NewSignatureAggregator(
network,
logger,
Expand Down Expand Up @@ -130,12 +138,14 @@ func NewSignatureAggregator(
logLevel logging.Level,
subnetID ids.ID,
quorumPercentage uint64,
extraPeerEndpoints []info.Peer,
) (*SignatureAggregator, error) {
peerNetwork, err := createAppRequestNetwork(network, logLevel)
registerer := prometheus.NewRegistry()
peerNetwork, err := createAppRequestNetwork(network, logLevel, registerer, extraPeerEndpoints)
if err != nil {
return nil, err
}
return initSignatureAggregator(peerNetwork, logger, subnetID, quorumPercentage)
return initSignatureAggregator(peerNetwork, logger, registerer, subnetID, quorumPercentage)
}

// AggregateSignatures aggregates signatures for a given message and justification.
Expand Down
2 changes: 2 additions & 0 deletions sdk/interchain/signature-aggregator_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import (
"github.com/ava-labs/avalanchego/utils/logging"
"github.com/ava-labs/avalanchego/vms/platformvm/warp"
"github.com/ava-labs/awm-relayer/peers/mocks"
"github.com/prometheus/client_golang/prometheus"
"github.com/stretchr/testify/require"
"go.uber.org/mock/gomock"
)
Expand All @@ -25,6 +26,7 @@ func instantiateAggregator(t *testing.T) (
aggregator, err := initSignatureAggregator(
mockNetwork,
logging.NoLog{},
prometheus.NewRegistry(),
subnetID,
DefaultQuorumPercentage,
)
Expand Down
Loading