The Ultimate Guide to Voting Power (with cartoons, formulas, and code references!)
So you're new to Steem and you've heard people talking about "curation" this and "rewards" that - but what's all this about the mysterious Voting Power? Apparently you lose it if you vote too much, but then you get it back, and you can look it up on Steemstats and Steemd.com, but how does it actually work?
The Basics
Think of your voting power as a big tank of water. Every time you vote, a valve at the bottom of the tank pops open and squirts out some power. The fuller the tank, the more power squirts out the valve. The amount of power that squirts out the valve is one of the things that determines how powerful your vote is. (The other is your Steem Power, which you can look up in your wallet and is a completely separate thing.)
If you vote and vote and vote without stopping, it's like leaving the valve open, and it won't take long before your tank is empty.
Fortunately for you, there is a steady drip of power coming back into your tank! This drip refills your tank at the same rate, always, no matter what.
What happens to the drip if your tank is full? The drip gets wasted! Think of it like the tank just overflows if it's full; all that voting power just dripping down the sides going to no purpose.
The Summary
How voting power works:
- Your account has a number between 0 and 100 called "voting power."
- When you vote for a post, slightly more than a 200th of that voting power gets "spent" on your vote.
- Your voting power regenerates over time at a fixed rate of about 1 point every 100 minutes (to be precise, it would grow from 0 to 100 in exactly one week).
How to vote optimally:
- In general, you should never vote less than about 27 times per day. If you do vote less, you're letting your voting power go to waste (because your "tank" is full some of that time, and the "drip" is spilling over the brim).
- Surprising news: if you want to maximize your total influence, it doesn't matter how much you vote, as long as you vote more than about 27 times per day. Your total influence is the same whether you vote 1000 times per day or 27. This is because of the constant drip of voting power filling your tank.
- However, The more you vote, the less each of your votes is worth. So you could vote 1000 times per day, but each of those votes wouldn't be worth very much. Your total influence would be optimal, but your influence per vote would be very low.
The Details
(with formulas, code references, and general jolliness!)
Down to brass tacks. Here is the complete formula for voting power (if you don't want to parse this formula yourself, I'll walk you through it in a minute):
where my variables are (times are given in seconds, powers are numbers between 0 and 100)
- T is the time since your last vote
- Tw is the number of seconds in a week (604800)
- p is your voting power right after you last clicked "vote"
- p+ is your voting power the moment after you click "vote" this time
- w is the weight of your vote, between 0 and 1 (for users with more than 100 Million Vests, or about 30,000 SP)
If you're just a regular Joe like me (with less than 30,000 SP) and you don't get to set your vote weight, the formula simplifies to this because w=1:
Let me walk you through this.
- 100T/Tw is the amount of power that has regenerated since your last vote. Note that this is constant, and doesn't depend on p.
- (p+100T/Tw) is thus the amount of power you have right before you vote.
- (199/200) comes from the fact that a 200th of your power gets used each time you vote; thus, right after you vote, you have 199/200 of your original power left.
- The last term, 1/100, serves no useful purpose that I can find. It makes it so that every time you vote, just a little bit more than a 200th of your voting power gets used, which makes things go from simple and intuitive to complex and weird. For no reason. Bug your favorite dev to get rid of the 1/100. In fact, I may just go put in a pull request myself to get this fixed.
So how much is each vote worth? The formula for how much power gets applied to each vote is this:
If we didn't have that silly 1/100, the answer would be "exactly a 200th of your voting power gets applied to each vote."
The Code
Here is a list of code references for each of the components of this:
- steem_evaluator.cpp #876 regenerated power, (T/Tw)
- steem_evaluator.cpp #877 available power, (p+T/Tw)
- steem_evaluator.cpp #881 multiplied by weight
- steem_evaluator.cpp #882 used power, the 200th, and the 1/100
- steem_evaluator.cpp #919 voting power update
The Story
A month ago I posted this question about voting power, and got exactly 0 replies. So since I really wanted to know, and nobody would tell me, I ran on over to github, grabbed the Steem source code, and over the course of a pair of international flights for my trip to the Netherlands, I figured it out. I freaking figured it out. (You should be pretty impressed with me, because I don't actually speak C++. So I was wading through mostly-uncommented code in a language I don't even know...)
About Me
I'm Philip N. Brown, a PhD student in electrical engineering at UCSB. I'm the author of the popular Game Theory of Steem series, and currently I'm Editor-In-Chief of the Lost Content Digest. Follow me if you enjoy my work!
[Edit note: My original formulas had an error that I have since corrected. The 100T/Tw used to be T/Tw; the problem was a units mismatch. I have p in units of percentage points, but T/Tw is a fraction between 0 and 1. To make sure we're adding like units, I needed to multiply the T/Tw by 100.]
Excellent. I understand more because of your cartoon!! Great to meet you @biophil. Following you and upvoted this post.
My head hurts...
But I'm not a regular Joe. I'm Another Joe. :)
Very nice post. I don't usually vote for steem-centric content any more but this is a topic that hasn't been covered very well and this is a very nice clearly explanation. I will be pointing to this post in the future when I get questions about how the voting power works.
Yes, I've been looking for something like this! I'll be linking to it in the Steemit FAQ I'm putting together.
https://steemit.com/steemit/@shenanigator/official-steemit-faq-rough-draft-your-edits-are-needed
Thanks so much! From what I've found, it's one of the least-documented features of the whole system. I will probably put out at least one more of these on the specifics of the curation reward formula, which I think is equally mysterious.
Please let me know when the curation post is ready as well.
Will do! That one's just in the back of my mind at this point, so it probably won't be out until next week at the earliest.
Thank you this really helped me understand voting power. Upvoted!
The numbers aren't quite right any more; the minimum number of votes is actually around 40, not 27. Otherwise it's essentially correct. Thanks!
Thanks for your detailed explanation! Can you please clear up two questions?
That's what my research turned up as well: 20 votes in 24h maximizes the use of your voting power. I'll have to search for my reference for that.
Maybe that's true if you do all 20 at once. If you space them out evenly throughout the day, the correct number is 27.
Do you think this changed recently? Are you certain you've taken into account all the variables? Because I got the 20 per day figure from multiple reputable sources.
I don't know if it's changed recently. The number is 27.8 times per day, if you vote every 3100 seconds (a little more than 51 minutes). You can calculate this by plugging 100 into p and p+ in my 2nd equation and solving for T. Due to an error in my formula (which I'll correct when I get a chance), you'll have to divide your answer by 100.
But here's the thing: the 27 number is only if you want each of your votes to be at 100% every single time. It just doesn't hurt you very much to be voting at 90% or even 80%.
The fact that you lose voting power for voting is not a penalty, it's just a simple mechanism that limits each account's total influence. If I had to give a simple message to you, it's that you just shouldn't worry too mich about optimizing your voting power, because the only bad choice is to vote too little.
THANK you for presenting this in words before diving in the number-y part. I'd been wondering how it worked, and if there were an optimal number of votes... or even a number at which somehow I'd actually do a disservice by voting. I appreciate you shining a lantern into the black box.
You bet! I try to always go words before numbers. You reach more people that way. :)
I tagged you and this article in my newest post. https://steemit.com/steemit/@whatsup/exploring-steemtools-com-congratulations-you-ve-won-steembingo-com-jackpot-671-tools-1
Very good biophil. Excellent really!
Pretty surprised to see you are in science/engineering, have always thought of you in some bla-bla field from your BTS days.
Anyway thumbs up!!!!
Thanks! Haha, I've got to ask what about me made you think that? and what's bla-bla?
[hint] well if you know my bts moniker, you will know I consider most anything bullish overwhelming enthusiasm ...
best regards
tk
Well, I skipped reading through your comments on the code (I'm more artsy than geeky), congrats on busting through it anyway. I'm sure other readers will be happy to dig into the details. The general comments were helpful and your tank analogy is very clear. I've been wondering how much voting was too much, and now I see that I've been voting too little. Heading off in search of more things to upvote now...
Strange that you, @biophil, or anyone else for that matter, realizes that the -1/100 term guarantees that the vote power curve actually hits the x axis, making it cero at some point if a person votes too many times too fast, and so limiting the actual number of times you can vote (some 66 times in a row if you don't wait any time), and when voting power is cero, then the system will not allow you to vote any more, until you get your voting power back through waiting time. If the term weren't there the voting power would be ever closer to cero, but never actually cero. A serial voter could then vote an infinite number of times to the tone of once every three seconds (another system limit, you can't vote more than once every three seconds) even though his vote power would be ever tinier.
I'm guessing that's what the devs had in mind, but they weren't thinking about it correctly. I encourage you to work out the math with and without the 1/100 and see if your total vote influence is higher in either case. You'll find that in both cases, your total influence is the same, and doesn't depend on how much you vote at all. (as long as you keep your voting power strictly below 100.)
The whole point of this is that your vote doesn't need to hit zero for your voting power to be limited. It is limited by the rate that voting power "drips back into the tank," not by the fact that your power hits zero.
Don't worry, I didn't get it the first time around either. But just remember: it doesn't matter how much you vote, how fast it decays, or anything. It only matters that the drip into the tank is constant.