Documentation ¶
Overview ¶
nolint
Index ¶
- Variables
- func AllocateRewards(t *testing.T, input TestFixture, rewards sdk.Coins, votePeriods uint64)
- func FundAccount(input TestFixture, addr sdk.AccAddress, amounts sdk.Coins) error
- func MakeAggregatePrevoteAndVote(t *testing.T, input TestFixture, msgServer types.MsgServer, height int64, ...)
- func MakeEncodingConfig(_ *testing.T) testutil.TestEncodingConfig
- func MakeTestCodec(t *testing.T) codec.Codec
- func NewMsgServerImpl(keeper Keeper, sudoKeeper sudokeeper.Keeper) types.MsgServer
- func NewQuerier(keeper Keeper) types.QueryServer
- func NewTestMsgCreateValidator(address sdk.ValAddress, pubKey cryptotypes.PubKey, amt sdk.Int) *stakingtypes.MsgCreateValidator
- func Tally(votes types.ExchangeRateVotes, rewardBand sdk.Dec, ...) sdk.Dec
- type Hooks
- type Keeper
- func (k Keeper) AllocateRewards(ctx sdk.Context, funderModule string, totalCoins sdk.Coins, votePeriods uint64) error
- func (k Keeper) GatherRewardsForVotePeriod(ctx sdk.Context) sdk.Coins
- func (k Keeper) GetDatedExchangeRate(ctx sdk.Context, pair asset.Pair) (price sdk.Dec, blockTimeMs int64, BlockHeight uint64, err error)
- func (k Keeper) GetExchangeRate(ctx sdk.Context, pair asset.Pair) (price sdk.Dec, err error)
- func (k Keeper) GetExchangeRateTwap(ctx sdk.Context, pair asset.Pair) (price sdk.Dec, err error)
- func (k Keeper) GetWhitelistedPairs(ctx sdk.Context) []asset.Pair
- func (k Keeper) Hooks() Hooks
- func (k Keeper) IsWhitelistedPair(ctx sdk.Context, pair asset.Pair) bool
- func (k Keeper) Logger(ctx sdk.Context) log.Logger
- func (k Keeper) MinValidPerWindow(ctx sdk.Context) (res sdk.Dec)
- func (k Keeper) MinVoters(ctx sdk.Context) (res uint64)
- func (k Keeper) RewardBand(ctx sdk.Context) (res sdk.Dec)
- func (k Keeper) SetPrice(ctx sdk.Context, pair asset.Pair, price sdk.Dec)
- func (k Keeper) SlashAndResetMissCounters(ctx sdk.Context)
- func (k Keeper) SlashFraction(ctx sdk.Context) (res sdk.Dec)
- func (k Keeper) SlashWindow(ctx sdk.Context) (res uint64)
- func (k Keeper) UpdateExchangeRates(ctx sdk.Context) types.ValidatorPerformances
- func (k Keeper) UpdateParams(ctx sdk.Context, params types.Params)
- func (k Keeper) ValidateFeeder(ctx sdk.Context, feederAddr sdk.AccAddress, validatorAddr sdk.ValAddress) error
- func (k Keeper) VotePeriod(ctx sdk.Context) (res uint64)
- func (k Keeper) VoteThreshold(ctx sdk.Context) (res sdk.Dec)
- func (k Keeper) Whitelist(ctx sdk.Context) (res []asset.Pair)
- type TestFixture
Constants ¶
This section is empty.
Variables ¶
var ( ValPubKeys = sims.CreateTestPubKeys(5) Addrs = []sdk.AccAddress{ sdk.AccAddress(pubKeys[0].Address()), sdk.AccAddress(pubKeys[1].Address()), sdk.AccAddress(pubKeys[2].Address()), sdk.AccAddress(pubKeys[3].Address()), sdk.AccAddress(pubKeys[4].Address()), } ValAddrs = []sdk.ValAddress{ sdk.ValAddress(pubKeys[0].Address()), sdk.ValAddress(pubKeys[1].Address()), sdk.ValAddress(pubKeys[2].Address()), sdk.ValAddress(pubKeys[3].Address()), sdk.ValAddress(pubKeys[4].Address()), } InitTokens = sdk.TokensFromConsensusPower(200, sdk.DefaultPowerReduction) InitCoins = sdk.NewCoins(sdk.NewCoin(denoms.NIBI, InitTokens)) OracleDecPrecision = 8 )
Test addresses
var ModuleBasics = module.NewBasicManager( auth.AppModuleBasic{}, bank.AppModuleBasic{}, distr.AppModuleBasic{}, staking.AppModuleBasic{}, params.AppModuleBasic{}, sudo.AppModuleBasic{}, )
ModuleBasics nolint
Functions ¶
func AllocateRewards ¶
func FundAccount ¶
func FundAccount(input TestFixture, addr sdk.AccAddress, amounts sdk.Coins) error
FundAccount is a utility function that funds an account by minting and sending the coins to the address. This should be used for testing purposes only!
func MakeAggregatePrevoteAndVote ¶
func MakeAggregatePrevoteAndVote( t *testing.T, input TestFixture, msgServer types.MsgServer, height int64, rates types.ExchangeRateTuples, valIdx int, )
func MakeEncodingConfig ¶
func MakeEncodingConfig(_ *testing.T) testutil.TestEncodingConfig
MakeEncodingConfig nolint
func NewMsgServerImpl ¶
func NewMsgServerImpl(keeper Keeper, sudoKeeper sudokeeper.Keeper) types.MsgServer
NewMsgServerImpl returns an implementation of the oracle MsgServer interface for the provided Keeper.
func NewQuerier ¶
func NewQuerier(keeper Keeper) types.QueryServer
NewQuerier returns an implementation of the oracle QueryServer interface for the provided Keeper.
func NewTestMsgCreateValidator ¶
func NewTestMsgCreateValidator( address sdk.ValAddress, pubKey cryptotypes.PubKey, amt sdk.Int, ) *stakingtypes.MsgCreateValidator
NewTestMsgCreateValidator test msg creator
func Tally ¶
func Tally( votes types.ExchangeRateVotes, rewardBand sdk.Dec, validatorPerformances types.ValidatorPerformances, ) sdk.Dec
Tally calculates the median and returns it. Sets the set of voters to be rewarded, i.e. voted within a reasonable spread from the weighted median to the store.
ALERT: This function mutates validatorPerformances slice based on the votes made by the validators.
Types ¶
type Hooks ¶
type Hooks struct {
// contains filtered or unexported fields
}
func NewHooks ¶
func NewHooks(k Keeper, accountKeeper keeper.AccountKeeper, bankKeeper bankkeeper.Keeper) *Hooks
func (Hooks) AfterEpochEnd ¶
type Keeper ¶
type Keeper struct { AccountKeeper types.AccountKeeper StakingKeeper types.StakingKeeper // Module parameters Params collections.Item[types.Params] ExchangeRates collections.Map[asset.Pair, types.DatedPrice] FeederDelegations collections.Map[sdk.ValAddress, sdk.AccAddress] MissCounters collections.Map[sdk.ValAddress, uint64] Prevotes collections.Map[sdk.ValAddress, types.AggregateExchangeRatePrevote] Votes collections.Map[sdk.ValAddress, types.AggregateExchangeRateVote] // PriceSnapshots maps types.PriceSnapshot to the asset.Pair of the snapshot and the creation timestamp as keys.Uint64Key. PriceSnapshots collections.Map[ collections.Pair[asset.Pair, time.Time], types.PriceSnapshot] WhitelistedPairs collections.KeySet[asset.Pair] Rewards collections.Map[uint64, types.Rewards] RewardsID collections.Sequence // contains filtered or unexported fields }
Keeper of the oracle store
func NewKeeper ¶
func NewKeeper( cdc codec.BinaryCodec, storeKey storetypes.StoreKey, accountKeeper types.AccountKeeper, bankKeeper types.BankKeeper, distrKeeper types.DistributionKeeper, stakingKeeper types.StakingKeeper, slashingKeeper types.SlashingKeeper, sudoKeeper types.SudoKeeper, distrName string, ) Keeper
NewKeeper constructs a new keeper for oracle
func (Keeper) AllocateRewards ¶
func (Keeper) GatherRewardsForVotePeriod ¶
GatherRewardsForVotePeriod retrieves the pair rewards for the provided pair and current vote period.
func (Keeper) GetDatedExchangeRate ¶
func (Keeper) GetExchangeRate ¶
func (Keeper) GetExchangeRateTwap ¶
func (Keeper) GetWhitelistedPairs ¶
GetWhitelistedPairs returns the whitelisted pairs list on current vote period
func (Keeper) IsWhitelistedPair ¶
IsWhitelistedPair returns existence of a pair in the voting target list
func (Keeper) MinValidPerWindow ¶
MinValidPerWindow returns oracle slashing threshold
func (Keeper) MinVoters ¶
MinVoters returns the minimum percentage of votes that must be received for a votes to pass.
func (Keeper) RewardBand ¶
RewardBand returns a maxium divergence that a price vote can have from the weighted median in the votes. If a vote lies within the valid range defined by:
μ := weightedMedian, validRange := μ ± (μ * rewardBand / 2),
then rewards are added to the validator performance. Note that if the reward band is smaller than 1 standard deviation, the band is taken to be 1 standard deviation.
func (Keeper) SlashAndResetMissCounters ¶
SlashAndResetMissCounters do slash any operator who over criteria & clear all operators miss counter to zero
func (Keeper) SlashFraction ¶
SlashFraction returns oracle voting penalty rate
func (Keeper) SlashWindow ¶
SlashWindow returns the number of voting periods that specify a "slash window". After each slash window, all oracles that have missed more than the penalty threshold are slashed. Missing the penalty threshold is synonymous with submitting fewer valid votes than `MinValidPerWindow`.
func (Keeper) UpdateExchangeRates ¶
func (k Keeper) UpdateExchangeRates(ctx sdk.Context) types.ValidatorPerformances
UpdateExchangeRates updates the ExchangeRates, this is supposed to be executed on EndBlock.
func (Keeper) UpdateParams ¶
UpdateParams updates the oracle parameters
func (Keeper) ValidateFeeder ¶
func (k Keeper) ValidateFeeder( ctx sdk.Context, feederAddr sdk.AccAddress, validatorAddr sdk.ValAddress, ) error
ValidateFeeder return the given feeder is allowed to feed the message or not
func (Keeper) VotePeriod ¶
VotePeriod returns the number of blocks during which voting takes place.
func (Keeper) VoteThreshold ¶
VoteThreshold returns the minimum percentage of votes that must be received for a votes to pass.
type TestFixture ¶
type TestFixture struct { Ctx sdk.Context Cdc *codec.LegacyAmino AccountKeeper authkeeper.AccountKeeper BankKeeper bankkeeper.Keeper OracleKeeper Keeper StakingKeeper stakingkeeper.Keeper DistrKeeper distrkeeper.Keeper SudoKeeper sudokeeper.Keeper }
TestFixture nolint
func CreateTestFixture ¶
func CreateTestFixture(t *testing.T) TestFixture
CreateTestFixture nolint Creates a base app, with 5 accounts,