Merge PR #3403: Implement parameter-controlled bank/send switch-off
This commit is contained in:
parent
6de39e19f3
commit
f16cc31919
2
Makefile
2
Makefile
|
@ -15,7 +15,7 @@ GOTOOLS = \
|
||||||
github.com/rakyll/statik
|
github.com/rakyll/statik
|
||||||
GOBIN ?= $(GOPATH)/bin
|
GOBIN ?= $(GOPATH)/bin
|
||||||
|
|
||||||
all: devtools install test_lint test
|
all: devtools vendor-deps install test_lint test
|
||||||
|
|
||||||
# The below include contains the tools target.
|
# The below include contains the tools target.
|
||||||
include scripts/Makefile
|
include scripts/Makefile
|
||||||
|
|
|
@ -102,7 +102,11 @@ func NewGaiaApp(logger log.Logger, db dbm.DB, traceStore io.Writer, loadLatest b
|
||||||
)
|
)
|
||||||
|
|
||||||
// add handlers
|
// 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.feeCollectionKeeper = auth.NewFeeCollectionKeeper(
|
||||||
app.cdc,
|
app.cdc,
|
||||||
app.keyFeeCollection,
|
app.keyFeeCollection,
|
||||||
|
@ -248,6 +252,7 @@ func (app *GaiaApp) initFromGenesisState(ctx sdk.Context, genesisState GenesisSt
|
||||||
|
|
||||||
// initialize module-specific stores
|
// initialize module-specific stores
|
||||||
auth.InitGenesis(ctx, app.accountKeeper, app.feeCollectionKeeper, genesisState.AuthData)
|
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)
|
slashing.InitGenesis(ctx, app.slashingKeeper, genesisState.SlashingData, genesisState.StakingData)
|
||||||
gov.InitGenesis(ctx, app.govKeeper, genesisState.GovData)
|
gov.InitGenesis(ctx, app.govKeeper, genesisState.GovData)
|
||||||
mint.InitGenesis(ctx, app.mintKeeper, genesisState.MintData)
|
mint.InitGenesis(ctx, app.mintKeeper, genesisState.MintData)
|
||||||
|
|
|
@ -4,6 +4,8 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"github.com/cosmos/cosmos-sdk/x/bank"
|
||||||
|
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
"github.com/tendermint/tendermint/libs/db"
|
"github.com/tendermint/tendermint/libs/db"
|
||||||
"github.com/tendermint/tendermint/libs/log"
|
"github.com/tendermint/tendermint/libs/log"
|
||||||
|
@ -28,6 +30,7 @@ func setGenesis(gapp *GaiaApp, accs ...*auth.BaseAccount) error {
|
||||||
genesisState := NewGenesisState(
|
genesisState := NewGenesisState(
|
||||||
genaccs,
|
genaccs,
|
||||||
auth.DefaultGenesisState(),
|
auth.DefaultGenesisState(),
|
||||||
|
bank.DefaultGenesisState(),
|
||||||
staking.DefaultGenesisState(),
|
staking.DefaultGenesisState(),
|
||||||
mint.DefaultGenesisState(),
|
mint.DefaultGenesisState(),
|
||||||
distr.DefaultGenesisState(),
|
distr.DefaultGenesisState(),
|
||||||
|
|
|
@ -9,6 +9,7 @@ import (
|
||||||
"github.com/cosmos/cosmos-sdk/codec"
|
"github.com/cosmos/cosmos-sdk/codec"
|
||||||
sdk "github.com/cosmos/cosmos-sdk/types"
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||||
"github.com/cosmos/cosmos-sdk/x/auth"
|
"github.com/cosmos/cosmos-sdk/x/auth"
|
||||||
|
"github.com/cosmos/cosmos-sdk/x/bank"
|
||||||
distr "github.com/cosmos/cosmos-sdk/x/distribution"
|
distr "github.com/cosmos/cosmos-sdk/x/distribution"
|
||||||
"github.com/cosmos/cosmos-sdk/x/gov"
|
"github.com/cosmos/cosmos-sdk/x/gov"
|
||||||
"github.com/cosmos/cosmos-sdk/x/mint"
|
"github.com/cosmos/cosmos-sdk/x/mint"
|
||||||
|
@ -39,6 +40,7 @@ func (app *GaiaApp) ExportAppStateAndValidators(forZeroHeight bool) (
|
||||||
genState := NewGenesisState(
|
genState := NewGenesisState(
|
||||||
accounts,
|
accounts,
|
||||||
auth.ExportGenesis(ctx, app.accountKeeper, app.feeCollectionKeeper),
|
auth.ExportGenesis(ctx, app.accountKeeper, app.feeCollectionKeeper),
|
||||||
|
bank.ExportGenesis(ctx, app.bankKeeper),
|
||||||
staking.ExportGenesis(ctx, app.stakingKeeper),
|
staking.ExportGenesis(ctx, app.stakingKeeper),
|
||||||
mint.ExportGenesis(ctx, app.mintKeeper),
|
mint.ExportGenesis(ctx, app.mintKeeper),
|
||||||
distr.ExportGenesis(ctx, app.distrKeeper),
|
distr.ExportGenesis(ctx, app.distrKeeper),
|
||||||
|
|
|
@ -10,6 +10,8 @@ import (
|
||||||
"sort"
|
"sort"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"github.com/cosmos/cosmos-sdk/x/bank"
|
||||||
|
|
||||||
tmtypes "github.com/tendermint/tendermint/types"
|
tmtypes "github.com/tendermint/tendermint/types"
|
||||||
|
|
||||||
"github.com/cosmos/cosmos-sdk/codec"
|
"github.com/cosmos/cosmos-sdk/codec"
|
||||||
|
@ -34,6 +36,7 @@ var (
|
||||||
type GenesisState struct {
|
type GenesisState struct {
|
||||||
Accounts []GenesisAccount `json:"accounts"`
|
Accounts []GenesisAccount `json:"accounts"`
|
||||||
AuthData auth.GenesisState `json:"auth"`
|
AuthData auth.GenesisState `json:"auth"`
|
||||||
|
BankData bank.GenesisState `json:"bank"`
|
||||||
StakingData staking.GenesisState `json:"staking"`
|
StakingData staking.GenesisState `json:"staking"`
|
||||||
MintData mint.GenesisState `json:"mint"`
|
MintData mint.GenesisState `json:"mint"`
|
||||||
DistrData distr.GenesisState `json:"distr"`
|
DistrData distr.GenesisState `json:"distr"`
|
||||||
|
@ -43,6 +46,7 @@ type GenesisState struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewGenesisState(accounts []GenesisAccount, authData auth.GenesisState,
|
func NewGenesisState(accounts []GenesisAccount, authData auth.GenesisState,
|
||||||
|
bankData bank.GenesisState,
|
||||||
stakingData staking.GenesisState, mintData mint.GenesisState,
|
stakingData staking.GenesisState, mintData mint.GenesisState,
|
||||||
distrData distr.GenesisState, govData gov.GenesisState,
|
distrData distr.GenesisState, govData gov.GenesisState,
|
||||||
slashingData slashing.GenesisState) GenesisState {
|
slashingData slashing.GenesisState) GenesisState {
|
||||||
|
@ -50,6 +54,7 @@ func NewGenesisState(accounts []GenesisAccount, authData auth.GenesisState,
|
||||||
return GenesisState{
|
return GenesisState{
|
||||||
Accounts: accounts,
|
Accounts: accounts,
|
||||||
AuthData: authData,
|
AuthData: authData,
|
||||||
|
BankData: bankData,
|
||||||
StakingData: stakingData,
|
StakingData: stakingData,
|
||||||
MintData: mintData,
|
MintData: mintData,
|
||||||
DistrData: distrData,
|
DistrData: distrData,
|
||||||
|
@ -201,6 +206,7 @@ func NewDefaultGenesisState() GenesisState {
|
||||||
return GenesisState{
|
return GenesisState{
|
||||||
Accounts: nil,
|
Accounts: nil,
|
||||||
AuthData: auth.DefaultGenesisState(),
|
AuthData: auth.DefaultGenesisState(),
|
||||||
|
BankData: bank.DefaultGenesisState(),
|
||||||
StakingData: staking.DefaultGenesisState(),
|
StakingData: staking.DefaultGenesisState(),
|
||||||
MintData: mint.DefaultGenesisState(),
|
MintData: mint.DefaultGenesisState(),
|
||||||
DistrData: distr.DefaultGenesisState(),
|
DistrData: distr.DefaultGenesisState(),
|
||||||
|
@ -227,6 +233,9 @@ func GaiaValidateGenesisState(genesisState GenesisState) error {
|
||||||
if err := auth.ValidateGenesis(genesisState.AuthData); err != nil {
|
if err := auth.ValidateGenesis(genesisState.AuthData); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
if err := bank.ValidateGenesis(genesisState.BankData); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
if err := staking.ValidateGenesis(genesisState.StakingData); err != nil {
|
if err := staking.ValidateGenesis(genesisState.StakingData); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,6 +20,7 @@ import (
|
||||||
sdk "github.com/cosmos/cosmos-sdk/types"
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||||
"github.com/cosmos/cosmos-sdk/x/auth"
|
"github.com/cosmos/cosmos-sdk/x/auth"
|
||||||
authsim "github.com/cosmos/cosmos-sdk/x/auth/simulation"
|
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"
|
banksim "github.com/cosmos/cosmos-sdk/x/bank/simulation"
|
||||||
distr "github.com/cosmos/cosmos-sdk/x/distribution"
|
distr "github.com/cosmos/cosmos-sdk/x/distribution"
|
||||||
distrsim "github.com/cosmos/cosmos-sdk/x/distribution/simulation"
|
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)
|
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
|
// Random genesis states
|
||||||
vp := time.Duration(r.Intn(2*172800)) * time.Second
|
vp := time.Duration(r.Intn(2*172800)) * time.Second
|
||||||
govGenesis := gov.GenesisState{
|
govGenesis := gov.GenesisState{
|
||||||
|
@ -203,6 +207,7 @@ func appStateFn(r *rand.Rand, accs []simulation.Account, genesisTimestamp time.T
|
||||||
genesis := GenesisState{
|
genesis := GenesisState{
|
||||||
Accounts: genesisAccounts,
|
Accounts: genesisAccounts,
|
||||||
AuthData: authGenesis,
|
AuthData: authGenesis,
|
||||||
|
BankData: bankGenesis,
|
||||||
StakingData: stakingGenesis,
|
StakingData: stakingGenesis,
|
||||||
MintData: mintGenesis,
|
MintData: mintGenesis,
|
||||||
DistrData: distrGenesis,
|
DistrData: distrGenesis,
|
||||||
|
|
|
@ -178,7 +178,7 @@ func NewGaiaApp(logger log.Logger, db dbm.DB, baseAppOptions ...func(*bam.BaseAp
|
||||||
)
|
)
|
||||||
|
|
||||||
// add handlers
|
// 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.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)
|
app.slashingKeeper = slashing.NewKeeper(app.cdc, app.keySlashing, app.stakingKeeper, app.paramsKeeper.Subspace(slashing.DefaultParamspace), slashing.DefaultCodespace)
|
||||||
|
|
||||||
|
|
|
@ -91,6 +91,17 @@ func getMockApp(t *testing.T) *mock.App {
|
||||||
return mapp
|
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) {
|
func TestMsgSendWithAccounts(t *testing.T) {
|
||||||
mapp := getMockApp(t)
|
mapp := getMockApp(t)
|
||||||
acc := &auth.BaseAccount{
|
acc := &auth.BaseAccount{
|
||||||
|
|
|
@ -16,8 +16,13 @@ func getBenchmarkMockApp() (*mock.App, error) {
|
||||||
mapp := mock.NewApp()
|
mapp := mock.NewApp()
|
||||||
|
|
||||||
RegisterCodec(mapp.Cdc)
|
RegisterCodec(mapp.Cdc)
|
||||||
bankKeeper := NewBaseKeeper(mapp.AccountKeeper)
|
bankKeeper := NewBaseKeeper(
|
||||||
|
mapp.AccountKeeper,
|
||||||
|
mapp.ParamsKeeper.Subspace(DefaultParamspace),
|
||||||
|
DefaultCodespace,
|
||||||
|
)
|
||||||
mapp.Router().AddRoute("bank", NewHandler(bankKeeper))
|
mapp.Router().AddRoute("bank", NewHandler(bankKeeper))
|
||||||
|
mapp.SetInitChainer(getInitChainer(mapp, bankKeeper))
|
||||||
|
|
||||||
err := mapp.CompleteSetup()
|
err := mapp.CompleteSetup()
|
||||||
return mapp, err
|
return mapp, err
|
||||||
|
|
|
@ -11,6 +11,7 @@ const (
|
||||||
|
|
||||||
CodeInvalidInput sdk.CodeType = 101
|
CodeInvalidInput sdk.CodeType = 101
|
||||||
CodeInvalidOutput sdk.CodeType = 102
|
CodeInvalidOutput sdk.CodeType = 102
|
||||||
|
CodeSendDisabled sdk.CodeType = 103
|
||||||
)
|
)
|
||||||
|
|
||||||
// NOTE: Don't stringer this, we'll put better messages in later.
|
// 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, "")
|
return newError(codespace, CodeInvalidOutput, "")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func ErrSendDisabled(codespace sdk.CodespaceType) sdk.Error {
|
||||||
|
return newError(codespace, CodeSendDisabled, "")
|
||||||
|
}
|
||||||
|
|
||||||
//----------------------------------------
|
//----------------------------------------
|
||||||
|
|
||||||
func msgOrDefaultMsg(msg string, code sdk.CodeType) string {
|
func msgOrDefaultMsg(msg string, code sdk.CodeType) string {
|
||||||
|
|
|
@ -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 }
|
|
@ -20,6 +20,9 @@ func NewHandler(k Keeper) sdk.Handler {
|
||||||
// Handle MsgSend.
|
// Handle MsgSend.
|
||||||
func handleMsgSend(ctx sdk.Context, k Keeper, msg MsgSend) sdk.Result {
|
func handleMsgSend(ctx sdk.Context, k Keeper, msg MsgSend) sdk.Result {
|
||||||
// NOTE: totalIn == totalOut should already have been checked
|
// 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)
|
tags, err := k.InputOutputCoins(ctx, msg.Inputs, msg.Outputs)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err.Result()
|
return err.Result()
|
||||||
|
|
|
@ -6,6 +6,7 @@ import (
|
||||||
|
|
||||||
sdk "github.com/cosmos/cosmos-sdk/types"
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||||
"github.com/cosmos/cosmos-sdk/x/auth"
|
"github.com/cosmos/cosmos-sdk/x/auth"
|
||||||
|
"github.com/cosmos/cosmos-sdk/x/params"
|
||||||
)
|
)
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
@ -32,14 +33,20 @@ type Keeper interface {
|
||||||
type BaseKeeper struct {
|
type BaseKeeper struct {
|
||||||
BaseSendKeeper
|
BaseSendKeeper
|
||||||
|
|
||||||
ak auth.AccountKeeper
|
ak auth.AccountKeeper
|
||||||
|
paramSpace params.Subspace
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewBaseKeeper returns a new BaseKeeper
|
// 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{
|
return BaseKeeper{
|
||||||
BaseSendKeeper: NewBaseSendKeeper(ak),
|
BaseSendKeeper: NewBaseSendKeeper(ak, ps, codespace),
|
||||||
ak: ak,
|
ak: ak,
|
||||||
|
paramSpace: ps,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -95,6 +102,9 @@ type SendKeeper interface {
|
||||||
ViewKeeper
|
ViewKeeper
|
||||||
|
|
||||||
SendCoins(ctx sdk.Context, fromAddr sdk.AccAddress, toAddr sdk.AccAddress, amt sdk.Coins) (sdk.Tags, sdk.Error)
|
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)
|
var _ SendKeeper = (*BaseSendKeeper)(nil)
|
||||||
|
@ -104,14 +114,18 @@ var _ SendKeeper = (*BaseSendKeeper)(nil)
|
||||||
type BaseSendKeeper struct {
|
type BaseSendKeeper struct {
|
||||||
BaseViewKeeper
|
BaseViewKeeper
|
||||||
|
|
||||||
ak auth.AccountKeeper
|
ak auth.AccountKeeper
|
||||||
|
paramSpace params.Subspace
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewBaseSendKeeper returns a new BaseSendKeeper.
|
// 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{
|
return BaseSendKeeper{
|
||||||
BaseViewKeeper: NewBaseViewKeeper(ak),
|
BaseViewKeeper: NewBaseViewKeeper(ak, codespace),
|
||||||
ak: ak,
|
ak: ak,
|
||||||
|
paramSpace: paramSpace,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -119,10 +133,22 @@ func NewBaseSendKeeper(ak auth.AccountKeeper) BaseSendKeeper {
|
||||||
func (keeper BaseSendKeeper) SendCoins(
|
func (keeper BaseSendKeeper) SendCoins(
|
||||||
ctx sdk.Context, fromAddr sdk.AccAddress, toAddr sdk.AccAddress, amt sdk.Coins,
|
ctx sdk.Context, fromAddr sdk.AccAddress, toAddr sdk.AccAddress, amt sdk.Coins,
|
||||||
) (sdk.Tags, sdk.Error) {
|
) (sdk.Tags, sdk.Error) {
|
||||||
|
|
||||||
return sendCoins(ctx, keeper.ak, fromAddr, toAddr, amt)
|
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
|
// View Keeper
|
||||||
|
|
||||||
|
@ -133,18 +159,19 @@ var _ ViewKeeper = (*BaseViewKeeper)(nil)
|
||||||
type ViewKeeper interface {
|
type ViewKeeper interface {
|
||||||
GetCoins(ctx sdk.Context, addr sdk.AccAddress) sdk.Coins
|
GetCoins(ctx sdk.Context, addr sdk.AccAddress) sdk.Coins
|
||||||
HasCoins(ctx sdk.Context, addr sdk.AccAddress, amt sdk.Coins) bool
|
HasCoins(ctx sdk.Context, addr sdk.AccAddress, amt sdk.Coins) bool
|
||||||
|
|
||||||
|
Codespace() sdk.CodespaceType
|
||||||
}
|
}
|
||||||
|
|
||||||
// BaseViewKeeper implements a read only keeper implementation of ViewKeeper.
|
// BaseViewKeeper implements a read only keeper implementation of ViewKeeper.
|
||||||
type BaseViewKeeper struct {
|
type BaseViewKeeper struct {
|
||||||
ak auth.AccountKeeper
|
ak auth.AccountKeeper
|
||||||
|
codespace sdk.CodespaceType
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewBaseViewKeeper returns a new BaseViewKeeper.
|
// NewBaseViewKeeper returns a new BaseViewKeeper.
|
||||||
func NewBaseViewKeeper(ak auth.AccountKeeper) BaseViewKeeper {
|
func NewBaseViewKeeper(ak auth.AccountKeeper, codespace sdk.CodespaceType) BaseViewKeeper {
|
||||||
return BaseViewKeeper{
|
return BaseViewKeeper{ak: ak, codespace: codespace}
|
||||||
ak: ak,
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetCoins returns the coins at the addr.
|
// 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)
|
return hasCoins(ctx, keeper.ak, addr, amt)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Codespace returns the keeper's codespace.
|
||||||
|
func (keeper BaseViewKeeper) Codespace() sdk.CodespaceType {
|
||||||
|
return keeper.codespace
|
||||||
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// Auxiliary
|
// Auxiliary
|
||||||
|
|
||||||
|
|
|
@ -21,6 +21,7 @@ type testInput struct {
|
||||||
cdc *codec.Codec
|
cdc *codec.Codec
|
||||||
ctx sdk.Context
|
ctx sdk.Context
|
||||||
ak auth.AccountKeeper
|
ak auth.AccountKeeper
|
||||||
|
pk params.Keeper
|
||||||
}
|
}
|
||||||
|
|
||||||
func setupTestInput() testInput {
|
func setupTestInput() testInput {
|
||||||
|
@ -49,13 +50,14 @@ func setupTestInput() testInput {
|
||||||
|
|
||||||
ak.SetParams(ctx, auth.DefaultParams())
|
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) {
|
func TestKeeper(t *testing.T) {
|
||||||
input := setupTestInput()
|
input := setupTestInput()
|
||||||
ctx := input.ctx
|
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"))
|
addr := sdk.AccAddress([]byte("addr1"))
|
||||||
addr2 := sdk.AccAddress([]byte("addr2"))
|
addr2 := sdk.AccAddress([]byte("addr2"))
|
||||||
|
@ -134,8 +136,10 @@ func TestKeeper(t *testing.T) {
|
||||||
func TestSendKeeper(t *testing.T) {
|
func TestSendKeeper(t *testing.T) {
|
||||||
input := setupTestInput()
|
input := setupTestInput()
|
||||||
ctx := input.ctx
|
ctx := input.ctx
|
||||||
bankKeeper := NewBaseKeeper(input.ak)
|
paramSpace := input.pk.Subspace(DefaultParamspace)
|
||||||
sendKeeper := NewBaseSendKeeper(input.ak)
|
bankKeeper := NewBaseKeeper(input.ak, paramSpace, DefaultCodespace)
|
||||||
|
sendKeeper := NewBaseSendKeeper(input.ak, paramSpace, DefaultCodespace)
|
||||||
|
bankKeeper.SetSendEnabled(ctx, true)
|
||||||
|
|
||||||
addr := sdk.AccAddress([]byte("addr1"))
|
addr := sdk.AccAddress([]byte("addr1"))
|
||||||
addr2 := sdk.AccAddress([]byte("addr2"))
|
addr2 := sdk.AccAddress([]byte("addr2"))
|
||||||
|
@ -181,8 +185,10 @@ func TestSendKeeper(t *testing.T) {
|
||||||
func TestViewKeeper(t *testing.T) {
|
func TestViewKeeper(t *testing.T) {
|
||||||
input := setupTestInput()
|
input := setupTestInput()
|
||||||
ctx := input.ctx
|
ctx := input.ctx
|
||||||
bankKeeper := NewBaseKeeper(input.ak)
|
paramSpace := input.pk.Subspace(DefaultParamspace)
|
||||||
viewKeeper := NewBaseViewKeeper(input.ak)
|
bankKeeper := NewBaseKeeper(input.ak, paramSpace, DefaultCodespace)
|
||||||
|
bankKeeper.SetSendEnabled(ctx, true)
|
||||||
|
viewKeeper := NewBaseViewKeeper(input.ak, DefaultCodespace)
|
||||||
|
|
||||||
addr := sdk.AccAddress([]byte("addr1"))
|
addr := sdk.AccAddress([]byte("addr1"))
|
||||||
acc := input.ak.NewAccountWithAddress(ctx, addr)
|
acc := input.ak.NewAccountWithAddress(ctx, addr)
|
||||||
|
@ -209,7 +215,8 @@ func TestVestingAccountSend(t *testing.T) {
|
||||||
|
|
||||||
origCoins := sdk.Coins{sdk.NewInt64Coin("steak", 100)}
|
origCoins := sdk.Coins{sdk.NewInt64Coin("steak", 100)}
|
||||||
sendCoins := sdk.Coins{sdk.NewInt64Coin("steak", 50)}
|
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"))
|
addr1 := sdk.AccAddress([]byte("addr1"))
|
||||||
addr2 := sdk.AccAddress([]byte("addr2"))
|
addr2 := sdk.AccAddress([]byte("addr2"))
|
||||||
|
@ -242,7 +249,8 @@ func TestVestingAccountReceive(t *testing.T) {
|
||||||
|
|
||||||
origCoins := sdk.Coins{sdk.NewInt64Coin("steak", 100)}
|
origCoins := sdk.Coins{sdk.NewInt64Coin("steak", 100)}
|
||||||
sendCoins := sdk.Coins{sdk.NewInt64Coin("steak", 50)}
|
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"))
|
addr1 := sdk.AccAddress([]byte("addr1"))
|
||||||
addr2 := sdk.AccAddress([]byte("addr2"))
|
addr2 := sdk.AccAddress([]byte("addr2"))
|
||||||
|
@ -275,7 +283,8 @@ func TestDelegateCoins(t *testing.T) {
|
||||||
|
|
||||||
origCoins := sdk.Coins{sdk.NewInt64Coin("steak", 100)}
|
origCoins := sdk.Coins{sdk.NewInt64Coin("steak", 100)}
|
||||||
delCoins := sdk.Coins{sdk.NewInt64Coin("steak", 50)}
|
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"))
|
addr1 := sdk.AccAddress([]byte("addr1"))
|
||||||
addr2 := sdk.AccAddress([]byte("addr2"))
|
addr2 := sdk.AccAddress([]byte("addr2"))
|
||||||
|
@ -311,7 +320,8 @@ func TestUndelegateCoins(t *testing.T) {
|
||||||
|
|
||||||
origCoins := sdk.Coins{sdk.NewInt64Coin("steak", 100)}
|
origCoins := sdk.Coins{sdk.NewInt64Coin("steak", 100)}
|
||||||
delCoins := sdk.Coins{sdk.NewInt64Coin("steak", 50)}
|
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"))
|
addr1 := sdk.AccAddress([]byte("addr1"))
|
||||||
addr2 := sdk.AccAddress([]byte("addr2"))
|
addr2 := sdk.AccAddress([]byte("addr2"))
|
||||||
|
|
|
@ -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,
|
||||||
|
)
|
||||||
|
}
|
|
@ -112,6 +112,9 @@ func sendAndVerifyMsgSend(app *baseapp.BaseApp, mapper auth.AccountKeeper, msg b
|
||||||
if handler != nil {
|
if handler != nil {
|
||||||
res := handler(ctx, msg)
|
res := handler(ctx, msg)
|
||||||
if !res.IsOK() {
|
if !res.IsOK() {
|
||||||
|
if res.Code == bank.CodeSendDisabled {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
// TODO: Do this in a more 'canonical' way
|
// TODO: Do this in a more 'canonical' way
|
||||||
return fmt.Errorf("handling msg failed %v", res)
|
return fmt.Errorf("handling msg failed %v", res)
|
||||||
}
|
}
|
||||||
|
|
|
@ -110,7 +110,7 @@ func CreateTestInputAdvanced(t *testing.T, isCheckTx bool, initCoins int64,
|
||||||
|
|
||||||
ctx := sdk.NewContext(ms, abci.Header{ChainID: "foochainid"}, isCheckTx, log.NewNopLogger())
|
ctx := sdk.NewContext(ms, abci.Header{ChainID: "foochainid"}, isCheckTx, log.NewNopLogger())
|
||||||
accountKeeper := auth.NewAccountKeeper(cdc, keyAcc, pk.Subspace(auth.DefaultParamspace), auth.ProtoBaseAccount)
|
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 := staking.NewKeeper(cdc, keyStaking, tkeyStaking, ck, pk.Subspace(staking.DefaultParamspace), staking.DefaultCodespace)
|
||||||
sk.SetPool(ctx, staking.InitialPool())
|
sk.SetPool(ctx, staking.InitialPool())
|
||||||
sk.SetParams(ctx, staking.DefaultParams())
|
sk.SetParams(ctx, staking.DefaultParams())
|
||||||
|
|
|
@ -16,6 +16,7 @@ func TestTickExpiredDepositPeriod(t *testing.T) {
|
||||||
mapp, keeper, _, addrs, _, _ := getMockApp(t, 10, GenesisState{}, nil)
|
mapp, keeper, _, addrs, _, _ := getMockApp(t, 10, GenesisState{}, nil)
|
||||||
mapp.BeginBlock(abci.RequestBeginBlock{})
|
mapp.BeginBlock(abci.RequestBeginBlock{})
|
||||||
ctx := mapp.BaseApp.NewContext(false, abci.Header{})
|
ctx := mapp.BaseApp.NewContext(false, abci.Header{})
|
||||||
|
keeper.ck.SetSendEnabled(ctx, true)
|
||||||
govHandler := NewHandler(keeper)
|
govHandler := NewHandler(keeper)
|
||||||
|
|
||||||
inactiveQueue := keeper.InactiveProposalQueueIterator(ctx, ctx.BlockHeader().Time)
|
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, keeper, _, addrs, _, _ := getMockApp(t, 10, GenesisState{}, nil)
|
||||||
mapp.BeginBlock(abci.RequestBeginBlock{})
|
mapp.BeginBlock(abci.RequestBeginBlock{})
|
||||||
ctx := mapp.BaseApp.NewContext(false, abci.Header{})
|
ctx := mapp.BaseApp.NewContext(false, abci.Header{})
|
||||||
|
keeper.ck.SetSendEnabled(ctx, true)
|
||||||
govHandler := NewHandler(keeper)
|
govHandler := NewHandler(keeper)
|
||||||
|
|
||||||
inactiveQueue := keeper.InactiveProposalQueueIterator(ctx, ctx.BlockHeader().Time)
|
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, keeper, _, addrs, _, _ := getMockApp(t, 10, GenesisState{}, nil)
|
||||||
mapp.BeginBlock(abci.RequestBeginBlock{})
|
mapp.BeginBlock(abci.RequestBeginBlock{})
|
||||||
ctx := mapp.BaseApp.NewContext(false, abci.Header{})
|
ctx := mapp.BaseApp.NewContext(false, abci.Header{})
|
||||||
|
keeper.ck.SetSendEnabled(ctx, true)
|
||||||
govHandler := NewHandler(keeper)
|
govHandler := NewHandler(keeper)
|
||||||
|
|
||||||
inactiveQueue := keeper.InactiveProposalQueueIterator(ctx, ctx.BlockHeader().Time)
|
inactiveQueue := keeper.InactiveProposalQueueIterator(ctx, ctx.BlockHeader().Time)
|
||||||
|
@ -156,6 +159,7 @@ func TestTickPassedVotingPeriod(t *testing.T) {
|
||||||
SortAddresses(addrs)
|
SortAddresses(addrs)
|
||||||
mapp.BeginBlock(abci.RequestBeginBlock{})
|
mapp.BeginBlock(abci.RequestBeginBlock{})
|
||||||
ctx := mapp.BaseApp.NewContext(false, abci.Header{})
|
ctx := mapp.BaseApp.NewContext(false, abci.Header{})
|
||||||
|
keeper.ck.SetSendEnabled(ctx, true)
|
||||||
govHandler := NewHandler(keeper)
|
govHandler := NewHandler(keeper)
|
||||||
|
|
||||||
inactiveQueue := keeper.InactiveProposalQueueIterator(ctx, ctx.BlockHeader().Time)
|
inactiveQueue := keeper.InactiveProposalQueueIterator(ctx, ctx.BlockHeader().Time)
|
||||||
|
|
|
@ -31,7 +31,7 @@ func getMockApp(t *testing.T, numGenAccs int, genState GenesisState, genAccs []a
|
||||||
keyGov := sdk.NewKVStoreKey(StoreKey)
|
keyGov := sdk.NewKVStoreKey(StoreKey)
|
||||||
|
|
||||||
pk := mapp.ParamsKeeper
|
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)
|
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)
|
keeper = NewKeeper(mapp.Cdc, keyGov, pk, pk.Subspace("testgov"), ck, sk, DefaultCodespace)
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,9 @@ func getMockApp(t *testing.T) *mock.App {
|
||||||
RegisterCodec(mapp.Cdc)
|
RegisterCodec(mapp.Cdc)
|
||||||
keyIBC := sdk.NewKVStoreKey("ibc")
|
keyIBC := sdk.NewKVStoreKey("ibc")
|
||||||
ibcMapper := NewMapper(mapp.Cdc, keyIBC, DefaultCodespace)
|
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))
|
mapp.Router().AddRoute("ibc", NewHandler(ibcMapper, bankKeeper))
|
||||||
|
|
||||||
require.NoError(t, mapp.CompleteSetup(keyIBC))
|
require.NoError(t, mapp.CompleteSetup(keyIBC))
|
||||||
|
|
|
@ -50,7 +50,7 @@ func setupTestInput() testInput {
|
||||||
ak := auth.NewAccountKeeper(
|
ak := auth.NewAccountKeeper(
|
||||||
cdc, authCapKey, pk.Subspace(auth.DefaultParamspace), auth.ProtoBaseAccount,
|
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())
|
ctx := sdk.NewContext(ms, abci.Header{ChainID: "test-chain-id"}, false, log.NewNopLogger())
|
||||||
|
|
||||||
ak.SetParams(ctx, auth.DefaultParams())
|
ak.SetParams(ctx, auth.DefaultParams())
|
||||||
|
|
|
@ -30,7 +30,7 @@ func getMockApp(t *testing.T) (*mock.App, staking.Keeper, Keeper) {
|
||||||
tkeyStaking := sdk.NewTransientStoreKey(staking.TStoreKey)
|
tkeyStaking := sdk.NewTransientStoreKey(staking.TStoreKey)
|
||||||
keySlashing := sdk.NewKVStoreKey(StoreKey)
|
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)
|
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)
|
keeper := NewKeeper(mapp.Cdc, keySlashing, stakingKeeper, mapp.ParamsKeeper.Subspace(DefaultParamspace), DefaultCodespace)
|
||||||
mapp.Router().AddRoute(staking.RouterKey, staking.NewHandler(stakingKeeper))
|
mapp.Router().AddRoute(staking.RouterKey, staking.NewHandler(stakingKeeper))
|
||||||
|
|
|
@ -72,7 +72,7 @@ func createTestInput(t *testing.T, defaults Params) (sdk.Context, bank.Keeper, s
|
||||||
paramsKeeper := params.NewKeeper(cdc, keyParams, tkeyParams)
|
paramsKeeper := params.NewKeeper(cdc, keyParams, tkeyParams)
|
||||||
accountKeeper := auth.NewAccountKeeper(cdc, keyAcc, paramsKeeper.Subspace(auth.DefaultParamspace), auth.ProtoBaseAccount)
|
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)
|
sk := staking.NewKeeper(cdc, keyStaking, tkeyStaking, ck, paramsKeeper.Subspace(staking.DefaultParamspace), staking.DefaultCodespace)
|
||||||
genesis := staking.DefaultGenesisState()
|
genesis := staking.DefaultGenesisState()
|
||||||
|
|
||||||
|
|
|
@ -22,7 +22,7 @@ func getMockApp(t *testing.T) (*mock.App, Keeper) {
|
||||||
keyStaking := sdk.NewKVStoreKey(StoreKey)
|
keyStaking := sdk.NewKVStoreKey(StoreKey)
|
||||||
tkeyStaking := sdk.NewTransientStoreKey(TStoreKey)
|
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)
|
keeper := NewKeeper(mApp.Cdc, keyStaking, tkeyStaking, bankKeeper, mApp.ParamsKeeper.Subspace(DefaultParamspace), DefaultCodespace)
|
||||||
|
|
||||||
mApp.Router().AddRoute(RouterKey, NewHandler(keeper))
|
mApp.Router().AddRoute(RouterKey, NewHandler(keeper))
|
||||||
|
|
|
@ -112,7 +112,11 @@ func CreateTestInput(t *testing.T, isCheckTx bool, initCoins int64) (sdk.Context
|
||||||
auth.ProtoBaseAccount, // prototype
|
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 := NewKeeper(cdc, keyStaking, tkeyStaking, ck, pk.Subspace(DefaultParamspace), types.DefaultCodespace)
|
||||||
keeper.SetPool(ctx, types.InitialPool())
|
keeper.SetPool(ctx, types.InitialPool())
|
||||||
|
|
Loading…
Reference in New Issue