Skip to content

Commit

Permalink
Merge branch 'main' into update-cmd
Browse files Browse the repository at this point in the history
  • Loading branch information
arturrez authored Dec 10, 2024
2 parents 56c348a + 190e644 commit d10c350
Show file tree
Hide file tree
Showing 52 changed files with 551 additions and 556 deletions.
52 changes: 28 additions & 24 deletions cmd/blockchaincmd/create.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,20 +12,19 @@ import (
"strings"
"unicode"

"github.com/ava-labs/avalanche-cli/pkg/key"
"github.com/ava-labs/avalanchego/utils/formatting/address"
"github.com/ethereum/go-ethereum/common"

"github.com/ava-labs/avalanche-cli/cmd/flags"
"github.com/ava-labs/avalanche-cli/pkg/cobrautils"
"github.com/ava-labs/avalanche-cli/pkg/constants"
"github.com/ava-labs/avalanche-cli/pkg/interchain"
"github.com/ava-labs/avalanche-cli/pkg/key"
"github.com/ava-labs/avalanche-cli/pkg/metrics"
"github.com/ava-labs/avalanche-cli/pkg/models"
"github.com/ava-labs/avalanche-cli/pkg/teleporter"
"github.com/ava-labs/avalanche-cli/pkg/utils"
"github.com/ava-labs/avalanche-cli/pkg/ux"
"github.com/ava-labs/avalanche-cli/pkg/vm"
"github.com/ava-labs/avalanchego/utils/formatting/address"

"github.com/ethereum/go-ethereum/common"
"github.com/spf13/cobra"
"golang.org/x/mod/semver"
)
Expand All @@ -44,7 +43,7 @@ type CreateFlags struct {
useTestDefaults bool
useProductionDefaults bool
useWarp bool
useTeleporter bool
useICM bool
vmVersion string
useLatestReleasedVMVersion bool
useLatestPreReleasedVMVersion bool
Expand Down Expand Up @@ -111,8 +110,9 @@ configuration, pass the -f flag.`,
cmd.Flags().StringVar(&customVMBranch, "custom-vm-branch", "", "custom vm branch or commit")
cmd.Flags().StringVar(&customVMBuildScript, "custom-vm-build-script", "", "custom vm build-script")
cmd.Flags().BoolVar(&useRepo, "from-github-repo", false, "generate custom VM binary from github repository")
cmd.Flags().BoolVar(&createFlags.useWarp, "warp", true, "generate a vm with warp support (needed for teleporter)")
cmd.Flags().BoolVar(&createFlags.useTeleporter, "teleporter", false, "interoperate with other blockchains using teleporter")
cmd.Flags().BoolVar(&createFlags.useWarp, "warp", true, "generate a vm with warp support (needed for ICM)")
cmd.Flags().BoolVar(&createFlags.useICM, "teleporter", false, "interoperate with other blockchains using ICM")
cmd.Flags().BoolVar(&createFlags.useICM, "icm", false, "interoperate with other blockchains using ICM")
cmd.Flags().BoolVar(&createFlags.useExternalGasToken, "external-gas-token", false, "use a gas token from another blockchain")
cmd.Flags().BoolVar(&createFlags.addICMRegistryToGenesis, "icm-registry-at-genesis", false, "setup ICM registry smart contract on genesis [experimental]")
cmd.Flags().BoolVar(&createFlags.proofOfAuthority, "proof-of-authority", false, "use proof of authority(PoA) for validator management")
Expand Down Expand Up @@ -228,19 +228,23 @@ func createBlockchainConfig(cmd *cobra.Command, args []string) error {

var (
genesisBytes []byte
useTeleporterFlag *bool
deployTeleporter bool
useICMFlag *bool
deployICM bool
useExternalGasToken bool
)

// get teleporter flag as a pointer (3 values: undef/true/false)
// get ICM flag as a pointer (3 values: undef/true/false)
flagName := "teleporter"
if flag := cmd.Flags().Lookup(flagName); flag != nil && flag.Changed {
useTeleporterFlag = &createFlags.useTeleporter
useICMFlag = &createFlags.useICM
}
flagName = "icm"
if flag := cmd.Flags().Lookup(flagName); flag != nil && flag.Changed {
useICMFlag = &createFlags.useICM
}

// get teleporter info
teleporterInfo, err := teleporter.GetInfo(app)
// get ICM info
icmInfo, err := interchain.GetICMInfo(app)
if err != nil {
return err
}
Expand Down Expand Up @@ -317,7 +321,7 @@ func createBlockchainConfig(cmd *cobra.Command, args []string) error {
if err != nil {
return err
}
deployTeleporter, err = vm.PromptInterop(app, useTeleporterFlag, defaultsKind, false)
deployICM, err = vm.PromptInterop(app, useICMFlag, defaultsKind, false)
if err != nil {
return err
}
Expand All @@ -335,19 +339,19 @@ func createBlockchainConfig(cmd *cobra.Command, args []string) error {
createFlags.chainID,
createFlags.tokenSymbol,
blockchainName,
useTeleporterFlag,
useICMFlag,
defaultsKind,
createFlags.useWarp,
createFlags.useExternalGasToken,
)
if err != nil {
return err
}
deployTeleporter = params.UseTeleporter
deployICM = params.UseICM
useExternalGasToken = params.UseExternalGasToken
genesisBytes, err = vm.CreateEVMGenesis(
params,
teleporterInfo,
icmInfo,
createFlags.addICMRegistryToGenesis,
sc.ProxyContractOwner,
createFlags.rewardBasisPoints,
Expand Down Expand Up @@ -384,7 +388,7 @@ func createBlockchainConfig(cmd *cobra.Command, args []string) error {
if err != nil {
return err
}
deployTeleporter, err = vm.PromptInterop(app, useTeleporterFlag, defaultsKind, false)
deployICM, err = vm.PromptInterop(app, useICMFlag, defaultsKind, false)
if err != nil {
return err
}
Expand All @@ -405,21 +409,21 @@ func createBlockchainConfig(cmd *cobra.Command, args []string) error {
}
}

if deployTeleporter || useExternalGasToken {
if deployICM || useExternalGasToken {
sc.TeleporterReady = true
sc.RunRelayer = true // TODO: remove this once deploy asks if deploying relayer
sc.ExternalToken = useExternalGasToken
sc.TeleporterKey = constants.ICMKeyName
sc.TeleporterVersion = teleporterInfo.Version
sc.TeleporterVersion = icmInfo.Version
if genesisPath != "" {
if evmCompatibleGenesis, err := utils.FileIsSubnetEVMGenesis(genesisPath); err != nil {
return err
} else if evmCompatibleGenesis {
// evm genesis file was given. make appropriate checks and customizations for teleporter
// evm genesis file was given. make appropriate checks and customizations for ICM
genesisBytes, err = addSubnetEVMGenesisPrefundedAddress(
genesisBytes,
teleporterInfo.FundedAddress,
teleporterInfo.FundedBalance.String(),
icmInfo.FundedAddress,
icmInfo.FundedBalance.String(),
)
if err != nil {
return err
Expand Down
29 changes: 18 additions & 11 deletions cmd/blockchaincmd/deploy.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,9 @@ import (
"github.com/ava-labs/avalanchego/config"
"github.com/ava-labs/avalanchego/network/peer"

"github.com/ava-labs/avalanche-cli/cmd/interchaincmd/messengercmd"
"github.com/ava-labs/avalanche-cli/cmd/interchaincmd/relayercmd"
"github.com/ava-labs/avalanche-cli/cmd/networkcmd"
"github.com/ava-labs/avalanche-cli/cmd/teleportercmd"
"github.com/ava-labs/avalanche-cli/pkg/evm"
"github.com/ava-labs/avalanche-cli/pkg/keychain"
"github.com/ava-labs/avalanche-cli/pkg/node"
Expand Down Expand Up @@ -157,14 +157,21 @@ so you can take your locally tested Subnet and deploy it on Fuji or Mainnet.`,
cmd.Flags().Uint32Var(&mainnetChainID, "mainnet-chain-id", 0, "use different ChainID for mainnet deployment")
cmd.Flags().StringVar(&avagoBinaryPath, "avalanchego-path", "", "use this avalanchego binary path")
cmd.Flags().BoolVar(&subnetOnly, "subnet-only", false, "only create a subnet")
cmd.Flags().BoolVar(&icmSpec.SkipICMDeploy, "skip-local-teleporter", false, "skip automatic teleporter deploy on local networks [to be deprecated]")
cmd.Flags().BoolVar(&icmSpec.SkipICMDeploy, "skip-teleporter-deploy", false, "skip automatic teleporter deploy")
cmd.Flags().BoolVar(&icmSpec.SkipICMDeploy, "skip-local-teleporter", false, "skip automatic ICM deploy on local networks [to be deprecated]")
cmd.Flags().BoolVar(&icmSpec.SkipICMDeploy, "skip-teleporter-deploy", false, "skip automatic ICM deploy")
cmd.Flags().BoolVar(&icmSpec.SkipICMDeploy, "skip-icm-deploy", false, "skip automatic ICM deploy")
cmd.Flags().BoolVar(&icmSpec.SkipRelayerDeploy, skipRelayerFlagName, false, "skip relayer deploy")
cmd.Flags().StringVar(
&icmSpec.ICMVersion,
"teleporter-version",
constants.LatestReleaseVersionTag,
"teleporter version to deploy",
"ICM version to deploy",
)
cmd.Flags().StringVar(
&icmSpec.ICMVersion,
"icm-version",
constants.LatestReleaseVersionTag,
"ICM version to deploy",
)
cmd.Flags().StringVar(
&icmSpec.RelayerVersion,
Expand All @@ -180,10 +187,10 @@ so you can take your locally tested Subnet and deploy it on Fuji or Mainnet.`,
cmd.Flags().StringVar(&cchainIcmKeyName, "cchain-icm-key", "", "key to be used to pay for ICM deploys on C-Chain")
cmd.Flags().BoolVar(&relayCChain, "relay-cchain", true, "relay C-Chain as source and destination")
cmd.Flags().StringVar(&cChainFundingKey, "cchain-funding-key", "", "key to be used to fund relayer account on cchain")
cmd.Flags().StringVar(&icmSpec.MessengerContractAddressPath, "teleporter-messenger-contract-address-path", "", "path to an interchain messenger contract address file")
cmd.Flags().StringVar(&icmSpec.MessengerDeployerAddressPath, "teleporter-messenger-deployer-address-path", "", "path to an interchain messenger deployer address file")
cmd.Flags().StringVar(&icmSpec.MessengerDeployerTxPath, "teleporter-messenger-deployer-tx-path", "", "path to an interchain messenger deployer tx file")
cmd.Flags().StringVar(&icmSpec.RegistryBydecodePath, "teleporter-registry-bytecode-path", "", "path to an interchain messenger registry bytecode file")
cmd.Flags().StringVar(&icmSpec.MessengerContractAddressPath, "teleporter-messenger-contract-address-path", "", "path to an ICM Messenger contract address file")
cmd.Flags().StringVar(&icmSpec.MessengerDeployerAddressPath, "teleporter-messenger-deployer-address-path", "", "path to an ICM Messenger deployer address file")
cmd.Flags().StringVar(&icmSpec.MessengerDeployerTxPath, "teleporter-messenger-deployer-tx-path", "", "path to an ICM Messenger deployer tx file")
cmd.Flags().StringVar(&icmSpec.RegistryBydecodePath, "teleporter-registry-bytecode-path", "", "path to an ICM Registry bytecode file")
cmd.Flags().StringVar(&bootstrapValidatorsJSONFilePath, "bootstrap-filepath", "", "JSON file path that provides details about bootstrap validators, leave Node-ID and BLS values empty if using --generate-node-id=true")
cmd.Flags().BoolVar(&generateNodeID, "generate-node-id", false, "whether to create new node id for bootstrap validators (Node-ID and BLS values in bootstrap JSON file will be overridden if --bootstrap-filepath flag is used)")
cmd.Flags().StringSliceVar(&bootstrapEndpoints, "bootstrap-endpoints", nil, "take validator node info from the given endpoints")
Expand Down Expand Up @@ -396,7 +403,7 @@ func deployBlockchain(cmd *cobra.Command, args []string) error {

if icmSpec.MessengerContractAddressPath != "" || icmSpec.MessengerDeployerAddressPath != "" || icmSpec.MessengerDeployerTxPath != "" || icmSpec.RegistryBydecodePath != "" {
if icmSpec.MessengerContractAddressPath == "" || icmSpec.MessengerDeployerAddressPath == "" || icmSpec.MessengerDeployerTxPath == "" || icmSpec.RegistryBydecodePath == "" {
return fmt.Errorf("if setting any teleporter asset path, you must set all teleporter asset paths")
return fmt.Errorf("if setting any ICM asset path, you must set all ICM asset paths")
}
}

Expand Down Expand Up @@ -1106,7 +1113,7 @@ func deployBlockchain(cmd *cobra.Command, args []string) error {
BlockchainName: blockchainName,
}
chainSpec.SetEnabled(true, false, false, false, false)
deployICMFlags := teleportercmd.DeployFlags{
deployICMFlags := messengercmd.DeployFlags{
ChainFlags: chainSpec,
PrivateKeyFlags: contract.PrivateKeyFlags{
KeyName: icmKeyName,
Expand All @@ -1122,7 +1129,7 @@ func deployBlockchain(cmd *cobra.Command, args []string) error {
CChainKeyName: cchainIcmKeyName,
}
ux.Logger.PrintToUser("")
if err := teleportercmd.CallDeploy([]string{}, deployICMFlags, network); err != nil {
if err := messengercmd.CallDeploy([]string{}, deployICMFlags, network); err != nil {
return err
}
}
Expand Down
24 changes: 12 additions & 12 deletions cmd/blockchaincmd/describe.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,11 @@ import (
"github.com/ava-labs/avalanche-cli/pkg/cobrautils"
"github.com/ava-labs/avalanche-cli/pkg/constants"
"github.com/ava-labs/avalanche-cli/pkg/contract"
icmgenesis "github.com/ava-labs/avalanche-cli/pkg/interchain/genesis"
"github.com/ava-labs/avalanche-cli/pkg/key"
"github.com/ava-labs/avalanche-cli/pkg/localnet"
"github.com/ava-labs/avalanche-cli/pkg/models"
"github.com/ava-labs/avalanche-cli/pkg/subnet"
icmgenesis "github.com/ava-labs/avalanche-cli/pkg/teleporter/genesis"
"github.com/ava-labs/avalanche-cli/pkg/txutils"
"github.com/ava-labs/avalanche-cli/pkg/utils"
"github.com/ava-labs/avalanche-cli/pkg/ux"
Expand Down Expand Up @@ -181,16 +181,16 @@ func PrintSubnetInfo(blockchainName string, onlyLocalnetInfo bool) error {
}
ux.Logger.PrintToUser(t.Render())

// Teleporter
// ICM
t = table.NewWriter()
t.Style().Title.Align = text.AlignCenter
t.Style().Title.Format = text.FormatUpper
t.Style().Options.SeparateRows = true
t.SetColumnConfigs([]table.ColumnConfig{
{Number: 1, AutoMerge: true},
})
t.SetTitle("Teleporter")
hasTeleporterInfo := false
t.SetTitle("ICM")
hasICMInfo := false
for net, data := range sc.Networks {
network, err := app.GetNetworkFromSidecarNetworkName(net)
if err != nil {
Expand All @@ -203,15 +203,15 @@ func PrintSubnetInfo(blockchainName string, onlyLocalnetInfo bool) error {
continue
}
if data.TeleporterMessengerAddress != "" {
t.AppendRow(table.Row{net, "Teleporter Messenger Address", data.TeleporterMessengerAddress})
hasTeleporterInfo = true
t.AppendRow(table.Row{net, "ICM Messenger Address", data.TeleporterMessengerAddress})
hasICMInfo = true
}
if data.TeleporterRegistryAddress != "" {
t.AppendRow(table.Row{net, "Teleporter Registry Address", data.TeleporterRegistryAddress})
hasTeleporterInfo = true
t.AppendRow(table.Row{net, "ICM Registry Address", data.TeleporterRegistryAddress})
hasICMInfo = true
}
}
if hasTeleporterInfo {
if hasICMInfo {
ux.Logger.PrintToUser("")
ux.Logger.PrintToUser(t.Render())
}
Expand Down Expand Up @@ -273,13 +273,13 @@ func PrintSubnetInfo(blockchainName string, onlyLocalnetInfo bool) error {
}

func printAllocations(sc models.Sidecar, genesis core.Genesis) error {
teleporterKeyAddress := ""
icmKeyAddress := ""
if sc.TeleporterReady {
k, err := key.LoadSoft(models.NewLocalNetwork().ID, app.GetKeyPath(sc.TeleporterKey))
if err != nil {
return err
}
teleporterKeyAddress = k.C()
icmKeyAddress = k.C()
}
_, subnetAirdropAddress, _, err := subnet.GetDefaultSubnetAirdropKeyInfo(app, sc.Name)
if err != nil {
Expand Down Expand Up @@ -308,7 +308,7 @@ func printAllocations(sc models.Sidecar, genesis core.Genesis) error {
description := ""
privKey := ""
switch address.Hex() {
case teleporterKeyAddress:
case icmKeyAddress:
description = logging.Orange.Wrap("Used by ICM")
case subnetAirdropAddress:
description = logging.Orange.Wrap("Main funded account")
Expand Down
3 changes: 2 additions & 1 deletion cmd/blockchaincmd/import_public.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import (
"encoding/json"
"fmt"

"github.com/ava-labs/avalanche-cli/pkg/application"
"github.com/ava-labs/avalanche-cli/pkg/cobrautils"
"github.com/ava-labs/avalanche-cli/pkg/constants"
"github.com/ava-labs/avalanche-cli/pkg/models"
Expand Down Expand Up @@ -178,7 +179,7 @@ func importPublic(*cobra.Command, []string) error {
// no node was queried, ask the user
switch vmType {
case models.SubnetEvm:
versions, err = app.Downloader.GetAllReleasesForRepo(constants.AvaLabsOrg, constants.SubnetEVMRepoName)
versions, err = app.Downloader.GetAllReleasesForRepo(constants.AvaLabsOrg, constants.SubnetEVMRepoName, application.All)
if err != nil {
return err
}
Expand Down
5 changes: 3 additions & 2 deletions cmd/blockchaincmd/upgradecmd/vm.go
Original file line number Diff line number Diff line change
Expand Up @@ -225,10 +225,11 @@ func updateToLatestVersion(vmType models.VMType, sc models.Sidecar, networkToUpg
currentVersion := sc.VMVersion

// check latest version
latestVersion, err := app.Downloader.GetLatestReleaseVersion(binutils.GetGithubLatestReleaseURL(
latestVersion, err := app.Downloader.GetLatestReleaseVersion(
constants.AvaLabsOrg,
vmType.RepoName(),
))
"",
)
if err != nil {
return err
}
Expand Down
2 changes: 1 addition & 1 deletion cmd/contractcmd/init_validator_manager.go
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ func newInitValidatorManagerCmd() *cobra.Command {
cmd := &cobra.Command{
Use: "initValidatorManager blockchainName",
Short: "Initializes Proof of Authority(PoA) or Proof of Stake(PoS) Validator Manager on a given Network and Blockchain",
Long: "Initializes Proof of Authority(PoA) or Proof of Stake(PoS)Validator Manager contract on a Blockchain and sets up initial validator set on the Blockchain. For more info on Validator Manager, please head to https://github.com/ava-labs/teleporter/tree/staking-contract/contracts/validator-manager",
Long: "Initializes Proof of Authority(PoA) or Proof of Stake(PoS)Validator Manager contract on a Blockchain and sets up initial validator set on the Blockchain. For more info on Validator Manager, please head to https://github.com/ava-labs/icm-contracts/tree/main/contracts/validator-manager",
RunE: initValidatorManager,
Args: cobrautils.ExactArgs(1),
}
Expand Down
3 changes: 3 additions & 0 deletions cmd/interchaincmd/interchain.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
package interchaincmd

import (
"github.com/ava-labs/avalanche-cli/cmd/interchaincmd/messengercmd"
"github.com/ava-labs/avalanche-cli/cmd/interchaincmd/relayercmd"
"github.com/ava-labs/avalanche-cli/cmd/interchaincmd/tokentransferrercmd"
"github.com/ava-labs/avalanche-cli/pkg/application"
Expand All @@ -26,5 +27,7 @@ set and manage interoperability between blockchains.`,
cmd.AddCommand(tokentransferrercmd.NewCmd(app))
// interchain relayer
cmd.AddCommand(relayercmd.NewCmd(app))
// interchain messenger
cmd.AddCommand(messengercmd.NewCmd(app))
return cmd
}
Loading

0 comments on commit d10c350

Please sign in to comment.