From 7f0e05ebb9034e1dad313749bec9d97087456bc5 Mon Sep 17 00:00:00 2001 From: Marko Date: Sun, 2 Apr 2023 21:53:59 +0200 Subject: [PATCH] refactor(staking): remove account address bech32 global (#15598) --- tests/e2e/staking/suite.go | 15 +++-- x/staking/client/cli/query.go | 66 +++++++++---------- x/staking/client/cli/query_test.go | 15 +++-- x/staking/keeper/delegation.go | 41 +++++++++--- x/staking/keeper/delegation_test.go | 68 ++++++++++++++++++++ x/staking/keeper/genesis.go | 5 +- x/staking/keeper/grpc_query.go | 23 ++++--- x/staking/keeper/keeper.go | 2 +- x/staking/keeper/keeper_test.go | 2 + x/staking/keeper/msg_server.go | 8 +-- x/staking/keeper/slash.go | 5 +- x/staking/keeper/unbonding.go | 12 +++- x/staking/keeper/unbonding_test.go | 13 ++++ x/staking/keeper/val_state_change.go | 10 ++- x/staking/module.go | 7 +- x/staking/testutil/expected_keepers_mocks.go | 30 +++++++++ x/staking/types/expected_keepers.go | 5 ++ 17 files changed, 241 insertions(+), 86 deletions(-) diff --git a/tests/e2e/staking/suite.go b/tests/e2e/staking/suite.go index ee291910b8..1814545564 100644 --- a/tests/e2e/staking/suite.go +++ b/tests/e2e/staking/suite.go @@ -14,6 +14,7 @@ import ( "github.com/stretchr/testify/suite" "github.com/cosmos/cosmos-sdk/client/flags" + "github.com/cosmos/cosmos-sdk/codec/address" "github.com/cosmos/cosmos-sdk/crypto/hd" "github.com/cosmos/cosmos-sdk/crypto/keyring" "github.com/cosmos/cosmos-sdk/testutil" @@ -403,7 +404,7 @@ func (s *E2ETestSuite) TestGetCmdQueryDelegation() { for _, tc := range testCases { tc := tc s.Run(tc.name, func() { - cmd := cli.GetCmdQueryDelegation() + cmd := cli.GetCmdQueryDelegation(address.NewBech32Codec("cosmos")) clientCtx := val.ClientCtx out, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, tc.args) @@ -459,7 +460,7 @@ func (s *E2ETestSuite) TestGetCmdQueryDelegations() { for _, tc := range testCases { tc := tc s.Run(tc.name, func() { - cmd := cli.GetCmdQueryDelegations() + cmd := cli.GetCmdQueryDelegations(address.NewBech32Codec("cosmos")) clientCtx := val.ClientCtx out, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, tc.args) @@ -515,7 +516,7 @@ func (s *E2ETestSuite) TestGetCmdQueryValidatorDelegations() { for _, tc := range testCases { tc := tc s.Run(tc.name, func() { - cmd := cli.GetCmdQueryDelegations() + cmd := cli.GetCmdQueryDelegations(address.NewBech32Codec("cosmos")) clientCtx := val.ClientCtx out, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, tc.args) @@ -559,7 +560,7 @@ func (s *E2ETestSuite) TestGetCmdQueryUnbondingDelegations() { for _, tc := range testCases { tc := tc s.Run(tc.name, func() { - cmd := cli.GetCmdQueryUnbondingDelegations() + cmd := cli.GetCmdQueryUnbondingDelegations(address.NewBech32Codec("cosmos")) clientCtx := val.ClientCtx out, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, tc.args) @@ -618,7 +619,7 @@ func (s *E2ETestSuite) TestGetCmdQueryUnbondingDelegation() { for _, tc := range testCases { tc := tc s.Run(tc.name, func() { - cmd := cli.GetCmdQueryUnbondingDelegation() + cmd := cli.GetCmdQueryUnbondingDelegation(address.NewBech32Codec("cosmos")) clientCtx := val.ClientCtx out, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, tc.args) @@ -716,7 +717,7 @@ func (s *E2ETestSuite) TestGetCmdQueryRedelegations() { for _, tc := range testCases { tc := tc s.Run(tc.name, func() { - cmd := cli.GetCmdQueryRedelegations() + cmd := cli.GetCmdQueryRedelegations(address.NewBech32Codec("cosmos")) clientCtx := val.ClientCtx out, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, tc.args) @@ -792,7 +793,7 @@ func (s *E2ETestSuite) TestGetCmdQueryRedelegation() { for _, tc := range testCases { tc := tc s.Run(tc.name, func() { - cmd := cli.GetCmdQueryRedelegation() + cmd := cli.GetCmdQueryRedelegation(address.NewBech32Codec("cosmos")) clientCtx := val.ClientCtx out, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, tc.args) diff --git a/x/staking/client/cli/query.go b/x/staking/client/cli/query.go index 0982296161..d896b54ef7 100644 --- a/x/staking/client/cli/query.go +++ b/x/staking/client/cli/query.go @@ -5,6 +5,7 @@ import ( "strconv" "strings" + "cosmossdk.io/core/address" "github.com/spf13/cobra" "github.com/cosmos/cosmos-sdk/client" @@ -15,7 +16,7 @@ import ( ) // GetQueryCmd returns the cli query commands for this module -func GetQueryCmd() *cobra.Command { +func GetQueryCmd(ac address.Codec) *cobra.Command { stakingQueryCmd := &cobra.Command{ Use: types.ModuleName, Short: "Querying commands for the staking module", @@ -25,12 +26,12 @@ func GetQueryCmd() *cobra.Command { } stakingQueryCmd.AddCommand( - GetCmdQueryDelegation(), - GetCmdQueryDelegations(), - GetCmdQueryUnbondingDelegation(), - GetCmdQueryUnbondingDelegations(), - GetCmdQueryRedelegation(), - GetCmdQueryRedelegations(), + GetCmdQueryDelegation(ac), + GetCmdQueryDelegations(ac), + GetCmdQueryUnbondingDelegation(ac), + GetCmdQueryUnbondingDelegations(ac), + GetCmdQueryRedelegation(ac), + GetCmdQueryRedelegations(ac), GetCmdQueryValidator(), GetCmdQueryValidators(), GetCmdQueryValidatorDelegations(), @@ -242,22 +243,13 @@ $ %s query staking redelegations-from %s1gghjut3ccd8ay0zduzj64hwre2fxs9ldmqhffj } // GetCmdQueryDelegation the query delegation command. -func GetCmdQueryDelegation() *cobra.Command { - bech32PrefixAccAddr := sdk.GetConfig().GetBech32AccountAddrPrefix() - bech32PrefixValAddr := sdk.GetConfig().GetBech32ValidatorAddrPrefix() - +func GetCmdQueryDelegation(ac address.Codec) *cobra.Command { cmd := &cobra.Command{ Use: "delegation [delegator-addr] [validator-addr]", Short: "Query a delegation based on address and validator address", - Long: strings.TrimSpace( - fmt.Sprintf(`Query delegations for an individual delegator on an individual validator. - -Example: -$ %s query staking delegation %s1gghjut3ccd8ay0zduzj64hwre2fxs9ld75ru9p %s1gghjut3ccd8ay0zduzj64hwre2fxs9ldmqhffj -`, - version.AppName, bech32PrefixAccAddr, bech32PrefixValAddr, - ), - ), + Example: fmt.Sprintf(`%s query staking delegation [delegator-address] [validator-address]`, + version.AppName), + Long: "Query delegations for an individual delegator on an individual validator", Args: cobra.ExactArgs(2), RunE: func(cmd *cobra.Command, args []string) error { clientCtx, err := client.GetClientQueryContext(cmd) @@ -266,7 +258,7 @@ $ %s query staking delegation %s1gghjut3ccd8ay0zduzj64hwre2fxs9ld75ru9p %s1gghju } queryClient := types.NewQueryClient(clientCtx) - delAddr, err := sdk.AccAddressFromBech32(args[0]) + _, err = ac.StringToBytes(args[0]) if err != nil { return err } @@ -277,7 +269,7 @@ $ %s query staking delegation %s1gghjut3ccd8ay0zduzj64hwre2fxs9ld75ru9p %s1gghju } params := &types.QueryDelegationRequest{ - DelegatorAddr: delAddr.String(), + DelegatorAddr: args[0], ValidatorAddr: valAddr.String(), } @@ -297,7 +289,7 @@ $ %s query staking delegation %s1gghjut3ccd8ay0zduzj64hwre2fxs9ld75ru9p %s1gghju // GetCmdQueryDelegations implements the command to query all the delegations // made from one delegator. -func GetCmdQueryDelegations() *cobra.Command { +func GetCmdQueryDelegations(ac address.Codec) *cobra.Command { bech32PrefixAccAddr := sdk.GetConfig().GetBech32AccountAddrPrefix() cmd := &cobra.Command{ @@ -320,7 +312,7 @@ $ %s query staking delegations %s1gghjut3ccd8ay0zduzj64hwre2fxs9ld75ru9p } queryClient := types.NewQueryClient(clientCtx) - delAddr, err := sdk.AccAddressFromBech32(args[0]) + _, err = ac.StringToBytes(args[0]) if err != nil { return err } @@ -331,7 +323,7 @@ $ %s query staking delegations %s1gghjut3ccd8ay0zduzj64hwre2fxs9ld75ru9p } params := &types.QueryDelegatorDelegationsRequest{ - DelegatorAddr: delAddr.String(), + DelegatorAddr: args[0], Pagination: pageReq, } @@ -407,7 +399,7 @@ $ %s query staking delegations-to %s1gghjut3ccd8ay0zduzj64hwre2fxs9ldmqhffj // GetCmdQueryUnbondingDelegation implements the command to query a single // unbonding-delegation record. -func GetCmdQueryUnbondingDelegation() *cobra.Command { +func GetCmdQueryUnbondingDelegation(ac address.Codec) *cobra.Command { bech32PrefixAccAddr := sdk.GetConfig().GetBech32AccountAddrPrefix() bech32PrefixValAddr := sdk.GetConfig().GetBech32ValidatorAddrPrefix() @@ -436,13 +428,13 @@ $ %s query staking unbonding-delegation %s1gghjut3ccd8ay0zduzj64hwre2fxs9ld75ru9 return err } - delAddr, err := sdk.AccAddressFromBech32(args[0]) + _, err = ac.StringToBytes(args[0]) if err != nil { return err } params := &types.QueryUnbondingDelegationRequest{ - DelegatorAddr: delAddr.String(), + DelegatorAddr: args[0], ValidatorAddr: valAddr.String(), } @@ -462,7 +454,7 @@ $ %s query staking unbonding-delegation %s1gghjut3ccd8ay0zduzj64hwre2fxs9ld75ru9 // GetCmdQueryUnbondingDelegations implements the command to query all the // unbonding-delegation records for a delegator. -func GetCmdQueryUnbondingDelegations() *cobra.Command { +func GetCmdQueryUnbondingDelegations(ac address.Codec) *cobra.Command { bech32PrefixAccAddr := sdk.GetConfig().GetBech32AccountAddrPrefix() cmd := &cobra.Command{ @@ -485,7 +477,7 @@ $ %s query staking unbonding-delegations %s1gghjut3ccd8ay0zduzj64hwre2fxs9ld75ru } queryClient := types.NewQueryClient(clientCtx) - delegatorAddr, err := sdk.AccAddressFromBech32(args[0]) + _, err = ac.StringToBytes(args[0]) if err != nil { return err } @@ -496,7 +488,7 @@ $ %s query staking unbonding-delegations %s1gghjut3ccd8ay0zduzj64hwre2fxs9ld75ru } params := &types.QueryDelegatorUnbondingDelegationsRequest{ - DelegatorAddr: delegatorAddr.String(), + DelegatorAddr: args[0], Pagination: pageReq, } @@ -517,7 +509,7 @@ $ %s query staking unbonding-delegations %s1gghjut3ccd8ay0zduzj64hwre2fxs9ld75ru // GetCmdQueryRedelegation implements the command to query a single // redelegation record. -func GetCmdQueryRedelegation() *cobra.Command { +func GetCmdQueryRedelegation(ac address.Codec) *cobra.Command { bech32PrefixAccAddr := sdk.GetConfig().GetBech32AccountAddrPrefix() bech32PrefixValAddr := sdk.GetConfig().GetBech32ValidatorAddrPrefix() @@ -541,7 +533,7 @@ $ %s query staking redelegation %s1gghjut3ccd8ay0zduzj64hwre2fxs9ld75ru9p %s1l2r } queryClient := types.NewQueryClient(clientCtx) - delAddr, err := sdk.AccAddressFromBech32(args[0]) + _, err = ac.StringToBytes(args[0]) if err != nil { return err } @@ -557,7 +549,7 @@ $ %s query staking redelegation %s1gghjut3ccd8ay0zduzj64hwre2fxs9ld75ru9p %s1l2r } params := &types.QueryRedelegationsRequest{ - DelegatorAddr: delAddr.String(), + DelegatorAddr: args[0], DstValidatorAddr: valDstAddr.String(), SrcValidatorAddr: valSrcAddr.String(), } @@ -578,7 +570,7 @@ $ %s query staking redelegation %s1gghjut3ccd8ay0zduzj64hwre2fxs9ld75ru9p %s1l2r // GetCmdQueryRedelegations implements the command to query all the // redelegation records for a delegator. -func GetCmdQueryRedelegations() *cobra.Command { +func GetCmdQueryRedelegations(ac address.Codec) *cobra.Command { bech32PrefixAccAddr := sdk.GetConfig().GetBech32AccountAddrPrefix() cmd := &cobra.Command{ @@ -601,7 +593,7 @@ $ %s query staking redelegation %s1gghjut3ccd8ay0zduzj64hwre2fxs9ld75ru9p } queryClient := types.NewQueryClient(clientCtx) - delAddr, err := sdk.AccAddressFromBech32(args[0]) + _, err = ac.StringToBytes(args[0]) if err != nil { return err } @@ -612,7 +604,7 @@ $ %s query staking redelegation %s1gghjut3ccd8ay0zduzj64hwre2fxs9ld75ru9p } params := &types.QueryRedelegationsRequest{ - DelegatorAddr: delAddr.String(), + DelegatorAddr: args[0], Pagination: pageReq, } diff --git a/x/staking/client/cli/query_test.go b/x/staking/client/cli/query_test.go index fca40e92d9..febffe77da 100644 --- a/x/staking/client/cli/query_test.go +++ b/x/staking/client/cli/query_test.go @@ -7,6 +7,7 @@ import ( "github.com/cosmos/gogoproto/proto" "github.com/cosmos/cosmos-sdk/client/flags" + "github.com/cosmos/cosmos-sdk/codec/address" clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/x/staking/client/cli" @@ -124,7 +125,7 @@ func (s *CLITestSuite) TestGetCmdQueryDelegation() { for _, tc := range testCases { tc := tc s.Run(tc.name, func() { - cmd := cli.GetCmdQueryDelegation() + cmd := cli.GetCmdQueryDelegation(address.NewBech32Codec("cosmos")) clientCtx := s.clientCtx _, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, tc.args) @@ -169,7 +170,7 @@ func (s *CLITestSuite) TestGetCmdQueryDelegations() { for _, tc := range testCases { tc := tc s.Run(tc.name, func() { - cmd := cli.GetCmdQueryDelegations() + cmd := cli.GetCmdQueryDelegations(address.NewBech32Codec("cosmos")) clientCtx := s.clientCtx out, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, tc.args) @@ -215,7 +216,7 @@ func (s *CLITestSuite) TestGetCmdQueryValidatorDelegations() { for _, tc := range testCases { tc := tc s.Run(tc.name, func() { - cmd := cli.GetCmdQueryDelegations() + cmd := cli.GetCmdQueryDelegations(address.NewBech32Codec("cosmos")) clientCtx := s.clientCtx out, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, tc.args) @@ -256,7 +257,7 @@ func (s *CLITestSuite) TestGetCmdQueryUnbondingDelegations() { for _, tc := range testCases { tc := tc s.Run(tc.name, func() { - cmd := cli.GetCmdQueryUnbondingDelegations() + cmd := cli.GetCmdQueryUnbondingDelegations(address.NewBech32Codec("cosmos")) clientCtx := s.clientCtx out, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, tc.args) @@ -311,7 +312,7 @@ func (s *CLITestSuite) TestGetCmdQueryUnbondingDelegation() { for _, tc := range testCases { tc := tc s.Run(tc.name, func() { - cmd := cli.GetCmdQueryUnbondingDelegation() + cmd := cli.GetCmdQueryUnbondingDelegation(address.NewBech32Codec("cosmos")) clientCtx := s.clientCtx out, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, tc.args) @@ -398,7 +399,7 @@ func (s *CLITestSuite) TestGetCmdQueryRedelegations() { for _, tc := range testCases { tc := tc s.Run(tc.name, func() { - cmd := cli.GetCmdQueryRedelegations() + cmd := cli.GetCmdQueryRedelegations(address.NewBech32Codec("cosmos")) clientCtx := s.clientCtx out, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, tc.args) @@ -465,7 +466,7 @@ func (s *CLITestSuite) TestGetCmdQueryRedelegation() { for _, tc := range testCases { tc := tc s.Run(tc.name, func() { - cmd := cli.GetCmdQueryRedelegation() + cmd := cli.GetCmdQueryRedelegation(address.NewBech32Codec("cosmos")) clientCtx := s.clientCtx out, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, tc.args) diff --git a/x/staking/keeper/delegation.go b/x/staking/keeper/delegation.go index acea5c3787..3ad718aaff 100644 --- a/x/staking/keeper/delegation.go +++ b/x/staking/keeper/delegation.go @@ -95,7 +95,10 @@ func (k Keeper) GetDelegatorDelegations(ctx sdk.Context, delegator sdk.AccAddres // SetDelegation sets a delegation. func (k Keeper) SetDelegation(ctx sdk.Context, delegation types.Delegation) { - delegatorAddress := sdk.MustAccAddressFromBech32(delegation.DelegatorAddress) + delegatorAddress, err := k.authKeeper.StringToBytes(delegation.DelegatorAddress) + if err != nil { + panic(err) + } store := ctx.KVStore(k.storeKey) b := types.MustMarshalDelegation(k.cdc, delegation) @@ -104,7 +107,10 @@ func (k Keeper) SetDelegation(ctx sdk.Context, delegation types.Delegation) { // RemoveDelegation removes a delegation func (k Keeper) RemoveDelegation(ctx sdk.Context, delegation types.Delegation) error { - delegatorAddress := sdk.MustAccAddressFromBech32(delegation.DelegatorAddress) + delegatorAddress, err := k.authKeeper.StringToBytes(delegation.DelegatorAddress) + if err != nil { + panic(err) + } // TODO: Consider calling hooks outside of the store wrapper functions, it's unobvious. if err := k.Hooks().BeforeDelegationRemoved(ctx, delegatorAddress, delegation.GetValidatorAddr()); err != nil { @@ -275,7 +281,10 @@ func (k Keeper) HasMaxUnbondingDelegationEntries(ctx sdk.Context, delegatorAddr // SetUnbondingDelegation sets the unbonding delegation and associated index. func (k Keeper) SetUnbondingDelegation(ctx sdk.Context, ubd types.UnbondingDelegation) { - delAddr := sdk.MustAccAddressFromBech32(ubd.DelegatorAddress) + delAddr, err := k.authKeeper.StringToBytes(ubd.DelegatorAddress) + if err != nil { + panic(err) + } store := ctx.KVStore(k.storeKey) bz := types.MustMarshalUBD(k.cdc, ubd) @@ -290,7 +299,10 @@ func (k Keeper) SetUnbondingDelegation(ctx sdk.Context, ubd types.UnbondingDeleg // RemoveUnbondingDelegation removes the unbonding delegation object and associated index. func (k Keeper) RemoveUnbondingDelegation(ctx sdk.Context, ubd types.UnbondingDelegation) { - delegatorAddress := sdk.MustAccAddressFromBech32(ubd.DelegatorAddress) + delegatorAddress, err := k.authKeeper.StringToBytes(ubd.DelegatorAddress) + if err != nil { + panic(err) + } store := ctx.KVStore(k.storeKey) addr, err := sdk.ValAddressFromBech32(ubd.ValidatorAddress) @@ -473,7 +485,10 @@ func (k Keeper) HasMaxRedelegationEntries(ctx sdk.Context, delegatorAddr sdk.Acc // SetRedelegation set a redelegation and associated index. func (k Keeper) SetRedelegation(ctx sdk.Context, red types.Redelegation) { - delegatorAddress := sdk.MustAccAddressFromBech32(red.DelegatorAddress) + delegatorAddress, err := k.authKeeper.StringToBytes(red.DelegatorAddress) + if err != nil { + panic(err) + } store := ctx.KVStore(k.storeKey) bz := types.MustMarshalRED(k.cdc, red) @@ -538,7 +553,10 @@ func (k Keeper) IterateRedelegations(ctx sdk.Context, fn func(index int64, red t // RemoveRedelegation removes a redelegation object and associated index. func (k Keeper) RemoveRedelegation(ctx sdk.Context, red types.Redelegation) { - delegatorAddress := sdk.MustAccAddressFromBech32(red.DelegatorAddress) + delegatorAddress, err := k.authKeeper.StringToBytes(red.DelegatorAddress) + if err != nil { + panic(err) + } store := ctx.KVStore(k.storeKey) valSrcAddr, err := sdk.ValAddressFromBech32(red.ValidatorSrcAddress) @@ -659,7 +677,10 @@ func (k Keeper) Delegate( return math.LegacyZeroDec(), err } - delegatorAddress := sdk.MustAccAddressFromBech32(delegation.DelegatorAddress) + delegatorAddress, err := k.authKeeper.StringToBytes(delegation.DelegatorAddress) + if err != nil { + panic(err) + } // if subtractAccount is true then we are // performing a delegation and not a redelegation, thus the source tokens are @@ -745,12 +766,12 @@ func (k Keeper) Unbond( // subtract shares from delegation delegation.Shares = delegation.Shares.Sub(shares) - delegatorAddress, err := sdk.AccAddressFromBech32(delegation.DelegatorAddress) + delegatorAddress, err := k.authKeeper.StringToBytes(delegation.DelegatorAddress) if err != nil { return amount, err } - isValidatorOperator := delegatorAddress.Equals(validator.GetOperator()) + isValidatorOperator := bytes.Equal(delegatorAddress, validator.GetOperator()) // If the delegation is the operator of the validator and undelegating will decrease the validator's // self-delegation below their minimum, we jail the validator. @@ -858,7 +879,7 @@ func (k Keeper) CompleteUnbonding(ctx sdk.Context, delAddr sdk.AccAddress, valAd balances := sdk.NewCoins() ctxTime := ctx.BlockHeader().Time - delegatorAddress, err := sdk.AccAddressFromBech32(ubd.DelegatorAddress) + delegatorAddress, err := k.authKeeper.StringToBytes(ubd.DelegatorAddress) if err != nil { return nil, err } diff --git a/x/staking/keeper/delegation_test.go b/x/staking/keeper/delegation_test.go index 7a747aceaf..fa2cd3351e 100644 --- a/x/staking/keeper/delegation_test.go +++ b/x/staking/keeper/delegation_test.go @@ -27,6 +27,11 @@ func (s *KeeperTestSuite) TestDelegation() { addrDels, valAddrs := createValAddrs(3) + for _, addr := range addrDels { + s.accountKeeper.EXPECT().StringToBytes(addr.String()).Return(addr, nil).AnyTimes() + s.accountKeeper.EXPECT().BytesToString(addr).Return(addr.String(), nil).AnyTimes() + } + // construct the validators amts := []math.Int{sdk.NewInt(9), sdk.NewInt(8), sdk.NewInt(7)} var validators [3]stakingtypes.Validator @@ -146,6 +151,11 @@ func (s *KeeperTestSuite) TestUnbondingDelegation() { delAddrs, valAddrs := createValAddrs(2) + for _, addr := range delAddrs { + s.accountKeeper.EXPECT().StringToBytes(addr.String()).Return(addr, nil).AnyTimes() + s.accountKeeper.EXPECT().BytesToString(addr).Return(addr.String(), nil).AnyTimes() + } + ubd := stakingtypes.NewUnbondingDelegation( delAddrs[0], valAddrs[0], @@ -196,6 +206,11 @@ func (s *KeeperTestSuite) TestUnbondDelegation() { require := s.Require() delAddrs, valAddrs := createValAddrs(1) + + for _, addr := range delAddrs { + s.accountKeeper.EXPECT().StringToBytes(addr.String()).Return(addr, nil).AnyTimes() + s.accountKeeper.EXPECT().BytesToString(addr).Return(addr.String(), nil).AnyTimes() + } startTokens := keeper.TokensFromConsensusPower(ctx, 10) validator := testutil.NewValidator(s.T(), valAddrs[0], PKs[0]) @@ -231,6 +246,10 @@ func (s *KeeperTestSuite) TestUndelegateSelfDelegationBelowMinSelfDelegation() { require := s.Require() addrDels, addrVals := createValAddrs(1) + for _, addr := range addrDels { + s.accountKeeper.EXPECT().StringToBytes(addr.String()).Return(addr, nil).AnyTimes() + s.accountKeeper.EXPECT().BytesToString(addr).Return(addr.String(), nil).AnyTimes() + } delTokens := keeper.TokensFromConsensusPower(ctx, 10) // create a validator with a self-delegation @@ -280,6 +299,10 @@ func (s *KeeperTestSuite) TestUndelegateFromUnbondingValidator() { delTokens := keeper.TokensFromConsensusPower(ctx, 10) addrDels, addrVals := createValAddrs(2) + for _, addr := range addrDels { + s.accountKeeper.EXPECT().StringToBytes(addr.String()).Return(addr, nil).AnyTimes() + s.accountKeeper.EXPECT().BytesToString(addr).Return(addr.String(), nil).AnyTimes() + } // create a validator with a self-delegation validator := testutil.NewValidator(s.T(), addrVals[0], PKs[0]) @@ -355,6 +378,10 @@ func (s *KeeperTestSuite) TestUndelegateFromUnbondedValidator() { delTokens := keeper.TokensFromConsensusPower(ctx, 10) addrDels, addrVals := createValAddrs(2) + for _, addr := range addrDels { + s.accountKeeper.EXPECT().StringToBytes(addr.String()).Return(addr, nil).AnyTimes() + s.accountKeeper.EXPECT().BytesToString(addr).Return(addr.String(), nil).AnyTimes() + } // create a validator with a self-delegation validator := testutil.NewValidator(s.T(), addrVals[0], PKs[0]) @@ -431,6 +458,10 @@ func (s *KeeperTestSuite) TestUnbondingAllDelegationFromValidator() { delTokens := keeper.TokensFromConsensusPower(ctx, 10) addrDels, addrVals := createValAddrs(2) + for _, addr := range addrDels { + s.accountKeeper.EXPECT().StringToBytes(addr.String()).Return(addr, nil).AnyTimes() + s.accountKeeper.EXPECT().BytesToString(addr).Return(addr.String(), nil).AnyTimes() + } // create a validator with a self-delegation validator := testutil.NewValidator(s.T(), addrVals[0], PKs[0]) @@ -498,6 +529,11 @@ func (s *KeeperTestSuite) TestGetRedelegationsFromSrcValidator() { addrDels, addrVals := createValAddrs(2) + for _, addr := range addrDels { + s.accountKeeper.EXPECT().StringToBytes(addr.String()).Return(addr, nil).AnyTimes() + s.accountKeeper.EXPECT().BytesToString(addr).Return(addr.String(), nil).AnyTimes() + } + rd := stakingtypes.NewRedelegation(addrDels[0], addrVals[0], addrVals[1], 0, time.Unix(0, 0), sdk.NewInt(5), math.LegacyNewDec(5), 0) @@ -524,6 +560,10 @@ func (s *KeeperTestSuite) TestRedelegation() { require := s.Require() addrDels, addrVals := createValAddrs(2) + for _, addr := range addrDels { + s.accountKeeper.EXPECT().StringToBytes(addr.String()).Return(addr, nil).AnyTimes() + s.accountKeeper.EXPECT().BytesToString(addr).Return(addr.String(), nil).AnyTimes() + } rd := stakingtypes.NewRedelegation(addrDels[0], addrVals[0], addrVals[1], 0, time.Unix(0, 0).UTC(), sdk.NewInt(5), @@ -599,6 +639,10 @@ func (s *KeeperTestSuite) TestRedelegateToSameValidator() { require.True(validator.IsBonded()) val0AccAddr := sdk.AccAddress(addrVals[0].Bytes()) + + s.accountKeeper.EXPECT().StringToBytes(val0AccAddr.String()).Return(val0AccAddr, nil).AnyTimes() + s.accountKeeper.EXPECT().BytesToString(val0AccAddr).Return(val0AccAddr.String(), nil).AnyTimes() + selfDelegation := stakingtypes.NewDelegation(val0AccAddr, addrVals[0], issuedShares) keeper.SetDelegation(ctx, selfDelegation) @@ -621,6 +665,8 @@ func (s *KeeperTestSuite) TestRedelegationMaxEntries() { s.bankKeeper.EXPECT().SendCoinsFromModuleToModule(gomock.Any(), stakingtypes.NotBondedPoolName, stakingtypes.BondedPoolName, gomock.Any()) _ = stakingkeeper.TestingUpdateValidator(keeper, ctx, validator, true) val0AccAddr := sdk.AccAddress(addrVals[0].Bytes()) + s.accountKeeper.EXPECT().StringToBytes(val0AccAddr.String()).Return(val0AccAddr, nil).AnyTimes() + s.accountKeeper.EXPECT().BytesToString(val0AccAddr).Return(val0AccAddr.String(), nil).AnyTimes() selfDelegation := stakingtypes.NewDelegation(val0AccAddr, addrVals[0], issuedShares) keeper.SetDelegation(ctx, selfDelegation) @@ -662,6 +708,15 @@ func (s *KeeperTestSuite) TestRedelegateSelfDelegation() { require := s.Require() addrDels, addrVals := createValAddrs(2) + for _, addr := range addrDels { + s.accountKeeper.EXPECT().StringToBytes(addr.String()).Return(addr, nil).AnyTimes() + s.accountKeeper.EXPECT().BytesToString(addr).Return(addr.String(), nil).AnyTimes() + } + + for _, addr := range addrDels { + s.accountKeeper.EXPECT().StringToBytes(addr.String()).Return(addr, nil).AnyTimes() + s.accountKeeper.EXPECT().BytesToString(addr).Return(addr.String(), nil).AnyTimes() + } // create a validator with a self-delegation validator := testutil.NewValidator(s.T(), addrVals[0], PKs[0]) @@ -713,6 +768,10 @@ func (s *KeeperTestSuite) TestRedelegateFromUnbondingValidator() { require := s.Require() addrDels, addrVals := createValAddrs(2) + for _, addr := range addrDels { + s.accountKeeper.EXPECT().StringToBytes(addr.String()).Return(addr, nil).AnyTimes() + s.accountKeeper.EXPECT().BytesToString(addr).Return(addr.String(), nil).AnyTimes() + } // create a validator with a self-delegation validator := testutil.NewValidator(s.T(), addrVals[0], PKs[0]) @@ -793,6 +852,15 @@ func (s *KeeperTestSuite) TestRedelegateFromUnbondedValidator() { require := s.Require() addrDels, addrVals := createValAddrs(2) + for _, addr := range addrDels { + s.accountKeeper.EXPECT().StringToBytes(addr.String()).Return(addr, nil).AnyTimes() + s.accountKeeper.EXPECT().BytesToString(addr).Return(addr.String(), nil).AnyTimes() + } + + for _, addr := range addrDels { + s.accountKeeper.EXPECT().StringToBytes(addr.String()).Return(addr, nil).AnyTimes() + s.accountKeeper.EXPECT().BytesToString(addr).Return(addr.String(), nil).AnyTimes() + } // create a validator with a self-delegation validator := testutil.NewValidator(s.T(), addrVals[0], PKs[0]) diff --git a/x/staking/keeper/genesis.go b/x/staking/keeper/genesis.go index d8af3355f9..37e68cc699 100644 --- a/x/staking/keeper/genesis.go +++ b/x/staking/keeper/genesis.go @@ -64,7 +64,10 @@ func (k Keeper) InitGenesis(ctx sdk.Context, data *types.GenesisState) (res []ab } for _, delegation := range data.Delegations { - delegatorAddress := sdk.MustAccAddressFromBech32(delegation.DelegatorAddress) + delegatorAddress, err := k.authKeeper.StringToBytes(delegation.DelegatorAddress) + if err != nil { + panic(fmt.Errorf("invalid delegator address: %s", err)) + } // Call the before-creation hook if not exported if !data.Exported { diff --git a/x/staking/keeper/grpc_query.go b/x/staking/keeper/grpc_query.go index 5b550e8e2d..ea9f298102 100644 --- a/x/staking/keeper/grpc_query.go +++ b/x/staking/keeper/grpc_query.go @@ -185,7 +185,7 @@ func (k Querier) Delegation(c context.Context, req *types.QueryDelegationRequest } ctx := sdk.UnwrapSDKContext(c) - delAddr, err := sdk.AccAddressFromBech32(req.DelegatorAddr) + delAddr, err := k.authKeeper.StringToBytes(req.DelegatorAddr) if err != nil { return nil, err } @@ -226,7 +226,7 @@ func (k Querier) UnbondingDelegation(c context.Context, req *types.QueryUnbondin ctx := sdk.UnwrapSDKContext(c) - delAddr, err := sdk.AccAddressFromBech32(req.DelegatorAddr) + delAddr, err := k.authKeeper.StringToBytes(req.DelegatorAddr) if err != nil { return nil, err } @@ -259,7 +259,7 @@ func (k Querier) DelegatorDelegations(c context.Context, req *types.QueryDelegat var delegations types.Delegations ctx := sdk.UnwrapSDKContext(c) - delAddr, err := sdk.AccAddressFromBech32(req.DelegatorAddr) + delAddr, err := k.authKeeper.StringToBytes(req.DelegatorAddr) if err != nil { return nil, err } @@ -300,7 +300,7 @@ func (k Querier) DelegatorValidator(c context.Context, req *types.QueryDelegator } ctx := sdk.UnwrapSDKContext(c) - delAddr, err := sdk.AccAddressFromBech32(req.DelegatorAddr) + delAddr, err := k.authKeeper.StringToBytes(req.DelegatorAddr) if err != nil { return nil, err } @@ -331,7 +331,7 @@ func (k Querier) DelegatorUnbondingDelegations(c context.Context, req *types.Que ctx := sdk.UnwrapSDKContext(c) store := ctx.KVStore(k.storeKey) - delAddr, err := sdk.AccAddressFromBech32(req.DelegatorAddr) + delAddr, err := k.authKeeper.StringToBytes(req.DelegatorAddr) if err != nil { return nil, err } @@ -416,7 +416,7 @@ func (k Querier) DelegatorValidators(c context.Context, req *types.QueryDelegato ctx := sdk.UnwrapSDKContext(c) store := ctx.KVStore(k.storeKey) - delAddr, err := sdk.AccAddressFromBech32(req.DelegatorAddr) + delAddr, err := k.authKeeper.StringToBytes(req.DelegatorAddr) if err != nil { return nil, err } @@ -467,7 +467,7 @@ func (k Querier) Params(c context.Context, _ *types.QueryParamsRequest) (*types. } func queryRedelegation(ctx sdk.Context, k Querier, req *types.QueryRedelegationsRequest) (redels types.Redelegations, err error) { - delAddr, err := sdk.AccAddressFromBech32(req.DelegatorAddr) + delAddr, err := k.authKeeper.StringToBytes(req.DelegatorAddr) if err != nil { return nil, err } @@ -517,7 +517,7 @@ func queryRedelegationsFromSrcValidator(store storetypes.KVStore, k Querier, req } func queryAllRedelegations(store storetypes.KVStore, k Querier, req *types.QueryRedelegationsRequest) (redels types.Redelegations, res *query.PageResponse, err error) { - delAddr, err := sdk.AccAddressFromBech32(req.DelegatorAddr) + delAddr, err := k.authKeeper.StringToBytes(req.DelegatorAddr) if err != nil { return nil, nil, err } @@ -543,7 +543,7 @@ func DelegationToDelegationResponse(ctx sdk.Context, k *Keeper, del types.Delega return types.DelegationResponse{}, types.ErrNoValidatorFound } - delegatorAddress, err := sdk.AccAddressFromBech32(del.DelegatorAddress) + delegatorAddress, err := k.authKeeper.StringToBytes(del.DelegatorAddress) if err != nil { return types.DelegationResponse{}, err } @@ -584,7 +584,10 @@ func RedelegationsToRedelegationResponses(ctx sdk.Context, k *Keeper, redels typ panic(err) } - delegatorAddress := sdk.MustAccAddressFromBech32(redel.DelegatorAddress) + delegatorAddress, err := k.authKeeper.StringToBytes(redel.DelegatorAddress) + if err != nil { + return nil, err + } val, found := k.GetValidator(ctx, valDstAddr) if !found { diff --git a/x/staking/keeper/keeper.go b/x/staking/keeper/keeper.go index 7299322e1b..39513647b1 100644 --- a/x/staking/keeper/keeper.go +++ b/x/staking/keeper/keeper.go @@ -47,7 +47,7 @@ func NewKeeper( } // ensure that authority is a valid AccAddress - if _, err := sdk.AccAddressFromBech32(authority); err != nil { + if _, err := ak.StringToBytes(authority); err != nil { panic("authority is not a valid acc address") } diff --git a/x/staking/keeper/keeper_test.go b/x/staking/keeper/keeper_test.go index fb74f5525d..cf7bf5f153 100644 --- a/x/staking/keeper/keeper_test.go +++ b/x/staking/keeper/keeper_test.go @@ -50,6 +50,8 @@ func (s *KeeperTestSuite) SetupTest() { accountKeeper := stakingtestutil.NewMockAccountKeeper(ctrl) accountKeeper.EXPECT().GetModuleAddress(stakingtypes.BondedPoolName).Return(bondedAcc.GetAddress()) accountKeeper.EXPECT().GetModuleAddress(stakingtypes.NotBondedPoolName).Return(notBondedAcc.GetAddress()) + accountKeeper.EXPECT().StringToBytes(authtypes.NewModuleAddress(govtypes.ModuleName).String()).Return(authtypes.NewModuleAddress(govtypes.ModuleName), nil).AnyTimes() + accountKeeper.EXPECT().BytesToString(authtypes.NewModuleAddress(govtypes.ModuleName)).Return(authtypes.NewModuleAddress(govtypes.ModuleName).String(), nil).AnyTimes() bankKeeper := stakingtestutil.NewMockBankKeeper(ctrl) keeper := stakingkeeper.NewKeeper( diff --git a/x/staking/keeper/msg_server.go b/x/staking/keeper/msg_server.go index 2f878e7d74..8f97e1d0ac 100644 --- a/x/staking/keeper/msg_server.go +++ b/x/staking/keeper/msg_server.go @@ -205,7 +205,7 @@ func (k msgServer) Delegate(goCtx context.Context, msg *types.MsgDelegate) (*typ return nil, types.ErrNoValidatorFound } - delegatorAddress, err := sdk.AccAddressFromBech32(msg.DelegatorAddress) + delegatorAddress, err := k.authKeeper.StringToBytes(msg.DelegatorAddress) if err != nil { return nil, err } @@ -253,7 +253,7 @@ func (k msgServer) BeginRedelegate(goCtx context.Context, msg *types.MsgBeginRed if err != nil { return nil, err } - delegatorAddress, err := sdk.AccAddressFromBech32(msg.DelegatorAddress) + delegatorAddress, err := k.authKeeper.StringToBytes(msg.DelegatorAddress) if err != nil { return nil, err } @@ -317,7 +317,7 @@ func (k msgServer) Undelegate(goCtx context.Context, msg *types.MsgUndelegate) ( if err != nil { return nil, err } - delegatorAddress, err := sdk.AccAddressFromBech32(msg.DelegatorAddress) + delegatorAddress, err := k.authKeeper.StringToBytes(msg.DelegatorAddress) if err != nil { return nil, err } @@ -378,7 +378,7 @@ func (k msgServer) CancelUnbondingDelegation(goCtx context.Context, msg *types.M return nil, err } - delegatorAddress, err := sdk.AccAddressFromBech32(msg.DelegatorAddress) + delegatorAddress, err := k.authKeeper.StringToBytes(msg.DelegatorAddress) if err != nil { return nil, err } diff --git a/x/staking/keeper/slash.go b/x/staking/keeper/slash.go index 58cda25091..3d9dc3e00d 100644 --- a/x/staking/keeper/slash.go +++ b/x/staking/keeper/slash.go @@ -271,7 +271,10 @@ func (k Keeper) SlashRedelegation(ctx sdk.Context, srcValidator types.Validator, panic(err) } - delegatorAddress := sdk.MustAccAddressFromBech32(redelegation.DelegatorAddress) + delegatorAddress, err := k.authKeeper.StringToBytes(redelegation.DelegatorAddress) + if err != nil { + panic(err) + } delegation, found := k.GetDelegation(ctx, delegatorAddress, valDstAddr) if !found { diff --git a/x/staking/keeper/unbonding.go b/x/staking/keeper/unbonding.go index c1e8a9443f..bccbe3e14f 100644 --- a/x/staking/keeper/unbonding.go +++ b/x/staking/keeper/unbonding.go @@ -128,7 +128,10 @@ func (k Keeper) GetValidatorByUnbondingID(ctx sdk.Context, id uint64) (val types // Note, it does not set the unbonding delegation itself, use SetUnbondingDelegation(ctx, ubd) for that func (k Keeper) SetUnbondingDelegationByUnbondingID(ctx sdk.Context, ubd types.UnbondingDelegation, id uint64) { store := ctx.KVStore(k.storeKey) - delAddr := sdk.MustAccAddressFromBech32(ubd.DelegatorAddress) + delAddr, err := k.authKeeper.StringToBytes(ubd.DelegatorAddress) + if err != nil { + panic(err) + } valAddr, err := sdk.ValAddressFromBech32(ubd.ValidatorAddress) if err != nil { panic(err) @@ -146,7 +149,10 @@ func (k Keeper) SetUnbondingDelegationByUnbondingID(ctx sdk.Context, ubd types.U func (k Keeper) SetRedelegationByUnbondingID(ctx sdk.Context, red types.Redelegation, id uint64) { store := ctx.KVStore(k.storeKey) - delAddr := sdk.MustAccAddressFromBech32(red.DelegatorAddress) + delAddr, err := k.authKeeper.StringToBytes(red.DelegatorAddress) + if err != nil { + panic(err) + } valSrcAddr, err := sdk.ValAddressFromBech32(red.ValidatorSrcAddress) if err != nil { @@ -260,7 +266,7 @@ func (k Keeper) unbondingDelegationEntryCanComplete(ctx sdk.Context, id uint64) // Check if entry is matured. if !ubd.Entries[i].OnHold() && ubd.Entries[i].IsMature(ctx.BlockHeader().Time) { // If matured, complete it. - delegatorAddress, err := sdk.AccAddressFromBech32(ubd.DelegatorAddress) + delegatorAddress, err := k.authKeeper.StringToBytes(ubd.DelegatorAddress) if err != nil { return err } diff --git a/x/staking/keeper/unbonding_test.go b/x/staking/keeper/unbonding_test.go index 0f2b396a3a..aad30a2fd9 100644 --- a/x/staking/keeper/unbonding_test.go +++ b/x/staking/keeper/unbonding_test.go @@ -56,6 +56,10 @@ func (s *KeeperTestSuite) TestUnbondingTypeAccessors() { func (s *KeeperTestSuite) TestUnbondingDelegationByUnbondingIDAccessors() { delAddrs, valAddrs := createValAddrs(2) + for _, addr := range delAddrs { + s.accountKeeper.EXPECT().StringToBytes(addr.String()).Return(addr, nil).AnyTimes() + s.accountKeeper.EXPECT().BytesToString(addr).Return(addr.String(), nil).AnyTimes() + } type exists struct { setUnbondingDelegation bool @@ -129,6 +133,11 @@ func (s *KeeperTestSuite) TestUnbondingDelegationByUnbondingIDAccessors() { func (s *KeeperTestSuite) TestRedelegationByUnbondingIDAccessors() { delAddrs, valAddrs := createValAddrs(2) + for _, addr := range delAddrs { + s.accountKeeper.EXPECT().StringToBytes(addr.String()).Return(addr, nil).AnyTimes() + s.accountKeeper.EXPECT().BytesToString(addr).Return(addr.String(), nil).AnyTimes() + } + type exists struct { setRedelegation bool setRedelegationByUnbondingID bool @@ -257,6 +266,10 @@ func (s *KeeperTestSuite) TestValidatorByUnbondingIDAccessors() { func (s *KeeperTestSuite) TestUnbondingCanComplete() { delAddrs, valAddrs := createValAddrs(3) + for _, addr := range delAddrs { + s.accountKeeper.EXPECT().StringToBytes(addr.String()).Return(addr, nil).AnyTimes() + s.accountKeeper.EXPECT().BytesToString(addr).Return(addr.String(), nil).AnyTimes() + } unbondingID := uint64(1) // no unbondingID set diff --git a/x/staking/keeper/val_state_change.go b/x/staking/keeper/val_state_change.go index e37db543d0..da6d1a5208 100644 --- a/x/staking/keeper/val_state_change.go +++ b/x/staking/keeper/val_state_change.go @@ -41,7 +41,10 @@ func (k Keeper) BlockValidatorUpdates(ctx sdk.Context) []abci.ValidatorUpdate { if err != nil { panic(err) } - delegatorAddress := sdk.MustAccAddressFromBech32(dvPair.DelegatorAddress) + delegatorAddress, err := k.authKeeper.StringToBytes(dvPair.DelegatorAddress) + if err != nil { + panic(err) + } balances, err := k.CompleteUnbonding(ctx, delegatorAddress, addr) if err != nil { @@ -69,7 +72,10 @@ func (k Keeper) BlockValidatorUpdates(ctx sdk.Context) []abci.ValidatorUpdate { if err != nil { panic(err) } - delegatorAddress := sdk.MustAccAddressFromBech32(dvvTriplet.DelegatorAddress) + delegatorAddress, err := k.authKeeper.StringToBytes(dvvTriplet.DelegatorAddress) + if err != nil { + panic(err) + } balances, err := k.CompleteRedelegation( ctx, diff --git a/x/staking/module.go b/x/staking/module.go index 9674998406..533f690956 100644 --- a/x/staking/module.go +++ b/x/staking/module.go @@ -46,6 +46,7 @@ var ( // AppModuleBasic defines the basic application module used by the staking module. type AppModuleBasic struct { cdc codec.Codec + ak types.AccountKeeper } var _ module.AppModuleBasic = AppModuleBasic{} @@ -94,8 +95,8 @@ func (AppModuleBasic) GetTxCmd() *cobra.Command { } // GetQueryCmd returns no root query command for the staking module. -func (AppModuleBasic) GetQueryCmd() *cobra.Command { - return cli.GetQueryCmd() +func (ab AppModuleBasic) GetQueryCmd() *cobra.Command { + return cli.GetQueryCmd(ab.ak) } // AppModule implements an application module for the staking module. @@ -119,7 +120,7 @@ func NewAppModule( ls exported.Subspace, ) AppModule { return AppModule{ - AppModuleBasic: AppModuleBasic{cdc: cdc}, + AppModuleBasic: AppModuleBasic{cdc: cdc, ak: ak}, keeper: keeper, accountKeeper: ak, bankKeeper: bk, diff --git a/x/staking/testutil/expected_keepers_mocks.go b/x/staking/testutil/expected_keepers_mocks.go index 03e6027160..ba3036da75 100644 --- a/x/staking/testutil/expected_keepers_mocks.go +++ b/x/staking/testutil/expected_keepers_mocks.go @@ -88,6 +88,21 @@ func (m *MockAccountKeeper) EXPECT() *MockAccountKeeperMockRecorder { return m.recorder } +// BytesToString mocks base method. +func (m *MockAccountKeeper) BytesToString(bz []byte) (string, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "BytesToString", bz) + ret0, _ := ret[0].(string) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// BytesToString indicates an expected call of BytesToString. +func (mr *MockAccountKeeperMockRecorder) BytesToString(bz interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "BytesToString", reflect.TypeOf((*MockAccountKeeper)(nil).BytesToString), bz) +} + // GetAccount mocks base method. func (m *MockAccountKeeper) GetAccount(ctx context.Context, addr types.AccAddress) types.AccountI { m.ctrl.T.Helper() @@ -154,6 +169,21 @@ func (mr *MockAccountKeeperMockRecorder) SetModuleAccount(arg0, arg1 interface{} return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetModuleAccount", reflect.TypeOf((*MockAccountKeeper)(nil).SetModuleAccount), arg0, arg1) } +// StringToBytes mocks base method. +func (m *MockAccountKeeper) StringToBytes(text string) ([]byte, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "StringToBytes", text) + ret0, _ := ret[0].([]byte) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// StringToBytes indicates an expected call of StringToBytes. +func (mr *MockAccountKeeperMockRecorder) StringToBytes(text interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "StringToBytes", reflect.TypeOf((*MockAccountKeeper)(nil).StringToBytes), text) +} + // MockBankKeeper is a mock of BankKeeper interface. type MockBankKeeper struct { ctrl *gomock.Controller diff --git a/x/staking/types/expected_keepers.go b/x/staking/types/expected_keepers.go index 12c43cc800..9f2bc78d6e 100644 --- a/x/staking/types/expected_keepers.go +++ b/x/staking/types/expected_keepers.go @@ -24,6 +24,11 @@ type AccountKeeper interface { // TODO remove with genesis 2-phases refactor https://github.com/cosmos/cosmos-sdk/issues/2862 SetModuleAccount(context.Context, sdk.ModuleAccountI) + + // StringToBytes decodes address strings to bytes + StringToBytes(text string) ([]byte, error) + // BytesToString encodes address bytes to text + BytesToString(bz []byte) (string, error) } // BankKeeper defines the expected interface needed to retrieve account balances.