The v2 specs must include a simple multisignature proof-of-stake application, which we will use to manage validator sets on the decentralized testnets.
Basic requirements:
- Validators can register and deregister
- Validators can have associated voting weights
- New validators must be approved by a quorum of existing validators
- Validators can unilaterally deregister
Resource kinds:
- A
Validatorresource has:- a
consensusIdentityused in consensus - a
operatorIdentityused to authorize operational changes
- a
- The
Validatorresource logic checks:- if the
consensusIdentityoroperatorIdentitychanges, theoperatorIdentitymust sign
- if the
- A
ValidatorSetresource has:- a map of
Validatorreferences to voting weights (unsigned integers)
- a map of
- The
ValidatorSetresource logic checks:- if a
Validatorreference is removed, the validator’s operator identity must sign - if a
Validatorreference is added, or the voting weight changed, a 2/3 quorum of existing validators by weight must sign
- if a
There’s also a read-only transaction to retrieve the current validator set which simply iterates over the map in ValidatorSet and normalizes the weights. This validator set can then be used by the consensus engine to produce the next block.
Discuss! ![]()