From Steem Center
Jump to: navigation, search

As mentioned in the wiki article about Rewards, after investigating for a long time but without find a clear answer, steemian and mathematician Julián González (@jga) decided to study directly the source code of Steem, something a little complex, but he achieved it. He published the results of this research on Steemit and here in, which he suppose will be of great help to many.[1]He also made an infographic showing these calculations in action, published here in Rewards:Infographic[2]

Voting power

The voting power is a mechanism to have an stable economy. It is a mechanism to reduce the possibility that everyone could vote all the time and therefore a way to incentive the correct voting, proof-of-brain.

The voting power consists of a percentage, every time you vote the voting power is reduced a little bit, and at the same time it is regenerated at a rate of 20% per day (that is 100% in 5 days). This regeneration is not calculated every time a new block is created in the blockchain, but when you vote it does the calculation from the time since the last vote:

Regenerated power.png

where Bt is the block time, Vt is the last vote time of curator, t is the elapsed seconds, and rp is the regenerated power. Then it is added to the last voting power Vp0 and limited to 100% in order to calculate the current voting power Vp:

Voting power limitation.png

The curator can set a weight w for his vote, from 0% to 100%. This weight can be positive (upvote), or negative (downvote or flag), and the power used for both cases is the same, then the weighted power wp is:

Weight from voting power.png

Finally, the voting power used pu is a small part of this value, and it is calculated using the following formula:

Voting power used.png

For example, if the voting power is 100% and the weight is 100%, then voting power used is (100% + 0.49%)/50=2.0098% which is rounded to 2%. If the voting power is 70% and the weight is 100%, then power used is (70% + 0.49%)/50=1.4098% which is rounded to 1.4%.

If we assume that 0.49% can be neglected in the formula. Then the power used can be simplified:

Voting power used simplified.png


The contribution of a vote to a post (or comment) is measured in rshares, and they are calculated from the vesting shares of curators (steem power) and the voting power used.

Rshares equation.png

where Vs are the vesting shares of the curator, and rs the rshares generated. The absolute value of rs must be greater than 50 VESTS, this is a dust threshold, the minimum amount.

Total payout

There is a pool of rewards called reward_balance. This balance is distributed between the latest posts. Then the payout of a single post, measured in STEEM, is calculated as follows:

Payout in steem from rshares.png

where RS is the total rshares accumulated by the votes, rb is the reward_balance, and rc is the recent_claims (measured in VESTS). This two values are global variables (look their values at If we want to calculate the payout in SBD, then the steem is multiplied by its price:

From steem to sbd.png

Worth of a vote

The worth of a vote is calculated in the same way as the total payout, but using the rshares of the vote. One thing to keep in mind is that a regular user does not know what their Vesting Shares are, but only knows their STEEM POWER. The way to calculate the them is using other 2 global variables, total_vesting_shares and total_vesting_fund_steem:

From sp to vests.png

where Vs are the vesting shares of the curator, SP is the steem power, TVs is the total_vesting_shares, and TVfs is the total_vesting_fund_steem.

In this way, we can calculate the worth of a vote in a simplified way. Defining the voting power Vp and the weight w as values between 0 and 1 (0 for 0%, and 1 for 100%), the worth of a vote is:

Worth of vote.png

where Vp is the voting power, SP is the steem power, w is the weight of the vote, and g is a global variable calculated as:

Global variable worth vote.png

where TVs is the total_vesting_shares, TVfs is the total_vesting_fund_steem, rb is the reward_balance, rc is the recent_claims (measured in VESTS), and price is the steem price. All of these 5 values are global variables (look their values at

Distribution of the total payout

The total payout is distributed between 3 parts: Author, curators, and beneficiaries. There is no a fixed percentage, but a series of calculations and transfers.

First, 75% are for the author. However, in the post maybe a percentage of it is defined for the beneficiaries. This is a new feature in the Hard Fork 18 and allows new monetization options for developers working on Apps for STEEM.

Distribution to curators

The remaining 25% of the payout are for the curators. But some of their money goes back to the author, and the rest is finally distributed between curators. How is it calculated? First, lets define these values:

  • rs: rshares generated when the curator votes.
  • RS0: rshares accumulated by the post before the curator votes.
  • RS1: rshares accumulated by the post after the curator votes. That is RS1 = RS0+rs
  • RST: total rshares after a week

The percentage of reward for a single curator is:

Percentage single curator.png

However, some of this percentage goes back to the author. If the curator votes 30 minutes after the publication of the post, then 100% is for him, but if it is between the first 30 minutes he only takes a part of them, the ratio between the time and 30 min, and the rest is for the author. Then

Percentage single curator2.png


Math rule 30 min.png

As we saw earlier, we can transform the rshares into STEEM or SBD with a global variable. Then if we multiply the numerator and denominator for the same value, we can calculate it in terms of STEEM or SBD. And next, multiplying it with 25% of the payout we can calculate the payout for a single curator:

Payout single curator.png

where P0 is the payout of the post before voting, P1 is the payout of the post after voting, and PT is the payout after 7 days (the final payout).

Important note: On steem, the formula to calculate the square root is not exact but approximate, to be able to make operations fast. Then the above calculations could differ a bit from the reality.

Steem incentives voting good content

What is the incentive for being an early voter? Being P1 the payout of the post after a curator votes, consider 2 situations:

1. After a week the post does not get more votes and stays the same. PT = P1 2. After a week the payout scales n times, that is PT = n * P1.

In the first case, the curator payout will be:

Payout case1.png

And in the second case, the curator payout will be:

Payout case2.png


Payout case1 case2.png

Then the incentive for being an early voter is sqrt(n). For instance, if the total payout scales 4 times, then the curator payout scales 2 times. If the total payout scales 9 times, the curator payout scales 3 times. The sooner the vote the more possibilities of scaling the curator reward (except the rule of 30 minutes).


  1. Author and Curator rewards in HF19 Written by Julián González (@jga) on Steemit, published in December 21, 2017
  2. Steem author and curator rewards - Infographic Written by Julián González (@jga) on Steemit, published in December 12, 2017


Related articles

External Links

Help keep this wiki page updated. Register, click in edit, add or modify the text and save.
If you're already a steemian you can be rewarded with STEEM, see how in @steemcenterwiki.