diff --git a/Makefile b/Makefile index a896678d7d..96be180fd2 100644 --- a/Makefile +++ b/Makefile @@ -15,7 +15,7 @@ GOTOOLS = \ github.com/rakyll/statik GOBIN ?= $(GOPATH)/bin -all: devtools install test_lint test +all: devtools vendor-deps install test_lint test # The below include contains the tools target. include scripts/Makefile diff --git a/cmd/gaia/app/app.go b/cmd/gaia/app/app.go index e99d0b8088..2d66bd9342 100644 --- a/cmd/gaia/app/app.go +++ b/cmd/gaia/app/app.go @@ -102,7 +102,11 @@ func NewGaiaApp(logger log.Logger, db dbm.DB, traceStore io.Writer, loadLatest b ) // add handlers - app.bankKeeper = bank.NewBaseKeeper(app.accountKeeper) + app.bankKeeper = bank.NewBaseKeeper( + app.accountKeeper, + app.paramsKeeper.Subspace(bank.DefaultParamspace), + bank.DefaultCodespace, + ) app.feeCollectionKeeper = auth.NewFeeCollectionKeeper( app.cdc, app.keyFeeCollection, @@ -248,6 +252,7 @@ func (app *GaiaApp) initFromGenesisState(ctx sdk.Context, genesisState GenesisSt // initialize module-specific stores auth.InitGenesis(ctx, app.accountKeeper, app.feeCollectionKeeper, genesisState.AuthData) + bank.InitGenesis(ctx, app.bankKeeper, genesisState.BankData) slashing.InitGenesis(ctx, app.slashingKeeper, genesisState.SlashingData, genesisState.StakingData) gov.InitGenesis(ctx, app.govKeeper, genesisState.GovData) mint.InitGenesis(ctx, app.mintKeeper, genesisState.MintData) diff --git a/cmd/gaia/app/app_test.go b/cmd/gaia/app/app_test.go index 5f2b5b9687..81f57abd6a 100644 --- a/cmd/gaia/app/app_test.go +++ b/cmd/gaia/app/app_test.go @@ -4,6 +4,8 @@ import ( "os" "testing" + "github.com/cosmos/cosmos-sdk/x/bank" + "github.com/stretchr/testify/require" "github.com/tendermint/tendermint/libs/db" "github.com/tendermint/tendermint/libs/log" @@ -28,6 +30,7 @@ func setGenesis(gapp *GaiaApp, accs ...*auth.BaseAccount) error { genesisState := NewGenesisState( genaccs, auth.DefaultGenesisState(), + bank.DefaultGenesisState(), staking.DefaultGenesisState(), mint.DefaultGenesisState(), distr.DefaultGenesisState(), diff --git a/cmd/gaia/app/export.go b/cmd/gaia/app/export.go index f535d13733..edf319cfa1 100644 --- a/cmd/gaia/app/export.go +++ b/cmd/gaia/app/export.go @@ -9,6 +9,7 @@ import ( "github.com/cosmos/cosmos-sdk/codec" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/x/auth" + "github.com/cosmos/cosmos-sdk/x/bank" distr "github.com/cosmos/cosmos-sdk/x/distribution" "github.com/cosmos/cosmos-sdk/x/gov" "github.com/cosmos/cosmos-sdk/x/mint" @@ -39,6 +40,7 @@ func (app *GaiaApp) ExportAppStateAndValidators(forZeroHeight bool) ( genState := NewGenesisState( accounts, auth.ExportGenesis(ctx, app.accountKeeper, app.feeCollectionKeeper), + bank.ExportGenesis(ctx, app.bankKeeper), staking.ExportGenesis(ctx, app.stakingKeeper), mint.ExportGenesis(ctx, app.mintKeeper), distr.ExportGenesis(ctx, app.distrKeeper), diff --git a/cmd/gaia/app/genesis.go b/cmd/gaia/app/genesis.go index b0010323ba..b8b9aa1227 100644 --- a/cmd/gaia/app/genesis.go +++ b/cmd/gaia/app/genesis.go @@ -10,6 +10,8 @@ import ( "sort" "strings" + "github.com/cosmos/cosmos-sdk/x/bank" + tmtypes "github.com/tendermint/tendermint/types" "github.com/cosmos/cosmos-sdk/codec" @@ -34,6 +36,7 @@ var ( type GenesisState struct { Accounts []GenesisAccount `json:"accounts"` AuthData auth.GenesisState `json:"auth"` + BankData bank.GenesisState `json:"bank"` StakingData staking.GenesisState `json:"staking"` MintData mint.GenesisState `json:"mint"` DistrData distr.GenesisState `json:"distr"` @@ -43,6 +46,7 @@ type GenesisState struct { } func NewGenesisState(accounts []GenesisAccount, authData auth.GenesisState, + bankData bank.GenesisState, stakingData staking.GenesisState, mintData mint.GenesisState, distrData distr.GenesisState, govData gov.GenesisState, slashingData slashing.GenesisState) GenesisState { @@ -50,6 +54,7 @@ func NewGenesisState(accounts []GenesisAccount, authData auth.GenesisState, return GenesisState{ Accounts: accounts, AuthData: authData, + BankData: bankData, StakingData: stakingData, MintData: mintData, DistrData: distrData, @@ -201,6 +206,7 @@ func NewDefaultGenesisState() GenesisState { return GenesisState{ Accounts: nil, AuthData: auth.DefaultGenesisState(), + BankData: bank.DefaultGenesisState(), StakingData: staking.DefaultGenesisState(), MintData: mint.DefaultGenesisState(), DistrData: distr.DefaultGenesisState(), @@ -227,6 +233,9 @@ func GaiaValidateGenesisState(genesisState GenesisState) error { if err := auth.ValidateGenesis(genesisState.AuthData); err != nil { return err } + if err := bank.ValidateGenesis(genesisState.BankData); err != nil { + return err + } if err := staking.ValidateGenesis(genesisState.StakingData); err != nil { return err } diff --git a/cmd/gaia/app/sim_test.go b/cmd/gaia/app/sim_test.go index b88e809eba..44e53425c7 100644 --- a/cmd/gaia/app/sim_test.go +++ b/cmd/gaia/app/sim_test.go @@ -20,6 +20,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/x/auth" authsim "github.com/cosmos/cosmos-sdk/x/auth/simulation" + "github.com/cosmos/cosmos-sdk/x/bank" banksim "github.com/cosmos/cosmos-sdk/x/bank/simulation" distr "github.com/cosmos/cosmos-sdk/x/distribution" distrsim "github.com/cosmos/cosmos-sdk/x/distribution/simulation" @@ -118,6 +119,9 @@ func appStateFn(r *rand.Rand, accs []simulation.Account, genesisTimestamp time.T } fmt.Printf("Selected randomly generated auth parameters:\n\t%+v\n", authGenesis) + bankGenesis := bank.NewGenesisState(r.Int63n(2) == 0) + fmt.Printf("Selected randomly generated bank parameters:\n\t%+v\n", bankGenesis) + // Random genesis states vp := time.Duration(r.Intn(2*172800)) * time.Second govGenesis := gov.GenesisState{ @@ -203,6 +207,7 @@ func appStateFn(r *rand.Rand, accs []simulation.Account, genesisTimestamp time.T genesis := GenesisState{ Accounts: genesisAccounts, AuthData: authGenesis, + BankData: bankGenesis, StakingData: stakingGenesis, MintData: mintGenesis, DistrData: distrGenesis, diff --git a/cmd/gaia/cmd/gaiadebug/hack.go b/cmd/gaia/cmd/gaiadebug/hack.go index 022192861e..aa70b3fb0b 100644 --- a/cmd/gaia/cmd/gaiadebug/hack.go +++ b/cmd/gaia/cmd/gaiadebug/hack.go @@ -178,7 +178,7 @@ func NewGaiaApp(logger log.Logger, db dbm.DB, baseAppOptions ...func(*bam.BaseAp ) // add handlers - app.bankKeeper = bank.NewBaseKeeper(app.accountKeeper) + app.bankKeeper = bank.NewBaseKeeper(app.accountKeeper, app.paramsKeeper.Subspace(bank.DefaultParamspace), bank.DefaultCodespace) app.stakingKeeper = staking.NewKeeper(app.cdc, app.keyStaking, app.tkeyStaking, app.bankKeeper, app.paramsKeeper.Subspace(staking.DefaultParamspace), staking.DefaultCodespace) app.slashingKeeper = slashing.NewKeeper(app.cdc, app.keySlashing, app.stakingKeeper, app.paramsKeeper.Subspace(slashing.DefaultParamspace), slashing.DefaultCodespace) diff --git a/x/bank/app_test.go b/x/bank/app_test.go index 36e084b73a..a6e9d6dfef 100644 --- a/x/bank/app_test.go +++ b/x/bank/app_test.go @@ -91,6 +91,17 @@ func getMockApp(t *testing.T) *mock.App { return mapp } +// overwrite the mock init chainer +func getInitChainer(mapp *mock.App, keeper BaseKeeper) sdk.InitChainer { + return func(ctx sdk.Context, req abci.RequestInitChain) abci.ResponseInitChain { + mapp.InitChainer(ctx, req) + bankGenesis := DefaultGenesisState() + InitGenesis(ctx, keeper, bankGenesis) + + return abci.ResponseInitChain{} + } +} + func TestMsgSendWithAccounts(t *testing.T) { mapp := getMockApp(t) acc := &auth.BaseAccount{ diff --git a/x/bank/bench_test.go b/x/bank/bench_test.go index a3f69dcdd4..5eb7027131 100644 --- a/x/bank/bench_test.go +++ b/x/bank/bench_test.go @@ -16,8 +16,13 @@ func getBenchmarkMockApp() (*mock.App, error) { mapp := mock.NewApp() RegisterCodec(mapp.Cdc) - bankKeeper := NewBaseKeeper(mapp.AccountKeeper) + bankKeeper := NewBaseKeeper( + mapp.AccountKeeper, + mapp.ParamsKeeper.Subspace(DefaultParamspace), + DefaultCodespace, + ) mapp.Router().AddRoute("bank", NewHandler(bankKeeper)) + mapp.SetInitChainer(getInitChainer(mapp, bankKeeper)) err := mapp.CompleteSetup() return mapp, err diff --git a/x/bank/errors.go b/x/bank/errors.go index 5df5cfdce5..fd42118995 100644 --- a/x/bank/errors.go +++ b/x/bank/errors.go @@ -11,6 +11,7 @@ const ( CodeInvalidInput sdk.CodeType = 101 CodeInvalidOutput sdk.CodeType = 102 + CodeSendDisabled sdk.CodeType = 103 ) // NOTE: Don't stringer this, we'll put better messages in later. @@ -44,6 +45,10 @@ func ErrNoOutputs(codespace sdk.CodespaceType) sdk.Error { return newError(codespace, CodeInvalidOutput, "") } +func ErrSendDisabled(codespace sdk.CodespaceType) sdk.Error { + return newError(codespace, CodeSendDisabled, "") +} + //---------------------------------------- func msgOrDefaultMsg(msg string, code sdk.CodeType) string { diff --git a/x/bank/genesis.go b/x/bank/genesis.go new file mode 100644 index 0000000000..b85ba21937 --- /dev/null +++ b/x/bank/genesis.go @@ -0,0 +1,32 @@ +package bank + +import ( + sdk "github.com/cosmos/cosmos-sdk/types" +) + +// GenesisState is the bank state that must be provided at genesis. +type GenesisState struct { + SendEnabled bool `json:"send_enabled"` +} + +// NewGenesisState creates a new genesis state. +func NewGenesisState(sendEnabled bool) GenesisState { + return GenesisState{SendEnabled: sendEnabled} +} + +// Return a default genesis state +func DefaultGenesisState() GenesisState { return NewGenesisState(true) } + +// InitGenesis sets distribution information for genesis. +func InitGenesis(ctx sdk.Context, keeper Keeper, data GenesisState) { + keeper.SetSendEnabled(ctx, data.SendEnabled) +} + +// ExportGenesis returns a GenesisState for a given context and keeper. +func ExportGenesis(ctx sdk.Context, keeper Keeper) GenesisState { + return NewGenesisState(keeper.GetSendEnabled(ctx)) +} + +// ValidateGenesis performs basic validation of bank genesis data returning an +// error for any failed validation criteria. +func ValidateGenesis(data GenesisState) error { return nil } diff --git a/x/bank/handler.go b/x/bank/handler.go index 9b40957000..2d1abf8226 100644 --- a/x/bank/handler.go +++ b/x/bank/handler.go @@ -20,6 +20,9 @@ func NewHandler(k Keeper) sdk.Handler { // Handle MsgSend. func handleMsgSend(ctx sdk.Context, k Keeper, msg MsgSend) sdk.Result { // NOTE: totalIn == totalOut should already have been checked + if !k.GetSendEnabled(ctx) { + return ErrSendDisabled(k.Codespace()).Result() + } tags, err := k.InputOutputCoins(ctx, msg.Inputs, msg.Outputs) if err != nil { return err.Result() diff --git a/x/bank/keeper.go b/x/bank/keeper.go index 499b43e594..3055d8df4c 100644 --- a/x/bank/keeper.go +++ b/x/bank/keeper.go @@ -6,6 +6,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/x/auth" + "github.com/cosmos/cosmos-sdk/x/params" ) //----------------------------------------------------------------------------- @@ -32,14 +33,20 @@ type Keeper interface { type BaseKeeper struct { BaseSendKeeper - ak auth.AccountKeeper + ak auth.AccountKeeper + paramSpace params.Subspace } // NewBaseKeeper returns a new BaseKeeper -func NewBaseKeeper(ak auth.AccountKeeper) BaseKeeper { +func NewBaseKeeper(ak auth.AccountKeeper, + paramSpace params.Subspace, + codespace sdk.CodespaceType) BaseKeeper { + + ps := paramSpace.WithTypeTable(ParamTypeTable()) return BaseKeeper{ - BaseSendKeeper: NewBaseSendKeeper(ak), + BaseSendKeeper: NewBaseSendKeeper(ak, ps, codespace), ak: ak, + paramSpace: ps, } } @@ -95,6 +102,9 @@ type SendKeeper interface { ViewKeeper SendCoins(ctx sdk.Context, fromAddr sdk.AccAddress, toAddr sdk.AccAddress, amt sdk.Coins) (sdk.Tags, sdk.Error) + + GetSendEnabled(ctx sdk.Context) bool + SetSendEnabled(ctx sdk.Context, enabled bool) } var _ SendKeeper = (*BaseSendKeeper)(nil) @@ -104,14 +114,18 @@ var _ SendKeeper = (*BaseSendKeeper)(nil) type BaseSendKeeper struct { BaseViewKeeper - ak auth.AccountKeeper + ak auth.AccountKeeper + paramSpace params.Subspace } // NewBaseSendKeeper returns a new BaseSendKeeper. -func NewBaseSendKeeper(ak auth.AccountKeeper) BaseSendKeeper { +func NewBaseSendKeeper(ak auth.AccountKeeper, + paramSpace params.Subspace, codespace sdk.CodespaceType) BaseSendKeeper { + return BaseSendKeeper{ - BaseViewKeeper: NewBaseViewKeeper(ak), + BaseViewKeeper: NewBaseViewKeeper(ak, codespace), ak: ak, + paramSpace: paramSpace, } } @@ -119,10 +133,22 @@ func NewBaseSendKeeper(ak auth.AccountKeeper) BaseSendKeeper { func (keeper BaseSendKeeper) SendCoins( ctx sdk.Context, fromAddr sdk.AccAddress, toAddr sdk.AccAddress, amt sdk.Coins, ) (sdk.Tags, sdk.Error) { - return sendCoins(ctx, keeper.ak, fromAddr, toAddr, amt) } +// GetSendEnabled returns the current SendEnabled +// nolint: errcheck +func (keeper BaseSendKeeper) GetSendEnabled(ctx sdk.Context) bool { + var enabled bool + keeper.paramSpace.Get(ctx, ParamStoreKeySendEnabled, &enabled) + return enabled +} + +// nolint: errcheck +func (keeper BaseSendKeeper) SetSendEnabled(ctx sdk.Context, enabled bool) { + keeper.paramSpace.Set(ctx, ParamStoreKeySendEnabled, &enabled) +} + //----------------------------------------------------------------------------- // View Keeper @@ -133,18 +159,19 @@ var _ ViewKeeper = (*BaseViewKeeper)(nil) type ViewKeeper interface { GetCoins(ctx sdk.Context, addr sdk.AccAddress) sdk.Coins HasCoins(ctx sdk.Context, addr sdk.AccAddress, amt sdk.Coins) bool + + Codespace() sdk.CodespaceType } // BaseViewKeeper implements a read only keeper implementation of ViewKeeper. type BaseViewKeeper struct { - ak auth.AccountKeeper + ak auth.AccountKeeper + codespace sdk.CodespaceType } // NewBaseViewKeeper returns a new BaseViewKeeper. -func NewBaseViewKeeper(ak auth.AccountKeeper) BaseViewKeeper { - return BaseViewKeeper{ - ak: ak, - } +func NewBaseViewKeeper(ak auth.AccountKeeper, codespace sdk.CodespaceType) BaseViewKeeper { + return BaseViewKeeper{ak: ak, codespace: codespace} } // GetCoins returns the coins at the addr. @@ -157,6 +184,11 @@ func (keeper BaseViewKeeper) HasCoins(ctx sdk.Context, addr sdk.AccAddress, amt return hasCoins(ctx, keeper.ak, addr, amt) } +// Codespace returns the keeper's codespace. +func (keeper BaseViewKeeper) Codespace() sdk.CodespaceType { + return keeper.codespace +} + //----------------------------------------------------------------------------- // Auxiliary diff --git a/x/bank/keeper_test.go b/x/bank/keeper_test.go index 8a3d4dc838..23e6321abc 100644 --- a/x/bank/keeper_test.go +++ b/x/bank/keeper_test.go @@ -21,6 +21,7 @@ type testInput struct { cdc *codec.Codec ctx sdk.Context ak auth.AccountKeeper + pk params.Keeper } func setupTestInput() testInput { @@ -49,13 +50,14 @@ func setupTestInput() testInput { ak.SetParams(ctx, auth.DefaultParams()) - return testInput{cdc: cdc, ctx: ctx, ak: ak} + return testInput{cdc: cdc, ctx: ctx, ak: ak, pk: pk} } func TestKeeper(t *testing.T) { input := setupTestInput() ctx := input.ctx - bankKeeper := NewBaseKeeper(input.ak) + bankKeeper := NewBaseKeeper(input.ak, input.pk.Subspace(DefaultParamspace), DefaultCodespace) + bankKeeper.SetSendEnabled(ctx, true) addr := sdk.AccAddress([]byte("addr1")) addr2 := sdk.AccAddress([]byte("addr2")) @@ -134,8 +136,10 @@ func TestKeeper(t *testing.T) { func TestSendKeeper(t *testing.T) { input := setupTestInput() ctx := input.ctx - bankKeeper := NewBaseKeeper(input.ak) - sendKeeper := NewBaseSendKeeper(input.ak) + paramSpace := input.pk.Subspace(DefaultParamspace) + bankKeeper := NewBaseKeeper(input.ak, paramSpace, DefaultCodespace) + sendKeeper := NewBaseSendKeeper(input.ak, paramSpace, DefaultCodespace) + bankKeeper.SetSendEnabled(ctx, true) addr := sdk.AccAddress([]byte("addr1")) addr2 := sdk.AccAddress([]byte("addr2")) @@ -181,8 +185,10 @@ func TestSendKeeper(t *testing.T) { func TestViewKeeper(t *testing.T) { input := setupTestInput() ctx := input.ctx - bankKeeper := NewBaseKeeper(input.ak) - viewKeeper := NewBaseViewKeeper(input.ak) + paramSpace := input.pk.Subspace(DefaultParamspace) + bankKeeper := NewBaseKeeper(input.ak, paramSpace, DefaultCodespace) + bankKeeper.SetSendEnabled(ctx, true) + viewKeeper := NewBaseViewKeeper(input.ak, DefaultCodespace) addr := sdk.AccAddress([]byte("addr1")) acc := input.ak.NewAccountWithAddress(ctx, addr) @@ -209,7 +215,8 @@ func TestVestingAccountSend(t *testing.T) { origCoins := sdk.Coins{sdk.NewInt64Coin("steak", 100)} sendCoins := sdk.Coins{sdk.NewInt64Coin("steak", 50)} - bankKeeper := NewBaseKeeper(input.ak) + bankKeeper := NewBaseKeeper(input.ak, input.pk.Subspace(DefaultParamspace), DefaultCodespace) + bankKeeper.SetSendEnabled(ctx, true) addr1 := sdk.AccAddress([]byte("addr1")) addr2 := sdk.AccAddress([]byte("addr2")) @@ -242,7 +249,8 @@ func TestVestingAccountReceive(t *testing.T) { origCoins := sdk.Coins{sdk.NewInt64Coin("steak", 100)} sendCoins := sdk.Coins{sdk.NewInt64Coin("steak", 50)} - bankKeeper := NewBaseKeeper(input.ak) + bankKeeper := NewBaseKeeper(input.ak, input.pk.Subspace(DefaultParamspace), DefaultCodespace) + bankKeeper.SetSendEnabled(ctx, true) addr1 := sdk.AccAddress([]byte("addr1")) addr2 := sdk.AccAddress([]byte("addr2")) @@ -275,7 +283,8 @@ func TestDelegateCoins(t *testing.T) { origCoins := sdk.Coins{sdk.NewInt64Coin("steak", 100)} delCoins := sdk.Coins{sdk.NewInt64Coin("steak", 50)} - bankKeeper := NewBaseKeeper(input.ak) + bankKeeper := NewBaseKeeper(input.ak, input.pk.Subspace(DefaultParamspace), DefaultCodespace) + bankKeeper.SetSendEnabled(ctx, true) addr1 := sdk.AccAddress([]byte("addr1")) addr2 := sdk.AccAddress([]byte("addr2")) @@ -311,7 +320,8 @@ func TestUndelegateCoins(t *testing.T) { origCoins := sdk.Coins{sdk.NewInt64Coin("steak", 100)} delCoins := sdk.Coins{sdk.NewInt64Coin("steak", 50)} - bankKeeper := NewBaseKeeper(input.ak) + bankKeeper := NewBaseKeeper(input.ak, input.pk.Subspace(DefaultParamspace), DefaultCodespace) + bankKeeper.SetSendEnabled(ctx, true) addr1 := sdk.AccAddress([]byte("addr1")) addr2 := sdk.AccAddress([]byte("addr2")) diff --git a/x/bank/params.go b/x/bank/params.go new file mode 100644 index 0000000000..9aea6adaeb --- /dev/null +++ b/x/bank/params.go @@ -0,0 +1,22 @@ +package bank + +import ( + "github.com/cosmos/cosmos-sdk/x/params" +) + +const ( + // default paramspace for params keeper + DefaultParamspace = "bank" + // default send enabled + DefaultSendEnabled = true +) + +// ParamStoreKeySendEnabled is store's key for SendEnabled +var ParamStoreKeySendEnabled = []byte("sendenabled") + +// type declaration for parameters +func ParamTypeTable() params.TypeTable { + return params.NewTypeTable( + ParamStoreKeySendEnabled, false, + ) +} diff --git a/x/bank/simulation/msgs.go b/x/bank/simulation/msgs.go index e7d16496b7..c4d4919eb2 100644 --- a/x/bank/simulation/msgs.go +++ b/x/bank/simulation/msgs.go @@ -112,6 +112,9 @@ func sendAndVerifyMsgSend(app *baseapp.BaseApp, mapper auth.AccountKeeper, msg b if handler != nil { res := handler(ctx, msg) if !res.IsOK() { + if res.Code == bank.CodeSendDisabled { + return nil + } // TODO: Do this in a more 'canonical' way return fmt.Errorf("handling msg failed %v", res) } diff --git a/x/distribution/keeper/test_common.go b/x/distribution/keeper/test_common.go index 420f40ac49..8e8b157c41 100644 --- a/x/distribution/keeper/test_common.go +++ b/x/distribution/keeper/test_common.go @@ -110,7 +110,7 @@ func CreateTestInputAdvanced(t *testing.T, isCheckTx bool, initCoins int64, ctx := sdk.NewContext(ms, abci.Header{ChainID: "foochainid"}, isCheckTx, log.NewNopLogger()) accountKeeper := auth.NewAccountKeeper(cdc, keyAcc, pk.Subspace(auth.DefaultParamspace), auth.ProtoBaseAccount) - ck := bank.NewBaseKeeper(accountKeeper) + ck := bank.NewBaseKeeper(accountKeeper, pk.Subspace(bank.DefaultParamspace), bank.DefaultCodespace) sk := staking.NewKeeper(cdc, keyStaking, tkeyStaking, ck, pk.Subspace(staking.DefaultParamspace), staking.DefaultCodespace) sk.SetPool(ctx, staking.InitialPool()) sk.SetParams(ctx, staking.DefaultParams()) diff --git a/x/gov/endblocker_test.go b/x/gov/endblocker_test.go index 1eb60c4f2b..952f87f771 100644 --- a/x/gov/endblocker_test.go +++ b/x/gov/endblocker_test.go @@ -16,6 +16,7 @@ func TestTickExpiredDepositPeriod(t *testing.T) { mapp, keeper, _, addrs, _, _ := getMockApp(t, 10, GenesisState{}, nil) mapp.BeginBlock(abci.RequestBeginBlock{}) ctx := mapp.BaseApp.NewContext(false, abci.Header{}) + keeper.ck.SetSendEnabled(ctx, true) govHandler := NewHandler(keeper) inactiveQueue := keeper.InactiveProposalQueueIterator(ctx, ctx.BlockHeader().Time) @@ -58,6 +59,7 @@ func TestTickMultipleExpiredDepositPeriod(t *testing.T) { mapp, keeper, _, addrs, _, _ := getMockApp(t, 10, GenesisState{}, nil) mapp.BeginBlock(abci.RequestBeginBlock{}) ctx := mapp.BaseApp.NewContext(false, abci.Header{}) + keeper.ck.SetSendEnabled(ctx, true) govHandler := NewHandler(keeper) inactiveQueue := keeper.InactiveProposalQueueIterator(ctx, ctx.BlockHeader().Time) @@ -114,6 +116,7 @@ func TestTickPassedDepositPeriod(t *testing.T) { mapp, keeper, _, addrs, _, _ := getMockApp(t, 10, GenesisState{}, nil) mapp.BeginBlock(abci.RequestBeginBlock{}) ctx := mapp.BaseApp.NewContext(false, abci.Header{}) + keeper.ck.SetSendEnabled(ctx, true) govHandler := NewHandler(keeper) inactiveQueue := keeper.InactiveProposalQueueIterator(ctx, ctx.BlockHeader().Time) @@ -156,6 +159,7 @@ func TestTickPassedVotingPeriod(t *testing.T) { SortAddresses(addrs) mapp.BeginBlock(abci.RequestBeginBlock{}) ctx := mapp.BaseApp.NewContext(false, abci.Header{}) + keeper.ck.SetSendEnabled(ctx, true) govHandler := NewHandler(keeper) inactiveQueue := keeper.InactiveProposalQueueIterator(ctx, ctx.BlockHeader().Time) diff --git a/x/gov/test_common.go b/x/gov/test_common.go index f030d7b84c..34a507c263 100644 --- a/x/gov/test_common.go +++ b/x/gov/test_common.go @@ -31,7 +31,7 @@ func getMockApp(t *testing.T, numGenAccs int, genState GenesisState, genAccs []a keyGov := sdk.NewKVStoreKey(StoreKey) pk := mapp.ParamsKeeper - ck := bank.NewBaseKeeper(mapp.AccountKeeper) + ck := bank.NewBaseKeeper(mapp.AccountKeeper, mapp.ParamsKeeper.Subspace(bank.DefaultParamspace), bank.DefaultCodespace) sk = staking.NewKeeper(mapp.Cdc, keyStaking, tkeyStaking, ck, pk.Subspace(staking.DefaultParamspace), staking.DefaultCodespace) keeper = NewKeeper(mapp.Cdc, keyGov, pk, pk.Subspace("testgov"), ck, sk, DefaultCodespace) diff --git a/x/ibc/app_test.go b/x/ibc/app_test.go index f59b37921b..8129783d44 100644 --- a/x/ibc/app_test.go +++ b/x/ibc/app_test.go @@ -21,7 +21,9 @@ func getMockApp(t *testing.T) *mock.App { RegisterCodec(mapp.Cdc) keyIBC := sdk.NewKVStoreKey("ibc") ibcMapper := NewMapper(mapp.Cdc, keyIBC, DefaultCodespace) - bankKeeper := bank.NewBaseKeeper(mapp.AccountKeeper) + bankKeeper := bank.NewBaseKeeper(mapp.AccountKeeper, + mapp.ParamsKeeper.Subspace(bank.DefaultParamspace), + bank.DefaultCodespace) mapp.Router().AddRoute("ibc", NewHandler(ibcMapper, bankKeeper)) require.NoError(t, mapp.CompleteSetup(keyIBC)) diff --git a/x/ibc/ibc_test.go b/x/ibc/ibc_test.go index 9b9bbf93a4..f2719f7b37 100644 --- a/x/ibc/ibc_test.go +++ b/x/ibc/ibc_test.go @@ -50,7 +50,7 @@ func setupTestInput() testInput { ak := auth.NewAccountKeeper( cdc, authCapKey, pk.Subspace(auth.DefaultParamspace), auth.ProtoBaseAccount, ) - bk := bank.NewBaseKeeper(ak) + bk := bank.NewBaseKeeper(ak, pk.Subspace(bank.DefaultParamspace), bank.DefaultCodespace) ctx := sdk.NewContext(ms, abci.Header{ChainID: "test-chain-id"}, false, log.NewNopLogger()) ak.SetParams(ctx, auth.DefaultParams()) diff --git a/x/slashing/app_test.go b/x/slashing/app_test.go index 3662d7faaf..e9c17b89a5 100644 --- a/x/slashing/app_test.go +++ b/x/slashing/app_test.go @@ -30,7 +30,7 @@ func getMockApp(t *testing.T) (*mock.App, staking.Keeper, Keeper) { tkeyStaking := sdk.NewTransientStoreKey(staking.TStoreKey) keySlashing := sdk.NewKVStoreKey(StoreKey) - bankKeeper := bank.NewBaseKeeper(mapp.AccountKeeper) + bankKeeper := bank.NewBaseKeeper(mapp.AccountKeeper, mapp.ParamsKeeper.Subspace(bank.DefaultParamspace), bank.DefaultCodespace) stakingKeeper := staking.NewKeeper(mapp.Cdc, keyStaking, tkeyStaking, bankKeeper, mapp.ParamsKeeper.Subspace(staking.DefaultParamspace), staking.DefaultCodespace) keeper := NewKeeper(mapp.Cdc, keySlashing, stakingKeeper, mapp.ParamsKeeper.Subspace(DefaultParamspace), DefaultCodespace) mapp.Router().AddRoute(staking.RouterKey, staking.NewHandler(stakingKeeper)) diff --git a/x/slashing/test_common.go b/x/slashing/test_common.go index c2e7c2e87f..4289618545 100644 --- a/x/slashing/test_common.go +++ b/x/slashing/test_common.go @@ -72,7 +72,7 @@ func createTestInput(t *testing.T, defaults Params) (sdk.Context, bank.Keeper, s paramsKeeper := params.NewKeeper(cdc, keyParams, tkeyParams) accountKeeper := auth.NewAccountKeeper(cdc, keyAcc, paramsKeeper.Subspace(auth.DefaultParamspace), auth.ProtoBaseAccount) - ck := bank.NewBaseKeeper(accountKeeper) + ck := bank.NewBaseKeeper(accountKeeper, paramsKeeper.Subspace(bank.DefaultParamspace), bank.DefaultCodespace) sk := staking.NewKeeper(cdc, keyStaking, tkeyStaking, ck, paramsKeeper.Subspace(staking.DefaultParamspace), staking.DefaultCodespace) genesis := staking.DefaultGenesisState() diff --git a/x/staking/app_test.go b/x/staking/app_test.go index f95bce1326..852a9593ab 100644 --- a/x/staking/app_test.go +++ b/x/staking/app_test.go @@ -22,7 +22,7 @@ func getMockApp(t *testing.T) (*mock.App, Keeper) { keyStaking := sdk.NewKVStoreKey(StoreKey) tkeyStaking := sdk.NewTransientStoreKey(TStoreKey) - bankKeeper := bank.NewBaseKeeper(mApp.AccountKeeper) + bankKeeper := bank.NewBaseKeeper(mApp.AccountKeeper, mApp.ParamsKeeper.Subspace(bank.DefaultParamspace), bank.DefaultCodespace) keeper := NewKeeper(mApp.Cdc, keyStaking, tkeyStaking, bankKeeper, mApp.ParamsKeeper.Subspace(DefaultParamspace), DefaultCodespace) mApp.Router().AddRoute(RouterKey, NewHandler(keeper)) diff --git a/x/staking/keeper/test_common.go b/x/staking/keeper/test_common.go index b8c106bf8b..aa95c885ca 100644 --- a/x/staking/keeper/test_common.go +++ b/x/staking/keeper/test_common.go @@ -112,7 +112,11 @@ func CreateTestInput(t *testing.T, isCheckTx bool, initCoins int64) (sdk.Context auth.ProtoBaseAccount, // prototype ) - ck := bank.NewBaseKeeper(accountKeeper) + ck := bank.NewBaseKeeper( + accountKeeper, + pk.Subspace(bank.DefaultParamspace), + bank.DefaultCodespace, + ) keeper := NewKeeper(cdc, keyStaking, tkeyStaking, ck, pk.Subspace(DefaultParamspace), types.DefaultCodespace) keeper.SetPool(ctx, types.InitialPool())