If you’re confused about these weird acronyms, let me decipher them first:
- DPoS = Delegated Proof-of-Stake
- PoS = Proof-of-Stake
- PoA = Proof-of-Authority
In general, I see consensus protocols being divided into three major groups: Proof-of-Work (PoW), Proof-of-Stake and Proof-of-Authority.
Proof-of-Work relies on computing power and spending electricity for its consensus to work. Block producers (miners) compete by calculating hashes and whoever gets a hash (that complies with the certain rules) first, wins. Their block gets to be the next in the blockchain.
The second group, PoS, requires block producers to have a stake (in form of a native cryptocurrency) in the system. Basically, whoever has the most coins, holds the biggest chance to produce the next block. There are many different variants possible, for example using the age of a stake (Aged PoS) or even burning coins (Proof-of-Burn).
The third major group is Proof-of-Authority, which relies on identity as a stake. This means that only trusted nodes can participate in a network as block producers. If they misbehave, the trust in them is broken and they get banned from participating. For this to work efficiently, each block producer’s identity has to be known (note that PoW and PoS do not require this). Blockchains that use this approach are called permissioned.
Let’s take a closer look at the PoA protocols. There are two main approaches here: centralized and decentralized/distributed.
The centralized approach means that there is a central entity that selects nodes which can produce transaction blocks. This approach is used by closed-source and/or private blockchains. You cannot let just anyone run the block producing software in this network. You can either close-source it or you can whitelist the nodes allowed to participate (or both).
The most well-known cryptocurrency that uses this centralized approach is Ripple. The PoA protocol is also used on Ethereum’s testnets Kovan and Rinkeby.
The other approach is decentralized. This means that the community is allowed to choose which nodes have the authority to produce transaction blocks.
This, of course, involves elections. And elections are not possible without candidates and their identities. You cannot vote for something/someone whose identity you do not know (otherwise it’s just a lottery).
Identity does not necessarily mean knowing someone’s name (although this is usually an important feature). It can also involve other candidate’s features and actions, basically anything that persuades a voter that they share the common set of values.
Voting can occur in many ways. The most naive approach is to say that one node equals one vote. This, of course, brings up the “Sybil attack” problem, where someone can spin-up thousands of nodes and take over the network.
A much better approach is to weight the vote based on how many coins a node has: a stake. And this is where the DPoS naming misconception comes from.
All the nodes in the DPoS system vote on which nodes will become block producers (for example, they need to elect 11 such nodes). The voting power is based on a stake — nodes with more (native) cryptocurrency have more voting power. Once the 11 block producers are chosen, they create blocks in a predetermined order, one by one (there’s no competition among them such as in PoW).
As you can see, a stake is used only to elect block producers. But the real consensus (about the order of transactions) happens on the (distributed) PoA level, with block-producing nodes.
Please note that this article does not assume that some consensus protocol (group) is better than another, especially not between PoS and (distributed) PoA. I think DPoS is a pretty good consensus protocol, although it still needs to be tested on such a scale that PoW has already been. The article is more about semantics than about pros/cons of the different consensus protocols.
P.S.: I’d like to thank Luka Perčič and Simon Belak for reading a draft of this article and giving me feedback.