From 0e9a2db863e7ed5d461b5876b5fe62da853c6ed4 Mon Sep 17 00:00:00 2001 From: rachid Date: Tue, 3 May 2022 18:40:16 +0200 Subject: [PATCH 1/9] first pass on tests fixes --- client/context.go | 16 +++ go.mod | 1 + go.sum | 1 + simapp/simd/cmd/testnet.go | 37 +++++-- simapp/simd/cmd/testnet_test.go | 7 +- testutil/network/network.go | 42 +++++--- x/auth/legacy/v043/store_test.go | 6 +- x/distribution/simulation/operations_test.go | 7 +- x/genutil/client/testutil/suite.go | 2 + x/genutil/gentx_test.go | 19 +++- x/genutil/types/genesis_state_test.go | 20 +++- x/gov/common_test.go | 4 + x/gov/keeper/common_test.go | 15 ++- x/slashing/app_test.go | 4 + x/slashing/simulation/operations_test.go | 5 +- x/staking/bench_test.go | 5 +- x/staking/client/testutil/suite.go | 9 +- x/staking/genesis_test.go | 10 +- x/staking/handler_test.go | 17 ++- x/staking/keeper/delegation_test.go | 84 ++++++++++----- x/staking/keeper/grpc_query_test.go | 11 +- x/staking/keeper/historical_info_test.go | 31 ++++-- x/staking/keeper/querier_test.go | 46 ++++++--- x/staking/keeper/slash_test.go | 4 +- x/staking/keeper/validator_test.go | 103 ++++++++++++++----- x/staking/legacy/v043/store_test.go | 6 +- x/staking/simulation/decoder_test.go | 5 +- x/staking/simulation/operations_test.go | 6 +- x/staking/teststaking/helper.go | 8 +- x/staking/teststaking/validator.go | 21 +++- x/staking/types/historical_info_test.go | 13 ++- x/staking/types/keys_test.go | 7 +- x/staking/types/msg_test.go | 13 ++- x/staking/types/validator_test.go | 63 ++++++++---- 34 files changed, 485 insertions(+), 163 deletions(-) diff --git a/client/context.go b/client/context.go index eedbdf6fdb65..1abddf49eeef 100644 --- a/client/context.go +++ b/client/context.go @@ -53,6 +53,10 @@ type Context struct { FeeGranter sdk.AccAddress Viper *viper.Viper + // QGB related + OrchestratorAddress string + EthereumAddress string + // TODO: Deprecated (remove). LegacyAmino *codec.LegacyAmino } @@ -253,6 +257,18 @@ func (ctx Context) WithViper(prefix string) Context { return ctx } +// WithEthAddress returns a copy of the context with an updated ethereum address. +func (ctx Context) WithEthereumAddress(eth string) Context { + ctx.EthereumAddress = eth + return ctx +} + +// WithOrchestratorAddress returns a copy of the context with an updated ethereum address. +func (ctx Context) WithOrchestratorAddress(orch string) Context { + ctx.OrchestratorAddress = orch + return ctx +} + // PrintString prints the raw string to ctx.Output if it's defined, otherwise to os.Stdout func (ctx Context) PrintString(str string) error { return ctx.PrintBytes([]byte(str)) diff --git a/go.mod b/go.mod index b4a16b9eeb90..ce950077c31a 100644 --- a/go.mod +++ b/go.mod @@ -14,6 +14,7 @@ require ( github.com/cosmos/iavl v0.17.1 github.com/cosmos/ledger-cosmos-go v0.11.1 github.com/enigmampc/btcutil v1.0.3-0.20200723161021-e2fb6adb2a25 + github.com/ethereum/go-ethereum v1.9.25 github.com/gogo/gateway v1.1.0 github.com/gogo/protobuf v1.3.3 github.com/golang/mock v1.6.0 diff --git a/go.sum b/go.sum index 78f5c0a1452a..890b0de4aa2e 100644 --- a/go.sum +++ b/go.sum @@ -249,6 +249,7 @@ github.com/enigmampc/btcutil v1.0.3-0.20200723161021-e2fb6adb2a25 h1:2vLKys4RBU4 github.com/enigmampc/btcutil v1.0.3-0.20200723161021-e2fb6adb2a25/go.mod h1:hTr8+TLQmkUkgcuh3mcr5fjrT9c64ZzsBCdCEC6UppY= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/ethereum/go-ethereum v1.9.25 h1:mMiw/zOOtCLdGLWfcekua0qPrJTe7FVIiHJ4IKNTfR0= github.com/ethereum/go-ethereum v1.9.25/go.mod h1:vMkFiYLHI4tgPw4k2j4MHKoovchFE8plZ0M9VMk4/oM= github.com/facebookgo/ensure v0.0.0-20160127193407-b4ab57deab51 h1:0JZ+dUmQeA8IIVUMzysrX4/AKuQwWhV2dYQuPZdvdSQ= github.com/facebookgo/ensure v0.0.0-20160127193407-b4ab57deab51/go.mod h1:Yg+htXGokKKdzcwhuNDwVvN+uBxDGXJ7G/VN1d8fa64= diff --git a/simapp/simd/cmd/testnet.go b/simapp/simd/cmd/testnet.go index 0b2d3c669941..db15fe0d81b1 100644 --- a/simapp/simd/cmd/testnet.go +++ b/simapp/simd/cmd/testnet.go @@ -35,11 +35,13 @@ import ( ) var ( - flagNodeDirPrefix = "node-dir-prefix" - flagNumValidators = "v" - flagOutputDir = "output-dir" - flagNodeDaemonHome = "node-daemon-home" - flagStartingIPAddress = "starting-ip-address" + flagNodeDirPrefix = "node-dir-prefix" + flagNumValidators = "v" + flagOutputDir = "output-dir" + flagNodeDaemonHome = "node-daemon-home" + flagStartingIPAddress = "starting-ip-address" + flagOrchestratorAddress = "orchestrator-address" + flagEthereumAddress = "ethereum-address" ) // get cmd to initialize all files for tendermint testnet and application @@ -76,7 +78,8 @@ Example: return InitTestnet( clientCtx, cmd, config, mbm, genBalIterator, outputDir, chainID, minGasPrices, - nodeDirPrefix, nodeDaemonHome, startingIPAddress, keyringBackend, algo, numValidators, + nodeDirPrefix, nodeDaemonHome, startingIPAddress, keyringBackend, algo, + numValidators, ) }, } @@ -90,6 +93,8 @@ Example: cmd.Flags().String(server.FlagMinGasPrices, fmt.Sprintf("0.000006%s", sdk.DefaultBondDenom), "Minimum gas prices to accept for transactions; All fees in a tx must meet this minimum (e.g. 0.01photino,0.001stake)") cmd.Flags().String(flags.FlagKeyringBackend, flags.DefaultKeyringBackend, "Select keyring's backend (os|file|test)") cmd.Flags().String(flags.FlagKeyAlgorithm, string(hd.Secp256k1Type), "Key signing algorithm to generate keys for") + cmd.Flags().String(flagOrchestratorAddress, "", "Orchestrator address to use when signing attestations transactions (defaults to validator address)") + cmd.Flags().String(flagEthereumAddress, "", "Ethereum address to use when signing attetations") return cmd } @@ -97,6 +102,7 @@ Example: const nodeDirPerm = 0755 // Initialize the testnet +// If orchestrator address is empty, it defaults to validator address func InitTestnet( clientCtx client.Context, cmd *cobra.Command, @@ -206,9 +212,20 @@ func InitTestnet( genBalances = append(genBalances, banktypes.Balance{Address: addr.String(), Coins: coins.Sort()}) genAccounts = append(genAccounts, authtypes.NewBaseAccount(addr, nil, 0, 0)) - // TODO make these come from the test command - orchAddr, _ := sdk.AccAddressFromBech32("celes1qktu8009djs6uym9uwj84ead24exkezsaqrmn5") - ethAddr, _ := stakingtypes.NewEthAddress("0x91DEd26b5f38B065FC0204c7929Da6b2A21277Cd") + var orchAddress sdk.AccAddress + if clientCtx.OrchestratorAddress == "" { + orchAddress = sdk.AccAddress(valPubKeys[i].Address()) + } else { + orchAddress, err = sdk.AccAddressFromBech32(clientCtx.OrchestratorAddress) + if err != nil { + return err + } + } + + ethAddress, err := stakingtypes.NewEthAddress(clientCtx.EthereumAddress) + if err != nil { + return err + } valTokens := sdk.TokensFromConsensusPower(100, sdk.DefaultPowerReduction) createValMsg, err := stakingtypes.NewMsgCreateValidator( @@ -217,7 +234,7 @@ func InitTestnet( sdk.NewCoin(sdk.DefaultBondDenom, valTokens), stakingtypes.NewDescription(nodeDirName, "", "", "", ""), stakingtypes.NewCommissionRates(sdk.OneDec(), sdk.OneDec(), sdk.OneDec()), - sdk.OneInt(), orchAddr, *ethAddr, + sdk.OneInt(), orchAddress, *ethAddress, ) if err != nil { return err diff --git a/simapp/simd/cmd/testnet_test.go b/simapp/simd/cmd/testnet_test.go index da58fd454d82..2633269ff8f7 100644 --- a/simapp/simd/cmd/testnet_test.go +++ b/simapp/simd/cmd/testnet_test.go @@ -3,6 +3,7 @@ package cmd import ( "context" "fmt" + "github.com/cosmos/cosmos-sdk/x/staking/teststaking" "testing" "github.com/cosmos/cosmos-sdk/client" @@ -27,11 +28,15 @@ func Test_TestnetCmd(t *testing.T) { err = genutiltest.ExecInitCmd(simapp.ModuleBasics, home, encodingConfig.Marshaler) require.NoError(t, err) + randomEthAddress, err := teststaking.RandomEthAddress() + require.NoError(t, err) + serverCtx := server.NewContext(viper.New(), cfg, logger) clientCtx := client.Context{}. WithCodec(encodingConfig.Marshaler). WithHomeDir(home). - WithTxConfig(encodingConfig.TxConfig) + WithTxConfig(encodingConfig.TxConfig). + WithEthereumAddress(randomEthAddress.GetAddress()) ctx := context.Background() ctx = context.WithValue(ctx, server.ServerContextKey, serverCtx) diff --git a/testutil/network/network.go b/testutil/network/network.go index 3e2dd46a44ef..570015f6e1f8 100644 --- a/testutil/network/network.go +++ b/testutil/network/network.go @@ -3,9 +3,11 @@ package network import ( "bufio" "context" + "crypto/ecdsa" "encoding/json" "errors" "fmt" + "github.com/ethereum/go-ethereum/crypto" "io/ioutil" "net/http" "net/url" @@ -162,6 +164,9 @@ type ( api *api.Server grpc *grpc.Server grpcWeb *http.Server + + EthPrivateKey *ecdsa.PrivateKey + EthAddr *stakingtypes.EthAddress } ) @@ -303,8 +308,11 @@ func New(t *testing.T, cfg Config) *Network { commission, err := sdk.NewDecFromStr("0.5") require.NoError(t, err) - orchAddr, _ := sdk.AccAddressFromHex("celes1qktu8009djs6uym9uwj84ead24exkezsaqrmn5") - ethAddr, _ := stakingtypes.NewEthAddress("0x91DEd26b5f38B065FC0204c7929Da6b2A21277Cd") + ethPrivateKey, err := crypto.GenerateKey() + require.NoError(t, err) + orchEthPublicKey := ethPrivateKey.Public().(*ecdsa.PublicKey) + ethAddr, err := stakingtypes.NewEthAddress(crypto.PubkeyToAddress(*orchEthPublicKey).Hex()) + require.NoError(t, err) createValMsg, err := stakingtypes.NewMsgCreateValidator( sdk.ValAddress(addr), @@ -312,7 +320,9 @@ func New(t *testing.T, cfg Config) *Network { sdk.NewCoin(cfg.BondDenom, cfg.BondedTokens), stakingtypes.NewDescription(nodeDirName, "", "", "", ""), stakingtypes.NewCommissionRates(commission, sdk.OneDec(), sdk.OneDec()), - sdk.OneInt(), orchAddr, *ethAddr, + sdk.OneInt(), + addr, // can we use the same validator address in this test ? + *ethAddr, ) require.NoError(t, err) @@ -355,18 +365,20 @@ func New(t *testing.T, cfg Config) *Network { WithAccountRetriever(cfg.AccountRetriever) network.Validators[i] = &Validator{ - AppConfig: appCfg, - ClientCtx: clientCtx, - Ctx: ctx, - Dir: filepath.Join(network.BaseDir, nodeDirName), - NodeID: nodeID, - PubKey: pubKey, - Moniker: nodeDirName, - RPCAddress: tmCfg.RPC.ListenAddress, - P2PAddress: tmCfg.P2P.ListenAddress, - APIAddress: apiAddr, - Address: addr, - ValAddress: sdk.ValAddress(addr), + AppConfig: appCfg, + ClientCtx: clientCtx, + Ctx: ctx, + Dir: filepath.Join(network.BaseDir, nodeDirName), + NodeID: nodeID, + PubKey: pubKey, + Moniker: nodeDirName, + RPCAddress: tmCfg.RPC.ListenAddress, + P2PAddress: tmCfg.P2P.ListenAddress, + APIAddress: apiAddr, + Address: addr, + ValAddress: sdk.ValAddress(addr), + EthPrivateKey: ethPrivateKey, + EthAddr: ethAddr, } } diff --git a/x/auth/legacy/v043/store_test.go b/x/auth/legacy/v043/store_test.go index 3daa2d52fc53..b74aa5dc30d4 100644 --- a/x/auth/legacy/v043/store_test.go +++ b/x/auth/legacy/v043/store_test.go @@ -2,6 +2,7 @@ package v043_test import ( "fmt" + "github.com/cosmos/cosmos-sdk/x/staking/teststaking" "testing" "time" @@ -663,6 +664,9 @@ func createValidator(t *testing.T, ctx sdk.Context, app *simapp.SimApp, powers i pks := simapp.CreateTestPubKeys(1) cdc := simapp.MakeTestEncodingConfig().Marshaler + ethAddr, err := teststaking.RandomEthAddress() + require.NoError(t, err) + app.StakingKeeper = stakingkeeper.NewKeeper( cdc, app.GetKey(stakingtypes.StoreKey), @@ -671,7 +675,7 @@ func createValidator(t *testing.T, ctx sdk.Context, app *simapp.SimApp, powers i app.GetSubspace(stakingtypes.ModuleName), ) - val1, err := stakingtypes.NewValidator(valAddrs[0], pks[0], stakingtypes.Description{}) + val1, err := stakingtypes.NewValidator(valAddrs[0], pks[0], stakingtypes.Description{}, sdk.AccAddress(pks[0].Address()), *ethAddr) require.NoError(t, err) app.StakingKeeper.SetValidator(ctx, val1) diff --git a/x/distribution/simulation/operations_test.go b/x/distribution/simulation/operations_test.go index 33b59a53cca9..de2023f49d2e 100644 --- a/x/distribution/simulation/operations_test.go +++ b/x/distribution/simulation/operations_test.go @@ -1,6 +1,7 @@ package simulation_test import ( + "github.com/cosmos/cosmos-sdk/x/staking/teststaking" "math/rand" "testing" @@ -245,8 +246,10 @@ func (suite *SimTestSuite) getTestingValidator(accounts []simtypes.Account, comm account := accounts[n] valPubKey := account.PubKey valAddr := sdk.ValAddress(account.PubKey.Address().Bytes()) - validator, err := stakingtypes.NewValidator(valAddr, valPubKey, stakingtypes. - Description{}) + + randomEthAddress, err := teststaking.RandomEthAddress() + require.NoError(err) + validator, err := stakingtypes.NewValidator(valAddr, valPubKey, stakingtypes.Description{}, sdk.AccAddress(valPubKey.Address()), *randomEthAddress) require.NoError(err) validator, err = validator.SetInitialCommission(commission) require.NoError(err) diff --git a/x/genutil/client/testutil/suite.go b/x/genutil/client/testutil/suite.go index 084a5f530f8d..70a9515b940a 100644 --- a/x/genutil/client/testutil/suite.go +++ b/x/genutil/client/testutil/suite.go @@ -47,6 +47,7 @@ func (s *IntegrationTestSuite) TearDownSuite() { } func (s *IntegrationTestSuite) TestGenTxCmd() { + // todo fix val := s.network.Validators[0] dir := s.T().TempDir() @@ -92,6 +93,7 @@ func (s *IntegrationTestSuite) TestGenTxCmd() { } func (s *IntegrationTestSuite) TestGenTxCmdPubkey() { + // todo fix val := s.network.Validators[0] dir := s.T().TempDir() diff --git a/x/genutil/gentx_test.go b/x/genutil/gentx_test.go index 8de5bc4afe41..51b4fbcede71 100644 --- a/x/genutil/gentx_test.go +++ b/x/genutil/gentx_test.go @@ -3,6 +3,7 @@ package genutil_test import ( "encoding/json" "fmt" + "github.com/cosmos/cosmos-sdk/x/staking/teststaking" "testing" "github.com/stretchr/testify/suite" @@ -27,8 +28,12 @@ var ( pk2 = priv2.PubKey() addr1 = sdk.AccAddress(pk1.Address()) addr2 = sdk.AccAddress(pk2.Address()) - desc = stakingtypes.NewDescription("testname", "", "", "", "") - comm = stakingtypes.CommissionRates{} + + ethAddr1, _ = teststaking.RandomEthAddress() + ethAddr2, _ = teststaking.RandomEthAddress() + + desc = stakingtypes.NewDescription("testname", "", "", "", "") + comm = stakingtypes.CommissionRates{} ) // GenTxTestSuite is a test suite to be used with gentx tests. @@ -53,10 +58,16 @@ func (suite *GenTxTestSuite) SetupTest() { amount := sdk.NewInt64Coin(sdk.DefaultBondDenom, 50) one := sdk.OneInt() suite.msg1, err = stakingtypes.NewMsgCreateValidator( - sdk.ValAddress(pk1.Address()), pk1, amount, desc, comm, one) + sdk.ValAddress(pk1.Address()), pk1, amount, desc, comm, one, + sdk.AccAddress(pk1.Address()), // can we use the same validator address here ? + *ethAddr1, + ) suite.NoError(err) suite.msg2, err = stakingtypes.NewMsgCreateValidator( - sdk.ValAddress(pk2.Address()), pk1, amount, desc, comm, one) + sdk.ValAddress(pk2.Address()), pk1, amount, desc, comm, one, + sdk.AccAddress(pk2.Address()), // can we use the same validator address here ? + *ethAddr2, + ) suite.NoError(err) } diff --git a/x/genutil/types/genesis_state_test.go b/x/genutil/types/genesis_state_test.go index 01e1db9fd330..f82409eec02f 100644 --- a/x/genutil/types/genesis_state_test.go +++ b/x/genutil/types/genesis_state_test.go @@ -2,6 +2,7 @@ package types_test import ( "encoding/json" + "github.com/cosmos/cosmos-sdk/x/staking/teststaking" "testing" "github.com/stretchr/testify/assert" @@ -17,8 +18,11 @@ import ( ) var ( - pk1 = ed25519.GenPrivKey().PubKey() - pk2 = ed25519.GenPrivKey().PubKey() + pk1 = ed25519.GenPrivKey().PubKey() + ethAddr1, _ = teststaking.RandomEthAddress() + + pk2 = ed25519.GenPrivKey().PubKey() + ethAddr2, _ = teststaking.RandomEthAddress() ) func TestNetGenesisState(t *testing.T) { @@ -38,11 +42,17 @@ func TestValidateGenesisMultipleMessages(t *testing.T) { comm := stakingtypes.CommissionRates{} msg1, err := stakingtypes.NewMsgCreateValidator(sdk.ValAddress(pk1.Address()), pk1, - sdk.NewInt64Coin(sdk.DefaultBondDenom, 50), desc, comm, sdk.OneInt()) + sdk.NewInt64Coin(sdk.DefaultBondDenom, 50), desc, comm, sdk.OneInt(), + sdk.AccAddress(pk1.Address()), // can we use the same validator address here ? + *ethAddr1, + ) require.NoError(t, err) msg2, err := stakingtypes.NewMsgCreateValidator(sdk.ValAddress(pk2.Address()), pk2, - sdk.NewInt64Coin(sdk.DefaultBondDenom, 50), desc, comm, sdk.OneInt()) + sdk.NewInt64Coin(sdk.DefaultBondDenom, 50), desc, comm, sdk.OneInt(), + sdk.AccAddress(pk2.Address()), // can we use the same validator address here ? + *ethAddr2, + ) require.NoError(t, err) txGen := simapp.MakeTestEncodingConfig().TxConfig @@ -59,7 +69,7 @@ func TestValidateGenesisMultipleMessages(t *testing.T) { func TestValidateGenesisBadMessage(t *testing.T) { desc := stakingtypes.NewDescription("testname", "", "", "", "") - msg1 := stakingtypes.NewMsgEditValidator(sdk.ValAddress(pk1.Address()), desc, nil, nil) + msg1 := stakingtypes.NewMsgEditValidator(sdk.ValAddress(pk1.Address()), desc, nil, nil, nil, nil) txGen := simapp.MakeTestEncodingConfig().TxConfig txBuilder := txGen.NewTxBuilder() diff --git a/x/gov/common_test.go b/x/gov/common_test.go index 3ff367e15972..206b7abad746 100644 --- a/x/gov/common_test.go +++ b/x/gov/common_test.go @@ -2,6 +2,7 @@ package gov_test import ( "bytes" + "github.com/cosmos/cosmos-sdk/x/staking/teststaking" "log" "sort" "testing" @@ -83,9 +84,12 @@ func createValidators(t *testing.T, stakingHandler sdk.Handler, ctx sdk.Context, for i := 0; i < len(addrs); i++ { valTokens := sdk.TokensFromConsensusPower(powerAmt[i], sdk.DefaultPowerReduction) + randomEthAddress, err := teststaking.RandomEthAddress() + require.NoError(t, err) valCreateMsg, err := stakingtypes.NewMsgCreateValidator( addrs[i], pubkeys[i], sdk.NewCoin(sdk.DefaultBondDenom, valTokens), TestDescription, TestCommissionRates, sdk.OneInt(), + sdk.AccAddress(pubkeys[i].Address()), *randomEthAddress, ) require.NoError(t, err) handleAndCheck(t, stakingHandler, ctx, valCreateMsg) diff --git a/x/gov/keeper/common_test.go b/x/gov/keeper/common_test.go index e39ca9c70380..d63c1cd992a3 100644 --- a/x/gov/keeper/common_test.go +++ b/x/gov/keeper/common_test.go @@ -1,6 +1,7 @@ package keeper_test import ( + "github.com/cosmos/cosmos-sdk/x/staking/teststaking" "testing" "github.com/stretchr/testify/require" @@ -31,11 +32,19 @@ func createValidators(t *testing.T, ctx sdk.Context, app *simapp.SimApp, powers app.GetSubspace(stakingtypes.ModuleName), ) - val1, err := stakingtypes.NewValidator(valAddrs[0], pks[0], stakingtypes.Description{}) + randomEthAddress1, err := teststaking.RandomEthAddress() require.NoError(t, err) - val2, err := stakingtypes.NewValidator(valAddrs[1], pks[1], stakingtypes.Description{}) + val1, err := stakingtypes.NewValidator(valAddrs[0], pks[0], stakingtypes.Description{}, sdk.AccAddress(pks[0].Address()), *randomEthAddress1) require.NoError(t, err) - val3, err := stakingtypes.NewValidator(valAddrs[2], pks[2], stakingtypes.Description{}) + + randomEthAddress2, err := teststaking.RandomEthAddress() + require.NoError(t, err) + val2, err := stakingtypes.NewValidator(valAddrs[1], pks[1], stakingtypes.Description{}, sdk.AccAddress(pks[1].Address()), *randomEthAddress2) + require.NoError(t, err) + + randomEthAddress3, err := teststaking.RandomEthAddress() + require.NoError(t, err) + val3, err := stakingtypes.NewValidator(valAddrs[2], pks[2], stakingtypes.Description{}, sdk.AccAddress(pks[2].Address()), *randomEthAddress3) require.NoError(t, err) app.StakingKeeper.SetValidator(ctx, val1) diff --git a/x/slashing/app_test.go b/x/slashing/app_test.go index 028d41755607..7aeeccfe6d48 100644 --- a/x/slashing/app_test.go +++ b/x/slashing/app_test.go @@ -2,6 +2,7 @@ package slashing_test import ( "errors" + "github.com/cosmos/cosmos-sdk/x/staking/teststaking" "testing" "github.com/stretchr/testify/require" @@ -63,8 +64,11 @@ func TestSlashingMsgs(t *testing.T) { description := stakingtypes.NewDescription("foo_moniker", "", "", "", "") commission := stakingtypes.NewCommissionRates(sdk.ZeroDec(), sdk.ZeroDec(), sdk.ZeroDec()) + randomEthAddress, err := teststaking.RandomEthAddress() + require.NoError(t, err) createValidatorMsg, err := stakingtypes.NewMsgCreateValidator( sdk.ValAddress(addr1), valKey.PubKey(), bondCoin, description, commission, sdk.OneInt(), + sdk.AccAddress(valKey.PubKey().Address()), *randomEthAddress, ) require.NoError(t, err) diff --git a/x/slashing/simulation/operations_test.go b/x/slashing/simulation/operations_test.go index ea58a6e67c86..f6f05ca72505 100644 --- a/x/slashing/simulation/operations_test.go +++ b/x/slashing/simulation/operations_test.go @@ -1,6 +1,7 @@ package simulation_test import ( + "github.com/cosmos/cosmos-sdk/x/staking/teststaking" "math/rand" "testing" "time" @@ -138,7 +139,9 @@ func getTestingValidator(t *testing.T, app *simapp.SimApp, ctx sdk.Context, acco account := accounts[n] valPubKey := account.ConsKey.PubKey() valAddr := sdk.ValAddress(account.PubKey.Address().Bytes()) - validator, err := stakingtypes.NewValidator(valAddr, valPubKey, stakingtypes.Description{}) + randomEthAddress, err := teststaking.RandomEthAddress() + require.NoError(t, err) + validator, err := stakingtypes.NewValidator(valAddr, valPubKey, stakingtypes.Description{}, sdk.AccAddress(valPubKey.Address()), *randomEthAddress) require.NoError(t, err) validator, err = validator.SetInitialCommission(commission) require.NoError(t, err) diff --git a/x/staking/bench_test.go b/x/staking/bench_test.go index 7705b6d3114f..d70c99e638e9 100644 --- a/x/staking/bench_test.go +++ b/x/staking/bench_test.go @@ -29,7 +29,10 @@ func benchmarkValidateGenesis(b *testing.B, n int) { addressL, pubKeyL := makeRandomAddressesAndPublicKeys(n) for i := 0; i < n; i++ { addr, pubKey := addressL[i], pubKeyL[i] - validator := teststaking.NewValidator(b, addr, pubKey) + randomEthAddr, err := teststaking.RandomEthAddress() + b.Error(err) + + validator := teststaking.NewValidator(b, addr, pubKey, sdk.AccAddress(pubKey.Address()), *randomEthAddr) ni := int64(i + 1) validator.Tokens = sdk.NewInt(ni) validator.DelegatorShares = sdk.NewDec(ni) diff --git a/x/staking/client/testutil/suite.go b/x/staking/client/testutil/suite.go index 5378d3774338..5ba4abf1c143 100644 --- a/x/staking/client/testutil/suite.go +++ b/x/staking/client/testutil/suite.go @@ -3,6 +3,7 @@ package testutil import ( "context" "fmt" + "github.com/cosmos/cosmos-sdk/x/staking/teststaking" "strings" "testing" @@ -101,6 +102,9 @@ func (s *IntegrationTestSuite) TestNewCreateValidatorCmd() { ) require.NoError(err) + randomEthAddress, err := teststaking.RandomEthAddress() + require.NoError(err) + testCases := []struct { name string args []string @@ -183,6 +187,8 @@ func (s *IntegrationTestSuite) TestNewCreateValidatorCmd() { fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=%s", cli.FlagEthereumAddress, randomEthAddress.GetAddress()), + fmt.Sprintf("--%s=%s", cli.FlagOrchestratorAddress, newAddr.String()), }, false, 0, &sdk.TxResponse{}, }, @@ -312,6 +318,7 @@ func (s *IntegrationTestSuite) TestGetCmdQueryDelegation() { respType proto.Message expected proto.Message }{ + // todo fix this one also { "with wrong delegator address", []string{ @@ -948,7 +955,7 @@ func (s *IntegrationTestSuite) TestNewEditValidatorCmd() { expectedCode uint32 respType proto.Message }{ - { + { // todo fix the edit command "with no edit flag (since all are optional)", []string{ fmt.Sprintf("--%s=%s", flags.FlagFrom, "with wrong from address"), diff --git a/x/staking/genesis_test.go b/x/staking/genesis_test.go index 0c686e2d998e..d8cb3e38c8cd 100644 --- a/x/staking/genesis_test.go +++ b/x/staking/genesis_test.go @@ -159,12 +159,14 @@ func TestInitGenesisLargeValidatorSet(t *testing.T) { params := app.StakingKeeper.GetParams(ctx) delegations := []types.Delegation{} validators := make([]types.Validator, size) - var err error bondedPoolAmt := sdk.ZeroInt() for i := range validators { + ethAddress, err := teststaking.RandomEthAddress() + require.NoError(t, err) validators[i], err = types.NewValidator(sdk.ValAddress(addrs[i]), - PKs[i], types.NewDescription(fmt.Sprintf("#%d", i), "", "", "", "")) + PKs[i], types.NewDescription(fmt.Sprintf("#%d", i), "", "", "", ""), + sdk.AccAddress(PKs[i].Address()), *ethAddress) require.NoError(t, err) validators[i].Status = types.Bonded @@ -203,7 +205,9 @@ func TestInitGenesisLargeValidatorSet(t *testing.T) { func TestValidateGenesis(t *testing.T) { genValidators1 := make([]types.Validator, 1, 5) pk := ed25519.GenPrivKey().PubKey() - genValidators1[0] = teststaking.NewValidator(t, sdk.ValAddress(pk.Address()), pk) + ethAddress, err := teststaking.RandomEthAddress() + require.NoError(t, err) + genValidators1[0] = teststaking.NewValidator(t, sdk.ValAddress(pk.Address()), pk, sdk.AccAddress(pk.Address()), *ethAddress) genValidators1[0].Tokens = sdk.OneInt() genValidators1[0].DelegatorShares = sdk.OneDec() diff --git a/x/staking/handler_test.go b/x/staking/handler_test.go index 12dea7d7267a..a67b4a75b835 100644 --- a/x/staking/handler_test.go +++ b/x/staking/handler_test.go @@ -378,7 +378,7 @@ func TestEditValidatorDecreaseMinSelfDelegation(t *testing.T) { initBond, gotBond, bond) newMinSelfDelegation := sdk.OneInt() - msgEditValidator := types.NewMsgEditValidator(validatorAddr, types.Description{}, nil, &newMinSelfDelegation) + msgEditValidator := types.NewMsgEditValidator(validatorAddr, types.Description{}, nil, &newMinSelfDelegation, nil, nil) tstaking.Handle(msgEditValidator, false) } @@ -409,7 +409,7 @@ func TestEditValidatorIncreaseMinSelfDelegationBeyondCurrentBond(t *testing.T) { initBond, gotBond, bond) newMinSelfDelegation := initBond.Add(sdk.OneInt()) - msgEditValidator := types.NewMsgEditValidator(validatorAddr, types.Description{}, nil, &newMinSelfDelegation) + msgEditValidator := types.NewMsgEditValidator(validatorAddr, types.Description{}, nil, &newMinSelfDelegation, nil, nil) tstaking.Handle(msgEditValidator, false) } @@ -1185,15 +1185,22 @@ func TestInvalidCoinDenom(t *testing.T) { oneCoin := sdk.NewCoin(sdk.DefaultBondDenom, sdk.OneInt()) commission := types.NewCommissionRates(sdk.OneDec(), sdk.OneDec(), sdk.ZeroDec()) - msgCreate, err := types.NewMsgCreateValidator(valA, PKs[0], invalidCoin, types.Description{}, commission, sdk.OneInt()) + + randomEthAddress, err := teststaking.RandomEthAddress() + require.NoError(t, err) + + msgCreate, err := types.NewMsgCreateValidator(valA, PKs[0], invalidCoin, types.Description{}, commission, sdk.OneInt(), sdk.AccAddress(PKs[0].Address()), *randomEthAddress) require.NoError(t, err) tstaking.Handle(msgCreate, false) - msgCreate, err = types.NewMsgCreateValidator(valA, PKs[0], validCoin, types.Description{}, commission, sdk.OneInt()) + msgCreate, err = types.NewMsgCreateValidator(valA, PKs[0], validCoin, types.Description{}, commission, sdk.OneInt(), sdk.AccAddress(PKs[0].Address()), *randomEthAddress) require.NoError(t, err) tstaking.Handle(msgCreate, true) - msgCreate, err = types.NewMsgCreateValidator(valB, PKs[1], validCoin, types.Description{}, commission, sdk.OneInt()) + randomEthAddress2, err := teststaking.RandomEthAddress() + require.NoError(t, err) + + msgCreate, err = types.NewMsgCreateValidator(valB, PKs[1], validCoin, types.Description{}, commission, sdk.OneInt(), sdk.AccAddress(PKs[1].Address()), *randomEthAddress2) require.NoError(t, err) tstaking.Handle(msgCreate, true) diff --git a/x/staking/keeper/delegation_test.go b/x/staking/keeper/delegation_test.go index cac61af1fbe2..dfb0041c1e27 100644 --- a/x/staking/keeper/delegation_test.go +++ b/x/staking/keeper/delegation_test.go @@ -25,7 +25,9 @@ func TestDelegation(t *testing.T) { amts := []sdk.Int{sdk.NewInt(9), sdk.NewInt(8), sdk.NewInt(7)} var validators [3]types.Validator for i, amt := range amts { - validators[i] = teststaking.NewValidator(t, valAddrs[i], PKs[i]) + randomEthAddress, err := teststaking.RandomEthAddress() + require.NoError(t, err) + validators[i] = teststaking.NewValidator(t, valAddrs[i], PKs[i], sdk.AccAddress(PKs[i].Address()), *randomEthAddress) validators[i], _ = validators[i].AddTokensFromDel(amt) } @@ -191,7 +193,9 @@ func TestUnbondDelegation(t *testing.T) { // create a validator and a delegator to that validator // note this validator starts not-bonded - validator := teststaking.NewValidator(t, valAddrs[0], PKs[0]) + randomEthAddress, err := teststaking.RandomEthAddress() + require.NoError(t, err) + validator := teststaking.NewValidator(t, valAddrs[0], PKs[0], sdk.AccAddress(PKs[0].Address()), *randomEthAddress) validator, issuedShares := validator.AddTokensFromDel(startTokens) require.Equal(t, startTokens, issuedShares.RoundInt()) @@ -231,7 +235,9 @@ func TestUnbondingDelegationsMaxEntries(t *testing.T) { app.AccountKeeper.SetModuleAccount(ctx, notBondedPool) // create a validator and a delegator to that validator - validator := teststaking.NewValidator(t, addrVals[0], PKs[0]) + randomEthAddress, err := teststaking.RandomEthAddress() + require.NoError(t, err) + validator := teststaking.NewValidator(t, addrVals[0], PKs[0], sdk.AccAddress(PKs[0].Address()), *randomEthAddress) validator, issuedShares := validator.AddTokensFromDel(startTokens) require.Equal(t, startTokens, issuedShares.RoundInt()) @@ -265,7 +271,7 @@ func TestUnbondingDelegationsMaxEntries(t *testing.T) { oldNotBonded = app.BankKeeper.GetBalance(ctx, app.StakingKeeper.GetNotBondedPool(ctx).GetAddress(), bondDenom).Amount // an additional unbond should fail due to max entries - _, err := app.StakingKeeper.Undelegate(ctx, addrDels[0], addrVals[0], sdk.NewDec(1)) + _, err = app.StakingKeeper.Undelegate(ctx, addrDels[0], addrVals[0], sdk.NewDec(1)) require.Error(t, err) newBonded = app.BankKeeper.GetBalance(ctx, app.StakingKeeper.GetBondedPool(ctx).GetAddress(), bondDenom).Amount @@ -307,7 +313,9 @@ func TestUndelegateSelfDelegationBelowMinSelfDelegation(t *testing.T) { delCoins := sdk.NewCoins(sdk.NewCoin(app.StakingKeeper.BondDenom(ctx), delTokens)) //create a validator with a self-delegation - validator := teststaking.NewValidator(t, addrVals[0], PKs[0]) + randomEthAddress, err := teststaking.RandomEthAddress() + require.NoError(t, err) + validator := teststaking.NewValidator(t, addrVals[0], PKs[0], sdk.AccAddress(PKs[0].Address()), *randomEthAddress) validator.MinSelfDelegation = delTokens validator, issuedShares := validator.AddTokensFromDel(delTokens) @@ -345,7 +353,7 @@ func TestUndelegateSelfDelegationBelowMinSelfDelegation(t *testing.T) { app.StakingKeeper.SetDelegation(ctx, delegation) val0AccAddr := sdk.AccAddress(addrVals[0].Bytes()) - _, err := app.StakingKeeper.Undelegate(ctx, val0AccAddr, addrVals[0], app.StakingKeeper.TokensFromConsensusPower(ctx, 6).ToDec()) + _, err = app.StakingKeeper.Undelegate(ctx, val0AccAddr, addrVals[0], app.StakingKeeper.TokensFromConsensusPower(ctx, 6).ToDec()) require.NoError(t, err) // end block @@ -367,7 +375,9 @@ func TestUndelegateFromUnbondingValidator(t *testing.T) { addrVals := simapp.ConvertAddrsToValAddrs(addrDels) //create a validator with a self-delegation - validator := teststaking.NewValidator(t, addrVals[0], PKs[0]) + randomEthAddress, err := teststaking.RandomEthAddress() + require.NoError(t, err) + validator := teststaking.NewValidator(t, addrVals[0], PKs[0], sdk.AccAddress(PKs[0].Address()), *randomEthAddress) app.StakingKeeper.SetValidatorByConsAddr(ctx, validator) validator, issuedShares := validator.AddTokensFromDel(delTokens) @@ -414,7 +424,7 @@ func TestUndelegateFromUnbondingValidator(t *testing.T) { // unbond the all self-delegation to put validator in unbonding state val0AccAddr := sdk.AccAddress(addrVals[0]) - _, err := app.StakingKeeper.Undelegate(ctx, val0AccAddr, addrVals[0], delTokens.ToDec()) + _, err = app.StakingKeeper.Undelegate(ctx, val0AccAddr, addrVals[0], delTokens.ToDec()) require.NoError(t, err) // end block @@ -458,7 +468,9 @@ func TestUndelegateFromUnbondedValidator(t *testing.T) { app.AccountKeeper.SetModuleAccount(ctx, notBondedPool) // create a validator with a self-delegation - validator := teststaking.NewValidator(t, addrVals[0], PKs[0]) + randomEthAddress, err := teststaking.RandomEthAddress() + require.NoError(t, err) + validator := teststaking.NewValidator(t, addrVals[0], PKs[0], sdk.AccAddress(PKs[0].Address()), *randomEthAddress) app.StakingKeeper.SetValidatorByConsAddr(ctx, validator) valTokens := app.StakingKeeper.TokensFromConsensusPower(ctx, 10) @@ -489,7 +501,7 @@ func TestUndelegateFromUnbondedValidator(t *testing.T) { ctx = ctx.WithBlockTime(time.Unix(333, 0)) // unbond the all self-delegation to put validator in unbonding state - _, err := app.StakingKeeper.Undelegate(ctx, val0AccAddr, addrVals[0], valTokens.ToDec()) + _, err = app.StakingKeeper.Undelegate(ctx, val0AccAddr, addrVals[0], valTokens.ToDec()) require.NoError(t, err) // end block @@ -539,7 +551,9 @@ func TestUnbondingAllDelegationFromValidator(t *testing.T) { app.AccountKeeper.SetModuleAccount(ctx, notBondedPool) //create a validator with a self-delegation - validator := teststaking.NewValidator(t, addrVals[0], PKs[0]) + randomEthAddress, err := teststaking.RandomEthAddress() + require.NoError(t, err) + validator := teststaking.NewValidator(t, addrVals[0], PKs[0], sdk.AccAddress(PKs[0].Address()), *randomEthAddress) app.StakingKeeper.SetValidatorByConsAddr(ctx, validator) valTokens := app.StakingKeeper.TokensFromConsensusPower(ctx, 10) @@ -573,7 +587,7 @@ func TestUnbondingAllDelegationFromValidator(t *testing.T) { ctx = ctx.WithBlockTime(time.Unix(333, 0)) // unbond the all self-delegation to put validator in unbonding state - _, err := app.StakingKeeper.Undelegate(ctx, val0AccAddr, addrVals[0], valTokens.ToDec()) + _, err = app.StakingKeeper.Undelegate(ctx, val0AccAddr, addrVals[0], valTokens.ToDec()) require.NoError(t, err) // end block @@ -703,7 +717,9 @@ func TestRedelegateToSameValidator(t *testing.T) { app.AccountKeeper.SetModuleAccount(ctx, notBondedPool) // create a validator with a self-delegation - validator := teststaking.NewValidator(t, addrVals[0], PKs[0]) + randomEthAddress, err := teststaking.RandomEthAddress() + require.NoError(t, err) + validator := teststaking.NewValidator(t, addrVals[0], PKs[0], sdk.AccAddress(PKs[0].Address()), *randomEthAddress) validator, issuedShares := validator.AddTokensFromDel(valTokens) require.Equal(t, valTokens, issuedShares.RoundInt()) validator = keeper.TestingUpdateValidator(app.StakingKeeper, ctx, validator, true) @@ -713,7 +729,7 @@ func TestRedelegateToSameValidator(t *testing.T) { selfDelegation := types.NewDelegation(val0AccAddr, addrVals[0], issuedShares) app.StakingKeeper.SetDelegation(ctx, selfDelegation) - _, err := app.StakingKeeper.BeginRedelegation(ctx, val0AccAddr, addrVals[0], addrVals[0], sdk.NewDec(5)) + _, err = app.StakingKeeper.BeginRedelegation(ctx, val0AccAddr, addrVals[0], addrVals[0], sdk.NewDec(5)) require.Error(t, err) } @@ -732,7 +748,9 @@ func TestRedelegationMaxEntries(t *testing.T) { app.AccountKeeper.SetModuleAccount(ctx, notBondedPool) // create a validator with a self-delegation - validator := teststaking.NewValidator(t, addrVals[0], PKs[0]) + randomEthAddress, err := teststaking.RandomEthAddress() + require.NoError(t, err) + validator := teststaking.NewValidator(t, addrVals[0], PKs[0], sdk.AccAddress(PKs[0].Address()), *randomEthAddress) valTokens := app.StakingKeeper.TokensFromConsensusPower(ctx, 10) validator, issuedShares := validator.AddTokensFromDel(valTokens) require.Equal(t, valTokens, issuedShares.RoundInt()) @@ -742,7 +760,9 @@ func TestRedelegationMaxEntries(t *testing.T) { app.StakingKeeper.SetDelegation(ctx, selfDelegation) // create a second validator - validator2 := teststaking.NewValidator(t, addrVals[1], PKs[1]) + randomEthAddress2, err := teststaking.RandomEthAddress() + require.NoError(t, err) + validator2 := teststaking.NewValidator(t, addrVals[1], PKs[1], sdk.AccAddress(PKs[0].Address()), *randomEthAddress2) validator2, issuedShares = validator2.AddTokensFromDel(valTokens) require.Equal(t, valTokens, issuedShares.RoundInt()) @@ -760,7 +780,7 @@ func TestRedelegationMaxEntries(t *testing.T) { } // an additional redelegation should fail due to max entries - _, err := app.StakingKeeper.BeginRedelegation(ctx, val0AccAddr, addrVals[0], addrVals[1], sdk.NewDec(1)) + _, err = app.StakingKeeper.BeginRedelegation(ctx, val0AccAddr, addrVals[0], addrVals[1], sdk.NewDec(1)) require.Error(t, err) // mature redelegations @@ -788,7 +808,9 @@ func TestRedelegateSelfDelegation(t *testing.T) { app.AccountKeeper.SetModuleAccount(ctx, notBondedPool) //create a validator with a self-delegation - validator := teststaking.NewValidator(t, addrVals[0], PKs[0]) + randomEthAddress, err := teststaking.RandomEthAddress() + require.NoError(t, err) + validator := teststaking.NewValidator(t, addrVals[0], PKs[0], sdk.AccAddress(PKs[0].Address()), *randomEthAddress) app.StakingKeeper.SetValidatorByConsAddr(ctx, validator) valTokens := app.StakingKeeper.TokensFromConsensusPower(ctx, 10) @@ -802,7 +824,9 @@ func TestRedelegateSelfDelegation(t *testing.T) { app.StakingKeeper.SetDelegation(ctx, selfDelegation) // create a second validator - validator2 := teststaking.NewValidator(t, addrVals[1], PKs[1]) + randomEthAddress2, err := teststaking.RandomEthAddress() + require.NoError(t, err) + validator2 := teststaking.NewValidator(t, addrVals[1], PKs[1], sdk.AccAddress(PKs[1].Address()), *randomEthAddress2) validator2, issuedShares = validator2.AddTokensFromDel(valTokens) require.Equal(t, valTokens, issuedShares.RoundInt()) validator2 = keeper.TestingUpdateValidator(app.StakingKeeper, ctx, validator2, true) @@ -817,7 +841,7 @@ func TestRedelegateSelfDelegation(t *testing.T) { delegation := types.NewDelegation(addrDels[0], addrVals[0], issuedShares) app.StakingKeeper.SetDelegation(ctx, delegation) - _, err := app.StakingKeeper.BeginRedelegation(ctx, val0AccAddr, addrVals[0], addrVals[1], delTokens.ToDec()) + _, err = app.StakingKeeper.BeginRedelegation(ctx, val0AccAddr, addrVals[0], addrVals[1], delTokens.ToDec()) require.NoError(t, err) // end block @@ -844,7 +868,9 @@ func TestRedelegateFromUnbondingValidator(t *testing.T) { app.AccountKeeper.SetModuleAccount(ctx, notBondedPool) //create a validator with a self-delegation - validator := teststaking.NewValidator(t, addrVals[0], PKs[0]) + randomEthAddress, err := teststaking.RandomEthAddress() + require.NoError(t, err) + validator := teststaking.NewValidator(t, addrVals[0], PKs[0], sdk.AccAddress(PKs[0].Address()), *randomEthAddress) app.StakingKeeper.SetValidatorByConsAddr(ctx, validator) valTokens := app.StakingKeeper.TokensFromConsensusPower(ctx, 10) @@ -865,7 +891,9 @@ func TestRedelegateFromUnbondingValidator(t *testing.T) { app.StakingKeeper.SetDelegation(ctx, delegation) // create a second validator - validator2 := teststaking.NewValidator(t, addrVals[1], PKs[1]) + randomEthAddress2, err := teststaking.RandomEthAddress() + require.NoError(t, err) + validator2 := teststaking.NewValidator(t, addrVals[1], PKs[1], sdk.AccAddress(PKs[1].Address()), *randomEthAddress2) validator2, issuedShares = validator2.AddTokensFromDel(valTokens) require.Equal(t, valTokens, issuedShares.RoundInt()) validator2 = keeper.TestingUpdateValidator(app.StakingKeeper, ctx, validator2, true) @@ -878,7 +906,7 @@ func TestRedelegateFromUnbondingValidator(t *testing.T) { ctx = ctx.WithBlockHeader(header) // unbond the all self-delegation to put validator in unbonding state - _, err := app.StakingKeeper.Undelegate(ctx, val0AccAddr, addrVals[0], delTokens.ToDec()) + _, err = app.StakingKeeper.Undelegate(ctx, val0AccAddr, addrVals[0], delTokens.ToDec()) require.NoError(t, err) // end block @@ -926,7 +954,9 @@ func TestRedelegateFromUnbondedValidator(t *testing.T) { app.AccountKeeper.SetModuleAccount(ctx, notBondedPool) //create a validator with a self-delegation - validator := teststaking.NewValidator(t, addrVals[0], PKs[0]) + randomEthAddress, err := teststaking.RandomEthAddress() + require.NoError(t, err) + validator := teststaking.NewValidator(t, addrVals[0], PKs[0], sdk.AccAddress(PKs[0].Address()), *randomEthAddress) app.StakingKeeper.SetValidatorByConsAddr(ctx, validator) valTokens := app.StakingKeeper.TokensFromConsensusPower(ctx, 10) @@ -947,7 +977,9 @@ func TestRedelegateFromUnbondedValidator(t *testing.T) { app.StakingKeeper.SetDelegation(ctx, delegation) // create a second validator - validator2 := teststaking.NewValidator(t, addrVals[1], PKs[1]) + randomEthAddress2, err := teststaking.RandomEthAddress() + require.NoError(t, err) + validator2 := teststaking.NewValidator(t, addrVals[1], PKs[1], sdk.AccAddress(PKs[1].Address()), *randomEthAddress2) validator2, issuedShares = validator2.AddTokensFromDel(valTokens) require.Equal(t, valTokens, issuedShares.RoundInt()) validator2 = keeper.TestingUpdateValidator(app.StakingKeeper, ctx, validator2, true) @@ -957,7 +989,7 @@ func TestRedelegateFromUnbondedValidator(t *testing.T) { ctx = ctx.WithBlockTime(time.Unix(333, 0)) // unbond the all self-delegation to put validator in unbonding state - _, err := app.StakingKeeper.Undelegate(ctx, val0AccAddr, addrVals[0], delTokens.ToDec()) + _, err = app.StakingKeeper.Undelegate(ctx, val0AccAddr, addrVals[0], delTokens.ToDec()) require.NoError(t, err) // end block diff --git a/x/staking/keeper/grpc_query_test.go b/x/staking/keeper/grpc_query_test.go index ba43269e2e32..e98284b34402 100644 --- a/x/staking/keeper/grpc_query_test.go +++ b/x/staking/keeper/grpc_query_test.go @@ -782,8 +782,13 @@ func createValidators(t *testing.T, ctx sdk.Context, app *simapp.SimApp, powers app.GetSubspace(types.ModuleName), ) - val1 := teststaking.NewValidator(t, valAddrs[0], pks[0]) - val2 := teststaking.NewValidator(t, valAddrs[1], pks[1]) + randomEthAddress1, err := teststaking.RandomEthAddress() + require.NoError(t, err) + val1 := teststaking.NewValidator(t, valAddrs[0], pks[0], sdk.AccAddress(PKs[0].Address()), *randomEthAddress1) + + randomEthAddress2, err := teststaking.RandomEthAddress() + require.NoError(t, err) + val2 := teststaking.NewValidator(t, valAddrs[1], pks[1], sdk.AccAddress(PKs[1].Address()), *randomEthAddress2) vals := []types.Validator{val1, val2} app.StakingKeeper.SetValidator(ctx, val1) @@ -793,7 +798,7 @@ func createValidators(t *testing.T, ctx sdk.Context, app *simapp.SimApp, powers app.StakingKeeper.SetNewValidatorByPowerIndex(ctx, val1) app.StakingKeeper.SetNewValidatorByPowerIndex(ctx, val2) - _, err := app.StakingKeeper.Delegate(ctx, addrs[0], app.StakingKeeper.TokensFromConsensusPower(ctx, powers[0]), types.Unbonded, val1, true) + _, err = app.StakingKeeper.Delegate(ctx, addrs[0], app.StakingKeeper.TokensFromConsensusPower(ctx, powers[0]), types.Unbonded, val1, true) require.NoError(t, err) _, err = app.StakingKeeper.Delegate(ctx, addrs[1], app.StakingKeeper.TokensFromConsensusPower(ctx, powers[1]), types.Unbonded, val2, true) require.NoError(t, err) diff --git a/x/staking/keeper/historical_info_test.go b/x/staking/keeper/historical_info_test.go index db6c6a6b47af..d96fcb1ed070 100644 --- a/x/staking/keeper/historical_info_test.go +++ b/x/staking/keeper/historical_info_test.go @@ -32,7 +32,9 @@ func TestHistoricalInfo(t *testing.T) { validators := make([]types.Validator, len(addrVals)) for i, valAddr := range addrVals { - validators[i] = teststaking.NewValidator(t, valAddr, PKs[i]) + randomEthAddress, err := teststaking.RandomEthAddress() + require.NoError(t, err) + validators[i] = teststaking.NewValidator(t, valAddr, PKs[i], sdk.AccAddress(PKs[i].Address()), *randomEthAddress) } hi := types.NewHistoricalInfo(ctx.BlockHeader(), validators, app.StakingKeeper.PowerReduction(ctx)) @@ -71,10 +73,16 @@ func TestTrackHistoricalInfo(t *testing.T) { ChainID: "HelloChain", Height: 5, } + randomEthAddress1, err := teststaking.RandomEthAddress() + require.NoError(t, err) + randomEthAddress2, err := teststaking.RandomEthAddress() + require.NoError(t, err) + valSet := []types.Validator{ - teststaking.NewValidator(t, addrVals[0], PKs[0]), - teststaking.NewValidator(t, addrVals[1], PKs[1]), + teststaking.NewValidator(t, addrVals[0], PKs[0], sdk.AccAddress(PKs[0].Address()), *randomEthAddress1), + teststaking.NewValidator(t, addrVals[1], PKs[1], sdk.AccAddress(PKs[1].Address()), *randomEthAddress2), } + hi4 := types.NewHistoricalInfo(h4, valSet, app.StakingKeeper.PowerReduction(ctx)) hi5 := types.NewHistoricalInfo(h5, valSet, app.StakingKeeper.PowerReduction(ctx)) app.StakingKeeper.SetHistoricalInfo(ctx, 4, &hi4) @@ -87,12 +95,16 @@ func TestTrackHistoricalInfo(t *testing.T) { require.Equal(t, hi5, recv) // Set bonded validators in keeper - val1 := teststaking.NewValidator(t, addrVals[2], PKs[2]) + randomEthAddress3, err := teststaking.RandomEthAddress() + require.NoError(t, err) + val1 := teststaking.NewValidator(t, addrVals[2], PKs[2], sdk.AccAddress(PKs[2].Address()), *randomEthAddress3) val1.Status = types.Bonded // when not bonded, consensus power is Zero val1.Tokens = app.StakingKeeper.TokensFromConsensusPower(ctx, 10) app.StakingKeeper.SetValidator(ctx, val1) app.StakingKeeper.SetLastValidatorPower(ctx, val1.GetOperator(), 10) - val2 := teststaking.NewValidator(t, addrVals[3], PKs[3]) + randomEthAddress4, err := teststaking.RandomEthAddress() + require.NoError(t, err) + val2 := teststaking.NewValidator(t, addrVals[3], PKs[3], sdk.AccAddress(PKs[3].Address()), *randomEthAddress4) val1.Status = types.Bonded val2.Tokens = app.StakingKeeper.TokensFromConsensusPower(ctx, 80) app.StakingKeeper.SetValidator(ctx, val2) @@ -134,9 +146,14 @@ func TestGetAllHistoricalInfo(t *testing.T) { addrDels := simapp.AddTestAddrsIncremental(app, ctx, 50, sdk.NewInt(0)) addrVals := simapp.ConvertAddrsToValAddrs(addrDels) + randomEthAddress1, err := teststaking.RandomEthAddress() + require.NoError(t, err) + randomEthAddress2, err := teststaking.RandomEthAddress() + require.NoError(t, err) + valSet := []types.Validator{ - teststaking.NewValidator(t, addrVals[0], PKs[0]), - teststaking.NewValidator(t, addrVals[1], PKs[1]), + teststaking.NewValidator(t, addrVals[0], PKs[0], sdk.AccAddress(PKs[0].Address()), *randomEthAddress1), + teststaking.NewValidator(t, addrVals[1], PKs[1], sdk.AccAddress(PKs[1].Address()), *randomEthAddress2), } header1 := tmproto.Header{ChainID: "HelloChain", Height: 10} diff --git a/x/staking/keeper/querier_test.go b/x/staking/keeper/querier_test.go index 6abe7d53cddd..dcff9de1cad4 100644 --- a/x/staking/keeper/querier_test.go +++ b/x/staking/keeper/querier_test.go @@ -27,7 +27,9 @@ func TestNewQuerier(t *testing.T) { amts := []sdk.Int{sdk.NewInt(9), sdk.NewInt(8)} var validators [2]types.Validator for i, amt := range amts { - validators[i] = teststaking.NewValidator(t, sdk.ValAddress(addrs[i]), PKs[i]) + randomEthAddress, err := teststaking.RandomEthAddress() + require.NoError(t, err) + validators[i] = teststaking.NewValidator(t, sdk.ValAddress(addrs[i]), PKs[i], sdk.AccAddress(PKs[i].Address()), *randomEthAddress) validators[i], _ = validators[i].AddTokensFromDel(amt) app.StakingKeeper.SetValidator(ctx, validators[i]) app.StakingKeeper.SetValidatorByPowerIndex(ctx, validators[i]) @@ -147,7 +149,9 @@ func TestQueryValidators(t *testing.T) { status := []types.BondStatus{types.Bonded, types.Unbonded, types.Unbonding} var validators [3]types.Validator for i, amt := range amts { - validators[i] = teststaking.NewValidator(t, sdk.ValAddress(addrs[i]), PKs[i]) + randomEthAddress, err := teststaking.RandomEthAddress() + require.NoError(t, err) + validators[i] = teststaking.NewValidator(t, sdk.ValAddress(addrs[i]), PKs[i], sdk.AccAddress(PKs[i].Address()), *randomEthAddress) validators[i], _ = validators[i].AddTokensFromDel(amt) validators[i] = validators[i].UpdateStatus(status[i]) } @@ -216,16 +220,20 @@ func TestQueryDelegation(t *testing.T) { pk1, pk2 := pubKeys[0], pubKeys[1] // Create Validators and Delegation - val1 := teststaking.NewValidator(t, addrVal1, pk1) + randomEthAddress1, err := teststaking.RandomEthAddress() + require.NoError(t, err) + val1 := teststaking.NewValidator(t, addrVal1, pk1, sdk.AccAddress(pk1.Address()), *randomEthAddress1) app.StakingKeeper.SetValidator(ctx, val1) app.StakingKeeper.SetValidatorByPowerIndex(ctx, val1) - val2 := teststaking.NewValidator(t, addrVal2, pk2) + randomEthAddress2, err := teststaking.RandomEthAddress() + require.NoError(t, err) + val2 := teststaking.NewValidator(t, addrVal2, pk2, sdk.AccAddress(pk2.Address()), *randomEthAddress2) app.StakingKeeper.SetValidator(ctx, val2) app.StakingKeeper.SetValidatorByPowerIndex(ctx, val2) delTokens := app.StakingKeeper.TokensFromConsensusPower(ctx, 20) - _, err := app.StakingKeeper.Delegate(ctx, addrAcc2, delTokens, types.Unbonded, val1, true) + _, err = app.StakingKeeper.Delegate(ctx, addrAcc2, delTokens, types.Unbonded, val1, true) require.NoError(t, err) // apply TM updates @@ -461,7 +469,9 @@ func TestQueryValidatorDelegations_Pagination(t *testing.T) { valAddress := sdk.ValAddress(addrs[0]) - val1 := teststaking.NewValidator(t, valAddress, pubKeys[0]) + randomEthAddress, err := teststaking.RandomEthAddress() + require.NoError(t, err) + val1 := teststaking.NewValidator(t, valAddress, pubKeys[0], sdk.AccAddress(pubKeys[0].Address()), *randomEthAddress) app.StakingKeeper.SetValidator(ctx, val1) app.StakingKeeper.SetValidatorByPowerIndex(ctx, val1) @@ -546,13 +556,17 @@ func TestQueryRedelegations(t *testing.T) { addrVal1, addrVal2 := sdk.ValAddress(addrAcc1), sdk.ValAddress(addrAcc2) // Create Validators and Delegation - val1 := teststaking.NewValidator(t, addrVal1, PKs[0]) - val2 := teststaking.NewValidator(t, addrVal2, PKs[1]) + randomEthAddress1, err := teststaking.RandomEthAddress() + require.NoError(t, err) + val1 := teststaking.NewValidator(t, addrVal1, PKs[0], sdk.AccAddress(PKs[0].Address()), *randomEthAddress1) + randomEthAddress2, err := teststaking.RandomEthAddress() + require.NoError(t, err) + val2 := teststaking.NewValidator(t, addrVal2, PKs[1], sdk.AccAddress(PKs[1].Address()), *randomEthAddress2) app.StakingKeeper.SetValidator(ctx, val1) app.StakingKeeper.SetValidator(ctx, val2) delAmount := app.StakingKeeper.TokensFromConsensusPower(ctx, 100) - _, err := app.StakingKeeper.Delegate(ctx, addrAcc2, delAmount, types.Unbonded, val1, true) + _, err = app.StakingKeeper.Delegate(ctx, addrAcc2, delAmount, types.Unbonded, val1, true) require.NoError(t, err) applyValidatorSetUpdates(t, ctx, app.StakingKeeper, -1) @@ -618,12 +632,14 @@ func TestQueryUnbondingDelegation(t *testing.T) { addrVal1 := sdk.ValAddress(addrAcc1) // Create Validators and Delegation - val1 := teststaking.NewValidator(t, addrVal1, PKs[0]) + randomEthAddress, err := teststaking.RandomEthAddress() + require.NoError(t, err) + val1 := teststaking.NewValidator(t, addrVal1, PKs[0], sdk.AccAddress(PKs[0].Address()), *randomEthAddress) app.StakingKeeper.SetValidator(ctx, val1) // delegate delAmount := app.StakingKeeper.TokensFromConsensusPower(ctx, 100) - _, err := app.StakingKeeper.Delegate(ctx, addrAcc1, delAmount, types.Unbonded, val1, true) + _, err = app.StakingKeeper.Delegate(ctx, addrAcc1, delAmount, types.Unbonded, val1, true) require.NoError(t, err) applyValidatorSetUpdates(t, ctx, app.StakingKeeper, -1) @@ -714,8 +730,12 @@ func TestQueryHistoricalInfo(t *testing.T) { addrVal1, addrVal2 := sdk.ValAddress(addrAcc1), sdk.ValAddress(addrAcc2) // Create Validators and Delegation - val1 := teststaking.NewValidator(t, addrVal1, PKs[0]) - val2 := teststaking.NewValidator(t, addrVal2, PKs[1]) + randomEthAddress1, err := teststaking.RandomEthAddress() + require.NoError(t, err) + val1 := teststaking.NewValidator(t, addrVal1, PKs[0], sdk.AccAddress(PKs[0].Address()), *randomEthAddress1) + randomEthAddress2, err := teststaking.RandomEthAddress() + require.NoError(t, err) + val2 := teststaking.NewValidator(t, addrVal2, PKs[1], sdk.AccAddress(PKs[1].Address()), *randomEthAddress2) vals := []types.Validator{val1, val2} app.StakingKeeper.SetValidator(ctx, val1) app.StakingKeeper.SetValidator(ctx, val2) diff --git a/x/staking/keeper/slash_test.go b/x/staking/keeper/slash_test.go index 64bdb0177d57..f99ea9000e41 100644 --- a/x/staking/keeper/slash_test.go +++ b/x/staking/keeper/slash_test.go @@ -38,7 +38,9 @@ func bootstrapSlashTest(t *testing.T, power int64) (*simapp.SimApp, sdk.Context, require.NoError(t, simapp.FundModuleAccount(app.BankKeeper, ctx, bondedPool.GetName(), bondedCoins)) for i := int64(0); i < numVals; i++ { - validator := teststaking.NewValidator(t, addrVals[i], PKs[i]) + randomEthAddress, err := teststaking.RandomEthAddress() + require.NoError(t, err) + validator := teststaking.NewValidator(t, addrVals[i], PKs[i], sdk.AccAddress(PKs[i].Address()), *randomEthAddress) validator, _ = validator.AddTokensFromDel(amt) validator = keeper.TestingUpdateValidator(app.StakingKeeper, ctx, validator, true) app.StakingKeeper.SetValidatorByConsAddr(ctx, validator) diff --git a/x/staking/keeper/validator_test.go b/x/staking/keeper/validator_test.go index 31da70eab6a8..406c725853d2 100644 --- a/x/staking/keeper/validator_test.go +++ b/x/staking/keeper/validator_test.go @@ -18,8 +18,8 @@ import ( "github.com/cosmos/cosmos-sdk/x/staking/types" ) -func newMonikerValidator(t testing.TB, operator sdk.ValAddress, pubKey cryptotypes.PubKey, moniker string) types.Validator { - v, err := types.NewValidator(operator, pubKey, types.Description{Moniker: moniker}) +func newMonikerValidator(t testing.TB, operator sdk.ValAddress, pubKey cryptotypes.PubKey, moniker string, orchAddr sdk.AccAddress, ethAddr types.EthAddress) types.Validator { + v, err := types.NewValidator(operator, pubKey, types.Description{Moniker: moniker}, orchAddr, ethAddr) require.NoError(t, err) return v } @@ -47,7 +47,9 @@ func initValidators(t testing.TB, power int64, numAddrs int, powers []int64) (*s vs := make([]types.Validator, len(powers)) for i, power := range powers { - vs[i] = teststaking.NewValidator(t, sdk.ValAddress(addrs[i]), pks[i]) + randomEthAddress, err := teststaking.RandomEthAddress() + require.NoError(t, err) + vs[i] = teststaking.NewValidator(t, sdk.ValAddress(addrs[i]), pks[i], sdk.AccAddress(pks[i].Address()), *randomEthAddress) tokens := app.StakingKeeper.TokensFromConsensusPower(ctx, power) vs[i], _ = vs[i].AddTokensFromDel(tokens) } @@ -62,7 +64,9 @@ func TestSetValidator(t *testing.T) { valTokens := app.StakingKeeper.TokensFromConsensusPower(ctx, 10) // test how the validator is set from a purely unbonbed pool - validator := teststaking.NewValidator(t, valAddr, valPubKey) + randomEthAddress, err := teststaking.RandomEthAddress() + require.NoError(t, err) + validator := teststaking.NewValidator(t, valAddr, valPubKey, sdk.AccAddress(valPubKey.Address()), *randomEthAddress) validator, _ = validator.AddTokensFromDel(valTokens) require.Equal(t, types.Unbonded, validator.Status) assert.Equal(t, valTokens, validator.Tokens) @@ -120,7 +124,9 @@ func TestUpdateValidatorByPowerIndex(t *testing.T) { app.AccountKeeper.SetModuleAccount(ctx, notBondedPool) // add a validator - validator := teststaking.NewValidator(t, addrVals[0], PKs[0]) + randomEthAddress, err := teststaking.RandomEthAddress() + require.NoError(t, err) + validator := teststaking.NewValidator(t, addrVals[0], PKs[0], sdk.AccAddress(PKs[0].Address()), *randomEthAddress) validator, delSharesCreated := validator.AddTokensFromDel(app.StakingKeeper.TokensFromConsensusPower(ctx, 100)) require.Equal(t, types.Unbonded, validator.Status) require.Equal(t, app.StakingKeeper.TokensFromConsensusPower(ctx, 100), validator.Tokens) @@ -171,7 +177,9 @@ func TestUpdateBondedValidatorsDecreaseCliff(t *testing.T) { validators := make([]types.Validator, numVals) for i := 0; i < len(validators); i++ { moniker := fmt.Sprintf("val#%d", int64(i)) - val := newMonikerValidator(t, valAddrs[i], PKs[i], moniker) + randomEthAddress, err := teststaking.RandomEthAddress() + require.NoError(t, err) + val := newMonikerValidator(t, valAddrs[i], PKs[i], moniker, sdk.AccAddress(PKs[0].Address()), *randomEthAddress) delTokens := app.StakingKeeper.TokensFromConsensusPower(ctx, int64((i+1)*10)) val, _ = val.AddTokensFromDel(delTokens) @@ -212,7 +220,9 @@ func TestSlashToZeroPowerRemoved(t *testing.T) { app, ctx, _, addrVals := bootstrapValidatorTest(t, 100, 20) // add a validator - validator := teststaking.NewValidator(t, addrVals[0], PKs[0]) + randomEthAddress, err := teststaking.RandomEthAddress() + require.NoError(t, err) + validator := teststaking.NewValidator(t, addrVals[0], PKs[0], sdk.AccAddress(PKs[0].Address()), *randomEthAddress) valTokens := app.StakingKeeper.TokensFromConsensusPower(ctx, 100) bondedPool := app.StakingKeeper.GetBondedPool(ctx) @@ -245,7 +255,9 @@ func TestValidatorBasics(t *testing.T) { var validators [3]types.Validator powers := []int64{9, 8, 7} for i, power := range powers { - validators[i] = teststaking.NewValidator(t, addrVals[i], PKs[i]) + randomEthAddress, err := teststaking.RandomEthAddress() + require.NoError(t, err) + validators[i] = teststaking.NewValidator(t, addrVals[i], PKs[i], sdk.AccAddress(PKs[i].Address()), *randomEthAddress) validators[i].Status = types.Unbonded validators[i].Tokens = sdk.ZeroInt() tokens := app.StakingKeeper.TokensFromConsensusPower(ctx, power) @@ -350,7 +362,9 @@ func TestGetValidatorSortingUnmixed(t *testing.T) { n := len(amts) var validators [5]types.Validator for i, amt := range amts { - validators[i] = teststaking.NewValidator(t, sdk.ValAddress(addrs[i]), PKs[i]) + randomEthAddress, err := teststaking.RandomEthAddress() + require.NoError(t, err) + validators[i] = teststaking.NewValidator(t, sdk.ValAddress(addrs[i]), PKs[i], sdk.AccAddress(PKs[i].Address()), *randomEthAddress) validators[i].Status = types.Bonded validators[i].Tokens = amt validators[i].DelegatorShares = sdk.NewDecFromInt(amt) @@ -443,7 +457,9 @@ func TestGetValidatorSortingMixed(t *testing.T) { var validators [5]types.Validator for i, amt := range amts { - validators[i] = teststaking.NewValidator(t, sdk.ValAddress(addrs[i]), PKs[i]) + randomEthAddress, err := teststaking.RandomEthAddress() + require.NoError(t, err) + validators[i] = teststaking.NewValidator(t, sdk.ValAddress(addrs[i]), PKs[i], sdk.AccAddress(PKs[i].Address()), *randomEthAddress) validators[i].DelegatorShares = sdk.NewDecFromInt(amt) validators[i].Status = types.Bonded validators[i].Tokens = amt @@ -490,8 +506,10 @@ func TestGetValidatorsEdgeCases(t *testing.T) { powers := []int64{0, 100, 400, 400} var validators [4]types.Validator for i, power := range powers { + randomEthAddress, err := teststaking.RandomEthAddress() + require.NoError(t, err) moniker := fmt.Sprintf("val#%d", int64(i)) - validators[i] = newMonikerValidator(t, sdk.ValAddress(addrs[i]), PKs[i], moniker) + validators[i] = newMonikerValidator(t, sdk.ValAddress(addrs[i]), PKs[i], moniker, sdk.AccAddress(PKs[i].Address()), *randomEthAddress) tokens := app.StakingKeeper.TokensFromConsensusPower(ctx, power) validators[i], _ = validators[i].AddTokensFromDel(tokens) @@ -597,11 +615,18 @@ func TestValidatorBondHeight(t *testing.T) { params.MaxValidators = 2 app.StakingKeeper.SetParams(ctx, params) + randomEthAddress1, err := teststaking.RandomEthAddress() + require.NoError(t, err) + randomEthAddress2, err := teststaking.RandomEthAddress() + require.NoError(t, err) + randomEthAddress3, err := teststaking.RandomEthAddress() + require.NoError(t, err) + // initialize some validators into the state var validators [3]types.Validator - validators[0] = teststaking.NewValidator(t, sdk.ValAddress(PKs[0].Address().Bytes()), PKs[0]) - validators[1] = teststaking.NewValidator(t, sdk.ValAddress(addrs[1]), PKs[1]) - validators[2] = teststaking.NewValidator(t, sdk.ValAddress(addrs[2]), PKs[2]) + validators[0] = teststaking.NewValidator(t, sdk.ValAddress(PKs[0].Address().Bytes()), PKs[0], sdk.AccAddress(PKs[0].Address()), *randomEthAddress1) + validators[1] = teststaking.NewValidator(t, sdk.ValAddress(addrs[1]), PKs[1], sdk.AccAddress(PKs[1].Address()), *randomEthAddress2) + validators[2] = teststaking.NewValidator(t, sdk.ValAddress(addrs[2]), PKs[2], sdk.AccAddress(PKs[2].Address()), *randomEthAddress3) tokens0 := app.StakingKeeper.TokensFromConsensusPower(ctx, 200) tokens1 := app.StakingKeeper.TokensFromConsensusPower(ctx, 100) @@ -647,7 +672,9 @@ func TestFullValidatorSetPowerChange(t *testing.T) { powers := []int64{0, 100, 400, 400, 200} var validators [5]types.Validator for i, power := range powers { - validators[i] = teststaking.NewValidator(t, sdk.ValAddress(addrs[i]), PKs[i]) + randomEthAddress, err := teststaking.RandomEthAddress() + require.NoError(t, err) + validators[i] = teststaking.NewValidator(t, sdk.ValAddress(addrs[i]), PKs[i], sdk.AccAddress(PKs[i].Address()), *randomEthAddress) tokens := app.StakingKeeper.TokensFromConsensusPower(ctx, power) validators[i], _ = validators[i].AddTokensFromDel(tokens) keeper.TestingUpdateValidator(app.StakingKeeper, ctx, validators[i], true) @@ -687,7 +714,10 @@ func TestApplyAndReturnValidatorSetUpdatesAllNone(t *testing.T) { valPubKey := PKs[i+1] valAddr := sdk.ValAddress(valPubKey.Address().Bytes()) - validators[i] = teststaking.NewValidator(t, valAddr, valPubKey) + randomEthAddress, err := teststaking.RandomEthAddress() + require.NoError(t, err) + + validators[i] = teststaking.NewValidator(t, valAddr, valPubKey, sdk.AccAddress(valPubKey.Address()), *randomEthAddress) tokens := app.StakingKeeper.TokensFromConsensusPower(ctx, power) validators[i], _ = validators[i].AddTokensFromDel(tokens) } @@ -713,7 +743,9 @@ func TestApplyAndReturnValidatorSetUpdatesIdentical(t *testing.T) { powers := []int64{10, 20} var validators [2]types.Validator for i, power := range powers { - validators[i] = teststaking.NewValidator(t, sdk.ValAddress(addrs[i]), PKs[i]) + randomEthAddress, err := teststaking.RandomEthAddress() + require.NoError(t, err) + validators[i] = teststaking.NewValidator(t, sdk.ValAddress(addrs[i]), PKs[i], sdk.AccAddress(PKs[i].Address()), *randomEthAddress) tokens := app.StakingKeeper.TokensFromConsensusPower(ctx, power) validators[i], _ = validators[i].AddTokensFromDel(tokens) @@ -736,7 +768,9 @@ func TestApplyAndReturnValidatorSetUpdatesSingleValueChange(t *testing.T) { powers := []int64{10, 20} var validators [2]types.Validator for i, power := range powers { - validators[i] = teststaking.NewValidator(t, sdk.ValAddress(addrs[i]), PKs[i]) + randomEthAddress, err := teststaking.RandomEthAddress() + require.NoError(t, err) + validators[i] = teststaking.NewValidator(t, sdk.ValAddress(addrs[i]), PKs[i], sdk.AccAddress(PKs[i].Address()), *randomEthAddress) tokens := app.StakingKeeper.TokensFromConsensusPower(ctx, power) validators[i], _ = validators[i].AddTokensFromDel(tokens) @@ -821,7 +855,9 @@ func TestApplyAndReturnValidatorSetUpdatesWithCliffValidator(t *testing.T) { powers := []int64{10, 20, 5} var validators [5]types.Validator for i, power := range powers { - validators[i] = teststaking.NewValidator(t, sdk.ValAddress(addrs[i]), PKs[i]) + randomEthAddress, err := teststaking.RandomEthAddress() + require.NoError(t, err) + validators[i] = teststaking.NewValidator(t, sdk.ValAddress(addrs[i]), PKs[i], sdk.AccAddress(PKs[i].Address()), *randomEthAddress) tokens := app.StakingKeeper.TokensFromConsensusPower(ctx, power) validators[i], _ = validators[i].AddTokensFromDel(tokens) } @@ -854,7 +890,9 @@ func TestApplyAndReturnValidatorSetUpdatesPowerDecrease(t *testing.T) { powers := []int64{100, 100} var validators [2]types.Validator for i, power := range powers { - validators[i] = teststaking.NewValidator(t, sdk.ValAddress(addrs[i]), PKs[i]) + randomEthAddress, err := teststaking.RandomEthAddress() + require.NoError(t, err) + validators[i] = teststaking.NewValidator(t, sdk.ValAddress(addrs[i]), PKs[i], sdk.AccAddress(PKs[i].Address()), *randomEthAddress) tokens := app.StakingKeeper.TokensFromConsensusPower(ctx, power) validators[i], _ = validators[i].AddTokensFromDel(tokens) } @@ -900,7 +938,9 @@ func TestApplyAndReturnValidatorSetUpdatesNewValidator(t *testing.T) { valPubKey := PKs[i+1] valAddr := sdk.ValAddress(valPubKey.Address().Bytes()) - validators[i] = teststaking.NewValidator(t, valAddr, valPubKey) + randomEthAddress, err := teststaking.RandomEthAddress() + require.NoError(t, err) + validators[i] = teststaking.NewValidator(t, valAddr, valPubKey, sdk.AccAddress(valPubKey.Address()), *randomEthAddress) tokens := app.StakingKeeper.TokensFromConsensusPower(ctx, power) validators[i], _ = validators[i].AddTokensFromDel(tokens) @@ -934,7 +974,9 @@ func TestApplyAndReturnValidatorSetUpdatesNewValidator(t *testing.T) { valAddr := sdk.ValAddress(valPubKey.Address().Bytes()) amt := sdk.NewInt(100) - validator := teststaking.NewValidator(t, valAddr, valPubKey) + randomEthAddress, err := teststaking.RandomEthAddress() + require.NoError(t, err) + validator := teststaking.NewValidator(t, valAddr, valPubKey, sdk.AccAddress(valPubKey.Address()), *randomEthAddress) validator, _ = validator.AddTokensFromDel(amt) app.StakingKeeper.SetValidator(ctx, validator) @@ -947,7 +989,9 @@ func TestApplyAndReturnValidatorSetUpdatesNewValidator(t *testing.T) { valPubKey = PKs[len(validators)+2] valAddr = sdk.ValAddress(valPubKey.Address().Bytes()) - validator = teststaking.NewValidator(t, valAddr, valPubKey) + randomEthAddress2, err := teststaking.RandomEthAddress() + require.NoError(t, err) + validator = teststaking.NewValidator(t, valAddr, valPubKey, sdk.AccAddress(valPubKey.Address()), *randomEthAddress2) tokens := app.StakingKeeper.TokensFromConsensusPower(ctx, 500) validator, _ = validator.AddTokensFromDel(tokens) app.StakingKeeper.SetValidator(ctx, validator) @@ -979,7 +1023,9 @@ func TestApplyAndReturnValidatorSetUpdatesBondTransition(t *testing.T) { valPubKey := PKs[i+1] valAddr := sdk.ValAddress(valPubKey.Address().Bytes()) - validators[i] = newMonikerValidator(t, valAddr, valPubKey, moniker) + randomEthAddress, err := teststaking.RandomEthAddress() + require.NoError(t, err) + validators[i] = newMonikerValidator(t, valAddr, valPubKey, moniker, sdk.AccAddress(valPubKey.Address()), *randomEthAddress) tokens := app.StakingKeeper.TokensFromConsensusPower(ctx, power) validators[i], _ = validators[i].AddTokensFromDel(tokens) app.StakingKeeper.SetValidator(ctx, validators[i]) @@ -1047,8 +1093,13 @@ func TestUpdateValidatorCommission(t *testing.T) { ) commission2 := types.NewCommission(sdk.NewDecWithPrec(1, 1), sdk.NewDecWithPrec(3, 1), sdk.NewDecWithPrec(1, 1)) - val1 := teststaking.NewValidator(t, addrVals[0], PKs[0]) - val2 := teststaking.NewValidator(t, addrVals[1], PKs[1]) + randomEthAddress1, err := teststaking.RandomEthAddress() + require.NoError(t, err) + randomEthAddress2, err := teststaking.RandomEthAddress() + require.NoError(t, err) + + val1 := teststaking.NewValidator(t, addrVals[0], PKs[0], sdk.AccAddress(PKs[0].Address()), *randomEthAddress1) + val2 := teststaking.NewValidator(t, addrVals[1], PKs[1], sdk.AccAddress(PKs[1].Address()), *randomEthAddress2) val1, _ = val1.SetInitialCommission(commission1) val2, _ = val2.SetInitialCommission(commission2) diff --git a/x/staking/legacy/v043/store_test.go b/x/staking/legacy/v043/store_test.go index 099691115489..d3e62835f8f3 100644 --- a/x/staking/legacy/v043/store_test.go +++ b/x/staking/legacy/v043/store_test.go @@ -24,7 +24,9 @@ func TestStoreMigration(t *testing.T) { _, pk1, addr1 := testdata.KeyTestPubAddr() valAddr1 := sdk.ValAddress(addr1) - val := teststaking.NewValidator(t, valAddr1, pk1) + randomEthAddress, err := teststaking.RandomEthAddress() + require.NoError(t, err) + val := teststaking.NewValidator(t, valAddr1, pk1, sdk.AccAddress(pk1.Address()), *randomEthAddress) _, pk1, addr2 := testdata.KeyTestPubAddr() valAddr2 := sdk.ValAddress(addr2) _, _, addr3 := testdata.KeyTestPubAddr() @@ -122,7 +124,7 @@ func TestStoreMigration(t *testing.T) { } // Run migrations. - err := v043staking.MigrateStore(ctx, stakingKey) + err = v043staking.MigrateStore(ctx, stakingKey) require.NoError(t, err) // Make sure the new keys are set and old keys are deleted. diff --git a/x/staking/simulation/decoder_test.go b/x/staking/simulation/decoder_test.go index 6584df24f508..8109039afd79 100644 --- a/x/staking/simulation/decoder_test.go +++ b/x/staking/simulation/decoder_test.go @@ -2,6 +2,7 @@ package simulation_test import ( "fmt" + "github.com/cosmos/cosmos-sdk/x/staking/teststaking" "testing" "time" @@ -36,7 +37,9 @@ func TestDecodeStore(t *testing.T) { dec := simulation.NewDecodeStore(cdc) bondTime := time.Now().UTC() - val, err := types.NewValidator(valAddr1, delPk1, types.NewDescription("test", "test", "test", "test", "test")) + randomEthAddress, err := teststaking.RandomEthAddress() + require.NoError(t, err) + val, err := types.NewValidator(valAddr1, delPk1, types.NewDescription("test", "test", "test", "test", "test"), sdk.AccAddress(delPk1.Address()), *randomEthAddress) require.NoError(t, err) del := types.NewDelegation(delAddr1, valAddr1, sdk.OneDec()) ubd := types.NewUnbondingDelegation(delAddr1, valAddr1, 15, bondTime, sdk.OneInt()) diff --git a/x/staking/simulation/operations_test.go b/x/staking/simulation/operations_test.go index da15fdd5e489..2d8ea3d42fdf 100644 --- a/x/staking/simulation/operations_test.go +++ b/x/staking/simulation/operations_test.go @@ -303,8 +303,10 @@ func getTestingValidator(t *testing.T, app *simapp.SimApp, ctx sdk.Context, acco account := accounts[n] valPubKey := account.PubKey valAddr := sdk.ValAddress(account.PubKey.Address().Bytes()) - validator := teststaking.NewValidator(t, valAddr, valPubKey) - validator, err := validator.SetInitialCommission(commission) + randomEthAddress, err := teststaking.RandomEthAddress() + require.NoError(t, err) + validator := teststaking.NewValidator(t, valAddr, valPubKey, sdk.AccAddress(valPubKey.Address()), *randomEthAddress) + validator, err = validator.SetInitialCommission(commission) require.NoError(t, err) validator.DelegatorShares = sdk.NewDec(100) diff --git a/x/staking/teststaking/helper.go b/x/staking/teststaking/helper.go index 25b021df07a1..1f6ce6316f06 100644 --- a/x/staking/teststaking/helper.go +++ b/x/staking/teststaking/helper.go @@ -49,13 +49,17 @@ func (sh *Helper) CreateValidatorWithValPower(addr sdk.ValAddress, pk cryptotype // CreateValidatorMsg returns a message used to create validator in this service. func (sh *Helper) CreateValidatorMsg(addr sdk.ValAddress, pk cryptotypes.PubKey, stakeAmount sdk.Int) *stakingtypes.MsgCreateValidator { coin := sdk.NewCoin(sh.Denom, stakeAmount) - msg, err := stakingtypes.NewMsgCreateValidator(addr, pk, coin, stakingtypes.Description{}, sh.Commission, sdk.OneInt()) + randomEthAddress, err := RandomEthAddress() + require.NoError(sh.t, err) + msg, err := stakingtypes.NewMsgCreateValidator(addr, pk, coin, stakingtypes.Description{}, sh.Commission, sdk.OneInt(), sdk.AccAddress(pk.Address()), *randomEthAddress) require.NoError(sh.t, err) return msg } func (sh *Helper) createValidator(addr sdk.ValAddress, pk cryptotypes.PubKey, coin sdk.Coin, ok bool) { - msg, err := stakingtypes.NewMsgCreateValidator(addr, pk, coin, stakingtypes.Description{}, sh.Commission, sdk.OneInt()) + randomEthAddress, err := RandomEthAddress() + require.NoError(sh.t, err) + msg, err := stakingtypes.NewMsgCreateValidator(addr, pk, coin, stakingtypes.Description{}, sh.Commission, sdk.OneInt(), sdk.AccAddress(pk.Address()), *randomEthAddress) require.NoError(sh.t, err) sh.Handle(msg, ok) } diff --git a/x/staking/teststaking/validator.go b/x/staking/teststaking/validator.go index 71459581f0e6..2b35d2cbcc30 100644 --- a/x/staking/teststaking/validator.go +++ b/x/staking/teststaking/validator.go @@ -1,6 +1,8 @@ package teststaking import ( + "crypto/ecdsa" + "github.com/ethereum/go-ethereum/crypto" "testing" "github.com/stretchr/testify/require" @@ -11,8 +13,23 @@ import ( ) // NewValidator is a testing helper method to create validators in tests -func NewValidator(t testing.TB, operator sdk.ValAddress, pubKey cryptotypes.PubKey) types.Validator { - v, err := types.NewValidator(operator, pubKey, types.Description{}) +func NewValidator(t testing.TB, operator sdk.ValAddress, pubKey cryptotypes.PubKey, orchAddr sdk.AccAddress, ethAddr types.EthAddress) types.Validator { + v, err := types.NewValidator(operator, pubKey, types.Description{}, orchAddr, ethAddr) require.NoError(t, err) return v } + +func RandomEthAddress() (*types.EthAddress, error) { + ethPrivateKey, err := crypto.GenerateKey() + if err != nil { + return nil, err + } + + orchEthPublicKey := ethPrivateKey.Public().(*ecdsa.PublicKey) + ethAddr, err := types.NewEthAddress(crypto.PubkeyToAddress(*orchEthPublicKey).Hex()) + if err != nil { + return nil, err + } + + return ethAddr, nil +} diff --git a/x/staking/types/historical_info_test.go b/x/staking/types/historical_info_test.go index 45305de91c56..62b6722051f9 100644 --- a/x/staking/types/historical_info_test.go +++ b/x/staking/types/historical_info_test.go @@ -1,6 +1,7 @@ package types_test import ( + "github.com/cosmos/cosmos-sdk/x/staking/teststaking" "math/rand" "sort" "testing" @@ -18,10 +19,16 @@ var header = tmproto.Header{ } func createValidators(t *testing.T) []types.Validator { + randomEthAddress1, err := teststaking.RandomEthAddress() + require.NoError(t, err) + randomEthAddress2, err := teststaking.RandomEthAddress() + require.NoError(t, err) + randomEthAddress3, err := teststaking.RandomEthAddress() + require.NoError(t, err) return []types.Validator{ - newValidator(t, valAddr1, pk1), - newValidator(t, valAddr2, pk2), - newValidator(t, valAddr3, pk3), + newValidator(t, valAddr1, pk1, sdk.AccAddress(pk1.Address()), *randomEthAddress1), + newValidator(t, valAddr2, pk2, sdk.AccAddress(pk2.Address()), *randomEthAddress2), + newValidator(t, valAddr3, pk3, sdk.AccAddress(pk3.Address()), *randomEthAddress3), } } diff --git a/x/staking/types/keys_test.go b/x/staking/types/keys_test.go index 35667f949da5..f121a88ae4a7 100644 --- a/x/staking/types/keys_test.go +++ b/x/staking/types/keys_test.go @@ -3,6 +3,7 @@ package types_test import ( "bytes" "encoding/hex" + "github.com/cosmos/cosmos-sdk/x/staking/teststaking" "math/big" "testing" "time" @@ -25,7 +26,11 @@ var ( func TestGetValidatorPowerRank(t *testing.T) { valAddr1 := sdk.ValAddress(keysAddr1) - val1 := newValidator(t, valAddr1, keysPK1) + + randomEthAddress, err := teststaking.RandomEthAddress() + require.NoError(t, err) + + val1 := newValidator(t, valAddr1, keysPK1, sdk.AccAddress(keysPK1.Address()), *randomEthAddress) val1.Tokens = sdk.ZeroInt() val2, val3, val4 := val1, val1, val1 val2.Tokens = sdk.TokensFromConsensusPower(1, sdk.DefaultPowerReduction) diff --git a/x/staking/types/msg_test.go b/x/staking/types/msg_test.go index f1ba552d9115..bd648a905f11 100644 --- a/x/staking/types/msg_test.go +++ b/x/staking/types/msg_test.go @@ -1,6 +1,7 @@ package types_test import ( + "github.com/cosmos/cosmos-sdk/x/staking/teststaking" "testing" "github.com/stretchr/testify/require" @@ -34,10 +35,13 @@ func TestMsgDecode(t *testing.T) { require.NoError(t, err) require.True(t, pk1.Equals(pkUnmarshaled.(*ed25519.PubKey))) + randomEthAddress, err := teststaking.RandomEthAddress() + require.NoError(t, err) + // now let's try to serialize the whole message commission1 := types.NewCommissionRates(sdk.ZeroDec(), sdk.ZeroDec(), sdk.ZeroDec()) - msg, err := types.NewMsgCreateValidator(valAddr1, pk1, coinPos, types.Description{}, commission1, sdk.OneInt()) + msg, err := types.NewMsgCreateValidator(valAddr1, pk1, coinPos, types.Description{}, commission1, sdk.OneInt(), sdk.AccAddress(pk1.Address()), *randomEthAddress) require.NoError(t, err) msgSerialized, err := cdc.MarshalInterface(msg) require.NoError(t, err) @@ -79,7 +83,9 @@ func TestMsgCreateValidator(t *testing.T) { for _, tc := range tests { description := types.NewDescription(tc.moniker, tc.identity, tc.website, tc.securityContact, tc.details) - msg, err := types.NewMsgCreateValidator(tc.validatorAddr, tc.pubkey, tc.bond, description, tc.CommissionRates, tc.minSelfDelegation) + randomEthAddress, err := teststaking.RandomEthAddress() + require.NoError(t, err) + msg, err := types.NewMsgCreateValidator(tc.validatorAddr, tc.pubkey, tc.bond, description, tc.CommissionRates, tc.minSelfDelegation, sdk.AccAddress(tc.pubkey.Address()), *randomEthAddress) require.NoError(t, err) if tc.expectPass { require.Nil(t, msg.ValidateBasic(), "test: %v", tc.name) @@ -107,8 +113,7 @@ func TestMsgEditValidator(t *testing.T) { for _, tc := range tests { description := types.NewDescription(tc.moniker, tc.identity, tc.website, tc.securityContact, tc.details) newRate := sdk.ZeroDec() - - msg := types.NewMsgEditValidator(tc.validatorAddr, description, &newRate, &tc.minSelfDelegation) + msg := types.NewMsgEditValidator(tc.validatorAddr, description, &newRate, &tc.minSelfDelegation, nil, nil) if tc.expectPass { require.Nil(t, msg.ValidateBasic(), "test: %v", tc.name) } else { diff --git a/x/staking/types/validator_test.go b/x/staking/types/validator_test.go index 8601fbeec723..c1a4e45da97f 100644 --- a/x/staking/types/validator_test.go +++ b/x/staking/types/validator_test.go @@ -19,11 +19,15 @@ import ( ) func TestValidatorTestEquivalent(t *testing.T) { - val1 := newValidator(t, valAddr1, pk1) - val2 := newValidator(t, valAddr1, pk1) + randomEthAddress1, err := teststaking.RandomEthAddress() + require.NoError(t, err) + val1 := newValidator(t, valAddr1, pk1, sdk.AccAddress(pk1.Address()), *randomEthAddress1) + val2 := newValidator(t, valAddr1, pk1, sdk.AccAddress(pk1.Address()), *randomEthAddress1) require.Equal(t, val1.String(), val2.String()) - val2 = newValidator(t, valAddr2, pk2) + randomEthAddress2, err := teststaking.RandomEthAddress() + require.NoError(t, err) + val2 = newValidator(t, valAddr2, pk2, sdk.AccAddress(pk2.Address()), *randomEthAddress2) require.NotEqual(t, val1.String(), val2.String()) } @@ -57,7 +61,9 @@ func TestUpdateDescription(t *testing.T) { } func TestABCIValidatorUpdate(t *testing.T) { - validator := newValidator(t, valAddr1, pk1) + randomEthAddress, err := teststaking.RandomEthAddress() + require.NoError(t, err) + validator := newValidator(t, valAddr1, pk1, sdk.AccAddress(pk1.Address()), *randomEthAddress) abciVal := validator.ABCIValidatorUpdate(sdk.DefaultPowerReduction) pk, err := validator.TmConsPublicKey() require.NoError(t, err) @@ -66,7 +72,9 @@ func TestABCIValidatorUpdate(t *testing.T) { } func TestABCIValidatorUpdateZero(t *testing.T) { - validator := newValidator(t, valAddr1, pk1) + randomEthAddress, err := teststaking.RandomEthAddress() + require.NoError(t, err) + validator := newValidator(t, valAddr1, pk1, sdk.AccAddress(pk1.Address()), *randomEthAddress) abciVal := validator.ABCIValidatorUpdateZero() pk, err := validator.TmConsPublicKey() require.NoError(t, err) @@ -100,7 +108,9 @@ func TestRemoveTokens(t *testing.T) { } func TestAddTokensValidatorBonded(t *testing.T) { - validator := newValidator(t, valAddr1, pk1) + randomEthAddress, err := teststaking.RandomEthAddress() + require.NoError(t, err) + validator := newValidator(t, valAddr1, pk1, sdk.AccAddress(pk1.Address()), *randomEthAddress) validator = validator.UpdateStatus(types.Bonded) validator, delShares := validator.AddTokensFromDel(sdk.NewInt(10)) @@ -110,7 +120,9 @@ func TestAddTokensValidatorBonded(t *testing.T) { } func TestAddTokensValidatorUnbonding(t *testing.T) { - validator := newValidator(t, valAddr1, pk1) + randomEthAddress, err := teststaking.RandomEthAddress() + require.NoError(t, err) + validator := newValidator(t, valAddr1, pk1, sdk.AccAddress(pk1.Address()), *randomEthAddress) validator = validator.UpdateStatus(types.Unbonding) validator, delShares := validator.AddTokensFromDel(sdk.NewInt(10)) @@ -121,8 +133,9 @@ func TestAddTokensValidatorUnbonding(t *testing.T) { } func TestAddTokensValidatorUnbonded(t *testing.T) { - - validator := newValidator(t, valAddr1, pk1) + randomEthAddress, err := teststaking.RandomEthAddress() + require.NoError(t, err) + validator := newValidator(t, valAddr1, pk1, sdk.AccAddress(pk1.Address()), *randomEthAddress) validator = validator.UpdateStatus(types.Unbonded) validator, delShares := validator.AddTokensFromDel(sdk.NewInt(10)) @@ -156,7 +169,9 @@ func TestRemoveDelShares(t *testing.T) { } func TestAddTokensFromDel(t *testing.T) { - validator := newValidator(t, valAddr1, pk1) + randomEthAddress, err := teststaking.RandomEthAddress() + require.NoError(t, err) + validator := newValidator(t, valAddr1, pk1, sdk.AccAddress(pk1.Address()), *randomEthAddress) validator, shares := validator.AddTokensFromDel(sdk.NewInt(6)) require.True(sdk.DecEq(t, sdk.NewDec(6), shares)) @@ -170,7 +185,9 @@ func TestAddTokensFromDel(t *testing.T) { } func TestUpdateStatus(t *testing.T) { - validator := newValidator(t, valAddr1, pk1) + randomEthAddress, err := teststaking.RandomEthAddress() + require.NoError(t, err) + validator := newValidator(t, valAddr1, pk1, sdk.AccAddress(pk1.Address()), *randomEthAddress) validator, _ = validator.AddTokensFromDel(sdk.NewInt(100)) require.Equal(t, types.Unbonded, validator.Status) require.Equal(t, int64(100), validator.Tokens.Int64()) @@ -198,7 +215,9 @@ func TestPossibleOverflow(t *testing.T) { } func TestValidatorMarshalUnmarshalJSON(t *testing.T) { - validator := newValidator(t, valAddr1, pk1) + randomEthAddress, err := teststaking.RandomEthAddress() + require.NoError(t, err) + validator := newValidator(t, valAddr1, pk1, sdk.AccAddress(pk1.Address()), *randomEthAddress) js, err := legacy.Cdc.MarshalJSON(validator) require.NoError(t, err) require.NotEmpty(t, js) @@ -210,7 +229,9 @@ func TestValidatorMarshalUnmarshalJSON(t *testing.T) { } func TestValidatorSetInitialCommission(t *testing.T) { - val := newValidator(t, valAddr1, pk1) + randomEthAddress, err := teststaking.RandomEthAddress() + require.NoError(t, err) + val := newValidator(t, valAddr1, pk1, sdk.AccAddress(pk1.Address()), *randomEthAddress) testCases := []struct { validator types.Validator commission types.Commission @@ -251,7 +272,9 @@ func TestValidatorsSortDeterminism(t *testing.T) { // Create random validator slice for i := range vals { pk := ed25519.GenPrivKey().PubKey() - vals[i] = newValidator(t, sdk.ValAddress(pk.Address()), pk) + randomEthAddress, err := teststaking.RandomEthAddress() + require.NoError(t, err) + vals[i] = newValidator(t, sdk.ValAddress(pk.Address()), pk, sdk.AccAddress(pk.Address()), *randomEthAddress) } // Save sorted copy @@ -278,7 +301,9 @@ func TestValidatorsSortTendermint(t *testing.T) { for i := range vals { pk := ed25519.GenPrivKey().PubKey() pk2 := ed25519.GenPrivKey().PubKey() - vals[i] = newValidator(t, sdk.ValAddress(pk2.Address()), pk) + randomEthAddress, err := teststaking.RandomEthAddress() + require.NoError(t, err) + vals[i] = newValidator(t, sdk.ValAddress(pk2.Address()), pk, sdk.AccAddress(pk.Address()), *randomEthAddress) vals[i].Status = types.Bonded vals[i].Tokens = sdk.NewInt(rand.Int63()) } @@ -310,7 +335,9 @@ func TestValidatorToTm(t *testing.T) { for i := range vals { pk := ed25519.GenPrivKey().PubKey() - val := newValidator(t, sdk.ValAddress(pk.Address()), pk) + randomEthAddress, err := teststaking.RandomEthAddress() + require.NoError(t, err) + val := newValidator(t, sdk.ValAddress(pk.Address()), pk, sdk.AccAddress(pk.Address()), *randomEthAddress) val.Status = types.Bonded val.Tokens = sdk.NewInt(rand.Int63()) vals[i] = val @@ -345,8 +372,8 @@ func mkValidator(tokens int64, shares sdk.Dec) types.Validator { } // Creates a new validators and asserts the error check. -func newValidator(t *testing.T, operator sdk.ValAddress, pubKey cryptotypes.PubKey) types.Validator { - v, err := types.NewValidator(operator, pubKey, types.Description{}) +func newValidator(t *testing.T, operator sdk.ValAddress, pubKey cryptotypes.PubKey, orchAddr sdk.AccAddress, ethAddr types.EthAddress) types.Validator { + v, err := types.NewValidator(operator, pubKey, types.Description{}, orchAddr, ethAddr) require.NoError(t, err) return v } From 49fadc4febf4bc41cdb030af7048f98edde23173 Mon Sep 17 00:00:00 2001 From: rachid Date: Wed, 4 May 2022 23:31:36 +0200 Subject: [PATCH 2/9] fixes the rest of unit tests --- client/flags/flags.go | 5 +++++ testutil/network/network.go | 33 ++++++++++++++++-------------- x/genutil/client/cli/gentx.go | 18 +++++++++++++--- x/genutil/client/testutil/suite.go | 7 ++++++- x/staking/app_test.go | 12 ++++++----- x/staking/client/cli/flags.go | 8 +++----- x/staking/client/cli/tx.go | 16 +++++++-------- x/staking/client/cli/tx_test.go | 14 ++++++------- x/staking/client/testutil/suite.go | 7 +++---- x/staking/common_test.go | 3 --- x/staking/simulation/operations.go | 3 +-- x/staking/types/msg_test.go | 2 +- 12 files changed, 74 insertions(+), 54 deletions(-) diff --git a/client/flags/flags.go b/client/flags/flags.go index 1c0e1585c0ff..77a3f4ac9028 100644 --- a/client/flags/flags.go +++ b/client/flags/flags.go @@ -76,6 +76,11 @@ const ( // Tendermint logging flags FlagLogLevel = "log_level" FlagLogFormat = "log_format" + + // QGB related flags + // FIXME: can we have these + FlagOrchestratorAddress = "orchestrator-address" + FlagEthereumAddress = "ethereum-address" ) // LineBreak can be included in a command list to provide a blank line diff --git a/testutil/network/network.go b/testutil/network/network.go index 570015f6e1f8..8646287ea867 100644 --- a/testutil/network/network.go +++ b/testutil/network/network.go @@ -166,7 +166,9 @@ type ( grpcWeb *http.Server EthPrivateKey *ecdsa.PrivateKey - EthAddr *stakingtypes.EthAddress + EthereumAddr *stakingtypes.EthAddress + + OrchestratorAddr sdk.AccAddress } ) @@ -365,20 +367,21 @@ func New(t *testing.T, cfg Config) *Network { WithAccountRetriever(cfg.AccountRetriever) network.Validators[i] = &Validator{ - AppConfig: appCfg, - ClientCtx: clientCtx, - Ctx: ctx, - Dir: filepath.Join(network.BaseDir, nodeDirName), - NodeID: nodeID, - PubKey: pubKey, - Moniker: nodeDirName, - RPCAddress: tmCfg.RPC.ListenAddress, - P2PAddress: tmCfg.P2P.ListenAddress, - APIAddress: apiAddr, - Address: addr, - ValAddress: sdk.ValAddress(addr), - EthPrivateKey: ethPrivateKey, - EthAddr: ethAddr, + AppConfig: appCfg, + ClientCtx: clientCtx, + Ctx: ctx, + Dir: filepath.Join(network.BaseDir, nodeDirName), + NodeID: nodeID, + PubKey: pubKey, + Moniker: nodeDirName, + RPCAddress: tmCfg.RPC.ListenAddress, + P2PAddress: tmCfg.P2P.ListenAddress, + APIAddress: apiAddr, + Address: addr, + ValAddress: sdk.ValAddress(addr), + EthPrivateKey: ethPrivateKey, + EthereumAddr: ethAddr, + OrchestratorAddr: addr, } } diff --git a/x/genutil/client/cli/gentx.go b/x/genutil/client/cli/gentx.go index 5d05c3c513b2..83e05fd77d88 100644 --- a/x/genutil/client/cli/gentx.go +++ b/x/genutil/client/cli/gentx.go @@ -52,7 +52,9 @@ $ %s gentx my-key-name 1000000stake --home=/path/to/home/dir --keyring-backend=o --commission-rate=0.07 \ --details="..." \ --security-contact="..." \ - --website="..." + --website="..." \ + --orchestrator-address="..." \ + --ethereum-address="..." `, defaultsDesc, version.AppName, ), RunE: func(cmd *cobra.Command, args []string) error { @@ -110,12 +112,22 @@ $ %s gentx my-key-name 1000000stake --home=/path/to/home/dir --keyring-backend=o moniker = m } + orchestratorAddress, err := cmd.Flags().GetString(flags.FlagOrchestratorAddress) + if err != nil { + return errors.Wrapf(err, "failed to get the orchestrator address") + } + + ethereumAddress, err := cmd.Flags().GetString(flags.FlagEthereumAddress) + if err != nil { + return errors.Wrapf(err, "failed to get the ethereum address") + } + // set flags for creating a gentx createValCfg, err := cli.PrepareConfigForTxCreateValidator( cmd.Flags(), moniker, nodeID, genDoc.ChainID, - valPubKey, cli.FlagOrchestratorAddress, - cli.FlagEthereumAddress, + valPubKey, orchestratorAddress, + ethereumAddress, ) if err != nil { return errors.Wrap(err, "error creating configuration to create validator msg") diff --git a/x/genutil/client/testutil/suite.go b/x/genutil/client/testutil/suite.go index 70a9515b940a..49ce4dd39383 100644 --- a/x/genutil/client/testutil/suite.go +++ b/x/genutil/client/testutil/suite.go @@ -47,7 +47,6 @@ func (s *IntegrationTestSuite) TearDownSuite() { } func (s *IntegrationTestSuite) TestGenTxCmd() { - // todo fix val := s.network.Validators[0] dir := s.T().TempDir() @@ -68,6 +67,8 @@ func (s *IntegrationTestSuite) TestGenTxCmd() { fmt.Sprintf("--%s=%s", flags.FlagOutputDocument, genTxFile), val.Moniker, amount.String(), + fmt.Sprintf("--%s=%s", flags.FlagEthereumAddress, val.EthereumAddr.GetAddress()), + fmt.Sprintf("--%s=%s", flags.FlagOrchestratorAddress, val.OrchestratorAddr.String()), }) err := cmd.ExecuteContext(ctx) @@ -119,6 +120,8 @@ func (s *IntegrationTestSuite) TestGenTxCmdPubkey() { fmt.Sprintf("--%s={\"key\":\"BOIkjkFruMpfOFC9oNPhiJGfmY2pHF/gwHdLDLnrnS0=\"}", stakingcli.FlagPubKey), val.Moniker, amount.String(), + fmt.Sprintf("--%s=%s", flags.FlagEthereumAddress, val.EthereumAddr.GetAddress()), + fmt.Sprintf("--%s=%s", flags.FlagOrchestratorAddress, val.OrchestratorAddr.String()), }) s.Require().Error(cmd.ExecuteContext(ctx)) @@ -128,6 +131,8 @@ func (s *IntegrationTestSuite) TestGenTxCmdPubkey() { fmt.Sprintf("--%s={\"@type\":\"/cosmos.crypto.ed25519.PubKey\",\"key\":\"BOIkjkFruMpfOFC9oNPhiJGfmY2pHF/gwHdLDLnrnS0=\"}", stakingcli.FlagPubKey), val.Moniker, amount.String(), + fmt.Sprintf("--%s=%s", flags.FlagEthereumAddress, val.EthereumAddr.GetAddress()), + fmt.Sprintf("--%s=%s", flags.FlagOrchestratorAddress, val.OrchestratorAddr.String()), }) s.Require().NoError(cmd.ExecuteContext(ctx)) } diff --git a/x/staking/app_test.go b/x/staking/app_test.go index e324adcef368..70a4748a1bf9 100644 --- a/x/staking/app_test.go +++ b/x/staking/app_test.go @@ -1,6 +1,9 @@ package staking_test import ( + "crypto/ecdsa" + "github.com/cosmos/cosmos-sdk/x/staking/types" + "github.com/ethereum/go-ethereum/crypto" "testing" "github.com/stretchr/testify/require" @@ -11,7 +14,6 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - "github.com/cosmos/cosmos-sdk/x/staking/types" ) func checkValidator(t *testing.T, app *simapp.SimApp, addr sdk.ValAddress, expFound bool) types.Validator { @@ -63,16 +65,16 @@ func TestStakingMsgs(t *testing.T) { simapp.CheckBalance(t, app, addr1, sdk.Coins{genCoin}) simapp.CheckBalance(t, app, addr2, sdk.Coins{genCoin}) - orchAddr, err := sdk.AccAddressFromBech32(testOrchAddr) + ethPrivateKey, err := crypto.GenerateKey() require.NoError(t, err) - - evmAddr, err := types.NewEthAddress(testEthAddr) + orchEthPublicKey := ethPrivateKey.Public().(*ecdsa.PublicKey) + evmAddr, err := types.NewEthAddress(crypto.PubkeyToAddress(*orchEthPublicKey).Hex()) require.NoError(t, err) // create validator description := types.NewDescription("foo_moniker", "", "", "", "") createValidatorMsg, err := types.NewMsgCreateValidator( - sdk.ValAddress(addr1), valKey.PubKey(), bondCoin, description, commissionRates, sdk.OneInt(), orchAddr, *evmAddr, + sdk.ValAddress(addr1), valKey.PubKey(), bondCoin, description, commissionRates, sdk.OneInt(), sdk.AccAddress(valKey.PubKey().Address()), *evmAddr, ) require.NoError(t, err) diff --git a/x/staking/client/cli/flags.go b/x/staking/client/cli/flags.go index 8f0f7b1405f5..8a4e190dbedd 100644 --- a/x/staking/client/cli/flags.go +++ b/x/staking/client/cli/flags.go @@ -1,6 +1,7 @@ package cli import ( + "github.com/cosmos/cosmos-sdk/client/flags" flag "github.com/spf13/pflag" "github.com/cosmos/cosmos-sdk/x/staking/types" @@ -30,9 +31,6 @@ const ( FlagGenesisFormat = "genesis-format" FlagNodeID = "node-id" FlagIP = "ip" - - FlagOrchestratorAddress = "orchestrator-address" - FlagEthereumAddress = "ethereum-address" ) // common flagsets to add to various functions @@ -85,14 +83,14 @@ func FlagSetPublicKey() *flag.FlagSet { // FlagSetOrchestratorAddress Returns the flagset for Orchestrator address related operations. func FlagSetOrchestratorAddress() *flag.FlagSet { fs := flag.NewFlagSet("", flag.ContinueOnError) - fs.String(FlagOrchestratorAddress, "", "The Bech32 celes1 address of the orchestrator") + fs.String(flags.FlagOrchestratorAddress, "", "The Bech32 cosmos1 address of the orchestrator") return fs } // FlagSetEthereumAddress Returns the flagset for Ethereum address related operations. func FlagSetEthereumAddress() *flag.FlagSet { fs := flag.NewFlagSet("", flag.ContinueOnError) - fs.String(FlagEthereumAddress, "", "The 0x EVM address of the orchestrator") + fs.String(flags.FlagEthereumAddress, "", "The 0x EVM address of the orchestrator") return fs } diff --git a/x/staking/client/cli/tx.go b/x/staking/client/cli/tx.go index 8091026ea5c3..9d8fca3232fc 100644 --- a/x/staking/client/cli/tx.go +++ b/x/staking/client/cli/tx.go @@ -86,8 +86,8 @@ func NewCreateValidatorCmd() *cobra.Command { _ = cmd.MarkFlagRequired(FlagAmount) _ = cmd.MarkFlagRequired(FlagPubKey) _ = cmd.MarkFlagRequired(FlagMoniker) - _ = cmd.MarkFlagRequired(FlagEthereumAddress) - _ = cmd.MarkFlagRequired(FlagOrchestratorAddress) + _ = cmd.MarkFlagRequired(flags.FlagEthereumAddress) + _ = cmd.MarkFlagRequired(flags.FlagOrchestratorAddress) return cmd } @@ -133,8 +133,8 @@ func NewEditValidatorCmd() *cobra.Command { newMinSelfDelegation = &msb } - orchAddrString, _ := cmd.Flags().GetString(FlagOrchestratorAddress) - evmAddrString, _ := cmd.Flags().GetString(FlagEthereumAddress) + orchAddrString, _ := cmd.Flags().GetString(flags.FlagOrchestratorAddress) + evmAddrString, _ := cmd.Flags().GetString(flags.FlagEthereumAddress) var orchAddr *sdk.AccAddress if orchAddrString != "" { @@ -354,8 +354,8 @@ func newBuildCreateValidatorMsg(clientCtx client.Context, txf tx.Factory, fs *fl return txf, nil, sdkerrors.Wrap(sdkerrors.ErrInvalidRequest, "minimum self delegation must be a positive integer") } - orchAddrString, _ := fs.GetString(FlagOrchestratorAddress) - evmAddrString, _ := fs.GetString(FlagEthereumAddress) + orchAddrString, _ := fs.GetString(flags.FlagOrchestratorAddress) + evmAddrString, _ := fs.GetString(flags.FlagEthereumAddress) orchAddr, err := sdk.AccAddressFromBech32(orchAddrString) if err != nil { @@ -539,12 +539,12 @@ func PrepareConfigForTxCreateValidator(flagSet *flag.FlagSet, moniker, nodeID, c c.MinSelfDelegation = defaultMinSelfDelegation } - c.EthereumAddress, err = flagSet.GetString(FlagEthereumAddress) + c.EthereumAddress, err = flagSet.GetString(flags.FlagEthereumAddress) if err != nil { return c, err } - c.OrchestratorAddress, err = flagSet.GetString(FlagOrchestratorAddress) + c.OrchestratorAddress, err = flagSet.GetString(flags.FlagOrchestratorAddress) if err != nil { return c, err } diff --git a/x/staking/client/cli/tx_test.go b/x/staking/client/cli/tx_test.go index b3803c2a1aeb..dd17af6f8cac 100644 --- a/x/staking/client/cli/tx_test.go +++ b/x/staking/client/cli/tx_test.go @@ -17,7 +17,7 @@ func TestPrepareConfigForTxCreateValidator(t *testing.T) { privKey := ed25519.GenPrivKey() valPubKey := privKey.PubKey() moniker := "DefaultMoniker" - testOrchAddr := "celes1qktu8009djs6uym9uwj84ead24exkezsaqrmn5" + testOrchAddr := "cosmos1qktu8009djs6uym9uwj84ead24exkezsaqrmn5" testEthAddr := "0x91DEd26b5f38B065FC0204c7929Da6b2A21277Cd" mkTxValCfg := func(amount, commission, commissionMax, commissionMaxChange, minSelfDelegation string, orchAddr string, ethAddr string) TxCreateValidatorConfig { return TxCreateValidatorConfig{ @@ -46,38 +46,38 @@ func TestPrepareConfigForTxCreateValidator(t *testing.T) { fsModify: func(fs *pflag.FlagSet) { return }, - expectedCfg: mkTxValCfg(defaultAmount, "0.1", "0.2", "0.01", "1", testOrchAddr, testEthAddr), + expectedCfg: mkTxValCfg(defaultAmount, "0.1", "0.2", "0.01", "1", "", ""), }, { name: "Custom amount", fsModify: func(fs *pflag.FlagSet) { fs.Set(FlagAmount, "2000stake") }, - expectedCfg: mkTxValCfg("2000stake", "0.1", "0.2", "0.01", "1", testOrchAddr, testEthAddr), + expectedCfg: mkTxValCfg("2000stake", "0.1", "0.2", "0.01", "1", "", ""), }, { name: "Custom commission rate", fsModify: func(fs *pflag.FlagSet) { fs.Set(FlagCommissionRate, "0.54") }, - expectedCfg: mkTxValCfg(defaultAmount, "0.54", "0.2", "0.01", "1", testOrchAddr, testEthAddr), + expectedCfg: mkTxValCfg(defaultAmount, "0.54", "0.2", "0.01", "1", "", ""), }, { name: "Custom commission max rate", fsModify: func(fs *pflag.FlagSet) { fs.Set(FlagCommissionMaxRate, "0.89") }, - expectedCfg: mkTxValCfg(defaultAmount, "0.1", "0.89", "0.01", "1", testOrchAddr, testEthAddr), + expectedCfg: mkTxValCfg(defaultAmount, "0.1", "0.89", "0.01", "1", "", ""), }, { name: "Custom commission max change rate", fsModify: func(fs *pflag.FlagSet) { fs.Set(FlagCommissionMaxChangeRate, "0.55") }, - expectedCfg: mkTxValCfg(defaultAmount, "0.1", "0.2", "0.55", "1", testOrchAddr, testEthAddr), + expectedCfg: mkTxValCfg(defaultAmount, "0.1", "0.2", "0.55", "1", "", ""), }, { name: "Custom min self delegations", fsModify: func(fs *pflag.FlagSet) { fs.Set(FlagMinSelfDelegation, "0.33") }, - expectedCfg: mkTxValCfg(defaultAmount, "0.1", "0.2", "0.01", "0.33", testOrchAddr, testEthAddr), + expectedCfg: mkTxValCfg(defaultAmount, "0.1", "0.2", "0.01", "0.33", "", ""), }, } diff --git a/x/staking/client/testutil/suite.go b/x/staking/client/testutil/suite.go index 5ba4abf1c143..33e1cf9d3ac4 100644 --- a/x/staking/client/testutil/suite.go +++ b/x/staking/client/testutil/suite.go @@ -62,7 +62,7 @@ func (s *IntegrationTestSuite) SetupSuite() { val.ValAddress, val2.ValAddress, unbond, - fmt.Sprintf("--%s=%d", flags.FlagGas, 202954), // 202954 is the required + fmt.Sprintf("--%s=%d", flags.FlagGas, 306313), // 306313 is the required ) s.Require().NoError(err) _, err = s.network.WaitForHeight(1) @@ -187,8 +187,8 @@ func (s *IntegrationTestSuite) TestNewCreateValidatorCmd() { fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), - fmt.Sprintf("--%s=%s", cli.FlagEthereumAddress, randomEthAddress.GetAddress()), - fmt.Sprintf("--%s=%s", cli.FlagOrchestratorAddress, newAddr.String()), + fmt.Sprintf("--%s=%s", flags.FlagEthereumAddress, randomEthAddress.GetAddress()), + fmt.Sprintf("--%s=%s", flags.FlagOrchestratorAddress, newAddr.String()), }, false, 0, &sdk.TxResponse{}, }, @@ -318,7 +318,6 @@ func (s *IntegrationTestSuite) TestGetCmdQueryDelegation() { respType proto.Message expected proto.Message }{ - // todo fix this one also { "with wrong delegator address", []string{ diff --git a/x/staking/common_test.go b/x/staking/common_test.go index 26b236cbbcbf..5d8897b1c0a8 100644 --- a/x/staking/common_test.go +++ b/x/staking/common_test.go @@ -31,9 +31,6 @@ var ( commissionRates = types.NewCommissionRates(sdk.ZeroDec(), sdk.ZeroDec(), sdk.ZeroDec()) PKs = simapp.CreateTestPubKeys(500) - - testOrchAddr = "celes1qktu8009djs6uym9uwj84ead24exkezsaqrmn5" - testEthAddr = "0x91DEd26b5f38B065FC0204c7929Da6b2A21277Cd" ) // getBaseSimappWithCustomKeeper Returns a simapp with custom StakingKeeper diff --git a/x/staking/simulation/operations.go b/x/staking/simulation/operations.go index dbcf312e6165..d1f0808bc9ba 100644 --- a/x/staking/simulation/operations.go +++ b/x/staking/simulation/operations.go @@ -146,9 +146,8 @@ func SimulateMsgCreateValidator(ak types.AccountKeeper, bk types.BankKeeper, k k simtypes.RandomDecAmount(r, maxCommission), ) - // TODO update later - orchAddr, _ := sdk.AccAddressFromBech32("celes1qktu8009djs6uym9uwj84ead24exkezsaqrmn5") ethAddr, _ := types.NewEthAddress("0x91DEd26b5f38B065FC0204c7929Da6b2A21277Cd") + orchAddr := simAccount.Address msg, err := types.NewMsgCreateValidator(address, simAccount.ConsKey.PubKey(), selfDelegation, description, commission, sdk.OneInt(), orchAddr, *ethAddr) if err != nil { diff --git a/x/staking/types/msg_test.go b/x/staking/types/msg_test.go index bd648a905f11..536d9ed54a16 100644 --- a/x/staking/types/msg_test.go +++ b/x/staking/types/msg_test.go @@ -85,7 +85,7 @@ func TestMsgCreateValidator(t *testing.T) { description := types.NewDescription(tc.moniker, tc.identity, tc.website, tc.securityContact, tc.details) randomEthAddress, err := teststaking.RandomEthAddress() require.NoError(t, err) - msg, err := types.NewMsgCreateValidator(tc.validatorAddr, tc.pubkey, tc.bond, description, tc.CommissionRates, tc.minSelfDelegation, sdk.AccAddress(tc.pubkey.Address()), *randomEthAddress) + msg, err := types.NewMsgCreateValidator(tc.validatorAddr, tc.pubkey, tc.bond, description, tc.CommissionRates, tc.minSelfDelegation, sdk.AccAddress(pk1.Address()), *randomEthAddress) require.NoError(t, err) if tc.expectPass { require.Nil(t, msg.ValidateBasic(), "test: %v", tc.name) From c3fe6aab66eb05748e6c9cedb2d42f5e890ea40f Mon Sep 17 00:00:00 2001 From: rachid Date: Thu, 5 May 2022 10:27:13 +0200 Subject: [PATCH 3/9] remove unnecessary comments --- testutil/network/network.go | 2 +- x/genutil/gentx_test.go | 4 ++-- x/genutil/types/genesis_state_test.go | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/testutil/network/network.go b/testutil/network/network.go index 8646287ea867..6a54396ef882 100644 --- a/testutil/network/network.go +++ b/testutil/network/network.go @@ -323,7 +323,7 @@ func New(t *testing.T, cfg Config) *Network { stakingtypes.NewDescription(nodeDirName, "", "", "", ""), stakingtypes.NewCommissionRates(commission, sdk.OneDec(), sdk.OneDec()), sdk.OneInt(), - addr, // can we use the same validator address in this test ? + addr, *ethAddr, ) require.NoError(t, err) diff --git a/x/genutil/gentx_test.go b/x/genutil/gentx_test.go index 51b4fbcede71..dab95a56c65a 100644 --- a/x/genutil/gentx_test.go +++ b/x/genutil/gentx_test.go @@ -59,13 +59,13 @@ func (suite *GenTxTestSuite) SetupTest() { one := sdk.OneInt() suite.msg1, err = stakingtypes.NewMsgCreateValidator( sdk.ValAddress(pk1.Address()), pk1, amount, desc, comm, one, - sdk.AccAddress(pk1.Address()), // can we use the same validator address here ? + sdk.AccAddress(pk1.Address()), *ethAddr1, ) suite.NoError(err) suite.msg2, err = stakingtypes.NewMsgCreateValidator( sdk.ValAddress(pk2.Address()), pk1, amount, desc, comm, one, - sdk.AccAddress(pk2.Address()), // can we use the same validator address here ? + sdk.AccAddress(pk2.Address()), *ethAddr2, ) suite.NoError(err) diff --git a/x/genutil/types/genesis_state_test.go b/x/genutil/types/genesis_state_test.go index f82409eec02f..b46d3bfb3a94 100644 --- a/x/genutil/types/genesis_state_test.go +++ b/x/genutil/types/genesis_state_test.go @@ -43,14 +43,14 @@ func TestValidateGenesisMultipleMessages(t *testing.T) { msg1, err := stakingtypes.NewMsgCreateValidator(sdk.ValAddress(pk1.Address()), pk1, sdk.NewInt64Coin(sdk.DefaultBondDenom, 50), desc, comm, sdk.OneInt(), - sdk.AccAddress(pk1.Address()), // can we use the same validator address here ? + sdk.AccAddress(pk1.Address()), *ethAddr1, ) require.NoError(t, err) msg2, err := stakingtypes.NewMsgCreateValidator(sdk.ValAddress(pk2.Address()), pk2, sdk.NewInt64Coin(sdk.DefaultBondDenom, 50), desc, comm, sdk.OneInt(), - sdk.AccAddress(pk2.Address()), // can we use the same validator address here ? + sdk.AccAddress(pk2.Address()), *ethAddr2, ) require.NoError(t, err) From 168a6fe5b83cdf0bde6264dcf61d98fe3d1b7a4f Mon Sep 17 00:00:00 2001 From: rachid Date: Thu, 5 May 2022 11:17:17 +0200 Subject: [PATCH 4/9] uses default eth address when starting sim network --- simapp/simd/cmd/testnet.go | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/simapp/simd/cmd/testnet.go b/simapp/simd/cmd/testnet.go index db15fe0d81b1..e2441d0ec9d0 100644 --- a/simapp/simd/cmd/testnet.go +++ b/simapp/simd/cmd/testnet.go @@ -222,9 +222,17 @@ func InitTestnet( } } - ethAddress, err := stakingtypes.NewEthAddress(clientCtx.EthereumAddress) - if err != nil { - return err + var ethAddress *stakingtypes.EthAddress + if clientCtx.EthereumAddress != "" { + ethAddress, err = stakingtypes.NewEthAddress(clientCtx.EthereumAddress) + if err != nil { + return err + } + } else { + ethAddress, err = stakingtypes.NewEthAddress("0x91DEd26b5f38B065FC0204c7929Da6b2A21277Cd") + if err != nil { + return err + } } valTokens := sdk.TokensFromConsensusPower(100, sdk.DefaultPowerReduction) From af0476966c05ac7b2d26a8ae6e96f7cfcecbf021 Mon Sep 17 00:00:00 2001 From: rachid Date: Thu, 5 May 2022 17:39:12 +0200 Subject: [PATCH 5/9] cosmetics --- x/genutil/client/cli/gentx.go | 4 ++-- x/genutil/client/testutil/suite.go | 1 - x/staking/client/testutil/suite.go | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/x/genutil/client/cli/gentx.go b/x/genutil/client/cli/gentx.go index 83e05fd77d88..febbaa0487a4 100644 --- a/x/genutil/client/cli/gentx.go +++ b/x/genutil/client/cli/gentx.go @@ -53,8 +53,8 @@ $ %s gentx my-key-name 1000000stake --home=/path/to/home/dir --keyring-backend=o --details="..." \ --security-contact="..." \ --website="..." \ - --orchestrator-address="..." \ - --ethereum-address="..." + --orchestrator-address="..." \ + --ethereum-address="..." `, defaultsDesc, version.AppName, ), RunE: func(cmd *cobra.Command, args []string) error { diff --git a/x/genutil/client/testutil/suite.go b/x/genutil/client/testutil/suite.go index 49ce4dd39383..768614aa9c80 100644 --- a/x/genutil/client/testutil/suite.go +++ b/x/genutil/client/testutil/suite.go @@ -94,7 +94,6 @@ func (s *IntegrationTestSuite) TestGenTxCmd() { } func (s *IntegrationTestSuite) TestGenTxCmdPubkey() { - // todo fix val := s.network.Validators[0] dir := s.T().TempDir() diff --git a/x/staking/client/testutil/suite.go b/x/staking/client/testutil/suite.go index 33e1cf9d3ac4..b05e383b2d76 100644 --- a/x/staking/client/testutil/suite.go +++ b/x/staking/client/testutil/suite.go @@ -954,7 +954,7 @@ func (s *IntegrationTestSuite) TestNewEditValidatorCmd() { expectedCode uint32 respType proto.Message }{ - { // todo fix the edit command + { "with no edit flag (since all are optional)", []string{ fmt.Sprintf("--%s=%s", flags.FlagFrom, "with wrong from address"), From bbf69d403f3bb36da95dd69cbb82fbb1235fea5e Mon Sep 17 00:00:00 2001 From: rachid Date: Thu, 5 May 2022 17:44:44 +0200 Subject: [PATCH 6/9] comments failing test --- x/auth/client/testutil/suite.go | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/x/auth/client/testutil/suite.go b/x/auth/client/testutil/suite.go index 626e0130f42a..fb14a2bf6228 100644 --- a/x/auth/client/testutil/suite.go +++ b/x/auth/client/testutil/suite.go @@ -453,15 +453,15 @@ func (s *IntegrationTestSuite) TestCLIQueryTxsCmdByEvents() { args []string expectEmpty bool }{ - { - "fee event happy case", - []string{ - fmt.Sprintf("--events=tx.fee=%s", - sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), - fmt.Sprintf("--%s=json", tmcli.OutputFlag), - }, - false, - }, + //{ + // "fee event happy case", + // []string{ + // fmt.Sprintf("--events=tx.fee=%s", + // sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + // fmt.Sprintf("--%s=json", tmcli.OutputFlag), + // }, + // false, + //}, { "no matching fee event", []string{ From a91003051650748fed58e5b7e82e4197a37dcec9 Mon Sep 17 00:00:00 2001 From: rachid Date: Thu, 5 May 2022 17:45:11 +0200 Subject: [PATCH 7/9] comments failing test --- x/auth/client/testutil/suite.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x/auth/client/testutil/suite.go b/x/auth/client/testutil/suite.go index fb14a2bf6228..632e3e91e2ee 100644 --- a/x/auth/client/testutil/suite.go +++ b/x/auth/client/testutil/suite.go @@ -453,7 +453,7 @@ func (s *IntegrationTestSuite) TestCLIQueryTxsCmdByEvents() { args []string expectEmpty bool }{ - //{ + //{ // Multiple shares failing test // "fee event happy case", // []string{ // fmt.Sprintf("--events=tx.fee=%s", From f53f9d610cc71e0b67dcf423fade44c7ae9e4a94 Mon Sep 17 00:00:00 2001 From: rachid Date: Thu, 5 May 2022 22:00:29 +0200 Subject: [PATCH 8/9] uncomments test and fixes it from commit 434b308ce4dc968070c47952d9489ab7e0ade85b --- x/auth/client/testutil/suite.go | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/x/auth/client/testutil/suite.go b/x/auth/client/testutil/suite.go index 632e3e91e2ee..a4e71c55e2c8 100644 --- a/x/auth/client/testutil/suite.go +++ b/x/auth/client/testutil/suite.go @@ -452,16 +452,19 @@ func (s *IntegrationTestSuite) TestCLIQueryTxsCmdByEvents() { name string args []string expectEmpty bool + expectError string }{ - //{ // Multiple shares failing test - // "fee event happy case", - // []string{ - // fmt.Sprintf("--events=tx.fee=%s", - // sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), - // fmt.Sprintf("--%s=json", tmcli.OutputFlag), - // }, - // false, - //}, + { // Multiple shares failing test + "fee event happy case", + []string{ + fmt.Sprintf("--events=tx.fee=%s", + sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), + fmt.Sprintf("--%s=json", tmcli.OutputFlag), + }, + false, + "transaction spanned more than two shares, this is not yet supported", + // TODO: change this to not expect an error when functionality is added to celestia-core + }, { "no matching fee event", []string{ @@ -470,6 +473,7 @@ func (s *IntegrationTestSuite) TestCLIQueryTxsCmdByEvents() { fmt.Sprintf("--%s=json", tmcli.OutputFlag), }, true, + "", }, } @@ -480,7 +484,10 @@ func (s *IntegrationTestSuite) TestCLIQueryTxsCmdByEvents() { clientCtx := val.ClientCtx out, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, tc.args) - s.Require().NoError(err) + if tc.expectError != "" { + s.Require().Equal(tc.expectError, err.Error()) + return + } var result sdk.SearchTxsResult s.Require().NoError(val.ClientCtx.Codec.UnmarshalJSON(out.Bytes(), &result)) From 14b584627d3340c25f55f32b65598ef7e8c2dbb6 Mon Sep 17 00:00:00 2001 From: rachid Date: Fri, 6 May 2022 16:22:24 +0200 Subject: [PATCH 9/9] remove wrong testnet initialization --- client/context.go | 16 ------------- client/flags/flags.go | 1 - simapp/simd/cmd/testnet.go | 40 +++++++++------------------------ simapp/simd/cmd/testnet_test.go | 7 +----- 4 files changed, 11 insertions(+), 53 deletions(-) diff --git a/client/context.go b/client/context.go index 1abddf49eeef..eedbdf6fdb65 100644 --- a/client/context.go +++ b/client/context.go @@ -53,10 +53,6 @@ type Context struct { FeeGranter sdk.AccAddress Viper *viper.Viper - // QGB related - OrchestratorAddress string - EthereumAddress string - // TODO: Deprecated (remove). LegacyAmino *codec.LegacyAmino } @@ -257,18 +253,6 @@ func (ctx Context) WithViper(prefix string) Context { return ctx } -// WithEthAddress returns a copy of the context with an updated ethereum address. -func (ctx Context) WithEthereumAddress(eth string) Context { - ctx.EthereumAddress = eth - return ctx -} - -// WithOrchestratorAddress returns a copy of the context with an updated ethereum address. -func (ctx Context) WithOrchestratorAddress(orch string) Context { - ctx.OrchestratorAddress = orch - return ctx -} - // PrintString prints the raw string to ctx.Output if it's defined, otherwise to os.Stdout func (ctx Context) PrintString(str string) error { return ctx.PrintBytes([]byte(str)) diff --git a/client/flags/flags.go b/client/flags/flags.go index 77a3f4ac9028..e2b76e8d4105 100644 --- a/client/flags/flags.go +++ b/client/flags/flags.go @@ -78,7 +78,6 @@ const ( FlagLogFormat = "log_format" // QGB related flags - // FIXME: can we have these FlagOrchestratorAddress = "orchestrator-address" FlagEthereumAddress = "ethereum-address" ) diff --git a/simapp/simd/cmd/testnet.go b/simapp/simd/cmd/testnet.go index e2441d0ec9d0..10fc0a7091b4 100644 --- a/simapp/simd/cmd/testnet.go +++ b/simapp/simd/cmd/testnet.go @@ -6,6 +6,7 @@ import ( "bufio" "encoding/json" "fmt" + "github.com/cosmos/cosmos-sdk/x/staking/teststaking" "net" "os" "path/filepath" @@ -35,13 +36,11 @@ import ( ) var ( - flagNodeDirPrefix = "node-dir-prefix" - flagNumValidators = "v" - flagOutputDir = "output-dir" - flagNodeDaemonHome = "node-daemon-home" - flagStartingIPAddress = "starting-ip-address" - flagOrchestratorAddress = "orchestrator-address" - flagEthereumAddress = "ethereum-address" + flagNodeDirPrefix = "node-dir-prefix" + flagNumValidators = "v" + flagOutputDir = "output-dir" + flagNodeDaemonHome = "node-daemon-home" + flagStartingIPAddress = "starting-ip-address" ) // get cmd to initialize all files for tendermint testnet and application @@ -93,8 +92,6 @@ Example: cmd.Flags().String(server.FlagMinGasPrices, fmt.Sprintf("0.000006%s", sdk.DefaultBondDenom), "Minimum gas prices to accept for transactions; All fees in a tx must meet this minimum (e.g. 0.01photino,0.001stake)") cmd.Flags().String(flags.FlagKeyringBackend, flags.DefaultKeyringBackend, "Select keyring's backend (os|file|test)") cmd.Flags().String(flags.FlagKeyAlgorithm, string(hd.Secp256k1Type), "Key signing algorithm to generate keys for") - cmd.Flags().String(flagOrchestratorAddress, "", "Orchestrator address to use when signing attestations transactions (defaults to validator address)") - cmd.Flags().String(flagEthereumAddress, "", "Ethereum address to use when signing attetations") return cmd } @@ -102,7 +99,6 @@ Example: const nodeDirPerm = 0755 // Initialize the testnet -// If orchestrator address is empty, it defaults to validator address func InitTestnet( clientCtx client.Context, cmd *cobra.Command, @@ -212,27 +208,11 @@ func InitTestnet( genBalances = append(genBalances, banktypes.Balance{Address: addr.String(), Coins: coins.Sort()}) genAccounts = append(genAccounts, authtypes.NewBaseAccount(addr, nil, 0, 0)) - var orchAddress sdk.AccAddress - if clientCtx.OrchestratorAddress == "" { - orchAddress = sdk.AccAddress(valPubKeys[i].Address()) - } else { - orchAddress, err = sdk.AccAddressFromBech32(clientCtx.OrchestratorAddress) - if err != nil { - return err - } - } + orchAddress := sdk.AccAddress(valPubKeys[i].Address()) - var ethAddress *stakingtypes.EthAddress - if clientCtx.EthereumAddress != "" { - ethAddress, err = stakingtypes.NewEthAddress(clientCtx.EthereumAddress) - if err != nil { - return err - } - } else { - ethAddress, err = stakingtypes.NewEthAddress("0x91DEd26b5f38B065FC0204c7929Da6b2A21277Cd") - if err != nil { - return err - } + ethAddress, err := teststaking.RandomEthAddress() + if err != nil { + return err } valTokens := sdk.TokensFromConsensusPower(100, sdk.DefaultPowerReduction) diff --git a/simapp/simd/cmd/testnet_test.go b/simapp/simd/cmd/testnet_test.go index 2633269ff8f7..da58fd454d82 100644 --- a/simapp/simd/cmd/testnet_test.go +++ b/simapp/simd/cmd/testnet_test.go @@ -3,7 +3,6 @@ package cmd import ( "context" "fmt" - "github.com/cosmos/cosmos-sdk/x/staking/teststaking" "testing" "github.com/cosmos/cosmos-sdk/client" @@ -28,15 +27,11 @@ func Test_TestnetCmd(t *testing.T) { err = genutiltest.ExecInitCmd(simapp.ModuleBasics, home, encodingConfig.Marshaler) require.NoError(t, err) - randomEthAddress, err := teststaking.RandomEthAddress() - require.NoError(t, err) - serverCtx := server.NewContext(viper.New(), cfg, logger) clientCtx := client.Context{}. WithCodec(encodingConfig.Marshaler). WithHomeDir(home). - WithTxConfig(encodingConfig.TxConfig). - WithEthereumAddress(randomEthAddress.GetAddress()) + WithTxConfig(encodingConfig.TxConfig) ctx := context.Background() ctx = context.WithValue(ctx, server.ServerContextKey, serverCtx)