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_slotssize. Validators in this set also require greater thanvalidator_stake_thresholdstaked tokens. - Below-capacity: contains the validators who have greater than
validator_stake_thresholdstake but are not one of the topmax_validator_slotsvalidators. These are next in line to join theconsensusset should space open up. - Below-threshold: contains all active validators with less than
validator_stake_thresholdstake
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 $EPOCHThe --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.