keeper

package
v2.0.2 Latest Latest
Warning

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

Go to latest
Published: May 13, 2022 License: Apache-2.0 Imports: 15 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AllInvariants

func AllInvariants(k Keeper) sdk.Invariant

AllInvariants runs all invariants of the x/leverage module.

func BorrowAPYInvariant

func BorrowAPYInvariant(k Keeper) sdk.Invariant

BorrowAPYInvariant checks that Borrow APY have all positive values

func BorrowAmountInvariant

func BorrowAmountInvariant(k Keeper) sdk.Invariant

BorrowAmountInvariant checks that borrow amounts have all positive values

func CollateralAmountInvariant

func CollateralAmountInvariant(k Keeper) sdk.Invariant

CollateralAmountInvariant checks that collateral amounts have all positive values

func InterestScalarsInvariant

func InterestScalarsInvariant(k Keeper) sdk.Invariant

InterestScalarsInvariant checks that all denoms have an interest scalar >= 1

func Interpolate

func Interpolate(x, xMin, yMin, xMax, yMax sdk.Dec) sdk.Dec

Interpolate takes a line defined by two points (xMin, yMin) and (xMax, yMax), then finds the y-value of the point on that line for an input x-value. It will return yMin if xMin = xMax (i.e. a vertical line). While this function is intended for interpolation (xMin < x < xMax), it works correctly even when x is outside that range or when xMin > xMax.

func LendAPYInvariant

func LendAPYInvariant(k Keeper) sdk.Invariant

LendAPYInvariant checks that Lend APY have all positive values

func NewMsgServerImpl

func NewMsgServerImpl(keeper Keeper) types.MsgServer

NewMsgServerImpl returns an implementation of MsgServer for the x/leverage module.

func RegisterInvariants

func RegisterInvariants(ir sdk.InvariantRegistry, k Keeper)

RegisterInvariants registers the leverage module invariants

func ReserveAmountInvariant

func ReserveAmountInvariant(k Keeper) sdk.Invariant

ReserveAmountInvariant checks that reserve amounts have non-negative balances

Types

type Keeper

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

func NewKeeper

func NewKeeper(
	cdc codec.Codec,
	storeKey sdk.StoreKey,
	paramSpace paramtypes.Subspace,
	bk types.BankKeeper,
	ok types.OracleKeeper,
) Keeper

func (Keeper) AccrueAllInterest

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

AccrueAllInterest is called by EndBlock when BlockHeight % InterestEpoch == 0. It should accrue interest on all open borrows, increase reserves, and set LastInterestTime to BlockTime.

func (Keeper) BorrowAsset

func (k Keeper) BorrowAsset(ctx sdk.Context, borrowerAddr sdk.AccAddress, borrow sdk.Coin) error

BorrowAsset attempts to borrow tokens from the leverage module account using collateral uTokens. If asset type is invalid, collateral is insufficient, or module balance is insufficient, we return an error.

func (Keeper) CalculateBorrowLimit

func (k Keeper) CalculateBorrowLimit(ctx sdk.Context, collateral sdk.Coins) (sdk.Dec, error)

CalculateBorrowLimit uses the price oracle to determine the borrow limit (in USD) provided by collateral sdk.Coins, using each token's uToken exchange rate and collateral weight. An error is returned if any input coins are not uTokens or if value calculation fails.

func (Keeper) CalculateLiquidationLimit

func (k Keeper) CalculateLiquidationLimit(ctx sdk.Context, collateral sdk.Coins) (sdk.Dec, error)

CalculateLiquidationLimit uses the price oracle to determine the liquidation limit (in USD) provided by collateral sdk.Coins, using each token's uToken exchange rate and liquidation threshold. An error is returned if any input coins are not uTokens or if value calculation fails.

func (Keeper) DeleteRegisteredToken

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

DeleteRegisteredToken deletes a registered Token by base denomination from the x/leverage KVStore.

func (Keeper) DeleteRegisteredTokens

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

DeleteRegisteredTokens deletes all registered tokens from the x/leverage module's KVStore.

func (Keeper) DeriveBorrowAPY

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

DeriveBorrowAPY derives the current borrow interest rate on a token denom using its borrow utilization and token-specific params. Returns zero on invalid asset.

func (Keeper) DeriveBorrowUtilization

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

DeriveBorrowUtilization derives the current borrow utilization of a token denom.

func (Keeper) DeriveExchangeRate

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

DeriveExchangeRate calculated the token:uToken exchange rate of a base token denom.

func (Keeper) DeriveLendAPY

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

DeriveLendAPY derives the current lend interest rate on a token denom using its borrow utilization borrow APY. Returns zero on invalid asset.

func (Keeper) EquivalentTokenValue

func (k Keeper) EquivalentTokenValue(ctx sdk.Context, fromCoin sdk.Coin, toDenom string) (sdk.Coin, error)

EquivalentValue returns the amount of a selected denom which would have equal USD value to a provided sdk.Coin

func (Keeper) ExchangeToken

func (k Keeper) ExchangeToken(ctx sdk.Context, token sdk.Coin) (sdk.Coin, error)

ExchangeToken converts an sdk.Coin containing a base asset to its value as a uToken.

func (Keeper) ExchangeUToken

func (k Keeper) ExchangeUToken(ctx sdk.Context, uToken sdk.Coin) (sdk.Coin, error)

ExchangeUToken converts an sdk.Coin containing a uToken to its value in a base token.

func (Keeper) ExchangeUTokens

func (k Keeper) ExchangeUTokens(ctx sdk.Context, uTokens sdk.Coins) (sdk.Coins, error)

ExchangeUTokens converts an sdk.Coins containing uTokens to their values in base tokens.

func (Keeper) ExportGenesis

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

ExportGenesis returns the x/leverage module's exported genesis state.

func (Keeper) FromTokenToUTokenDenom

func (k Keeper) FromTokenToUTokenDenom(ctx sdk.Context, tokenDenom string) string

FromTokenToUTokenDenom adds the uToken prefix ("u/") to an input denom. An empty string is returned if the input token denom is not an accepted asset type.

func (Keeper) FromUTokenToTokenDenom

func (k Keeper) FromUTokenToTokenDenom(ctx sdk.Context, uTokenDenom string) string

FromUTokenToTokenDenom strips the uToken prefix ("u/") from an input denom. An empty string is returned if the prefix is not present or if the resulting token denom is not an accepted asset type.

func (Keeper) FundOracle

func (k Keeper) FundOracle(ctx sdk.Context, requested sdk.Coins) error

FundOracle transfers requested coins to the oracle module account, as long as the leverage module account has sufficient unreserved assets.

func (Keeper) GetAllBadDebts

func (k Keeper) GetAllBadDebts(ctx sdk.Context) []types.BadDebt

GetAllBadDebts gets bad debt instances across all borrowers.

func (Keeper) GetAllRegisteredTokens

func (k Keeper) GetAllRegisteredTokens(ctx sdk.Context) []types.Token

GetAllRegisteredTokens returns all the registered tokens from the x/leverage module's KVStore.

func (Keeper) GetAllReserves

func (k Keeper) GetAllReserves(ctx sdk.Context) sdk.Coins

GetAllReserves returns all reserves.

func (Keeper) GetAllUTokenSupply

func (k Keeper) GetAllUTokenSupply(ctx sdk.Context) sdk.Coins

GetAllUTokenSupply returns total supply of all uToken denoms.

func (Keeper) GetAvailableToBorrow

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

GetAvailableToBorrow gets the amount available to borrow of a given token.

func (Keeper) GetBorrow

func (k Keeper) GetBorrow(ctx sdk.Context, borrowerAddr sdk.AccAddress, denom string) sdk.Coin

GetBorrow returns an sdk.Coin representing how much of a given denom a borrower currently owes.

func (Keeper) GetBorrowerBorrows

func (k Keeper) GetBorrowerBorrows(ctx sdk.Context, borrowerAddr sdk.AccAddress) sdk.Coins

GetBorrowerBorrows returns an sdk.Coins object containing all open borrows associated with an address.

func (Keeper) GetBorrowerCollateral

func (k Keeper) GetBorrowerCollateral(ctx sdk.Context, borrowerAddr sdk.AccAddress) sdk.Coins

GetBorrowerCollateral returns an sdk.Coins containing all of a borrower's collateral.

func (Keeper) GetCollateralAmount

func (k Keeper) GetCollateralAmount(ctx sdk.Context, borrowerAddr sdk.AccAddress, denom string) sdk.Coin

GetCollateralAmount returns an sdk.Coin representing how much of a given denom the x/leverage module account currently holds as collateral for a given borrower.

func (Keeper) GetCollateralSetting

func (k Keeper) GetCollateralSetting(ctx sdk.Context, borrowerAddr sdk.AccAddress, denom string) bool

GetCollateralSetting checks if a uToken denom is enabled for use as collateral by a single borrower.

func (Keeper) GetCollateralWeight

func (k Keeper) GetCollateralWeight(ctx sdk.Context, denom string) (sdk.Dec, error)

GetCollateralWeight gets collateral weight of a given token.

func (Keeper) GetEligibleLiquidationTargets

func (k Keeper) GetEligibleLiquidationTargets(ctx sdk.Context) ([]sdk.AccAddress, error)

GetEligibleLiquidationTargets returns a list of borrower addresses eligible for liquidation.

func (Keeper) GetInterestAtKink

func (k Keeper) GetInterestAtKink(ctx sdk.Context, denom string) (sdk.Dec, error)

GetInterestAtKink gets the interest rate at the "kink" in the utilization:interest graph for a given token.

func (Keeper) GetInterestBase

func (k Keeper) GetInterestBase(ctx sdk.Context, denom string) (sdk.Dec, error)

GetInterestBase gets the base interest rate for a given token.

func (Keeper) GetInterestKinkUtilization

func (k Keeper) GetInterestKinkUtilization(ctx sdk.Context, denom string) (sdk.Dec, error)

GetInterestKinkUtilization gets the utilization at the "kink" in the utilization:interest graph for a given token.

func (Keeper) GetInterestMax

func (k Keeper) GetInterestMax(ctx sdk.Context, denom string) (sdk.Dec, error)

GetInterestMax gets the maximum interest rate for a given token.

func (Keeper) GetLastInterestTime

func (k Keeper) GetLastInterestTime(ctx sdk.Context) int64

GetLastInterestTime gets last time at which interest was accrued

func (Keeper) GetLenderLoaned

func (k Keeper) GetLenderLoaned(ctx sdk.Context, lenderAddr sdk.AccAddress) (sdk.Coins, error)

GetLenderLoaned returns the total tokens loaned by a lender across all denoms, including any interest accrued.

func (Keeper) GetLiquidationIncentive

func (k Keeper) GetLiquidationIncentive(ctx sdk.Context, denom string) (sdk.Dec, error)

GetLiquidationIncentive gets liquidation incentive of a given token.

func (Keeper) GetLiquidationThreshold

func (k Keeper) GetLiquidationThreshold(ctx sdk.Context, denom string) (sdk.Dec, error)

GetLiquidationThreshold gets liquidation threshold of a given token.

func (Keeper) GetLoaned

func (k Keeper) GetLoaned(ctx sdk.Context, lenderAddr sdk.AccAddress, denom string) (sdk.Coin, error)

GetLoaned returns an sdk.Coin representing how much of a given denom a lender has loaned, including interest accrued.

func (Keeper) GetParams

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

GetParams gets the x/leverage module's parameters.

func (Keeper) GetRegisteredToken

func (k Keeper) GetRegisteredToken(ctx sdk.Context, denom string) (types.Token, error)

GetRegisteredToken gets a token from the x/leverage module's KVStore.

func (Keeper) GetReserveAmount

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

GetReserveAmount gets the amount reserved of a specified token. On invalid asset, the reserved amount is zero.

func (Keeper) GetReserveFactor

func (k Keeper) GetReserveFactor(ctx sdk.Context, denom string) (sdk.Dec, error)

GetReserveFactor gets the reserve factor for a given token.

func (Keeper) GetTotalBorrowed

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

GetTotalBorrowed returns the total borrowed in a given denom.

func (Keeper) GetTotalLoaned

func (k Keeper) GetTotalLoaned(ctx sdk.Context, denom string) (sdk.Coin, error)

GetTotalLoaned returns the total loaned by all lenders in a given denom, including any interest accrued.

func (Keeper) GetUTokenSupply

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

GetUTokenSupply gets the total supply of a specified utoken, as tracked by module state. On invalid asset or non-uToken, the supply is zero.

func (Keeper) HasCollateral

func (k Keeper) HasCollateral(ctx sdk.Context, borrowerAddr sdk.AccAddress) bool

HasCollateral returns true if a borrower has any collateral.

func (Keeper) InitGenesis

func (k Keeper) InitGenesis(ctx sdk.Context, genState types.GenesisState)

InitGenesis initializes the x/leverage module state from a provided genesis state.

func (Keeper) IsAcceptedToken

func (k Keeper) IsAcceptedToken(ctx sdk.Context, tokenDenom string) bool

IsAcceptedToken returns true if a given (non-UToken) token denom is an accepted asset type.

func (Keeper) IsAcceptedUToken

func (k Keeper) IsAcceptedUToken(ctx sdk.Context, uTokenDenom string) bool

IsAcceptedUToken returns true if a given uToken denom is associated with an accepted base asset type.

func (Keeper) LendAsset

func (k Keeper) LendAsset(ctx sdk.Context, lenderAddr sdk.AccAddress, loan sdk.Coin) error

LendAsset attempts to deposit assets into the leverage module account in exchange for uTokens. If asset type is invalid or account balance is insufficient, we return an error.

func (Keeper) LiquidateBorrow

func (k Keeper) LiquidateBorrow(
	ctx sdk.Context, liquidatorAddr, borrowerAddr sdk.AccAddress, desiredRepayment, desiredReward sdk.Coin,
) (sdk.Int, sdk.Int, error)

LiquidateBorrow attempts to repay one of an eligible borrower's borrows (in part or in full) in exchange for a selected denomination of uToken collateral, specified by its associated token denom. The liquidator may also specify a minimum reward amount, again in base token denom that will be adjusted by uToken exchange rate, they would accept for the specified repayment. If the borrower is not over their liquidation limit, or the repayment or reward denominations are invalid, an error is returned. If the attempted repayment is greater than the amount owed or the maximum that can be repaid due to parameters (close factor) then a partial liquidation, equal to the maximum valid amount, is performed. The same occurs if the value of collateral in the selected reward denomination cannot cover the proposed repayment. Because partial liquidation is possible and exchange rates vary, LiquidateBorrow returns the actual amount of tokens repaid and uTokens rewarded (in that order).

func (Keeper) LiquidationParams

func (k Keeper) LiquidationParams(
	ctx sdk.Context,
	reward string,
	borrowed sdk.Dec,
	limit sdk.Dec,
) (sdk.Dec, sdk.Dec, error)

LiquidationParams computes dynamic liquidation parameters based on collateral denomination, borrowed value, and liquidation limit. Returns liquidationIncentive (the ratio of bonus collateral awarded during Liquidate transactions, and closeFactor (the fraction of a borrower's total borrowed value that can be repaid by a liquidator in a single liquidation event.)

func (Keeper) Logger

func (k Keeper) Logger(ctx sdk.Context) log.Logger

func (Keeper) ModuleBalance

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

ModuleBalance returns the amount of a given token held in the x/leverage module account

func (Keeper) RepayAsset

func (k Keeper) RepayAsset(ctx sdk.Context, borrowerAddr sdk.AccAddress, payment sdk.Coin) (sdk.Int, error)

RepayAsset attempts to repay an open borrow position with base assets. If asset type is invalid, account balance is insufficient, or no open borrow position exists, we return an error. Additionally, if the amount provided is greater than the full repayment amount, only the necessary amount is transferred. Because amount repaid may be less than the repayment attempted, RepayAsset returns the actual amount repaid.

func (Keeper) RepayBadDebt

func (k Keeper) RepayBadDebt(ctx sdk.Context, borrowerAddr sdk.AccAddress, denom string) (bool, error)

RepayBadDebt uses reserves to repay borrower's debts of a given denom. It returns a boolean representing whether full repayment was achieved.

func (Keeper) SetCollateralSetting

func (k Keeper) SetCollateralSetting(ctx sdk.Context, borrowerAddr sdk.AccAddress, denom string, enable bool) error

SetCollateralSetting enables or disables a uToken denom for use as collateral by a single borrower.

func (*Keeper) SetHooks

func (k *Keeper) SetHooks(h types.Hooks) *Keeper

SetHooks sets the module's hooks. Note, hooks can only be set once.

func (*Keeper) SetLastInterestTime

func (k *Keeper) SetLastInterestTime(ctx sdk.Context, interestTime int64) error

SetLastInterestTime sets LastInterestTime to a given value

func (Keeper) SetParams

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

SetParams sets the x/leverage module's parameters.

func (Keeper) SetRegisteredToken

func (k Keeper) SetRegisteredToken(ctx sdk.Context, token types.Token)

SetRegisteredToken stores a Token into the x/leverage module's KVStore.

func (Keeper) SweepBadDebts

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

SweepBadDebts attempts to repay all bad debts in the system.

func (Keeper) TokenPrice

func (k Keeper) TokenPrice(ctx sdk.Context, denom string) (sdk.Dec, error)

TokenPrice returns the USD value of a base token. Note, the token's denomination must be the base denomination, e.g. uumee. The x/oracle module must know of the base and display/symbol denominations for each exchange pair. E.g. it must know about the UMEE/USD exchange rate along with the uumee base denomination and the exponent. This function will not return non-positive exchange rates, preferring to error instead.

func (Keeper) TokenValue

func (k Keeper) TokenValue(ctx sdk.Context, coin sdk.Coin) (sdk.Dec, error)

TokenValue returns the total token value given a Coin. An error is returned if we cannot get the token's price or if it's not an accepted token.

func (Keeper) TotalTokenValue

func (k Keeper) TotalTokenValue(ctx sdk.Context, coins sdk.Coins) (sdk.Dec, error)

TotalTokenValue returns the total value of all supplied tokens. It is equivalent to calling GetTokenValue on each coin individually.

func (Keeper) WithdrawAsset

func (k Keeper) WithdrawAsset(ctx sdk.Context, lenderAddr sdk.AccAddress, withdrawal sdk.Coin) error

WithdrawAsset attempts to deposit uTokens into the leverage module in exchange for the original tokens loaned. Accepts either a uToken amount to withdraw or an equivalent base token amount to be converted automatically via exchange rate. If the token or uToken denom is invalid or account balance insufficient for either lender or module, we return an error.

type Querier

type Querier struct {
	Keeper
}

Querier implements a QueryServer for the x/leverage module.

func NewQuerier

func NewQuerier(k Keeper) Querier

func (Querier) BorrowAPY

func (Querier) BorrowLimit

func (Querier) Borrowed

func (Querier) BorrowedValue

func (Querier) Collateral

func (Querier) ExchangeRate

func (Querier) LendAPY

func (Querier) Loaned

func (Querier) LoanedValue

func (Querier) MarketSize

func (Querier) MarketSummary added in v2.0.2

func (Querier) Params

func (Querier) RegisteredTokens

func (Querier) ReserveAmount

Jump to

Keyboard shortcuts

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