Skip to content
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
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.8.7
1.8.8
2 changes: 1 addition & 1 deletion cmd/blockchaincmd/change_weight.go
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,7 @@ func setWeight(_ *cobra.Command, args []string) error {
return fmt.Errorf("unable to find Validator Manager address")
}
validatorManagerAddress = sc.Networks[network.Name()].ValidatorManagerAddress
validationID, err := validator.GetValidationID(rpcURL, nodeID, validatorManagerAddress)
validationID, err := validator.GetValidationID(rpcURL, common.HexToAddress(validatorManagerAddress), nodeID)
if err != nil {
return err
}
Expand Down
2 changes: 1 addition & 1 deletion cmd/blockchaincmd/remove_validator.go
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,7 @@ func removeValidator(_ *cobra.Command, args []string) error {
}
}
validatorManagerAddress = sc.Networks[network.Name()].ValidatorManagerAddress
validationID, err := validatorsdk.GetRegisteredValidator(
validationID, err := validatorsdk.GetValidationID(
rpcURL,
common.HexToAddress(validatorManagerAddress),
nodeID,
Expand Down
2 changes: 1 addition & 1 deletion cmd/validatorcmd/getBalance.go
Original file line number Diff line number Diff line change
Expand Up @@ -194,7 +194,7 @@ func getNodeValidationID(
return ids.Empty, false, err
}
managerAddress := common.HexToAddress(validatorManagerAddress)
validationID, err = validator.GetRegisteredValidator(rpcURL, managerAddress, nodeID)
validationID, err = validator.GetValidationID(rpcURL, managerAddress, nodeID)
if err != nil {
return ids.Empty, false, err
}
Expand Down
2 changes: 1 addition & 1 deletion cmd/validatorcmd/list.go
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ func list(_ *cobra.Command, args []string) error {
return err
}
balance := uint64(0)
validationID, err := validator.GetRegisteredValidator(rpcURL, managerAddress, nodeID)
validationID, err := validator.GetValidationID(rpcURL, managerAddress, nodeID)
if err != nil {
ux.Logger.RedXToUser("could not get validation ID for node %s due to %s", nodeID, err)
} else {
Expand Down
10 changes: 5 additions & 5 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ toolchain go1.23.7
require (
github.com/ava-labs/apm v1.0.0
github.com/ava-labs/avalanche-network-runner v1.8.4-0.20250324213418-9a0709b1ecfa
github.com/ava-labs/avalanchego v1.13.1-0.20250324225627-486823637d34
github.com/ava-labs/avalanchego v1.13.1-0.20250326010016-044f93f83526
github.com/ava-labs/coreth v0.15.0-rc.0
github.com/ava-labs/icm-services v1.4.1-0.20250325155249-78c179bf6bd0
github.com/ava-labs/icm-services v1.4.1-0.20250326180348-905d5a5cea3a
github.com/ava-labs/subnet-evm v0.7.2
github.com/aws/aws-sdk-go-v2 v1.36.3
github.com/aws/aws-sdk-go-v2/config v1.29.10
Expand All @@ -28,8 +28,8 @@ require (
github.com/mitchellh/go-wordwrap v1.0.1
github.com/okteto/remote v0.0.0-20210428052247-99de42c04148
github.com/olekukonko/tablewriter v0.0.5
github.com/onsi/ginkgo/v2 v2.23.2
github.com/onsi/gomega v1.36.2
github.com/onsi/ginkgo/v2 v2.23.3
github.com/onsi/gomega v1.36.3
github.com/otiai10/copy v1.14.1
github.com/pborman/ansi v1.0.0
github.com/pingcap/errors v0.11.4
Expand Down Expand Up @@ -136,7 +136,7 @@ require (
github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect
github.com/google/btree v1.1.2 // indirect
github.com/google/gnostic-models v0.6.8 // indirect
github.com/google/go-cmp v0.6.0 // indirect
github.com/google/go-cmp v0.7.0 // indirect
github.com/google/gofuzz v1.2.0 // indirect
github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad // indirect
github.com/google/renameio/v2 v2.0.0 // indirect
Expand Down
20 changes: 10 additions & 10 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -87,14 +87,14 @@ github.com/ava-labs/apm v1.0.0 h1:6FwozH67hEkbWVsOXNZGexBy5KLpNeYucN9zcFUHv+Q=
github.com/ava-labs/apm v1.0.0/go.mod h1:TJL7pTlZNvQatsQPsLUtDHApEwVZ/qS7iSNtRFU83mc=
github.com/ava-labs/avalanche-network-runner v1.8.4-0.20250324213418-9a0709b1ecfa h1:au/JtMdG7G/2gLGj9aQ16vuXCH+2G7lom/nB50JU83g=
github.com/ava-labs/avalanche-network-runner v1.8.4-0.20250324213418-9a0709b1ecfa/go.mod h1:pc9xuk13LI/T//cd7otZKxnYwac6/ego6twNO5TOB9Q=
github.com/ava-labs/avalanchego v1.13.1-0.20250324225627-486823637d34 h1:ytaybTqpkow2XgTuXsURe2rfFEepip776RNcOaaYNaU=
github.com/ava-labs/avalanchego v1.13.1-0.20250324225627-486823637d34/go.mod h1:fpV/GmbfIB3P53gkq6zFpyeQtyAsJIuZCCKnm7TJ4sQ=
github.com/ava-labs/avalanchego v1.13.1-0.20250326010016-044f93f83526 h1:SfanfD6LKFujnsVGnEa3vfqIXpCVLVh7ZYbcfqcAF+w=
github.com/ava-labs/avalanchego v1.13.1-0.20250326010016-044f93f83526/go.mod h1:fpV/GmbfIB3P53gkq6zFpyeQtyAsJIuZCCKnm7TJ4sQ=
github.com/ava-labs/coreth v0.15.0-rc.0 h1:wabaNbSXcqhhO6Qg/9fnrgDNCuP3StwB5sls45dHbiI=
github.com/ava-labs/coreth v0.15.0-rc.0/go.mod h1:gIGr+5WDNX1DrFvUMy53AtTpkxlM/8cNOD/PDIChKfM=
github.com/ava-labs/icm-contracts v1.0.9-0.20250313201018-6720d04bee51 h1:M5VSWigKuet7z1LTfCC60Zu+Z3Q2+ZxmB7a94cxiEKI=
github.com/ava-labs/icm-contracts v1.0.9-0.20250313201018-6720d04bee51/go.mod h1:lbL9AI0C2COWBGtygUCQkSudwUbLw46AG1maAFv4J5k=
github.com/ava-labs/icm-services v1.4.1-0.20250325155249-78c179bf6bd0 h1:PdP8qATBm6HUw1OHJu9w8K2XixghyVEqjRlKSFbcT/o=
github.com/ava-labs/icm-services v1.4.1-0.20250325155249-78c179bf6bd0/go.mod h1:qFMuFfIx8//yKwC1W+GtquQaHhryMsWg4/fjrS2njks=
github.com/ava-labs/icm-services v1.4.1-0.20250326180348-905d5a5cea3a h1:4RyktAqntpt+3HW8h7SnqHwPXqYC9nRDaJpOpqLENBM=
github.com/ava-labs/icm-services v1.4.1-0.20250326180348-905d5a5cea3a/go.mod h1:y1B9eagKHioYYboJ1r3RyYX2kAMj9TaIJgLAbk9Pb4Q=
github.com/ava-labs/ledger-avalanche/go v0.0.0-20241009183145-e6f90a8a1a60 h1:EL66gtXOAwR/4KYBjOV03LTWgkEXvLePribLlJNu4g0=
github.com/ava-labs/ledger-avalanche/go v0.0.0-20241009183145-e6f90a8a1a60/go.mod h1:/7qKobTfbzBu7eSTVaXMTr56yTYk4j2Px6/8G+idxHo=
github.com/ava-labs/subnet-evm v0.7.2 h1:AxmXT9tmuxmUi+hDqtoS0OVi0zi8fPqPcoQ7yjZ6FZQ=
Expand Down Expand Up @@ -441,8 +441,8 @@ github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/gofuzz v1.1.1-0.20200604201612-c04b05f3adfa/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
Expand Down Expand Up @@ -702,16 +702,16 @@ github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vv
github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE=
github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU=
github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c=
github.com/onsi/ginkgo/v2 v2.23.2 h1:LYLd7Wz401p0N7xR8y7WL6D2QZwKpbirDg0EVIvzvMM=
github.com/onsi/ginkgo/v2 v2.23.2/go.mod h1:zXTP6xIp3U8aVuXN8ENK9IXRaTjFnpVB9mGmaSRvxnM=
github.com/onsi/ginkgo/v2 v2.23.3 h1:edHxnszytJ4lD9D5Jjc4tiDkPBZ3siDeJJkUZJJVkp0=
github.com/onsi/ginkgo/v2 v2.23.3/go.mod h1:zXTP6xIp3U8aVuXN8ENK9IXRaTjFnpVB9mGmaSRvxnM=
github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA=
github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY=
github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro=
github.com/onsi/gomega v1.36.2 h1:koNYke6TVk6ZmnyHrCXba/T/MoLBXFjeC1PtvYgw0A8=
github.com/onsi/gomega v1.36.2/go.mod h1:DdwyADRjrc825LhMEkD76cHR5+pUnjhUN8GlHlRPHzY=
github.com/onsi/gomega v1.36.3 h1:hID7cr8t3Wp26+cYnfcjR6HpJ00fdogN6dqZ1t6IylU=
github.com/onsi/gomega v1.36.3/go.mod h1:8D9+Txp43QWKhM24yyOBEdpkzN8FvJyAwecBgsU4KU0=
github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
github.com/opentracing/opentracing-go v1.0.3-0.20180606204148-bd9c31933947/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
Expand Down
15 changes: 15 additions & 0 deletions pkg/contract/contract.go
Original file line number Diff line number Diff line change
Expand Up @@ -604,6 +604,21 @@ func CallToMethod(
return out, nil
}

func GetSmartContractCallResult[T any](methodName string, out []interface{}) (T, error) {
empty := new(T)
if len(out) == 0 {
return *empty, fmt.Errorf("error at %s call: no return value", methodName)
}
if len(out) != 1 {
return *empty, fmt.Errorf("error at %s call: expected 1 return value, got %d", methodName, len(out))
}
received, typeIsOk := out[0].(T)
if !typeIsOk {
return *empty, fmt.Errorf("error at %s call, expected %T, got %T", methodName, *empty, out[0])
}
return received, nil
}

func DeployContract(
rpcURL string,
privateKey string,
Expand Down
14 changes: 2 additions & 12 deletions pkg/contract/ownable.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,7 @@
// See the file LICENSE for licensing terms.
package contract

import (
_ "embed"
"fmt"

"github.com/ethereum/go-ethereum/common"
)
import "github.com/ethereum/go-ethereum/common"

// GetContractOwner gets owner for https://docs.openzeppelin.com/contracts/2.x/api/ownership#Ownable-owner contracts
func GetContractOwner(
Expand All @@ -22,10 +17,5 @@ func GetContractOwner(
if err != nil {
return common.Address{}, err
}

ownerAddr, ok := out[0].(common.Address)
if !ok {
return common.Address{}, fmt.Errorf("error at owner() call, expected common.Address, got %T", out[0])
}
return ownerAddr, nil
return GetSmartContractCallResult[common.Address]("owner", out)
}
39 changes: 9 additions & 30 deletions pkg/ictt/operate.go
Original file line number Diff line number Diff line change
Expand Up @@ -55,11 +55,7 @@ func ERC20TokenHomeGetTokenAddress(
if err != nil {
return common.Address{}, err
}
tokenAddress, b := out[0].(common.Address)
if !b {
return common.Address{}, fmt.Errorf("error at token call, expected common.Address, got %T", out[0])
}
return tokenAddress, nil
return contract.GetSmartContractCallResult[common.Address]("token", out)
}

func NativeTokenHomeGetTokenAddress(
Expand All @@ -74,11 +70,7 @@ func NativeTokenHomeGetTokenAddress(
if err != nil {
return common.Address{}, err
}
tokenAddress, b := out[0].(common.Address)
if !b {
return common.Address{}, fmt.Errorf("error at wrappedToken call, expected common.Address, got %T", out[0])
}
return tokenAddress, nil
return contract.GetSmartContractCallResult[common.Address]("wrappedToken", out)
}

func TokenRemoteIsCollateralized(
Expand All @@ -93,11 +85,7 @@ func TokenRemoteIsCollateralized(
if err != nil {
return false, err
}
isCollateralized, b := out[0].(bool)
if !b {
return false, fmt.Errorf("error at isCollateralized call, expected bool, got %T", out[0])
}
return isCollateralized, nil
return contract.GetSmartContractCallResult[bool]("isCollateralized", out)
}

func TokenHomeGetDecimals(
Expand All @@ -112,11 +100,7 @@ func TokenHomeGetDecimals(
if err != nil {
return 0, err
}
decimals, b := out[0].(uint8)
if !b {
return 0, fmt.Errorf("error at tokenDecimals, expected uint8, got %T", out[0])
}
return decimals, nil
return contract.GetSmartContractCallResult[uint8]("tokenDecimals", out)
}

type RegisteredRemote struct {
Expand Down Expand Up @@ -146,6 +130,9 @@ func TokenHomeGetRegisteredRemote(
registeredRemote RegisteredRemote
b bool
)
if len(out) != 4 {
return RegisteredRemote{}, fmt.Errorf("error at registeredRemotes call, expected 4 return values, got %d", len(out))
}
registeredRemote.Registered, b = out[0].(bool)
if !b {
return RegisteredRemote{}, fmt.Errorf("error at registeredRemotes call, expected bool, got %T", out[0])
Expand Down Expand Up @@ -177,11 +164,7 @@ func ERC20TokenRemoteGetTokenHomeAddress(
if err != nil {
return common.Address{}, err
}
tokenHubAddress, b := out[0].(common.Address)
if !b {
return common.Address{}, fmt.Errorf("error at tokenHubAddress call, expected common.Address, got %T", out[0])
}
return tokenHubAddress, nil
return contract.GetSmartContractCallResult[common.Address]("tokenHomeAddress", out)
}

func NativeTokenRemoteGetTotalNativeAssetSupply(
Expand All @@ -196,11 +179,7 @@ func NativeTokenRemoteGetTotalNativeAssetSupply(
if err != nil {
return nil, err
}
supply, b := out[0].(*big.Int)
if !b {
return nil, fmt.Errorf("error at totalNativeAssetSupply, expected *big.Int, got %T", out[0])
}
return supply, nil
return contract.GetSmartContractCallResult[*big.Int]("totalNativeAssetSupply", out)
}

func ERC20TokenHomeSend(
Expand Down
13 changes: 2 additions & 11 deletions pkg/interchain/operate.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ package interchain

import (
_ "embed"
"fmt"
"math/big"

"github.com/ava-labs/avalanche-cli/pkg/contract"
Expand All @@ -27,11 +26,7 @@ func GetNextMessageID(
if err != nil {
return ids.Empty, err
}
received, b := out[0].([32]byte)
if !b {
return ids.Empty, fmt.Errorf("error at getNextMessageID call, expected ids.ID, got %T", out[0])
}
return received, nil
return contract.GetSmartContractCallResult[[32]byte]("getNextMessageID", out)
}

func MessageReceived(
Expand All @@ -48,11 +43,7 @@ func MessageReceived(
if err != nil {
return false, err
}
received, b := out[0].(bool)
if !b {
return false, fmt.Errorf("error at messageReceived call, expected bool, got %T", out[0])
}
return received, nil
return contract.GetSmartContractCallResult[bool]("messageReceived", out)
}

func SendCrossChainMessage(
Expand Down
7 changes: 1 addition & 6 deletions pkg/precompiles/allowlist.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ package precompiles

import (
_ "embed"
"fmt"
"math/big"

"github.com/ava-labs/avalanche-cli/pkg/contract"
Expand Down Expand Up @@ -109,9 +108,5 @@ func ReadAllowList(
if err != nil {
return nil, err
}
role, b := out[0].(*big.Int)
if !b {
return nil, fmt.Errorf("error at readAllowList, expected *big.Int, got %T", out[0])
}
return role, nil
return contract.GetSmartContractCallResult[*big.Int]("readAllowList", out)
}
10 changes: 1 addition & 9 deletions pkg/precompiles/warp.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ package precompiles

import (
_ "embed"
"fmt"

"github.com/ava-labs/avalanche-cli/pkg/contract"
"github.com/ava-labs/avalanchego/ids"
Expand All @@ -21,12 +20,5 @@ func WarpPrecompileGetBlockchainID(
if err != nil {
return ids.Empty, err
}
if len(out) == 0 {
return ids.Empty, fmt.Errorf("error at getBlockchainID call: no return value")
}
received, ok := out[0].([32]byte)
if !ok {
return ids.Empty, fmt.Errorf("error at getBlockchainID call, expected ids.ID, got %T", out[0])
}
return received, nil
return contract.GetSmartContractCallResult[[32]byte]("getBlockchainID", out)
}
7 changes: 1 addition & 6 deletions pkg/validatormanager/proxy.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ package validatormanager

import (
_ "embed"
"fmt"
"math/big"

"github.com/ava-labs/avalanche-cli/pkg/contract"
Expand Down Expand Up @@ -47,11 +46,7 @@ func GetProxyValidatorManager(
if err != nil {
return common.Address{}, err
}
validatorManagerAddress, b := out[0].(common.Address)
if !b {
return common.Address{}, fmt.Errorf("error obtaining proxy implementation, expected common.Address, got %T", out[0])
}
return validatorManagerAddress, nil
return contract.GetSmartContractCallResult[common.Address]("getProxyImplementation", out)
}

func ProxyHasValidatorManagerSet(
Expand Down
19 changes: 18 additions & 1 deletion pkg/validatormanager/registration.go
Original file line number Diff line number Diff line change
Expand Up @@ -201,7 +201,7 @@ func GetRegisterL1ValidatorMessage(
)
if registerSubnetValidatorUnsignedMessage == nil {
if alreadyInitialized {
validationID, err = validator.GetRegisteredValidator(
validationID, err = validator.GetValidationID(
rpcURL,
managerAddress,
nodeID,
Expand Down Expand Up @@ -285,6 +285,23 @@ func GetRegisterL1ValidatorMessage(
return signedMessage, validationID, err
}

func PoSWeightToValue(
rpcURL string,
managerAddress common.Address,
weight uint64,
) (*big.Int, error) {
out, err := contract.CallToMethod(
rpcURL,
managerAddress,
"weightToValue(uint64)->(uint256)",
weight,
)
if err != nil {
return nil, err
}
return contract.GetSmartContractCallResult[*big.Int]("weightToValue", out)
}

func GetPChainL1ValidatorRegistrationMessage(
ctx context.Context,
network models.Network,
Expand Down
2 changes: 1 addition & 1 deletion pkg/validatormanager/removal.go
Original file line number Diff line number Diff line change
Expand Up @@ -184,7 +184,7 @@ func InitValidatorRemoval(
}
managerAddress := common.HexToAddress(validatorManagerAddressStr)
ownerAddress := common.HexToAddress(ownerAddressStr)
validationID, err := validator.GetRegisteredValidator(
validationID, err := validator.GetValidationID(
rpcURL,
managerAddress,
nodeID,
Expand Down
Loading
Loading