Reward Shares: Understanding How Your Votes Affect a Post
Yesterday I introduced the new tool Steem Vote Weight Calculator, that estimates how much impact your vote would have in a post before you cast it. In order to do that, I had to dive in the source code of steem's blockchain and figure it out.
Today I'll attempt to explain the calculation so everyone can understand this process better.
Reward Shares
When you vote, the first value that is calculated is called Reward Shares. As the name implies, it affects how many shares of the curation rewards you are "buying in" with that vote. This value is independent of the post you are voting in, and it's affected by two things: your Voting Power, and your Vesting Shares.
Voting Power
Voting Power is a percentage representing how much power you currently have to vote. Each vote decreases this value (exactly by how much in a bit), and it would regenerate from zero to full over the course of five days. In practice, you recover 20% voting power in one day or 0.833% in an hour. You can check your current power on steemstats. It's used in the calculation as a number in the 0 to 10000 range, so if you have 93.73% VP, the number used is 9373.
Tip: If you sleep 8hrs, go to sleep with 93.33% VP and you'll wake up with it fully replenished!
Vesting Shares
The second element of the Reward Shares calculation is vesting shares. @hisnameisolllie recently posted a good explanation of them here. As a simplification, I like to think of VESTS as the representation of your current STEEM Power in the blockchain. The place I found where you can see the exact amount of your vesting shares, unrounded, is steemd.xyz. As with the voting power, VESTS are used as a fixed-digit number, so for example, if the value listed above is 219259.945798
, you'd use 219259945798
in the calculation.
Voting Weight: The Voting Slider
It's possible to hold back on your voting power expenditure when giving votes. If you have around 100M VESTS, you'll see a slider that lets you pick this value. Similarly to Voting Power, it is a number in the 0-10000 range representing the percentage as a fixed-digit number.
Calculating the Reward Shares
Now we have all the information to calculate the Reward Shares for our vote, like this:
Used Power = ((((Voting Power * Voting Percent) / 10000)) / 200) + 1
Vote Reward Shares = (Used Power * Vesting Shares) / 10000
First, it determines how much of your VP you are spending on this vote. I'm not sure how the scaling factor 200 was chosen, but ultimately it's a linear correlation between them.
Relationship between the power spent and your voting power
So if you vote with 93.33% Voting Power, with 100% weight, when having 219k VESTS, this is what you happens:
I'm spending 47.665
voting power on this vote
In exchange for 1.045.102.532
Reward Shares, or around 1.04 billion
So no matter which post you vote, you'll get 1.04b shares at that moment.
I simulated the decay of the Voting Power as you cast votes. Assuming no Voting Power regeneration taking place in the meantime, you'd be able to cast 785 votes before you ran out of Voting Power and had to wait five days for it to refill. Most of them would be worth very little, though.
How your VP decays as you cast votes
Tip: You would spend about 20% of your voting power at about 44 votes, so that seems the ideal times to vote daily.
Vote Weight
The Vote Weight is determined essentially by how much your vote's Reward Shares proportionally move the post's total amount of reward shares. That's why early votes have more value than late ones: the post still doesn't have many Reward Shares assigned to it.
The impact of weight is calculated by the following expression:
Weight = (Max UInt64 * Reward Shares) / ( 2 * Content Constant + Reward Shares)
Max UInt64 is a very large value (2^64-1
) providing an upper bound for the calculation. Content Constant is a scaling constant set 2000000000000` and has a comment next to it that says "looking good for posters*". What that means, I'm still not sure.
This value is calculated twice: once for the total reward shares of the post including this vote, and once for the total before you voted. The Vote Weight is the difference between those values, or how much impact your vote had raising it:
Vote Weight = W[N] - W[N - 1]
So if we cast our vote as calculated above on a post with 3379802885863
(approximately 3.37 trillion) reward shares already on the pool from the previous votes, this is what happens:
Wow, these are large numbers! The result is 1415753325365752
, or approximately 1.4 quadrillion, which is the weight of this vote.
Now we can figure out what is the percentage of this weight against the total, which is:
Our weight represents 0.017% of the total, and that's going to drop as new votes come in.
And that's it! Well, almost...
Early vote penalty
If the post is newer than 30 minutes old, there's a factor that reduces the calculated weight linearly according to the number of seconds left to reach 30 minutes (1800 seconds), like this:
Adjusted Weight = (Vote Weight * Min(Age In Seconds, 1800)) / (1800)
For example, if this post was 10 minutes old, this would happen:
So our weight dropped from 1.4 quadrillion to 471 trillion. This effect is popularly described as sharing rewards with the original author since you are adding the full reward shares to the post, but claiming rewards based on a reduced weight.
And that's it!
Simple, huh? Well, the numbers are large but the logic is not that complex after all. And the calculator is always there to help.
But that is glossing over flagged posts, changed votes, and reward value calculations, that I'm leaving for the next time, along with some more analysis of how each value affect the whole.
If you are interested on learning more on how Steemit works, follow @burnin for more information.