This is the fourth post in a series about the Steem reward system. Please read my disclaimer.
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
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
Wₚ = w(Rₚ(t)). We may simplify the notation if we allow
Rₚ to be the "time variable" and drop the separate time variable
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
σ 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
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
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.