You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

39 lines
1.7 KiB

  1. # Validators
  2. Validators are responsible for committing new blocks in the blockchain.
  3. These validators participate in the consensus protocol by broadcasting
  4. *votes* which contain cryptographic signatures signed by each
  5. validator's private key.
  6. Some Proof-of-Stake consensus algorithms aim to create a "completely"
  7. decentralized system where all stakeholders (even those who are not
  8. always available online) participate in the committing of blocks.
  9. Tendermint has a different approach to block creation. Validators are
  10. expected to be online, and the set of validators is permissioned/curated
  11. by some external process. Proof-of-stake is not required, but can be
  12. implemented on top of Tendermint consensus. That is, validators may be
  13. required to post collateral on-chain, off-chain, or may not be required
  14. to post any collateral at all.
  15. Validators have a cryptographic key-pair and an associated amount of
  16. "voting power". Voting power need not be the same.
  17. ## Becoming a Validator
  18. There are two ways to become validator.
  19. 1. They can be pre-established in the [genesis state](../../tendermint-core/using-tendermint.md#genesis)
  20. 2. The ABCI app responds to the EndBlock message with changes to the
  21. existing validator set.
  22. ## Committing a Block
  23. *+2/3 is short for "more than 2/3"*
  24. A block is committed when +2/3 of the validator set sign [precommit
  25. votes](../spec/blockchain/blockchain.md#vote) for that block at the same `round`.
  26. The +2/3 set of precommit votes is called a
  27. [*commit*](../spec/blockchain/blockchain.md#commit). While any +2/3 set of
  28. precommits for the same block at the same height&round can serve as
  29. validation, the canonical commit is included in the next block (see
  30. [LastCommit](../spec/blockchain/blockchain.md#last-commit)).