How reducing the number of witness votes per account can improve decentralisation

in #steemlast year

Hi Everyone,

5Vote_Thumb.jpg

I recently posted about weighting witness votes based on ranking. Ranking enables a user to vote for many witnesses whilst reducing the influence of their stake to control many witnesses, possibly a majority.

In this post, I want to explain how reducing the number of witness votes per account makes it more difficult for one user to gain control over the blockchain.

Let us begin with the current system and assume we have two users. One user has 60% of the stake and the other has 40% of the stake. If each user casts 20 votes, the user with 60% of the stake will determine all 20 top witnesses. See Figure 1 below.

Figure 1: Voting in the existing system

CurrentCount.jpg

Note: Y-axis represents percentage of total stake. X-axis represents witnesses ranked 1 to 20. These are different witnesses for each user.


What if we reduced the number of votes to 10 per account?


If the number of votes are reduced to just 10 per account, the larger stakeholder cannot determine all 20 top witnesses with one account. Instead, the user with 60% of the stake will determine the top 10 witnesses and the user with 40% of the stake will determine the next 10. See Figure 2.

Figure 2: 10-vote system with two accounts

10Count.jpg

A user with 60% of the stake has no additional influence over witness determination than a user with 40% of the stake, if both users have only one account each.

What if a user divides their stake equally into two accounts?


A user is not limited to one account. A user could create as many accounts as they like. Let us assume the user with 60% of the stake divides their stake equally into two accounts. This user now has 20 votes but the stake supporting each vote is halved (i.e. 30% of total stake). If this user votes for 20 witnesses with these two accounts, 10 of the voted for witnesses will be supported by less stake than the account with 40% of the stake. Therefore, the user with 60% of the stake will determine 10 witnesses and the user with 40% of the stake will determine 10 witnesses as well. See Figure 3.

Figure 3: 10-vote system with larger user dividing stake into 2 accounts

10Count2Split.jpg

Equally dividing stake into 2 accounts, serves no benefit to the 60% stakeholder. However, the 60% stakeholder could divide their stake differently in an attempt to determine more witnesses.

What if the larger stakeholder strategically divides the stake?


To determine a witness, the 60% stakeholder needs to put more than 40% of the total stake behind the witness. To determine all witnesses with just 10 votes, a user needs at least 67% of the stake (i.e. 67%/2 > 33%). However, with 60% of the stake, a user could control as many as 14 or 15 witnesses. For example, to control 14 witnesses, the user could divide their stake equally into 14 accounts and vote for each witness 10 times. See Table 1.

Table 1: Strategic witness voting to control maximum number of witnesses

10Count14Split.jpg

Note: Each vote represents 4.3% (60%/14) of the total stake. Therefore 10 votes equals 43%.

All 14 witnesses would be supported by 43% of the total stake. The user with 40% of the stake would determine the remaining 6 witnesses. See Figure 4.

Figure 4: Strategic voting to determine the maximum number of witnesses

10Count14SplitG.jpg

With a 10-vote system with just two users, a user with 60% of the stake cannot determine a super majority (i.e. 17 witnesses) of Steem witnesses to control the blockchain. However, if that user could obtain 63% (i.e. 17/27, see Appendix for formula) of the stake, they would be able determine 17 witnesses.

What if we reduced the number of votes to 5?


If we reduced the number of votes to just 5, it would become even more difficult for a user to determine at least 17 witnesses. If there were only 5 witness votes, a user with 60% of the stake could only determine 12 of the 20 top witnesses. This could be achieved by dividing the stake across 12 accounts. The user with 40% of the stake would need to divide their stake into 8 accounts. The example in Table 1 explains how this can be done. See Figure 5 for the amount of stake supporting each witness.

Figure 5: Strategic witness voting with 5 votes per account

5CountSplit.jpg

If the number of votes per account was reduced to just 5, a user would need 77% (i.e. 17/22) of the stake to determine 17 witnesses.

We have thousands of users


I have demonstrated that reducing the number of witness votes reduces the number of witnesses a user can determine. However, I have used only two users in all my examples. For thousands of users the same logic applies. The assumption regarding one large user remains the same but the remaining stake is divided over thousands of users. A single user can divide stake to optimise the number of witnesses they determine. Thousands of users cannot be expected to operate efficiently or be completely united to secure the same top witnesses.

Let us assume that half of the community support the same top alternative witnesses to the largest stakeholder.

  • With 20 or more witness votes, a user needs to hold 33% (i.e. 20/60) of the stake to determine all 20 top witnesses.
  • With 10 or more witness votes, a user needs to hold 46% (i.e. 17/37) of the stake to determine at least 17 witnesses.
  • With 5 or more witness votes, a user needs to hold 63% (i.e. 17/27) of the stake to determine at least 17 witnesses.

Note: Formula is explained in the Appendix.

Based on my assumptions, if there are more than 20 votes per account, as little as 33% of the stake could be sufficient to control the top 17 witnesses. Even with 10 votes per account, it is likely that owning as little as 45% of the stake could be sufficient to control the top 17 witnesses. Reducing the number of votes to 5 per account is considerably more resistant (63%) to a large stakeholder attempting to take over the blockchain.

Reduced freedom of choice

NOchoice.jpg

Even if the community can muster sufficient support to stop a user with a very large stake from determining all the top witnesses, this support comes at a cost to the less popular witnesses. Many users will feel compelled to drop support for witnesses that are not close to entering the top 20, as supporting these witnesses does not contribute to preventing the takeover. The less popular witnesses, regardless of what they offer to the blockchain, have little incentive to remain a witness, as they are unlikely to be a top witness. For the same reasons, there is also no incentive for new witnesses.

Therefore, the blockchain needs to be able to defend itself from large stakeholders without requiring the community to abandon their favourite witnesses to do so. Reducing the number of witness votes to around 5 would achieve this security without the disruption.

Conclusion

OptionsOPEN.jpg

As demonstrated in this post, reducing the number of witness votes to 5 enables the community to prevent a large stakeholder from being able to determine 17 or more witnesses. I also believe that reducing the number of witnesses to as low as 5 creates other problems. For example, for the blockchain to progress, we need an environment that encourages new faces and variety. I believe limiting accounts to just 5 votes is likely to result in stakeholders playing safe and voting for familiar witnesses.

In my post Steem Witnesses - Weighted votes based on ranking, I discuss applying a weighted ranking system to witnesses. The logic I have explained in this post, also applies to weighted ranking. Reducing the weight of each rank by 20% has an equivalent effect to reducing the number of witness votes to 5. See Table 2.

Table 2: Ranking with 20% weight reduction per vote vs. 5 votes

5or20.jpg

In a 5-vote system, a user could divide their stake into many accounts and replicate a ranked voting system. This would involve quite a bit of effort and has implications for voting on content.

I hope you find this post useful for explaining the effect of reducing witness votes per account.


Appendix


Formula for calculating percentage of stake required to determine 17 of 20 witnesses

No. of votes × % Stake User/ No. controlled witnesses = (1 - % Stake User)
(No. of votes + No. controlled witnesses) × % Stake User/ No. controlled witnesses = 1
% Stake User = No. controlled witnesses/ (No. of votes + No. controlled witnesses)

E.G. 10 votes

% Stake User = 17/(10 + 17) = 63%

Note this formula does not apply to less than 4 votes per account or more than 17 votes per account.


Formula for calculating percentage of stake required to determine 17 of 20 witnesses in a large community.

No. of votes × % Stake User/ No. controlled witnesses = (1 - % Stake User)/2
(2 × No. of votes + No. controlled witnesses) × % Stake User/ No. controlled witnesses = 1
% Stake User = No. controlled witnesses/ (2 × No. of votes + No. controlled witnesses)

E.G. 10 votes

% Stake User = 17/(2 × 10 + 17) = 46%


More posts

MORE_POSTS_GIF.gif

If you want to read any of my other posts, you can click on the links below. These links will lead you to posts containing my collection of works. These posts will be updated frequently.

Pt1.jpg

Pt2.jpg

Pt3.jpg

Pt4.jpg


Guide to the Steem Ecosystem (Udemy Course)

COVER_ALT.jpg

I have launched my Udemy course ‘Guide to the Steem Ecosystem’. This course takes you on journey through the Steem Ecosystem. The course consists of 6 sections. These sections are as follows:

  • Getting Started
  • Navigating Steem Frontends
  • Becoming a Steem User
  • Behind the Scenes
  • The Wonders of the Steem Ecosystem
  • Additional Content (SteemFest 4, SMTs, Communities, etc.)

The course contains 56 video lectures (about 13.5 hours of viewing), 56 multiple-choice questions (10 to 12 at the end of each section), and 59 downloadable resources (presentation slides and additional material such as white and blue papers). The course is free-of-charge. Click the link above to access the course.

I also have an economics course, titled Economics is for Everyone, which contains about 4 hours of video content.


level.png

Brand2018.gif

Steem - The Future of DApps

DAppsVID.gif

Sort:  

Since limiting the number of votes for witness positions can be worked around by dividing the stake into different accounts wouldn't the better solution simply be to have 1 vest = 1 vote?

For instance, if you have 100 vest and you vote for one witness your vote is worth 100 but if you vote on 2 witnesses each vote is worth only 50. In my view the advantage of using a 1 vest = 1 vote is that the voting potential doesn´t get wasted but by using a system with a set amount of votes you can have alot of voting potential underutilized when stakeholders do not use all of their votes.

I would also add an economic incentive to voting on blockproducers by linking the inflation rewards to it.

So this would involve an automatic adjustment whenever someone votes on another witness. That would be a good way of utilizing stake as well as preventing anyone from dominating the voting. My only concern is that some people might not understand why their support for a witness falls when they vote for someone else. Still, this is one of better solutions I have seen.

This sounds like a great idea

Support

Thanks for doing and presenting the math...It offers food for thought in considering a better approach to witness voting, especially during this critical period.

Even before recent events, larger accounts such as freedom had a lot of influence in determining top witnesses. I understand a large stakeholder wanting some representation in the top 20 but to be able to control all or even half is too much power for one user.

Posted using Partiko Android

I'd be down with that, if it had a toggle switch.
5 when we have id'd an attack, and 30 when the sailing is clear.

We definitely need a way of distributing the witnesses and reducing the capacity for a single stakeholder to take control. This is a really good suggestion. I thought we could implement a cap on how much influence your vests give you over the witnesses, but this is solution seems much more straight forward.

I have thought about a cap but that can be worked around by using multiple accounts. Ideally, we need a system that cannot be easily gamed.

Yeah. That had occurred to me as well. You could just divide up your accounts like in your example, and it would cease to be an impediment. I hope we're able to implement something like your limits on voting with Sun interfering. I suspect he'd hate to diminish the power he has.

@spectrumecons, At the end of the day we are left with few Probability Points because here we are talking about one specific area and that is, Witness Voting. Let's see how this Situation will unfold. I really want to appreciate your effort which you've put in this Mathematical and Calculative possibilities. Stay blessed.

Posted using Partiko Android

Thanks @chireerocks, I think it will remain a deadlock for a while longer. Things could change once the exchanges have powered down enough for someone to buy in and push witnesses up. It is likely that Justin will buy Steem to push out our top witnesses, which is concerning.

Welcome and let's see how this situation will unfold. Stay blessed.

Whatever the case, the current system for selecting witnesses needs revisiting. We don't want to land in this situation again.

True. Let's see how this new System turns out.

Hi @spectrumecons!

Your post was upvoted by @steem-ua, new Steem dApp, using UserAuthority for algorithmic post curation!
Your UA account score is currently 4.652 which ranks you at #1143 across all Steem accounts.
Your rank has dropped 4 places in the last three days (old rank 1139).

In our last Algorithmic Curation Round, consisting of 81 contributions, your post is ranked at #78.

Evaluation of your UA score:
  • Some people are already following you, keep going!
  • Try to show your post to more followers, for example via networking on our discord!
  • Try to work on user engagement: the more people that interact with you via the comments, the higher your UA score!

Feel free to join our @steem-ua Discord server

 last year Reveal Comment