From c8ab555174ef5b1f8557b80361d8b83754f62f6a Mon Sep 17 00:00:00 2001 From: Marko Date: Mon, 22 May 2023 12:20:45 +0200 Subject: [PATCH] refactor(bech32): remove embedding of addresscodec (#16197) --- simapp/app.go | 8 +- x/auth/keeper/deterministic_test.go | 2 +- x/auth/keeper/grpc_query.go | 8 +- x/auth/keeper/keeper.go | 14 ++-- x/auth/module.go | 2 +- x/auth/vesting/module.go | 2 +- x/auth/vesting/msg_server.go | 12 +-- x/authz/expected_keepers.go | 3 +- x/authz/keeper/genesis.go | 4 +- x/authz/keeper/genesis_test.go | 7 +- x/authz/keeper/grpc_query.go | 8 +- x/authz/keeper/keeper_test.go | 10 +-- x/authz/keeper/msg_server.go | 10 +-- x/authz/keeper/msg_server_test.go | 3 +- x/authz/module/abci_test.go | 4 +- x/authz/module/module.go | 2 +- x/authz/testutil/expected_keepers_mocks.go | 33 ++------ x/distribution/keeper/genesis.go | 6 +- x/distribution/keeper/grpc_query.go | 8 +- x/distribution/keeper/msg_server.go | 14 ++-- x/distribution/module.go | 2 +- .../testutil/expected_keepers_mocks.go | 33 ++------ x/distribution/types/expected_keepers.go | 5 +- x/feegrant/expected_keepers.go | 2 +- x/feegrant/go.mod | 16 +++- x/feegrant/go.sum | 16 ++-- x/feegrant/keeper/genesis_test.go | 13 +-- x/feegrant/keeper/grpc_query.go | 8 +- x/feegrant/keeper/grpc_query_test.go | 7 -- x/feegrant/keeper/keeper.go | 4 +- x/feegrant/keeper/keeper_test.go | 12 +-- x/feegrant/keeper/msg_server.go | 8 +- x/feegrant/keeper/msg_server_test.go | 15 ---- x/feegrant/module/abci_test.go | 11 +-- x/feegrant/module/module.go | 2 +- x/feegrant/simulation/operations_test.go | 5 +- x/feegrant/testutil/expected_keepers_mocks.go | 33 ++------ x/gov/genesis.go | 2 +- x/gov/keeper/common_test.go | 4 +- x/gov/keeper/deposit.go | 6 +- x/gov/keeper/deposit_test.go | 10 +-- x/gov/keeper/grpc_query.go | 8 +- x/gov/keeper/hooks_test.go | 6 +- x/gov/keeper/keeper.go | 2 +- x/gov/keeper/keeper_test.go | 12 +-- x/gov/keeper/msg_server.go | 10 +-- x/gov/keeper/msg_server_test.go | 32 +------ x/gov/keeper/tally.go | 2 +- x/gov/keeper/vote_test.go | 6 +- x/gov/module.go | 2 +- x/gov/testutil/expected_keepers_mocks.go | 33 ++------ x/gov/types/expected_keepers.go | 2 +- x/group/expected_keepers.go | 2 +- x/group/keeper/genesis_test.go | 6 +- x/group/keeper/grpc_query.go | 12 +-- x/group/keeper/grpc_query_test.go | 4 +- x/group/keeper/keeper.go | 10 +-- x/group/keeper/keeper_test.go | 14 +--- x/group/keeper/msg_server.go | 30 +++---- x/group/keeper/msg_server_test.go | 24 ++---- x/group/module/module.go | 2 +- x/group/testutil/expected_keepers_mocks.go | 33 ++------ x/nft/expected_keepers.go | 3 +- x/nft/keeper/grpc_query_test.go | 3 +- x/nft/keeper/keeper.go | 2 +- x/nft/keeper/keeper_test.go | 5 +- x/nft/module/module.go | 2 +- x/nft/testutil/expected_keepers_mocks.go | 33 ++------ x/staking/keeper/delegation.go | 18 ++-- x/staking/keeper/delegation_test.go | 83 +------------------ x/staking/keeper/genesis.go | 2 +- x/staking/keeper/grpc_query.go | 20 ++--- x/staking/keeper/keeper.go | 2 +- x/staking/keeper/keeper_test.go | 7 +- x/staking/keeper/msg_server.go | 8 +- x/staking/keeper/msg_server_test.go | 18 ++-- x/staking/keeper/slash.go | 2 +- x/staking/keeper/unbonding.go | 6 +- x/staking/keeper/unbonding_test.go | 14 +--- x/staking/keeper/val_state_change.go | 4 +- x/staking/module.go | 2 +- x/staking/testutil/expected_keepers_mocks.go | 33 ++------ x/staking/types/expected_keepers.go | 2 +- 83 files changed, 292 insertions(+), 603 deletions(-) diff --git a/simapp/app.go b/simapp/app.go index 636b0f17ed..38fe85e212 100644 --- a/simapp/app.go +++ b/simapp/app.go @@ -291,7 +291,7 @@ func NewSimApp( invCheckPeriod := cast.ToUint(appOpts.Get(server.FlagInvCheckPeriod)) app.CrisisKeeper = crisiskeeper.NewKeeper(appCodec, runtime.NewKVStoreService(keys[crisistypes.StoreKey]), invCheckPeriod, - app.BankKeeper, authtypes.FeeCollectorName, authtypes.NewModuleAddress(govtypes.ModuleName).String(), app.AccountKeeper.GetAddressCodec()) + app.BankKeeper, authtypes.FeeCollectorName, authtypes.NewModuleAddress(govtypes.ModuleName).String(), app.AccountKeeper.AddressCodec()) app.FeeGrantKeeper = feegrantkeeper.NewKeeper(appCodec, runtime.NewKVStoreService(keys[feegrant.StoreKey]), app.AccountKeeper) @@ -301,7 +301,7 @@ func NewSimApp( stakingtypes.NewMultiStakingHooks(app.DistrKeeper.Hooks(), app.SlashingKeeper.Hooks()), ) - app.CircuitKeeper = circuitkeeper.NewKeeper(keys[circuittypes.StoreKey], authtypes.NewModuleAddress(govtypes.ModuleName).String(), app.AccountKeeper.GetAddressCodec()) + app.CircuitKeeper = circuitkeeper.NewKeeper(keys[circuittypes.StoreKey], authtypes.NewModuleAddress(govtypes.ModuleName).String(), app.AccountKeeper.AddressCodec()) app.AuthzKeeper = authzkeeper.NewKeeper(runtime.NewKVStoreService(keys[authzkeeper.StoreKey]), appCodec, app.MsgServiceRouter(), app.AccountKeeper) @@ -352,7 +352,7 @@ func NewSimApp( // create evidence keeper with router evidenceKeeper := evidencekeeper.NewKeeper( - appCodec, runtime.NewKVStoreService(keys[evidencetypes.StoreKey]), app.StakingKeeper, app.SlashingKeeper, app.AccountKeeper.GetAddressCodec(), runtime.ProvideCometInfoService(), + appCodec, runtime.NewKVStoreService(keys[evidencetypes.StoreKey]), app.StakingKeeper, app.SlashingKeeper, app.AccountKeeper.AddressCodec(), runtime.ProvideCometInfoService(), ) // If evidence needs to be handled for the app, set routes in router here and seal app.EvidenceKeeper = *evidenceKeeper @@ -380,7 +380,7 @@ func NewSimApp( slashing.NewAppModule(appCodec, app.SlashingKeeper, app.AccountKeeper, app.BankKeeper, app.StakingKeeper, app.GetSubspace(slashingtypes.ModuleName), app.interfaceRegistry), distr.NewAppModule(appCodec, app.DistrKeeper, app.AccountKeeper, app.BankKeeper, app.StakingKeeper, app.GetSubspace(distrtypes.ModuleName)), staking.NewAppModule(appCodec, app.StakingKeeper, app.AccountKeeper, app.BankKeeper, app.GetSubspace(stakingtypes.ModuleName)), - upgrade.NewAppModule(app.UpgradeKeeper, app.AccountKeeper.GetAddressCodec()), + upgrade.NewAppModule(app.UpgradeKeeper, app.AccountKeeper.AddressCodec()), evidence.NewAppModule(app.EvidenceKeeper), params.NewAppModule(app.ParamsKeeper), authzmodule.NewAppModule(appCodec, app.AuthzKeeper, app.AccountKeeper, app.BankKeeper, app.interfaceRegistry), diff --git a/x/auth/keeper/deterministic_test.go b/x/auth/keeper/deterministic_test.go index febd134df8..aad05c5ef0 100644 --- a/x/auth/keeper/deterministic_test.go +++ b/x/auth/keeper/deterministic_test.go @@ -145,7 +145,7 @@ func (suite *DeterministicTestSuite) TestGRPCQueryAccounts() { }) // Regression test - addr1, err := suite.accountKeeper.GetAddressCodec().StringToBytes("cosmos1892yr6fzlj7ud0kfkah2ctrav3a4p4n060ze8f") + addr1, err := suite.accountKeeper.AddressCodec().StringToBytes("cosmos1892yr6fzlj7ud0kfkah2ctrav3a4p4n060ze8f") suite.Require().NoError(err) pub1, err := hex.DecodeString("D1002E1B019000010BB7034500E71F011F1CA90D5B000E134BFB0F3603030D0303") suite.Require().NoError(err) diff --git a/x/auth/keeper/grpc_query.go b/x/auth/keeper/grpc_query.go index 0ef589ecec..bfcb4dfea7 100644 --- a/x/auth/keeper/grpc_query.go +++ b/x/auth/keeper/grpc_query.go @@ -84,7 +84,7 @@ func (s queryServer) Account(c context.Context, req *types.QueryAccountRequest) } ctx := sdk.UnwrapSDKContext(c) - addr, err := s.k.StringToBytes(req.Address) + addr, err := s.k.addressCodec.StringToBytes(req.Address) if err != nil { return nil, err } @@ -190,7 +190,7 @@ func (s queryServer) AddressBytesToString(ctx context.Context, req *types.Addres return nil, errors.New("empty address bytes is not allowed") } - text, err := s.k.BytesToString(req.AddressBytes) + text, err := s.k.addressCodec.BytesToString(req.AddressBytes) if err != nil { return nil, err } @@ -209,7 +209,7 @@ func (s queryServer) AddressStringToBytes(ctx context.Context, req *types.Addres return nil, errors.New("empty address string is not allowed") } - bz, err := s.k.StringToBytes(req.AddressString) + bz, err := s.k.addressCodec.StringToBytes(req.AddressString) if err != nil { return nil, err } @@ -228,7 +228,7 @@ func (s queryServer) AccountInfo(goCtx context.Context, req *types.QueryAccountI } ctx := sdk.UnwrapSDKContext(goCtx) - addr, err := s.k.StringToBytes(req.Address) + addr, err := s.k.addressCodec.StringToBytes(req.Address) if err != nil { return nil, err } diff --git a/x/auth/keeper/keeper.go b/x/auth/keeper/keeper.go index a5e626f1dd..18240beb25 100644 --- a/x/auth/keeper/keeper.go +++ b/x/auth/keeper/keeper.go @@ -22,8 +22,6 @@ import ( // AccountKeeperI is the interface contract that x/auth's keeper implements. type AccountKeeperI interface { - address.Codec - // Return a new account with the next account number and the specified address. Does not save the new account to the store. NewAccountWithAddress(context.Context, sdk.AccAddress) sdk.AccountI @@ -56,12 +54,14 @@ type AccountKeeperI interface { // GetModulePermissions fetches per-module account permissions GetModulePermissions() map[string]types.PermissionsForAddress + + AddressCodec() address.Codec } // AccountKeeper encodes/decodes accounts using the go-amino (binary) // encoding/decoding library. type AccountKeeper struct { - address.Codec + addressCodec address.Codec storeService store.KVStoreService cdc codec.BinaryCodec @@ -100,7 +100,7 @@ func NewAccountKeeper( sb := collections.NewSchemaBuilder(storeService) return AccountKeeper{ - Codec: authcodec.NewBech32Codec(bech32Prefix), + addressCodec: authcodec.NewBech32Codec(bech32Prefix), bech32Prefix: bech32Prefix, storeService: storeService, proto: proto, @@ -117,10 +117,10 @@ func (ak AccountKeeper) GetAuthority() string { return ak.authority } -// GetAddressCodec returns the x/auth module's address. +// AddressCodec returns the x/auth module's address. // x/auth is tied to bech32 encoded user accounts -func (ak AccountKeeper) GetAddressCodec() address.Codec { - return ak.Codec +func (ak AccountKeeper) AddressCodec() address.Codec { + return ak.addressCodec } // Logger returns a module-specific logger. diff --git a/x/auth/module.go b/x/auth/module.go index 81a7ba8d40..00667b524e 100644 --- a/x/auth/module.go +++ b/x/auth/module.go @@ -117,7 +117,7 @@ func (am AppModule) IsAppModule() {} // NewAppModule creates a new AppModule object func NewAppModule(cdc codec.Codec, accountKeeper keeper.AccountKeeper, randGenAccountsFn types.RandomGenesisAccountsFn, ss exported.Subspace) AppModule { return AppModule{ - AppModuleBasic: AppModuleBasic{ac: accountKeeper.GetAddressCodec()}, + AppModuleBasic: AppModuleBasic{ac: accountKeeper.AddressCodec()}, accountKeeper: accountKeeper, randGenAccountsFn: randGenAccountsFn, legacySubspace: ss, diff --git a/x/auth/vesting/module.go b/x/auth/vesting/module.go index 4b16397fa2..0a3dc9a8e7 100644 --- a/x/auth/vesting/module.go +++ b/x/auth/vesting/module.go @@ -88,7 +88,7 @@ type AppModule struct { func NewAppModule(ak keeper.AccountKeeper, bk types.BankKeeper) AppModule { return AppModule{ - AppModuleBasic: AppModuleBasic{ac: ak}, + AppModuleBasic: AppModuleBasic{ac: ak.AddressCodec()}, accountKeeper: ak, bankKeeper: bk, } diff --git a/x/auth/vesting/msg_server.go b/x/auth/vesting/msg_server.go index 5664266dfd..27eb3e110b 100644 --- a/x/auth/vesting/msg_server.go +++ b/x/auth/vesting/msg_server.go @@ -29,12 +29,12 @@ func NewMsgServerImpl(k keeper.AccountKeeper, bk types.BankKeeper) types.MsgServ var _ types.MsgServer = msgServer{} func (s msgServer) CreateVestingAccount(goCtx context.Context, msg *types.MsgCreateVestingAccount) (*types.MsgCreateVestingAccountResponse, error) { - from, err := s.AccountKeeper.StringToBytes(msg.FromAddress) + from, err := s.AccountKeeper.AddressCodec().StringToBytes(msg.FromAddress) if err != nil { return nil, sdkerrors.ErrInvalidAddress.Wrapf("invalid 'from' address: %s", err) } - to, err := s.AccountKeeper.StringToBytes(msg.ToAddress) + to, err := s.AccountKeeper.AddressCodec().StringToBytes(msg.ToAddress) if err != nil { return nil, sdkerrors.ErrInvalidAddress.Wrapf("invalid 'to' address: %s", err) } @@ -95,12 +95,12 @@ func (s msgServer) CreateVestingAccount(goCtx context.Context, msg *types.MsgCre } func (s msgServer) CreatePermanentLockedAccount(goCtx context.Context, msg *types.MsgCreatePermanentLockedAccount) (*types.MsgCreatePermanentLockedAccountResponse, error) { - from, err := s.AccountKeeper.StringToBytes(msg.FromAddress) + from, err := s.AccountKeeper.AddressCodec().StringToBytes(msg.FromAddress) if err != nil { return nil, sdkerrors.ErrInvalidAddress.Wrapf("invalid 'from' address: %s", err) } - to, err := s.AccountKeeper.StringToBytes(msg.ToAddress) + to, err := s.AccountKeeper.AddressCodec().StringToBytes(msg.ToAddress) if err != nil { return nil, sdkerrors.ErrInvalidAddress.Wrapf("invalid 'to' address: %s", err) } @@ -150,12 +150,12 @@ func (s msgServer) CreatePermanentLockedAccount(goCtx context.Context, msg *type } func (s msgServer) CreatePeriodicVestingAccount(goCtx context.Context, msg *types.MsgCreatePeriodicVestingAccount) (*types.MsgCreatePeriodicVestingAccountResponse, error) { - from, err := s.AccountKeeper.StringToBytes(msg.FromAddress) + from, err := s.AccountKeeper.AddressCodec().StringToBytes(msg.FromAddress) if err != nil { return nil, sdkerrors.ErrInvalidAddress.Wrapf("invalid 'from' address: %s", err) } - to, err := s.AccountKeeper.StringToBytes(msg.ToAddress) + to, err := s.AccountKeeper.AddressCodec().StringToBytes(msg.ToAddress) if err != nil { return nil, sdkerrors.ErrInvalidAddress.Wrapf("invalid 'to' address: %s", err) } diff --git a/x/authz/expected_keepers.go b/x/authz/expected_keepers.go index 5c11533fcd..2db295aa7e 100644 --- a/x/authz/expected_keepers.go +++ b/x/authz/expected_keepers.go @@ -10,8 +10,7 @@ import ( // AccountKeeper defines the expected account keeper (noalias) type AccountKeeper interface { - address.Codec - + AddressCodec() address.Codec GetAccount(ctx context.Context, addr sdk.AccAddress) sdk.AccountI NewAccountWithAddress(ctx context.Context, addr sdk.AccAddress) sdk.AccountI SetAccount(ctx context.Context, acc sdk.AccountI) diff --git a/x/authz/keeper/genesis.go b/x/authz/keeper/genesis.go index e1dadebcd3..91c99ac4ba 100644 --- a/x/authz/keeper/genesis.go +++ b/x/authz/keeper/genesis.go @@ -14,11 +14,11 @@ func (k Keeper) InitGenesis(ctx sdk.Context, data *authz.GenesisState) { continue } - grantee, err := k.authKeeper.StringToBytes(entry.Grantee) + grantee, err := k.authKeeper.AddressCodec().StringToBytes(entry.Grantee) if err != nil { panic(err) } - granter, err := k.authKeeper.StringToBytes(entry.Granter) + granter, err := k.authKeeper.AddressCodec().StringToBytes(entry.Granter) if err != nil { panic(err) } diff --git a/x/authz/keeper/genesis_test.go b/x/authz/keeper/genesis_test.go index 99f901a720..729d24e43b 100644 --- a/x/authz/keeper/genesis_test.go +++ b/x/authz/keeper/genesis_test.go @@ -13,6 +13,7 @@ import ( "github.com/golang/mock/gomock" "github.com/cosmos/cosmos-sdk/baseapp" + "github.com/cosmos/cosmos-sdk/codec/address" "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1" "github.com/cosmos/cosmos-sdk/runtime" "github.com/cosmos/cosmos-sdk/testutil" @@ -51,11 +52,7 @@ func (suite *GenesisTestSuite) SetupTest() { // gomock initializations ctrl := gomock.NewController(suite.T()) suite.accountKeeper = authztestutil.NewMockAccountKeeper(ctrl) - - suite.accountKeeper.EXPECT().StringToBytes(granteeAddr.String()).Return(granteeAddr, nil).AnyTimes() - suite.accountKeeper.EXPECT().BytesToString(granterAddr).Return(granterAddr.String(), nil).AnyTimes() - suite.accountKeeper.EXPECT().StringToBytes(granterAddr.String()).Return(granterAddr, nil).AnyTimes() - suite.accountKeeper.EXPECT().BytesToString(granterAddr).Return(granterAddr.String(), nil).AnyTimes() + suite.accountKeeper.EXPECT().AddressCodec().Return(address.NewBech32Codec("cosmos")).AnyTimes() suite.baseApp = baseapp.NewBaseApp( "authz", diff --git a/x/authz/keeper/grpc_query.go b/x/authz/keeper/grpc_query.go index 5278d5874b..de4cd060d0 100644 --- a/x/authz/keeper/grpc_query.go +++ b/x/authz/keeper/grpc_query.go @@ -25,12 +25,12 @@ func (k Keeper) Grants(ctx context.Context, req *authz.QueryGrantsRequest) (*aut return nil, status.Errorf(codes.InvalidArgument, "empty request") } - granter, err := k.authKeeper.StringToBytes(req.Granter) + granter, err := k.authKeeper.AddressCodec().StringToBytes(req.Granter) if err != nil { return nil, err } - grantee, err := k.authKeeper.StringToBytes(req.Grantee) + grantee, err := k.authKeeper.AddressCodec().StringToBytes(req.Grantee) if err != nil { return nil, err } @@ -95,7 +95,7 @@ func (k Keeper) GranterGrants(ctx context.Context, req *authz.QueryGranterGrants return nil, status.Errorf(codes.InvalidArgument, "empty request") } - granter, err := k.authKeeper.StringToBytes(req.Granter) + granter, err := k.authKeeper.AddressCodec().StringToBytes(req.Granter) if err != nil { return nil, err } @@ -140,7 +140,7 @@ func (k Keeper) GranteeGrants(ctx context.Context, req *authz.QueryGranteeGrants return nil, status.Errorf(codes.InvalidArgument, "empty request") } - grantee, err := k.authKeeper.StringToBytes(req.Grantee) + grantee, err := k.authKeeper.AddressCodec().StringToBytes(req.Grantee) if err != nil { return nil, err } diff --git a/x/authz/keeper/keeper_test.go b/x/authz/keeper/keeper_test.go index c7bfa602fc..165a47d488 100644 --- a/x/authz/keeper/keeper_test.go +++ b/x/authz/keeper/keeper_test.go @@ -1,7 +1,6 @@ package keeper_test import ( - "errors" "testing" "time" @@ -14,6 +13,7 @@ import ( storetypes "cosmossdk.io/store/types" "github.com/cosmos/cosmos-sdk/baseapp" + "github.com/cosmos/cosmos-sdk/codec/address" "github.com/cosmos/cosmos-sdk/runtime" "github.com/cosmos/cosmos-sdk/testutil" simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" @@ -68,12 +68,8 @@ func (s *TestSuite) SetupTest() { // gomock initializations ctrl := gomock.NewController(s.T()) s.accountKeeper = authztestutil.NewMockAccountKeeper(ctrl) - for _, addr := range s.addrs { - s.accountKeeper.EXPECT().StringToBytes(addr.String()).Return(addr, nil).AnyTimes() - s.accountKeeper.EXPECT().BytesToString(addr).Return(addr.String(), nil).AnyTimes() - } - s.accountKeeper.EXPECT().StringToBytes("").Return(nil, errors.New("empty address string is not allowed")).AnyTimes() - s.accountKeeper.EXPECT().StringToBytes("invalid").Return(nil, errors.New("invalid bech32 string")).AnyTimes() + + s.accountKeeper.EXPECT().AddressCodec().Return(address.NewBech32Codec("cosmos")).AnyTimes() s.bankKeeper = authztestutil.NewMockBankKeeper(ctrl) banktypes.RegisterInterfaces(s.encCfg.InterfaceRegistry) diff --git a/x/authz/keeper/msg_server.go b/x/authz/keeper/msg_server.go index cb367c689d..8f5b0cb793 100644 --- a/x/authz/keeper/msg_server.go +++ b/x/authz/keeper/msg_server.go @@ -19,12 +19,12 @@ func (k Keeper) Grant(goCtx context.Context, msg *authz.MsgGrant) (*authz.MsgGra return nil, authz.ErrGranteeIsGranter } - grantee, err := k.authKeeper.StringToBytes(msg.Grantee) + grantee, err := k.authKeeper.AddressCodec().StringToBytes(msg.Grantee) if err != nil { return nil, sdkerrors.ErrInvalidAddress.Wrapf("invalid grantee address: %s", err) } - granter, err := k.authKeeper.StringToBytes(msg.Granter) + granter, err := k.authKeeper.AddressCodec().StringToBytes(msg.Granter) if err != nil { return nil, sdkerrors.ErrInvalidAddress.Wrapf("invalid granter address: %s", err) } @@ -65,12 +65,12 @@ func (k Keeper) Revoke(goCtx context.Context, msg *authz.MsgRevoke) (*authz.MsgR return nil, authz.ErrGranteeIsGranter } - grantee, err := k.authKeeper.StringToBytes(msg.Grantee) + grantee, err := k.authKeeper.AddressCodec().StringToBytes(msg.Grantee) if err != nil { return nil, sdkerrors.ErrInvalidAddress.Wrapf("invalid grantee address: %s", err) } - granter, err := k.authKeeper.StringToBytes(msg.Granter) + granter, err := k.authKeeper.AddressCodec().StringToBytes(msg.Granter) if err != nil { return nil, sdkerrors.ErrInvalidAddress.Wrapf("invalid granter address: %s", err) } @@ -94,7 +94,7 @@ func (k Keeper) Exec(goCtx context.Context, msg *authz.MsgExec) (*authz.MsgExecR return nil, errors.New("empty address string is not allowed") } - grantee, err := k.authKeeper.StringToBytes(msg.Grantee) + grantee, err := k.authKeeper.AddressCodec().StringToBytes(msg.Grantee) if err != nil { return nil, sdkerrors.ErrInvalidAddress.Wrapf("invalid grantee address: %s", err) } diff --git a/x/authz/keeper/msg_server_test.go b/x/authz/keeper/msg_server_test.go index 5143b8dd39..96e65fed4a 100644 --- a/x/authz/keeper/msg_server_test.go +++ b/x/authz/keeper/msg_server_test.go @@ -5,6 +5,7 @@ import ( sdkmath "cosmossdk.io/math" + "github.com/cosmos/cosmos-sdk/codec/address" simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" sdk "github.com/cosmos/cosmos-sdk/types" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" @@ -26,7 +27,7 @@ func (suite *TestSuite) TestGrant() { addrs := suite.createAccounts(2) curBlockTime := ctx.BlockTime() - suite.accountKeeper.EXPECT().StringToBytes(sdk.AccAddress("valid").String()).Return(sdk.AccAddress("valid"), nil).AnyTimes() + suite.accountKeeper.EXPECT().AddressCodec().Return(address.NewBech32Codec("cosmos")).AnyTimes() oneHour := curBlockTime.Add(time.Hour) oneYear := curBlockTime.AddDate(1, 0, 0) diff --git a/x/authz/module/abci_test.go b/x/authz/module/abci_test.go index dde9f86bbe..2d9b39536e 100644 --- a/x/authz/module/abci_test.go +++ b/x/authz/module/abci_test.go @@ -11,6 +11,7 @@ import ( "github.com/stretchr/testify/require" "github.com/cosmos/cosmos-sdk/baseapp" + "github.com/cosmos/cosmos-sdk/codec/address" "github.com/cosmos/cosmos-sdk/runtime" "github.com/cosmos/cosmos-sdk/testutil" simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" @@ -61,8 +62,7 @@ func TestExpiredGrantsQueue(t *testing.T) { accountKeeper.EXPECT().GetAccount(gomock.Any(), grantee3).Return(authtypes.NewBaseAccountWithAddress(grantee3)).AnyTimes() accountKeeper.EXPECT().GetAccount(gomock.Any(), grantee4).Return(authtypes.NewBaseAccountWithAddress(grantee4)).AnyTimes() - accountKeeper.EXPECT().StringToBytes(granter.String()).Return(granter, nil).AnyTimes() - accountKeeper.EXPECT().BytesToString(granter).Return(granter.String(), nil).AnyTimes() + accountKeeper.EXPECT().AddressCodec().Return(address.NewBech32Codec("cosmos")).AnyTimes() authzKeeper := keeper.NewKeeper(storeService, encCfg.Codec, baseApp.MsgServiceRouter(), accountKeeper) diff --git a/x/authz/module/module.go b/x/authz/module/module.go index b0d3a16ae0..bf398012f8 100644 --- a/x/authz/module/module.go +++ b/x/authz/module/module.go @@ -114,7 +114,7 @@ type AppModule struct { // NewAppModule creates a new AppModule object func NewAppModule(cdc codec.Codec, keeper keeper.Keeper, ak authz.AccountKeeper, bk authz.BankKeeper, registry cdctypes.InterfaceRegistry) AppModule { return AppModule{ - AppModuleBasic: AppModuleBasic{cdc: cdc, ac: ak}, + AppModuleBasic: AppModuleBasic{cdc: cdc, ac: ak.AddressCodec()}, keeper: keeper, accountKeeper: ak, bankKeeper: bk, diff --git a/x/authz/testutil/expected_keepers_mocks.go b/x/authz/testutil/expected_keepers_mocks.go index 5746692ea5..b9e8f521c3 100644 --- a/x/authz/testutil/expected_keepers_mocks.go +++ b/x/authz/testutil/expected_keepers_mocks.go @@ -8,6 +8,7 @@ import ( context "context" reflect "reflect" + address "cosmossdk.io/core/address" types "github.com/cosmos/cosmos-sdk/types" gomock "github.com/golang/mock/gomock" ) @@ -35,19 +36,18 @@ func (m *MockAccountKeeper) EXPECT() *MockAccountKeeperMockRecorder { return m.recorder } -// BytesToString mocks base method. -func (m *MockAccountKeeper) BytesToString(bz []byte) (string, error) { +// AddressCodec mocks base method. +func (m *MockAccountKeeper) AddressCodec() address.Codec { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "BytesToString", bz) - ret0, _ := ret[0].(string) - ret1, _ := ret[1].(error) - return ret0, ret1 + ret := m.ctrl.Call(m, "AddressCodec") + ret0, _ := ret[0].(address.Codec) + return ret0 } -// BytesToString indicates an expected call of BytesToString. -func (mr *MockAccountKeeperMockRecorder) BytesToString(bz interface{}) *gomock.Call { +// AddressCodec indicates an expected call of AddressCodec. +func (mr *MockAccountKeeperMockRecorder) AddressCodec() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "BytesToString", reflect.TypeOf((*MockAccountKeeper)(nil).BytesToString), bz) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddressCodec", reflect.TypeOf((*MockAccountKeeper)(nil).AddressCodec)) } // GetAccount mocks base method. @@ -90,21 +90,6 @@ func (mr *MockAccountKeeperMockRecorder) SetAccount(ctx, acc interface{}) *gomoc return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetAccount", reflect.TypeOf((*MockAccountKeeper)(nil).SetAccount), ctx, acc) } -// 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/distribution/keeper/genesis.go b/x/distribution/keeper/genesis.go index ad0024ee4b..188b042cb7 100644 --- a/x/distribution/keeper/genesis.go +++ b/x/distribution/keeper/genesis.go @@ -18,11 +18,11 @@ func (k Keeper) InitGenesis(ctx sdk.Context, data types.GenesisState) { } for _, dwi := range data.DelegatorWithdrawInfos { - delegatorAddress, err := k.authKeeper.StringToBytes(dwi.DelegatorAddress) + delegatorAddress, err := k.authKeeper.AddressCodec().StringToBytes(dwi.DelegatorAddress) if err != nil { panic(err) } - withdrawAddress, err := k.authKeeper.StringToBytes(dwi.WithdrawAddress) + withdrawAddress, err := k.authKeeper.AddressCodec().StringToBytes(dwi.WithdrawAddress) if err != nil { panic(err) } @@ -74,7 +74,7 @@ func (k Keeper) InitGenesis(ctx sdk.Context, data types.GenesisState) { if err != nil { panic(err) } - delegatorAddress, err := k.authKeeper.StringToBytes(del.DelegatorAddress) + delegatorAddress, err := k.authKeeper.AddressCodec().StringToBytes(del.DelegatorAddress) if err != nil { panic(err) } diff --git a/x/distribution/keeper/grpc_query.go b/x/distribution/keeper/grpc_query.go index c780a92632..7d0916ca55 100644 --- a/x/distribution/keeper/grpc_query.go +++ b/x/distribution/keeper/grpc_query.go @@ -217,7 +217,7 @@ func (k Querier) DelegationRewards(c context.Context, req *types.QueryDelegation return nil, errors.Wrap(types.ErrNoValidatorExists, req.ValidatorAddress) } - delAdr, err := k.authKeeper.StringToBytes(req.DelegatorAddress) + delAdr, err := k.authKeeper.AddressCodec().StringToBytes(req.DelegatorAddress) if err != nil { return nil, err } @@ -254,7 +254,7 @@ func (k Querier) DelegationTotalRewards(c context.Context, req *types.QueryDeleg total := sdk.DecCoins{} var delRewards []types.DelegationDelegatorReward - delAdr, err := k.authKeeper.StringToBytes(req.DelegatorAddress) + delAdr, err := k.authKeeper.AddressCodec().StringToBytes(req.DelegatorAddress) if err != nil { return nil, err } @@ -294,7 +294,7 @@ func (k Querier) DelegatorValidators(c context.Context, req *types.QueryDelegato } ctx := sdk.UnwrapSDKContext(c) - delAdr, err := k.authKeeper.StringToBytes(req.DelegatorAddress) + delAdr, err := k.authKeeper.AddressCodec().StringToBytes(req.DelegatorAddress) if err != nil { return nil, err } @@ -320,7 +320,7 @@ func (k Querier) DelegatorWithdrawAddress(c context.Context, req *types.QueryDel if req.DelegatorAddress == "" { return nil, status.Error(codes.InvalidArgument, "empty delegator address") } - delAdr, err := k.authKeeper.StringToBytes(req.DelegatorAddress) + delAdr, err := k.authKeeper.AddressCodec().StringToBytes(req.DelegatorAddress) if err != nil { return nil, err } diff --git a/x/distribution/keeper/msg_server.go b/x/distribution/keeper/msg_server.go index 7b54562e7e..3c93cf2b27 100644 --- a/x/distribution/keeper/msg_server.go +++ b/x/distribution/keeper/msg_server.go @@ -26,12 +26,12 @@ func NewMsgServerImpl(keeper Keeper) types.MsgServer { } func (k msgServer) SetWithdrawAddress(ctx context.Context, msg *types.MsgSetWithdrawAddress) (*types.MsgSetWithdrawAddressResponse, error) { - delegatorAddress, err := k.authKeeper.StringToBytes(msg.DelegatorAddress) + delegatorAddress, err := k.authKeeper.AddressCodec().StringToBytes(msg.DelegatorAddress) if err != nil { return nil, sdkerrors.ErrInvalidAddress.Wrapf("invalid delegator address: %s", err) } - withdrawAddress, err := k.authKeeper.StringToBytes(msg.WithdrawAddress) + withdrawAddress, err := k.authKeeper.AddressCodec().StringToBytes(msg.WithdrawAddress) if err != nil { return nil, sdkerrors.ErrInvalidAddress.Wrapf("invalid withdraw address: %s", err) } @@ -50,7 +50,7 @@ func (k msgServer) WithdrawDelegatorReward(ctx context.Context, msg *types.MsgWi return nil, sdkerrors.ErrInvalidAddress.Wrapf("invalid validator address: %s", err) } - delegatorAddress, err := k.authKeeper.StringToBytes(msg.DelegatorAddress) + delegatorAddress, err := k.authKeeper.AddressCodec().StringToBytes(msg.DelegatorAddress) if err != nil { return nil, sdkerrors.ErrInvalidAddress.Wrapf("invalid delegator address: %s", err) } @@ -102,7 +102,7 @@ func (k msgServer) WithdrawValidatorCommission(ctx context.Context, msg *types.M } func (k msgServer) FundCommunityPool(ctx context.Context, msg *types.MsgFundCommunityPool) (*types.MsgFundCommunityPoolResponse, error) { - depositor, err := k.authKeeper.StringToBytes(msg.Depositor) + depositor, err := k.authKeeper.AddressCodec().StringToBytes(msg.Depositor) if err != nil { return nil, sdkerrors.ErrInvalidAddress.Wrapf("invalid depositor address: %s", err) } @@ -148,7 +148,7 @@ func (k msgServer) CommunityPoolSpend(ctx context.Context, msg *types.MsgCommuni return nil, err } - recipient, err := k.authKeeper.StringToBytes(msg.Recipient) + recipient, err := k.authKeeper.AddressCodec().StringToBytes(msg.Recipient) if err != nil { return nil, err } @@ -168,7 +168,7 @@ func (k msgServer) CommunityPoolSpend(ctx context.Context, msg *types.MsgCommuni } func (k msgServer) DepositValidatorRewardsPool(ctx context.Context, msg *types.MsgDepositValidatorRewardsPool) (*types.MsgDepositValidatorRewardsPoolResponse, error) { - depositor, err := k.authKeeper.StringToBytes(msg.Depositor) + depositor, err := k.authKeeper.AddressCodec().StringToBytes(msg.Depositor) if err != nil { return nil, err } @@ -206,7 +206,7 @@ func (k msgServer) DepositValidatorRewardsPool(ctx context.Context, msg *types.M } func (k *Keeper) validateAuthority(authority string) error { - if _, err := k.authKeeper.StringToBytes(authority); err != nil { + if _, err := k.authKeeper.AddressCodec().StringToBytes(authority); err != nil { return sdkerrors.ErrInvalidAddress.Wrapf("invalid authority address: %s", err) } diff --git a/x/distribution/module.go b/x/distribution/module.go index 0712146a55..725b6d0330 100644 --- a/x/distribution/module.go +++ b/x/distribution/module.go @@ -113,7 +113,7 @@ func NewAppModule( bankKeeper types.BankKeeper, stakingKeeper types.StakingKeeper, ss exported.Subspace, ) AppModule { return AppModule{ - AppModuleBasic: AppModuleBasic{cdc: cdc, ac: accountKeeper}, + AppModuleBasic: AppModuleBasic{cdc: cdc, ac: accountKeeper.AddressCodec()}, keeper: keeper, accountKeeper: accountKeeper, bankKeeper: bankKeeper, diff --git a/x/distribution/testutil/expected_keepers_mocks.go b/x/distribution/testutil/expected_keepers_mocks.go index 864d22caf4..c4d2ab9eea 100644 --- a/x/distribution/testutil/expected_keepers_mocks.go +++ b/x/distribution/testutil/expected_keepers_mocks.go @@ -8,6 +8,7 @@ import ( context "context" reflect "reflect" + address "cosmossdk.io/core/address" types "github.com/cosmos/cosmos-sdk/types" types0 "github.com/cosmos/cosmos-sdk/x/staking/types" gomock "github.com/golang/mock/gomock" @@ -36,19 +37,18 @@ func (m *MockAccountKeeper) EXPECT() *MockAccountKeeperMockRecorder { return m.recorder } -// BytesToString mocks base method. -func (m *MockAccountKeeper) BytesToString(bz []byte) (string, error) { +// AddressCodec mocks base method. +func (m *MockAccountKeeper) AddressCodec() address.Codec { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "BytesToString", bz) - ret0, _ := ret[0].(string) - ret1, _ := ret[1].(error) - return ret0, ret1 + ret := m.ctrl.Call(m, "AddressCodec") + ret0, _ := ret[0].(address.Codec) + return ret0 } -// BytesToString indicates an expected call of BytesToString. -func (mr *MockAccountKeeperMockRecorder) BytesToString(bz interface{}) *gomock.Call { +// AddressCodec indicates an expected call of AddressCodec. +func (mr *MockAccountKeeperMockRecorder) AddressCodec() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "BytesToString", reflect.TypeOf((*MockAccountKeeper)(nil).BytesToString), bz) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddressCodec", reflect.TypeOf((*MockAccountKeeper)(nil).AddressCodec)) } // GetAccount mocks base method. @@ -105,21 +105,6 @@ 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/distribution/types/expected_keepers.go b/x/distribution/types/expected_keepers.go index fd09e4c13c..fde51dc751 100644 --- a/x/distribution/types/expected_keepers.go +++ b/x/distribution/types/expected_keepers.go @@ -11,13 +11,10 @@ import ( // AccountKeeper defines the expected account keeper used for simulations (noalias) type AccountKeeper interface { - address.Codec - + AddressCodec() address.Codec GetAccount(ctx context.Context, addr sdk.AccAddress) sdk.AccountI - GetModuleAddress(name string) sdk.AccAddress GetModuleAccount(ctx context.Context, name string) sdk.ModuleAccountI - // TODO remove with genesis 2-phases refactor https://github.com/cosmos/cosmos-sdk/issues/2862 SetModuleAccount(context.Context, sdk.ModuleAccountI) } diff --git a/x/feegrant/expected_keepers.go b/x/feegrant/expected_keepers.go index 5127b8af26..ce6a2d0a56 100644 --- a/x/feegrant/expected_keepers.go +++ b/x/feegrant/expected_keepers.go @@ -10,7 +10,7 @@ import ( // AccountKeeper defines the expected auth Account Keeper (noalias) type AccountKeeper interface { - address.Codec + AddressCodec() address.Codec GetModuleAddress(moduleName string) sdk.AccAddress GetModuleAccount(ctx context.Context, moduleName string) sdk.ModuleAccountI diff --git a/x/feegrant/go.mod b/x/feegrant/go.mod index 43c3cbd382..837df03b07 100644 --- a/x/feegrant/go.mod +++ b/x/feegrant/go.mod @@ -6,7 +6,7 @@ require ( cosmossdk.io/api v0.4.1 cosmossdk.io/core v0.7.0 cosmossdk.io/depinject v1.0.0-alpha.3 - cosmossdk.io/errors v1.0.0-beta.7 + cosmossdk.io/errors v1.0.0-beta.7.0.20230429155654-3ee8242364e4 cosmossdk.io/log v1.1.0 cosmossdk.io/math v1.0.1 cosmossdk.io/store v0.1.0-alpha.1.0.20230328185921-37ba88872dbc @@ -27,7 +27,7 @@ require ( require ( cosmossdk.io/collections v0.1.0 // indirect - cosmossdk.io/x/tx v0.5.5 // indirect + cosmossdk.io/x/tx v0.6.3 // indirect filippo.io/edwards25519 v1.0.0 // indirect github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect github.com/99designs/keyring v1.2.1 // indirect @@ -51,7 +51,8 @@ require ( github.com/cosmos/cosmos-db v1.0.0-rc.1 // indirect github.com/cosmos/go-bip39 v1.0.0 // indirect github.com/cosmos/gogogateway v1.2.0 // indirect - github.com/cosmos/iavl v0.21.0-beta.1 // indirect + github.com/cosmos/iavl v0.21.0 // indirect + github.com/cosmos/ics23/go v0.10.0 // indirect github.com/cosmos/ledger-cosmos-go v0.13.0 // indirect github.com/creachadair/taskgroup v0.4.2 // indirect github.com/danieljoos/wincred v1.1.2 // indirect @@ -154,3 +155,12 @@ require ( pgregory.net/rapid v0.5.7 // indirect sigs.k8s.io/yaml v1.3.0 // indirect ) + +// Below are the short-lived replace of the evidence module +replace ( + // TODO: remove me when collections v0.2.0 is released + cosmossdk.io/collections => ../../collections + cosmossdk.io/store => ../../store + cosmossdk.io/x/tx => ../tx + github.com/cosmos/cosmos-sdk => ../../ +) diff --git a/x/feegrant/go.sum b/x/feegrant/go.sum index e7cd3df507..3c1f92e23f 100644 --- a/x/feegrant/go.sum +++ b/x/feegrant/go.sum @@ -43,16 +43,16 @@ cosmossdk.io/core v0.7.0 h1:GFss3qt2P9p23Cz24NnqLkslzb8n+B75A24x1JgJJp0= cosmossdk.io/core v0.7.0/go.mod h1:36hP0ZH/8ipsjzfcp0yKU4bqQXUGhS0/m1krWFCtwCc= cosmossdk.io/depinject v1.0.0-alpha.3 h1:6evFIgj//Y3w09bqOUOzEpFj5tsxBqdc5CfkO7z+zfw= cosmossdk.io/depinject v1.0.0-alpha.3/go.mod h1:eRbcdQ7MRpIPEM5YUJh8k97nxHpYbc3sMUnEtt8HPWU= -cosmossdk.io/errors v1.0.0-beta.7 h1:gypHW76pTQGVnHKo6QBkb4yFOJjC+sUGRc5Al3Odj1w= -cosmossdk.io/errors v1.0.0-beta.7/go.mod h1:mz6FQMJRku4bY7aqS/Gwfcmr/ue91roMEKAmDUDpBfE= +cosmossdk.io/errors v1.0.0-beta.7.0.20230429155654-3ee8242364e4 h1:rOy7iw7HlwKc5Af5qIHLXdBx/F98o6du/I/WGwOW6eA= +cosmossdk.io/errors v1.0.0-beta.7.0.20230429155654-3ee8242364e4/go.mod h1:AwrAxbvuH9FdatzJX463kMYNMVkjujWU/xR+HsimWTw= cosmossdk.io/log v1.1.0 h1:v0ogPHYeTzPcBTcPR1A3j1hkei4pZama8kz8LKlCMv0= cosmossdk.io/log v1.1.0/go.mod h1:6zjroETlcDs+mm62gd8Ig7mZ+N+fVOZS91V17H+M4N4= cosmossdk.io/math v1.0.1 h1:Qx3ifyOPaMLNH/89WeZFH268yCvU4xEcnPLu3sJqPPg= cosmossdk.io/math v1.0.1/go.mod h1:Ygz4wBHrgc7g0N+8+MrnTfS9LLn9aaTGa9hKopuym5k= cosmossdk.io/store v0.1.0-alpha.1.0.20230328185921-37ba88872dbc h1:9piuA+NYmhe+SyMPtMoboLw/djgDbrI3dD5TG020Tnk= cosmossdk.io/store v0.1.0-alpha.1.0.20230328185921-37ba88872dbc/go.mod h1:UFF5rmjN7WYVfxo6ArdY/l1+yyWMURBWOmSJypGqFHQ= -cosmossdk.io/x/tx v0.5.5 h1:9XG3KOrqObt7Rw7KhT7fiqRd6EepUfmA9ERa8CHj1WM= -cosmossdk.io/x/tx v0.5.5/go.mod h1:Oh3Kh+IPOfMEILNxVd2e8SLqRrIjYHpdGBfDg4ghU/k= +cosmossdk.io/x/tx v0.6.3 h1:B9uRBUYrjEuq972T0ma0BCDu5QDElqsQkJuM+UZlDhA= +cosmossdk.io/x/tx v0.6.3/go.mod h1:Fm+6hJnc0Zivgy90sPbAHaDnucg1qyo8MtA7h3qJHP0= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= filippo.io/edwards25519 v1.0.0 h1:0wAIcmJUqRdI8IJ/3eGi5/HwXZWPujYXXlkrQogz0Ek= filippo.io/edwards25519 v1.0.0/go.mod h1:N1IkdkCkiLB6tki+MYJoSx2JTY9NUlxZE7eHn5EwJns= @@ -187,8 +187,6 @@ github.com/cosmos/cosmos-db v1.0.0-rc.1 h1:SjnT8B6WKMW9WEIX32qMhnEEKcI7ZP0+G1Sa9 github.com/cosmos/cosmos-db v1.0.0-rc.1/go.mod h1:Dnmk3flSf5lkwCqvvjNpoxjpXzhxnCAFzKHlbaForso= github.com/cosmos/cosmos-proto v1.0.0-beta.3 h1:VitvZ1lPORTVxkmF2fAp3IiA61xVwArQYKXTdEcpW6o= github.com/cosmos/cosmos-proto v1.0.0-beta.3/go.mod h1:t8IASdLaAq+bbHbjq4p960BvcTqtwuAxid3b/2rOD6I= -github.com/cosmos/cosmos-sdk v0.46.0-beta2.0.20230426101247-6dfe7351a5c2 h1:VjzSCR3T3w2+YW0fjNLbHIvB2EjpGGbsZ0jEZ3mIn2A= -github.com/cosmos/cosmos-sdk v0.46.0-beta2.0.20230426101247-6dfe7351a5c2/go.mod h1:AD4IKrBq+M+oy1hlaBaDkyFcvoR82cLg0mS6lE2K0nU= github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d/go.mod h1:tSxLoYXyBmiFeKpvmq4dzayMdCjCnu8uqmCysIGBT2Y= github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY= github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw= @@ -197,8 +195,10 @@ github.com/cosmos/gogogateway v1.2.0/go.mod h1:iQpLkGWxYcnCdz5iAdLcRBSw3h7NXeOkZ github.com/cosmos/gogoproto v1.4.2/go.mod h1:cLxOsn1ljAHSV527CHOtaIP91kK6cCrZETRBrkzItWU= github.com/cosmos/gogoproto v1.4.10 h1:QH/yT8X+c0F4ZDacDv3z+xE3WU1P1Z3wQoLMBRJoKuI= github.com/cosmos/gogoproto v1.4.10/go.mod h1:3aAZzeRWpAwr+SS/LLkICX2/kDFyaYVzckBDzygIxek= -github.com/cosmos/iavl v0.21.0-beta.1 h1:fBQeBc8HLZ14plJNcmGfaOXSSMLVEHvEQXiTXSD76m0= -github.com/cosmos/iavl v0.21.0-beta.1/go.mod h1:25YJYzilTErJ2mKfNB3xyWL9IsCwEQdNzdIutg2mh3U= +github.com/cosmos/iavl v0.21.0 h1:E39qwHl45PaQUe/mRA8lY4kOqaunOorVQufpv5JPgXk= +github.com/cosmos/iavl v0.21.0/go.mod h1:ejCWRfxvfmQTcligmeRcoQeB8VgHGxkVlIqKSKG7YaI= +github.com/cosmos/ics23/go v0.10.0 h1:iXqLLgp2Lp+EdpIuwXTYIQU+AiHj9mOC2X9ab++bZDM= +github.com/cosmos/ics23/go v0.10.0/go.mod h1:ZfJSmng/TBNTBkFemHHHj5YY7VAU/MBU980F4VU1NG0= github.com/cosmos/ledger-cosmos-go v0.13.0 h1:ex0CvCxToSR7j5WjrghPu2Bu9sSXKikjnVvUryNnx4s= github.com/cosmos/ledger-cosmos-go v0.13.0/go.mod h1:ZcqYgnfNJ6lAXe4HPtWgarNEY+B74i+2/8MhZw4ziiI= github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= diff --git a/x/feegrant/keeper/genesis_test.go b/x/feegrant/keeper/genesis_test.go index 6f24f2b4fa..f3303d454f 100644 --- a/x/feegrant/keeper/genesis_test.go +++ b/x/feegrant/keeper/genesis_test.go @@ -13,6 +13,7 @@ import ( "cosmossdk.io/x/feegrant/module" feegranttestutil "cosmossdk.io/x/feegrant/testutil" + "github.com/cosmos/cosmos-sdk/codec/address" codectypes "github.com/cosmos/cosmos-sdk/codec/types" "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1" "github.com/cosmos/cosmos-sdk/runtime" @@ -43,6 +44,7 @@ func initFixture(t *testing.T) *genesisFixture { ctrl := gomock.NewController(t) accountKeeper := feegranttestutil.NewMockAccountKeeper(ctrl) + accountKeeper.EXPECT().AddressCodec().Return(address.NewBech32Codec("cosmos")).AnyTimes() return &genesisFixture{ ctx: testCtx.Ctx, @@ -55,8 +57,7 @@ func TestImportExportGenesis(t *testing.T) { f := initFixture(t) f.accountKeeper.EXPECT().GetAccount(gomock.Any(), granteeAddr).Return(authtypes.NewBaseAccountWithAddress(granteeAddr)).AnyTimes() - f.accountKeeper.EXPECT().StringToBytes(granteeAddr.String()).Return(granteeAddr, nil).AnyTimes() - f.accountKeeper.EXPECT().StringToBytes(granterAddr.String()).Return(granterAddr, nil).AnyTimes() + f.accountKeeper.EXPECT().AddressCodec().Return(address.NewBech32Codec("cosmos")).AnyTimes() coins := sdk.NewCoins(sdk.NewCoin("foo", sdk.NewInt(1_000))) now := f.ctx.BlockHeader().Time @@ -132,16 +133,10 @@ func TestInitGenesis(t *testing.T) { t.Run(tc.name, func(t *testing.T) { f := initFixture(t) if !tc.invalidAddr { - f.accountKeeper.EXPECT().StringToBytes(tc.feeAllowances[0].Grantee).Return(granteeAddr, nil).AnyTimes() - f.accountKeeper.EXPECT().StringToBytes(tc.feeAllowances[0].Granter).Return(granterAddr, nil).AnyTimes() - err := f.feegrantKeeper.InitGenesis(f.ctx, &feegrant.GenesisState{Allowances: tc.feeAllowances}) assert.ErrorContains(t, err, "failed to get allowance: no allowance") } else { - expectedErr := errors.New("errors") - f.accountKeeper.EXPECT().StringToBytes(tc.feeAllowances[0].Grantee).Return(nil, expectedErr).AnyTimes() - f.accountKeeper.EXPECT().StringToBytes(tc.feeAllowances[0].Granter).Return(nil, expectedErr).AnyTimes() - + expectedErr := errors.New("decoding bech32 failed") err := f.feegrantKeeper.InitGenesis(f.ctx, &feegrant.GenesisState{Allowances: tc.feeAllowances}) assert.ErrorContains(t, err, expectedErr.Error()) } diff --git a/x/feegrant/keeper/grpc_query.go b/x/feegrant/keeper/grpc_query.go index bb3e281651..9b97a17887 100644 --- a/x/feegrant/keeper/grpc_query.go +++ b/x/feegrant/keeper/grpc_query.go @@ -25,12 +25,12 @@ func (q Keeper) Allowance(c context.Context, req *feegrant.QueryAllowanceRequest return nil, status.Error(codes.InvalidArgument, "invalid request") } - granterAddr, err := q.authKeeper.StringToBytes(req.Granter) + granterAddr, err := q.authKeeper.AddressCodec().StringToBytes(req.Granter) if err != nil { return nil, err } - granteeAddr, err := q.authKeeper.StringToBytes(req.Grantee) + granteeAddr, err := q.authKeeper.AddressCodec().StringToBytes(req.Grantee) if err != nil { return nil, err } @@ -67,7 +67,7 @@ func (q Keeper) Allowances(c context.Context, req *feegrant.QueryAllowancesReque return nil, status.Error(codes.InvalidArgument, "invalid request") } - granteeAddr, err := q.authKeeper.StringToBytes(req.Grantee) + granteeAddr, err := q.authKeeper.AddressCodec().StringToBytes(req.Grantee) if err != nil { return nil, err } @@ -102,7 +102,7 @@ func (q Keeper) AllowancesByGranter(c context.Context, req *feegrant.QueryAllowa return nil, status.Error(codes.InvalidArgument, "invalid request") } - granterAddr, err := q.authKeeper.StringToBytes(req.Granter) + granterAddr, err := q.authKeeper.AddressCodec().StringToBytes(req.Granter) if err != nil { return nil, err } diff --git a/x/feegrant/keeper/grpc_query_test.go b/x/feegrant/keeper/grpc_query_test.go index 358a2812fe..9c6e0fba99 100644 --- a/x/feegrant/keeper/grpc_query_test.go +++ b/x/feegrant/keeper/grpc_query_test.go @@ -1,8 +1,6 @@ package keeper_test import ( - "errors" - "cosmossdk.io/x/feegrant" sdk "github.com/cosmos/cosmos-sdk/types" ) @@ -13,9 +11,6 @@ const ( ) func (suite *KeeperTestSuite) TestFeeAllowance() { - suite.accountKeeper.EXPECT().StringToBytes(invalidGranter).Return(nil, errors.New("decoding bech32 failed")).AnyTimes() - suite.accountKeeper.EXPECT().StringToBytes(invalidGrantee).Return(nil, errors.New("decoding bech32 failed")).AnyTimes() - testCases := []struct { name string req *feegrant.QueryAllowanceRequest @@ -92,7 +87,6 @@ func (suite *KeeperTestSuite) TestFeeAllowance() { } func (suite *KeeperTestSuite) TestFeeAllowances() { - suite.accountKeeper.EXPECT().StringToBytes(invalidGrantee).Return(nil, errors.New("decoding bech32 failed")).AnyTimes() testCases := []struct { name string req *feegrant.QueryAllowancesRequest @@ -159,7 +153,6 @@ func (suite *KeeperTestSuite) TestFeeAllowances() { } func (suite *KeeperTestSuite) TestFeeAllowancesByGranter() { - suite.accountKeeper.EXPECT().StringToBytes(invalidGrantee).Return(nil, errors.New("decoding bech32 failed")).AnyTimes() testCases := []struct { name string req *feegrant.QueryAllowancesByGranterRequest diff --git a/x/feegrant/keeper/keeper.go b/x/feegrant/keeper/keeper.go index 77905a4b1a..250a9e87a4 100644 --- a/x/feegrant/keeper/keeper.go +++ b/x/feegrant/keeper/keeper.go @@ -270,11 +270,11 @@ func emitUseGrantEvent(ctx context.Context, granter, grantee string) { // InitGenesis will initialize the keeper from a *previously validated* GenesisState func (k Keeper) InitGenesis(ctx context.Context, data *feegrant.GenesisState) error { for _, f := range data.Allowances { - granter, err := k.authKeeper.StringToBytes(f.Granter) + granter, err := k.authKeeper.AddressCodec().StringToBytes(f.Granter) if err != nil { return err } - grantee, err := k.authKeeper.StringToBytes(f.Grantee) + grantee, err := k.authKeeper.AddressCodec().StringToBytes(f.Grantee) if err != nil { return err } diff --git a/x/feegrant/keeper/keeper_test.go b/x/feegrant/keeper/keeper_test.go index 919f47d711..de527485fe 100644 --- a/x/feegrant/keeper/keeper_test.go +++ b/x/feegrant/keeper/keeper_test.go @@ -51,15 +51,7 @@ func (suite *KeeperTestSuite) SetupTest() { suite.accountKeeper.EXPECT().GetAccount(gomock.Any(), suite.addrs[2]).Return(authtypes.NewBaseAccountWithAddress(suite.addrs[2])).AnyTimes() suite.accountKeeper.EXPECT().GetAccount(gomock.Any(), suite.addrs[3]).Return(authtypes.NewBaseAccountWithAddress(suite.addrs[3])).AnyTimes() - suite.accountKeeper.EXPECT().StringToBytes(suite.addrs[0].String()).Return(suite.addrs[0], nil).AnyTimes() - suite.accountKeeper.EXPECT().StringToBytes(suite.addrs[1].String()).Return(suite.addrs[1], nil).AnyTimes() - suite.accountKeeper.EXPECT().StringToBytes(suite.addrs[2].String()).Return(suite.addrs[2], nil).AnyTimes() - suite.accountKeeper.EXPECT().StringToBytes(suite.addrs[3].String()).Return(suite.addrs[3], nil).AnyTimes() - - suite.accountKeeper.EXPECT().BytesToString(suite.addrs[0]).Return(suite.addrs[0].String(), nil).AnyTimes() - suite.accountKeeper.EXPECT().BytesToString(suite.addrs[1]).Return(suite.addrs[1].String(), nil).AnyTimes() - suite.accountKeeper.EXPECT().BytesToString(suite.addrs[2]).Return(suite.addrs[2].String(), nil).AnyTimes() - suite.accountKeeper.EXPECT().BytesToString(suite.addrs[3]).Return(suite.addrs[3].String(), nil).AnyTimes() + suite.accountKeeper.EXPECT().AddressCodec().Return(codecaddress.NewBech32Codec("cosmos")).AnyTimes() suite.feegrantKeeper = keeper.NewKeeper(encCfg.Codec, runtime.NewKVStoreService(key), suite.accountKeeper) suite.ctx = testCtx.Ctx @@ -182,8 +174,6 @@ func (suite *KeeperTestSuite) TestKeeperCrud() { accAddr, err := codecaddress.NewBech32Codec("cosmos").StringToBytes(address) suite.Require().NoError(err) suite.accountKeeper.EXPECT().GetAccount(gomock.Any(), accAddr).Return(authtypes.NewBaseAccountWithAddress(accAddr)).AnyTimes() - suite.accountKeeper.EXPECT().StringToBytes(address).Return(accAddr, nil).AnyTimes() - suite.accountKeeper.EXPECT().BytesToString(accAddr).Return(address, nil).AnyTimes() // let's grant and revoke authorization to non existing account err = suite.feegrantKeeper.GrantAllowance(suite.ctx, suite.addrs[3], accAddr, basic2) diff --git a/x/feegrant/keeper/msg_server.go b/x/feegrant/keeper/msg_server.go index 0c6023a1b3..fbbb70205c 100644 --- a/x/feegrant/keeper/msg_server.go +++ b/x/feegrant/keeper/msg_server.go @@ -33,12 +33,12 @@ func (k msgServer) GrantAllowance(goCtx context.Context, msg *feegrant.MsgGrantA ctx := sdk.UnwrapSDKContext(goCtx) - grantee, err := k.authKeeper.StringToBytes(msg.Grantee) + grantee, err := k.authKeeper.AddressCodec().StringToBytes(msg.Grantee) if err != nil { return nil, err } - granter, err := k.authKeeper.StringToBytes(msg.Granter) + granter, err := k.authKeeper.AddressCodec().StringToBytes(msg.Granter) if err != nil { return nil, err } @@ -72,12 +72,12 @@ func (k msgServer) RevokeAllowance(goCtx context.Context, msg *feegrant.MsgRevok ctx := sdk.UnwrapSDKContext(goCtx) - grantee, err := k.authKeeper.StringToBytes(msg.Grantee) + grantee, err := k.authKeeper.AddressCodec().StringToBytes(msg.Grantee) if err != nil { return nil, err } - granter, err := k.authKeeper.StringToBytes(msg.Granter) + granter, err := k.authKeeper.AddressCodec().StringToBytes(msg.Granter) if err != nil { return nil, err } diff --git a/x/feegrant/keeper/msg_server_test.go b/x/feegrant/keeper/msg_server_test.go index dac0bbdefd..8e20961f5f 100644 --- a/x/feegrant/keeper/msg_server_test.go +++ b/x/feegrant/keeper/msg_server_test.go @@ -1,7 +1,6 @@ package keeper_test import ( - "errors" "time" "cosmossdk.io/x/feegrant" @@ -31,8 +30,6 @@ func (suite *KeeperTestSuite) TestGrantAllowance() { any, err := codectypes.NewAnyWithValue(&feegrant.BasicAllowance{}) suite.Require().NoError(err) invalid := "invalid-granter" - suite.accountKeeper.EXPECT().StringToBytes(invalid).Return(nil, errors.New("decoding bech32 failed")).AnyTimes() - return &feegrant.MsgGrantAllowance{ Granter: invalid, Grantee: suite.addrs[1].String(), @@ -48,8 +45,6 @@ func (suite *KeeperTestSuite) TestGrantAllowance() { any, err := codectypes.NewAnyWithValue(&feegrant.BasicAllowance{}) suite.Require().NoError(err) invalid := "invalid-grantee" - suite.accountKeeper.EXPECT().StringToBytes(invalid).Return(nil, errors.New("decoding bech32 failed")).AnyTimes() - return &feegrant.MsgGrantAllowance{ Granter: suite.addrs[0].String(), Grantee: invalid, @@ -72,8 +67,6 @@ func (suite *KeeperTestSuite) TestGrantAllowance() { suite.Require().NoError(err) suite.accountKeeper.EXPECT().GetAccount(gomock.Any(), granteeAccAddr).Return(nil).AnyTimes() - suite.accountKeeper.EXPECT().StringToBytes(grantee).Return(granteeAccAddr, nil).AnyTimes() - suite.accountKeeper.EXPECT().BytesToString(granteeAccAddr).Return(grantee, nil).AnyTimes() acc := authtypes.NewBaseAccountWithAddress(granteeAccAddr) add, err := addressCodec.StringToBytes(grantee) @@ -81,8 +74,6 @@ func (suite *KeeperTestSuite) TestGrantAllowance() { suite.accountKeeper.EXPECT().NewAccountWithAddress(gomock.Any(), add).Return(acc).AnyTimes() suite.accountKeeper.EXPECT().SetAccount(gomock.Any(), acc).Return() - suite.accountKeeper.EXPECT().StringToBytes(grantee).Return(granteeAccAddr, nil).AnyTimes() - suite.accountKeeper.EXPECT().BytesToString(granteeAccAddr).Return(grantee, nil).AnyTimes() suite.Require().NoError(err) return &feegrant.MsgGrantAllowance{ @@ -200,12 +191,6 @@ func (suite *KeeperTestSuite) TestGrantAllowance() { func (suite *KeeperTestSuite) TestRevokeAllowance() { oneYear := suite.ctx.BlockTime().AddDate(1, 0, 0) - invalidGranter := "invalid-granter" - suite.accountKeeper.EXPECT().StringToBytes(invalidGranter).Return(nil, errors.New("decoding bech32 failed")).AnyTimes() - - invalidGrantee := "invalid-grantee" - suite.accountKeeper.EXPECT().StringToBytes(invalidGrantee).Return(nil, errors.New("decoding bech32 failed")).AnyTimes() - testCases := []struct { name string request *feegrant.MsgRevokeAllowance diff --git a/x/feegrant/module/abci_test.go b/x/feegrant/module/abci_test.go index 7ce3fc48fd..328cfb3afe 100644 --- a/x/feegrant/module/abci_test.go +++ b/x/feegrant/module/abci_test.go @@ -13,6 +13,7 @@ import ( "github.com/stretchr/testify/require" "github.com/cosmos/cosmos-sdk/baseapp" + "github.com/cosmos/cosmos-sdk/codec/address" "github.com/cosmos/cosmos-sdk/runtime" "github.com/cosmos/cosmos-sdk/testutil" simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" @@ -42,15 +43,7 @@ func TestFeegrantPruning(t *testing.T) { accountKeeper.EXPECT().GetAccount(gomock.Any(), granter2).Return(authtypes.NewBaseAccountWithAddress(granter2)).AnyTimes() accountKeeper.EXPECT().GetAccount(gomock.Any(), granter3).Return(authtypes.NewBaseAccountWithAddress(granter3)).AnyTimes() - accountKeeper.EXPECT().StringToBytes(grantee.String()).Return(grantee.Bytes(), nil).AnyTimes() - accountKeeper.EXPECT().StringToBytes(granter1.String()).Return(granter1.Bytes(), nil).AnyTimes() - accountKeeper.EXPECT().StringToBytes(granter2.String()).Return(granter2.Bytes(), nil).AnyTimes() - accountKeeper.EXPECT().StringToBytes(granter3.String()).Return(granter3.Bytes(), nil).AnyTimes() - - accountKeeper.EXPECT().BytesToString(grantee.Bytes()).Return(grantee.String(), nil).AnyTimes() - accountKeeper.EXPECT().BytesToString(granter1.Bytes()).Return(granter1.String(), nil).AnyTimes() - accountKeeper.EXPECT().BytesToString(granter2.Bytes()).Return(granter2.String(), nil).AnyTimes() - accountKeeper.EXPECT().BytesToString(granter3.Bytes()).Return(granter3.String(), nil).AnyTimes() + accountKeeper.EXPECT().AddressCodec().Return(address.NewBech32Codec("cosmos")).AnyTimes() feegrantKeeper := keeper.NewKeeper(encCfg.Codec, runtime.NewKVStoreService(key), accountKeeper) diff --git a/x/feegrant/module/module.go b/x/feegrant/module/module.go index 559c5cec0b..50a14d2f76 100644 --- a/x/feegrant/module/module.go +++ b/x/feegrant/module/module.go @@ -122,7 +122,7 @@ type AppModule struct { // NewAppModule creates a new AppModule object func NewAppModule(cdc codec.Codec, ak feegrant.AccountKeeper, bk feegrant.BankKeeper, keeper keeper.Keeper, registry cdctypes.InterfaceRegistry) AppModule { return AppModule{ - AppModuleBasic: AppModuleBasic{cdc: cdc, ac: ak}, + AppModuleBasic: AppModuleBasic{cdc: cdc, ac: ak.AddressCodec()}, keeper: keeper, accountKeeper: ak, bankKeeper: bk, diff --git a/x/feegrant/simulation/operations_test.go b/x/feegrant/simulation/operations_test.go index a5a2b66e39..cb39948b43 100644 --- a/x/feegrant/simulation/operations_test.go +++ b/x/feegrant/simulation/operations_test.go @@ -18,6 +18,7 @@ import ( _ "github.com/cosmos/cosmos-sdk/x/mint" _ "github.com/cosmos/cosmos-sdk/x/params" _ "github.com/cosmos/cosmos-sdk/x/staking" + "github.com/cosmos/gogoproto/proto" "cosmossdk.io/x/feegrant" "cosmossdk.io/x/feegrant/keeper" @@ -160,7 +161,7 @@ func (suite *SimTestSuite) TestSimulateMsgGrantAllowance() { require.NoError(err) var msg feegrant.MsgGrantAllowance - suite.legacyAmino.UnmarshalJSON(operationMsg.Msg, &msg) + proto.Unmarshal(operationMsg.Msg, &msg) require.True(operationMsg.OK) require.Equal(accounts[2].Address.String(), msg.Granter) @@ -202,7 +203,7 @@ func (suite *SimTestSuite) TestSimulateMsgRevokeAllowance() { require.NoError(err) var msg feegrant.MsgRevokeAllowance - suite.legacyAmino.UnmarshalJSON(operationMsg.Msg, &msg) + proto.Unmarshal(operationMsg.Msg, &msg) require.True(operationMsg.OK) require.Equal(granter.Address.String(), msg.Granter) diff --git a/x/feegrant/testutil/expected_keepers_mocks.go b/x/feegrant/testutil/expected_keepers_mocks.go index 7a20e07b08..d7567b8266 100644 --- a/x/feegrant/testutil/expected_keepers_mocks.go +++ b/x/feegrant/testutil/expected_keepers_mocks.go @@ -8,6 +8,7 @@ import ( context "context" reflect "reflect" + address "cosmossdk.io/core/address" types "github.com/cosmos/cosmos-sdk/types" gomock "github.com/golang/mock/gomock" ) @@ -35,19 +36,18 @@ func (m *MockAccountKeeper) EXPECT() *MockAccountKeeperMockRecorder { return m.recorder } -// BytesToString mocks base method. -func (m *MockAccountKeeper) BytesToString(bz []byte) (string, error) { +// AddressCodec mocks base method. +func (m *MockAccountKeeper) AddressCodec() address.Codec { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "BytesToString", bz) - ret0, _ := ret[0].(string) - ret1, _ := ret[1].(error) - return ret0, ret1 + ret := m.ctrl.Call(m, "AddressCodec") + ret0, _ := ret[0].(address.Codec) + return ret0 } -// BytesToString indicates an expected call of BytesToString. -func (mr *MockAccountKeeperMockRecorder) BytesToString(bz interface{}) *gomock.Call { +// AddressCodec indicates an expected call of AddressCodec. +func (mr *MockAccountKeeperMockRecorder) AddressCodec() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "BytesToString", reflect.TypeOf((*MockAccountKeeper)(nil).BytesToString), bz) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddressCodec", reflect.TypeOf((*MockAccountKeeper)(nil).AddressCodec)) } // GetAccount mocks base method. @@ -118,21 +118,6 @@ func (mr *MockAccountKeeperMockRecorder) SetAccount(ctx, acc interface{}) *gomoc return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetAccount", reflect.TypeOf((*MockAccountKeeper)(nil).SetAccount), ctx, acc) } -// 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/gov/genesis.go b/x/gov/genesis.go index 18ad7043ca..bc86a0cb3e 100644 --- a/x/gov/genesis.go +++ b/x/gov/genesis.go @@ -45,7 +45,7 @@ func InitGenesis(ctx sdk.Context, ak types.AccountKeeper, bk types.BankKeeper, k } for _, vote := range data.Votes { - addr, err := ak.StringToBytes(vote.Voter) + addr, err := ak.AddressCodec().StringToBytes(vote.Voter) if err != nil { panic(err) } diff --git a/x/gov/keeper/common_test.go b/x/gov/keeper/common_test.go index ca9a7d84dd..4181d886af 100644 --- a/x/gov/keeper/common_test.go +++ b/x/gov/keeper/common_test.go @@ -14,6 +14,7 @@ import ( storetypes "cosmossdk.io/store/types" "github.com/cosmos/cosmos-sdk/baseapp" + "github.com/cosmos/cosmos-sdk/codec/address" "github.com/cosmos/cosmos-sdk/runtime" "github.com/cosmos/cosmos-sdk/testutil" "github.com/cosmos/cosmos-sdk/testutil/testdata" @@ -83,8 +84,7 @@ func setupGovKeeper(t *testing.T) ( acctKeeper.EXPECT().GetModuleAddress(types.ModuleName).Return(govAcct).AnyTimes() acctKeeper.EXPECT().GetModuleAddress(disttypes.ModuleName).Return(distAcct).AnyTimes() acctKeeper.EXPECT().GetModuleAccount(gomock.Any(), types.ModuleName).Return(authtypes.NewEmptyModuleAccount(types.ModuleName)).AnyTimes() - acctKeeper.EXPECT().StringToBytes(govAcct.String()).Return(govAcct, nil).AnyTimes() - acctKeeper.EXPECT().BytesToString(govAcct).Return(govAcct.String(), nil).AnyTimes() + acctKeeper.EXPECT().AddressCodec().Return(address.NewBech32Codec("cosmos")).AnyTimes() trackMockBalances(bankKeeper, distributionKeeper) stakingKeeper.EXPECT().TokensFromConsensusPower(ctx, gomock.Any()).DoAndReturn(func(ctx sdk.Context, power int64) math.Int { diff --git a/x/gov/keeper/deposit.go b/x/gov/keeper/deposit.go index 4ec4a5c9de..6acee3f9d3 100644 --- a/x/gov/keeper/deposit.go +++ b/x/gov/keeper/deposit.go @@ -16,7 +16,7 @@ import ( // SetDeposit sets a Deposit to the gov store func (keeper Keeper) SetDeposit(ctx context.Context, deposit v1.Deposit) error { - depositor, err := keeper.authKeeper.StringToBytes(deposit.Depositor) + depositor, err := keeper.authKeeper.AddressCodec().StringToBytes(deposit.Depositor) if err != nil { return err } @@ -147,7 +147,7 @@ func (keeper Keeper) ChargeDeposit(ctx context.Context, proposalID uint64, destA } for _, deposit := range deposits { - depositerAddress, err := keeper.authKeeper.StringToBytes(deposit.Depositor) + depositerAddress, err := keeper.authKeeper.AddressCodec().StringToBytes(deposit.Depositor) if err != nil { return err } @@ -202,7 +202,7 @@ func (keeper Keeper) ChargeDeposit(ctx context.Context, proposalID uint64, destA return err } default: - destAccAddress, err := keeper.authKeeper.StringToBytes(destAddress) + destAccAddress, err := keeper.authKeeper.AddressCodec().StringToBytes(destAddress) if err != nil { return err } diff --git a/x/gov/keeper/deposit_test.go b/x/gov/keeper/deposit_test.go index 3c6c8384c9..ed481338e9 100644 --- a/x/gov/keeper/deposit_test.go +++ b/x/gov/keeper/deposit_test.go @@ -50,10 +50,7 @@ func TestDeposits(t *testing.T) { } TestAddrs := simtestutil.AddTestAddrsIncremental(bankKeeper, stakingKeeper, ctx, 2, sdkmath.NewInt(10000000*depositMultiplier)) - for _, addr := range TestAddrs { - authKeeper.EXPECT().BytesToString(addr).Return(addr.String(), nil).AnyTimes() - authKeeper.EXPECT().StringToBytes(addr.String()).Return(addr, nil).AnyTimes() - } + authKeeper.EXPECT().AddressCodec().Return(address.NewBech32Codec("cosmos")).AnyTimes() tp := TestProposal proposal, err := govKeeper.SubmitProposal(ctx, tp, "", "title", "summary", TestAddrs[0], tc.expedited) @@ -314,10 +311,7 @@ func TestChargeDeposit(t *testing.T) { params := v1.DefaultParams() params.ProposalCancelRatio = tc.proposalCancelRatio TestAddrs := simtestutil.AddTestAddrsIncremental(bankKeeper, stakingKeeper, ctx, 2, sdkmath.NewInt(10000000000)) - for _, addr := range TestAddrs { - authKeeper.EXPECT().BytesToString(addr).Return(addr.String(), nil).AnyTimes() - authKeeper.EXPECT().StringToBytes(addr.String()).Return(addr, nil).AnyTimes() - } + authKeeper.EXPECT().AddressCodec().Return(address.NewBech32Codec("cosmos")).AnyTimes() switch i { case 0: diff --git a/x/gov/keeper/grpc_query.go b/x/gov/keeper/grpc_query.go index 6b2b9f01ed..510e975b43 100644 --- a/x/gov/keeper/grpc_query.go +++ b/x/gov/keeper/grpc_query.go @@ -68,7 +68,7 @@ func (q queryServer) Proposals(ctx context.Context, req *v1.QueryProposalsReques // match voter address (if supplied) if len(req.Voter) > 0 { - voter, err := q.k.authKeeper.StringToBytes(req.Voter) + voter, err := q.k.authKeeper.AddressCodec().StringToBytes(req.Voter) if err != nil { return false, err } @@ -80,7 +80,7 @@ func (q queryServer) Proposals(ctx context.Context, req *v1.QueryProposalsReques // match depositor (if supplied) if len(req.Depositor) > 0 { - depositor, err := q.k.authKeeper.StringToBytes(req.Depositor) + depositor, err := q.k.authKeeper.AddressCodec().StringToBytes(req.Depositor) if err != nil { return false, err } @@ -117,7 +117,7 @@ func (q queryServer) Vote(ctx context.Context, req *v1.QueryVoteRequest) (*v1.Qu return nil, status.Error(codes.InvalidArgument, "empty voter address") } - voter, err := q.k.authKeeper.StringToBytes(req.Voter) + voter, err := q.k.authKeeper.AddressCodec().StringToBytes(req.Voter) if err != nil { return nil, err } @@ -205,7 +205,7 @@ func (q queryServer) Deposit(ctx context.Context, req *v1.QueryDepositRequest) ( return nil, status.Error(codes.InvalidArgument, "empty depositor address") } - depositor, err := q.k.authKeeper.StringToBytes(req.Depositor) + depositor, err := q.k.authKeeper.AddressCodec().StringToBytes(req.Depositor) if err != nil { return nil, err } diff --git a/x/gov/keeper/hooks_test.go b/x/gov/keeper/hooks_test.go index 29c5ccd294..2a8473e56c 100644 --- a/x/gov/keeper/hooks_test.go +++ b/x/gov/keeper/hooks_test.go @@ -7,6 +7,7 @@ import ( "github.com/stretchr/testify/require" + "github.com/cosmos/cosmos-sdk/codec/address" simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/x/gov" @@ -51,10 +52,7 @@ func TestHooks(t *testing.T) { govKeeper, authKeeper, bankKeeper, stakingKeeper, _, _, ctx := setupGovKeeper(t) addrs := simtestutil.AddTestAddrs(bankKeeper, stakingKeeper, ctx, 1, minDeposit[0].Amount) - for _, addr := range addrs { - authKeeper.EXPECT().BytesToString(addr).Return(addr.String(), nil).AnyTimes() - authKeeper.EXPECT().StringToBytes(addr.String()).Return(addr, nil).AnyTimes() - } + authKeeper.EXPECT().AddressCodec().Return(address.NewBech32Codec("cosmos")).AnyTimes() govHooksReceiver := MockGovHooksReceiver{} diff --git a/x/gov/keeper/keeper.go b/x/gov/keeper/keeper.go index 7a390c2ca8..2c520c2a8c 100644 --- a/x/gov/keeper/keeper.go +++ b/x/gov/keeper/keeper.go @@ -81,7 +81,7 @@ func NewKeeper( panic(fmt.Sprintf("%s module account has not been set", types.ModuleName)) } - if _, err := authKeeper.StringToBytes(authority); err != nil { + if _, err := authKeeper.AddressCodec().StringToBytes(authority); err != nil { panic(fmt.Sprintf("invalid authority address: %s", authority)) } diff --git a/x/gov/keeper/keeper_test.go b/x/gov/keeper/keeper_test.go index 07280298b9..7979c62d4e 100644 --- a/x/gov/keeper/keeper_test.go +++ b/x/gov/keeper/keeper_test.go @@ -76,20 +76,17 @@ func (suite *KeeperTestSuite) reset() { suite.legacyMsgSrvr = keeper.NewLegacyMsgServerImpl(govAcct.String(), suite.msgSrvr) suite.addrs = simtestutil.AddTestAddrsIncremental(bankKeeper, stakingKeeper, ctx, 3, sdkmath.NewInt(30000000)) - for _, addr := range suite.addrs { - suite.acctKeeper.EXPECT().BytesToString(addr).Return(addr.String(), nil).AnyTimes() - suite.acctKeeper.EXPECT().StringToBytes(addr.String()).Return(addr, nil).AnyTimes() - } + suite.acctKeeper.EXPECT().AddressCodec().Return(address.NewBech32Codec("cosmos")).AnyTimes() } func TestIncrementProposalNumber(t *testing.T) { govKeeper, authKeeper, _, _, _, _, ctx := setupGovKeeper(t) + authKeeper.EXPECT().AddressCodec().Return(address.NewBech32Codec("cosmos")).AnyTimes() + ac := address.NewBech32Codec("cosmos") addrBz, err := ac.StringToBytes(address1) require.NoError(t, err) - authKeeper.EXPECT().StringToBytes(address1).Return(addrBz, nil).AnyTimes() - authKeeper.EXPECT().BytesToString(addrBz).Return(address1, nil).AnyTimes() tp := TestProposal _, err = govKeeper.SubmitProposal(ctx, tp, "", "test", "summary", addrBz, false) @@ -114,8 +111,7 @@ func TestProposalQueues(t *testing.T) { ac := address.NewBech32Codec("cosmos") addrBz, err := ac.StringToBytes(address1) require.NoError(t, err) - authKeeper.EXPECT().StringToBytes(address1).Return(addrBz, nil).AnyTimes() - authKeeper.EXPECT().BytesToString(addrBz).Return(address1, nil).AnyTimes() + authKeeper.EXPECT().AddressCodec().Return(address.NewBech32Codec("cosmos")).AnyTimes() // create test proposals tp := TestProposal diff --git a/x/gov/keeper/msg_server.go b/x/gov/keeper/msg_server.go index 39ca9971e8..764efede5d 100644 --- a/x/gov/keeper/msg_server.go +++ b/x/gov/keeper/msg_server.go @@ -38,7 +38,7 @@ func (k msgServer) SubmitProposal(goCtx context.Context, msg *v1.MsgSubmitPropos return nil, errors.Wrap(sdkerrors.ErrInvalidRequest, "proposal summary cannot be empty") } - proposer, err := k.authKeeper.StringToBytes(msg.GetProposer()) + proposer, err := k.authKeeper.AddressCodec().StringToBytes(msg.GetProposer()) if err != nil { return nil, sdkerrors.ErrInvalidAddress.Wrapf("invalid proposer address: %s", err) } @@ -102,7 +102,7 @@ func (k msgServer) SubmitProposal(goCtx context.Context, msg *v1.MsgSubmitPropos // CancelProposals implements the MsgServer.CancelProposal method. func (k msgServer) CancelProposal(goCtx context.Context, msg *v1.MsgCancelProposal) (*v1.MsgCancelProposalResponse, error) { - _, err := k.authKeeper.StringToBytes(msg.Proposer) + _, err := k.authKeeper.AddressCodec().StringToBytes(msg.Proposer) if err != nil { return nil, sdkerrors.ErrInvalidAddress.Wrapf("invalid proposer address: %s", err) } @@ -156,7 +156,7 @@ func (k msgServer) ExecLegacyContent(goCtx context.Context, msg *v1.MsgExecLegac // Vote implements the MsgServer.Vote method. func (k msgServer) Vote(goCtx context.Context, msg *v1.MsgVote) (*v1.MsgVoteResponse, error) { - accAddr, err := k.authKeeper.StringToBytes(msg.Voter) + accAddr, err := k.authKeeper.AddressCodec().StringToBytes(msg.Voter) if err != nil { return nil, sdkerrors.ErrInvalidAddress.Wrapf("invalid voter address: %s", err) } @@ -184,7 +184,7 @@ func (k msgServer) Vote(goCtx context.Context, msg *v1.MsgVote) (*v1.MsgVoteResp // VoteWeighted implements the MsgServer.VoteWeighted method. func (k msgServer) VoteWeighted(goCtx context.Context, msg *v1.MsgVoteWeighted) (*v1.MsgVoteWeightedResponse, error) { - accAddr, accErr := k.authKeeper.StringToBytes(msg.Voter) + accAddr, accErr := k.authKeeper.AddressCodec().StringToBytes(msg.Voter) if accErr != nil { return nil, sdkerrors.ErrInvalidAddress.Wrapf("invalid voter address: %s", accErr) } @@ -237,7 +237,7 @@ func (k msgServer) VoteWeighted(goCtx context.Context, msg *v1.MsgVoteWeighted) // Deposit implements the MsgServer.Deposit method. func (k msgServer) Deposit(goCtx context.Context, msg *v1.MsgDeposit) (*v1.MsgDepositResponse, error) { - accAddr, err := k.authKeeper.StringToBytes(msg.Depositor) + accAddr, err := k.authKeeper.AddressCodec().StringToBytes(msg.Depositor) if err != nil { return nil, sdkerrors.ErrInvalidAddress.Wrapf("invalid depositor address: %s", err) } diff --git a/x/gov/keeper/msg_server_test.go b/x/gov/keeper/msg_server_test.go index bb7e114051..f8e2496673 100644 --- a/x/gov/keeper/msg_server_test.go +++ b/x/gov/keeper/msg_server_test.go @@ -1,7 +1,6 @@ package keeper_test import ( - "errors" "strings" "time" @@ -20,11 +19,7 @@ const ( o1 = "-0.1" ) -var ( - longAddress = "cosmos1v9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpv9skzctpg0s5ed" - longAddressError = "address max length is 255" - emptyAddressError = "empty address string is not allowed" -) +var longAddressError = "address max length is 255" func (suite *KeeperTestSuite) TestSubmitProposalReq() { suite.reset() @@ -42,8 +37,6 @@ func (suite *KeeperTestSuite) TestSubmitProposalReq() { Amount: coins, } - suite.acctKeeper.EXPECT().StringToBytes("").Return(nil, errors.New(emptyAddressError)) - cases := map[string]struct { preRun func() (*v1.MsgSubmitProposal, error) expErr bool @@ -241,8 +234,6 @@ func (suite *KeeperTestSuite) TestCancelProposalReq() { suite.Require().NotNil(res.ProposalId) proposalID := res.ProposalId - suite.acctKeeper.EXPECT().StringToBytes("").Return(nil, errors.New(emptyAddressError)) - cases := map[string]struct { preRun func() uint64 expErr bool @@ -338,9 +329,6 @@ func (suite *KeeperTestSuite) TestVoteReq() { ) suite.Require().NoError(err) - suite.acctKeeper.EXPECT().StringToBytes(longAddress).Return(nil, errors.New(longAddressError)).AnyTimes() - suite.acctKeeper.EXPECT().StringToBytes("").Return(nil, errors.New(emptyAddressError)) - res, err := suite.msgSrvr.SubmitProposal(suite.ctx, msg) suite.Require().NoError(err) suite.Require().NotNil(res.ProposalId) @@ -489,9 +477,6 @@ func (suite *KeeperTestSuite) TestVoteWeightedReq() { suite.Require().NotNil(res.ProposalId) proposalID := res.ProposalId - suite.acctKeeper.EXPECT().StringToBytes(longAddress).Return(nil, errors.New(longAddressError)).AnyTimes() - suite.acctKeeper.EXPECT().StringToBytes("").Return(nil, errors.New(emptyAddressError)) - cases := map[string]struct { preRun func() uint64 vote *v1.MsgVote @@ -735,8 +720,6 @@ func (suite *KeeperTestSuite) TestDepositReq() { suite.Require().NotNil(res.ProposalId) pID := res.ProposalId - suite.acctKeeper.EXPECT().StringToBytes("").Return(nil, errors.New(emptyAddressError)) - cases := map[string]struct { preRun func() uint64 expErr bool @@ -796,8 +779,6 @@ func (suite *KeeperTestSuite) TestLegacyMsgSubmitProposal() { params, _ := suite.govKeeper.Params.Get(suite.ctx) minDeposit := params.MinDeposit - suite.acctKeeper.EXPECT().StringToBytes("").Return(nil, errors.New(emptyAddressError)) - cases := map[string]struct { preRun func() (*v1beta1.MsgSubmitProposal, error) expErr bool @@ -931,9 +912,6 @@ func (suite *KeeperTestSuite) TestLegacyMsgVote() { suite.Require().NotNil(res.ProposalId) proposalID := res.ProposalId - suite.acctKeeper.EXPECT().StringToBytes(longAddress).Return(nil, errors.New(longAddressError)).AnyTimes() - suite.acctKeeper.EXPECT().StringToBytes("").Return(nil, errors.New(emptyAddressError)) - cases := map[string]struct { preRun func() uint64 expErr bool @@ -1067,9 +1045,6 @@ func (suite *KeeperTestSuite) TestLegacyVoteWeighted() { suite.Require().NotNil(res.ProposalId) proposalID := res.ProposalId - suite.acctKeeper.EXPECT().StringToBytes(longAddress).Return(nil, errors.New(longAddressError)).AnyTimes() - suite.acctKeeper.EXPECT().StringToBytes("").Return(nil, errors.New(emptyAddressError)) - cases := map[string]struct { preRun func() uint64 vote *v1beta1.MsgVote @@ -1321,8 +1296,6 @@ func (suite *KeeperTestSuite) TestLegacyMsgDeposit() { suite.Require().NotNil(res.ProposalId) pID := res.ProposalId - suite.acctKeeper.EXPECT().StringToBytes("").Return(nil, errors.New(emptyAddressError)) - cases := map[string]struct { preRun func() uint64 expErr bool @@ -1693,9 +1666,6 @@ func (suite *KeeperTestSuite) TestSubmitProposal_InitialDeposit() { govKeeper, ctx := suite.govKeeper, suite.ctx address := simtestutil.AddTestAddrs(suite.bankKeeper, suite.stakingKeeper, ctx, 1, tc.accountBalance[0].Amount)[0] - suite.acctKeeper.EXPECT().StringToBytes(address.String()).Return(address, nil).AnyTimes() - suite.acctKeeper.EXPECT().BytesToString(address).Return(address.String(), nil).AnyTimes() - params := v1.DefaultParams() params.MinDeposit = tc.minDeposit params.MinInitialDepositRatio = tc.minInitialDepositRatio.String() diff --git a/x/gov/keeper/tally.go b/x/gov/keeper/tally.go index 641ea060bc..acd79d7abb 100644 --- a/x/gov/keeper/tally.go +++ b/x/gov/keeper/tally.go @@ -43,7 +43,7 @@ func (keeper Keeper) Tally(ctx context.Context, proposal v1.Proposal) (passes, b rng := collections.NewPrefixedPairRange[uint64, sdk.AccAddress](proposal.Id) err = keeper.Votes.Walk(ctx, rng, func(key collections.Pair[uint64, sdk.AccAddress], vote v1.Vote) (bool, error) { // if validator, just record it in the map - voter, err := keeper.authKeeper.StringToBytes(vote.Voter) + voter, err := keeper.authKeeper.AddressCodec().StringToBytes(vote.Voter) if err != nil { return false, err } diff --git a/x/gov/keeper/vote_test.go b/x/gov/keeper/vote_test.go index 7155826a8f..b7b05066b4 100644 --- a/x/gov/keeper/vote_test.go +++ b/x/gov/keeper/vote_test.go @@ -8,6 +8,7 @@ import ( sdkmath "cosmossdk.io/math" "github.com/stretchr/testify/require" + "github.com/cosmos/cosmos-sdk/codec/address" simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" sdk "github.com/cosmos/cosmos-sdk/types" v1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1" @@ -16,10 +17,7 @@ import ( func TestVotes(t *testing.T) { govKeeper, authKeeper, bankKeeper, stakingKeeper, _, _, ctx := setupGovKeeper(t) addrs := simtestutil.AddTestAddrsIncremental(bankKeeper, stakingKeeper, ctx, 2, sdkmath.NewInt(10000000)) - for _, addr := range addrs { - authKeeper.EXPECT().BytesToString(addr).Return(addr.String(), nil).AnyTimes() - authKeeper.EXPECT().StringToBytes(addr.String()).Return(addr, nil).AnyTimes() - } + authKeeper.EXPECT().AddressCodec().Return(address.NewBech32Codec("cosmos")).AnyTimes() tp := TestProposal proposal, err := govKeeper.SubmitProposal(ctx, tp, "", "title", "description", sdk.AccAddress("cosmos1ghekyjucln7y67ntx7cf27m9dpuxxemn4c8g4r"), false) diff --git a/x/gov/module.go b/x/gov/module.go index 19fee11bfc..01a8d43960 100644 --- a/x/gov/module.go +++ b/x/gov/module.go @@ -139,7 +139,7 @@ func NewAppModule( ak govtypes.AccountKeeper, bk govtypes.BankKeeper, ss govtypes.ParamSubspace, ) AppModule { return AppModule{ - AppModuleBasic: AppModuleBasic{cdc: cdc, ac: ak}, + AppModuleBasic: AppModuleBasic{cdc: cdc, ac: ak.AddressCodec()}, keeper: keeper, accountKeeper: ak, bankKeeper: bk, diff --git a/x/gov/testutil/expected_keepers_mocks.go b/x/gov/testutil/expected_keepers_mocks.go index 4f2377a40f..92c8a55741 100644 --- a/x/gov/testutil/expected_keepers_mocks.go +++ b/x/gov/testutil/expected_keepers_mocks.go @@ -8,6 +8,7 @@ import ( context "context" reflect "reflect" + address "cosmossdk.io/core/address" math "cosmossdk.io/math" types "github.com/cosmos/cosmos-sdk/types" query "github.com/cosmos/cosmos-sdk/types/query" @@ -40,19 +41,18 @@ func (m *MockAccountKeeper) EXPECT() *MockAccountKeeperMockRecorder { return m.recorder } -// BytesToString mocks base method. -func (m *MockAccountKeeper) BytesToString(bz []byte) (string, error) { +// AddressCodec mocks base method. +func (m *MockAccountKeeper) AddressCodec() address.Codec { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "BytesToString", bz) - ret0, _ := ret[0].(string) - ret1, _ := ret[1].(error) - return ret0, ret1 + ret := m.ctrl.Call(m, "AddressCodec") + ret0, _ := ret[0].(address.Codec) + return ret0 } -// BytesToString indicates an expected call of BytesToString. -func (mr *MockAccountKeeperMockRecorder) BytesToString(bz interface{}) *gomock.Call { +// AddressCodec indicates an expected call of AddressCodec. +func (mr *MockAccountKeeperMockRecorder) AddressCodec() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "BytesToString", reflect.TypeOf((*MockAccountKeeper)(nil).BytesToString), bz) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddressCodec", reflect.TypeOf((*MockAccountKeeper)(nil).AddressCodec)) } // GetAccount mocks base method. @@ -121,21 +121,6 @@ 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/gov/types/expected_keepers.go b/x/gov/types/expected_keepers.go index d171584455..859b3a87c2 100644 --- a/x/gov/types/expected_keepers.go +++ b/x/gov/types/expected_keepers.go @@ -37,7 +37,7 @@ type DistributionKeeper interface { // AccountKeeper defines the expected account keeper (noalias) type AccountKeeper interface { - addresscodec.Codec + AddressCodec() addresscodec.Codec GetAccount(ctx context.Context, addr sdk.AccAddress) sdk.AccountI diff --git a/x/group/expected_keepers.go b/x/group/expected_keepers.go index cb50ecef11..ba4db32a2e 100644 --- a/x/group/expected_keepers.go +++ b/x/group/expected_keepers.go @@ -9,7 +9,7 @@ import ( ) type AccountKeeper interface { - address.Codec + AddressCodec() address.Codec // NewAccount returns a new account with the next account number. Does not save the new account to the store. NewAccount(context.Context, sdk.AccountI) sdk.AccountI diff --git a/x/group/keeper/genesis_test.go b/x/group/keeper/genesis_test.go index 109cc1c2cf..b6599e43e0 100644 --- a/x/group/keeper/genesis_test.go +++ b/x/group/keeper/genesis_test.go @@ -14,6 +14,7 @@ import ( "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/codec" + "github.com/cosmos/cosmos-sdk/codec/address" "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1" "github.com/cosmos/cosmos-sdk/testutil" sdk "github.com/cosmos/cosmos-sdk/types" @@ -55,10 +56,7 @@ func (s *GenesisTestSuite) SetupTest() { accountKeeper := grouptestutil.NewMockAccountKeeper(ctrl) accountKeeper.EXPECT().GetAccount(gomock.Any(), accAddr).Return(authtypes.NewBaseAccountWithAddress(accAddr)).AnyTimes() accountKeeper.EXPECT().GetAccount(gomock.Any(), memberAddr).Return(authtypes.NewBaseAccountWithAddress(memberAddr)).AnyTimes() - accountKeeper.EXPECT().BytesToString(accAddr).Return(accAddr.String(), nil).AnyTimes() - accountKeeper.EXPECT().StringToBytes(accAddr.String()).Return(accAddr, nil).AnyTimes() - accountKeeper.EXPECT().BytesToString(memberAddr).Return(memberAddr.String(), nil).AnyTimes() - accountKeeper.EXPECT().StringToBytes(memberAddr.String()).Return(memberAddr, nil).AnyTimes() + accountKeeper.EXPECT().AddressCodec().Return(address.NewBech32Codec("cosmos")).AnyTimes() bApp := baseapp.NewBaseApp( "group", diff --git a/x/group/keeper/grpc_query.go b/x/group/keeper/grpc_query.go index aeabe5ca47..eed68bc46a 100644 --- a/x/group/keeper/grpc_query.go +++ b/x/group/keeper/grpc_query.go @@ -83,7 +83,7 @@ func (k Keeper) getGroupMembers(ctx sdk.Context, id uint64, pageRequest *query.P // GroupsByAdmin queries all groups where a given address is admin. func (k Keeper) GroupsByAdmin(goCtx context.Context, request *group.QueryGroupsByAdminRequest) (*group.QueryGroupsByAdminResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) - addr, err := k.accKeeper.StringToBytes(request.Admin) + addr, err := k.accKeeper.AddressCodec().StringToBytes(request.Admin) if err != nil { return nil, err } @@ -139,7 +139,7 @@ func (k Keeper) getGroupPoliciesByGroup(ctx sdk.Context, id uint64, pageRequest // admin. func (k Keeper) GroupPoliciesByAdmin(goCtx context.Context, request *group.QueryGroupPoliciesByAdminRequest) (*group.QueryGroupPoliciesByAdminResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) - addr, err := k.accKeeper.StringToBytes(request.Admin) + addr, err := k.accKeeper.AddressCodec().StringToBytes(request.Admin) if err != nil { return nil, err } @@ -180,7 +180,7 @@ func (k Keeper) Proposal(goCtx context.Context, request *group.QueryProposalRequ // ProposalsByGroupPolicy queries all proposals of a group policy. func (k Keeper) ProposalsByGroupPolicy(goCtx context.Context, request *group.QueryProposalsByGroupPolicyRequest) (*group.QueryProposalsByGroupPolicyResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) - addr, err := k.accKeeper.StringToBytes(request.Address) + addr, err := k.accKeeper.AddressCodec().StringToBytes(request.Address) if err != nil { return nil, err } @@ -218,7 +218,7 @@ func (k Keeper) getProposal(ctx sdk.Context, proposalID uint64) (group.Proposal, // VoteByProposalVoter queries a vote given a voter and a proposal ID. func (k Keeper) VoteByProposalVoter(goCtx context.Context, request *group.QueryVoteByProposalVoterRequest) (*group.QueryVoteByProposalVoterResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) - addr, err := k.accKeeper.StringToBytes(request.Voter) + addr, err := k.accKeeper.AddressCodec().StringToBytes(request.Voter) if err != nil { return nil, err } @@ -256,7 +256,7 @@ func (k Keeper) VotesByProposal(goCtx context.Context, request *group.QueryVotes // VotesByVoter queries all votes of a voter. func (k Keeper) VotesByVoter(goCtx context.Context, request *group.QueryVotesByVoterRequest) (*group.QueryVotesByVoterResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) - addr, err := k.accKeeper.StringToBytes(request.Voter) + addr, err := k.accKeeper.AddressCodec().StringToBytes(request.Voter) if err != nil { return nil, err } @@ -284,7 +284,7 @@ func (k Keeper) GroupsByMember(goCtx context.Context, request *group.QueryGroups } ctx := sdk.UnwrapSDKContext(goCtx) - member, err := k.accKeeper.StringToBytes(request.Address) + member, err := k.accKeeper.AddressCodec().StringToBytes(request.Address) if err != nil { return nil, err } diff --git a/x/group/keeper/grpc_query_test.go b/x/group/keeper/grpc_query_test.go index ed37c6928a..f5e7b07a13 100644 --- a/x/group/keeper/grpc_query_test.go +++ b/x/group/keeper/grpc_query_test.go @@ -11,6 +11,7 @@ import ( storetypes "cosmossdk.io/store/types" "github.com/cosmos/cosmos-sdk/baseapp" + "github.com/cosmos/cosmos-sdk/codec/address" codectypes "github.com/cosmos/cosmos-sdk/codec/types" "github.com/cosmos/cosmos-sdk/testutil" simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" @@ -48,9 +49,8 @@ func initKeeper(t *testing.T) (types.Context, groupkeeper.Keeper, []types.AccAdd accountKeeper := grouptestutil.NewMockAccountKeeper(ctrl) for _, addr := range addrs { accountKeeper.EXPECT().GetAccount(gomock.Any(), addr).Return(authtypes.NewBaseAccountWithAddress(addr)).AnyTimes() - accountKeeper.EXPECT().BytesToString(addr).Return(addr.String(), nil).AnyTimes() - accountKeeper.EXPECT().StringToBytes(addr.String()).Return(addr, nil).AnyTimes() } + accountKeeper.EXPECT().AddressCodec().Return(address.NewBech32Codec("cosmos")).AnyTimes() groupKeeper = groupkeeper.NewKeeper(key, encCfg.Codec, bApp.MsgServiceRouter(), accountKeeper, group.DefaultConfig()) diff --git a/x/group/keeper/keeper.go b/x/group/keeper/keeper.go index c3b705b2c3..63959f4c32 100644 --- a/x/group/keeper/keeper.go +++ b/x/group/keeper/keeper.go @@ -94,7 +94,7 @@ func NewKeeper(storeKey storetypes.StoreKey, cdc codec.Codec, router baseapp.Mes panic(err.Error()) } k.groupByAdminIndex, err = orm.NewIndex(groupTable, GroupByAdminIndexPrefix, func(val interface{}) ([]interface{}, error) { - addr, err := accKeeper.StringToBytes(val.(*group.GroupInfo).Admin) + addr, err := accKeeper.AddressCodec().StringToBytes(val.(*group.GroupInfo).Admin) if err != nil { return nil, err } @@ -119,7 +119,7 @@ func NewKeeper(storeKey storetypes.StoreKey, cdc codec.Codec, router baseapp.Mes } k.groupMemberByMemberIndex, err = orm.NewIndex(groupMemberTable, GroupMemberByMemberIndexPrefix, func(val interface{}) ([]interface{}, error) { memberAddr := val.(*group.GroupMember).Member.Address - addr, err := accKeeper.StringToBytes(memberAddr) + addr, err := accKeeper.AddressCodec().StringToBytes(memberAddr) if err != nil { return nil, err } @@ -144,7 +144,7 @@ func NewKeeper(storeKey storetypes.StoreKey, cdc codec.Codec, router baseapp.Mes } k.groupPolicyByAdminIndex, err = orm.NewIndex(groupPolicyTable, GroupPolicyByAdminIndexPrefix, func(value interface{}) ([]interface{}, error) { admin := value.(*group.GroupPolicyInfo).Admin - addr, err := accKeeper.StringToBytes(admin) + addr, err := accKeeper.AddressCodec().StringToBytes(admin) if err != nil { return nil, err } @@ -162,7 +162,7 @@ func NewKeeper(storeKey storetypes.StoreKey, cdc codec.Codec, router baseapp.Mes } k.proposalByGroupPolicyIndex, err = orm.NewIndex(proposalTable, ProposalByGroupPolicyIndexPrefix, func(value interface{}) ([]interface{}, error) { account := value.(*group.Proposal).GroupPolicyAddress - addr, err := accKeeper.StringToBytes(account) + addr, err := accKeeper.AddressCodec().StringToBytes(account) if err != nil { return nil, err } @@ -192,7 +192,7 @@ func NewKeeper(storeKey storetypes.StoreKey, cdc codec.Codec, router baseapp.Mes panic(err.Error()) } k.voteByVoterIndex, err = orm.NewIndex(voteTable, VoteByVoterIndexPrefix, func(value interface{}) ([]interface{}, error) { - addr, err := accKeeper.StringToBytes(value.(*group.Vote).Voter) + addr, err := accKeeper.AddressCodec().StringToBytes(value.(*group.Vote).Voter) if err != nil { return nil, err } diff --git a/x/group/keeper/keeper_test.go b/x/group/keeper/keeper_test.go index e57089e2cb..5b06edba5b 100644 --- a/x/group/keeper/keeper_test.go +++ b/x/group/keeper/keeper_test.go @@ -3,7 +3,6 @@ package keeper_test import ( "context" "encoding/binary" - "errors" "testing" "time" @@ -60,13 +59,8 @@ func (s *TestSuite) SetupTest() { s.accountKeeper = grouptestutil.NewMockAccountKeeper(ctrl) for i := range s.addrs { s.accountKeeper.EXPECT().GetAccount(gomock.Any(), s.addrs[i]).Return(authtypes.NewBaseAccountWithAddress(s.addrs[i])).AnyTimes() - s.accountKeeper.EXPECT().BytesToString(s.addrs[i]).Return(s.addrs[i].String(), nil).AnyTimes() - s.accountKeeper.EXPECT().StringToBytes(s.addrs[i].String()).Return(s.addrs[i], nil).AnyTimes() } - - // add empty string to the list of expected calls - s.accountKeeper.EXPECT().StringToBytes("").Return(nil, errors.New("unable to decode")).AnyTimes() - s.accountKeeper.EXPECT().StringToBytes("invalid").Return(nil, errors.New("unable to decode")).AnyTimes() + s.accountKeeper.EXPECT().AddressCodec().Return(address.NewBech32Codec("cosmos")).AnyTimes() s.bankKeeper = grouptestutil.NewMockBankKeeper(ctrl) @@ -143,15 +137,11 @@ func (s *TestSuite) setNextAccount() { s.Require().NoError(err) groupPolicyAccBumpAccountNumber.SetAccountNumber(nextAccVal) - addrcdc := address.NewBech32Codec("cosmos") - addrst, err := addrcdc.BytesToString(ac.Address()) s.Require().NoError(err) s.accountKeeper.EXPECT().GetAccount(gomock.Any(), sdk.AccAddress(ac.Address())).Return(nil).AnyTimes() s.accountKeeper.EXPECT().NewAccount(gomock.Any(), groupPolicyAcc).Return(groupPolicyAccBumpAccountNumber).AnyTimes() s.accountKeeper.EXPECT().SetAccount(gomock.Any(), sdk.AccountI(groupPolicyAccBumpAccountNumber)).Return().AnyTimes() - s.accountKeeper.EXPECT().StringToBytes(addrst).Return(ac.Address().Bytes(), nil).AnyTimes() - s.accountKeeper.EXPECT().BytesToString(ac.Address().Bytes()).Return(addrst, nil).AnyTimes() } func TestKeeperTestSuite(t *testing.T) { @@ -434,7 +424,7 @@ func (s *TestSuite) TestTallyProposalsAtVPEnd() { groupRes, err := s.groupKeeper.CreateGroupWithPolicy(s.ctx, groupMsg) s.Require().NoError(err) accountAddr := groupRes.GetGroupPolicyAddress() - groupPolicy, err := s.accountKeeper.StringToBytes(accountAddr) + groupPolicy, err := s.accountKeeper.AddressCodec().StringToBytes(accountAddr) s.Require().NoError(err) s.Require().NotNil(groupPolicy) diff --git a/x/group/keeper/msg_server.go b/x/group/keeper/msg_server.go index 0619e0e709..4deb2f0076 100644 --- a/x/group/keeper/msg_server.go +++ b/x/group/keeper/msg_server.go @@ -25,7 +25,7 @@ var _ group.MsgServer = Keeper{} const gasCostPerIteration = uint64(20) func (k Keeper) CreateGroup(goCtx context.Context, msg *group.MsgCreateGroup) (*group.MsgCreateGroupResponse, error) { - if _, err := k.accKeeper.StringToBytes(msg.Admin); err != nil { + if _, err := k.accKeeper.AddressCodec().StringToBytes(msg.Admin); err != nil { return nil, errorsmod.Wrapf(sdkerrors.ErrInvalidAddress, "invalid admin address: %s", msg.Admin) } @@ -225,11 +225,11 @@ func (k Keeper) UpdateGroupAdmin(goCtx context.Context, msg *group.MsgUpdateGrou return nil, errorsmod.Wrap(errors.ErrInvalid, "new and old admin are the same") } - if _, err := k.accKeeper.StringToBytes(msg.Admin); err != nil { + if _, err := k.accKeeper.AddressCodec().StringToBytes(msg.Admin); err != nil { return nil, errorsmod.Wrap(sdkerrors.ErrInvalidAddress, "admin address") } - if _, err := k.accKeeper.StringToBytes(msg.NewAdmin); err != nil { + if _, err := k.accKeeper.AddressCodec().StringToBytes(msg.NewAdmin); err != nil { return nil, errorsmod.Wrap(sdkerrors.ErrInvalidAddress, "new admin address") } @@ -257,7 +257,7 @@ func (k Keeper) UpdateGroupMetadata(goCtx context.Context, msg *group.MsgUpdateG return nil, err } - if _, err := k.accKeeper.StringToBytes(msg.Admin); err != nil { + if _, err := k.accKeeper.AddressCodec().StringToBytes(msg.Admin); err != nil { return nil, errorsmod.Wrap(sdkerrors.ErrInvalidAddress, "admin address") } @@ -341,7 +341,7 @@ func (k Keeper) CreateGroupPolicy(goCtx context.Context, msg *group.MsgCreateGro return nil, errorsmod.Wrap(err, "decision policy") } - reqGroupAdmin, err := k.accKeeper.StringToBytes(msg.GetAdmin()) + reqGroupAdmin, err := k.accKeeper.AddressCodec().StringToBytes(msg.GetAdmin()) if err != nil { return nil, errorsmod.Wrap(err, "request admin") } @@ -352,7 +352,7 @@ func (k Keeper) CreateGroupPolicy(goCtx context.Context, msg *group.MsgCreateGro return nil, err } - groupAdmin, err := k.accKeeper.StringToBytes(groupInfo.Admin) + groupAdmin, err := k.accKeeper.AddressCodec().StringToBytes(groupInfo.Admin) if err != nil { return nil, errorsmod.Wrap(err, "group admin") } @@ -510,7 +510,7 @@ func (k Keeper) SubmitProposal(goCtx context.Context, msg *group.MsgSubmitPropos return nil, err } - groupPolicyAddr, err := k.accKeeper.StringToBytes(msg.GroupPolicyAddress) + groupPolicyAddr, err := k.accKeeper.AddressCodec().StringToBytes(msg.GroupPolicyAddress) if err != nil { return nil, errorsmod.Wrap(err, "request account address of group policy") } @@ -633,7 +633,7 @@ func (k Keeper) WithdrawProposal(goCtx context.Context, msg *group.MsgWithdrawPr return nil, errorsmod.Wrap(errors.ErrEmpty, "proposal id") } - if _, err := k.accKeeper.StringToBytes(msg.Address); err != nil { + if _, err := k.accKeeper.AddressCodec().StringToBytes(msg.Address); err != nil { return nil, errorsmod.Wrapf(sdkerrors.ErrInvalidAddress, "invalid group policy admin / proposer address: %s", msg.Address) } @@ -688,7 +688,7 @@ func (k Keeper) Vote(goCtx context.Context, msg *group.MsgVote) (*group.MsgVoteR return nil, err } - if _, err := k.accKeeper.StringToBytes(msg.Voter); err != nil { + if _, err := k.accKeeper.AddressCodec().StringToBytes(msg.Voter); err != nil { return nil, errorsmod.Wrapf(sdkerrors.ErrInvalidAddress, "invalid voter address: %s", msg.Voter) } @@ -828,7 +828,7 @@ func (k Keeper) Exec(goCtx context.Context, msg *group.MsgExec) (*group.MsgExecR // Caching context so that we don't update the store in case of failure. cacheCtx, flush := ctx.CacheContext() - addr, err := k.accKeeper.StringToBytes(policyInfo.Address) + addr, err := k.accKeeper.AddressCodec().StringToBytes(policyInfo.Address) if err != nil { return nil, err } @@ -881,7 +881,7 @@ func (k Keeper) LeaveGroup(goCtx context.Context, msg *group.MsgLeaveGroup) (*gr return nil, errorsmod.Wrap(errors.ErrEmpty, "group-id") } - _, err := k.accKeeper.StringToBytes(msg.Address) + _, err := k.accKeeper.AddressCodec().StringToBytes(msg.Address) if err != nil { return nil, errorsmod.Wrap(err, "group member") } @@ -965,12 +965,12 @@ type ( // doUpdateGroupPolicy first makes sure that the group policy admin initiated the group policy update, // before performing the group policy update and emitting an event. func (k Keeper) doUpdateGroupPolicy(ctx sdk.Context, reqGroupPolicy, reqAdmin string, action groupPolicyActionFn, note string) error { - groupPolicyAddr, err := k.accKeeper.StringToBytes(reqGroupPolicy) + groupPolicyAddr, err := k.accKeeper.AddressCodec().StringToBytes(reqGroupPolicy) if err != nil { return errorsmod.Wrap(err, "group policy address") } - _, err = k.accKeeper.StringToBytes(reqAdmin) + _, err = k.accKeeper.AddressCodec().StringToBytes(reqAdmin) if err != nil { return errorsmod.Wrap(err, "group policy admin") } @@ -1069,7 +1069,7 @@ func (k Keeper) validateProposers(proposers []string) error { return errorsmod.Wrapf(errors.ErrDuplicate, "address: %s", proposer) } - _, err := k.accKeeper.StringToBytes(proposer) + _, err := k.accKeeper.AddressCodec().StringToBytes(proposer) if err != nil { return errorsmod.Wrapf(err, "proposer address %s", proposer) } @@ -1094,7 +1094,7 @@ func (k Keeper) validateMembers(members []group.MemberRequest) error { return errorsmod.Wrapf(errors.ErrDuplicate, "address: %s", member.Address) } - _, err := k.accKeeper.StringToBytes(member.Address) + _, err := k.accKeeper.AddressCodec().StringToBytes(member.Address) if err != nil { return errorsmod.Wrapf(err, "member address %s", member.Address) } diff --git a/x/group/keeper/msg_server_test.go b/x/group/keeper/msg_server_test.go index d3f42a4bb5..5d44acd5d6 100644 --- a/x/group/keeper/msg_server_test.go +++ b/x/group/keeper/msg_server_test.go @@ -35,8 +35,7 @@ func (s *TestSuite) createGroupAndGetMembers(numMembers int) []*group.GroupMembe Address: addressPool[i].String(), Weight: "1", } - s.accountKeeper.EXPECT().StringToBytes(addressPool[i].String()).Return(addressPool[i].Bytes(), nil).AnyTimes() - s.accountKeeper.EXPECT().BytesToString(addressPool[i].Bytes()).Return(addressPool[i].String(), nil).AnyTimes() + s.accountKeeper.EXPECT().AddressCodec().Return(address.NewBech32Codec("cosmos")).AnyTimes() } g, err := s.groupKeeper.CreateGroup(s.ctx, &group.MsgCreateGroup{ @@ -291,7 +290,7 @@ func (s *TestSuite) TestUpdateGroupMembers() { }, }, expErr: true, - expErrMsg: "unable to decode", + expErrMsg: "empty address string is not allowed", }, "invalid member metadata too long": { req: &group.MsgUpdateGroupMembers{ @@ -888,7 +887,7 @@ func (s *TestSuite) TestCreateGroupWithPolicy() { 0, ), expErr: true, - expErrMsg: "unable to decode", + expErrMsg: "decoding bech32 failed", }, "decision policy threshold > total group weight": { req: &group.MsgCreateGroupWithPolicy{ @@ -1634,8 +1633,7 @@ func (s *TestSuite) TestSubmitProposal() { res, err := s.groupKeeper.CreateGroupPolicy(s.ctx, policyReq) s.Require().NoError(err) - s.accountKeeper.EXPECT().StringToBytes(res.Address).Return(sdk.MustAccAddressFromBech32(res.Address).Bytes(), nil).AnyTimes() - noMinExecPeriodPolicyAddr, err := s.accountKeeper.StringToBytes(res.Address) + noMinExecPeriodPolicyAddr, err := s.accountKeeper.AddressCodec().StringToBytes(res.Address) s.Require().NoError(err) // Create a new group policy with super high threshold @@ -1712,7 +1710,7 @@ func (s *TestSuite) TestSubmitProposal() { Proposers: []string{addr2.String()}, }, expErr: true, - expErrMsg: "unable to decode", + expErrMsg: "empty address string is not allowed", postRun: func(sdkCtx sdk.Context) {}, }, "existing group policy required": { @@ -2002,10 +2000,7 @@ func (s *TestSuite) TestVote() { s.Require().NoError(err) accountAddr := policyRes.Address // module account will be created and returned - addrbz, err := address.NewBech32Codec("cosmos").StringToBytes(accountAddr) - s.Require().NoError(err) - s.accountKeeper.EXPECT().StringToBytes(accountAddr).Return(addrbz, nil).AnyTimes() - groupPolicy, err := s.accountKeeper.StringToBytes(accountAddr) + groupPolicy, err := s.accountKeeper.AddressCodec().StringToBytes(accountAddr) s.Require().NoError(err) s.Require().NotNil(groupPolicy) @@ -2894,11 +2889,6 @@ func (s *TestSuite) TestLeaveGroup() { admin2 := addrs[5] admin3 := addrs[6] - for _, addr := range addrs { - s.accountKeeper.EXPECT().StringToBytes(addr.String()).Return(addr.Bytes(), nil).AnyTimes() - s.accountKeeper.EXPECT().BytesToString(addr).Return(addr.String(), nil).AnyTimes() - } - members := []group.MemberRequest{ { Address: member1.String(), @@ -2981,7 +2971,7 @@ func (s *TestSuite) TestLeaveGroup() { Address: "invalid", }, true, - "unable to decode", + "decoding bech32 failed", 0, math.NewDecFromInt64(0), }, diff --git a/x/group/module/module.go b/x/group/module/module.go index f86389b53b..026ff85ab8 100644 --- a/x/group/module/module.go +++ b/x/group/module/module.go @@ -48,7 +48,7 @@ type AppModule struct { // NewAppModule creates a new AppModule object func NewAppModule(cdc codec.Codec, keeper keeper.Keeper, ak group.AccountKeeper, bk group.BankKeeper, registry cdctypes.InterfaceRegistry) AppModule { return AppModule{ - AppModuleBasic: AppModuleBasic{cdc: cdc, ac: ak}, + AppModuleBasic: AppModuleBasic{cdc: cdc, ac: ak.AddressCodec()}, keeper: keeper, bankKeeper: bk, accKeeper: ak, diff --git a/x/group/testutil/expected_keepers_mocks.go b/x/group/testutil/expected_keepers_mocks.go index fbec1042eb..75d4c12f92 100644 --- a/x/group/testutil/expected_keepers_mocks.go +++ b/x/group/testutil/expected_keepers_mocks.go @@ -8,6 +8,7 @@ import ( context "context" reflect "reflect" + address "cosmossdk.io/core/address" types "github.com/cosmos/cosmos-sdk/types" types0 "github.com/cosmos/cosmos-sdk/x/bank/types" gomock "github.com/golang/mock/gomock" @@ -36,19 +37,18 @@ func (m *MockAccountKeeper) EXPECT() *MockAccountKeeperMockRecorder { return m.recorder } -// BytesToString mocks base method. -func (m *MockAccountKeeper) BytesToString(bz []byte) (string, error) { +// AddressCodec mocks base method. +func (m *MockAccountKeeper) AddressCodec() address.Codec { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "BytesToString", bz) - ret0, _ := ret[0].(string) - ret1, _ := ret[1].(error) - return ret0, ret1 + ret := m.ctrl.Call(m, "AddressCodec") + ret0, _ := ret[0].(address.Codec) + return ret0 } -// BytesToString indicates an expected call of BytesToString. -func (mr *MockAccountKeeperMockRecorder) BytesToString(bz interface{}) *gomock.Call { +// AddressCodec indicates an expected call of AddressCodec. +func (mr *MockAccountKeeperMockRecorder) AddressCodec() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "BytesToString", reflect.TypeOf((*MockAccountKeeper)(nil).BytesToString), bz) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddressCodec", reflect.TypeOf((*MockAccountKeeper)(nil).AddressCodec)) } // GetAccount mocks base method. @@ -103,21 +103,6 @@ func (mr *MockAccountKeeperMockRecorder) SetAccount(arg0, arg1 interface{}) *gom return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetAccount", reflect.TypeOf((*MockAccountKeeper)(nil).SetAccount), 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/nft/expected_keepers.go b/x/nft/expected_keepers.go index 66a34e261b..045032e86a 100644 --- a/x/nft/expected_keepers.go +++ b/x/nft/expected_keepers.go @@ -18,6 +18,5 @@ type BankKeeper interface { type AccountKeeper interface { GetModuleAddress(name string) sdk.AccAddress GetAccount(ctx context.Context, addr sdk.AccAddress) sdk.AccountI - - address.Codec + AddressCodec() address.Codec } diff --git a/x/nft/keeper/grpc_query_test.go b/x/nft/keeper/grpc_query_test.go index 3320a09c61..fb84c14b37 100644 --- a/x/nft/keeper/grpc_query_test.go +++ b/x/nft/keeper/grpc_query_test.go @@ -5,6 +5,7 @@ import ( "fmt" "testing" + "github.com/cosmos/cosmos-sdk/codec/address" "github.com/stretchr/testify/require" "github.com/stretchr/testify/suite" @@ -16,7 +17,7 @@ func TestGRPCQuery(t *testing.T) { } func (s *TestSuite) TestBalance() { - s.accountKeeper.EXPECT().StringToBytes("owner").Return(nil, fmt.Errorf("decoding bech32 failed")).AnyTimes() + s.accountKeeper.EXPECT().AddressCodec().Return(address.NewBech32Codec("cosmos")).AnyTimes() var req *nft.QueryBalanceRequest testCases := []struct { msg string diff --git a/x/nft/keeper/keeper.go b/x/nft/keeper/keeper.go index 218230e05f..d2718d3262 100644 --- a/x/nft/keeper/keeper.go +++ b/x/nft/keeper/keeper.go @@ -29,6 +29,6 @@ func NewKeeper(storeService store.KVStoreService, cdc: cdc, storeService: storeService, bk: bk, - ac: ak, + ac: ak.AddressCodec(), } } diff --git a/x/nft/keeper/keeper_test.go b/x/nft/keeper/keeper_test.go index 6d7fda36dd..be8e4a47ac 100644 --- a/x/nft/keeper/keeper_test.go +++ b/x/nft/keeper/keeper_test.go @@ -15,6 +15,7 @@ import ( nfttestutil "cosmossdk.io/x/nft/testutil" "github.com/cosmos/cosmos-sdk/baseapp" + "github.com/cosmos/cosmos-sdk/codec/address" "github.com/cosmos/cosmos-sdk/runtime" "github.com/cosmos/cosmos-sdk/testutil" simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" @@ -61,9 +62,7 @@ func (s *TestSuite) SetupTest() { accountKeeper := nfttestutil.NewMockAccountKeeper(ctrl) bankKeeper := nfttestutil.NewMockBankKeeper(ctrl) accountKeeper.EXPECT().GetModuleAddress("nft").Return(s.addrs[0]).AnyTimes() - for _, addr := range s.addrs { - accountKeeper.EXPECT().StringToBytes(addr.String()).Return(addr, nil).AnyTimes() - } + accountKeeper.EXPECT().AddressCodec().Return(address.NewBech32Codec("cosmos")).AnyTimes() s.accountKeeper = accountKeeper diff --git a/x/nft/module/module.go b/x/nft/module/module.go index ae1c0a53cc..aa661b328d 100644 --- a/x/nft/module/module.go +++ b/x/nft/module/module.go @@ -110,7 +110,7 @@ type AppModule struct { // NewAppModule creates a new AppModule object func NewAppModule(cdc codec.Codec, keeper keeper.Keeper, ak nft.AccountKeeper, bk nft.BankKeeper, registry cdctypes.InterfaceRegistry) AppModule { return AppModule{ - AppModuleBasic: AppModuleBasic{cdc: cdc, ac: ak}, + AppModuleBasic: AppModuleBasic{cdc: cdc, ac: ak.AddressCodec()}, keeper: keeper, accountKeeper: ak, bankKeeper: bk, diff --git a/x/nft/testutil/expected_keepers_mocks.go b/x/nft/testutil/expected_keepers_mocks.go index 97cd250c77..3329058f44 100644 --- a/x/nft/testutil/expected_keepers_mocks.go +++ b/x/nft/testutil/expected_keepers_mocks.go @@ -8,6 +8,7 @@ import ( context "context" reflect "reflect" + address "cosmossdk.io/core/address" types "github.com/cosmos/cosmos-sdk/types" gomock "github.com/golang/mock/gomock" ) @@ -72,19 +73,18 @@ func (m *MockAccountKeeper) EXPECT() *MockAccountKeeperMockRecorder { return m.recorder } -// BytesToString mocks base method. -func (m *MockAccountKeeper) BytesToString(bz []byte) (string, error) { +// AddressCodec mocks base method. +func (m *MockAccountKeeper) AddressCodec() address.Codec { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "BytesToString", bz) - ret0, _ := ret[0].(string) - ret1, _ := ret[1].(error) - return ret0, ret1 + ret := m.ctrl.Call(m, "AddressCodec") + ret0, _ := ret[0].(address.Codec) + return ret0 } -// BytesToString indicates an expected call of BytesToString. -func (mr *MockAccountKeeperMockRecorder) BytesToString(bz interface{}) *gomock.Call { +// AddressCodec indicates an expected call of AddressCodec. +func (mr *MockAccountKeeperMockRecorder) AddressCodec() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "BytesToString", reflect.TypeOf((*MockAccountKeeper)(nil).BytesToString), bz) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddressCodec", reflect.TypeOf((*MockAccountKeeper)(nil).AddressCodec)) } // GetAccount mocks base method. @@ -114,18 +114,3 @@ func (mr *MockAccountKeeperMockRecorder) GetModuleAddress(name interface{}) *gom mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetModuleAddress", reflect.TypeOf((*MockAccountKeeper)(nil).GetModuleAddress), name) } - -// 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) -} diff --git a/x/staking/keeper/delegation.go b/x/staking/keeper/delegation.go index 96cb91bece..0047ef5414 100644 --- a/x/staking/keeper/delegation.go +++ b/x/staking/keeper/delegation.go @@ -103,7 +103,7 @@ 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, err := k.authKeeper.StringToBytes(delegation.DelegatorAddress) + delegatorAddress, err := k.authKeeper.AddressCodec().StringToBytes(delegation.DelegatorAddress) if err != nil { panic(err) } @@ -118,7 +118,7 @@ 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, err := k.authKeeper.StringToBytes(delegation.DelegatorAddress) + delegatorAddress, err := k.authKeeper.AddressCodec().StringToBytes(delegation.DelegatorAddress) if err != nil { panic(err) } @@ -294,7 +294,7 @@ 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, err := k.authKeeper.StringToBytes(ubd.DelegatorAddress) + delAddr, err := k.authKeeper.AddressCodec().StringToBytes(ubd.DelegatorAddress) if err != nil { panic(err) } @@ -312,7 +312,7 @@ 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, err := k.authKeeper.StringToBytes(ubd.DelegatorAddress) + delegatorAddress, err := k.authKeeper.AddressCodec().StringToBytes(ubd.DelegatorAddress) if err != nil { panic(err) } @@ -502,7 +502,7 @@ 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, err := k.authKeeper.StringToBytes(red.DelegatorAddress) + delegatorAddress, err := k.authKeeper.AddressCodec().StringToBytes(red.DelegatorAddress) if err != nil { panic(err) } @@ -570,7 +570,7 @@ 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, err := k.authKeeper.StringToBytes(red.DelegatorAddress) + delegatorAddress, err := k.authKeeper.AddressCodec().StringToBytes(red.DelegatorAddress) if err != nil { panic(err) } @@ -694,7 +694,7 @@ func (k Keeper) Delegate( return math.LegacyZeroDec(), err } - delegatorAddress, err := k.authKeeper.StringToBytes(delegation.DelegatorAddress) + delegatorAddress, err := k.authKeeper.AddressCodec().StringToBytes(delegation.DelegatorAddress) if err != nil { panic(err) } @@ -783,7 +783,7 @@ func (k Keeper) Unbond( // subtract shares from delegation delegation.Shares = delegation.Shares.Sub(shares) - delegatorAddress, err := k.authKeeper.StringToBytes(delegation.DelegatorAddress) + delegatorAddress, err := k.authKeeper.AddressCodec().StringToBytes(delegation.DelegatorAddress) if err != nil { return amount, err } @@ -896,7 +896,7 @@ func (k Keeper) CompleteUnbonding(ctx sdk.Context, delAddr sdk.AccAddress, valAd balances := sdk.NewCoins() ctxTime := ctx.BlockHeader().Time - delegatorAddress, err := k.authKeeper.StringToBytes(ubd.DelegatorAddress) + delegatorAddress, err := k.authKeeper.AddressCodec().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 06b03cbdd3..53433fd950 100644 --- a/x/staking/keeper/delegation_test.go +++ b/x/staking/keeper/delegation_test.go @@ -6,6 +6,7 @@ import ( "cosmossdk.io/math" "github.com/golang/mock/gomock" + "github.com/cosmos/cosmos-sdk/codec/address" simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" sdk "github.com/cosmos/cosmos-sdk/types" stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" @@ -27,10 +28,7 @@ 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() - } + s.accountKeeper.EXPECT().AddressCodec().Return(address.NewBech32Codec("cosmos")).AnyTimes() // construct the validators amts := []math.Int{math.NewInt(9), math.NewInt(8), math.NewInt(7)} @@ -151,10 +149,9 @@ func (s *KeeperTestSuite) TestDelegationsByValIndex() { 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() s.bankKeeper.EXPECT().DelegateCoinsFromAccountToModule(gomock.Any(), addr, gomock.Any(), gomock.Any()).Return(nil).AnyTimes() } + s.accountKeeper.EXPECT().AddressCodec().Return(address.NewBech32Codec("cosmos")).AnyTimes() // construct the validators amts := []math.Int{sdk.NewInt(9), sdk.NewInt(8), sdk.NewInt(7)} @@ -228,10 +225,7 @@ 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() - } + s.accountKeeper.EXPECT().AddressCodec().Return(address.NewBech32Codec("cosmos")).AnyTimes() ubd := stakingtypes.NewUnbondingDelegation( delAddrs[0], @@ -284,11 +278,6 @@ func (s *KeeperTestSuite) TestUnbondingDelegationsFromValidator() { 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], @@ -346,10 +335,6 @@ func (s *KeeperTestSuite) TestUnbondDelegation() { 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]) @@ -385,10 +370,6 @@ 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 @@ -438,10 +419,6 @@ 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]) @@ -517,10 +494,6 @@ 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]) @@ -597,10 +570,6 @@ 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]) @@ -668,11 +637,6 @@ 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), math.NewInt(5), math.LegacyNewDec(5), 0) @@ -699,10 +663,6 @@ 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(), math.NewInt(5), @@ -779,9 +739,6 @@ func (s *KeeperTestSuite) TestRedelegateToSameValidator() { 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) @@ -804,8 +761,6 @@ 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) @@ -847,15 +802,6 @@ 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]) @@ -907,10 +853,6 @@ 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]) @@ -991,15 +933,6 @@ 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]) @@ -1068,10 +1001,6 @@ func (s *KeeperTestSuite) TestUnbondingDelegationAddEntry() { 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() - } delAddr := delAddrs[0] valAddr := valAddrs[0] @@ -1113,10 +1042,6 @@ func (s *KeeperTestSuite) TestSetUnbondingDelegationEntry() { 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() - } delAddr := delAddrs[0] valAddr := valAddrs[0] diff --git a/x/staking/keeper/genesis.go b/x/staking/keeper/genesis.go index 37e68cc699..85dc5e9e9b 100644 --- a/x/staking/keeper/genesis.go +++ b/x/staking/keeper/genesis.go @@ -64,7 +64,7 @@ func (k Keeper) InitGenesis(ctx sdk.Context, data *types.GenesisState) (res []ab } for _, delegation := range data.Delegations { - delegatorAddress, err := k.authKeeper.StringToBytes(delegation.DelegatorAddress) + delegatorAddress, err := k.authKeeper.AddressCodec().StringToBytes(delegation.DelegatorAddress) if err != nil { panic(fmt.Errorf("invalid delegator address: %s", err)) } diff --git a/x/staking/keeper/grpc_query.go b/x/staking/keeper/grpc_query.go index 679211d356..482be95055 100644 --- a/x/staking/keeper/grpc_query.go +++ b/x/staking/keeper/grpc_query.go @@ -222,7 +222,7 @@ func (k Querier) Delegation(c context.Context, req *types.QueryDelegationRequest } ctx := sdk.UnwrapSDKContext(c) - delAddr, err := k.authKeeper.StringToBytes(req.DelegatorAddr) + delAddr, err := k.authKeeper.AddressCodec().StringToBytes(req.DelegatorAddr) if err != nil { return nil, err } @@ -263,7 +263,7 @@ func (k Querier) UnbondingDelegation(c context.Context, req *types.QueryUnbondin ctx := sdk.UnwrapSDKContext(c) - delAddr, err := k.authKeeper.StringToBytes(req.DelegatorAddr) + delAddr, err := k.authKeeper.AddressCodec().StringToBytes(req.DelegatorAddr) if err != nil { return nil, err } @@ -296,7 +296,7 @@ func (k Querier) DelegatorDelegations(c context.Context, req *types.QueryDelegat var delegations types.Delegations ctx := sdk.UnwrapSDKContext(c) - delAddr, err := k.authKeeper.StringToBytes(req.DelegatorAddr) + delAddr, err := k.authKeeper.AddressCodec().StringToBytes(req.DelegatorAddr) if err != nil { return nil, err } @@ -337,7 +337,7 @@ func (k Querier) DelegatorValidator(c context.Context, req *types.QueryDelegator } ctx := sdk.UnwrapSDKContext(c) - delAddr, err := k.authKeeper.StringToBytes(req.DelegatorAddr) + delAddr, err := k.authKeeper.AddressCodec().StringToBytes(req.DelegatorAddr) if err != nil { return nil, err } @@ -368,7 +368,7 @@ func (k Querier) DelegatorUnbondingDelegations(c context.Context, req *types.Que ctx := sdk.UnwrapSDKContext(c) store := ctx.KVStore(k.storeKey) - delAddr, err := k.authKeeper.StringToBytes(req.DelegatorAddr) + delAddr, err := k.authKeeper.AddressCodec().StringToBytes(req.DelegatorAddr) if err != nil { return nil, err } @@ -453,7 +453,7 @@ func (k Querier) DelegatorValidators(c context.Context, req *types.QueryDelegato ctx := sdk.UnwrapSDKContext(c) store := ctx.KVStore(k.storeKey) - delAddr, err := k.authKeeper.StringToBytes(req.DelegatorAddr) + delAddr, err := k.authKeeper.AddressCodec().StringToBytes(req.DelegatorAddr) if err != nil { return nil, err } @@ -504,7 +504,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 := k.authKeeper.StringToBytes(req.DelegatorAddr) + delAddr, err := k.authKeeper.AddressCodec().StringToBytes(req.DelegatorAddr) if err != nil { return nil, err } @@ -554,7 +554,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 := k.authKeeper.StringToBytes(req.DelegatorAddr) + delAddr, err := k.authKeeper.AddressCodec().StringToBytes(req.DelegatorAddr) if err != nil { return nil, nil, err } @@ -580,7 +580,7 @@ func DelegationToDelegationResponse(ctx sdk.Context, k *Keeper, del types.Delega return types.DelegationResponse{}, types.ErrNoValidatorFound } - delegatorAddress, err := k.authKeeper.StringToBytes(del.DelegatorAddress) + delegatorAddress, err := k.authKeeper.AddressCodec().StringToBytes(del.DelegatorAddress) if err != nil { return types.DelegationResponse{}, err } @@ -621,7 +621,7 @@ func RedelegationsToRedelegationResponses(ctx sdk.Context, k *Keeper, redels typ panic(err) } - delegatorAddress, err := k.authKeeper.StringToBytes(redel.DelegatorAddress) + delegatorAddress, err := k.authKeeper.AddressCodec().StringToBytes(redel.DelegatorAddress) if err != nil { return nil, err } diff --git a/x/staking/keeper/keeper.go b/x/staking/keeper/keeper.go index 39513647b1..a9dd46b9a3 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 := ak.StringToBytes(authority); err != nil { + if _, err := ak.AddressCodec().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 f15ef2b97a..bbfbeda174 100644 --- a/x/staking/keeper/keeper_test.go +++ b/x/staking/keeper/keeper_test.go @@ -1,7 +1,6 @@ package keeper_test import ( - "errors" "testing" "cosmossdk.io/math" @@ -13,6 +12,7 @@ import ( storetypes "cosmossdk.io/store/types" "github.com/cosmos/cosmos-sdk/baseapp" + "github.com/cosmos/cosmos-sdk/codec/address" "github.com/cosmos/cosmos-sdk/testutil" simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" sdk "github.com/cosmos/cosmos-sdk/types" @@ -51,10 +51,7 @@ 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() - accountKeeper.EXPECT().StringToBytes("").Return(nil, errors.New("empty address string is not allowed")).AnyTimes() - accountKeeper.EXPECT().StringToBytes("invalid").Return(nil, errors.New("invalid bech32 string")).AnyTimes() + accountKeeper.EXPECT().AddressCodec().Return(address.NewBech32Codec("cosmos")).AnyTimes() bankKeeper := stakingtestutil.NewMockBankKeeper(ctrl) diff --git a/x/staking/keeper/msg_server.go b/x/staking/keeper/msg_server.go index 83bdd0149e..94793e4557 100644 --- a/x/staking/keeper/msg_server.go +++ b/x/staking/keeper/msg_server.go @@ -223,7 +223,7 @@ func (k msgServer) Delegate(goCtx context.Context, msg *types.MsgDelegate) (*typ return nil, sdkerrors.ErrInvalidAddress.Wrapf("invalid validator address: %s", valErr) } - delegatorAddress, err := k.authKeeper.StringToBytes(msg.DelegatorAddress) + delegatorAddress, err := k.authKeeper.AddressCodec().StringToBytes(msg.DelegatorAddress) if err != nil { return nil, sdkerrors.ErrInvalidAddress.Wrapf("invalid delegator address: %s", err) } @@ -290,7 +290,7 @@ func (k msgServer) BeginRedelegate(goCtx context.Context, msg *types.MsgBeginRed return nil, sdkerrors.ErrInvalidAddress.Wrapf("invalid destination validator address: %s", err) } - delegatorAddress, err := k.authKeeper.StringToBytes(msg.DelegatorAddress) + delegatorAddress, err := k.authKeeper.AddressCodec().StringToBytes(msg.DelegatorAddress) if err != nil { return nil, sdkerrors.ErrInvalidAddress.Wrapf("invalid delegator address: %s", err) } @@ -358,7 +358,7 @@ func (k msgServer) Undelegate(goCtx context.Context, msg *types.MsgUndelegate) ( return nil, sdkerrors.ErrInvalidAddress.Wrapf("invalid validator address: %s", err) } - delegatorAddress, err := k.authKeeper.StringToBytes(msg.DelegatorAddress) + delegatorAddress, err := k.authKeeper.AddressCodec().StringToBytes(msg.DelegatorAddress) if err != nil { return nil, sdkerrors.ErrInvalidAddress.Wrapf("invalid delegator address: %s", err) } @@ -427,7 +427,7 @@ func (k msgServer) CancelUnbondingDelegation(goCtx context.Context, msg *types.M return nil, sdkerrors.ErrInvalidAddress.Wrapf("invalid validator address: %s", err) } - delegatorAddress, err := k.authKeeper.StringToBytes(msg.DelegatorAddress) + delegatorAddress, err := k.authKeeper.AddressCodec().StringToBytes(msg.DelegatorAddress) if err != nil { return nil, sdkerrors.ErrInvalidAddress.Wrapf("invalid delegator address: %s", err) } diff --git a/x/staking/keeper/msg_server_test.go b/x/staking/keeper/msg_server_test.go index 0b55c75e0f..bc153ee44f 100644 --- a/x/staking/keeper/msg_server_test.go +++ b/x/staking/keeper/msg_server_test.go @@ -8,6 +8,7 @@ import ( "github.com/golang/mock/gomock" + "github.com/cosmos/cosmos-sdk/codec/address" codectypes "github.com/cosmos/cosmos-sdk/codec/types" "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519" simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" @@ -22,8 +23,7 @@ var ( ) func (s *KeeperTestSuite) execExpectCalls() { - s.accountKeeper.EXPECT().StringToBytes(Addr.String()).Return(Addr, nil).AnyTimes() - s.accountKeeper.EXPECT().BytesToString(Addr).Return(Addr.String(), nil).AnyTimes() + s.accountKeeper.EXPECT().AddressCodec().Return(address.NewBech32Codec("cosmos")).AnyTimes() s.bankKeeper.EXPECT().DelegateCoinsFromAccountToModule(gomock.Any(), Addr, stakingtypes.NotBondedPoolName, gomock.Any()).AnyTimes() } @@ -467,7 +467,7 @@ func (s *KeeperTestSuite) TestMsgDelegate() { Amount: sdk.Coin{Denom: sdk.DefaultBondDenom, Amount: keeper.TokensFromConsensusPower(s.ctx, int64(100))}, }, expErr: true, - expErrMsg: "invalid delegator address: invalid bech32 string", + expErrMsg: "invalid delegator address: decoding bech32 failed", }, { name: "validator does not exist", @@ -556,9 +556,6 @@ func (s *KeeperTestSuite) TestMsgBeginRedelegate() { res, err := msgServer.CreateValidator(ctx, msg) require.NoError(err) require.NotNil(res) - - s.accountKeeper.EXPECT().StringToBytes(addr2.String()).Return(addr2, nil).AnyTimes() - s.accountKeeper.EXPECT().BytesToString(addr2).Return(addr2.String(), nil).AnyTimes() s.bankKeeper.EXPECT().DelegateCoinsFromAccountToModule(gomock.Any(), addr2, stakingtypes.NotBondedPoolName, gomock.Any()).AnyTimes() msg, err = stakingtypes.NewMsgCreateValidator(dstValAddr, dstPk, amt, stakingtypes.Description{Moniker: "NewVal"}, comm, math.OneInt()) @@ -611,7 +608,7 @@ func (s *KeeperTestSuite) TestMsgBeginRedelegate() { Amount: sdk.Coin{Denom: sdk.DefaultBondDenom, Amount: keeper.TokensFromConsensusPower(s.ctx, int64(100))}, }, expErr: true, - expErrMsg: "invalid delegator address: invalid bech32 string", + expErrMsg: "invalid delegator address: decoding bech32 failed: invalid bech32 string length 7", }, { name: "invalid destination validator", @@ -762,7 +759,7 @@ func (s *KeeperTestSuite) TestMsgUndelegate() { Amount: sdk.Coin{Denom: sdk.DefaultBondDenom, Amount: shares.RoundInt()}, }, expErr: true, - expErrMsg: "invalid delegator address: invalid bech32 string", + expErrMsg: "invalid delegator address: decoding bech32 failed", }, { name: "validator does not exist", @@ -839,9 +836,6 @@ func (s *KeeperTestSuite) TestMsgCancelUnbondingDelegation() { comm := stakingtypes.NewCommissionRates(math.LegacyNewDec(0), math.LegacyNewDec(0), math.LegacyNewDec(0)) amt := sdk.Coin{Denom: sdk.DefaultBondDenom, Amount: keeper.TokensFromConsensusPower(s.ctx, int64(100))} - s.accountKeeper.EXPECT().StringToBytes(Addr.String()).Return(Addr, nil).AnyTimes() - s.accountKeeper.EXPECT().BytesToString(Addr).Return(Addr.String(), nil).AnyTimes() - s.bankKeeper.EXPECT().DelegateCoinsFromAccountToModule(gomock.Any(), Addr, stakingtypes.NotBondedPoolName, gomock.Any()).AnyTimes() msg, err := stakingtypes.NewMsgCreateValidator(ValAddr, pk, amt, stakingtypes.Description{Moniker: "NewVal"}, comm, math.OneInt()) @@ -900,7 +894,7 @@ func (s *KeeperTestSuite) TestMsgCancelUnbondingDelegation() { CreationHeight: 10, }, expErr: true, - expErrMsg: "invalid delegator address: invalid bech32 string", + expErrMsg: "invalid delegator address: decoding bech32 failed", }, { name: "entry not found at height", diff --git a/x/staking/keeper/slash.go b/x/staking/keeper/slash.go index 036e62871c..99bfd159dc 100644 --- a/x/staking/keeper/slash.go +++ b/x/staking/keeper/slash.go @@ -271,7 +271,7 @@ func (k Keeper) SlashRedelegation(ctx sdk.Context, srcValidator types.Validator, panic(err) } - delegatorAddress, err := k.authKeeper.StringToBytes(redelegation.DelegatorAddress) + delegatorAddress, err := k.authKeeper.AddressCodec().StringToBytes(redelegation.DelegatorAddress) if err != nil { panic(err) } diff --git a/x/staking/keeper/unbonding.go b/x/staking/keeper/unbonding.go index bccbe3e14f..7405313221 100644 --- a/x/staking/keeper/unbonding.go +++ b/x/staking/keeper/unbonding.go @@ -128,7 +128,7 @@ 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, err := k.authKeeper.StringToBytes(ubd.DelegatorAddress) + delAddr, err := k.authKeeper.AddressCodec().StringToBytes(ubd.DelegatorAddress) if err != nil { panic(err) } @@ -149,7 +149,7 @@ 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, err := k.authKeeper.StringToBytes(red.DelegatorAddress) + delAddr, err := k.authKeeper.AddressCodec().StringToBytes(red.DelegatorAddress) if err != nil { panic(err) } @@ -266,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 := k.authKeeper.StringToBytes(ubd.DelegatorAddress) + delegatorAddress, err := k.authKeeper.AddressCodec().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 aad30a2fd9..8501afa3e8 100644 --- a/x/staking/keeper/unbonding_test.go +++ b/x/staking/keeper/unbonding_test.go @@ -56,10 +56,6 @@ 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 @@ -133,11 +129,6 @@ 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 @@ -266,10 +257,7 @@ 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 01557f7627..d459ed6ff3 100644 --- a/x/staking/keeper/val_state_change.go +++ b/x/staking/keeper/val_state_change.go @@ -41,7 +41,7 @@ func (k Keeper) BlockValidatorUpdates(ctx sdk.Context) []abci.ValidatorUpdate { if err != nil { panic(err) } - delegatorAddress, err := k.authKeeper.StringToBytes(dvPair.DelegatorAddress) + delegatorAddress, err := k.authKeeper.AddressCodec().StringToBytes(dvPair.DelegatorAddress) if err != nil { panic(err) } @@ -72,7 +72,7 @@ func (k Keeper) BlockValidatorUpdates(ctx sdk.Context) []abci.ValidatorUpdate { if err != nil { panic(err) } - delegatorAddress, err := k.authKeeper.StringToBytes(dvvTriplet.DelegatorAddress) + delegatorAddress, err := k.authKeeper.AddressCodec().StringToBytes(dvvTriplet.DelegatorAddress) if err != nil { panic(err) } diff --git a/x/staking/module.go b/x/staking/module.go index d7d421f738..2ea37e21fe 100644 --- a/x/staking/module.go +++ b/x/staking/module.go @@ -95,7 +95,7 @@ func (AppModuleBasic) GetTxCmd() *cobra.Command { // GetQueryCmd returns no root query command for the staking module. func (ab AppModuleBasic) GetQueryCmd() *cobra.Command { - return cli.GetQueryCmd(ab.ak) + return cli.GetQueryCmd(ab.ak.AddressCodec()) } // AppModule implements an application module for the staking module. diff --git a/x/staking/testutil/expected_keepers_mocks.go b/x/staking/testutil/expected_keepers_mocks.go index e44b9c3544..3123d781fb 100644 --- a/x/staking/testutil/expected_keepers_mocks.go +++ b/x/staking/testutil/expected_keepers_mocks.go @@ -8,6 +8,7 @@ import ( context "context" reflect "reflect" + address "cosmossdk.io/core/address" math "cosmossdk.io/math" types "github.com/cosmos/cosmos-sdk/types" types0 "github.com/cosmos/cosmos-sdk/x/staking/types" @@ -88,19 +89,18 @@ func (m *MockAccountKeeper) EXPECT() *MockAccountKeeperMockRecorder { return m.recorder } -// BytesToString mocks base method. -func (m *MockAccountKeeper) BytesToString(bz []byte) (string, error) { +// AddressCodec mocks base method. +func (m *MockAccountKeeper) AddressCodec() address.Codec { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "BytesToString", bz) - ret0, _ := ret[0].(string) - ret1, _ := ret[1].(error) - return ret0, ret1 + ret := m.ctrl.Call(m, "AddressCodec") + ret0, _ := ret[0].(address.Codec) + return ret0 } -// BytesToString indicates an expected call of BytesToString. -func (mr *MockAccountKeeperMockRecorder) BytesToString(bz interface{}) *gomock.Call { +// AddressCodec indicates an expected call of AddressCodec. +func (mr *MockAccountKeeperMockRecorder) AddressCodec() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "BytesToString", reflect.TypeOf((*MockAccountKeeper)(nil).BytesToString), bz) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddressCodec", reflect.TypeOf((*MockAccountKeeper)(nil).AddressCodec)) } // GetAccount mocks base method. @@ -169,21 +169,6 @@ 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 c6becee406..a7ef4ab37c 100644 --- a/x/staking/types/expected_keepers.go +++ b/x/staking/types/expected_keepers.go @@ -17,7 +17,7 @@ type DistributionKeeper interface { // AccountKeeper defines the expected account keeper (noalias) type AccountKeeper interface { - address.Codec + AddressCodec() address.Codec IterateAccounts(ctx context.Context, process func(sdk.AccountI) (stop bool)) GetAccount(ctx context.Context, addr sdk.AccAddress) sdk.AccountI // only used for simulation