keeper

package
v0.15.1 Latest Latest
Warning

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

Go to latest
Published: Sep 9, 2021 License: Apache-2.0 Imports: 13 Imported by: 2

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CalculateInterestFactor added in v0.13.0

func CalculateInterestFactor(perSecondInterestRate sdk.Dec, secondsElapsed sdk.Int) sdk.Dec

CalculateInterestFactor calculates the simple interest scaling factor, which is equal to: (per-second interest rate ** number of seconds elapsed) Will return 1.000x, multiply by principal to get new principal with added interest

func FilterCDPs added in v0.11.0

func FilterCDPs(ctx sdk.Context, k Keeper, params types.QueryCdpsParams) types.AugmentedCDPs

FilterCDPs queries the store for all CDPs that match query params

func FindIntersection added in v0.11.0

func FindIntersection(x types.CDPs, y types.CDPs) types.CDPs

FindIntersection finds the intersection of two CDP arrays in linear time complexity O(n + n)

func NewQuerier

func NewQuerier(keeper Keeper) sdk.Querier

NewQuerier returns a new querier function

Types

type Keeper

type Keeper struct {
	// contains filtered or unexported fields
}

Keeper keeper for the cdp module

func NewKeeper

func NewKeeper(cdc *codec.Codec, key sdk.StoreKey, paramstore subspace.Subspace, pfk types.PricefeedKeeper,
	ak types.AuctionKeeper, sk types.SupplyKeeper, ack types.AccountKeeper, maccs map[string][]string) Keeper

NewKeeper creates a new keeper

func (Keeper) AccumulateInterest added in v0.13.0

func (k Keeper) AccumulateInterest(ctx sdk.Context, ctype string) error

AccumulateInterest calculates the new interest that has accrued for the input collateral type based on the total amount of principal that has been created with that collateral type and the amount of time that has passed since interest was last accumulated

func (Keeper) AddCdp

func (k Keeper) AddCdp(ctx sdk.Context, owner sdk.AccAddress, collateral sdk.Coin, principal sdk.Coin, collateralType string) error

AddCdp adds a cdp for a specific owner and collateral type

func (Keeper) AddPrincipal

func (k Keeper) AddPrincipal(ctx sdk.Context, owner sdk.AccAddress, collateralType string, principal sdk.Coin) error

AddPrincipal adds debt to a cdp if the additional debt does not put the cdp below the liquidation ratio

func (Keeper) AfterCDPCreated added in v0.13.0

func (k Keeper) AfterCDPCreated(ctx sdk.Context, cdp types.CDP)

AfterCDPCreated - call hook if registered

func (Keeper) ApplyLiquidationPenalty

func (k Keeper) ApplyLiquidationPenalty(ctx sdk.Context, collateralType string, debt sdk.Int) sdk.Int

ApplyLiquidationPenalty multiplies the input debt amount by the liquidation penalty

func (Keeper) AttemptKeeperLiquidation added in v0.13.0

func (k Keeper) AttemptKeeperLiquidation(ctx sdk.Context, keeper, owner sdk.AccAddress, collateralType string) error

AttemptKeeperLiquidation liquidates the cdp with the input collateral type and owner if it is below the required collateralization ratio if the cdp is liquidated, the keeper that sent the transaction is rewarded a percentage of the collateral according to that collateral types' keeper reward percentage.

func (Keeper) AuctionCollateral

func (k Keeper) AuctionCollateral(ctx sdk.Context, deposits types.Deposits, collateralType string, debt sdk.Int, bidDenom string) error

AuctionCollateral creates auctions from the input deposits which attempt to raise the corresponding amount of debt

func (Keeper) BeforeCDPModified added in v0.13.0

func (k Keeper) BeforeCDPModified(ctx sdk.Context, cdp types.CDP)

BeforeCDPModified - call hook if registered

func (Keeper) BurnDebtCoins

func (k Keeper) BurnDebtCoins(ctx sdk.Context, moduleAccount string, denom string, paymentCoins sdk.Coin) error

BurnDebtCoins burns debt coins from the cdp module account

func (Keeper) CalculateCollateralToDebtRatio

func (k Keeper) CalculateCollateralToDebtRatio(ctx sdk.Context, collateral sdk.Coin, collateralType string, debt sdk.Coin) sdk.Dec

CalculateCollateralToDebtRatio returns the collateral to debt ratio of the input collateral and debt amounts

func (Keeper) CalculateCollateralizationRatio

func (k Keeper) CalculateCollateralizationRatio(ctx sdk.Context, collateral sdk.Coin, collateralType string, principal sdk.Coin, fees sdk.Coin, pfType pricefeedType) (sdk.Dec, error)

CalculateCollateralizationRatio returns the collateralization ratio of the input collateral to the input debt plus fees

func (Keeper) CalculateCollateralizationRatioFromAbsoluteRatio

func (k Keeper) CalculateCollateralizationRatioFromAbsoluteRatio(ctx sdk.Context, collateralType string, absoluteRatio sdk.Dec, pfType pricefeedType) (sdk.Dec, error)

CalculateCollateralizationRatioFromAbsoluteRatio takes a coin's denom and an absolute ratio and returns the respective collateralization ratio

func (Keeper) CalculateNewInterest added in v0.13.0

func (k Keeper) CalculateNewInterest(ctx sdk.Context, cdp types.CDP) sdk.Coin

CalculateNewInterest returns the amount of interest that has accrued to the cdp since its interest was last synchronized

func (Keeper) CdpCollateralRatioIndexIterator

func (k Keeper) CdpCollateralRatioIndexIterator(ctx sdk.Context, collateralType string, targetRatio sdk.Dec) sdk.Iterator

CdpCollateralRatioIndexIterator returns an sdk.Iterator for all cdps that have collateral denom matching denom and collateral:debt ratio LESS THAN targetRatio

func (Keeper) CdpDenomIndexIterator

func (k Keeper) CdpDenomIndexIterator(ctx sdk.Context, collateralType string) sdk.Iterator

CdpDenomIndexIterator returns an sdk.Iterator for all cdps with matching collateral denom

func (Keeper) CreateAuctionsFromDeposit

func (k Keeper) CreateAuctionsFromDeposit(
	ctx sdk.Context, collateral sdk.Coin, collateralType string, returnAddr sdk.AccAddress, debt, auctionSize sdk.Int,
	principalDenom string) error

CreateAuctionsFromDeposit creates auctions from the input deposit

func (Keeper) DecrementTotalPrincipal

func (k Keeper) DecrementTotalPrincipal(ctx sdk.Context, collateralType string, principal sdk.Coin)

DecrementTotalPrincipal decrements the total amount of debt that has been drawn for a particular collateral type

func (Keeper) DeleteCDP

func (k Keeper) DeleteCDP(ctx sdk.Context, cdp types.CDP) error

DeleteCDP deletes a cdp from the store

func (Keeper) DeleteCdpAndCollateralRatioIndex added in v0.13.0

func (k Keeper) DeleteCdpAndCollateralRatioIndex(ctx sdk.Context, cdp types.CDP) error

DeleteCdpAndCollateralRatioIndex deletes an existing cdp in the store by removing the old index value and deleting the cdp object from the store

func (Keeper) DeleteDeposit

func (k Keeper) DeleteDeposit(ctx sdk.Context, cdpID uint64, depositor sdk.AccAddress)

DeleteDeposit deletes a deposit from the store

func (Keeper) DepositCollateral

func (k Keeper) DepositCollateral(ctx sdk.Context, owner, depositor sdk.AccAddress, collateral sdk.Coin, collateralType string) error

DepositCollateral adds collateral to a cdp

func (Keeper) GetAllCdps

func (k Keeper) GetAllCdps(ctx sdk.Context) (cdps types.CDPs)

GetAllCdps returns all cdps from the store

func (Keeper) GetAllCdpsByCollateralType added in v0.11.0

func (k Keeper) GetAllCdpsByCollateralType(ctx sdk.Context, collateralType string) (cdps types.CDPs)

GetAllCdpsByCollateralType returns all cdps of a particular collateral type from the store

func (Keeper) GetAllCdpsByCollateralTypeAndRatio added in v0.11.0

func (k Keeper) GetAllCdpsByCollateralTypeAndRatio(ctx sdk.Context, collateralType string, targetRatio sdk.Dec) (cdps types.CDPs)

GetAllCdpsByCollateralTypeAndRatio returns all cdps of a particular collateral type and below a certain collateralization ratio

func (Keeper) GetCDP

func (k Keeper) GetCDP(ctx sdk.Context, collateralType string, cdpID uint64) (types.CDP, bool)

GetCDP returns the cdp associated with a particular collateral denom and id

func (Keeper) GetCdpByOwnerAndCollateralType added in v0.11.0

func (k Keeper) GetCdpByOwnerAndCollateralType(ctx sdk.Context, owner sdk.AccAddress, collateralType string) (types.CDP, bool)

GetCdpByOwnerAndCollateralType queries cdps owned by owner and returns the cdp with matching denom

func (Keeper) GetCdpID

func (k Keeper) GetCdpID(ctx sdk.Context, owner sdk.AccAddress, collateralType string) (uint64, bool)

GetCdpID returns the id of the cdp corresponding to a specific owner and collateral denom

func (Keeper) GetCdpIdsByOwner

func (k Keeper) GetCdpIdsByOwner(ctx sdk.Context, owner sdk.AccAddress) ([]uint64, bool)

GetCdpIdsByOwner returns all the ids of cdps corresponding to a particular owner

func (Keeper) GetCollateral

func (k Keeper) GetCollateral(ctx sdk.Context, collateralType string) (types.CollateralParam, bool)

GetCollateral returns the collateral param with corresponding denom

func (Keeper) GetCollateralTypePrefix added in v0.11.0

func (k Keeper) GetCollateralTypePrefix(ctx sdk.Context, collateralType string) (byte, bool)

GetCollateralTypePrefix returns the prefix of the matching denom

func (Keeper) GetCollateralTypes added in v0.11.0

func (k Keeper) GetCollateralTypes(ctx sdk.Context) []string

GetCollateralTypes returns an array of collateral types

func (Keeper) GetDebtDenom

func (k Keeper) GetDebtDenom(ctx sdk.Context) (denom string)

GetDebtDenom returns the denom of debt in the system

func (Keeper) GetDebtParam

func (k Keeper) GetDebtParam(ctx sdk.Context, denom string) (types.DebtParam, bool)

GetDebtParam returns the debt param with matching denom

func (Keeper) GetDeposit

func (k Keeper) GetDeposit(ctx sdk.Context, cdpID uint64, depositor sdk.AccAddress) (deposit types.Deposit, found bool)

GetDeposit returns the deposit of a depositor on a particular cdp from the store

func (Keeper) GetDeposits

func (k Keeper) GetDeposits(ctx sdk.Context, cdpID uint64) (deposits types.Deposits)

GetDeposits returns all the deposits to a cdp

func (Keeper) GetGovDenom

func (k Keeper) GetGovDenom(ctx sdk.Context) (denom string)

GetGovDenom returns the denom of the governance token

func (Keeper) GetInterestFactor added in v0.13.0

func (k Keeper) GetInterestFactor(ctx sdk.Context, ctype string) (sdk.Dec, bool)

GetInterestFactor returns the current interest factor for an individual collateral type

func (Keeper) GetMarketStatus added in v0.8.0

func (k Keeper) GetMarketStatus(ctx sdk.Context, marketID string) (up bool)

GetMarketStatus returns true if the market has a price, otherwise false

func (Keeper) GetNextCdpID

func (k Keeper) GetNextCdpID(ctx sdk.Context) (id uint64)

GetNextCdpID returns the highest cdp id from the store

func (Keeper) GetParams

func (k Keeper) GetParams(ctx sdk.Context) types.Params

GetParams returns the params from the store

func (Keeper) GetPreviousAccrualTime added in v0.13.0

func (k Keeper) GetPreviousAccrualTime(ctx sdk.Context, ctype string) (time.Time, bool)

GetPreviousAccrualTime returns the last time an individual market accrued interest

func (Keeper) GetSliceOfCDPsByRatioAndType added in v0.13.0

func (k Keeper) GetSliceOfCDPsByRatioAndType(ctx sdk.Context, cutoffCount sdk.Int, targetRatio sdk.Dec, collateralType string) (cdps types.CDPs)

GetSliceOfCDPsByRatioAndType returns a slice of cdps of size equal to the input cutoffCount sorted by target ratio in ascending order (ie, the lowest collateral:debt ratio cdps are returned first)

func (Keeper) GetTotalDebt

func (k Keeper) GetTotalDebt(ctx sdk.Context, accountName string) sdk.Int

GetTotalDebt returns the total amount of debt tokens held by the liquidator module account

func (Keeper) GetTotalPrincipal

func (k Keeper) GetTotalPrincipal(ctx sdk.Context, collateralType, principalDenom string) (total sdk.Int)

GetTotalPrincipal returns the total amount of principal that has been drawn for a particular collateral

func (Keeper) GetTotalSurplus

func (k Keeper) GetTotalSurplus(ctx sdk.Context, accountName string) sdk.Int

GetTotalSurplus returns the total amount of surplus tokens held by the liquidator module account

func (Keeper) IncrementTotalPrincipal

func (k Keeper) IncrementTotalPrincipal(ctx sdk.Context, collateralType string, principal sdk.Coin)

IncrementTotalPrincipal increments the total amount of debt that has been drawn with that collateral type

func (Keeper) IndexCdpByCollateralRatio

func (k Keeper) IndexCdpByCollateralRatio(ctx sdk.Context, collateralType string, id uint64, collateralRatio sdk.Dec)

IndexCdpByCollateralRatio sets the cdp id in the store, indexed by the collateral type and collateral to debt ratio

func (Keeper) IndexCdpByOwner

func (k Keeper) IndexCdpByOwner(ctx sdk.Context, cdp types.CDP)

IndexCdpByOwner sets the cdp id in the store, indexed by the owner

func (Keeper) IterateAllCdps

func (k Keeper) IterateAllCdps(ctx sdk.Context, cb func(cdp types.CDP) (stop bool))

IterateAllCdps iterates over all cdps and performs a callback function

func (Keeper) IterateCdpsByCollateralRatio

func (k Keeper) IterateCdpsByCollateralRatio(ctx sdk.Context, collateralType string, targetRatio sdk.Dec, cb func(cdp types.CDP) (stop bool))

IterateCdpsByCollateralRatio iterate over cdps with collateral denom equal to denom and collateral:debt ratio LESS THAN targetRatio and performs a callback function.

func (Keeper) IterateCdpsByCollateralType added in v0.11.0

func (k Keeper) IterateCdpsByCollateralType(ctx sdk.Context, collateralType string, cb func(cdp types.CDP) (stop bool))

IterateCdpsByCollateralType iterates over cdps with matching denom and performs a callback function

func (Keeper) IterateDeposits

func (k Keeper) IterateDeposits(ctx sdk.Context, cdpID uint64, cb func(deposit types.Deposit) (stop bool))

IterateDeposits iterates over the all the deposits of a cdp and performs a callback function

func (Keeper) LiquidateCdps

func (k Keeper) LiquidateCdps(ctx sdk.Context, marketID string, collateralType string, liquidationRatio sdk.Dec, count sdk.Int) error

LiquidateCdps seizes collateral from all CDPs below the input liquidation ratio

func (Keeper) LoadAugmentedCDP

func (k Keeper) LoadAugmentedCDP(ctx sdk.Context, cdp types.CDP) types.AugmentedCDP

LoadAugmentedCDP creates a new augmented CDP from an existing CDP

func (Keeper) MintDebtCoins

func (k Keeper) MintDebtCoins(ctx sdk.Context, moduleAccount string, denom string, principalCoins sdk.Coin) error

MintDebtCoins mints debt coins in the cdp module account

func (Keeper) NetSurplusAndDebt

func (k Keeper) NetSurplusAndDebt(ctx sdk.Context) error

NetSurplusAndDebt burns surplus and debt coins equal to the minimum of surplus and debt balances held by the liquidator module account for example, if there is 1000 debt and 100 surplus, 100 surplus and 100 debt are burned, netting to 900 debt

func (Keeper) RemoveCdpCollateralRatioIndex

func (k Keeper) RemoveCdpCollateralRatioIndex(ctx sdk.Context, collateralType string, id uint64, collateralRatio sdk.Dec)

RemoveCdpCollateralRatioIndex deletes the cdp id from the store's index of cdps by collateral type and collateral to debt ratio

func (Keeper) RemoveCdpOwnerIndex

func (k Keeper) RemoveCdpOwnerIndex(ctx sdk.Context, cdp types.CDP)

RemoveCdpOwnerIndex deletes the cdp id from the store's index of cdps by owner

func (Keeper) RepayPrincipal

func (k Keeper) RepayPrincipal(ctx sdk.Context, owner sdk.AccAddress, collateralType string, payment sdk.Coin) error

RepayPrincipal removes debt from the cdp If all debt is repaid, the collateral is returned to depositors and the cdp is removed from the store

func (Keeper) ReturnCollateral

func (k Keeper) ReturnCollateral(ctx sdk.Context, cdp types.CDP)

ReturnCollateral returns collateral to depositors on a cdp and removes deposits from the store

func (Keeper) RunSurplusAndDebtAuctions

func (k Keeper) RunSurplusAndDebtAuctions(ctx sdk.Context) error

RunSurplusAndDebtAuctions nets the surplus and debt balances and then creates surplus or debt auctions if the remaining balance is above the auction threshold parameter

func (Keeper) SeizeCollateral

func (k Keeper) SeizeCollateral(ctx sdk.Context, cdp types.CDP) error

SeizeCollateral liquidates the collateral in the input cdp. the following operations are performed: 1. Collateral for all deposits is sent from the cdp module to the liquidator module account 2. The liquidation penalty is applied 3. Debt coins are sent from the cdp module to the liquidator module account 4. The total amount of principal outstanding for that collateral type is decremented (this is the equivalent of saying that fees are no longer accumulated by a cdp once it gets liquidated)

func (Keeper) SetCDP

func (k Keeper) SetCDP(ctx sdk.Context, cdp types.CDP) error

SetCDP sets a cdp in the store

func (Keeper) SetCdpAndCollateralRatioIndex

func (k Keeper) SetCdpAndCollateralRatioIndex(ctx sdk.Context, cdp types.CDP, ratio sdk.Dec) error

SetCdpAndCollateralRatioIndex sets the cdp and collateral ratio index in the store

func (Keeper) SetDebtDenom

func (k Keeper) SetDebtDenom(ctx sdk.Context, denom string)

SetDebtDenom set the denom of debt in the system

func (Keeper) SetDeposit

func (k Keeper) SetDeposit(ctx sdk.Context, deposit types.Deposit)

SetDeposit sets the deposit in the store

func (Keeper) SetGovDenom

func (k Keeper) SetGovDenom(ctx sdk.Context, denom string)

SetGovDenom set the denom of the governance token in the system

func (*Keeper) SetHooks added in v0.13.0

func (k *Keeper) SetHooks(hooks types.CDPHooks) *Keeper

SetHooks adds hooks to the keeper.

func (Keeper) SetInterestFactor added in v0.13.0

func (k Keeper) SetInterestFactor(ctx sdk.Context, ctype string, interestFactor sdk.Dec)

SetInterestFactor sets the current interest factor for an individual collateral type

func (Keeper) SetMarketStatus added in v0.8.0

func (k Keeper) SetMarketStatus(ctx sdk.Context, marketID string, up bool)

SetMarketStatus sets the status of the input market, true means the market is up and running, false means it is down

func (Keeper) SetNextCdpID

func (k Keeper) SetNextCdpID(ctx sdk.Context, id uint64)

SetNextCdpID sets the highest cdp id in the store

func (Keeper) SetParams

func (k Keeper) SetParams(ctx sdk.Context, params types.Params)

SetParams sets params on the store

func (Keeper) SetPreviousAccrualTime added in v0.13.0

func (k Keeper) SetPreviousAccrualTime(ctx sdk.Context, ctype string, previousAccrualTime time.Time)

SetPreviousAccrualTime sets the most recent accrual time for a particular market

func (Keeper) SetTotalPrincipal

func (k Keeper) SetTotalPrincipal(ctx sdk.Context, collateralType, principalDenom string, total sdk.Int)

SetTotalPrincipal sets the total amount of principal that has been drawn for the input collateral

func (Keeper) SynchronizeInterest added in v0.13.0

func (k Keeper) SynchronizeInterest(ctx sdk.Context, cdp types.CDP) types.CDP

SynchronizeInterest updates the input cdp object to reflect the current accumulated interest, updates the cdp state in the store, and returns the updated cdp object

func (Keeper) SynchronizeInterestForRiskyCDPs added in v0.13.0

func (k Keeper) SynchronizeInterestForRiskyCDPs(ctx sdk.Context, slice sdk.Int, targetRatio sdk.Dec, collateralType string) error

SynchronizeInterestForRiskyCDPs synchronizes the interest for the slice of cdps with the lowest collateral:debt ratio

func (Keeper) UpdateCdpAndCollateralRatioIndex added in v0.13.0

func (k Keeper) UpdateCdpAndCollateralRatioIndex(ctx sdk.Context, cdp types.CDP, ratio sdk.Dec) error

UpdateCdpAndCollateralRatioIndex updates the state of an existing cdp in the store by replacing the old index values and updating the store to the latest cdp object values

func (Keeper) UpdatePricefeedStatus added in v0.8.0

func (k Keeper) UpdatePricefeedStatus(ctx sdk.Context, marketID string) (ok bool)

UpdatePricefeedStatus determines if the price of an asset is available and updates the global status of the market

func (Keeper) ValidateBalance added in v0.13.0

func (k Keeper) ValidateBalance(ctx sdk.Context, amount sdk.Coin, sender sdk.AccAddress) error

ValidateBalance validates that the input account has sufficient spendable funds

func (Keeper) ValidateCollateral

func (k Keeper) ValidateCollateral(ctx sdk.Context, collateral sdk.Coin, collateralType string) error

ValidateCollateral validates that a collateral is valid for use in cdps

func (Keeper) ValidateCollateralizationRatio

func (k Keeper) ValidateCollateralizationRatio(ctx sdk.Context, collateral sdk.Coin, collateralType string, principal sdk.Coin, fees sdk.Coin) error

ValidateCollateralizationRatio validate that adding the input principal doesn't put the cdp below the liquidation ratio

func (Keeper) ValidateDebtLimit

func (k Keeper) ValidateDebtLimit(ctx sdk.Context, collateralType string, principal sdk.Coin) error

ValidateDebtLimit validates that the input debt amount does not exceed the global debt limit or the debt limit for that collateral

func (Keeper) ValidateLiquidation added in v0.13.0

func (k Keeper) ValidateLiquidation(ctx sdk.Context, collateral sdk.Coin, collateralType string, principal sdk.Coin, fees sdk.Coin) error

ValidateLiquidation validate that adding the input principal puts the cdp below the liquidation ratio

func (Keeper) ValidatePaymentCoins

func (k Keeper) ValidatePaymentCoins(ctx sdk.Context, cdp types.CDP, payment sdk.Coin) error

ValidatePaymentCoins validates that the input coins are valid for repaying debt

func (Keeper) ValidatePrincipalAdd

func (k Keeper) ValidatePrincipalAdd(ctx sdk.Context, principal sdk.Coin) error

ValidatePrincipalAdd validates that an asset is valid for use as debt when creating a new cdp

func (Keeper) ValidatePrincipalDraw

func (k Keeper) ValidatePrincipalDraw(ctx sdk.Context, principal sdk.Coin, expectedDenom string) error

ValidatePrincipalDraw validates that an asset is valid for use as debt when drawing debt off an existing cdp

func (Keeper) WithdrawCollateral

func (k Keeper) WithdrawCollateral(ctx sdk.Context, owner, depositor sdk.AccAddress, collateral sdk.Coin, collateralType string) error

WithdrawCollateral removes collateral from a cdp if it does not put the cdp below the liquidation ratio

Jump to

Keyboard shortcuts

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