incentive

package
v0.11.0-rc1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 5, 2020 License: Apache-2.0 Imports: 19 Imported by: 1

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

View Source
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

View Source
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

func BeginBlocker(ctx sdk.Context, k keeper.Keeper)

BeginBlocker runs at the start of every block

func ExportGenesis

func ExportGenesis(ctx sdk.Context, k keeper.Keeper) types.GenesisState

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.

func NewHandler

func NewHandler(k keeper.Keeper) sdk.Handler

NewHandler creates an sdk.Handler for incentive module messages

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

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) Name

func (AppModule) Name() string

Name returns the incentive module's name.

func (AppModule) NewHandler

func (am AppModule) NewHandler() sdk.Handler

NewHandler returns an sdk.Handler for the incentive module.

func (AppModule) NewQuerierHandler

func (am AppModule) NewQuerierHandler() sdk.Querier

NewQuerierHandler returns the incentive module sdk.Querier.

func (AppModule) QuerierRoute

func (AppModule) QuerierRoute() string

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) Route

func (AppModule) Route() string

Route returns the message routing key for the incentive module.

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

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 CdpKeeper

type CdpKeeper = types.CdpKeeper

type Claim

type Claim = types.Claim

type ClaimPeriod

type ClaimPeriod = types.ClaimPeriod

type ClaimPeriods

type ClaimPeriods = types.ClaimPeriods

type Claims

type Claims = types.Claims

type GenesisClaimPeriodID

type GenesisClaimPeriodID = types.GenesisClaimPeriodID

type GenesisClaimPeriodIDs

type GenesisClaimPeriodIDs = types.GenesisClaimPeriodIDs

type GenesisState

type GenesisState = types.GenesisState

type Keeper

type Keeper = keeper.Keeper

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 Params

type Params = types.Params

type PostClaimReq

type PostClaimReq = types.PostClaimReq

type QueryClaimsParams

type QueryClaimsParams = types.QueryClaimsParams

type Reward

type Reward = types.Reward

type RewardPeriod

type RewardPeriod = types.RewardPeriod

type RewardPeriods

type RewardPeriods = types.RewardPeriods

type Rewards

type Rewards = types.Rewards

type SupplyKeeper

type SupplyKeeper = types.SupplyKeeper

Directories

Path Synopsis
client
cli
legacy

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL