RE: Seeking Consensus on Consensus - DPOS or Delegated Proof of Stake and the Two Generals' Problem
The key point in DPOS consensus mechanism is how to elect the representatives(or witness) producing the blocks. You described the mechanism as "open community poll", but how to organize the poll can result in a very different governing structure.
For example, Steem has 20 witnesses plus 1 time-sharing witness, and each share can vote 30 times on different witnesses. The interesting part is why each share should have 30 times voting chances.
Under this rule, to become a witness does not necessarily depend on the majority of "community support". Instead, cross-voting structure among top 10 or 20 whales becomes the most important decision factor. If you get 20% voting, it is pretty safe to maintain the witness position and to get that amount of voting, you need just 10 other whales supports with at least 2% of the total Steem shares. You don't need to worry about all other community members' voting at all. So for the top whales, it is very "reasonable" to make agreements to do cross-voting each other and not to "betray" each other. There may not be a just one power block, there can be two or three different power groups voting internal members mostly. If one member betrays, it is very easy to pull down his seat.
If the system allows only one voting chance per share, this kind of cross-voting is impossible. Maybe one big shareholder can divide up his shares to multiple accounts and can occupy multiple witness seats, but it is very difficult to hold more than several unless he has more than 50% of the total shares.
When the number of representatives(or witness) is small (such as less than 100), and having multiple voting chances per share, it is easy for the top whales to collude to make a power block whose main goal is to maintain their prestige (and very profitable) positions.
This kind of DPOS poll system may be okay for a consortium chain with a limited number of established pre-existing power players such as a big enterprise consortium network, but not idealistic for a public chain, in particular for a public contents network where those witnesses can decide which content is good or bad.
Regarding this issue, I wrote a post several months ago,
https://steemit.com/steemit/@atomrigs/net-neutrality-and-curation-rewards
If I have a chance to design a new Steem system, I would do these things;
- At least 100 full-time witness nodes
- Only one witness vote chance per share
- Witness should have no curation voting power
- Witness rewards in terms of dollar amount should be capped.
I agree with this assessment entirely. Realistically there should be an infinite number of votes per user. Although this does need to be reduced in practice, 30 might be way to small. I agree that on the order of several hundred should be the target.
DPOS comes with many tradeoffs against other consensus protocols.
I would really like to see an implementation of steem on another blockchain or using another consensus mechanism. No premine would have been nice too.
I basically agree with him, while have some differences in specific.
For DPOS, monitoring witnesses and removing bad or lazy witnesses are very important. In this sense, 100 seems too big to make dynamics in the top active witness list. I think around 30-50 is a good number.
As he said, 30 votes can make the witnesses dependent on few whales, as Steem is now. A further problem is 30 is too many for individuals to evaluate and monitor witnesses. The bigger the number, the psychological burden will exponentially increase. 1 is good number too, but I personally prefer 3-5, which is similar to the number of "very close relationship".
Well if you are not using all of your 100 votes, you should delegate that power to someone who is. Plain and simple.
That can end up with the concentration of power.
This is the drawback of DPOS. The 30 limit also imposes a concentration of power. It ultimately depends on the scale of the network.
OK - that's a really important point.
Could we set up a rule that says a Producer cannot vote for any producer?
(Enforcement is tricky, because we can't show it easily. But when found out, it would be a substantial risk.)