keeper

package
v0.0.0 Latest Latest
Warning

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

Go to latest
Published: Feb 23, 2024 License: Apache-2.0 Imports: 19 Imported by: 0

Documentation

Index

Constants

View Source
const DELAY_WINDOW = 172800 // 48 hours in seconds
View Source
const EMISSIONS_PER_EPOCH = 1000
View Source
const EPOCH_LENGTH = 5

Emissions rate Constants TODO make these not constants and figure out how they should be changeable by governance or some algorithm or whatever. Likely should be params within the keeper.

View Source
const MAX_INFERENCE_REQUEST_VALIDITY = 60 * 60 * 24 * 7 * 24 // 24 weeks approximately 6 months in seconds
View Source
const MAX_SLOWEST_ALLOWED_CADENCE = MAX_INFERENCE_REQUEST_VALIDITY // 24 weeks approximately 6 months in seconds
View Source
const MAX_TOPICS_PER_BLOCK = 1000 // max number of topics to run cadence for per block
View Source
const MIN_FASTEST_ALLOWED_CADENCE = 60 // 1 minute in seconds
View Source
const MIN_PRICE_PER_EPOCH = 10 // protocol participants never paid less than this per epoch from consumer demand if enough demand exists
View Source
const MIN_TOPIC_DEMAND = 10 // total unmet demand for a topic < this => don't run inference solicatation or weight-adjustment
View Source
const MIN_UNMET_DEMAND = 1 // delete requests if they have below this demand remaining
View Source
const PRICE_ADJUSTMENT_PRECISION = 10000 // just used for price calculations
View Source
const PRICE_CHANGE_PERCENT = 0.1 // how much the price changes per block
View Source
const REQUIRED_MINIMUM_STAKE = 1
View Source
const TARGET_CAPACITY_PER_BLOCK = 500 // between 0 and this number the price goes down, above this number up to MAX_TOPICS_PER_BLOCK the price goes up

Variables

View Source
var TopicIdListValue collcodec.ValueCodec[[]uint64] = topicIdListValueCodec{}
View Source
var UintValue collcodec.ValueCodec[math.Uint] = uintValueCodec{}

Functions

func NewMsgServerImpl

func NewMsgServerImpl(keeper Keeper) state.MsgServer

NewMsgServerImpl returns an implementation of the module MsgServer interface.

func NewQueryServerImpl

func NewQueryServerImpl(k Keeper) state.QueryServer

NewQueryServerImpl returns an implementation of the module QueryServer.

Types

type ACC_ADDRESS

type ACC_ADDRESS = string

type AccountKeeper

type AccountKeeper interface {
	AddressCodec() address.Codec
	GetAccount(ctx context.Context, addr sdk.AccAddress) sdk.AccountI
	GetModuleAddress(name string) sdk.AccAddress
	GetModuleAccount(ctx context.Context, name string) sdk.ModuleAccountI
	// TODO remove with genesis 2-phases refactor https://github.com/cosmos/cosmos-sdk/issues/2862
	SetModuleAccount(context.Context, sdk.ModuleAccountI)
}

AccountKeeper defines the expected account keeper used for simulations (noalias)

type BLOCK_NUMBER

type BLOCK_NUMBER = int64

type BankKeeper

type BankKeeper interface {
	MintCoins(ctx context.Context, moduleName string, amt sdk.Coins) error
	GetAllBalances(ctx context.Context, addr sdk.AccAddress) sdk.Coins
	GetBalance(ctx context.Context, addr sdk.AccAddress, denom string) sdk.Coin

	SpendableCoins(ctx context.Context, addr sdk.AccAddress) sdk.Coins

	SendCoinsFromModuleToModule(ctx context.Context, senderModule, recipientModule string, amt sdk.Coins) error
	SendCoinsFromModuleToAccount(ctx context.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) error
	SendCoinsFromAccountToModule(ctx context.Context, senderAddr sdk.AccAddress, recipientModule string, amt sdk.Coins) error

	BlockedAddr(addr sdk.AccAddress) bool
}

BankKeeper defines the expected interface needed to retrieve account balances.

type DELEGATOR

type DELEGATOR = sdk.AccAddress

type DELEGATOR_STR

type DELEGATOR_STR = string

type Int

type Int = cosmosMath.Int

type Keeper

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

func NewKeeper

func NewKeeper(
	cdc codec.BinaryCodec,
	addressCodec address.Codec,
	storeService storetypes.KVStoreService,
	ak AccountKeeper,
	bk BankKeeper) Keeper

func (*Keeper) AddAddressTopics

func (k *Keeper) AddAddressTopics(ctx context.Context, address sdk.AccAddress, newTopics []uint64) error

AddAddressTopics adds new topics to the address's list of topics, avoiding duplicates.

func (*Keeper) AddStake

func (k *Keeper) AddStake(ctx context.Context, topicsIds []TOPIC_ID, delegator string, target string, stake Uint) error

Add stake adds stake to the system for a given delegator and target it adds to existing holdings. it places the stake upon target, from delegator, in amount. it also updates the total stake for the subnet in question and the total global stake. see comments in keeper.go data structures for examples of how the data structure tracking works

func (*Keeper) AddStakePlacedUponTarget

func (k *Keeper) AddStakePlacedUponTarget(ctx context.Context, target sdk.AccAddress, amount Uint) error

Used by Modify functions to change stake placements. This function adds to the stakePlacedUponTarget mapping ONLY and does not modify any of the other stake mappings e.g. delegatorStake totalStake or topicStake in a system.

func (*Keeper) AddStakePlacement

func (k *Keeper) AddStakePlacement(ctx context.Context, delegator sdk.AccAddress, target sdk.AccAddress, amount Uint) error

Used by Modify functions to change stake placements. This function adds to the stakePlacement mapping ONLY and does not modify any of the other stake mappings e.g. delegatorStake totalStake or topicStake in a system.

func (*Keeper) AddStakeToTopics

func (k *Keeper) AddStakeToTopics(ctx context.Context, topicsIds []TOPIC_ID, stake Uint) error

Add stake into an array of topics

func (*Keeper) AddToMempool

func (k *Keeper) AddToMempool(ctx context.Context, request state.InferenceRequest) error

func (*Keeper) AddTopicAccumulateMetDemand

func (k *Keeper) AddTopicAccumulateMetDemand(ctx context.Context, topicId TOPIC_ID, metDemand Uint) error

func (*Keeper) AddUnmetDemand

func (k *Keeper) AddUnmetDemand(ctx context.Context, topicId TOPIC_ID, amt cosmosMath.Uint) error

func (*Keeper) CalculateAccumulatedEmissions

func (k *Keeper) CalculateAccumulatedEmissions(ctx context.Context) (cosmosMath.Int, error)

return how many new coins should be minted for the next emission

func (*Keeper) EpochLength

func (k *Keeper) EpochLength() int64

return epoch length

func (*Keeper) ExportGenesis

func (k *Keeper) ExportGenesis(ctx context.Context) (*state.GenesisState, error)

ExportGenesis exports the module state to a genesis state.

func (*Keeper) FindWorkerNodesByOwner

func (k *Keeper) FindWorkerNodesByOwner(ctx sdk.Context, nodeId string) ([]*state.OffchainNode, error)

func (*Keeper) GetActiveTopics

func (k *Keeper) GetActiveTopics(ctx context.Context) ([]*state.Topic, error)

GetActiveTopics returns a slice of all active topics.

func (*Keeper) GetAllBondsForDelegator

func (k *Keeper) GetAllBondsForDelegator(ctx context.Context, delegator sdk.AccAddress) ([]sdk.AccAddress, []Uint, error)

For a given delegator, return a map of every target they've placed stake upon, and how much stake they've placed upon them O(n) over the number of targets registered. since maps of byte array types aren't supported in golang, we instead return two equal length arrays where the first array is the targets, and the second array is the amount of stake placed upon them indexes in the two arrays correspond to each other invariant that len(targets) == len(stakes)

func (*Keeper) GetAllInferences

func (k *Keeper) GetAllInferences(ctx context.Context, topicId TOPIC_ID, timestamp uint64) (*state.Inferences, error)

func (*Keeper) GetBond

func (k *Keeper) GetBond(ctx context.Context, delegator sdk.AccAddress, target sdk.AccAddress) (Uint, error)

For a given delegator and target, find out how much stake the delegator has placed upon the target

func (*Keeper) GetDelegatorStake

func (k *Keeper) GetDelegatorStake(ctx context.Context, delegator sdk.AccAddress) (Uint, error)

for a given address, find out how much stake they've put into the system

func (*Keeper) GetLastRewardsUpdate

func (k *Keeper) GetLastRewardsUpdate(ctx context.Context) (int64, error)

Returns the last block height at which rewards emissions were updated

func (*Keeper) GetLatestInferencesFromTopic

func (k *Keeper) GetLatestInferencesFromTopic(ctx context.Context, topicId TOPIC_ID) ([]*state.InferenceSetForScoring, error)

A function that accepts a topicId and returns list of Inferences or error

func (*Keeper) GetMempool

func (k *Keeper) GetMempool(ctx context.Context) ([]state.InferenceRequest, error)

func (*Keeper) GetMempoolInferenceRequestById

func (k *Keeper) GetMempoolInferenceRequestById(ctx context.Context, topicId TOPIC_ID, requestId string) (state.InferenceRequest, error)

func (*Keeper) GetMempoolInferenceRequestsForTopic

func (k *Keeper) GetMempoolInferenceRequestsForTopic(ctx context.Context, topicId TOPIC_ID) ([]state.InferenceRequest, error)

func (*Keeper) GetNumTopics

func (k *Keeper) GetNumTopics(ctx context.Context) (TOPIC_ID, error)

Returns the number of topics that are active in the network

func (*Keeper) GetRegisteredTopicsIdsByAddress

func (k *Keeper) GetRegisteredTopicsIdsByAddress(ctx context.Context, address sdk.AccAddress) ([]uint64, error)

GetRegisteredTopicsByAddress returns a slice of all topics ids registered by a given address.

func (*Keeper) GetRegisteredTopicsIdsByReputerAddress

func (k *Keeper) GetRegisteredTopicsIdsByReputerAddress(ctx context.Context, address sdk.AccAddress) ([]uint64, error)

GetRegisteredTopicsIdsByReputerAddress returns a slice of all topics ids registered by a given reputer address.

func (*Keeper) GetRegisteredTopicsIdsByWorkerAddress

func (k *Keeper) GetRegisteredTopicsIdsByWorkerAddress(ctx context.Context, address sdk.AccAddress) ([]uint64, error)

GetRegisteredTopicsIdsByWorkerAddress returns a slice of all topics ids registered by a given worker address.

func (*Keeper) GetReputerNormalizedStake

func (k *Keeper) GetReputerNormalizedStake(
	ctx sdk.Context,
	topicId TOPIC_ID,
	topicStake *big.Float) (reputerNormalizedStakeMap map[ACC_ADDRESS]*big.Float, retErr error)

for a given topic, returns every reputer node registered to it and their normalized stake

func (*Keeper) GetRequestDemand

func (k *Keeper) GetRequestDemand(ctx context.Context, requestId string) (Uint, error)

func (*Keeper) GetStakePlacedUponTarget

func (k *Keeper) GetStakePlacedUponTarget(ctx context.Context, target sdk.AccAddress) (Uint, error)

func (*Keeper) GetStakeRemovalQueueForDelegator

func (k *Keeper) GetStakeRemovalQueueForDelegator(ctx context.Context, delegator sdk.AccAddress) (state.StakeRemoval, error)

for a given delegator, get their stake removal information

func (*Keeper) GetStakesForAccount

func (k *Keeper) GetStakesForAccount(ctx context.Context, delegator sdk.AccAddress) ([]*state.StakeInfo, error)

GetStakesForAccount returns the list of stakes for a given account address.

func (*Keeper) GetTopicAccumulatedMetDemand

func (k *Keeper) GetTopicAccumulatedMetDemand(ctx context.Context, topicId TOPIC_ID) (Uint, error)

func (*Keeper) GetTopicInferenceLastRan

func (k *Keeper) GetTopicInferenceLastRan(ctx context.Context, topicId TOPIC_ID) (lastRanTime uint64, err error)

Get the last time an inference was ran for a given topic

func (*Keeper) GetTopicStake

func (k *Keeper) GetTopicStake(ctx context.Context, topicId TOPIC_ID) (Uint, error)

Gets the stake in the network for a given topic

func (*Keeper) GetTopicUnmetDemand

func (k *Keeper) GetTopicUnmetDemand(ctx context.Context, topicId TOPIC_ID) (Uint, error)

func (*Keeper) GetTopicWeightLastRan

func (k *Keeper) GetTopicWeightLastRan(ctx context.Context, topicId TOPIC_ID) (uint64, error)

func (*Keeper) GetTopicsByCreator

func (k *Keeper) GetTopicsByCreator(ctx context.Context, creator string) ([]*state.Topic, error)

GetTopicsByCreator returns a slice of all topics created by a given creator.

func (*Keeper) GetTotalStake

func (k *Keeper) GetTotalStake(ctx context.Context) (Uint, error)

Gets the total sum of all stake in the network across all topics

func (*Keeper) GetWeightsFromTopic

func (k *Keeper) GetWeightsFromTopic(ctx context.Context, topicId TOPIC_ID) (map[REPUTERS]map[WORKERS]*Uint, error)

For a given topic return the matrix (double map) of all (reputers, workers) -> weight of reputer upon worker

func (*Keeper) GetWorkerAddressByP2PKey

func (k *Keeper) GetWorkerAddressByP2PKey(ctx context.Context, p2pKey string) (sdk.AccAddress, error)

func (*Keeper) InactivateTopic

func (k *Keeper) InactivateTopic(ctx context.Context, topicId TOPIC_ID) error

func (*Keeper) IncrementTopicId

func (k *Keeper) IncrementTopicId(ctx context.Context) (TOPIC_ID, error)

Gets next topic id

func (*Keeper) InitGenesis

func (k *Keeper) InitGenesis(ctx context.Context, data *state.GenesisState) error

InitGenesis initializes the module state from a genesis state.

func (*Keeper) InsertInference

func (k *Keeper) InsertInference(ctx context.Context, topicId TOPIC_ID, timestamp uint64, inference state.Inference) error

func (*Keeper) InsertInferences

func (k *Keeper) InsertInferences(ctx context.Context, topicId TOPIC_ID, timestamp uint64, inferences state.Inferences) error

Insert a complete set of inferences for a topic/timestamp. Overwrites previous ones.

func (*Keeper) InsertReputer

func (k *Keeper) InsertReputer(ctx context.Context, topicsIds []TOPIC_ID, reputer sdk.AccAddress, reputerInfo state.OffchainNode) error

Adds a new reputer to the reputer tracking data structures, reputers and topicReputers

func (*Keeper) InsertWorker

func (k *Keeper) InsertWorker(ctx context.Context, topicsIds []TOPIC_ID, worker sdk.AccAddress, workerInfo state.OffchainNode) error

Adds a new worker to the worker tracking data structures, workers and topicWorkers

func (*Keeper) IsRequestInMempool

func (k *Keeper) IsRequestInMempool(ctx context.Context, topicId TOPIC_ID, requestId string) (bool, error)

func (*Keeper) IterateAllTopicStake

func (k *Keeper) IterateAllTopicStake(ctx context.Context) (collections.Iterator[uint64, cosmosMath.Uint], error)

func (*Keeper) MintRewardsCoins

func (k *Keeper) MintRewardsCoins(ctx context.Context, amount cosmosMath.Int) error

mint new rewards coins to this module account

func (*Keeper) RemoveAddressTopic

func (k *Keeper) RemoveAddressTopic(ctx context.Context, address sdk.AccAddress, topicToRemove uint64) error

RemoveAddressTopic removes a specified topic from the address's list of topics.

func (*Keeper) RemoveFromMempool

func (k *Keeper) RemoveFromMempool(ctx context.Context, request state.InferenceRequest) error

func (*Keeper) RemoveReputer

func (k *Keeper) RemoveReputer(ctx context.Context, topicId TOPIC_ID, reputerAddr sdk.AccAddress) error

Remove a reputer to the reputer tracking data structures and topicReputers

func (*Keeper) RemoveStakeFromBond

func (k *Keeper) RemoveStakeFromBond(
	ctx context.Context,
	topicsIds []TOPIC_ID,
	delegator sdk.AccAddress,
	target sdk.AccAddress,
	stake Uint) error

Remove stake from bond updates the various data structures associated with removing stake from the system for a given delegator and target it removes the stake upon target, from delegator, in amount. it also updates the total stake for the topic in question and the total global stake. see comments in keeper.go data structures for examples of how the data structure tracking works

func (*Keeper) RemoveStakeFromBondMissingTotalOrTopicStake

func (k *Keeper) RemoveStakeFromBondMissingTotalOrTopicStake(
	ctx context.Context,
	delegator sdk.AccAddress,
	target sdk.AccAddress,
	stake Uint) error

Remove stake from bond updates the various data structures associated with removing stake from the system for a given delegator and target it removes the stake upon target, from delegator, in amount. it *DOES NOT* update the total stake for the subnet in question and the total global stake. this is used by RemoveAllStake to avoid double counting the topic/total stake removal

func (*Keeper) RemoveStakeFromTopics

func (k *Keeper) RemoveStakeFromTopics(ctx context.Context, topicsIds []TOPIC_ID, stake Uint) error

Remove stake from an array of topics

func (*Keeper) RemoveUnmetDemand

func (k *Keeper) RemoveUnmetDemand(ctx context.Context, topicId TOPIC_ID, amt cosmosMath.Uint) error

func (*Keeper) RemoveWorker

func (k *Keeper) RemoveWorker(ctx context.Context, topicId TOPIC_ID, workerAddr sdk.AccAddress) error

Remove a worker to the worker tracking data structures and topicWorkers

func (*Keeper) SendCoinsFromModuleToModule

func (k *Keeper) SendCoinsFromModuleToModule(ctx context.Context, senderModule, recipientModule string, amt sdk.Coins) error

SendCoinsFromModuleToModule

func (*Keeper) SetInference

func (k *Keeper) SetInference(
	ctx context.Context,
	topicID TOPIC_ID,
	worker sdk.AccAddress,
	inference state.Inference) error

func (*Keeper) SetLastRewardsUpdate

func (k *Keeper) SetLastRewardsUpdate(ctx context.Context, blockHeight int64) error

Set the last block height at which rewards emissions were updated

func (*Keeper) SetParams

func (k *Keeper) SetParams(ctx context.Context, params state.Params) error

func (*Keeper) SetRequestDemand

func (k *Keeper) SetRequestDemand(ctx context.Context, requestId string, amount Uint) error

func (*Keeper) SetStakePlacedUponTarget

func (k *Keeper) SetStakePlacedUponTarget(ctx context.Context, target sdk.AccAddress, stake Uint) error

func (*Keeper) SetStakeRemovalQueueForDelegator

func (k *Keeper) SetStakeRemovalQueueForDelegator(ctx context.Context, delegator sdk.AccAddress, removalInfo state.StakeRemoval) error

For a given delegator, adds their stake removal information to the removal queue for delay waiting

func (*Keeper) SetTopic

func (k *Keeper) SetTopic(ctx context.Context, topicId TOPIC_ID, topic state.Topic) error

Sets a topic config on a topicId

func (*Keeper) SetTopicAccumulatedMetDemand

func (k *Keeper) SetTopicAccumulatedMetDemand(ctx context.Context, topicId TOPIC_ID, metDemand Uint) error

func (*Keeper) SetTopicStake

func (k *Keeper) SetTopicStake(ctx context.Context, topicId TOPIC_ID, stake Uint) error

Sets the stake in the network for a given topic

func (*Keeper) SetTopicUnmetDemand

func (k *Keeper) SetTopicUnmetDemand(ctx context.Context, topicId TOPIC_ID, amt cosmosMath.Uint) error

func (*Keeper) SetTotalStake

func (k *Keeper) SetTotalStake(ctx context.Context, totalStake Uint) error

Sets the total sum of all stake in the network across all topics

func (*Keeper) SetWeight

func (k *Keeper) SetWeight(
	ctx context.Context,
	topicId TOPIC_ID,
	reputer sdk.AccAddress,
	worker sdk.AccAddress,
	weight Uint) error

func (*Keeper) SubStakePlacedUponTarget

func (k *Keeper) SubStakePlacedUponTarget(ctx context.Context, target sdk.AccAddress, amount Uint) error

Used by Modify functions to change stake placements. This function subtracts from the stakePlacedUponTarget mapping ONLY and does not modify any of the other stake mappings e.g. delegatorStake totalStake or topicStake in a system.

func (*Keeper) SubStakePlacement

func (k *Keeper) SubStakePlacement(ctx context.Context, delegator sdk.AccAddress, target sdk.AccAddress, amount Uint) error

Used by Modify functions to change stake placements. This function subtracts from the stakePlacement mapping ONLY and does not modify any of the other stake mappings e.g. delegatorStake totalStake or topicStake in a system.

func (*Keeper) TopicExists

func (k *Keeper) TopicExists(ctx context.Context, topicId TOPIC_ID) (bool, error)

Checks if a topic exists

func (*Keeper) UpdateTopicInferenceLastRan

func (k *Keeper) UpdateTopicInferenceLastRan(ctx context.Context, topicId TOPIC_ID, lastRanTime uint64) error

UpdateTopicInferenceLastRan updates the InferenceLastRan timestamp for a given topic.

func (*Keeper) UpdateTopicWeightLastRan

func (k *Keeper) UpdateTopicWeightLastRan(ctx context.Context, topicId TOPIC_ID, lastRanTime uint64) error

UpdateTopicWeightLastRan updates the WeightLastRan timestamp for a given topic.

func (*Keeper) WalkAllTopicStake

func (k *Keeper) WalkAllTopicStake(ctx context.Context, walkFunc func(topicId TOPIC_ID, stake Uint) (stop bool, err error)) error

Runs an arbitrary function for every topic in the network

type LIB_P2P_KEY

type LIB_P2P_KEY = string

type REPUTERS

type REPUTERS = string

type REQUEST_ID

type REQUEST_ID = string

type TARGET

type TARGET = sdk.AccAddress

type TARGET_STR

type TARGET_STR = string

type TOPIC_ID

type TOPIC_ID = uint64

type UNIX_TIMESTAMP

type UNIX_TIMESTAMP = uint64

type Uint

type Uint = cosmosMath.Uint

type WORKERS

type WORKERS = string

Jump to

Keyboard shortcuts

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