Several months ago, I wrote a post explaining how the voting power system works on Steemit. At the time, my Game Theory of Steem series was still going strong, and I was curious about how voting power was being regenerated and used as I voted for posts. The embarrassingly-outdated Steem Whitepaper had a little blurb about it, but gave no implementation details and made it sound like having low voting power was a penalty for trying to vote too much (hint: having low voting power is not a bad thing.)
Anyway, I ended up having to dig into the Steem source code myself to reverse-engineer the voting power mechanics, and wrote my original post explaining how voting power worked. I got a few of the details wrong in the original post, and a few of the details have changed, so I'm dramatically revising the post and giving you this update now.
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?
You can look up your voting power in a few different places; the prettiest of the places is Steemstats (just enter your account name in the box on the right), the nerdiest is Steemd.com. When you vote, a little voting power is used up, but then it regenerates over time. How exactly does it work? What's the optimal way to vote?
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 the impact your vote has on a post's rewards. (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. The rate is hard-coded into the Steem system at a constant 20 percentage points per day. So these two things are both true:
- If your voting power is at 0% right now, it will be at 20% in 24 hours (if you don't vote at all in that time).
- If it's at 75% right now, it will be at 95% in 24 hours (again, if you don't vote in that time).
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.
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 20 points every 24 hours (to be precise, it would grow from 0 to 100 in exactly 5 days).
How to vote optimally:
- In general, you should never vote less than about 40 times per day (the exact number is closer to 39.2 votes per day, due to a minor implementation error). 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 40 times per day. Your total influence is the same whether you vote 1000 times per day or 40.
- 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.
(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 days, powers are numbers between 0 and 100)
- D is the number of days since your last vote
- Dr is 5, the number of days it takes to regenerate your power from 0 to 100
- Vd is the "equilibrium" number of votes per day, currently set to 40
- 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 "slider" weight of your vote, between 0 and 1 (where 1 stands for 100% voting-slider power)
Next, I'll just plug the numbers in to make the formula a little less opaque:
Let me walk you through this.
- 20D is the amount of power that has regenerated since your last vote. Note that this is constant, and doesn't depend on p. If it's been one day since you last voted, you've regenerated 20 percentage points of voting power in that time.
- (p+20D) is thus the amount of power you have right before you vote.
- (1-w/200) comes from the fact that if you vote with full slider power (w=1), a 200th of your power gets used each time you vote. If you vote with 50% slider power (w=0.5), you only use up a 400th of your power.
- The last term, 199/20000, doesn't really affect much. Its purpose is to handle an edge case when people vote with very low power. It makes it so that every time you vote, just a little bit more than a 200th of your voting power gets used.
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 199/20000, the answer would be "exactly a 200th of your voting power gets applied to each vote."
This formula will be important when (if?) I finally write my next article explaining how curation rewards work.
Here is a list of code references for each of the components of this: