Do you know what are the exact calculations in the steemit reward system? I was investigating for a long time but I could not find a clear answer. For this reason I decided to study directly the source code of steem, something a little complex, but I have achieved it. In this post I am leaving the results of this research, which I suppose will be of great help to many.
Before continue, I really recommend this infographic, which is a resume of this post and also a quick guide.
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:
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
:
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:
Finally, the voting power used pu
is a small part of this value, and it is calculated using the following formula:
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:
R-shares
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.
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:
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 steemd.com). If we want to calculate the payout in SBD, then the steem is multiplied by its price:
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
:
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 and the weight as values between 0 and 1 (0 for 0%, and 1 for 100%), the worth of a vote is:
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:
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 steemd.com).
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 isRS1 = RS0+rs
RST
: total rshares after a week
The percentage of reward for a single curator is:
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
where
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:
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:
- After a week the post does not get more votes and stays the same.
PT = P1
- After a week the payout scales
n
times, that isPT = n * P1
.
In the first case, the curator payout will be:
And in the second case, the curator payout will be:
Then
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 posibilities of scaling the curator reward (except the rule of 30 minutes).
¡Un trabajo espectacular! ¡Muchas gracias @jga!
Solo un apunte. En el tema del incentivo para votar buen contenido, la formula premia dos cosas. Por un lado el buen contenido, pues este será el que pueda aumentar su recaudación, pero por otro lado también el ser un curador activo para poder curar lo más cerca de los 30 minutos, no vale con entrar a ver contenido una vez al día, hay que estar pendiente de lo último que se publica.
¡Enhorabuena por este trabajo!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Exacto, toda la razón! mientras más curación hagas más dinero se te retornará a ti... para ello hay que hacer un juego equilibrado en el que verifiques la regla de los 30 min, y al mismo tiempo no dejar bajar mucho tu voting power.
Me alegra que te guste. Gracias por comentar.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
ME ENCANTO GRACIAS
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Wow incredible.. you reverse the source code to know how it work. Nice work. I appreciate it. I think to create a tool for easier calculation based on your post.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Yes this is my intention for the future. Thanks
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
@jga were you able to put together such tool? I have a calculator for users i can share in exchange.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Graciass por tus shares my friend...
Esa mente Guanay ahy buena !!
Bendicoones para tu hogar !!!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Muchas gracias orel. Bendiciones también!!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
good poste for steemit worker it is very help full
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Thanks
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
You're a genius. I'm not a maths person but your content is pretty strong.
Respect!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Thank you very much @buterdaniel !!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Puntos extra por poner las fórmulas en latex (o algo parecido). Muy buen aporte @jga
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Correcto están hechas en latex. Gracias a ti por pasar por acá. Un saludo.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
@jga Muchas gracias!! I know I am 8 months late but I want to give credit where credit due. Your post explained so clearly how the payout works in steemit and after going through all the mathematical steps and formulas I have gained a much clearer picture about this platform. Your post should be recommended to every newbie! Too bad its just 9STU, I think it's highly undervalued! I have followed you, looking forward to more great works by you =)
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Thank you very much. I'm glad you like it
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Enhorabuena por este increíble trabajo de investigación!
De los mejores posts que he encontrado hasta ahora en Steemit. El sistema de recompensas que tan bien analizas tiene que tener algunos defectos si este artículo no llegó a los 10$.
Saludos desde España!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Muchas gracias por tu comentario, me alegra y motiva a la vez. Steemit es una gran plataforma en el que se ha buscado definir esos pequeños detalles. Sin embargo como todo en esta vida nada es perfecto, y tiene unas características que lamentablemente pueden tender a una mala distribución del pool de recompensas (cosa que se debate fuertemente en estos últimos días). Un saludo.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
De nada, solo valoro el trabajo bien hecho. De hecho, como parte de mi proyecto de fin de máster, estoy intentando modelar matemáticamente las mecánicas e incentivos de recompensas en Steemit. Tus posts me han servido de mucha inspiración para mi trabajo. Te importaría que algún día tuviéramos una charla? Ya que veo que tu eres un experto en el tema y un poco de guía me vendría genial :)
Saludos!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Sí claro, contáctame por discord @jga#0699 o en telegram @joticajulian.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
¡Great explanation! Could I translate this article into Polish? I would send you 50% of SBD payout.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Muchas gracias me encanto la manera fácil y resumido!! 👏 lo intentaré
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Thanks a lot. you saved my lot of time :)
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Your welcome
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Thank you very much, @jga! Awesome!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Your welcome @verodato! I also have another post where I deep into details about the maths in curation.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
I noticed that you delegated some SP to bid bots. If you also like to earn a nice return on your investment in a different way, I can make you a proposal. Please let me know if you're interested?
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
hi, crypto-econom1st. what's your proposal?
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
I found a way to gain high curation rewards. If you like to know more about my curation strategy you can check some of my recent posts. In this reply I only highlight 2 important aspects. The first one is that I do all the work manual (searching for good posts, analysis, etc). And this takes quite some time. Other important item is that I reached my results with 15 SP. My best score so far was just above 0.300 SP curation reward in 1 week. So as percentage of my SP I managed to receive 0.300/15*100%=2%.
Being able to gain such high curation rewards basically earned me the title “King of curation” in Ashers curation league. I managed to win this curation league contest 4 times!
https://steemit.com/engagement/@abh12345/the-curation-and-engagement-leagues-sponsored-by-carlgnash-and-paulag
Now I would like to test the scalability of my curation strategy. And see if it is possible to gain 1% or higher per week (1% from the SP used to upvote). If you’re willing to delegate SP to provide me a chance to test this, I’m thinking about the following conditions:
Rewards: 50% / 50% split between the delegator and myself (I don’t get any reward for my own SP, which is now close to 18SP)
Period: minimum of 1 week / maximum of 3 weeks
Delegation amount: minimum 1,000 / maximum 2,000
Starting day: Saturday or Sunday
Please let me know if you’re still interested? And if you have any questions?
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Hi @verodato! Sorry for messing around in your comments.
I just wanted to advertise my voting service @tipU which you might be interested investing in. That's because @tipU pays out 100% of profit and extra 50% of curation rewards to all SP delegators and investors.
You can find more info here. Please accept this in return: @tipU send 0.1 sbd tip (@tipU can also send tips:)
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Hi @verodato! You have received 0.1 SBD tip from @cardboard!
@tipU is looking for SP delegators: pays out 100% of profit to all investors - more info here.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
hello my friend you delegated to 2 weeks ago we made one bot if you like you delegate to our but earn sbds every day and if you interest join us to our community https://discord.gg/3HZdaGk and catch me brotherhood Game
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit