The Steem reward system, Part 4: Curation rewards algebra

in #theoretical4 years ago

This is the fourth post in a series about the Steem reward system. Please read my disclaimer.

Previous posts: 1 2 3

This post is a mathematically intense post. In order to follow everything in this post, your mathematical toolbox will need to include sharp algebra skills. Non-mathematically-inclined readers may wish to skip this post, or only read the conclusion.

I will frequently reference equations and principles discussed earlier in the series. If you have questions about an equation or principle, try reading the previous posts in this series.

For now, I will not discuss how to treat downvotes or changing of votes. It's much easier to develop a basic algorithm in a simplified upvotes-only world and then extend it to a world where downvotes and changing of votes is possible.

Thinking in totals

The proportionality principle says we can think of upvotes as receiving "weight" which will be proportional to their ultimate payout. The total weight Wₚ that's been handed out to post P at some point in time t is some function of P and t. The SBS principle, however, says that W cannot make reference to any information outside the number of R-shares that exist on post P. So if Rₚ(t) is the number of R-shares which have been paid to post P at time t, we may consider Wₚ to be some function of Rₚ(t); i.e. Wₚ = w(Rₚ(t)). We may simplify the notation if we allow Rₚ to be the "time variable" and drop the separate time variable t, giving Wₚ = w(Rₚ).

Similarly, we can consider post P's total V-shares Vₚ = v(Rₚ). The quadratic reward principle lets us go further and say v(R) = (R+s)^2 - s^2.

To review, the total weight W and total V-shares V given to all upvoters of a post are both functions of the R-shares on the post.

Thinking in margins

Starting from this section, I'll be focusing on the world of a single post P, so I'll stop using the P subscript (this will simplify the notation).

Let's imagine an ultimate upvoter named Alice (she is the last person to upvote a post and she has a small balance). Alice's upvote is worth dR R-shares. She upvotes a post which has already been upvoted by Bob, who has a much larger balance. A little bit of weight dW will be created and given to Alice, and the post's V-shares will increase by dV, which will be split among Alice and Bob according to their weight.

The price Alice pays for dW weight (denominated in R-shares "paid" per weight received) is dR / dW; let us call this price ρ (Greek letter rho).

Clearly, the post's ratio of weight to V-shares before Alice acts is σ = W / V (Greek letter sigma). Alice's balance is so small that her actions did not appreciably change the amount of V-shares and weight on the post; so after Alice's actions the weight to V-shares ratio is still σ. So σ is the "price" Alice and Bob both "pay" when their weight is "traded" for V-shares when the post's curation rewards are distributed.

The overall price Alice pays in this two-step trade (R-shares paid per V-share received) is, of course, the product of these prices σ·ρ.

Thinking in principles

The price Alice the ultimate upvoter pays for V-shares is σ·ρ. The ultimate indifference principle says that this price must be equal to some global constant value A. We have the following givens:


We can do some algebra to obtain:


We can view the state of the system (R, W) as a point on the plane. It starts out at the origin (R, W) = (0, 0), and we can see how it evolves as upvotes accumulate by setting dR to some small fixed constant value (e.g. one satoshi worth of R-shares), then repeatedly updating the point to (R + dR, W + dW) where dW is calculated by the above equation. Each update's calculation of a new W value incorporates the old R and W values; while R simply marches forward at a constant rate of dR, the value of W evolves in a non-trivial way. Here is a sketch for some s values with constant A:


In the next post, calculus will allow us to write down an equation for these curves.


In this post, we showed how applying our principles (and plenty of algebra) naturally leads to an equation which describes how weight is issued to upvoters over time. Since we need to enlarge our mathematical toolbox to solve the equation, the solution will have to wait for the next post.


I'm a skip to the end guy, :-). Tell me though, do you think the whole voting time limit thing is a good idea? I personally think it should be scrapped.

As a poster I want votes to come in at all times, whether it's 5 minutes after posting or 5 weeks.


Great post. Makes sense to me.
One questions though, will s be static or dynamically adjustable by witnesses?

@theoretical, could you please fix the images links?