|
|
- Validators
- ==========
-
- Validators are responsible for committing new blocks in the blockchain.
- These validators participate in the consensus protocol by broadcasting
- *votes* which contain cryptographic signatures signed by each
- validator's private key.
-
- Some Proof-of-Stake consensus algorithms aim to create a "completely"
- decentralized system where all stakeholders (even those who are not
- always available online) participate in the committing of blocks.
- Tendermint has a different approach to block creation. Validators are
- expected to be online, and the set of validators is permissioned/curated
- by some external process. Proof-of-stake is not required, but can be
- implemented on top of Tendermint consensus. That is, validators may be
- required to post collateral on-chain, off-chain, or may not be required
- to post any collateral at all.
-
- Validators have a cryptographic key-pair and an associated amount of
- "voting power". Voting power need not be the same.
-
- Becoming a Validator
- --------------------
-
- There are two ways to become validator.
-
- 1. They can be pre-established in the `genesis
- state <./genesis.html>`__
- 2. The ABCI app responds to the EndBlock message with changes to the
- existing validator set.
-
- Committing a Block
- ------------------
-
- *+2/3 is short for "more than 2/3"*
-
- A block is committed when +2/3 of the validator set sign `precommit
- votes <./block-structure.html#vote>`__ for that block at the same
- ``round``. The +2/3 set of precommit votes is
- called a `*commit* <./block-structure.html#commit>`__. While any
- +2/3 set of precommits for the same block at the same height&round can
- serve as validation, the canonical commit is included in the next block
- (see `LastCommit <./block-structure.html>`__).
|