New Witness Voting System

5 Min Read
979 words


I had already written this post weeks ago but there was a bug on LEOfinance and I lost it. You'll just have to take my word for it that it was good and had a good introduction and everything. Now that I have to rewrite it I'm just going to stick to the skeleton.

We need to change witness voting into a point system so it's a bit more versatile. Being able to vote for 30 witnesses (30 votes : 1 coin) might be too many, while being able to vote one to one may not be enough. It all depends on what the goal is.

tug o war.jpg

30 witness votes is very good if the token distribution of Hive is extremely decentralized. This is why it failed so hard in the face of the Steemit Inc ninjamine. One account had way too many coins and was able to elect all 20 consensus witnesses at once: causing systemic failure.

This led me to believe that we should obviously have one-to-one voting. One coin: one vote. You'd be able to vote for as many witnesses as you wanted but you have to allocate a share that doesn't exceed your total stack. What is the problem with this?

The problem is that a millionaire could hop on Hive and just upvote their own witnesses to the top 20 and the network wouldn't really be able to stop them. One to one voting allows a big stack to get a single witnesses into the top 20 that could be a bad actor or just a yield farmer that isn't really bringing any value to the network.

So there is a push and pull between how many witness votes we should be able to cast. Do we care more about stopping a few witnesses from getting to the top that shouldn't be there, or do we care more about preventing another complete systemic failure?

To be fair another complete systemic failure is much harder to achieve now that the ninjamine has been largely neutralized into the dev fund. That money should have been destroyed but what are ya gonna do. Beggars can't be choosers.


New witness voting point system.

So I thought of a system we could transition to that would be compatible with the old system. Each user is allocated a certain number of points according to how much Hive they have powered up. There are a couple of variables that can be changed so that Hive can dynamically choose how many witnesses 1 coin can vote for.


It doesn't really matter how many points someone gets in exchange for their powered up Hive. Easiest way to do it is a one to one conversion. Could be 1:1 HivePower for points or 1:1 Vests for points if that makes more sense on the backend.

The variable that really matters is the maximum percentage of your total points that can be allocated to a single witness. If 100% of all points can be allocated to one witness: this is the same as 1:1 voting described above. If the maximum percent of points was 3.333% (1/30) this would be the same system we have now.

This makes the transition to this new superior system of witness voting easy, because it can begin with the rules that we already have now. The max_percent variable would be 1/30, and the system would be exactly the same at the start.

However, then we can start lowering the variable. 1/25 or 1/20 would be a good start. Then users could start allocating more points to their favorite witnesses if they wanted to.

Why is this system superior?

Because it's perfectly compatible with the system we have now, but there are way more options moving forward. Want to vote for 100 witnesses? The system allows that: you're allowed to allocate 1% of your points to each witness because you haven't exceeded the maximum 3.333%. Want to vote for 10 witnesses at full power and 40 more witnesses at half power? The system allows this as well. It's a much more flexible system.

This system also doesn't make the UX any more complicated. Just like upvoting posts, users would be able to upvote witnesses with a scroll bar that goes from 1% to 100% voting power rather than every vote being automatically 100% voting power. Hive users are already familiar with this UX so it adds zero complexity/learning-curve to Hive... which is a big deal because Hive is already too complex for new users.


I also think we should add a small downvote pool (10%-25%) in case bad actors do start raising the ranks. This would be a pretty controversial addition so I'll just leave it on the back burner. It would be pretty messed up if people started politically exploiting downvotes to manipulate the ranks rather than use them to protect the network. Perhaps downvotes are not necessary, but I think a 10% point pool wouldn't be too risky. 10% is really all the network needs to slap someone down without giving big stacks too much power to solo manipulate the ranks. Even 5% would be enough.


It's a pretty simple change... of course I say that without actually knowing how much work it would be on the backend. You never know with the Spaghetti Factory that is Condenser.

DPOS voting is one of the biggest advantages of Hive, and I know for a fact we are vastly underutilizing this resource. We could use some upgrades. That being said, HF25 is coming and there are a lot of amazing changes coming. I mostly wrote this just so I can refer back to it later when the time is right.

Time to save the post in case leo frontend sends it to the void again.

Posted Using LeoFinance Beta