cosmos-sdk/x/stake/keeper/_store.md

1.8 KiB

Stores

This document provided a bit more insight as to the purpose of several related prefixed areas of the staking store which are accessed in x/stake/keeper.go.

IAVL Store

Validators

  • Prefix Key Space: ValidatorsKey
  • Key/Sort: Validator Operator Address
  • Value: Validator Object
  • Contains: All Validator records independent of being bonded or not
  • Used For: Retrieve validator from operator address, general validator retrieval

Validators By Power

  • Prefix Key Space: ValidatorsByPowerKey
  • Key/Sort: Validator Power (equivalent bonded shares) then Block Height then Transaction Order
  • Value: Validator Operator Address
  • Contains: All Validator records independent of being bonded or not
  • Used For: Determining who the top validators are whom should be bonded

Validators Cliff Power

  • Prefix Key Space: ValidatorCliffKey
  • Key/Sort: single-record
  • Value: Validator Power Key (as above store)
  • Contains: The cliff validator (ex. 100th validator) power
  • Used For: Efficient updates to validator status

Validators Bonded

  • Prefix Key Space: ValidatorsBondedKey
  • Key/Sort: Validator PubKey Address (NOTE same as Tendermint)
  • Value: Validator Operator Address
  • Contains: Only currently bonded Validators
  • Used For: Retrieving the list of all currently bonded validators when updating for a new validator entering the validator set we may want to loop through this set to determine who we've kicked out. retrieving validator by tendermint index

Transient Store

The transient store persists between transations but not between blocks