Skip to content

Commit 864e9f1

Browse files
refactor(x/bank,x/distr,x/feegrant)!: reduce auth keeper dependency (#21651)
1 parent e475af3 commit 864e9f1

37 files changed

+193
-450
lines changed

simapp/app.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -387,7 +387,7 @@ func NewSimApp(
387387
appCodec, legacyAmino, app.StakingKeeper, govModuleAddr,
388388
)
389389

390-
app.FeeGrantKeeper = feegrantkeeper.NewKeeper(runtime.NewEnvironment(runtime.NewKVStoreService(keys[feegrant.StoreKey]), logger.With(log.ModuleKey, "x/feegrant")), appCodec, app.AuthKeeper)
390+
app.FeeGrantKeeper = feegrantkeeper.NewKeeper(runtime.NewEnvironment(runtime.NewKVStoreService(keys[feegrant.StoreKey]), logger.With(log.ModuleKey, "x/feegrant")), appCodec, app.AuthKeeper.AddressCodec())
391391

392392
// register the staking hooks
393393
// NOTE: stakingKeeper above is passed by reference, so that it will contain these hooks

x/bank/depinject.go

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"sort"
88

99
modulev1 "cosmossdk.io/api/cosmos/bank/module/v1"
10+
"cosmossdk.io/core/address"
1011
"cosmossdk.io/core/appmodule"
1112
"cosmossdk.io/depinject"
1213
"cosmossdk.io/depinject/appconfig"
@@ -33,9 +34,10 @@ func init() {
3334
type ModuleInputs struct {
3435
depinject.In
3536

36-
Config *modulev1.Module
37-
Cdc codec.Codec
38-
Environment appmodule.Environment
37+
Config *modulev1.Module
38+
Cdc codec.Codec
39+
Environment appmodule.Environment
40+
AddressCodec address.Codec
3941

4042
AccountKeeper types.AccountKeeper
4143
}
@@ -55,15 +57,15 @@ func ProvideModule(in ModuleInputs) ModuleOutputs {
5557
blockedAddresses := make(map[string]bool)
5658
if len(in.Config.BlockedModuleAccountsOverride) > 0 {
5759
for _, moduleName := range in.Config.BlockedModuleAccountsOverride {
58-
addrStr, err := in.AccountKeeper.AddressCodec().BytesToString(authtypes.NewModuleAddress(moduleName))
60+
addrStr, err := in.AddressCodec.BytesToString(authtypes.NewModuleAddress(moduleName))
5961
if err != nil {
6062
panic(err)
6163
}
6264
blockedAddresses[addrStr] = true
6365
}
6466
} else {
6567
for _, permission := range in.AccountKeeper.GetModulePermissions() {
66-
addrStr, err := in.AccountKeeper.AddressCodec().BytesToString(permission.GetAddress())
68+
addrStr, err := in.AddressCodec.BytesToString(permission.GetAddress())
6769
if err != nil {
6870
panic(err)
6971
}
@@ -77,7 +79,7 @@ func ProvideModule(in ModuleInputs) ModuleOutputs {
7779
authority = authtypes.NewModuleAddressOrBech32Address(in.Config.Authority)
7880
}
7981

80-
authStr, err := in.AccountKeeper.AddressCodec().BytesToString(authority)
82+
authStr, err := in.AddressCodec.BytesToString(authority)
8183
if err != nil {
8284
panic(err)
8385
}

x/bank/keeper/collections_test.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ import (
1616
banktestutil "cosmossdk.io/x/bank/testutil"
1717
banktypes "cosmossdk.io/x/bank/types"
1818

19-
"github.com/cosmos/cosmos-sdk/codec/address"
2019
codectestutil "github.com/cosmos/cosmos-sdk/codec/testutil"
2120
"github.com/cosmos/cosmos-sdk/runtime"
2221
"github.com/cosmos/cosmos-sdk/testutil"
@@ -32,13 +31,13 @@ func TestBankStateCompatibility(t *testing.T) {
3231
encCfg := moduletestutil.MakeTestEncodingConfig(codectestutil.CodecOptions{})
3332

3433
env := runtime.NewEnvironment(runtime.NewKVStoreService(key), coretesting.NewNopLogger())
34+
ac := codectestutil.CodecOptions{}.GetAddressCodec()
3535

3636
// gomock initializations
3737
ctrl := gomock.NewController(t)
3838
authKeeper := banktestutil.NewMockAccountKeeper(ctrl)
39-
authKeeper.EXPECT().AddressCodec().Return(address.NewBech32Codec("cosmos")).AnyTimes()
39+
authKeeper.EXPECT().AddressCodec().Return(ac).AnyTimes()
4040

41-
ac := codectestutil.CodecOptions{}.GetAddressCodec()
4241
addr, err := ac.BytesToString(accAddrs[4])
4342
require.NoError(t, err)
4443
authority, err := ac.BytesToString(authtypes.NewModuleAddress(banktypes.GovModuleName))

x/bank/keeper/genesis.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,14 @@ func (k BaseKeeper) InitGenesis(ctx context.Context, genState *types.GenesisStat
2323
}
2424
totalSupplyMap := sdk.NewMapCoins(sdk.Coins{})
2525

26-
genState.Balances, err = types.SanitizeGenesisBalances(genState.Balances, k.ak.AddressCodec())
26+
genState.Balances, err = types.SanitizeGenesisBalances(genState.Balances, k.addrCdc)
2727
if err != nil {
2828
return err
2929
}
3030

3131
for _, balance := range genState.Balances {
3232
addr := balance.GetAddress()
33-
bz, err := k.ak.AddressCodec().StringToBytes(addr)
33+
bz, err := k.addrCdc.StringToBytes(addr)
3434
if err != nil {
3535
return err
3636
}

x/bank/keeper/genesis_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ func (suite *KeeperTestSuite) TestExportGenesis() {
2121

2222
for i := range []int{1, 2} {
2323
suite.bankKeeper.SetDenomMetaData(ctx, expectedMetadata[i])
24-
accAddr, err1 := suite.authKeeper.AddressCodec().StringToBytes(expectedBalances[i].Address)
24+
accAddr, err1 := suite.addrCdc.StringToBytes(expectedBalances[i].Address)
2525
if err1 != nil {
2626
panic(err1)
2727
}

x/bank/keeper/grpc_query.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ func (k BaseKeeper) Balance(ctx context.Context, req *types.QueryBalanceRequest)
3737
return nil, status.Error(codes.InvalidArgument, err.Error())
3838
}
3939

40-
address, err := k.ak.AddressCodec().StringToBytes(req.Address)
40+
address, err := k.addrCdc.StringToBytes(req.Address)
4141
if err != nil {
4242
return nil, status.Errorf(codes.InvalidArgument, "invalid address: %s", err.Error())
4343
}
@@ -53,7 +53,7 @@ func (k BaseKeeper) AllBalances(ctx context.Context, req *types.QueryAllBalances
5353
return nil, status.Error(codes.InvalidArgument, "empty request")
5454
}
5555

56-
addr, err := k.ak.AddressCodec().StringToBytes(req.Address)
56+
addr, err := k.addrCdc.StringToBytes(req.Address)
5757
if err != nil {
5858
return nil, status.Errorf(codes.InvalidArgument, "invalid address: %s", err.Error())
5959
}
@@ -86,7 +86,7 @@ func (k BaseKeeper) SpendableBalances(ctx context.Context, req *types.QuerySpend
8686
return nil, status.Error(codes.InvalidArgument, "empty request")
8787
}
8888

89-
addr, err := k.ak.AddressCodec().StringToBytes(req.Address)
89+
addr, err := k.addrCdc.StringToBytes(req.Address)
9090
if err != nil {
9191
return nil, status.Errorf(codes.InvalidArgument, "invalid address: %s", err.Error())
9292
}
@@ -120,7 +120,7 @@ func (k BaseKeeper) SpendableBalanceByDenom(ctx context.Context, req *types.Quer
120120
return nil, status.Error(codes.InvalidArgument, "empty request")
121121
}
122122

123-
addr, err := k.ak.AddressCodec().StringToBytes(req.Address)
123+
addr, err := k.addrCdc.StringToBytes(req.Address)
124124
if err != nil {
125125
return nil, status.Errorf(codes.InvalidArgument, "invalid address: %s", err.Error())
126126
}
@@ -295,7 +295,7 @@ func (k BaseKeeper) DenomOwners(
295295
if err != nil {
296296
return nil, err
297297
}
298-
addr, err := k.ak.AddressCodec().BytesToString(key.K2())
298+
addr, err := k.addrCdc.BytesToString(key.K2())
299299
if err != nil {
300300
return nil, err
301301
}

x/bank/keeper/grpc_query_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ func (suite *KeeperTestSuite) TestQueryBalance() {
2121
ctx, queryClient := suite.ctx, suite.queryClient
2222
_, _, addr := testdata.KeyTestPubAddr()
2323

24-
addrStr, err := suite.authKeeper.AddressCodec().BytesToString(addr)
24+
addrStr, err := suite.addrCdc.BytesToString(addr)
2525
suite.Require().NoError(err)
2626

2727
origCoins := sdk.NewCoins(newBarCoin(30))
@@ -105,7 +105,7 @@ func (suite *KeeperTestSuite) TestQueryAllBalances() {
105105
_, err := queryClient.AllBalances(gocontext.Background(), &types.QueryAllBalancesRequest{})
106106
suite.Require().Error(err)
107107

108-
addrStr, err := suite.authKeeper.AddressCodec().BytesToString(addr)
108+
addrStr, err := suite.addrCdc.BytesToString(addr)
109109
suite.Require().NoError(err)
110110

111111
pageReq := &query.PageRequest{
@@ -178,7 +178,7 @@ func (suite *KeeperTestSuite) TestQueryAllBalances() {
178178

179179
func (suite *KeeperTestSuite) TestSpendableBalances() {
180180
_, _, addr := testdata.KeyTestPubAddr()
181-
addrStr, err := suite.authKeeper.AddressCodec().BytesToString(addr)
181+
addrStr, err := suite.addrCdc.BytesToString(addr)
182182
suite.Require().NoError(err)
183183

184184
ctx := sdk.UnwrapSDKContext(suite.ctx)
@@ -241,7 +241,7 @@ func (suite *KeeperTestSuite) TestSpendableBalanceByDenom() {
241241
_, err := queryClient.SpendableBalanceByDenom(ctx, &types.QuerySpendableBalanceByDenomRequest{})
242242
suite.Require().Error(err)
243243

244-
addrStr, err := suite.authKeeper.AddressCodec().BytesToString(addr)
244+
addrStr, err := suite.addrCdc.BytesToString(addr)
245245
suite.Require().NoError(err)
246246

247247
req := types.NewQuerySpendableBalanceByDenomRequest(addrStr, fooDenom)

x/bank/keeper/keeper.go

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"context"
55
"fmt"
66

7+
"cosmossdk.io/core/address"
78
"cosmossdk.io/core/appmodule"
89
"cosmossdk.io/core/event"
910
errorsmod "cosmossdk.io/errors"
@@ -60,6 +61,7 @@ type BaseKeeper struct {
6061
ak types.AccountKeeper
6162
cdc codec.BinaryCodec
6263
mintCoinsRestrictionFn types.MintingRestrictionFn
64+
addrCdc address.Codec
6365
}
6466

6567
// GetPaginatedTotalSupply queries for the supply, ignoring 0 coins, with a given pagination
@@ -87,7 +89,8 @@ func NewBaseKeeper(
8789
blockedAddrs map[string]bool,
8890
authority string,
8991
) BaseKeeper {
90-
if _, err := ak.AddressCodec().StringToBytes(authority); err != nil {
92+
addrCdc := ak.AddressCodec()
93+
if _, err := addrCdc.StringToBytes(authority); err != nil {
9194
panic(fmt.Errorf("invalid bank authority address: %w", err))
9295
}
9396

@@ -97,6 +100,7 @@ func NewBaseKeeper(
97100
ak: ak,
98101
cdc: cdc,
99102
mintCoinsRestrictionFn: types.NoOpMintingRestrictionFn,
103+
addrCdc: addrCdc,
100104
}
101105
}
102106

@@ -146,7 +150,7 @@ func (k BaseKeeper) DelegateCoins(ctx context.Context, delegatorAddr, moduleAccA
146150
return errorsmod.Wrap(err, "failed to track delegation")
147151
}
148152
// emit coin spent event
149-
delAddrStr, err := k.ak.AddressCodec().BytesToString(delegatorAddr)
153+
delAddrStr, err := k.addrCdc.BytesToString(delegatorAddr)
150154
if err != nil {
151155
return err
152156
}
@@ -362,7 +366,7 @@ func (k BaseKeeper) MintCoins(ctx context.Context, moduleName string, amounts sd
362366

363367
k.Logger.Debug("minted coins from module account", "amount", amounts.String(), "from", moduleName)
364368

365-
addrStr, err := k.ak.AddressCodec().BytesToString(acc.GetAddress())
369+
addrStr, err := k.addrCdc.BytesToString(acc.GetAddress())
366370
if err != nil {
367371
return err
368372
}
@@ -403,7 +407,7 @@ func (k BaseKeeper) BurnCoins(ctx context.Context, address []byte, amounts sdk.C
403407
k.setSupply(ctx, supply)
404408
}
405409

406-
addrStr, err := k.ak.AddressCodec().BytesToString(acc.GetAddress())
410+
addrStr, err := k.addrCdc.BytesToString(acc.GetAddress())
407411
if err != nil {
408412
return err
409413
}

x/bank/keeper/keeper_test.go

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313
"github.com/golang/mock/gomock"
1414
"github.com/stretchr/testify/suite"
1515

16+
"cosmossdk.io/core/address"
1617
coreevent "cosmossdk.io/core/event"
1718
"cosmossdk.io/core/header"
1819
coretesting "cosmossdk.io/core/testing"
@@ -24,7 +25,6 @@ import (
2425
banktypes "cosmossdk.io/x/bank/types"
2526

2627
"github.com/cosmos/cosmos-sdk/baseapp"
27-
"github.com/cosmos/cosmos-sdk/codec/address"
2828
codectestutil "github.com/cosmos/cosmos-sdk/codec/testutil"
2929
"github.com/cosmos/cosmos-sdk/runtime"
3030
"github.com/cosmos/cosmos-sdk/testutil"
@@ -114,6 +114,7 @@ type KeeperTestSuite struct {
114114

115115
ctx context.Context
116116
bankKeeper keeper.BaseKeeper
117+
addrCdc address.Codec
117118
authKeeper *banktestutil.MockAccountKeeper
118119

119120
queryClient banktypes.QueryClient
@@ -143,9 +144,10 @@ func (suite *KeeperTestSuite) SetupTest() {
143144
// gomock initializations
144145
ctrl := gomock.NewController(suite.T())
145146
authKeeper := banktestutil.NewMockAccountKeeper(ctrl)
146-
authKeeper.EXPECT().AddressCodec().Return(address.NewBech32Codec("cosmos")).AnyTimes()
147+
authKeeper.EXPECT().AddressCodec().Return(ac).AnyTimes()
147148
suite.ctx = ctx
148149
suite.authKeeper = authKeeper
150+
suite.addrCdc = ac
149151
suite.bankKeeper = keeper.NewBaseKeeper(
150152
env,
151153
encCfg.Codec,
@@ -320,9 +322,9 @@ func (suite *KeeperTestSuite) TestGetAuthority() {
320322
authority,
321323
)
322324
}
323-
govAddr, err := suite.authKeeper.AddressCodec().BytesToString(authtypes.NewModuleAddress(banktypes.GovModuleName))
325+
govAddr, err := suite.addrCdc.BytesToString(authtypes.NewModuleAddress(banktypes.GovModuleName))
324326
suite.Require().NoError(err)
325-
modAddr, err := suite.authKeeper.AddressCodec().BytesToString(authtypes.NewModuleAddress(banktypes.MintModuleName))
327+
modAddr, err := suite.addrCdc.BytesToString(authtypes.NewModuleAddress(banktypes.MintModuleName))
326328
suite.Require().NoError(err)
327329

328330
tests := map[string]string{
@@ -647,9 +649,9 @@ func (suite *KeeperTestSuite) TestInputOutputNewAccount() {
647649

648650
require.Empty(suite.bankKeeper.GetAllBalances(ctx, accAddrs[1]))
649651

650-
acc0StrAddr, err := suite.authKeeper.AddressCodec().BytesToString(accAddrs[0])
652+
acc0StrAddr, err := suite.addrCdc.BytesToString(accAddrs[0])
651653
suite.Require().NoError(err)
652-
acc1StrAddr, err := suite.authKeeper.AddressCodec().BytesToString(accAddrs[1])
654+
acc1StrAddr, err := suite.addrCdc.BytesToString(accAddrs[1])
653655
suite.Require().NoError(err)
654656

655657
suite.mockInputOutputCoins([]sdk.AccountI{authtypes.NewBaseAccountWithAddress(accAddrs[0])}, []sdk.AccAddress{accAddrs[1]})
@@ -674,11 +676,11 @@ func (suite *KeeperTestSuite) TestInputOutputCoins() {
674676

675677
acc0 := authtypes.NewBaseAccountWithAddress(accAddrs[0])
676678

677-
acc0StrAddr, err := suite.authKeeper.AddressCodec().BytesToString(accAddrs[0])
679+
acc0StrAddr, err := suite.addrCdc.BytesToString(accAddrs[0])
678680
suite.Require().NoError(err)
679-
acc1StrAddr, err := suite.authKeeper.AddressCodec().BytesToString(accAddrs[1])
681+
acc1StrAddr, err := suite.addrCdc.BytesToString(accAddrs[1])
680682
suite.Require().NoError(err)
681-
acc2StrAddr, err := suite.authKeeper.AddressCodec().BytesToString(accAddrs[2])
683+
acc2StrAddr, err := suite.addrCdc.BytesToString(accAddrs[2])
682684
suite.Require().NoError(err)
683685

684686
input := banktypes.Input{
@@ -786,16 +788,16 @@ func (suite *KeeperTestSuite) TestInputOutputCoinsWithRestrictions() {
786788
setupCtx := suite.ctx
787789
balances := sdk.NewCoins(newFooCoin(1000), newBarCoin(500))
788790
fromAddr := accAddrs[0]
789-
fromStrAddr, err := suite.authKeeper.AddressCodec().BytesToString(fromAddr)
791+
fromStrAddr, err := suite.addrCdc.BytesToString(fromAddr)
790792
suite.Require().NoError(err)
791793
fromAcc := authtypes.NewBaseAccountWithAddress(fromAddr)
792794
inputAccs := []sdk.AccountI{fromAcc}
793795
suite.authKeeper.EXPECT().GetAccount(suite.ctx, inputAccs[0].GetAddress()).Return(inputAccs[0]).AnyTimes()
794796
toAddr1 := accAddrs[1]
795-
toAddr1Str, err := suite.authKeeper.AddressCodec().BytesToString(toAddr1)
797+
toAddr1Str, err := suite.addrCdc.BytesToString(toAddr1)
796798
suite.Require().NoError(err)
797799
toAddr2 := accAddrs[2]
798-
toAddr2Str, err := suite.authKeeper.AddressCodec().BytesToString(toAddr2)
800+
toAddr2Str, err := suite.addrCdc.BytesToString(toAddr2)
799801
suite.Require().NoError(err)
800802

801803
suite.mockFundAccount(accAddrs[0])
@@ -1365,9 +1367,9 @@ func (suite *KeeperTestSuite) TestMsgSendEvents() {
13651367

13661368
acc0 := authtypes.NewBaseAccountWithAddress(accAddrs[0])
13671369

1368-
acc0StrAddr, err := suite.authKeeper.AddressCodec().BytesToString(accAddrs[0])
1370+
acc0StrAddr, err := suite.addrCdc.BytesToString(accAddrs[0])
13691371
suite.Require().NoError(err)
1370-
acc1StrAddr, err := suite.authKeeper.AddressCodec().BytesToString(accAddrs[1])
1372+
acc1StrAddr, err := suite.addrCdc.BytesToString(accAddrs[1])
13711373
suite.Require().NoError(err)
13721374

13731375
newCoins := sdk.NewCoins(sdk.NewInt64Coin(fooDenom, 50))
@@ -1407,11 +1409,11 @@ func (suite *KeeperTestSuite) TestMsgMultiSendEvents() {
14071409

14081410
require.NoError(suite.bankKeeper.SetParams(ctx, banktypes.DefaultParams()))
14091411

1410-
acc0StrAddr, err := suite.authKeeper.AddressCodec().BytesToString(accAddrs[0])
1412+
acc0StrAddr, err := suite.addrCdc.BytesToString(accAddrs[0])
14111413
suite.Require().NoError(err)
1412-
acc2StrAddr, err := suite.authKeeper.AddressCodec().BytesToString(accAddrs[2])
1414+
acc2StrAddr, err := suite.addrCdc.BytesToString(accAddrs[2])
14131415
suite.Require().NoError(err)
1414-
acc3StrAddr, err := suite.authKeeper.AddressCodec().BytesToString(accAddrs[3])
1416+
acc3StrAddr, err := suite.addrCdc.BytesToString(accAddrs[3])
14151417
suite.Require().NoError(err)
14161418

14171419
coins := sdk.NewCoins(sdk.NewInt64Coin(fooDenom, 50), sdk.NewInt64Coin(barDenom, 100))
@@ -1932,15 +1934,15 @@ func (suite *KeeperTestSuite) TestBalanceTrackingEvents() {
19321934
case banktypes.EventTypeCoinSpent:
19331935
coinsSpent, err := sdk.ParseCoinsNormalized(e.Attributes[1].Value)
19341936
require.NoError(err)
1935-
_, err = suite.authKeeper.AddressCodec().StringToBytes(e.Attributes[0].Value)
1937+
_, err = suite.addrCdc.StringToBytes(e.Attributes[0].Value)
19361938
require.NoError(err)
19371939

19381940
balances[e.Attributes[0].Value] = balances[e.Attributes[0].Value].Sub(coinsSpent...)
19391941

19401942
case banktypes.EventTypeCoinReceived:
19411943
coinsRecv, err := sdk.ParseCoinsNormalized(e.Attributes[1].Value)
19421944
require.NoError(err)
1943-
_, err = suite.authKeeper.AddressCodec().StringToBytes(e.Attributes[0].Value)
1945+
_, err = suite.addrCdc.StringToBytes(e.Attributes[0].Value)
19441946
require.NoError(err)
19451947
balances[e.Attributes[0].Value] = balances[e.Attributes[0].Value].Add(coinsRecv...)
19461948
}
@@ -1958,7 +1960,7 @@ func (suite *KeeperTestSuite) TestBalanceTrackingEvents() {
19581960
return false
19591961
}
19601962

1961-
addr, err := suite.authKeeper.AddressCodec().BytesToString(address)
1963+
addr, err := suite.addrCdc.BytesToString(address)
19621964
suite.Require().NoError(err)
19631965

19641966
balance, exists := balances[addr]

0 commit comments

Comments
 (0)