keeper

package
v0.20.0-beta.2 Latest Latest
Warning

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

Go to latest
Published: May 11, 2023 License: Apache-2.0 Imports: 46 Imported by: 0

Documentation

Overview

nolint

Index

Constants

This section is empty.

Variables

View Source
var (
	ValPubKeys = simapp.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

ModuleBasics nolint

Functions

func AllocateRewards added in v0.15.0

func AllocateRewards(t *testing.T, input TestFixture, pair asset.Pair, rewards sdk.Coins, votePeriods uint64)

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 added in v0.19.0

func MakeAggregatePrevoteAndVote(t *testing.T, input TestFixture, msgServer types.MsgServer, height int64, rates types.ExchangeRateTuples, valIdx int)

func MakeEncodingConfig

func MakeEncodingConfig(_ *testing.T) simparams.EncodingConfig

MakeEncodingConfig nolint

func MakeTestCodec

func MakeTestCodec(t *testing.T) codec.Codec

MakeTestCodec nolint

func NewMsgServerImpl

func NewMsgServerImpl(keeper 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 added in v0.14.0

func Tally(ballots types.ExchangeRateBallots, 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 Keeper

type Keeper struct {
	AccountKeeper types.AccountKeeper

	StakingKeeper types.StakingKeeper

	ExchangeRates     collections.Map[asset.Pair, sdk.Dec]
	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]
	PairRewards      collections.IndexedMap[uint64, types.PairReward, PairRewardsIndexes]
	PairRewardsID    collections.Sequence
	// contains filtered or unexported fields
}

Keeper of the oracle store

func NewKeeper

func NewKeeper(cdc codec.BinaryCodec, storeKey sdk.StoreKey,
	paramspace paramstypes.Subspace, accountKeeper types.AccountKeeper,
	bankKeeper types.BankKeeper, distrKeeper types.DistributionKeeper,
	stakingKeeper types.StakingKeeper, distrName string) Keeper

NewKeeper constructs a new keeper for oracle

func (Keeper) AllocatePairRewards added in v0.15.0

func (k Keeper) AllocatePairRewards(ctx sdk.Context, funderModule string, pair asset.Pair, totalCoins sdk.Coins, votePeriods uint64) error

func (Keeper) GatherRewardsForVotePeriod added in v0.19.0

func (k Keeper) GatherRewardsForVotePeriod(ctx sdk.Context, pair asset.Pair) sdk.Coins

GatherRewardsForVotePeriod retrieves the pair rewards for the provided pair and current vote period.

func (Keeper) GetExchangeRate

func (k Keeper) GetExchangeRate(ctx sdk.Context, pair asset.Pair) (price sdk.Dec, err error)

func (Keeper) GetExchangeRateTwap added in v0.17.0

func (k Keeper) GetExchangeRateTwap(ctx sdk.Context, pair asset.Pair) (price sdk.Dec, err error)

func (Keeper) GetParams

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

GetParams returns the total set of oracle parameters.

func (Keeper) GetWhitelistedPairs added in v0.16.1

func (k Keeper) GetWhitelistedPairs(ctx sdk.Context) []asset.Pair

GetWhitelistedPairs returns the whitelisted pairs list on current vote period

func (Keeper) IsWhitelistedPair added in v0.16.1

func (k Keeper) IsWhitelistedPair(ctx sdk.Context, pair asset.Pair) bool

IsWhitelistedPair returns existence of a pair in the voting target list

func (Keeper) Logger

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

Logger returns a module-specific logger.

func (Keeper) MinValidPerWindow

func (k Keeper) MinValidPerWindow(ctx sdk.Context) (res sdk.Dec)

MinValidPerWindow returns oracle slashing threshold

func (Keeper) MinVoters added in v0.19.0

func (k Keeper) MinVoters(ctx sdk.Context) (res uint64)

VoteThreshold returns the minimum percentage of votes that must be received for a ballot to pass.

func (Keeper) RewardBand

func (k Keeper) RewardBand(ctx sdk.Context) (res sdk.Dec)

RewardBand returns a maxium divergence that a price vote can have from the weighted median in the ballot. 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) SetParams

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

SetParams sets the total set of oracle parameters.

func (Keeper) SetPrice added in v0.17.0

func (k Keeper) SetPrice(ctx sdk.Context, pair asset.Pair, price sdk.Dec)

SetPrice sets the price for a pair as well as the price snapshot.

func (Keeper) SetWhitelist

func (k Keeper) SetWhitelist(ctx sdk.Context, whitelist []asset.Pair)

SetWhitelist store new whitelist to param store this function is only for test purpose

func (Keeper) SlashAndResetMissCounters

func (k Keeper) SlashAndResetMissCounters(ctx sdk.Context)

SlashAndResetMissCounters do slash any operator who over criteria & clear all operators miss counter to zero

func (Keeper) SlashFraction

func (k Keeper) SlashFraction(ctx sdk.Context) (res sdk.Dec)

SlashFraction returns oracle voting penalty rate

func (Keeper) SlashWindow

func (k Keeper) SlashWindow(ctx sdk.Context) (res uint64)

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 added in v0.14.0

func (k Keeper) UpdateExchangeRates(ctx sdk.Context)

UpdateExchangeRates updates the ExchangeRates, this is supposed to be executed on EndBlock.

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

func (k Keeper) VotePeriod(ctx sdk.Context) (res uint64)

VotePeriod returns the number of blocks during which voting takes place.

func (Keeper) VoteThreshold

func (k Keeper) VoteThreshold(ctx sdk.Context) (res sdk.Dec)

VoteThreshold returns the minimum percentage of votes that must be received for a ballot to pass.

func (Keeper) Whitelist

func (k Keeper) Whitelist(ctx sdk.Context) (res []asset.Pair)

Whitelist returns the pair list that can be activated

type PairRewardsIndexes added in v0.15.0

type PairRewardsIndexes struct {
	// RewardsByPair is the index that maps rewards associated with specific pairs.
	RewardsByPair collections.MultiIndex[asset.Pair, uint64, types.PairReward]
}

func (PairRewardsIndexes) IndexerList added in v0.15.0

type TestFixture added in v0.19.0

type TestFixture struct {
	Ctx           sdk.Context
	Cdc           *codec.LegacyAmino
	AccountKeeper authkeeper.AccountKeeper
	BankKeeper    bankkeeper.Keeper
	OracleKeeper  Keeper
	StakingKeeper stakingkeeper.Keeper
	DistrKeeper   distrkeeper.Keeper
}

TestFixture nolint

func CreateTestFixture added in v0.19.0

func CreateTestFixture(t *testing.T) TestFixture

CreateTestFixture nolint Creates a base app, with 5 accounts,

func Setup added in v0.19.0

func Setup(t *testing.T) (TestFixture, types.MsgServer)

Jump to

Keyboard shortcuts

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