Validator sets
Validators are grouped into sets that determine what behaviors are permitted to the validator and what data is stored on-chain.
There are three validator sets - consensus, below-capacity, and below-threshold - that are discriminated by the stake / voting power of their respective validators.
Two protocol parameters determine the composition of each validator set:
max_validator_slots
: the maximum number of validators allowed to participate in consensus of any blockvalidator_stake_threshold
: the minimum stake required to participate in consensus
With this in mind, each of the three validator sets is defined:
- Consensus: the set of validators that participates in consensus and voting on blocks. It contains the validators with the most voting power and cannot exceed
max_validator_slots
size. Validators in this set also require greater thanvalidator_stake_threshold
staked tokens. - Below-capacity: contains the validators who have greater than
validator_stake_threshold
stake but are not one of the topmax_validator_slots
validators. These are next in line to join theconsensus
set should space open up. - Below-threshold: contains all active validators with less than
validator_stake_threshold
stake
Any validator that is in one of the three validator sets above can be considered an active validator.
Querying the validator set of a given validator
A validator's state
can indicate the validator set to which it belongs. This can be queried at the CLI with:
namadac validator-state --validator $VALIDATOR_ADDRESS --epoch $EPOCH
The --epoch
argument is optional; if not provided, the state
will be queried at the current epoch.
Jailed and Inactive validators
Validators that are considered to be jailed
or inactive
cannot belong to one of the three aforementioned validator sets.
Extra restrictions are enforced and other transactions may be required in order for these validators to become eligible for consideration in consensus.
Jailed validators have committed protocol infractions or not maintained liveness requirements of consensus validators.
They can only return to an active validator set by submitting a successful unjail
transaction. See more details here.
Inactive validators have manually removed themselves from consideration in consensus activities with a deactivate
transaction.
This can typically signal that a validator has ceased operations and might signal delegators to unbond from it. See more details here.