Documentation ¶
Overview ¶
noalias
Index ¶
- Constants
- Variables
- func ErrInvalidOfferCoin(codespace sdk.CodespaceType, rval sdk.Int) sdk.Error
- func ErrNoEffectivePrice(codespace sdk.CodespaceType, denom string) sdk.Error
- func ErrRecursiveSwap(codespace sdk.CodespaceType, denom string) sdk.Error
- func RegisterCodec(cdc *codec.Codec)
- func ValidateGenesis(data GenesisState) error
- type GenesisState
- type MsgSwap
- type OracleKeeper
- type Params
- type QuerySwapParams
- type SupplyKeeper
- type TobinTax
- type TobinTaxList
Constants ¶
const ( DefaultCodespace sdk.CodespaceType = "market" CodeInvalidOfferCoin codeType = 1 CodeNoEffectivePrice codeType = 2 CodeRecursiveSwap codeType = 3 )
market error codes
const ( EventSwap = "swap" AttributeKeyOffer = "offer" AttributeKeyTrader = "trader" AttributeKeySwapCoin = "swap_coin" AttributeKeySwapFee = "swap_fee" AttributeValueCategory = ModuleName )
Market module event types
const ( // ModuleName is the name of the market module ModuleName = "market" // StoreKey is the string store representation StoreKey = ModuleName // RouterKey is the msg router key for the market module RouterKey = ModuleName // QuerierRoute is the query router key for the market module QuerierRoute = ModuleName )
const ( QuerySwap = "swap" QueryTerraPoolDelta = "terra_pool_delta" QueryParameters = "parameters" )
query endpoints supported by the oracle Querier
const DefaultParamspace = ModuleName
DefaultParamspace nolint
Variables ¶
var ( //Terra liquidity pool(usdr unit) made available per ${poolrecoveryperiod} (usdr unit) ParamStoreKeyBasePool = []byte("basepool") // The period required to recover BasePool ParamStoreKeyPoolRecoveryPeriod = []byte("poolrecoveryperiod") // Min spread ParamStoreKeyMinSpread = []byte("minspread") // Tobin tax ParmaStoreKeyTobinTax = []byte("tobintax") // Illiquid tobin tax list ParmaStoreKeyIlliquidTobinTaxList = []byte("illiquidtobintaxlist") )
Parameter keys
var ( DefaultBasePool = sdk.NewDec(250000 * core.MicroUnit) // 250,000sdr = 250,000,000,000usdr DefaultPoolRecoveryPeriod = core.BlocksPerDay // 14,400 DefaultMinSpread = sdk.NewDecWithPrec(2, 2) // 2% DefaultTobinTax = sdk.NewDecWithPrec(25, 4) // 0.25% DefaultIlliquidTobinTaxList = TobinTaxList{ { Denom: core.MicroMNTDenom, TaxRate: sdk.NewDecWithPrec(2, 2), }, } )
Default parameter values
var ModuleCdc = codec.New()
ModuleCdc defines internal Module Codec
var ( //Keys for store prefixed TerraPoolDeltaKey = []byte{0x02} // key for Terra pool delta which gap between TerraPool from BasePool )
Keys for market store Items are stored with the following key: values
- 0x01: sdk.Dec
Functions ¶
func ErrInvalidOfferCoin ¶
ErrInvalidOfferCoin called when not enough or too huge coins are being requested for a swap
func ErrNoEffectivePrice ¶
func ErrNoEffectivePrice(codespace sdk.CodespaceType, denom string) sdk.Error
ErrNoEffectivePrice called when a price for the asset is not registered with the oracle
func ErrRecursiveSwap ¶
func ErrRecursiveSwap(codespace sdk.CodespaceType, denom string) sdk.Error
ErrRecursiveSwap called when Ask and Offer coin denominatioins are equal
func RegisterCodec ¶
RegisterCodec concretes types on codec codec
func ValidateGenesis ¶
func ValidateGenesis(data GenesisState) error
ValidateGenesis validates the provided oracle genesis state to ensure the expected invariants holds. (i.e. params in correct bounds, no duplicate validators)
Types ¶
type GenesisState ¶
type GenesisState struct { TerraPoolDelta sdk.Dec `json:"terra_pool_delta" yaml:"terra_pool_delta"` Params Params `json:"params" yaml:"params"` // market params }
GenesisState - all market state that must be provided at genesis
func DefaultGenesisState ¶
func DefaultGenesisState() GenesisState
DefaultGenesisState returns raw genesis raw message for testing
func NewGenesisState ¶
func NewGenesisState(terraPoolDelta sdk.Dec, params Params) GenesisState
NewGenesisState creates a new GenesisState object
func (GenesisState) Equal ¶
func (data GenesisState) Equal(data2 GenesisState) bool
Equal checks whether 2 GenesisState structs are equivalent.
func (GenesisState) IsEmpty ¶
func (data GenesisState) IsEmpty() bool
IsEmpty returns if a GenesisState is empty or has data in it
type MsgSwap ¶
type MsgSwap struct { Trader sdk.AccAddress `json:"trader" yaml:"trader"` // Address of the trader OfferCoin sdk.Coin `json:"offer_coin" yaml:"offer_coin"` // Coin being offered AskDenom string `json:"ask_denom" yaml:"ask_denom"` // Denom of the coin to swap to }
MsgSwap contains a swap request
func NewMsgSwap ¶
NewMsgSwap creates a MsgSwap instance
func (MsgSwap) GetSigners ¶
func (msg MsgSwap) GetSigners() []sdk.AccAddress
GetSigners Implements Msg
func (MsgSwap) ValidateBasic ¶
ValidateBasic Implements Msg
type OracleKeeper ¶
type OracleKeeper interface {
GetLunaExchangeRate(ctx sdk.Context, denom string) (price sdk.Dec, err sdk.Error)
}
OracleKeeper defines expected oracle keeper
type Params ¶
type Params struct { PoolRecoveryPeriod int64 `json:"pool_recovery_period" yaml:"pool_recovery_period"` BasePool sdk.Dec `json:"base_pool" yaml:"base_pool"` MinSpread sdk.Dec `json:"min_spread" yaml:"min_spread"` TobinTax sdk.Dec `json:"tobin_tax" yaml:"tobin_tax"` IlliquidTobinTaxList TobinTaxList `json:"illiquid_tobin_tax_list" yaml:"illiquid_tobin_tax_list"` }
Params market parameters
func DefaultParams ¶
func DefaultParams() Params
DefaultParams creates default market module parameters
func (*Params) ParamSetPairs ¶
func (params *Params) ParamSetPairs() subspace.ParamSetPairs
ParamSetPairs implements the ParamSet interface and returns all the key/value pairs pairs of market module's parameters. nolint
type QuerySwapParams ¶
QuerySwapParams for query - 'custom/market/swap'
func NewQuerySwapParams ¶
func NewQuerySwapParams(offerCoin sdk.Coin, askDenom string) QuerySwapParams
NewQuerySwapParams returns param object for swap query
type SupplyKeeper ¶
type SupplyKeeper interface { GetModuleAccount(ctx sdk.Context, moduleName string) supplyexported.ModuleAccountI GetSupply(ctx sdk.Context) (supply supplyexported.SupplyI) SendCoinsFromModuleToModule(ctx sdk.Context, senderModule string, recipientModule string, amt sdk.Coins) sdk.Error SendCoinsFromModuleToAccount(ctx sdk.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) sdk.Error SendCoinsFromAccountToModule(ctx sdk.Context, senderAddr sdk.AccAddress, recipientModule string, amt sdk.Coins) sdk.Error BurnCoins(ctx sdk.Context, name string, amt sdk.Coins) sdk.Error MintCoins(ctx sdk.Context, name string, amt sdk.Coins) sdk.Error }
SupplyKeeper defines expected supply keeper
type TobinTax ¶
type TobinTax struct { Denom string `json:"denom" yaml:"denom"` TaxRate sdk.Dec `json:"tax_rate" yaml:"tax_rate"` }
TobinTax - struct to store tobin tax for the specific denom with high volatility
type TobinTaxList ¶
type TobinTaxList []TobinTax
TobinTaxList is convience wrapper to handle TobinTax array
func (TobinTaxList) String ¶
func (ttl TobinTaxList) String() (out string)
String implements fmt.Stringer interface