How to prevent DPOS being abused

Posted by Howard on December 5, 2018

[This post was voted by Daniel Larimer in Steemit and I am quite proud of that.]

DPOS, with full name of “Delegated Proof-of-Stake”, is a consensus mechanism proving its success in Bitshares and Steemit. Put it in a simple way, block producers are generated by votes from token holders.

In Bitcoin, miners compete for POW to calculate hash, to pack up block to the chain and get rewarded, more and more miners consolidate together to some big pools to mine, as we know, 4 of the largest mining pools are located in China due to cheap electric bills, thus POW consensus systems not only consume large amount of electric energy, but also become more and more centralized.

A system based on DPOS is different, e.g. Bitshares or Steemit, it has only 21 block producers or witnesses to mine. These block producers are selected by voting from token holders.

E.g. in steemit, block producers or witnesses are generated by voting from steem holders. Some steem holders want to vote according to their own will, others like to delegate their voting powers to agents. The voting system will rank witness candidates according to the token weighed votes they get. e.g. If Tom has 1000 SP ( Steem Power ), and Jerry has 300 SP, Tom will have more weigh over Jerry in their votes. The top 20 ranked witness candidates will have the right to generate a block each in a round, another witness candidate will be chosen from the remained candidates ranked out of the top 20 according to their weighed votes, they are picked up by turn. Thus in each round, there will be 21 witnesses to produce 21 blocks and it takes 3 second for each block to be produced.

This system looks perfect in terms of decentralization. However, there is still way to manipulate the votes on how witnesses can be generated. In steemit , each steem holder can vote for maximum of 30 witnesses. In my opinion , this is too much. If a person or institute holds a large amount of steems, it can exert huge influence on those top 20 witnesses, thus the blocks can be produced according to the wills of the people with too many steems.

In this way, an initially designed decentralized system would probably become centralized and manipulated by minority just as present POW does.

It would be a tragic to let a decentralized system being totally controlled by money. I would raise up some solutions for this. We can remain the maximum numbers of votes ( 30 in Steemit ) each voter has.

One solution is to use reputation weigh to evaluate the votes on witnesses, as you know, steem can be obtained over seconds, but reputation has to be accumulated year after year. Therefore, the steemit ( or the bitshares, eos which use DPOS for consensus ) cannot be manipulated by money, but maintained by people who contribute to the community and amass their reputations.

Another solution is somehow like current voting system in many western countries. Each EOS holders has equivalent right to vote and has the same weigh so that the system becomes purely decentralized and cannot be manipulated by single person or institute.

With the above two solutions, EOS token’s function may be reduced too much and not beneficial to the market price of EOS token. I have the final solution which eos.io system can use a combination of both EOS tokens and reputation to consider while voting on block producers or other proposals. Yes, we can use EOS tokens as one of elements in consideration of voting power, however we should apply a cap to that. e.g. we can restrict voting power of EOS tokens to 10000 tokens and this number can be obtained by voting using reputation weigh as well. By utilizing both reputation and a capped EOS tokens in the voting system, DPOS consensus system can be more fair and efficient, in addition, EOS tokens will still be very popular but its price won’t get crazy.

I hope @dan can notice this post by chance and reconsider the implementation of DPOS to the coming EOS.io software.

Related topics: