From 7ce4c1b6a40100dc4cf7fb5a2673f24edc13666c Mon Sep 17 00:00:00 2001 From: atheesh Date: Thu, 29 Apr 2021 13:51:18 +0530 Subject: [PATCH 1/7] fix zero coins issue --- x/bank/keeper/keeper.go | 18 +++++++++++++----- x/bank/keeper/send.go | 9 +++++++-- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/x/bank/keeper/keeper.go b/x/bank/keeper/keeper.go index a5b05b044ab8..421a25954b52 100644 --- a/x/bank/keeper/keeper.go +++ b/x/bank/keeper/keeper.go @@ -67,7 +67,9 @@ func (k BaseKeeper) GetPaginatedTotalSupply(ctx sdk.Context, pagination *query.P if err != nil { return fmt.Errorf("unable to convert amount string to Int %v", err) } - supply = append(supply, sdk.NewCoin(string(key), amount)) + + // `Add` omits the 0 coins addition to the `supply`. + supply = supply.Add(sdk.NewCoin(string(key), amount)) return nil }) @@ -426,14 +428,20 @@ func (k BaseKeeper) BurnCoins(ctx sdk.Context, moduleName string, amounts sdk.Co } func (k BaseKeeper) setSupply(ctx sdk.Context, coin sdk.Coin) { - store := ctx.KVStore(k.storeKey) - supplyStore := prefix.NewStore(store, types.SupplyKey) - intBytes, err := coin.Amount.Marshal() if err != nil { panic(fmt.Errorf("unable to marshal amount value %v", err)) } - supplyStore.Set([]byte(coin.GetDenom()), intBytes) + + store := ctx.KVStore(k.storeKey) + supplyStore := prefix.NewStore(store, types.SupplyKey) + + // incase of `coin` is zero remove it from `supplyStore` (this case can be possible when burning all coins). + if coin.IsZero() { + supplyStore.Delete([]byte(coin.Denom)) + } else { + supplyStore.Set([]byte(coin.GetDenom()), intBytes) + } } func (k BaseKeeper) trackDelegation(ctx sdk.Context, addr sdk.AccAddress, balance, amt sdk.Coins) error { diff --git a/x/bank/keeper/send.go b/x/bank/keeper/send.go index 0093a3b805a5..ded920b355ed 100644 --- a/x/bank/keeper/send.go +++ b/x/bank/keeper/send.go @@ -266,8 +266,13 @@ func (k BaseSendKeeper) setBalance(ctx sdk.Context, addr sdk.AccAddress, balance accountStore := k.getAccountStore(ctx, addr) - bz := k.cdc.MustMarshalBinaryBare(&balance) - accountStore.Set([]byte(balance.Denom), bz) + // if the balance is zero, we can delete the corresponding denom form store. + if balance.IsZero() { + accountStore.Delete([]byte(balance.Denom)) + } else { + bz := k.cdc.MustMarshalBinaryBare(&balance) + accountStore.Set([]byte(balance.Denom), bz) + } return nil } From 2abc40dcffa2ae530586f35f2b7754d62442bd6f Mon Sep 17 00:00:00 2001 From: atheesh Date: Thu, 29 Apr 2021 14:28:14 +0530 Subject: [PATCH 2/7] fix tests --- x/bank/keeper/genesis_test.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/x/bank/keeper/genesis_test.go b/x/bank/keeper/genesis_test.go index 5adb2174133a..70d53b9f0430 100644 --- a/x/bank/keeper/genesis_test.go +++ b/x/bank/keeper/genesis_test.go @@ -33,8 +33,6 @@ func (suite *IntegrationTestSuite) TestExportGenesis() { suite.Require().Len(exportGenesis.Params.SendEnabled, 0) suite.Require().Equal(types.DefaultParams().DefaultSendEnabled, exportGenesis.Params.DefaultSendEnabled) suite.Require().Equal(totalSupply, exportGenesis.Supply) - // add mint module balance as nil - expectedBalances = append(expectedBalances, types.Balance{Address: "cosmos1m3h30wlvsf8llruxtpukdvsy0km2kum8g38c8q", Coins: nil}) suite.Require().Equal(expectedBalances, exportGenesis.Balances) suite.Require().Equal(expectedMetadata, exportGenesis.DenomMetadata) } From 6665f8b9f24636e5a421a88584fedcd1c3c078b6 Mon Sep 17 00:00:00 2001 From: atheesh Date: Thu, 29 Apr 2021 15:45:08 +0530 Subject: [PATCH 3/7] udpate tests --- x/bank/keeper/keeper_test.go | 48 ++++++++++++++++++++++++++++++++---- 1 file changed, 43 insertions(+), 5 deletions(-) diff --git a/x/bank/keeper/keeper_test.go b/x/bank/keeper/keeper_test.go index 15672f4556b4..4bb5a3894dfa 100644 --- a/x/bank/keeper/keeper_test.go +++ b/x/bank/keeper/keeper_test.go @@ -89,17 +89,51 @@ func (suite *IntegrationTestSuite) SetupTest() { } func (suite *IntegrationTestSuite) TestSupply() { - app, ctx := suite.app, suite.ctx + app := simapp.Setup(false) + ctx := app.BaseApp.NewContext(false, tmproto.Header{Height: 1}) + appCodec := simapp.MakeTestEncodingConfig().Marshaler + + // add module accounts to supply keeper + maccPerms := simapp.GetMaccPerms() + maccPerms[holder] = nil + maccPerms[authtypes.Burner] = []string{authtypes.Burner} + maccPerms[authtypes.Minter] = []string{authtypes.Minter} + maccPerms[multiPerm] = []string{authtypes.Burner, authtypes.Minter, authtypes.Staking} + maccPerms[randomPerm] = []string{"random"} + + authKeeper := authkeeper.NewAccountKeeper( + appCodec, app.GetKey(types.StoreKey), app.GetSubspace(types.ModuleName), + authtypes.ProtoBaseAccount, maccPerms, + ) + keeper := keeper.NewBaseKeeper( + appCodec, app.GetKey(types.StoreKey), authKeeper, + app.GetSubspace(types.ModuleName), make(map[string]bool), + ) initialPower := int64(100) initTokens := suite.app.StakingKeeper.TokensFromConsensusPower(suite.ctx, initialPower) - totalSupply := sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, initTokens)) - suite.NoError(app.BankKeeper.MintCoins(ctx, minttypes.ModuleName, totalSupply)) - total, _, err := app.BankKeeper.GetPaginatedTotalSupply(ctx, &query.PageRequest{}) + // set burnerAcc balance + authKeeper.SetModuleAccount(ctx, burnerAcc) + suite. + Require(). + NoError(keeper.MintCoins(ctx, authtypes.Minter, totalSupply)) + suite. + Require(). + NoError(keeper.SendCoinsFromModuleToAccount(ctx, authtypes.Minter, burnerAcc.GetAddress(), totalSupply)) + + total, _, err := keeper.GetPaginatedTotalSupply(ctx, &query.PageRequest{}) suite.Require().NoError(err) suite.Require().Equal(totalSupply, total) + + // burning all supplied tokens + err = keeper.BurnCoins(ctx, authtypes.Burner, totalSupply) + suite.Require().NoError(err) + + total, _, err = keeper.GetPaginatedTotalSupply(ctx, &query.PageRequest{}) + suite.Require().NoError(err) + suite.Require().Equal(total.String(), "") } func (suite *IntegrationTestSuite) TestSendCoinsFromModuleToAccount_Blacklist() { @@ -349,11 +383,15 @@ func (suite *IntegrationTestSuite) TestSendCoinsNewAccount() { app.BankKeeper.GetAllBalances(ctx, addr2) suite.Require().Empty(app.BankKeeper.GetAllBalances(ctx, addr2)) - sendAmt := sdk.NewCoins(newFooCoin(50), newBarCoin(25)) + sendAmt := sdk.NewCoins(newFooCoin(50), newBarCoin(50)) suite.Require().NoError(app.BankKeeper.SendCoins(ctx, addr1, addr2, sendAmt)) acc2Balances := app.BankKeeper.GetAllBalances(ctx, addr2) + acc1Balances = app.BankKeeper.GetAllBalances(ctx, addr1) suite.Require().Equal(sendAmt, acc2Balances) + updatedAcc1Bal := balances.Sub(sendAmt) + suite.Require().Len(acc1Balances, len(updatedAcc1Bal)) + suite.Require().Equal(acc1Balances, updatedAcc1Bal) suite.Require().NotNil(app.AccountKeeper.GetAccount(ctx, addr2)) } From 9c8ba356904c791d6d9f0ad0b0bbca8749fc67f6 Mon Sep 17 00:00:00 2001 From: atheeshp <59333759+atheeshp@users.noreply.github.com> Date: Fri, 30 Apr 2021 10:37:11 +0530 Subject: [PATCH 4/7] Review change Co-authored-by: Federico Kunze <31522760+fedekunze@users.noreply.github.com> --- x/bank/keeper/send.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x/bank/keeper/send.go b/x/bank/keeper/send.go index 19ed6244e932..0aec391daa2e 100644 --- a/x/bank/keeper/send.go +++ b/x/bank/keeper/send.go @@ -266,7 +266,7 @@ func (k BaseSendKeeper) setBalance(ctx sdk.Context, addr sdk.AccAddress, balance accountStore := k.getAccountStore(ctx, addr) - // if the balance is zero, we can delete the corresponding denom form store. + // if the balance is zero, we can delete the corresponding denom from the store. if balance.IsZero() { accountStore.Delete([]byte(balance.Denom)) } else { From 37898c5d010ee38ec0a6e1019efa65dff71861ca Mon Sep 17 00:00:00 2001 From: atheesh Date: Fri, 30 Apr 2021 16:50:48 +0530 Subject: [PATCH 5/7] add change log --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1ae9bac0a4ec..1787629414f4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -123,6 +123,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (x/bank) [\#8434](https://github.com/cosmos/cosmos-sdk/pull/8434) Fix legacy REST API `GET /bank/total` and `GET /bank/total/{denom}` in swagger * (x/slashing) [\#8427](https://github.com/cosmos/cosmos-sdk/pull/8427) Fix query signing infos command * (server) [\#8399](https://github.com/cosmos/cosmos-sdk/pull/8399) fix gRPC-web flag default value +* (x/bank) [\#9229](https://github.com/cosmos/cosmos-sdk/pull/9229) Now zero coin balances cannot be added to balances & supply stores. If any denom becomes zero corresponding key gets deleted from store. ### Deprecated From 93f08d9b440560c6da941f0885c8470a41a8feb4 Mon Sep 17 00:00:00 2001 From: atheesh Date: Fri, 30 Apr 2021 19:30:58 +0530 Subject: [PATCH 6/7] review changes --- x/bank/keeper/keeper.go | 6 +-- x/bank/keeper/keeper_test.go | 73 +++++++++++++----------------------- x/bank/keeper/send.go | 2 +- 3 files changed, 30 insertions(+), 51 deletions(-) diff --git a/x/bank/keeper/keeper.go b/x/bank/keeper/keeper.go index 245dfa5f700e..c02b11a17eae 100644 --- a/x/bank/keeper/keeper.go +++ b/x/bank/keeper/keeper.go @@ -126,7 +126,7 @@ func (k BaseKeeper) DelegateCoins(ctx sdk.Context, delegatorAddr, moduleAccAddr balances := sdk.NewCoins() for _, coin := range amt { - balance := k.GetBalance(ctx, delegatorAddr, coin.Denom) + balance := k.GetBalance(ctx, delegatorAddr, coin.GetDenom()) if balance.IsLT(coin) { return sdkerrors.Wrapf( sdkerrors.ErrInsufficientFunds, "failed to delegate; %s is smaller than %s", balance, amt, @@ -436,9 +436,9 @@ func (k BaseKeeper) setSupply(ctx sdk.Context, coin sdk.Coin) { store := ctx.KVStore(k.storeKey) supplyStore := prefix.NewStore(store, types.SupplyKey) - // incase of `coin` is zero remove it from `supplyStore` (this case can be possible when burning all coins). + // Bank invariants and IBC requires to remove zero coins. if coin.IsZero() { - supplyStore.Delete([]byte(coin.Denom)) + supplyStore.Delete([]byte(coin.GetDenom())) } else { supplyStore.Set([]byte(coin.GetDenom()), intBytes) } diff --git a/x/bank/keeper/keeper_test.go b/x/bank/keeper/keeper_test.go index 4bb5a3894dfa..55db4f5a362a 100644 --- a/x/bank/keeper/keeper_test.go +++ b/x/bank/keeper/keeper_test.go @@ -72,6 +72,16 @@ type IntegrationTestSuite struct { queryClient types.QueryClient } +func getModuleAccPerms() map[string][]string { + maccPerms := simapp.GetMaccPerms() + maccPerms[holder] = nil + maccPerms[authtypes.Burner] = []string{authtypes.Burner} + maccPerms[authtypes.Minter] = []string{authtypes.Minter} + maccPerms[multiPerm] = []string{authtypes.Burner, authtypes.Minter, authtypes.Staking} + maccPerms[randomPerm] = []string{"random"} + return maccPerms +} + func (suite *IntegrationTestSuite) SetupTest() { app := simapp.Setup(false) ctx := app.BaseApp.NewContext(false, tmproto.Header{}) @@ -93,14 +103,10 @@ func (suite *IntegrationTestSuite) TestSupply() { ctx := app.BaseApp.NewContext(false, tmproto.Header{Height: 1}) appCodec := simapp.MakeTestEncodingConfig().Marshaler - // add module accounts to supply keeper - maccPerms := simapp.GetMaccPerms() - maccPerms[holder] = nil - maccPerms[authtypes.Burner] = []string{authtypes.Burner} - maccPerms[authtypes.Minter] = []string{authtypes.Minter} - maccPerms[multiPerm] = []string{authtypes.Burner, authtypes.Minter, authtypes.Staking} - maccPerms[randomPerm] = []string{"random"} + require := suite.Require() + // add module accounts to supply keeper + maccPerms := getModuleAccPerms() authKeeper := authkeeper.NewAccountKeeper( appCodec, app.GetKey(types.StoreKey), app.GetSubspace(types.ModuleName), authtypes.ProtoBaseAccount, maccPerms, @@ -116,24 +122,20 @@ func (suite *IntegrationTestSuite) TestSupply() { // set burnerAcc balance authKeeper.SetModuleAccount(ctx, burnerAcc) - suite. - Require(). - NoError(keeper.MintCoins(ctx, authtypes.Minter, totalSupply)) - suite. - Require(). - NoError(keeper.SendCoinsFromModuleToAccount(ctx, authtypes.Minter, burnerAcc.GetAddress(), totalSupply)) + require.NoError(keeper.MintCoins(ctx, authtypes.Minter, totalSupply)) + require.NoError(keeper.SendCoinsFromModuleToAccount(ctx, authtypes.Minter, burnerAcc.GetAddress(), totalSupply)) total, _, err := keeper.GetPaginatedTotalSupply(ctx, &query.PageRequest{}) - suite.Require().NoError(err) - suite.Require().Equal(totalSupply, total) + require.NoError(err) + require.Equal(totalSupply, total) // burning all supplied tokens err = keeper.BurnCoins(ctx, authtypes.Burner, totalSupply) - suite.Require().NoError(err) + require.NoError(err) total, _, err = keeper.GetPaginatedTotalSupply(ctx, &query.PageRequest{}) - suite.Require().NoError(err) - suite.Require().Equal(total.String(), "") + require.NoError(err) + require.Equal(total.String(), "") } func (suite *IntegrationTestSuite) TestSendCoinsFromModuleToAccount_Blacklist() { @@ -142,19 +144,13 @@ func (suite *IntegrationTestSuite) TestSendCoinsFromModuleToAccount_Blacklist() appCodec := app.AppCodec() // add module accounts to supply keeper - maccPerms := simapp.GetMaccPerms() - maccPerms[holder] = nil - maccPerms[authtypes.Burner] = []string{authtypes.Burner} - maccPerms[authtypes.Minter] = []string{authtypes.Minter} - maccPerms[multiPerm] = []string{authtypes.Burner, authtypes.Minter, authtypes.Staking} - maccPerms[randomPerm] = []string{"random"} - - addr1 := sdk.AccAddress([]byte("addr1_______________")) - + maccPerms := getModuleAccPerms() authKeeper := authkeeper.NewAccountKeeper( appCodec, app.GetKey(types.StoreKey), app.GetSubspace(types.ModuleName), authtypes.ProtoBaseAccount, maccPerms, ) + + addr1 := sdk.AccAddress([]byte("addr1_______________")) keeper := keeper.NewBaseKeeper( appCodec, app.GetKey(types.StoreKey), authKeeper, app.GetSubspace(types.ModuleName), map[string]bool{addr1.String(): true}, @@ -172,12 +168,7 @@ func (suite *IntegrationTestSuite) TestSupply_SendCoins() { appCodec := app.AppCodec() // add module accounts to supply keeper - maccPerms := simapp.GetMaccPerms() - maccPerms[holder] = nil - maccPerms[authtypes.Burner] = []string{authtypes.Burner} - maccPerms[authtypes.Minter] = []string{authtypes.Minter} - maccPerms[multiPerm] = []string{authtypes.Burner, authtypes.Minter, authtypes.Staking} - maccPerms[randomPerm] = []string{"random"} + maccPerms := getModuleAccPerms() authKeeper := authkeeper.NewAccountKeeper( appCodec, app.GetKey(types.StoreKey), app.GetSubspace(types.ModuleName), @@ -242,13 +233,7 @@ func (suite *IntegrationTestSuite) TestSupply_MintCoins() { appCodec := app.AppCodec() // add module accounts to supply keeper - maccPerms := simapp.GetMaccPerms() - maccPerms[holder] = nil - maccPerms[authtypes.Burner] = []string{authtypes.Burner} - maccPerms[authtypes.Minter] = []string{authtypes.Minter} - maccPerms[multiPerm] = []string{authtypes.Burner, authtypes.Minter, authtypes.Staking} - maccPerms[randomPerm] = []string{"random"} - + maccPerms := getModuleAccPerms() authKeeper := authkeeper.NewAccountKeeper( appCodec, app.GetKey(types.StoreKey), app.GetSubspace(types.ModuleName), authtypes.ProtoBaseAccount, maccPerms, @@ -303,13 +288,7 @@ func (suite *IntegrationTestSuite) TestSupply_BurnCoins() { appCodec := simapp.MakeTestEncodingConfig().Marshaler // add module accounts to supply keeper - maccPerms := simapp.GetMaccPerms() - maccPerms[holder] = nil - maccPerms[authtypes.Burner] = []string{authtypes.Burner} - maccPerms[authtypes.Minter] = []string{authtypes.Minter} - maccPerms[multiPerm] = []string{authtypes.Burner, authtypes.Minter, authtypes.Staking} - maccPerms[randomPerm] = []string{"random"} - + maccPerms := getModuleAccPerms() authKeeper := authkeeper.NewAccountKeeper( appCodec, app.GetKey(types.StoreKey), app.GetSubspace(types.ModuleName), authtypes.ProtoBaseAccount, maccPerms, diff --git a/x/bank/keeper/send.go b/x/bank/keeper/send.go index 0aec391daa2e..8fd7e602a4e7 100644 --- a/x/bank/keeper/send.go +++ b/x/bank/keeper/send.go @@ -266,7 +266,7 @@ func (k BaseSendKeeper) setBalance(ctx sdk.Context, addr sdk.AccAddress, balance accountStore := k.getAccountStore(ctx, addr) - // if the balance is zero, we can delete the corresponding denom from the store. + // Bank invariants require to not store zero balances. if balance.IsZero() { accountStore.Delete([]byte(balance.Denom)) } else { From 669ac72ac4ae2257df43544ecd0c589bc5754176 Mon Sep 17 00:00:00 2001 From: atheesh Date: Fri, 30 Apr 2021 21:49:32 +0530 Subject: [PATCH 7/7] review changes --- x/bank/keeper/keeper_test.go | 89 ++++++++++-------------------------- 1 file changed, 24 insertions(+), 65 deletions(-) diff --git a/x/bank/keeper/keeper_test.go b/x/bank/keeper/keeper_test.go index 55db4f5a362a..e20ce3e21f19 100644 --- a/x/bank/keeper/keeper_test.go +++ b/x/bank/keeper/keeper_test.go @@ -72,14 +72,26 @@ type IntegrationTestSuite struct { queryClient types.QueryClient } -func getModuleAccPerms() map[string][]string { +func (suite *IntegrationTestSuite) initKeepersWithmAccPerms(blockedAddrs map[string]bool) (authkeeper.AccountKeeper, keeper.BaseKeeper) { + app := suite.app maccPerms := simapp.GetMaccPerms() + appCodec := simapp.MakeTestEncodingConfig().Marshaler + maccPerms[holder] = nil maccPerms[authtypes.Burner] = []string{authtypes.Burner} maccPerms[authtypes.Minter] = []string{authtypes.Minter} maccPerms[multiPerm] = []string{authtypes.Burner, authtypes.Minter, authtypes.Staking} maccPerms[randomPerm] = []string{"random"} - return maccPerms + authKeeper := authkeeper.NewAccountKeeper( + appCodec, app.GetKey(types.StoreKey), app.GetSubspace(types.ModuleName), + authtypes.ProtoBaseAccount, maccPerms, + ) + keeper := keeper.NewBaseKeeper( + appCodec, app.GetKey(types.StoreKey), authKeeper, + app.GetSubspace(types.ModuleName), blockedAddrs, + ) + + return authKeeper, keeper } func (suite *IntegrationTestSuite) SetupTest() { @@ -99,22 +111,12 @@ func (suite *IntegrationTestSuite) SetupTest() { } func (suite *IntegrationTestSuite) TestSupply() { - app := simapp.Setup(false) - ctx := app.BaseApp.NewContext(false, tmproto.Header{Height: 1}) - appCodec := simapp.MakeTestEncodingConfig().Marshaler + _, ctx := suite.app, suite.ctx require := suite.Require() // add module accounts to supply keeper - maccPerms := getModuleAccPerms() - authKeeper := authkeeper.NewAccountKeeper( - appCodec, app.GetKey(types.StoreKey), app.GetSubspace(types.ModuleName), - authtypes.ProtoBaseAccount, maccPerms, - ) - keeper := keeper.NewBaseKeeper( - appCodec, app.GetKey(types.StoreKey), authKeeper, - app.GetSubspace(types.ModuleName), make(map[string]bool), - ) + authKeeper, keeper := suite.initKeepersWithmAccPerms(make(map[string]bool)) initialPower := int64(100) initTokens := suite.app.StakingKeeper.TokensFromConsensusPower(suite.ctx, initialPower) @@ -139,22 +141,11 @@ func (suite *IntegrationTestSuite) TestSupply() { } func (suite *IntegrationTestSuite) TestSendCoinsFromModuleToAccount_Blacklist() { - app := simapp.Setup(false) - ctx := app.BaseApp.NewContext(false, tmproto.Header{Height: 1}) - appCodec := app.AppCodec() + ctx := suite.ctx // add module accounts to supply keeper - maccPerms := getModuleAccPerms() - authKeeper := authkeeper.NewAccountKeeper( - appCodec, app.GetKey(types.StoreKey), app.GetSubspace(types.ModuleName), - authtypes.ProtoBaseAccount, maccPerms, - ) - addr1 := sdk.AccAddress([]byte("addr1_______________")) - keeper := keeper.NewBaseKeeper( - appCodec, app.GetKey(types.StoreKey), authKeeper, - app.GetSubspace(types.ModuleName), map[string]bool{addr1.String(): true}, - ) + _, keeper := suite.initKeepersWithmAccPerms(map[string]bool{addr1.String(): true}) suite.Require().NoError(keeper.MintCoins(ctx, minttypes.ModuleName, initCoins)) suite.Require().Error(keeper.SendCoinsFromModuleToAccount( @@ -163,21 +154,10 @@ func (suite *IntegrationTestSuite) TestSendCoinsFromModuleToAccount_Blacklist() } func (suite *IntegrationTestSuite) TestSupply_SendCoins() { - app := simapp.Setup(false) - ctx := app.BaseApp.NewContext(false, tmproto.Header{Height: 1}) - appCodec := app.AppCodec() + ctx := suite.ctx // add module accounts to supply keeper - maccPerms := getModuleAccPerms() - - authKeeper := authkeeper.NewAccountKeeper( - appCodec, app.GetKey(types.StoreKey), app.GetSubspace(types.ModuleName), - authtypes.ProtoBaseAccount, maccPerms, - ) - keeper := keeper.NewBaseKeeper( - appCodec, app.GetKey(types.StoreKey), authKeeper, - app.GetSubspace(types.ModuleName), make(map[string]bool), - ) + authKeeper, keeper := suite.initKeepersWithmAccPerms(make(map[string]bool)) baseAcc := authKeeper.NewAccountWithAddress(ctx, authtypes.NewModuleAddress("baseAcc")) @@ -228,20 +208,10 @@ func (suite *IntegrationTestSuite) TestSupply_SendCoins() { } func (suite *IntegrationTestSuite) TestSupply_MintCoins() { - app := simapp.Setup(false) - ctx := app.BaseApp.NewContext(false, tmproto.Header{Height: 1}) - appCodec := app.AppCodec() + ctx := suite.ctx // add module accounts to supply keeper - maccPerms := getModuleAccPerms() - authKeeper := authkeeper.NewAccountKeeper( - appCodec, app.GetKey(types.StoreKey), app.GetSubspace(types.ModuleName), - authtypes.ProtoBaseAccount, maccPerms, - ) - keeper := keeper.NewBaseKeeper( - appCodec, app.GetKey(types.StoreKey), authKeeper, - app.GetSubspace(types.ModuleName), make(map[string]bool), - ) + authKeeper, keeper := suite.initKeepersWithmAccPerms(make(map[string]bool)) authKeeper.SetModuleAccount(ctx, burnerAcc) authKeeper.SetModuleAccount(ctx, minterAcc) @@ -283,20 +253,9 @@ func (suite *IntegrationTestSuite) TestSupply_MintCoins() { } func (suite *IntegrationTestSuite) TestSupply_BurnCoins() { - app := simapp.Setup(false) - ctx := app.BaseApp.NewContext(false, tmproto.Header{Height: 1}) - appCodec := simapp.MakeTestEncodingConfig().Marshaler - + ctx := suite.ctx // add module accounts to supply keeper - maccPerms := getModuleAccPerms() - authKeeper := authkeeper.NewAccountKeeper( - appCodec, app.GetKey(types.StoreKey), app.GetSubspace(types.ModuleName), - authtypes.ProtoBaseAccount, maccPerms, - ) - keeper := keeper.NewBaseKeeper( - appCodec, app.GetKey(types.StoreKey), authKeeper, - app.GetSubspace(types.ModuleName), make(map[string]bool), - ) + authKeeper, keeper := suite.initKeepersWithmAccPerms(make(map[string]bool)) // set burnerAcc balance authKeeper.SetModuleAccount(ctx, burnerAcc)