mirror of
				https://github.com/0glabs/0g-chain.git
				synced 2025-11-04 02:17:31 +00:00 
			
		
		
		
	remove x/mint (#1416)
* use kavamint in incentive to calculate staking apy * use kavamint minting: rewards_earn_staking_integration_test * update incentive tests to mint only with kavamint * remove x/mint from incentive tests * remove x/mint from kava app * fix minting in x/auction tests * replace simapp fund calls with test helper * remove mint state from genesis.json
This commit is contained in:
		
							parent
							
								
									f37321839b
								
							
						
					
					
						commit
						016eecfcc0
					
				
							
								
								
									
										27
									
								
								app/app.go
									
									
									
									
									
								
							
							
						
						
									
										27
									
								
								app/app.go
									
									
									
									
									
								
							@ -49,9 +49,6 @@ import (
 | 
				
			|||||||
	"github.com/cosmos/cosmos-sdk/x/gov"
 | 
						"github.com/cosmos/cosmos-sdk/x/gov"
 | 
				
			||||||
	govkeeper "github.com/cosmos/cosmos-sdk/x/gov/keeper"
 | 
						govkeeper "github.com/cosmos/cosmos-sdk/x/gov/keeper"
 | 
				
			||||||
	govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
 | 
						govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
 | 
				
			||||||
	"github.com/cosmos/cosmos-sdk/x/mint"
 | 
					 | 
				
			||||||
	mintkeeper "github.com/cosmos/cosmos-sdk/x/mint/keeper"
 | 
					 | 
				
			||||||
	minttypes "github.com/cosmos/cosmos-sdk/x/mint/types"
 | 
					 | 
				
			||||||
	"github.com/cosmos/cosmos-sdk/x/params"
 | 
						"github.com/cosmos/cosmos-sdk/x/params"
 | 
				
			||||||
	paramsclient "github.com/cosmos/cosmos-sdk/x/params/client"
 | 
						paramsclient "github.com/cosmos/cosmos-sdk/x/params/client"
 | 
				
			||||||
	paramskeeper "github.com/cosmos/cosmos-sdk/x/params/keeper"
 | 
						paramskeeper "github.com/cosmos/cosmos-sdk/x/params/keeper"
 | 
				
			||||||
@ -167,7 +164,6 @@ var (
 | 
				
			|||||||
		bank.AppModuleBasic{},
 | 
							bank.AppModuleBasic{},
 | 
				
			||||||
		capability.AppModuleBasic{},
 | 
							capability.AppModuleBasic{},
 | 
				
			||||||
		staking.AppModuleBasic{},
 | 
							staking.AppModuleBasic{},
 | 
				
			||||||
		mint.AppModuleBasic{},
 | 
					 | 
				
			||||||
		distr.AppModuleBasic{},
 | 
							distr.AppModuleBasic{},
 | 
				
			||||||
		gov.NewAppModuleBasic(
 | 
							gov.NewAppModuleBasic(
 | 
				
			||||||
			paramsclient.ProposalHandler,
 | 
								paramsclient.ProposalHandler,
 | 
				
			||||||
@ -218,7 +214,6 @@ var (
 | 
				
			|||||||
	mAccPerms = map[string][]string{
 | 
						mAccPerms = map[string][]string{
 | 
				
			||||||
		authtypes.FeeCollectorName:      nil,
 | 
							authtypes.FeeCollectorName:      nil,
 | 
				
			||||||
		distrtypes.ModuleName:           nil,
 | 
							distrtypes.ModuleName:           nil,
 | 
				
			||||||
		minttypes.ModuleName:            {authtypes.Minter},
 | 
					 | 
				
			||||||
		stakingtypes.BondedPoolName:     {authtypes.Burner, authtypes.Staking},
 | 
							stakingtypes.BondedPoolName:     {authtypes.Burner, authtypes.Staking},
 | 
				
			||||||
		stakingtypes.NotBondedPoolName:  {authtypes.Burner, authtypes.Staking},
 | 
							stakingtypes.NotBondedPoolName:  {authtypes.Burner, authtypes.Staking},
 | 
				
			||||||
		govtypes.ModuleName:             {authtypes.Burner},
 | 
							govtypes.ModuleName:             {authtypes.Burner},
 | 
				
			||||||
@ -282,7 +277,6 @@ type App struct {
 | 
				
			|||||||
	bankKeeper       bankkeeper.Keeper
 | 
						bankKeeper       bankkeeper.Keeper
 | 
				
			||||||
	capabilityKeeper *capabilitykeeper.Keeper
 | 
						capabilityKeeper *capabilitykeeper.Keeper
 | 
				
			||||||
	stakingKeeper    stakingkeeper.Keeper
 | 
						stakingKeeper    stakingkeeper.Keeper
 | 
				
			||||||
	mintKeeper       mintkeeper.Keeper
 | 
					 | 
				
			||||||
	distrKeeper      distrkeeper.Keeper
 | 
						distrKeeper      distrkeeper.Keeper
 | 
				
			||||||
	govKeeper        govkeeper.Keeper
 | 
						govKeeper        govkeeper.Keeper
 | 
				
			||||||
	paramsKeeper     paramskeeper.Keeper
 | 
						paramsKeeper     paramskeeper.Keeper
 | 
				
			||||||
@ -357,7 +351,7 @@ func NewApp(
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	keys := sdk.NewKVStoreKeys(
 | 
						keys := sdk.NewKVStoreKeys(
 | 
				
			||||||
		authtypes.StoreKey, banktypes.StoreKey, stakingtypes.StoreKey,
 | 
							authtypes.StoreKey, banktypes.StoreKey, stakingtypes.StoreKey,
 | 
				
			||||||
		minttypes.StoreKey, distrtypes.StoreKey, slashingtypes.StoreKey,
 | 
							distrtypes.StoreKey, slashingtypes.StoreKey,
 | 
				
			||||||
		govtypes.StoreKey, paramstypes.StoreKey, ibchost.StoreKey,
 | 
							govtypes.StoreKey, paramstypes.StoreKey, ibchost.StoreKey,
 | 
				
			||||||
		upgradetypes.StoreKey, evidencetypes.StoreKey, ibctransfertypes.StoreKey,
 | 
							upgradetypes.StoreKey, evidencetypes.StoreKey, ibctransfertypes.StoreKey,
 | 
				
			||||||
		evmtypes.StoreKey, feemarkettypes.StoreKey, authzkeeper.StoreKey,
 | 
							evmtypes.StoreKey, feemarkettypes.StoreKey, authzkeeper.StoreKey,
 | 
				
			||||||
@ -390,7 +384,6 @@ func NewApp(
 | 
				
			|||||||
	authSubspace := app.paramsKeeper.Subspace(authtypes.ModuleName)
 | 
						authSubspace := app.paramsKeeper.Subspace(authtypes.ModuleName)
 | 
				
			||||||
	bankSubspace := app.paramsKeeper.Subspace(banktypes.ModuleName)
 | 
						bankSubspace := app.paramsKeeper.Subspace(banktypes.ModuleName)
 | 
				
			||||||
	stakingSubspace := app.paramsKeeper.Subspace(stakingtypes.ModuleName)
 | 
						stakingSubspace := app.paramsKeeper.Subspace(stakingtypes.ModuleName)
 | 
				
			||||||
	mintSubspace := app.paramsKeeper.Subspace(minttypes.ModuleName)
 | 
					 | 
				
			||||||
	distrSubspace := app.paramsKeeper.Subspace(distrtypes.ModuleName)
 | 
						distrSubspace := app.paramsKeeper.Subspace(distrtypes.ModuleName)
 | 
				
			||||||
	slashingSubspace := app.paramsKeeper.Subspace(slashingtypes.ModuleName)
 | 
						slashingSubspace := app.paramsKeeper.Subspace(slashingtypes.ModuleName)
 | 
				
			||||||
	govSubspace := app.paramsKeeper.Subspace(govtypes.ModuleName).WithKeyTable(govtypes.ParamKeyTable())
 | 
						govSubspace := app.paramsKeeper.Subspace(govtypes.ModuleName).WithKeyTable(govtypes.ParamKeyTable())
 | 
				
			||||||
@ -448,15 +441,6 @@ func NewApp(
 | 
				
			|||||||
		appCodec,
 | 
							appCodec,
 | 
				
			||||||
		app.BaseApp.MsgServiceRouter(),
 | 
							app.BaseApp.MsgServiceRouter(),
 | 
				
			||||||
	)
 | 
						)
 | 
				
			||||||
	app.mintKeeper = mintkeeper.NewKeeper(
 | 
					 | 
				
			||||||
		appCodec,
 | 
					 | 
				
			||||||
		keys[minttypes.StoreKey],
 | 
					 | 
				
			||||||
		mintSubspace,
 | 
					 | 
				
			||||||
		&app.stakingKeeper,
 | 
					 | 
				
			||||||
		app.accountKeeper,
 | 
					 | 
				
			||||||
		app.bankKeeper,
 | 
					 | 
				
			||||||
		authtypes.FeeCollectorName,
 | 
					 | 
				
			||||||
	)
 | 
					 | 
				
			||||||
	app.distrKeeper = distrkeeper.NewKeeper(
 | 
						app.distrKeeper = distrkeeper.NewKeeper(
 | 
				
			||||||
		appCodec,
 | 
							appCodec,
 | 
				
			||||||
		keys[distrtypes.StoreKey],
 | 
							keys[distrtypes.StoreKey],
 | 
				
			||||||
@ -660,7 +644,7 @@ func NewApp(
 | 
				
			|||||||
		&savingsKeeper,
 | 
							&savingsKeeper,
 | 
				
			||||||
		&app.liquidKeeper,
 | 
							&app.liquidKeeper,
 | 
				
			||||||
		&earnKeeper,
 | 
							&earnKeeper,
 | 
				
			||||||
		app.mintKeeper,
 | 
							app.kavamintKeeper,
 | 
				
			||||||
		app.distrKeeper,
 | 
							app.distrKeeper,
 | 
				
			||||||
		app.pricefeedKeeper,
 | 
							app.pricefeedKeeper,
 | 
				
			||||||
	)
 | 
						)
 | 
				
			||||||
@ -736,7 +720,6 @@ func NewApp(
 | 
				
			|||||||
		bank.NewAppModule(appCodec, app.bankKeeper, app.accountKeeper),
 | 
							bank.NewAppModule(appCodec, app.bankKeeper, app.accountKeeper),
 | 
				
			||||||
		capability.NewAppModule(appCodec, *app.capabilityKeeper),
 | 
							capability.NewAppModule(appCodec, *app.capabilityKeeper),
 | 
				
			||||||
		staking.NewAppModule(appCodec, app.stakingKeeper, app.accountKeeper, app.bankKeeper),
 | 
							staking.NewAppModule(appCodec, app.stakingKeeper, app.accountKeeper, app.bankKeeper),
 | 
				
			||||||
		mint.NewAppModule(appCodec, app.mintKeeper, app.accountKeeper),
 | 
					 | 
				
			||||||
		distr.NewAppModule(appCodec, app.distrKeeper, app.accountKeeper, app.bankKeeper, app.stakingKeeper),
 | 
							distr.NewAppModule(appCodec, app.distrKeeper, app.accountKeeper, app.bankKeeper, app.stakingKeeper),
 | 
				
			||||||
		gov.NewAppModule(appCodec, app.govKeeper, app.accountKeeper, app.bankKeeper),
 | 
							gov.NewAppModule(appCodec, app.govKeeper, app.accountKeeper, app.bankKeeper),
 | 
				
			||||||
		params.NewAppModule(app.paramsKeeper),
 | 
							params.NewAppModule(app.paramsKeeper),
 | 
				
			||||||
@ -779,9 +762,7 @@ func NewApp(
 | 
				
			|||||||
		// Committee begin blocker changes module params by enacting proposals.
 | 
							// Committee begin blocker changes module params by enacting proposals.
 | 
				
			||||||
		// Run before to ensure params are updated together before state changes.
 | 
							// Run before to ensure params are updated together before state changes.
 | 
				
			||||||
		committeetypes.ModuleName,
 | 
							committeetypes.ModuleName,
 | 
				
			||||||
		minttypes.ModuleName,
 | 
							// Kavamint must be registered before distribution module in order to generate block staking rewards.
 | 
				
			||||||
		// Kavamint registers with the vanilla mint module.
 | 
					 | 
				
			||||||
		// Must be run before distribution module in order to generate block staking rewards.
 | 
					 | 
				
			||||||
		kavaminttypes.ModuleName,
 | 
							kavaminttypes.ModuleName,
 | 
				
			||||||
		distrtypes.ModuleName,
 | 
							distrtypes.ModuleName,
 | 
				
			||||||
		// During begin block slashing happens after distr.BeginBlocker so that
 | 
							// During begin block slashing happens after distr.BeginBlocker so that
 | 
				
			||||||
@ -836,7 +817,6 @@ func NewApp(
 | 
				
			|||||||
		capabilitytypes.ModuleName,
 | 
							capabilitytypes.ModuleName,
 | 
				
			||||||
		incentivetypes.ModuleName,
 | 
							incentivetypes.ModuleName,
 | 
				
			||||||
		issuancetypes.ModuleName,
 | 
							issuancetypes.ModuleName,
 | 
				
			||||||
		minttypes.ModuleName,
 | 
					 | 
				
			||||||
		slashingtypes.ModuleName,
 | 
							slashingtypes.ModuleName,
 | 
				
			||||||
		distrtypes.ModuleName,
 | 
							distrtypes.ModuleName,
 | 
				
			||||||
		auctiontypes.ModuleName,
 | 
							auctiontypes.ModuleName,
 | 
				
			||||||
@ -875,7 +855,6 @@ func NewApp(
 | 
				
			|||||||
		stakingtypes.ModuleName,
 | 
							stakingtypes.ModuleName,
 | 
				
			||||||
		slashingtypes.ModuleName, // iterates over validators, run after staking
 | 
							slashingtypes.ModuleName, // iterates over validators, run after staking
 | 
				
			||||||
		govtypes.ModuleName,
 | 
							govtypes.ModuleName,
 | 
				
			||||||
		minttypes.ModuleName,
 | 
					 | 
				
			||||||
		kavaminttypes.ModuleName,
 | 
							kavaminttypes.ModuleName,
 | 
				
			||||||
		ibchost.ModuleName,
 | 
							ibchost.ModuleName,
 | 
				
			||||||
		evidencetypes.ModuleName,
 | 
							evidencetypes.ModuleName,
 | 
				
			||||||
 | 
				
			|||||||
@ -18,8 +18,6 @@ import (
 | 
				
			|||||||
	crisiskeeper "github.com/cosmos/cosmos-sdk/x/crisis/keeper"
 | 
						crisiskeeper "github.com/cosmos/cosmos-sdk/x/crisis/keeper"
 | 
				
			||||||
	distkeeper "github.com/cosmos/cosmos-sdk/x/distribution/keeper"
 | 
						distkeeper "github.com/cosmos/cosmos-sdk/x/distribution/keeper"
 | 
				
			||||||
	govkeeper "github.com/cosmos/cosmos-sdk/x/gov/keeper"
 | 
						govkeeper "github.com/cosmos/cosmos-sdk/x/gov/keeper"
 | 
				
			||||||
	mintkeeper "github.com/cosmos/cosmos-sdk/x/mint/keeper"
 | 
					 | 
				
			||||||
	minttypes "github.com/cosmos/cosmos-sdk/x/mint/types"
 | 
					 | 
				
			||||||
	paramskeeper "github.com/cosmos/cosmos-sdk/x/params/keeper"
 | 
						paramskeeper "github.com/cosmos/cosmos-sdk/x/params/keeper"
 | 
				
			||||||
	slashingkeeper "github.com/cosmos/cosmos-sdk/x/slashing/keeper"
 | 
						slashingkeeper "github.com/cosmos/cosmos-sdk/x/slashing/keeper"
 | 
				
			||||||
	stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper"
 | 
						stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper"
 | 
				
			||||||
@ -44,6 +42,7 @@ import (
 | 
				
			|||||||
	issuancekeeper "github.com/kava-labs/kava/x/issuance/keeper"
 | 
						issuancekeeper "github.com/kava-labs/kava/x/issuance/keeper"
 | 
				
			||||||
	kavadistkeeper "github.com/kava-labs/kava/x/kavadist/keeper"
 | 
						kavadistkeeper "github.com/kava-labs/kava/x/kavadist/keeper"
 | 
				
			||||||
	kavamintkeeper "github.com/kava-labs/kava/x/kavamint/keeper"
 | 
						kavamintkeeper "github.com/kava-labs/kava/x/kavamint/keeper"
 | 
				
			||||||
 | 
						kavaminttypes "github.com/kava-labs/kava/x/kavamint/types"
 | 
				
			||||||
	liquidkeeper "github.com/kava-labs/kava/x/liquid/keeper"
 | 
						liquidkeeper "github.com/kava-labs/kava/x/liquid/keeper"
 | 
				
			||||||
	pricefeedkeeper "github.com/kava-labs/kava/x/pricefeed/keeper"
 | 
						pricefeedkeeper "github.com/kava-labs/kava/x/pricefeed/keeper"
 | 
				
			||||||
	routerkeeper "github.com/kava-labs/kava/x/router/keeper"
 | 
						routerkeeper "github.com/kava-labs/kava/x/router/keeper"
 | 
				
			||||||
@ -98,7 +97,6 @@ func (tApp TestApp) GetAccountKeeper() authkeeper.AccountKeeper { return tApp.ac
 | 
				
			|||||||
func (tApp TestApp) GetBankKeeper() bankkeeper.Keeper           { return tApp.bankKeeper }
 | 
					func (tApp TestApp) GetBankKeeper() bankkeeper.Keeper           { return tApp.bankKeeper }
 | 
				
			||||||
func (tApp TestApp) GetStakingKeeper() stakingkeeper.Keeper     { return tApp.stakingKeeper }
 | 
					func (tApp TestApp) GetStakingKeeper() stakingkeeper.Keeper     { return tApp.stakingKeeper }
 | 
				
			||||||
func (tApp TestApp) GetSlashingKeeper() slashingkeeper.Keeper   { return tApp.slashingKeeper }
 | 
					func (tApp TestApp) GetSlashingKeeper() slashingkeeper.Keeper   { return tApp.slashingKeeper }
 | 
				
			||||||
func (tApp TestApp) GetMintKeeper() mintkeeper.Keeper           { return tApp.mintKeeper }
 | 
					 | 
				
			||||||
func (tApp TestApp) GetDistrKeeper() distkeeper.Keeper          { return tApp.distrKeeper }
 | 
					func (tApp TestApp) GetDistrKeeper() distkeeper.Keeper          { return tApp.distrKeeper }
 | 
				
			||||||
func (tApp TestApp) GetGovKeeper() govkeeper.Keeper             { return tApp.govKeeper }
 | 
					func (tApp TestApp) GetGovKeeper() govkeeper.Keeper             { return tApp.govKeeper }
 | 
				
			||||||
func (tApp TestApp) GetCrisisKeeper() crisiskeeper.Keeper       { return tApp.crisisKeeper }
 | 
					func (tApp TestApp) GetCrisisKeeper() crisiskeeper.Keeper       { return tApp.crisisKeeper }
 | 
				
			||||||
@ -212,11 +210,11 @@ func (tApp TestApp) GetModuleAccountBalance(ctx sdk.Context, moduleName string,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// FundAccount is a utility function that funds an account by minting and sending the coins to the address.
 | 
					// FundAccount is a utility function that funds an account by minting and sending the coins to the address.
 | 
				
			||||||
func (tApp TestApp) FundAccount(ctx sdk.Context, addr sdk.AccAddress, amounts sdk.Coins) error {
 | 
					func (tApp TestApp) FundAccount(ctx sdk.Context, addr sdk.AccAddress, amounts sdk.Coins) error {
 | 
				
			||||||
	if err := tApp.bankKeeper.MintCoins(ctx, minttypes.ModuleName, amounts); err != nil {
 | 
						if err := tApp.bankKeeper.MintCoins(ctx, kavaminttypes.ModuleAccountName, amounts); err != nil {
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return tApp.bankKeeper.SendCoinsFromModuleToAccount(ctx, minttypes.ModuleName, addr, amounts)
 | 
						return tApp.bankKeeper.SendCoinsFromModuleToAccount(ctx, kavaminttypes.ModuleAccountName, addr, amounts)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// NewQueryServerTestHelper creates a new QueryServiceTestHelper that wraps the provided sdk.Context.
 | 
					// NewQueryServerTestHelper creates a new QueryServiceTestHelper that wraps the provided sdk.Context.
 | 
				
			||||||
@ -226,11 +224,11 @@ func (tApp TestApp) NewQueryServerTestHelper(ctx sdk.Context) *baseapp.QueryServ
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// FundModuleAccount is a utility function that funds a module account by minting and sending the coins to the address.
 | 
					// FundModuleAccount is a utility function that funds a module account by minting and sending the coins to the address.
 | 
				
			||||||
func (tApp TestApp) FundModuleAccount(ctx sdk.Context, recipientMod string, amounts sdk.Coins) error {
 | 
					func (tApp TestApp) FundModuleAccount(ctx sdk.Context, recipientMod string, amounts sdk.Coins) error {
 | 
				
			||||||
	if err := tApp.bankKeeper.MintCoins(ctx, minttypes.ModuleName, amounts); err != nil {
 | 
						if err := tApp.bankKeeper.MintCoins(ctx, kavaminttypes.ModuleAccountName, amounts); err != nil {
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return tApp.bankKeeper.SendCoinsFromModuleToModule(ctx, minttypes.ModuleName, recipientMod, amounts)
 | 
						return tApp.bankKeeper.SendCoinsFromModuleToModule(ctx, kavaminttypes.ModuleAccountName, recipientMod, amounts)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// CreateNewUnbondedValidator creates a new validator in the staking module.
 | 
					// CreateNewUnbondedValidator creates a new validator in the staking module.
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										14
									
								
								ci/env/kava-internal-testnet/genesis.json
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										14
									
								
								ci/env/kava-internal-testnet/genesis.json
									
									
									
									
										vendored
									
									
								
							@ -2319,20 +2319,6 @@
 | 
				
			|||||||
    "liquid": {
 | 
					    "liquid": {
 | 
				
			||||||
      "params": {}
 | 
					      "params": {}
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "mint": {
 | 
					 | 
				
			||||||
      "minter": {
 | 
					 | 
				
			||||||
        "inflation": "0.000000000000000000",
 | 
					 | 
				
			||||||
        "annual_provisions": "0.000000000000000000"
 | 
					 | 
				
			||||||
      },
 | 
					 | 
				
			||||||
      "params": {
 | 
					 | 
				
			||||||
        "mint_denom": "ukava",
 | 
					 | 
				
			||||||
        "inflation_rate_change": "0.130000000000000000",
 | 
					 | 
				
			||||||
        "inflation_max": "0.000000000000000000",
 | 
					 | 
				
			||||||
        "inflation_min": "0.000000000000000000",
 | 
					 | 
				
			||||||
        "goal_bonded": "0.670000000000000000",
 | 
					 | 
				
			||||||
        "blocks_per_year": "6311520"
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "params": null,
 | 
					    "params": null,
 | 
				
			||||||
    "pricefeed": {
 | 
					    "pricefeed": {
 | 
				
			||||||
      "params": {
 | 
					      "params": {
 | 
				
			||||||
 | 
				
			|||||||
@ -3,7 +3,6 @@ package testutil
 | 
				
			|||||||
import (
 | 
					import (
 | 
				
			||||||
	"github.com/stretchr/testify/suite"
 | 
						"github.com/stretchr/testify/suite"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/cosmos/cosmos-sdk/simapp"
 | 
					 | 
				
			||||||
	sdk "github.com/cosmos/cosmos-sdk/types"
 | 
						sdk "github.com/cosmos/cosmos-sdk/types"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	tmproto "github.com/tendermint/tendermint/proto/tendermint/types"
 | 
						tmproto "github.com/tendermint/tendermint/proto/tendermint/types"
 | 
				
			||||||
@ -78,48 +77,15 @@ func (suite *Suite) SetupTest(numAddrs int) {
 | 
				
			|||||||
	suite.AccountKeeper = tApp.GetAccountKeeper()
 | 
						suite.AccountKeeper = tApp.GetAccountKeeper()
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// CreateAccount adds coins to an account address
 | 
					 | 
				
			||||||
func (suite *Suite) AddCoinsToAccount(addr sdk.AccAddress, coins sdk.Coins) {
 | 
					 | 
				
			||||||
	ak := suite.App.GetAccountKeeper()
 | 
					 | 
				
			||||||
	acc := ak.NewAccountWithAddress(suite.Ctx, addr)
 | 
					 | 
				
			||||||
	ak.SetAccount(suite.Ctx, acc)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	err := simapp.FundAccount(suite.BankKeeper, suite.Ctx, acc.GetAddress(), coins)
 | 
					 | 
				
			||||||
	suite.Require().NoError(err)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// AddCoinsToModule adds coins to a named module account
 | 
					// AddCoinsToModule adds coins to a named module account
 | 
				
			||||||
func (suite *Suite) AddCoinsToNamedModule(moduleName string, amount sdk.Coins) {
 | 
					func (suite *Suite) AddCoinsToNamedModule(moduleName string, amount sdk.Coins) {
 | 
				
			||||||
	// Does not use suite.BankKeeper.MintCoins as module account would not have permission to mint
 | 
						// Does not use suite.BankKeeper.MintCoins as module account would not have permission to mint
 | 
				
			||||||
	err := simapp.FundModuleAccount(suite.BankKeeper, suite.Ctx, moduleName, amount)
 | 
						err := suite.App.FundModuleAccount(suite.Ctx, moduleName, amount)
 | 
				
			||||||
	suite.Require().NoError(err)
 | 
						suite.Require().NoError(err)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// NewModuleAccountFromAddr creates a new module account from the provided address with the provided balance
 | 
					 | 
				
			||||||
// func (suite *Suite) NewModuleAccount(moduleName string, balance sdk.Coins) authtypes.AccountI {
 | 
					 | 
				
			||||||
// 	ak := suite.App.GetAccountKeeper()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// 	modAccAddr := authtypes.NewModuleAddress(moduleName)
 | 
					 | 
				
			||||||
// 	acc := ak.NewAccountWithAddress(suite.Ctx, modAccAddr)
 | 
					 | 
				
			||||||
// 	ak.SetAccount(suite.Ctx, acc)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// 	err := simapp.FundModuleAccount(suite.BankKeeper, suite.Ctx, moduleName, balance)
 | 
					 | 
				
			||||||
// 	suite.Require().NoError(err)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// 	return acc
 | 
					 | 
				
			||||||
// }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// CheckAccountBalanceEqual asserts that
 | 
					// CheckAccountBalanceEqual asserts that
 | 
				
			||||||
func (suite *Suite) CheckAccountBalanceEqual(owner sdk.AccAddress, expectedCoins sdk.Coins) {
 | 
					func (suite *Suite) CheckAccountBalanceEqual(owner sdk.AccAddress, expectedCoins sdk.Coins) {
 | 
				
			||||||
	balances := suite.BankKeeper.GetAllBalances(suite.Ctx, owner)
 | 
						balances := suite.BankKeeper.GetAllBalances(suite.Ctx, owner)
 | 
				
			||||||
	suite.Equal(expectedCoins, balances)
 | 
						suite.Equal(expectedCoins, balances)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					 | 
				
			||||||
// // CheckModuleAccountBalanceEqual asserts that a named module account balance matches the provided coins
 | 
					 | 
				
			||||||
// func (suite *Suite) CheckModuleAccountBalanceEqual(moduleName string, coins sdk.Coins) {
 | 
					 | 
				
			||||||
// 	balance := suite.BankKeeper.GetAllBalances(
 | 
					 | 
				
			||||||
// 		suite.Ctx,
 | 
					 | 
				
			||||||
// 		suite.AccountKeeper.GetModuleAddress(moduleName),
 | 
					 | 
				
			||||||
// 	)
 | 
					 | 
				
			||||||
// 	suite.Equal(coins, balance, fmt.Sprintf("expected module account balance to equal coins %s, but got %s", coins, balance))
 | 
					 | 
				
			||||||
// }
 | 
					 | 
				
			||||||
 | 
				
			|||||||
@ -17,7 +17,6 @@ import (
 | 
				
			|||||||
	savingskeeper "github.com/kava-labs/kava/x/savings/keeper"
 | 
						savingskeeper "github.com/kava-labs/kava/x/savings/keeper"
 | 
				
			||||||
	savingstypes "github.com/kava-labs/kava/x/savings/types"
 | 
						savingstypes "github.com/kava-labs/kava/x/savings/types"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/cosmos/cosmos-sdk/simapp"
 | 
					 | 
				
			||||||
	sdk "github.com/cosmos/cosmos-sdk/types"
 | 
						sdk "github.com/cosmos/cosmos-sdk/types"
 | 
				
			||||||
	authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper"
 | 
						authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper"
 | 
				
			||||||
	authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
 | 
						authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
 | 
				
			||||||
@ -205,7 +204,7 @@ func (suite *Suite) GetEvents() sdk.Events {
 | 
				
			|||||||
// AddCoinsToModule adds coins to the earn module account
 | 
					// AddCoinsToModule adds coins to the earn module account
 | 
				
			||||||
func (suite *Suite) AddCoinsToModule(amount sdk.Coins) {
 | 
					func (suite *Suite) AddCoinsToModule(amount sdk.Coins) {
 | 
				
			||||||
	// Does not use suite.BankKeeper.MintCoins as module account would not have permission to mint
 | 
						// Does not use suite.BankKeeper.MintCoins as module account would not have permission to mint
 | 
				
			||||||
	err := simapp.FundModuleAccount(suite.BankKeeper, suite.Ctx, types.ModuleName, amount)
 | 
						err := suite.App.FundModuleAccount(suite.Ctx, types.ModuleName, amount)
 | 
				
			||||||
	suite.Require().NoError(err)
 | 
						suite.Require().NoError(err)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -227,7 +226,7 @@ func (suite *Suite) CreateAccount(initialBalance sdk.Coins, index int) authtypes
 | 
				
			|||||||
	acc := ak.NewAccountWithAddress(suite.Ctx, addrs[index])
 | 
						acc := ak.NewAccountWithAddress(suite.Ctx, addrs[index])
 | 
				
			||||||
	ak.SetAccount(suite.Ctx, acc)
 | 
						ak.SetAccount(suite.Ctx, acc)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err := simapp.FundAccount(suite.BankKeeper, suite.Ctx, acc.GetAddress(), initialBalance)
 | 
						err := suite.App.FundAccount(suite.Ctx, acc.GetAddress(), initialBalance)
 | 
				
			||||||
	suite.Require().NoError(err)
 | 
						suite.Require().NoError(err)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return acc
 | 
						return acc
 | 
				
			||||||
@ -240,7 +239,7 @@ func (suite *Suite) NewAccountFromAddr(addr sdk.AccAddress, balance sdk.Coins) a
 | 
				
			|||||||
	acc := ak.NewAccountWithAddress(suite.Ctx, addr)
 | 
						acc := ak.NewAccountWithAddress(suite.Ctx, addr)
 | 
				
			||||||
	ak.SetAccount(suite.Ctx, acc)
 | 
						ak.SetAccount(suite.Ctx, acc)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err := simapp.FundAccount(suite.BankKeeper, suite.Ctx, acc.GetAddress(), balance)
 | 
						err := suite.App.FundAccount(suite.Ctx, acc.GetAddress(), balance)
 | 
				
			||||||
	suite.Require().NoError(err)
 | 
						suite.Require().NoError(err)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return acc
 | 
						return acc
 | 
				
			||||||
 | 
				
			|||||||
@ -5,7 +5,6 @@ import (
 | 
				
			|||||||
	"testing"
 | 
						"testing"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	sdk "github.com/cosmos/cosmos-sdk/types"
 | 
						sdk "github.com/cosmos/cosmos-sdk/types"
 | 
				
			||||||
	minttypes "github.com/cosmos/cosmos-sdk/x/mint/types"
 | 
					 | 
				
			||||||
	"github.com/stretchr/testify/suite"
 | 
						"github.com/stretchr/testify/suite"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/kava-labs/kava/x/evmutil/keeper"
 | 
						"github.com/kava-labs/kava/x/evmutil/keeper"
 | 
				
			||||||
@ -130,9 +129,8 @@ func (suite *invariantTestSuite) TestSmallBalances() {
 | 
				
			|||||||
	// add same number of ukava to avoid breaking other invariants
 | 
						// add same number of ukava to avoid breaking other invariants
 | 
				
			||||||
	amt := sdk.NewCoins(sdk.NewInt64Coin(keeper.CosmosDenom, 1))
 | 
						amt := sdk.NewCoins(sdk.NewInt64Coin(keeper.CosmosDenom, 1))
 | 
				
			||||||
	suite.Require().NoError(
 | 
						suite.Require().NoError(
 | 
				
			||||||
		suite.BankKeeper.MintCoins(suite.Ctx, minttypes.ModuleName, amt),
 | 
							suite.App.FundModuleAccount(suite.Ctx, types.ModuleName, amt),
 | 
				
			||||||
	)
 | 
						)
 | 
				
			||||||
	suite.BankKeeper.SendCoinsFromModuleToModule(suite.Ctx, minttypes.ModuleName, types.ModuleName, amt)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	message, broken := suite.runInvariant("small-balances", keeper.SmallBalancesInvariant)
 | 
						message, broken := suite.runInvariant("small-balances", keeper.SmallBalancesInvariant)
 | 
				
			||||||
	suite.Equal("evmutil: small balances broken invariant\nminor balances not all less than overflow\n", message)
 | 
						suite.Equal("evmutil: small balances broken invariant\nminor balances not all less than overflow\n", message)
 | 
				
			||||||
 | 
				
			|||||||
@ -14,7 +14,6 @@ import (
 | 
				
			|||||||
	authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper"
 | 
						authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper"
 | 
				
			||||||
	authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
 | 
						authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
 | 
				
			||||||
	bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper"
 | 
						bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper"
 | 
				
			||||||
	minttypes "github.com/cosmos/cosmos-sdk/x/mint/types"
 | 
					 | 
				
			||||||
	stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
 | 
						stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
 | 
				
			||||||
	"github.com/ethereum/go-ethereum/accounts/abi"
 | 
						"github.com/ethereum/go-ethereum/accounts/abi"
 | 
				
			||||||
	"github.com/ethereum/go-ethereum/common"
 | 
						"github.com/ethereum/go-ethereum/common"
 | 
				
			||||||
@ -39,6 +38,7 @@ import (
 | 
				
			|||||||
	"github.com/kava-labs/kava/app"
 | 
						"github.com/kava-labs/kava/app"
 | 
				
			||||||
	"github.com/kava-labs/kava/x/evmutil/keeper"
 | 
						"github.com/kava-labs/kava/x/evmutil/keeper"
 | 
				
			||||||
	"github.com/kava-labs/kava/x/evmutil/types"
 | 
						"github.com/kava-labs/kava/x/evmutil/types"
 | 
				
			||||||
 | 
						kavaminttypes "github.com/kava-labs/kava/x/kavamint/types"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type Suite struct {
 | 
					type Suite struct {
 | 
				
			||||||
@ -348,11 +348,11 @@ func (suite *Suite) SendTx(
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (suite *Suite) MintFeeCollector(coins sdk.Coins) {
 | 
					func (suite *Suite) MintFeeCollector(coins sdk.Coins) {
 | 
				
			||||||
	err := suite.App.GetBankKeeper().MintCoins(suite.Ctx, minttypes.ModuleName, coins)
 | 
						err := suite.App.GetBankKeeper().MintCoins(suite.Ctx, kavaminttypes.ModuleAccountName, coins)
 | 
				
			||||||
	suite.Require().NoError(err)
 | 
						suite.Require().NoError(err)
 | 
				
			||||||
	err = suite.App.GetBankKeeper().SendCoinsFromModuleToModule(
 | 
						err = suite.App.GetBankKeeper().SendCoinsFromModuleToModule(
 | 
				
			||||||
		suite.Ctx,
 | 
							suite.Ctx,
 | 
				
			||||||
		minttypes.ModuleName,
 | 
							kavaminttypes.ModuleAccountName,
 | 
				
			||||||
		authtypes.FeeCollectorName,
 | 
							authtypes.FeeCollectorName,
 | 
				
			||||||
		coins,
 | 
							coins,
 | 
				
			||||||
	)
 | 
						)
 | 
				
			||||||
 | 
				
			|||||||
@ -73,11 +73,9 @@ func (suite *BasicAccumulatorTestSuite) SetupTest() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	stakingBuilder := testutil.NewStakingGenesisBuilder()
 | 
						stakingBuilder := testutil.NewStakingGenesisBuilder()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	mintBuilder := testutil.NewMintGenesisBuilder().
 | 
						kavamintBuilder := testutil.NewKavamintGenesisBuilder().
 | 
				
			||||||
		WithInflationMax(sdk.OneDec()).
 | 
							WithStakingRewardsApy(sdk.MustNewDecFromStr("0.2")).
 | 
				
			||||||
		WithInflationMin(sdk.OneDec()).
 | 
							WithPreviousBlockTime(suite.GenesisTime)
 | 
				
			||||||
		WithMinter(sdk.OneDec(), sdk.ZeroDec()).
 | 
					 | 
				
			||||||
		WithMintDenom("ukava")
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	suite.StartChainWithBuilders(
 | 
						suite.StartChainWithBuilders(
 | 
				
			||||||
		authBuilder,
 | 
							authBuilder,
 | 
				
			||||||
@ -85,7 +83,7 @@ func (suite *BasicAccumulatorTestSuite) SetupTest() {
 | 
				
			|||||||
		savingsBuilder,
 | 
							savingsBuilder,
 | 
				
			||||||
		earnBuilder,
 | 
							earnBuilder,
 | 
				
			||||||
		stakingBuilder,
 | 
							stakingBuilder,
 | 
				
			||||||
		mintBuilder,
 | 
							kavamintBuilder,
 | 
				
			||||||
	)
 | 
						)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	suite.pool = swaptypes.PoolID(poolDenomA, poolDenomB)
 | 
						suite.pool = swaptypes.PoolID(poolDenomA, poolDenomB)
 | 
				
			||||||
 | 
				
			|||||||
@ -65,11 +65,9 @@ func (suite *AccumulateEarnRewardsIntegrationTests) SetupTest() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	stakingBuilder := testutil.NewStakingGenesisBuilder()
 | 
						stakingBuilder := testutil.NewStakingGenesisBuilder()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	mintBuilder := testutil.NewMintGenesisBuilder().
 | 
						kavamintBuilder := testutil.NewKavamintGenesisBuilder().
 | 
				
			||||||
		WithInflationMax(sdk.OneDec()).
 | 
							WithStakingRewardsApy(sdk.MustNewDecFromStr("0.2")).
 | 
				
			||||||
		WithInflationMin(sdk.OneDec()).
 | 
							WithPreviousBlockTime(suite.GenesisTime)
 | 
				
			||||||
		WithMinter(sdk.OneDec(), sdk.ZeroDec()).
 | 
					 | 
				
			||||||
		WithMintDenom("ukava")
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	suite.StartChainWithBuilders(
 | 
						suite.StartChainWithBuilders(
 | 
				
			||||||
		authBuilder,
 | 
							authBuilder,
 | 
				
			||||||
@ -77,7 +75,7 @@ func (suite *AccumulateEarnRewardsIntegrationTests) SetupTest() {
 | 
				
			|||||||
		savingsBuilder,
 | 
							savingsBuilder,
 | 
				
			||||||
		earnBuilder,
 | 
							earnBuilder,
 | 
				
			||||||
		stakingBuilder,
 | 
							stakingBuilder,
 | 
				
			||||||
		mintBuilder,
 | 
							kavamintBuilder,
 | 
				
			||||||
	)
 | 
						)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -316,7 +314,7 @@ func (suite *AccumulateEarnRewardsIntegrationTests) TestStateUpdatedWhenBlockTim
 | 
				
			|||||||
		},
 | 
							},
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			CollateralType: "ukava",
 | 
								CollateralType: "ukava",
 | 
				
			||||||
			RewardFactor:   d("4.154285714285714285").Add(stakingRewardIndexes0),
 | 
								RewardFactor:   d("4.154285714285714286").Add(stakingRewardIndexes0),
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -63,11 +63,9 @@ func (suite *EarnAccumulatorStakingRewardsTestSuite) SetupTest() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	stakingBuilder := testutil.NewStakingGenesisBuilder()
 | 
						stakingBuilder := testutil.NewStakingGenesisBuilder()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	mintBuilder := testutil.NewMintGenesisBuilder().
 | 
						kavamintBuilder := testutil.NewKavamintGenesisBuilder().
 | 
				
			||||||
		WithInflationMax(sdk.OneDec()).
 | 
							WithStakingRewardsApy(sdk.MustNewDecFromStr("0.2")).
 | 
				
			||||||
		WithInflationMin(sdk.OneDec()).
 | 
							WithPreviousBlockTime(suite.GenesisTime)
 | 
				
			||||||
		WithMinter(sdk.OneDec(), sdk.ZeroDec()).
 | 
					 | 
				
			||||||
		WithMintDenom("ukava")
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	suite.StartChainWithBuilders(
 | 
						suite.StartChainWithBuilders(
 | 
				
			||||||
		authBuilder,
 | 
							authBuilder,
 | 
				
			||||||
@ -75,7 +73,7 @@ func (suite *EarnAccumulatorStakingRewardsTestSuite) SetupTest() {
 | 
				
			|||||||
		savingsBuilder,
 | 
							savingsBuilder,
 | 
				
			||||||
		earnBuilder,
 | 
							earnBuilder,
 | 
				
			||||||
		stakingBuilder,
 | 
							stakingBuilder,
 | 
				
			||||||
		mintBuilder,
 | 
							kavamintBuilder,
 | 
				
			||||||
	)
 | 
						)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -136,6 +134,7 @@ func (suite *EarnAccumulatorStakingRewardsTestSuite) TestStakingRewardsDistribut
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	suite.keeper.Store.SetRewardAccrualTime(suite.Ctx, types.CLAIM_TYPE_EARN, vaultDenom1, suite.Ctx.BlockTime())
 | 
						suite.keeper.Store.SetRewardAccrualTime(suite.Ctx, types.CLAIM_TYPE_EARN, vaultDenom1, suite.Ctx.BlockTime())
 | 
				
			||||||
	suite.keeper.Store.SetRewardAccrualTime(suite.Ctx, types.CLAIM_TYPE_EARN, vaultDenom2, suite.Ctx.BlockTime())
 | 
						suite.keeper.Store.SetRewardAccrualTime(suite.Ctx, types.CLAIM_TYPE_EARN, vaultDenom2, suite.Ctx.BlockTime())
 | 
				
			||||||
 | 
						suite.App.GetKavamintKeeper().SetPreviousBlockTime(suite.Ctx, suite.Ctx.BlockTime())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	val := suite.GetAbciValidator(suite.valAddrs[0])
 | 
						val := suite.GetAbciValidator(suite.valAddrs[0])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -31,7 +31,7 @@ type Keeper struct {
 | 
				
			|||||||
	Store    store.IncentiveStore
 | 
						Store    store.IncentiveStore
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Keepers used for APY queries
 | 
						// Keepers used for APY queries
 | 
				
			||||||
	mintKeeper      types.MintKeeper
 | 
						kavamintKeeper  types.KavamintKeeper
 | 
				
			||||||
	distrKeeper     types.DistrKeeper
 | 
						distrKeeper     types.DistrKeeper
 | 
				
			||||||
	pricefeedKeeper types.PricefeedKeeper
 | 
						pricefeedKeeper types.PricefeedKeeper
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -41,7 +41,7 @@ func NewKeeper(
 | 
				
			|||||||
	cdc codec.Codec, key sdk.StoreKey, paramstore types.ParamSubspace, bk types.BankKeeper,
 | 
						cdc codec.Codec, key sdk.StoreKey, paramstore types.ParamSubspace, bk types.BankKeeper,
 | 
				
			||||||
	cdpk types.CdpKeeper, hk types.HardKeeper, ak types.AccountKeeper, stk types.StakingKeeper,
 | 
						cdpk types.CdpKeeper, hk types.HardKeeper, ak types.AccountKeeper, stk types.StakingKeeper,
 | 
				
			||||||
	swpk types.SwapKeeper, svk types.SavingsKeeper, lqk types.LiquidKeeper, ek types.EarnKeeper,
 | 
						swpk types.SwapKeeper, svk types.SavingsKeeper, lqk types.LiquidKeeper, ek types.EarnKeeper,
 | 
				
			||||||
	mk types.MintKeeper, dk types.DistrKeeper, pfk types.PricefeedKeeper,
 | 
						kmk types.KavamintKeeper, dk types.DistrKeeper, pfk types.PricefeedKeeper,
 | 
				
			||||||
) Keeper {
 | 
					) Keeper {
 | 
				
			||||||
	if !paramstore.HasKeyTable() {
 | 
						if !paramstore.HasKeyTable() {
 | 
				
			||||||
		paramstore = paramstore.WithKeyTable(types.ParamKeyTable())
 | 
							paramstore = paramstore.WithKeyTable(types.ParamKeyTable())
 | 
				
			||||||
@ -67,7 +67,7 @@ func NewKeeper(
 | 
				
			|||||||
		),
 | 
							),
 | 
				
			||||||
		Store: store.NewIncentiveStore(cdc, key),
 | 
							Store: store.NewIncentiveStore(cdc, key),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		mintKeeper:      mk,
 | 
							kavamintKeeper:  kmk,
 | 
				
			||||||
		distrKeeper:     dk,
 | 
							distrKeeper:     dk,
 | 
				
			||||||
		pricefeedKeeper: pfk,
 | 
							pricefeedKeeper: pfk,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
				
			|||||||
@ -8,11 +8,11 @@ import (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	"github.com/cosmos/cosmos-sdk/x/distribution"
 | 
						"github.com/cosmos/cosmos-sdk/x/distribution"
 | 
				
			||||||
	distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types"
 | 
						distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types"
 | 
				
			||||||
	"github.com/cosmos/cosmos-sdk/x/mint"
 | 
					 | 
				
			||||||
	earntypes "github.com/kava-labs/kava/x/earn/types"
 | 
						earntypes "github.com/kava-labs/kava/x/earn/types"
 | 
				
			||||||
	"github.com/kava-labs/kava/x/incentive"
 | 
						"github.com/kava-labs/kava/x/incentive"
 | 
				
			||||||
	"github.com/kava-labs/kava/x/incentive/testutil"
 | 
						"github.com/kava-labs/kava/x/incentive/testutil"
 | 
				
			||||||
	"github.com/kava-labs/kava/x/incentive/types"
 | 
						"github.com/kava-labs/kava/x/incentive/types"
 | 
				
			||||||
 | 
						"github.com/kava-labs/kava/x/kavamint"
 | 
				
			||||||
	liquidtypes "github.com/kava-labs/kava/x/liquid/types"
 | 
						liquidtypes "github.com/kava-labs/kava/x/liquid/types"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -53,7 +53,7 @@ func (suite *HandlerTestSuite) TestEarnLiquidClaim() {
 | 
				
			|||||||
	// bk := suite.App.GetBankKeeper()
 | 
						// bk := suite.App.GetBankKeeper()
 | 
				
			||||||
	sk := suite.App.GetStakingKeeper()
 | 
						sk := suite.App.GetStakingKeeper()
 | 
				
			||||||
	lq := suite.App.GetLiquidKeeper()
 | 
						lq := suite.App.GetLiquidKeeper()
 | 
				
			||||||
	mk := suite.App.GetMintKeeper()
 | 
						mk := suite.App.GetKavamintKeeper()
 | 
				
			||||||
	dk := suite.App.GetDistrKeeper()
 | 
						dk := suite.App.GetDistrKeeper()
 | 
				
			||||||
	ik := suite.App.GetIncentiveKeeper()
 | 
						ik := suite.App.GetIncentiveKeeper()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -62,9 +62,9 @@ func (suite *HandlerTestSuite) TestEarnLiquidClaim() {
 | 
				
			|||||||
	suite.Require().True(found)
 | 
						suite.Require().True(found)
 | 
				
			||||||
	suite.Require().Equal("bkava", period.CollateralType)
 | 
						suite.Require().Equal("bkava", period.CollateralType)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Use ukava for mint denom
 | 
						// Ensure nonzero staking APY
 | 
				
			||||||
	mParams := mk.GetParams(suite.Ctx)
 | 
						mParams := mk.GetParams(suite.Ctx)
 | 
				
			||||||
	mParams.MintDenom = "ukava"
 | 
						mParams.StakingRewardsApy = sdk.NewDecWithPrec(20, 2)
 | 
				
			||||||
	mk.SetParams(suite.Ctx, mParams)
 | 
						mk.SetParams(suite.Ctx, mParams)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	bkavaDenom1 := lq.GetLiquidStakingTokenDenom(valAddr1)
 | 
						bkavaDenom1 := lq.GetLiquidStakingTokenDenom(valAddr1)
 | 
				
			||||||
@ -138,10 +138,7 @@ func (suite *HandlerTestSuite) TestEarnLiquidClaim() {
 | 
				
			|||||||
		WithBlockTime(suite.Ctx.BlockTime().Add(7 * time.Second))
 | 
							WithBlockTime(suite.Ctx.BlockTime().Add(7 * time.Second))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Mint tokens
 | 
						// Mint tokens
 | 
				
			||||||
	mint.BeginBlocker(
 | 
						kavamint.BeginBlocker(suite.Ctx, suite.App.GetKavamintKeeper())
 | 
				
			||||||
		suite.Ctx,
 | 
					 | 
				
			||||||
		suite.App.GetMintKeeper(),
 | 
					 | 
				
			||||||
	)
 | 
					 | 
				
			||||||
	// Distribute to validators, block needs votes
 | 
						// Distribute to validators, block needs votes
 | 
				
			||||||
	distribution.BeginBlocker(
 | 
						distribution.BeginBlocker(
 | 
				
			||||||
		suite.Ctx,
 | 
							suite.Ctx,
 | 
				
			||||||
@ -166,10 +163,10 @@ func (suite *HandlerTestSuite) TestEarnLiquidClaim() {
 | 
				
			|||||||
	// Zero rewards since this block is the same as the block it was last claimed
 | 
						// Zero rewards since this block is the same as the block it was last claimed
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// This needs to run **after** staking rewards are minted/distributed in
 | 
						// This needs to run **after** staking rewards are minted/distributed in
 | 
				
			||||||
	// x/mint + x/distribution but **before** the x/incentive BeginBlocker.
 | 
						// x/kavamint + x/distribution but **before** the x/incentive BeginBlocker.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Order of operations:
 | 
						// Order of operations:
 | 
				
			||||||
	// 1. x/mint + x/distribution BeginBlocker
 | 
						// 1. x/kavamint + x/distribution BeginBlocker
 | 
				
			||||||
	// 2. CalculateDelegationRewards
 | 
						// 2. CalculateDelegationRewards
 | 
				
			||||||
	// 3. x/incentive BeginBlocker to claim staking rewards
 | 
						// 3. x/incentive BeginBlocker to claim staking rewards
 | 
				
			||||||
	delegationRewards := dk.CalculateDelegationRewards(suite.Ctx, validator1, delegation, endingPeriod)
 | 
						delegationRewards := dk.CalculateDelegationRewards(suite.Ctx, validator1, delegation, endingPeriod)
 | 
				
			||||||
 | 
				
			|||||||
@ -422,18 +422,8 @@ func queryGetAPYs(ctx sdk.Context, req abci.RequestQuery, k Keeper, legacyQuerie
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// GetStakingAPR returns the total APR for staking and incentive rewards
 | 
					// GetStakingAPR returns the total APR for staking and incentive rewards
 | 
				
			||||||
func GetStakingAPR(ctx sdk.Context, k Keeper, params types.Params) (sdk.Dec, error) {
 | 
					func GetStakingAPR(ctx sdk.Context, k Keeper, params types.Params) (sdk.Dec, error) {
 | 
				
			||||||
	// Get staking APR + incentive APR
 | 
						// Get staking APR
 | 
				
			||||||
	inflationRate := k.mintKeeper.GetMinter(ctx).Inflation
 | 
						stakingAPR := k.kavamintKeeper.GetStakingApy(ctx)
 | 
				
			||||||
	communityTax := k.distrKeeper.GetCommunityTax(ctx)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	bondedTokens := k.stakingKeeper.TotalBondedTokens(ctx)
 | 
					 | 
				
			||||||
	circulatingSupply := k.bankKeeper.GetSupply(ctx, types.BondDenom)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// Staking APR = (Inflation Rate * (1 - Community Tax)) / (Bonded Tokens / Circulating Supply)
 | 
					 | 
				
			||||||
	stakingAPR := inflationRate.
 | 
					 | 
				
			||||||
		Mul(sdk.OneDec().Sub(communityTax)).
 | 
					 | 
				
			||||||
		Quo(bondedTokens.ToDec().
 | 
					 | 
				
			||||||
			Quo(circulatingSupply.Amount.ToDec()))
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get incentive APR
 | 
						// Get incentive APR
 | 
				
			||||||
	bkavaRewardPeriod, found := params.EarnRewardPeriods.GetMultiRewardPeriod(liquidtypes.DefaultDerivativeDenom)
 | 
						bkavaRewardPeriod, found := params.EarnRewardPeriods.GetMultiRewardPeriod(liquidtypes.DefaultDerivativeDenom)
 | 
				
			||||||
 | 
				
			|||||||
@ -5,7 +5,6 @@ import (
 | 
				
			|||||||
	"time"
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	sdk "github.com/cosmos/cosmos-sdk/types"
 | 
						sdk "github.com/cosmos/cosmos-sdk/types"
 | 
				
			||||||
	minttypes "github.com/cosmos/cosmos-sdk/x/mint/types"
 | 
					 | 
				
			||||||
	pricefeedtypes "github.com/kava-labs/kava/x/pricefeed/types"
 | 
						pricefeedtypes "github.com/kava-labs/kava/x/pricefeed/types"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	earntypes "github.com/kava-labs/kava/x/earn/types"
 | 
						earntypes "github.com/kava-labs/kava/x/earn/types"
 | 
				
			||||||
@ -30,6 +29,18 @@ func (suite *QuerierTestSuite) TestGetStakingAPR() {
 | 
				
			|||||||
	liquidStakedTokens := int64(60_000_000_000000)
 | 
						liquidStakedTokens := int64(60_000_000_000000)
 | 
				
			||||||
	totalSupply := int64(289_138_414_286684)
 | 
						totalSupply := int64(289_138_414_286684)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// inflation values below are used to regression test the switch from x/mint to x/kavamint
 | 
				
			||||||
 | 
						// rather than define the total inflation w/ a community tax, we now directly define
 | 
				
			||||||
 | 
						// inflation for staking rewards & inflation for the community pool.
 | 
				
			||||||
 | 
						// derive these values from the above values in order to verify no change to output
 | 
				
			||||||
 | 
						bondedRatio := sdk.NewDec(bondedTokens).Quo(sdk.NewDec(totalSupply))
 | 
				
			||||||
 | 
						communityInflation := inflation.
 | 
				
			||||||
 | 
							Mul(communityTax).
 | 
				
			||||||
 | 
							Quo(bondedRatio)
 | 
				
			||||||
 | 
						stakingRewardsApy := inflation.
 | 
				
			||||||
 | 
							Mul(sdk.OneDec().Sub(communityTax)).
 | 
				
			||||||
 | 
							Quo(bondedRatio)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	usdcDenom := "erc20/multichain/usdc"
 | 
						usdcDenom := "erc20/multichain/usdc"
 | 
				
			||||||
	usdcSupply := int64(2_500_000_000000)
 | 
						usdcSupply := int64(2_500_000_000000)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -38,12 +49,10 @@ func (suite *QuerierTestSuite) TestGetStakingAPR() {
 | 
				
			|||||||
		addVault(usdcDenom, earntypes.NewVaultShare(usdcDenom, sdk.NewDec(usdcSupply)))
 | 
							addVault(usdcDenom, earntypes.NewVaultShare(usdcDenom, sdk.NewDec(usdcSupply)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	suite.keeper = suite.NewTestKeeper(&fakeParamSubspace{}).
 | 
						suite.keeper = suite.NewTestKeeper(&fakeParamSubspace{}).
 | 
				
			||||||
		WithDistrKeeper(
 | 
							WithKavamintKeeper(
 | 
				
			||||||
			newFakeDistrKeeper().setCommunityTax(communityTax),
 | 
								newFakeKavamintKeeper().
 | 
				
			||||||
		).
 | 
									setCommunityInflation(communityInflation).
 | 
				
			||||||
		WithMintKeeper(
 | 
									setStakingApy(stakingRewardsApy),
 | 
				
			||||||
			newFakeMintKeeper().
 | 
					 | 
				
			||||||
				setMinter(minttypes.NewMinter(inflation, sdk.OneDec())),
 | 
					 | 
				
			||||||
		).
 | 
							).
 | 
				
			||||||
		WithStakingKeeper(
 | 
							WithStakingKeeper(
 | 
				
			||||||
			newFakeStakingKeeper().addBondedTokens(bondedTokens),
 | 
								newFakeStakingKeeper().addBondedTokens(bondedTokens),
 | 
				
			||||||
 | 
				
			|||||||
@ -64,11 +64,9 @@ func (suite *AccumulateEarnRewardsIntegrationTests) SetupTest() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	stakingBuilder := testutil.NewStakingGenesisBuilder()
 | 
						stakingBuilder := testutil.NewStakingGenesisBuilder()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	mintBuilder := testutil.NewMintGenesisBuilder().
 | 
						kavamintBuilder := testutil.NewKavamintGenesisBuilder().
 | 
				
			||||||
		WithInflationMax(sdk.OneDec()).
 | 
							WithStakingRewardsApy(sdk.MustNewDecFromStr("0.2")).
 | 
				
			||||||
		WithInflationMin(sdk.OneDec()).
 | 
							WithPreviousBlockTime(suite.GenesisTime)
 | 
				
			||||||
		WithMinter(sdk.OneDec(), sdk.ZeroDec()).
 | 
					 | 
				
			||||||
		WithMintDenom("ukava")
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	suite.StartChainWithBuilders(
 | 
						suite.StartChainWithBuilders(
 | 
				
			||||||
		authBuilder,
 | 
							authBuilder,
 | 
				
			||||||
@ -76,7 +74,7 @@ func (suite *AccumulateEarnRewardsIntegrationTests) SetupTest() {
 | 
				
			|||||||
		savingsBuilder,
 | 
							savingsBuilder,
 | 
				
			||||||
		earnBuilder,
 | 
							earnBuilder,
 | 
				
			||||||
		stakingBuilder,
 | 
							stakingBuilder,
 | 
				
			||||||
		mintBuilder,
 | 
							kavamintBuilder,
 | 
				
			||||||
	)
 | 
						)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -313,7 +311,7 @@ func (suite *AccumulateEarnRewardsIntegrationTests) TestStateUpdatedWhenBlockTim
 | 
				
			|||||||
		},
 | 
							},
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			CollateralType: "ukava",
 | 
								CollateralType: "ukava",
 | 
				
			||||||
			RewardFactor:   d("4.154285714285714285").Add(stakingRewardIndexes0),
 | 
								RewardFactor:   d("4.154285714285714286").Add(stakingRewardIndexes0),
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -63,13 +63,9 @@ func (suite *EarnStakingRewardsIntegrationTestSuite) SetupTest() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	stakingBuilder := testutil.NewStakingGenesisBuilder()
 | 
						stakingBuilder := testutil.NewStakingGenesisBuilder()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	mintBuilder := testutil.NewMintGenesisBuilder().
 | 
						kavamintBuilder := testutil.NewKavamintGenesisBuilder().
 | 
				
			||||||
		WithInflationMax(sdk.OneDec()).
 | 
							WithStakingRewardsApy(sdk.MustNewDecFromStr("0.2")).
 | 
				
			||||||
		WithInflationMin(sdk.OneDec()).
 | 
							WithPreviousBlockTime(suite.GenesisTime)
 | 
				
			||||||
		WithMinter(sdk.OneDec(), sdk.ZeroDec()).
 | 
					 | 
				
			||||||
		WithMintDenom("ukava")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	kavamintBuilder := testutil.NewKavamintGenesisBuilder()
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	suite.StartChainWithBuilders(
 | 
						suite.StartChainWithBuilders(
 | 
				
			||||||
		authBuilder,
 | 
							authBuilder,
 | 
				
			||||||
@ -77,7 +73,6 @@ func (suite *EarnStakingRewardsIntegrationTestSuite) SetupTest() {
 | 
				
			|||||||
		savingsBuilder,
 | 
							savingsBuilder,
 | 
				
			||||||
		earnBuilder,
 | 
							earnBuilder,
 | 
				
			||||||
		stakingBuilder,
 | 
							stakingBuilder,
 | 
				
			||||||
		mintBuilder,
 | 
					 | 
				
			||||||
		kavamintBuilder,
 | 
							kavamintBuilder,
 | 
				
			||||||
	)
 | 
						)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -139,6 +134,7 @@ func (suite *EarnStakingRewardsIntegrationTestSuite) TestStakingRewardsDistribut
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	suite.keeper.SetEarnRewardAccrualTime(suite.Ctx, vaultDenom1, suite.Ctx.BlockTime())
 | 
						suite.keeper.SetEarnRewardAccrualTime(suite.Ctx, vaultDenom1, suite.Ctx.BlockTime())
 | 
				
			||||||
	suite.keeper.SetEarnRewardAccrualTime(suite.Ctx, vaultDenom2, suite.Ctx.BlockTime())
 | 
						suite.keeper.SetEarnRewardAccrualTime(suite.Ctx, vaultDenom2, suite.Ctx.BlockTime())
 | 
				
			||||||
 | 
						suite.App.GetKavamintKeeper().SetPreviousBlockTime(suite.Ctx, suite.Ctx.BlockTime())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	val := suite.GetAbciValidator(suite.valAddrs[0])
 | 
						val := suite.GetAbciValidator(suite.valAddrs[0])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -8,7 +8,6 @@ import (
 | 
				
			|||||||
	"github.com/cosmos/cosmos-sdk/codec"
 | 
						"github.com/cosmos/cosmos-sdk/codec"
 | 
				
			||||||
	"github.com/cosmos/cosmos-sdk/store"
 | 
						"github.com/cosmos/cosmos-sdk/store"
 | 
				
			||||||
	sdk "github.com/cosmos/cosmos-sdk/types"
 | 
						sdk "github.com/cosmos/cosmos-sdk/types"
 | 
				
			||||||
	minttypes "github.com/cosmos/cosmos-sdk/x/mint/types"
 | 
					 | 
				
			||||||
	paramtypes "github.com/cosmos/cosmos-sdk/x/params/types"
 | 
						paramtypes "github.com/cosmos/cosmos-sdk/x/params/types"
 | 
				
			||||||
	stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
 | 
						stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
 | 
				
			||||||
	pricefeedtypes "github.com/kava-labs/kava/x/pricefeed/types"
 | 
						pricefeedtypes "github.com/kava-labs/kava/x/pricefeed/types"
 | 
				
			||||||
@ -160,7 +159,7 @@ type TestKeeperBuilder struct {
 | 
				
			|||||||
	earnKeeper    types.EarnKeeper
 | 
						earnKeeper    types.EarnKeeper
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Keepers used for APY queries
 | 
						// Keepers used for APY queries
 | 
				
			||||||
	mintKeeper      types.MintKeeper
 | 
						kavamintKeeper  types.KavamintKeeper
 | 
				
			||||||
	distrKeeper     types.DistrKeeper
 | 
						distrKeeper     types.DistrKeeper
 | 
				
			||||||
	pricefeedKeeper types.PricefeedKeeper
 | 
						pricefeedKeeper types.PricefeedKeeper
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -185,7 +184,6 @@ func (suite *unitTester) NewTestKeeper(
 | 
				
			|||||||
		savingsKeeper:   nil,
 | 
							savingsKeeper:   nil,
 | 
				
			||||||
		liquidKeeper:    nil,
 | 
							liquidKeeper:    nil,
 | 
				
			||||||
		earnKeeper:      nil,
 | 
							earnKeeper:      nil,
 | 
				
			||||||
		mintKeeper:      nil,
 | 
					 | 
				
			||||||
		distrKeeper:     nil,
 | 
							distrKeeper:     nil,
 | 
				
			||||||
		pricefeedKeeper: nil,
 | 
							pricefeedKeeper: nil,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@ -211,8 +209,8 @@ func (tk *TestKeeperBuilder) WithStakingKeeper(k types.StakingKeeper) *TestKeepe
 | 
				
			|||||||
	return tk
 | 
						return tk
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (tk *TestKeeperBuilder) WithMintKeeper(k types.MintKeeper) *TestKeeperBuilder {
 | 
					func (tk *TestKeeperBuilder) WithKavamintKeeper(k types.KavamintKeeper) *TestKeeperBuilder {
 | 
				
			||||||
	tk.mintKeeper = k
 | 
						tk.kavamintKeeper = k
 | 
				
			||||||
	return tk
 | 
						return tk
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -231,7 +229,7 @@ func (tk *TestKeeperBuilder) Build() keeper.Keeper {
 | 
				
			|||||||
		tk.cdc, tk.key, tk.paramSubspace,
 | 
							tk.cdc, tk.key, tk.paramSubspace,
 | 
				
			||||||
		tk.bankKeeper, tk.cdpKeeper, tk.hardKeeper, tk.accountKeeper,
 | 
							tk.bankKeeper, tk.cdpKeeper, tk.hardKeeper, tk.accountKeeper,
 | 
				
			||||||
		tk.stakingKeeper, tk.swapKeeper, tk.savingsKeeper, tk.liquidKeeper,
 | 
							tk.stakingKeeper, tk.swapKeeper, tk.savingsKeeper, tk.liquidKeeper,
 | 
				
			||||||
		tk.earnKeeper, tk.mintKeeper, tk.distrKeeper, tk.pricefeedKeeper,
 | 
							tk.earnKeeper, tk.kavamintKeeper, tk.distrKeeper, tk.pricefeedKeeper,
 | 
				
			||||||
	)
 | 
						)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -649,23 +647,29 @@ func (k *fakeDistrKeeper) GetCommunityTax(ctx sdk.Context) (percent sdk.Dec) {
 | 
				
			|||||||
	return k.communityTax
 | 
						return k.communityTax
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type fakeMintKeeper struct {
 | 
					type fakeKavamintKeeper struct {
 | 
				
			||||||
	minter minttypes.Minter
 | 
						stakingApy         sdk.Dec
 | 
				
			||||||
 | 
						communityInflation sdk.Dec
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var _ types.MintKeeper = newFakeMintKeeper()
 | 
					var _ types.KavamintKeeper = newFakeKavamintKeeper()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func newFakeMintKeeper() *fakeMintKeeper {
 | 
					func newFakeKavamintKeeper() *fakeKavamintKeeper {
 | 
				
			||||||
	return &fakeMintKeeper{}
 | 
						return &fakeKavamintKeeper{}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (k *fakeMintKeeper) setMinter(minter minttypes.Minter) *fakeMintKeeper {
 | 
					func (k *fakeKavamintKeeper) setStakingApy(apy sdk.Dec) *fakeKavamintKeeper {
 | 
				
			||||||
	k.minter = minter
 | 
						k.stakingApy = apy
 | 
				
			||||||
	return k
 | 
						return k
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (k *fakeMintKeeper) GetMinter(ctx sdk.Context) (minter minttypes.Minter) {
 | 
					func (k *fakeKavamintKeeper) setCommunityInflation(inflation sdk.Dec) *fakeKavamintKeeper {
 | 
				
			||||||
	return k.minter
 | 
						k.communityInflation = inflation
 | 
				
			||||||
 | 
						return k
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (k *fakeKavamintKeeper) GetStakingApy(ctx sdk.Context) (apy sdk.Dec) {
 | 
				
			||||||
 | 
						return k.stakingApy
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type fakePricefeedKeeper struct {
 | 
					type fakePricefeedKeeper struct {
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +1,8 @@
 | 
				
			|||||||
package testutil
 | 
					package testutil
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"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/kava-labs/kava/app"
 | 
						"github.com/kava-labs/kava/app"
 | 
				
			||||||
@ -38,3 +40,20 @@ func (builder KavamintGenesisBuilder) BuildMarshalled(cdc codec.JSONCodec) app.G
 | 
				
			|||||||
		kavaminttypes.ModuleName: cdc.MustMarshalJSON(&built),
 | 
							kavaminttypes.ModuleName: cdc.MustMarshalJSON(&built),
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (builder KavamintGenesisBuilder) WithPreviousBlockTime(t time.Time) KavamintGenesisBuilder {
 | 
				
			||||||
 | 
						builder.PreviousBlockTime = t
 | 
				
			||||||
 | 
						return builder
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (builder KavamintGenesisBuilder) WithStakingRewardsApy(apy sdk.Dec) KavamintGenesisBuilder {
 | 
				
			||||||
 | 
						builder.Params.StakingRewardsApy = apy
 | 
				
			||||||
 | 
						return builder
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (builder KavamintGenesisBuilder) WithCommunityPoolInflation(
 | 
				
			||||||
 | 
						inflation sdk.Dec,
 | 
				
			||||||
 | 
					) KavamintGenesisBuilder {
 | 
				
			||||||
 | 
						builder.Params.CommunityPoolInflation = inflation
 | 
				
			||||||
 | 
						return builder
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -1,68 +0,0 @@
 | 
				
			|||||||
package testutil
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import (
 | 
					 | 
				
			||||||
	"github.com/cosmos/cosmos-sdk/codec"
 | 
					 | 
				
			||||||
	sdk "github.com/cosmos/cosmos-sdk/types"
 | 
					 | 
				
			||||||
	"github.com/kava-labs/kava/app"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	minttypes "github.com/cosmos/cosmos-sdk/x/mint/types"
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// MintGenesisBuilder is a tool for creating a mint genesis state.
 | 
					 | 
				
			||||||
// Helper methods add values onto a default genesis state.
 | 
					 | 
				
			||||||
// All methods are immutable and return updated copies of the builder.
 | 
					 | 
				
			||||||
type MintGenesisBuilder struct {
 | 
					 | 
				
			||||||
	minttypes.GenesisState
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
var _ GenesisBuilder = (*MintGenesisBuilder)(nil)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func NewMintGenesisBuilder() MintGenesisBuilder {
 | 
					 | 
				
			||||||
	gen := minttypes.DefaultGenesisState()
 | 
					 | 
				
			||||||
	gen.Params.MintDenom = "ukava"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return MintGenesisBuilder{
 | 
					 | 
				
			||||||
		GenesisState: *gen,
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func (builder MintGenesisBuilder) Build() minttypes.GenesisState {
 | 
					 | 
				
			||||||
	return builder.GenesisState
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func (builder MintGenesisBuilder) BuildMarshalled(cdc codec.JSONCodec) app.GenesisState {
 | 
					 | 
				
			||||||
	built := builder.Build()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return app.GenesisState{
 | 
					 | 
				
			||||||
		minttypes.ModuleName: cdc.MustMarshalJSON(&built),
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func (builder MintGenesisBuilder) WithMinter(
 | 
					 | 
				
			||||||
	inflation sdk.Dec,
 | 
					 | 
				
			||||||
	annualProvisions sdk.Dec,
 | 
					 | 
				
			||||||
) MintGenesisBuilder {
 | 
					 | 
				
			||||||
	builder.Minter = minttypes.NewMinter(inflation, annualProvisions)
 | 
					 | 
				
			||||||
	return builder
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func (builder MintGenesisBuilder) WithInflationMax(
 | 
					 | 
				
			||||||
	inflationMax sdk.Dec,
 | 
					 | 
				
			||||||
) MintGenesisBuilder {
 | 
					 | 
				
			||||||
	builder.Params.InflationMax = inflationMax
 | 
					 | 
				
			||||||
	return builder
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func (builder MintGenesisBuilder) WithInflationMin(
 | 
					 | 
				
			||||||
	inflationMin sdk.Dec,
 | 
					 | 
				
			||||||
) MintGenesisBuilder {
 | 
					 | 
				
			||||||
	builder.Params.InflationMin = inflationMin
 | 
					 | 
				
			||||||
	return builder
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func (builder MintGenesisBuilder) WithMintDenom(
 | 
					 | 
				
			||||||
	mintDenom string,
 | 
					 | 
				
			||||||
) MintGenesisBuilder {
 | 
					 | 
				
			||||||
	builder.Params.MintDenom = mintDenom
 | 
					 | 
				
			||||||
	return builder
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -3,7 +3,6 @@ package types
 | 
				
			|||||||
import (
 | 
					import (
 | 
				
			||||||
	sdk "github.com/cosmos/cosmos-sdk/types"
 | 
						sdk "github.com/cosmos/cosmos-sdk/types"
 | 
				
			||||||
	authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
 | 
						authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
 | 
				
			||||||
	minttypes "github.com/cosmos/cosmos-sdk/x/mint/types"
 | 
					 | 
				
			||||||
	paramtypes "github.com/cosmos/cosmos-sdk/x/params/types"
 | 
						paramtypes "github.com/cosmos/cosmos-sdk/x/params/types"
 | 
				
			||||||
	stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
 | 
						stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
 | 
				
			||||||
	cdptypes "github.com/kava-labs/kava/x/cdp/types"
 | 
						cdptypes "github.com/kava-labs/kava/x/cdp/types"
 | 
				
			||||||
@ -94,9 +93,9 @@ type AccountKeeper interface {
 | 
				
			|||||||
	GetModuleAccount(ctx sdk.Context, name string) authtypes.ModuleAccountI
 | 
						GetModuleAccount(ctx sdk.Context, name string) authtypes.ModuleAccountI
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// MintKeeper defines the required methods needed by this modules keeper
 | 
					// KavamintKeeper defines the required methods needed by this modules keeper
 | 
				
			||||||
type MintKeeper interface {
 | 
					type KavamintKeeper interface {
 | 
				
			||||||
	GetMinter(ctx sdk.Context) (minter minttypes.Minter)
 | 
						GetStakingApy(ctx sdk.Context) sdk.Dec
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// DistrKeeper defines the required methods needed by this modules keeper
 | 
					// DistrKeeper defines the required methods needed by this modules keeper
 | 
				
			||||||
 | 
				
			|||||||
@ -87,6 +87,12 @@ func (k Keeper) SetParams(ctx sdk.Context, params types.Params) {
 | 
				
			|||||||
	k.paramSpace.SetParamSet(ctx, ¶ms)
 | 
						k.paramSpace.SetParamSet(ctx, ¶ms)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// GetStakingApy returns the APY minted for staking rewards
 | 
				
			||||||
 | 
					func (k Keeper) GetStakingApy(ctx sdk.Context) sdk.Dec {
 | 
				
			||||||
 | 
						params := k.GetParams(ctx)
 | 
				
			||||||
 | 
						return params.StakingRewardsApy
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// BondDenom implements an alias call to the underlying staking keeper's BondDenom.
 | 
					// BondDenom implements an alias call to the underlying staking keeper's BondDenom.
 | 
				
			||||||
func (k Keeper) BondDenom(ctx sdk.Context) string {
 | 
					func (k Keeper) BondDenom(ctx sdk.Context) string {
 | 
				
			||||||
	return k.stakingKeeper.BondDenom(ctx)
 | 
						return k.stakingKeeper.BondDenom(ctx)
 | 
				
			||||||
 | 
				
			|||||||
@ -6,7 +6,6 @@ import (
 | 
				
			|||||||
	"testing"
 | 
						"testing"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/cosmos/cosmos-sdk/crypto/keys/ed25519"
 | 
						"github.com/cosmos/cosmos-sdk/crypto/keys/ed25519"
 | 
				
			||||||
	"github.com/cosmos/cosmos-sdk/simapp"
 | 
					 | 
				
			||||||
	sdk "github.com/cosmos/cosmos-sdk/types"
 | 
						sdk "github.com/cosmos/cosmos-sdk/types"
 | 
				
			||||||
	authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
 | 
						authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
 | 
				
			||||||
	vestingtypes "github.com/cosmos/cosmos-sdk/x/auth/vesting/types"
 | 
						vestingtypes "github.com/cosmos/cosmos-sdk/x/auth/vesting/types"
 | 
				
			||||||
@ -60,7 +59,7 @@ func (suite *KeeperTestSuite) CreateAccountWithAddress(addr sdk.AccAddress, init
 | 
				
			|||||||
	acc := ak.NewAccountWithAddress(suite.Ctx, addr)
 | 
						acc := ak.NewAccountWithAddress(suite.Ctx, addr)
 | 
				
			||||||
	ak.SetAccount(suite.Ctx, acc)
 | 
						ak.SetAccount(suite.Ctx, acc)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err := simapp.FundAccount(suite.BankKeeper, suite.Ctx, acc.GetAddress(), initialBalance)
 | 
						err := suite.App.FundAccount(suite.Ctx, acc.GetAddress(), initialBalance)
 | 
				
			||||||
	suite.Require().NoError(err)
 | 
						suite.Require().NoError(err)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return acc
 | 
						return acc
 | 
				
			||||||
@ -87,7 +86,7 @@ func (suite *KeeperTestSuite) CreateVestingAccountWithAddress(addr sdk.AccAddres
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// AddCoinsToModule adds coins to the a module account, creating it if it doesn't exist.
 | 
					// AddCoinsToModule adds coins to the a module account, creating it if it doesn't exist.
 | 
				
			||||||
func (suite *KeeperTestSuite) AddCoinsToModule(module string, amount sdk.Coins) {
 | 
					func (suite *KeeperTestSuite) AddCoinsToModule(module string, amount sdk.Coins) {
 | 
				
			||||||
	err := simapp.FundModuleAccount(suite.BankKeeper, suite.Ctx, module, amount)
 | 
						err := suite.App.FundModuleAccount(suite.Ctx, module, amount)
 | 
				
			||||||
	suite.Require().NoError(err)
 | 
						suite.Require().NoError(err)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -5,7 +5,6 @@ import (
 | 
				
			|||||||
	"reflect"
 | 
						"reflect"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/cosmos/cosmos-sdk/crypto/keys/ed25519"
 | 
						"github.com/cosmos/cosmos-sdk/crypto/keys/ed25519"
 | 
				
			||||||
	"github.com/cosmos/cosmos-sdk/simapp"
 | 
					 | 
				
			||||||
	sdk "github.com/cosmos/cosmos-sdk/types"
 | 
						sdk "github.com/cosmos/cosmos-sdk/types"
 | 
				
			||||||
	authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
 | 
						authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
 | 
				
			||||||
	vestingtypes "github.com/cosmos/cosmos-sdk/x/auth/vesting/types"
 | 
						vestingtypes "github.com/cosmos/cosmos-sdk/x/auth/vesting/types"
 | 
				
			||||||
@ -58,7 +57,7 @@ func (suite *Suite) CreateAccountWithAddress(addr sdk.AccAddress, initialBalance
 | 
				
			|||||||
	acc := ak.NewAccountWithAddress(suite.Ctx, addr)
 | 
						acc := ak.NewAccountWithAddress(suite.Ctx, addr)
 | 
				
			||||||
	ak.SetAccount(suite.Ctx, acc)
 | 
						ak.SetAccount(suite.Ctx, acc)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err := simapp.FundAccount(suite.BankKeeper, suite.Ctx, acc.GetAddress(), initialBalance)
 | 
						err := suite.App.FundAccount(suite.Ctx, acc.GetAddress(), initialBalance)
 | 
				
			||||||
	suite.Require().NoError(err)
 | 
						suite.Require().NoError(err)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return acc
 | 
						return acc
 | 
				
			||||||
@ -85,7 +84,7 @@ func (suite *Suite) CreateVestingAccountWithAddress(addr sdk.AccAddress, initial
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// AddCoinsToModule adds coins to the a module account, creating it if it doesn't exist.
 | 
					// AddCoinsToModule adds coins to the a module account, creating it if it doesn't exist.
 | 
				
			||||||
func (suite *Suite) AddCoinsToModule(module string, amount sdk.Coins) {
 | 
					func (suite *Suite) AddCoinsToModule(module string, amount sdk.Coins) {
 | 
				
			||||||
	err := simapp.FundModuleAccount(suite.BankKeeper, suite.Ctx, module, amount)
 | 
						err := suite.App.FundModuleAccount(suite.Ctx, module, amount)
 | 
				
			||||||
	suite.Require().NoError(err)
 | 
						suite.Require().NoError(err)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -7,7 +7,6 @@ import (
 | 
				
			|||||||
	tmproto "github.com/tendermint/tendermint/proto/tendermint/types"
 | 
						tmproto "github.com/tendermint/tendermint/proto/tendermint/types"
 | 
				
			||||||
	tmtime "github.com/tendermint/tendermint/types/time"
 | 
						tmtime "github.com/tendermint/tendermint/types/time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/cosmos/cosmos-sdk/simapp"
 | 
					 | 
				
			||||||
	sdk "github.com/cosmos/cosmos-sdk/types"
 | 
						sdk "github.com/cosmos/cosmos-sdk/types"
 | 
				
			||||||
	bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper"
 | 
						bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -37,6 +36,7 @@ func (suite *invariantTestSuite) SetupTest() {
 | 
				
			|||||||
	_, addrs := app.GeneratePrivKeyAddressPairs(1)
 | 
						_, addrs := app.GeneratePrivKeyAddressPairs(1)
 | 
				
			||||||
	suite.addrs = addrs
 | 
						suite.addrs = addrs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						suite.tApp = tApp
 | 
				
			||||||
	suite.ctx = ctx
 | 
						suite.ctx = ctx
 | 
				
			||||||
	suite.keeper = tApp.GetSavingsKeeper()
 | 
						suite.keeper = tApp.GetSavingsKeeper()
 | 
				
			||||||
	suite.bankKeeper = tApp.GetBankKeeper()
 | 
						suite.bankKeeper = tApp.GetBankKeeper()
 | 
				
			||||||
@ -63,7 +63,7 @@ func (suite *invariantTestSuite) SetupValidState() {
 | 
				
			|||||||
		depositAmt,
 | 
							depositAmt,
 | 
				
			||||||
	))
 | 
						))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err := simapp.FundModuleAccount(suite.bankKeeper, suite.ctx, types.ModuleName, depositAmt)
 | 
						err := suite.tApp.FundModuleAccount(suite.ctx, types.ModuleName, depositAmt)
 | 
				
			||||||
	suite.Require().NoError(err)
 | 
						suite.Require().NoError(err)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -8,7 +8,6 @@ import (
 | 
				
			|||||||
	tmproto "github.com/tendermint/tendermint/proto/tendermint/types"
 | 
						tmproto "github.com/tendermint/tendermint/proto/tendermint/types"
 | 
				
			||||||
	tmtime "github.com/tendermint/tendermint/types/time"
 | 
						tmtime "github.com/tendermint/tendermint/types/time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/cosmos/cosmos-sdk/simapp"
 | 
					 | 
				
			||||||
	sdk "github.com/cosmos/cosmos-sdk/types"
 | 
						sdk "github.com/cosmos/cosmos-sdk/types"
 | 
				
			||||||
	authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
 | 
						authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
 | 
				
			||||||
	vestingtypes "github.com/cosmos/cosmos-sdk/x/auth/vesting/types"
 | 
						vestingtypes "github.com/cosmos/cosmos-sdk/x/auth/vesting/types"
 | 
				
			||||||
@ -116,7 +115,7 @@ func (suite *KeeperTestSuite) CreateAccountWithAddress(addr sdk.AccAddress, init
 | 
				
			|||||||
	acc := ak.NewAccountWithAddress(suite.ctx, addr)
 | 
						acc := ak.NewAccountWithAddress(suite.ctx, addr)
 | 
				
			||||||
	ak.SetAccount(suite.ctx, acc)
 | 
						ak.SetAccount(suite.ctx, acc)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err := simapp.FundAccount(suite.app.GetBankKeeper(), suite.ctx, acc.GetAddress(), initialBalance)
 | 
						err := suite.app.FundAccount(suite.ctx, acc.GetAddress(), initialBalance)
 | 
				
			||||||
	suite.Require().NoError(err)
 | 
						suite.Require().NoError(err)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return acc
 | 
						return acc
 | 
				
			||||||
 | 
				
			|||||||
@ -9,7 +9,6 @@ import (
 | 
				
			|||||||
	"github.com/kava-labs/kava/x/swap/keeper"
 | 
						"github.com/kava-labs/kava/x/swap/keeper"
 | 
				
			||||||
	"github.com/kava-labs/kava/x/swap/types"
 | 
						"github.com/kava-labs/kava/x/swap/types"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/cosmos/cosmos-sdk/simapp"
 | 
					 | 
				
			||||||
	sdk "github.com/cosmos/cosmos-sdk/types"
 | 
						sdk "github.com/cosmos/cosmos-sdk/types"
 | 
				
			||||||
	authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper"
 | 
						authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper"
 | 
				
			||||||
	authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
 | 
						authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
 | 
				
			||||||
@ -54,7 +53,7 @@ func (suite *Suite) GetEvents() sdk.Events {
 | 
				
			|||||||
// AddCoinsToModule adds coins to the swap module account
 | 
					// AddCoinsToModule adds coins to the swap module account
 | 
				
			||||||
func (suite *Suite) AddCoinsToModule(amount sdk.Coins) {
 | 
					func (suite *Suite) AddCoinsToModule(amount sdk.Coins) {
 | 
				
			||||||
	// Does not use suite.BankKeeper.MintCoins as module account would not have permission to mint
 | 
						// Does not use suite.BankKeeper.MintCoins as module account would not have permission to mint
 | 
				
			||||||
	err := simapp.FundModuleAccount(suite.BankKeeper, suite.Ctx, types.ModuleName, amount)
 | 
						err := suite.App.FundModuleAccount(suite.Ctx, types.ModuleName, amount)
 | 
				
			||||||
	suite.Require().NoError(err)
 | 
						suite.Require().NoError(err)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -67,12 +66,6 @@ func (suite *Suite) RemoveCoinsFromModule(amount sdk.Coins) {
 | 
				
			|||||||
	suite.Require().NoError(err)
 | 
						suite.Require().NoError(err)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// // GetAccount gets an existing account
 | 
					 | 
				
			||||||
// func (suite *Suite) GetAccount(addr sdk.AccAddress) authexported.Account {
 | 
					 | 
				
			||||||
// 	ak := suite.App.GetAccountKeeper()
 | 
					 | 
				
			||||||
// 	return ak.GetAccount(suite.Ctx, addr)
 | 
					 | 
				
			||||||
// }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// CreateAccount creates a new account from the provided balance
 | 
					// CreateAccount creates a new account from the provided balance
 | 
				
			||||||
func (suite *Suite) CreateAccount(initialBalance sdk.Coins) authtypes.AccountI {
 | 
					func (suite *Suite) CreateAccount(initialBalance sdk.Coins) authtypes.AccountI {
 | 
				
			||||||
	_, addrs := app.GeneratePrivKeyAddressPairs(1)
 | 
						_, addrs := app.GeneratePrivKeyAddressPairs(1)
 | 
				
			||||||
@ -81,7 +74,7 @@ func (suite *Suite) CreateAccount(initialBalance sdk.Coins) authtypes.AccountI {
 | 
				
			|||||||
	acc := ak.NewAccountWithAddress(suite.Ctx, addrs[0])
 | 
						acc := ak.NewAccountWithAddress(suite.Ctx, addrs[0])
 | 
				
			||||||
	ak.SetAccount(suite.Ctx, acc)
 | 
						ak.SetAccount(suite.Ctx, acc)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err := simapp.FundAccount(suite.BankKeeper, suite.Ctx, acc.GetAddress(), initialBalance)
 | 
						err := suite.App.FundAccount(suite.Ctx, acc.GetAddress(), initialBalance)
 | 
				
			||||||
	suite.Require().NoError(err)
 | 
						suite.Require().NoError(err)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return acc
 | 
						return acc
 | 
				
			||||||
@ -94,7 +87,7 @@ func (suite *Suite) NewAccountFromAddr(addr sdk.AccAddress, balance sdk.Coins) a
 | 
				
			|||||||
	acc := ak.NewAccountWithAddress(suite.Ctx, addr)
 | 
						acc := ak.NewAccountWithAddress(suite.Ctx, addr)
 | 
				
			||||||
	ak.SetAccount(suite.Ctx, acc)
 | 
						ak.SetAccount(suite.Ctx, acc)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err := simapp.FundAccount(suite.BankKeeper, suite.Ctx, acc.GetAddress(), balance)
 | 
						err := suite.App.FundAccount(suite.Ctx, acc.GetAddress(), balance)
 | 
				
			||||||
	suite.Require().NoError(err)
 | 
						suite.Require().NoError(err)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return acc
 | 
						return acc
 | 
				
			||||||
@ -132,22 +125,6 @@ func (suite *Suite) AccountBalanceEqual(addr sdk.AccAddress, coins sdk.Coins) {
 | 
				
			|||||||
	suite.Equal(coins, balance, fmt.Sprintf("expected account balance to equal coins %s, but got %s", coins, balance))
 | 
						suite.Equal(coins, balance, fmt.Sprintf("expected account balance to equal coins %s, but got %s", coins, balance))
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// // AccountBalanceDelta asserts that the coins are within delta of the account balance
 | 
					 | 
				
			||||||
// func (suite *Suite) AccountBalanceDelta(acc authexported.Account, coins sdk.Coins, delta float64) {
 | 
					 | 
				
			||||||
// 	ak := suite.App.GetAccountKeeper()
 | 
					 | 
				
			||||||
// 	acc = ak.GetAccount(suite.Ctx, acc.GetAddress())
 | 
					 | 
				
			||||||
// 	accCoins := acc.GetCoins()
 | 
					 | 
				
			||||||
// 	allCoins := coins.Add(accCoins...)
 | 
					 | 
				
			||||||
// 	for _, coin := range allCoins {
 | 
					 | 
				
			||||||
// 		suite.InDelta(
 | 
					 | 
				
			||||||
// 			coins.AmountOf(coin.Denom).Int64(),
 | 
					 | 
				
			||||||
// 			accCoins.AmountOf(coin.Denom).Int64(),
 | 
					 | 
				
			||||||
// 			delta,
 | 
					 | 
				
			||||||
// 			fmt.Sprintf("expected module account balance to be in delta %f of coins %s, but got %s", delta, coins, accCoins),
 | 
					 | 
				
			||||||
// 		)
 | 
					 | 
				
			||||||
// 	}
 | 
					 | 
				
			||||||
// }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// ModuleAccountBalanceEqual asserts that the swap module account balance matches the provided coins
 | 
					// ModuleAccountBalanceEqual asserts that the swap module account balance matches the provided coins
 | 
				
			||||||
func (suite *Suite) ModuleAccountBalanceEqual(coins sdk.Coins) {
 | 
					func (suite *Suite) ModuleAccountBalanceEqual(coins sdk.Coins) {
 | 
				
			||||||
	balance := suite.BankKeeper.GetAllBalances(
 | 
						balance := suite.BankKeeper.GetAllBalances(
 | 
				
			||||||
@ -157,22 +134,6 @@ func (suite *Suite) ModuleAccountBalanceEqual(coins sdk.Coins) {
 | 
				
			|||||||
	suite.Equal(coins, balance, fmt.Sprintf("expected module account balance to equal coins %s, but got %s", coins, balance))
 | 
						suite.Equal(coins, balance, fmt.Sprintf("expected module account balance to equal coins %s, but got %s", coins, balance))
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// // ModuleAccountBalanceDelta asserts that the swap module account balance is within acceptable delta of the provided coins
 | 
					 | 
				
			||||||
// func (suite *Suite) ModuleAccountBalanceDelta(coins sdk.Coins, delta float64) {
 | 
					 | 
				
			||||||
// 	macc, _ := suite.supplyKeeper.GetModuleAccountAndPermissions(suite.Ctx, types.ModuleName)
 | 
					 | 
				
			||||||
// 	suite.Require().NotNil(macc, "expected module account to be defined")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// 	allCoins := coins.Add(macc.GetCoins()...)
 | 
					 | 
				
			||||||
// 	for _, coin := range allCoins {
 | 
					 | 
				
			||||||
// 		suite.InDelta(
 | 
					 | 
				
			||||||
// 			coins.AmountOf(coin.Denom).Int64(),
 | 
					 | 
				
			||||||
// 			macc.GetCoins().AmountOf(coin.Denom).Int64(),
 | 
					 | 
				
			||||||
// 			delta,
 | 
					 | 
				
			||||||
// 			fmt.Sprintf("expected module account balance to be in delta %f of coins %s, but got %s", delta, coins, macc.GetCoins()),
 | 
					 | 
				
			||||||
// 		)
 | 
					 | 
				
			||||||
// 	}
 | 
					 | 
				
			||||||
// }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// PoolLiquidityEqual asserts that the pool matching the provided coins has those reserves
 | 
					// PoolLiquidityEqual asserts that the pool matching the provided coins has those reserves
 | 
				
			||||||
func (suite *Suite) PoolLiquidityEqual(coins sdk.Coins) {
 | 
					func (suite *Suite) PoolLiquidityEqual(coins sdk.Coins) {
 | 
				
			||||||
	poolRecord, ok := suite.Keeper.GetPool(suite.Ctx, types.PoolIDFromCoins(coins))
 | 
						poolRecord, ok := suite.Keeper.GetPool(suite.Ctx, types.PoolIDFromCoins(coins))
 | 
				
			||||||
@ -187,25 +148,6 @@ func (suite *Suite) PoolDeleted(denomA, denomB string) {
 | 
				
			|||||||
	suite.Require().False(ok, "expected pool to not exist")
 | 
						suite.Require().False(ok, "expected pool to not exist")
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// // PoolLiquidityDelta asserts that the pool matching the provided coins has those reserves within delta
 | 
					 | 
				
			||||||
// func (suite *Suite) PoolLiquidityDelta(coins sdk.Coins, delta float64) {
 | 
					 | 
				
			||||||
// 	poolRecord, ok := suite.Keeper.GetPool(suite.Ctx, types.PoolIDFromCoins(coins))
 | 
					 | 
				
			||||||
// 	suite.Require().True(ok, "expected pool to exist")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// 	suite.InDelta(
 | 
					 | 
				
			||||||
// 		poolRecord.ReservesA.Amount.Int64(),
 | 
					 | 
				
			||||||
// 		coins.AmountOf(poolRecord.ReservesA.Denom).Int64(),
 | 
					 | 
				
			||||||
// 		delta,
 | 
					 | 
				
			||||||
// 		fmt.Sprintf("expected pool reserves within delta %f of %s, got %s", delta, coins, poolRecord.Reserves()),
 | 
					 | 
				
			||||||
// 	)
 | 
					 | 
				
			||||||
// 	suite.InDelta(
 | 
					 | 
				
			||||||
// 		poolRecord.ReservesB.Amount.Int64(),
 | 
					 | 
				
			||||||
// 		coins.AmountOf(poolRecord.ReservesB.Denom).Int64(),
 | 
					 | 
				
			||||||
// 		delta,
 | 
					 | 
				
			||||||
// 		fmt.Sprintf("expected pool reserves within delta %f of %s, got %s", delta, coins, poolRecord.Reserves()),
 | 
					 | 
				
			||||||
// 	)
 | 
					 | 
				
			||||||
// }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// PoolShareTotalEqual asserts the total shares match the stored pool
 | 
					// PoolShareTotalEqual asserts the total shares match the stored pool
 | 
				
			||||||
func (suite *Suite) PoolShareTotalEqual(poolID string, totalShares sdk.Int) {
 | 
					func (suite *Suite) PoolShareTotalEqual(poolID string, totalShares sdk.Int) {
 | 
				
			||||||
	poolRecord, found := suite.Keeper.GetPool(suite.Ctx, poolID)
 | 
						poolRecord, found := suite.Keeper.GetPool(suite.Ctx, poolID)
 | 
				
			||||||
@ -240,27 +182,6 @@ func (suite *Suite) PoolShareValueEqual(depositor authtypes.AccountI, pool types
 | 
				
			|||||||
	suite.Equal(coins, value, fmt.Sprintf("expected shares to equal %s, but got %s", coins, value))
 | 
						suite.Equal(coins, value, fmt.Sprintf("expected shares to equal %s, but got %s", coins, value))
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// // PoolShareValueDelta asserts that the depositor shares are in state and the value is within delta of the expected coins
 | 
					 | 
				
			||||||
// func (suite *Suite) PoolShareValueDelta(depositor authexported.Account, pool types.AllowedPool, coins sdk.Coins, delta float64) {
 | 
					 | 
				
			||||||
// 	poolRecord, ok := suite.Keeper.GetPool(suite.Ctx, pool.Name())
 | 
					 | 
				
			||||||
// 	suite.Require().True(ok, fmt.Sprintf("expected pool %s to exist", pool.Name()))
 | 
					 | 
				
			||||||
// 	shares, ok := suite.Keeper.GetDepositorShares(suite.Ctx, depositor.GetAddress(), poolRecord.PoolID)
 | 
					 | 
				
			||||||
// 	suite.Require().True(ok, fmt.Sprintf("expected shares to exist for depositor %s", depositor.GetAddress()))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// 	storedPool, err := types.NewDenominatedPoolWithExistingShares(sdk.NewCoins(poolRecord.ReservesA, poolRecord.ReservesB), poolRecord.TotalShares)
 | 
					 | 
				
			||||||
// 	suite.Nil(err)
 | 
					 | 
				
			||||||
// 	value := storedPool.ShareValue(shares.SharesOwned)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// 	for _, coin := range coins {
 | 
					 | 
				
			||||||
// 		suite.InDelta(
 | 
					 | 
				
			||||||
// 			coin.Amount.Int64(),
 | 
					 | 
				
			||||||
// 			value.AmountOf(coin.Denom).Int64(),
 | 
					 | 
				
			||||||
// 			delta,
 | 
					 | 
				
			||||||
// 			fmt.Sprintf("expected shares to be within delta %f of %s, but got %s", delta, coins, value),
 | 
					 | 
				
			||||||
// 		)
 | 
					 | 
				
			||||||
// 	}
 | 
					 | 
				
			||||||
// }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// PoolSharesDeleted asserts that the pool shares have been removed
 | 
					// PoolSharesDeleted asserts that the pool shares have been removed
 | 
				
			||||||
func (suite *Suite) PoolSharesDeleted(depositor sdk.AccAddress, denomA, denomB string) {
 | 
					func (suite *Suite) PoolSharesDeleted(depositor sdk.AccAddress, denomA, denomB string) {
 | 
				
			||||||
	_, ok := suite.Keeper.GetDepositorShares(suite.Ctx, depositor, types.PoolID(denomA, denomB))
 | 
						_, ok := suite.Keeper.GetDepositorShares(suite.Ctx, depositor, types.PoolID(denomA, denomB))
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user