From the Ethereum Wiki:
In a private chain context, there are three consensus algorithms that make the most sense:
Proof of authority - essentially, one client with one particular private key makes all of the blocks
PBFT (or some other traditional byzantine-fault-tolerant consensus algorithm)
DPOS (or some other chain-based limited-validator consensus algorithm)
From Chain.com (a private chain software):
A consensus program specifies a set of N public keys and uses the CHECKMULTISIG and BLOCKSIGHASH instructions to confirm that the block witness includes M valid signatures on the block hash (where M and N are parameters of the algorithm). Each public key corresponds to a block signer. Block signers should never sign two different blocks with the same height. As long as no more than 2M - N - 1 block signers violate this rule, the blockchain cannot be forked. Because of this rule, block signers must coordinate to make sure they sign the same block. To ensure this, they rely on a single block generator. > The block generator collects transactions, periodically batching valid ones together into blocks. The generator sends each proposed new block to the block signers. Block signers only sign blocks that have already been signed by the generator.
Suppose that there is a publicly known list of permissioned participants (pub keys). At every X seconds, one participant is deterministically, randomly chosen to be a validator. That participant signs a block and broadcasts to the rest of the network. Peers accept that block because it was signed by the correct validator. If a validator fails to broadcast a block within Y seconds, the network picks another validator.
My question is: under what of those 3 categories the algorithms above fall? I assume Chain.com uses proof of authority, despite having many validators, since there is only one node generating blocks (so it doesn't really solve the problem). Algorithm 2 seems to be an instance of DPOS where all nodes have a fixed stake. Is that correct?