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)

Algorithm 1:

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.


Algorithm 2:

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?

  • Algorithm 2 is not really a full consensus algorithm: "deterministically, randomly chosen to be a validator." How is this validator chosen in a way that can't be manipulated? That is the entire goal of PoW, so I'd say that Alg.2 is PoW – Tjaden Hess Jan 10 '17 at 18:17
  • @TjadenHess there is a list of known participants so you can just cycle through it, no? – MaiaVictor Jan 10 '17 at 19:58
  • That's not random, though. That's essentially a consortium chain. But it is similar to DPoS – Tjaden Hess Jan 10 '17 at 20:02
  • That is what I mean. Those 3 algorithms categories are 3 consortium consensus algorithms categories. The 2 algorithms I showed are (I believe) consortium consensus algorithms. I'm asking what is their categories. Consortiums still need some consensus mechanism between the participant nodes, it is just easier than the general case with unknown nodes AFAIK. – MaiaVictor Jan 10 '17 at 20:04

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.