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 CdpKeeper
- type Claim
- type ClaimPeriod
- type ClaimPeriods
- type Claims
- type GenesisClaimPeriodID
- type GenesisClaimPeriodIDs
- type GenesisState
- type Keeper
- type MsgClaimReward
- type Params
- type PostClaimReq
- type QueryClaimsParams
- type Reward
- type RewardPeriod
- type RewardPeriods
- type Rewards
- type SupplyKeeper
Constants ¶
const ( EventTypeClaim = types.EventTypeClaim EventTypeRewardPeriod = types.EventTypeRewardPeriod EventTypeClaimPeriod = types.EventTypeClaimPeriod EventTypeClaimPeriodExpiry = types.EventTypeClaimPeriodExpiry AttributeValueCategory = types.AttributeValueCategory AttributeKeyClaimedBy = types.AttributeKeyClaimedBy AttributeKeyClaimAmount = types.AttributeKeyClaimAmount AttributeKeyRewardPeriod = types.AttributeKeyRewardPeriod AttributeKeyClaimPeriod = types.AttributeKeyClaimPeriod ModuleName = types.ModuleName StoreKey = types.StoreKey RouterKey = types.RouterKey DefaultParamspace = types.DefaultParamspace QuerierRoute = types.QuerierRoute QueryGetClaims = types.QueryGetClaims RestClaimOwner = types.RestClaimOwner RestClaimCollateralType = types.RestClaimCollateralType QueryGetParams = types.QueryGetParams )
Variables ¶
var ( // functions aliases NewKeeper = keeper.NewKeeper NewQuerier = keeper.NewQuerier GetTotalVestingPeriodLength = types.GetTotalVestingPeriodLength RegisterCodec = types.RegisterCodec NewGenesisState = types.NewGenesisState DefaultGenesisState = types.DefaultGenesisState BytesToUint64 = types.BytesToUint64 GetClaimPeriodPrefix = types.GetClaimPeriodPrefix GetClaimPrefix = types.GetClaimPrefix NewMsgClaimReward = types.NewMsgClaimReward NewParams = types.NewParams DefaultParams = types.DefaultParams ParamKeyTable = types.ParamKeyTable NewReward = types.NewReward NewPeriod = types.NewPeriod NewQueryClaimsParams = types.NewQueryClaimsParams NewRewardPeriod = types.NewRewardPeriod NewClaimPeriod = types.NewClaimPeriod NewClaim = types.NewClaim NewRewardPeriodFromReward = types.NewRewardPeriodFromReward // variable aliases ModuleCdc = types.ModuleCdc ErrClaimNotFound = types.ErrClaimNotFound ErrClaimPeriodNotFound = types.ErrClaimPeriodNotFound ErrInvalidAccountType = types.ErrInvalidAccountType ErrNoClaimsFound = types.ErrNoClaimsFound ErrInsufficientModAccountBalance = types.ErrInsufficientModAccountBalance RewardPeriodKeyPrefix = types.RewardPeriodKeyPrefix ClaimPeriodKeyPrefix = types.ClaimPeriodKeyPrefix ClaimKeyPrefix = types.ClaimKeyPrefix NextClaimPeriodIDPrefix = types.NextClaimPeriodIDPrefix PreviousBlockTimeKey = types.PreviousBlockTimeKey KeyActive = types.KeyActive KeyRewards = types.KeyRewards DefaultActive = types.DefaultActive DefaultRewards = types.DefaultRewards DefaultPreviousBlockTime = types.DefaultPreviousBlockTime GovDenom = types.GovDenom PrincipalDenom = types.PrincipalDenom IncentiveMacc = types.IncentiveMacc )
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 bep3 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 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 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