Witness Voting Schemes: An Analysis

in #steem4 years ago (edited)

Hi everyone, in the light of the current situation there we numerous discussions about changing the witness voting schemes.

I made such a proposal in a previous post: here already. However, it got me in a discussion with a few community members and they changed my mind on this topic. In the light of this I want to analyze these proposals.

Goals:

First of all, we have to define the goal we want to achieve with this voting scheme. In this context, there are even different degrees of goals we want to achieve. I will go through them and explain it while we go.

Strong: No influence on the top 20 witnesses:

The strongest goal would take the Influence of Steemit Inc away completely:

  • Steemit Inc should be able to vote in more than 3 witnesses under any circumstance.
  • Steemit Inc is not able to temporarily vote more than 10 witnesses.

The strong goal would be a high level of decentralization. Steemit Inc could temporarily block a hardfork, but due to vote shuffling of the community a majority can be achieved again and a hardfork can be decided against the will of the single party.

Medium: Limited influence on the top 20 witnesses:

Steemit Inc is able to temporarily vote in max 10 witnesses (no majority).
Steemit Inc is not able to vote temporarily more than 16 witnesses.

The medium goal would also only be a medium level of decentralization. Thus, while Steemit inc would be temporarily able to run a softfork (bad enough), at no moment the single party would be able to vote in enough witnesses to run a hardfork. Eventually, then, the community could take over the majority of witness votes again.

Weak: Strong influence on the top 20 witnesses:

Steemit Inc is able to temporarily vote all top 20 witnesses
Steemit Inc is not able to vote more than 16 witnesses permanently.

The weak goal would allow Steemit Inc to vote in all 20 witnesses temporarily (similarly to what happened). However, eventually the community would be able to elect at least 4 top 20 witnesses to stop a hardfork.

Pre-Definitions:

I will analyze 5 different voting schemes in the light of this:

  • The current scheme
  • 1 SP 1 vote
  • 3 votes per user
  • No voting limit
  • Downvoting Witnesses

For simplification reasons I will talk in k mvests during this post.
Thus when I am talking about 181 votes I am talking about 181.000mvests of votes.

It is very important to achieve the medium goal, because a temporary super majority allows the single entity to quickly push through a hardfork or do double spending.

Base values:

I will be using the following base values for all the simulations based on the current situation:

  • The highest community witness has 181 votes
  • The lowest community witness in the top 20 has 158,4 votes
  • The highest steemit inc witness has 159,2 votes
  • The lowest steemit inc witness (in the top 20) has 157,9 votes
  • The lowest community witness to achieve a super majority has 144,3 votes
  • The lowest of the top 20 community witnesses has 124,6 votes.
  • The lowest of the single party has 157,7 votes.

Thus we assume the following (favorable) conditions:

  • Community has full power over 181 votes
  • Steemit Inc has power over 157,7 votes

The biggest Steemit Inc + Poloniex accounts have this stake distribution:

57,26
37,9
22,87
20,3
6,2
3,0
1,2
1,5

Sum = 150,23 -> 7,7 votes come from the community currently

We cannot say a lot about how the community stake is distributed. However, we also know that the biggest community stakeholders currently have their stake at single accounts.

Blocktrades has 9,3 votes.
Freedom has 20,8 votes

Cases:

Best case:

  • Votes are optimally distributed

Worst case:

  • Votes are equally distributed

Voting schemes:

Current scheme:

  • Each user has 30 votes.
Advantage: Overlap

With 30 witness slots there is the possibility for a lot of overlap between the different witnesses, this makes it more difficult for a single stakeholder to vote any witnesses into the top 30.

Disadvantage: Number of Votes

The high number of votes can allow a single stakeholder with enough stake at a single account to select all top 30 witnesses.

Current situation:

Since this is the case we currently have we can analyze what happened:

  • Previous to involving the exchanges we had around 86 votes (source) at the most voted witness.

Steemit Inc having power over 157,7 votes was able to elect all top 20 witnesses. Since the community was able to organize itself enough witnesses could be voted back to achieve the weak goal.

After fighting the strong voting apathy, now, we are achieving the medium goal since Steemit Inc is not able to vote in more than 10 of their witnesses.

The strong goal may be achieved if:

  • More people continue voting
  • Community Members that are voting for the Steemit Inc witnesses stop voting for them.

The medium goal can be in risk if:

  • Community members start distributing their votes again such that the top 4 has less than 157,7 votes.

The weak goal is always guaranteed unless:

  • Exchanges participate in the voting process
  • Steemit Inc acquires enough stake

Best case:

In the best case in this voting scheme we would have 100% overlap. This way, guaranteed all our top 30 witnesses would be voted in with the 181 votes of #1. The highest witness of the single party has only 159,2 votes.
Thus, the strong goal would always be guaranteed!

Worst case:

In the worst case votes would have to be distributed among the top 100 with minimal overlap. This way the 181 votes would be watered down strongly enough to only achieve the weak goal.

If we stay with this voting scheme, as a community we have to guarantee that at least the top 4 witnesses always have enough votes to avoid this.

1 SP 1 Vote Scheme:

Advantage: Simplification

Every user only votes for 1 witness, big users will have to split stake to vote for several witnesses. This is easier for new users to grasp and identification is established. Single party has to split stake to vote for many witnesses.

Disadvantage: No Overlap

There is no overlap between witnesses to stop a single party to vote witnesses into the top 20.

Best case:

We have to split the best case into two situations:

  • Optimal distribution of votes
  • Optimal distribution considering current stake
Optimal Distribution With Current Stake

Before the takeover, as previously explained the community voted with 86 votes. Optimally distributed, even in the best case, this would not be enough to stop the exchanges from breaking the softfork.

Since exchanges had more votes together than the 86, they could also optimally distribute their votes and break this easily.

However, it would be enough to achieve the medium goal under the optimal conditions (Steemit Inc would not be able to force a hardfork due to the centralization of stake).

Optimal Distribution with distributed stake

However, this looks different if Steemit Inc had their stake distributed well.
It would allow, Steemit Inc to distribute their stake optimally as well.

Only the weak goal could be achieved by optimally coordinating the community

Community can avoid hardfork, but steemit inc can have majority of witnesses.

However, in this case the community coordination is much more complex because the right amount of people have to vote for the right witnesses instead of having everyone vote for the same witnesses.

Worst case: Equal distribution

With Current Stake

With the current stake Steemit Inc this would not differ significantly from the best case. Steemit Inc would not be able to vote all 20 witnesses due to the allocation of stake to the big account.

With distributed stake

However, this looks entirely different considering distributed stake.

181 votes equally distributed over all top 20 accounts results in 9,03 votes.

Steemit Inc would spread their votes ovoer 17 accounts resulting in 9,22 votes allowing Steemit Inc to temporarily take over a super majority and force a hardfork.

What follows would be the community voting all for 4 witnesses to stop any hardfork as soon as possible.
With very difficult coordinator (spreading votes slowly to more witnesses) it would be possible to take over a majority of witness slots.

However, that would require a ridiculous amount of coordinator among the community.

Conclusion:

This would force Justin Sun to distribute his stake over several accounts since he already said that he would vote witnesses if it is really necessary. This would allow him easily to stop hardforks from happening.

Additionally, this would most likely not have avoided the situation we are in. Votes hadn't been distributed optimally before justin sun arrived and he would've been able to allocate all top 20 slots as well temporarily.

Strong community coordinator would be necessary to press him out. This would result in exactly the same situation we are in right now.

However, this would not allows us to remove all his witnesses from the top 20. (In the current scheme this is theoretically feasible).

Voting scheme: Max 3 witness votes

Advantage: Simple and a bit of overlap

Disadvantage: Not enough overlap

I am only going to describe the worst case, since the best case is pretty equal to the best case of the 1 SP 1 vote.

Worst case: No overlap and equal distribution.

27,15 votes per witness with equal distribution, single party can split stake again, vote 17 witnesses and have 27.7 votes.

This has the same outcome as 1 SP 1 Vote.

Other schemes: Witness downvoting

Give people upvotes and downvotes for witnesses.

Advantage: Overlap and better control for users who dislike certain witnesses

Highly controversial witnesses could be outvoted.

Disadvantage: Single user has better control of up and downvotes.

Single will be able to coordinate its downvotes and upvotes better than the community.

This approach would be interesting from a governance perspective, however, it allows a single entity to attack more easily. Since because of voting apathy the existing witnesses would have a bunch of temporary downvotes giving them less overlap.

Other scheme: Infinite witness votes

You can vote as many witnesses as you please.

Advantage: Much much much more overlap

This is simpler because you can tell users to vote everyone they thing is a good fit and it causes a lot of overlap which makes it much more difficult to achieve a hostile takeover.

Disadvantage: Complexity.

However, coding this could be more complex.

In this case the overlap would be much bigger. Voting for "stale" witnesses is no problem because you got enough witness votes. If you like all witnesses you can vote all. This is potentially more democratic as well.

Conclusion:

As already discussed, none of these solutions would have avoided the exchanges to help takeover the chain.

We had only 86 votes voting for witnesses compared to 181 votes now. This was clearly not enough to avoid a hostile takeover. We can be sure that the 86 votes would not be distributed optimally.

Restricting witness vote is only an advantage because the biggest stakeholders currently have their stake on a single account. Thus, after this restriction they would most likely all power-down and distribute their stake more equally to optimize their witness votes. This would make the entire process less transparent and in the end result in the same situation we have now. However, it would prevent us from ever achieving the strong decentralization goal and always allow Steemit Inc maintain some influence over the platform.

As many times discussed, the biggest threat for the platform is having stake that is not voting for witnesses. There has to be a bigger incentive for voting for witnesses to guarantee that the witnesses have enough votes to avoid a hostile takeover.

A suggestion of me is:

  • Only giving SP inflation to users that vote at least for x active witnesses.
  • Allowing infinite witness votes to vote for all witnesses you agree on to produce more overlap.
Sort:  

Typo in the conclusion "18 votes" "181 votes"

Ty, I corrected it

Great breakdown! Thank you for doing it. Much better than the other proposals we see out there which don't take the time to more systematically go through the scenarios.

Thank you for the thorough writeup. Starting from the current distribution makes sense - and I agree that the non-voting stakes are the "threat" in terms of increasing uncertainty and hence decision making becomes more difficult.

Hello!

This post has been manually curated, resteemed
and gifted with some virtually delicious cake
from the @helpiecake curation team!

Much love to you from all of us at @helpie!
Keep up the great work!


helpiecake

Manually curated by @solominer.


@helpie is a Community Witness.

What do you mean by 3 votes per user ?

"1 SP 1 Vote Scheme:
Advantage: Simplification'

"Every user only votes for 1 witness, big users will have to split stake to vote for several witnesses. This is easier for new users to grasp and identification is established. Single party has to split stake to vote for many witnesses."

This is incorrect. What you describe here is 1a1v, not 1t1v, which is how it is labeled. A better way to understand 1t1v is that witness vote VP depletes 100%. Thus an account can vote however many different witnesses they want to, but can only vote each SP once, because SP already voted with has no VP remaining. So the account can vote all their SP for one witness, and be done, as you suggest above. However, they could also split their SP into 30 witnesses. If they do that, their SP is split amongst the witnesses they vote for, and they do not vote any SP for more than one witness.

For example if they have 30 votes, they can vote that all for one witness, or 1 vote for each of 30 witnesses in the above example, or any variation between, but will not have more than 30 votes. [I am using votes as you do throughout the post, meaning Mvests.]

Thanks!

On purpose. 1t1v basically allows you to distribute your voting stake to as many accounts as you want without having to power it down. So basically 1t1v is like a 1a1v where every account has only 1 SP.

"1t1v is like a 1a1v where every account has only 1 SP."

I don't even understand this analogy. 1t1v allows you to distribute your stake as witness votes as you will, but to only vote each SP once. If you have more than one witness you want to vote for, you can split your SP however you want. It's nothing like 1a1v, which only allows one account per user to vote, no matter if your other accounts have SP.

If every account on Steem only has 1 SP. Then 1t1v == 1a1v. This allows maximum flexibility to allocate stake to votes. This is the assumption I work with.

Not at all, because I can vote that one SP in fragments on 30, 50, or 100 witnesses. To vote 100 witnesses with 1 SP I'd just vote at 1% VP.

What 1t1v really is, is just 100% depletion of VP. Then each SP you vote is depleted of VP, and cannot be voted again.

That's 1t1v.

 4 years ago  Reveal Comment