Documentation ¶
Overview ¶
Package incentive implements a Cosmos SDK module, per ADR 009, that provides governance-controlled, on-chain incentives for users who open cdps and mint stablecoins (USDX).
For the background and motivation of this module, see the governance proposal that was voted on by KAVA token holders: https://ipfs.io/ipfs/QmSYedssC3nyQacDJmNcREtgmTPyaMx2JX7RNkMdAVkdkr/user-growth-fund-proposal.pdf
The 'Reward' parameter is used to control how much incentives are given. For example, the following reward:
Reward{ Active: true, Denom: "bnb", AvailableRewards: sdk.NewCoin("ukava", 1000000000), Duration: time.Hour*7*24, TimeLock: time.Hour*24*365, ClaimDuration: time.Hour*7*24, }
will distribute 1000 KAVA each week (Duration) to users who mint USDX using collateral bnb. That KAVA can be claimed by the user for one week (ClaimDuration) after the reward period expires, and all KAVA rewards will be timelocked for 1 year (TimeLock). If a user does not claim them during the claim duration period, they are forgone.
Rewards are accumulated by users continuously and proportionally - ie. if a user holds a CDP that has minted 10% of all USDX backed by bnb for the entire reward period, they will be eligible to claim 10% of rewards for that period.
Once a reward period ends, but not before, users can claim the rewards they have accumulated. Users claim rewards using a MsgClaimReward transaction. The following msg:
MsgClaimReward { "kava1..." "bnb" }
will claim all outstanding rewards for minting USDX backed by bnb for the input user.
Index ¶
- Constants
- Variables
- func BeginBlocker(ctx sdk.Context, k keeper.Keeper)
- func ExportGenesis(ctx sdk.Context, k keeper.Keeper) types.GenesisState
- func InitGenesis(ctx sdk.Context, k keeper.Keeper, supplyKeeper types.SupplyKeeper, ...)
- func NewHandler(k keeper.Keeper) sdk.Handler
- type AccountKeeper
- type AppModule
- func (am AppModule) BeginBlock(ctx sdk.Context, req abci.RequestBeginBlock)
- func (am AppModule) EndBlock(_ sdk.Context, _ abci.RequestEndBlock) []abci.ValidatorUpdate
- func (am AppModule) ExportGenesis(ctx sdk.Context) json.RawMessage
- func (am AppModule) InitGenesis(ctx sdk.Context, data json.RawMessage) []abci.ValidatorUpdate
- func (AppModule) Name() string
- func (am AppModule) NewHandler() sdk.Handler
- func (am AppModule) NewQuerierHandler() sdk.Querier
- func (AppModule) QuerierRoute() string
- func (am AppModule) RegisterInvariants(_ sdk.InvariantRegistry)
- func (AppModule) Route() string
- func (am AppModule) WeightedOperations(simState module.SimulationState) []sim.WeightedOperation
- type AppModuleBasic
- func (AppModuleBasic) DefaultGenesis() json.RawMessage
- func (AppModuleBasic) GenerateGenesisState(simState *module.SimulationState)
- func (AppModuleBasic) GetQueryCmd(cdc *codec.Codec) *cobra.Command
- func (AppModuleBasic) GetTxCmd(cdc *codec.Codec) *cobra.Command
- func (AppModuleBasic) Name() string
- func (AppModuleBasic) ProposalContents(_ module.SimulationState) []sim.WeightedProposalContent
- func (AppModuleBasic) RandomizedParams(r *rand.Rand) []sim.ParamChange
- func (AppModuleBasic) RegisterCodec(cdc *codec.Codec)
- func (AppModuleBasic) RegisterRESTRoutes(ctx context.CLIContext, rtr *mux.Router)
- func (AppModuleBasic) RegisterStoreDecoder(sdr sdk.StoreDecoderRegistry)
- func (AppModuleBasic) ValidateGenesis(bz json.RawMessage) error
- type AugmentedClaim
- type AugmentedClaims
- type CdpKeeper
- type Claim
- type ClaimPeriod
- type ClaimPeriods
- type Claims
- type GenesisClaimPeriodID
- type GenesisClaimPeriodIDs
- type GenesisState
- type Keeper
- type MsgClaimReward
- type Multiplier
- type MultiplierName
- type Multipliers
- type Params
- type PostClaimReq
- type QueryClaimsParams
- type Reward
- type RewardPeriod
- type RewardPeriods
- type Rewards
- type SupplyKeeper
Constants ¶
const ( AttributeKeyClaimAmount = types.AttributeKeyClaimAmount AttributeKeyClaimPeriod = types.AttributeKeyClaimPeriod AttributeKeyClaimedBy = types.AttributeKeyClaimedBy AttributeKeyRewardPeriod = types.AttributeKeyRewardPeriod AttributeValueCategory = types.AttributeValueCategory DefaultParamspace = types.DefaultParamspace EventTypeClaim = types.EventTypeClaim EventTypeClaimPeriod = types.EventTypeClaimPeriod EventTypeClaimPeriodExpiry = types.EventTypeClaimPeriodExpiry EventTypeRewardPeriod = types.EventTypeRewardPeriod Large = types.Large Medium = types.Medium ModuleName = types.ModuleName QuerierRoute = types.QuerierRoute QueryGetClaimPeriods = types.QueryGetClaimPeriods QueryGetClaims = types.QueryGetClaims QueryGetParams = types.QueryGetParams QueryGetRewardPeriods = types.QueryGetRewardPeriods RestClaimCollateralType = types.RestClaimCollateralType RestClaimOwner = types.RestClaimOwner RouterKey = types.RouterKey Small = types.Small StoreKey = types.StoreKey )
Variables ¶
var ( // function aliases NewKeeper = keeper.NewKeeper NewQuerier = keeper.NewQuerier BytesToUint64 = types.BytesToUint64 DefaultGenesisState = types.DefaultGenesisState DefaultParams = types.DefaultParams GetClaimPeriodPrefix = types.GetClaimPeriodPrefix GetClaimPrefix = types.GetClaimPrefix GetTotalVestingPeriodLength = types.GetTotalVestingPeriodLength NewAugmentedClaim = types.NewAugmentedClaim NewClaim = types.NewClaim NewClaimPeriod = types.NewClaimPeriod NewGenesisState = types.NewGenesisState NewMsgClaimReward = types.NewMsgClaimReward NewMultiplier = types.NewMultiplier NewParams = types.NewParams NewPeriod = types.NewPeriod NewQueryClaimsParams = types.NewQueryClaimsParams NewReward = types.NewReward NewRewardPeriod = types.NewRewardPeriod NewRewardPeriodFromReward = types.NewRewardPeriodFromReward ParamKeyTable = types.ParamKeyTable RegisterCodec = types.RegisterCodec // variable aliases ClaimKeyPrefix = types.ClaimKeyPrefix ClaimPeriodKeyPrefix = types.ClaimPeriodKeyPrefix DefaultActive = types.DefaultActive DefaultPreviousBlockTime = types.DefaultPreviousBlockTime DefaultRewards = types.DefaultRewards ErrAccountNotFound = types.ErrAccountNotFound ErrClaimNotFound = types.ErrClaimNotFound ErrClaimPeriodNotFound = types.ErrClaimPeriodNotFound ErrInsufficientModAccountBalance = types.ErrInsufficientModAccountBalance ErrInvalidAccountType = types.ErrInvalidAccountType ErrInvalidMultiplier = types.ErrInvalidMultiplier ErrNoClaimsFound = types.ErrNoClaimsFound ErrZeroClaim = types.ErrZeroClaim GovDenom = types.GovDenom IncentiveMacc = types.IncentiveMacc KeyActive = types.KeyActive KeyRewards = types.KeyRewards ModuleCdc = types.ModuleCdc NextClaimPeriodIDPrefix = types.NextClaimPeriodIDPrefix PreviousBlockTimeKey = types.PreviousBlockTimeKey PrincipalDenom = types.PrincipalDenom RewardPeriodKeyPrefix = types.RewardPeriodKeyPrefix )
Functions ¶
func BeginBlocker ¶
BeginBlocker runs at the start of every block
func ExportGenesis ¶
ExportGenesis export genesis state for incentive module
func InitGenesis ¶
func InitGenesis(ctx sdk.Context, k keeper.Keeper, supplyKeeper types.SupplyKeeper, gs types.GenesisState)
InitGenesis initializes the store state from a genesis state.
Types ¶
type AccountKeeper ¶
type AccountKeeper = types.AccountKeeper
type AppModule ¶
type AppModule struct { AppModuleBasic // contains filtered or unexported fields }
AppModule implements the sdk.AppModule interface.
func NewAppModule ¶
func NewAppModule(keeper Keeper, accountKeeper auth.AccountKeeper, supplyKeeper SupplyKeeper) AppModule
NewAppModule creates a new AppModule object
func (AppModule) BeginBlock ¶
func (am AppModule) BeginBlock(ctx sdk.Context, req abci.RequestBeginBlock)
BeginBlock returns the begin blocker for the incentive module.
func (AppModule) EndBlock ¶
func (am AppModule) EndBlock(_ sdk.Context, _ abci.RequestEndBlock) []abci.ValidatorUpdate
EndBlock returns the end blocker for the incentive module. It returns no validator updates.
func (AppModule) ExportGenesis ¶
func (am AppModule) ExportGenesis(ctx sdk.Context) json.RawMessage
ExportGenesis returns the exported genesis state as raw bytes for the incentive module
func (AppModule) InitGenesis ¶
func (am AppModule) InitGenesis(ctx sdk.Context, data json.RawMessage) []abci.ValidatorUpdate
InitGenesis performs genesis initialization for the incentive module. It returns no validator updates.
func (AppModule) NewHandler ¶
NewHandler returns an sdk.Handler for the incentive module.
func (AppModule) NewQuerierHandler ¶
NewQuerierHandler returns the incentive module sdk.Querier.
func (AppModule) QuerierRoute ¶
QuerierRoute returns the incentive module's querier route name.
func (AppModule) RegisterInvariants ¶
func (am AppModule) RegisterInvariants(_ sdk.InvariantRegistry)
RegisterInvariants registers the incentive module invariants.
func (AppModule) WeightedOperations ¶
func (am AppModule) WeightedOperations(simState module.SimulationState) []sim.WeightedOperation
WeightedOperations returns the all the incentive module operations with their respective weights.
type AppModuleBasic ¶
type AppModuleBasic struct{}
AppModuleBasic defines the basic application module used by the incentive module.
func (AppModuleBasic) DefaultGenesis ¶
func (AppModuleBasic) DefaultGenesis() json.RawMessage
DefaultGenesis returns default genesis state as raw bytes for the incentive module.
func (AppModuleBasic) GenerateGenesisState ¶
func (AppModuleBasic) GenerateGenesisState(simState *module.SimulationState)
GenerateGenesisState creates a randomized GenState of the incentive module
func (AppModuleBasic) GetQueryCmd ¶
func (AppModuleBasic) GetQueryCmd(cdc *codec.Codec) *cobra.Command
GetQueryCmd returns no root query command for the incentive module.
func (AppModuleBasic) GetTxCmd ¶
func (AppModuleBasic) GetTxCmd(cdc *codec.Codec) *cobra.Command
GetTxCmd returns the root tx command for the incentive module.
func (AppModuleBasic) Name ¶
func (AppModuleBasic) Name() string
Name returns the incentive module's name.
func (AppModuleBasic) ProposalContents ¶
func (AppModuleBasic) ProposalContents(_ module.SimulationState) []sim.WeightedProposalContent
ProposalContents doesn't return any content functions for governance proposals.
func (AppModuleBasic) RandomizedParams ¶
func (AppModuleBasic) RandomizedParams(r *rand.Rand) []sim.ParamChange
RandomizedParams creates randomized incentive param changes for the simulator.
func (AppModuleBasic) RegisterCodec ¶
func (AppModuleBasic) RegisterCodec(cdc *codec.Codec)
RegisterCodec registers the incentive module's types for the given codec.
func (AppModuleBasic) RegisterRESTRoutes ¶
func (AppModuleBasic) RegisterRESTRoutes(ctx context.CLIContext, rtr *mux.Router)
RegisterRESTRoutes registers the REST routes for the incentive module.
func (AppModuleBasic) RegisterStoreDecoder ¶
func (AppModuleBasic) RegisterStoreDecoder(sdr sdk.StoreDecoderRegistry)
RegisterStoreDecoder registers a decoder for incentive module's types
func (AppModuleBasic) ValidateGenesis ¶
func (AppModuleBasic) ValidateGenesis(bz json.RawMessage) error
ValidateGenesis performs genesis state validation for the incentive module.
type AugmentedClaim ¶ added in v0.11.0
type AugmentedClaim = types.AugmentedClaim
type AugmentedClaims ¶ added in v0.11.0
type AugmentedClaims = types.AugmentedClaims
type ClaimPeriod ¶
type ClaimPeriod = types.ClaimPeriod
type ClaimPeriods ¶
type ClaimPeriods = types.ClaimPeriods
type GenesisClaimPeriodID ¶
type GenesisClaimPeriodID = types.GenesisClaimPeriodID
type GenesisClaimPeriodIDs ¶
type GenesisClaimPeriodIDs = types.GenesisClaimPeriodIDs
type GenesisState ¶
type GenesisState = types.GenesisState
type MsgClaimReward ¶
type MsgClaimReward = types.MsgClaimReward
type Multiplier ¶ added in v0.11.0
type Multiplier = types.Multiplier
type MultiplierName ¶ added in v0.11.0
type MultiplierName = types.MultiplierName
type Multipliers ¶ added in v0.11.0
type Multipliers = types.Multipliers
type PostClaimReq ¶
type PostClaimReq = types.PostClaimReq
type QueryClaimsParams ¶
type QueryClaimsParams = types.QueryClaimsParams
type RewardPeriod ¶
type RewardPeriod = types.RewardPeriod
type RewardPeriods ¶
type RewardPeriods = types.RewardPeriods
type SupplyKeeper ¶
type SupplyKeeper = types.SupplyKeeper