create account

The Steem reward system, Part 6: Curation rewards calculus with s > 0 by theoretical

View this thread on: hive.blogpeakd.comecency.com
· @theoretical · (edited)
$29.95
The Steem reward system, Part 6: Curation rewards calculus with s > 0
This is the sixth post in a series about the Steem reward system.  Please read my [disclaimer](what-my-posts-arent).  For previous posts, see my [blog](/@theoretical).

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

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.

### The story so far

In this series of posts, we've developed [some principles](the-steem-reward-system-part-3-curation-rewards-principles), which are mostly different specific mathematical ways to quantify the idea of a "fair" reward system.  We [found](the-steem-reward-system-part-4-curation-rewards-algebra) a differential equation which follows as a consequence of the principles:

![{dW \over dR} = {W \over A ((R+s)^2 - s^2)}](/ipfs/QmbVREVBW2985jyQszDGpmkTBXTQ3HxHZs8enCsHAFwMKz/curation-derivation-algebra-result.svg)

In the [previous post](the-steem-reward-system-part-5-curation-rewards-calculus-s-0-case), we showed that when `s = 0`, the solution of this differential equation is unsatisfactory and inconsistent with the monotonic supply schedule principle.  The current post's main task is to examine the `s > 0` case.

### Solving the equation, `s > 0` solution

The `s > 0` case is actually fairly straightforward with a quick side trip to Wikipedia's [table of integrals](https://en.wikipedia.org/wiki/List_of_integrals_of_rational_functions):

![curation-derivation-calculus-s-nonzero.svg](/ipfs/QmbVREVBW2985jyQszDGpmkTBXTQ3HxHZs8enCsHAFwMKz/curation-derivation-calculus-s-nonzero.svg)

This is a formal result, but we should do some sanity checks:  Check that the derivative matches, plot the function, and determine whether inflection points are possible, to be sure that this solution does not suffer from the same flaw as the `s = 0` solution.

### Checking the equation

To start off, we'll algebraically verify the expression for `W` satisfies the original differential equation.  A matter of some algebra shows that it does:

![curation-derivation-calculus-s-nonzero-check-first-derivative.svg](/ipfs/QmURj4hm1MJLJKsizXpqN5QnNqQmQAHEMDcqJDY3zGGYYT/curation-derivation-calculus-s-nonzero-check-first-derivative.svg)

### Building intuition

Let's think about the sub-expression `R / (R+2s)`, which I'll call `q`.  Initially `q` starts out at zero when `R = 0`, and `q` grows to approach `1` as `R` gets much larger that `2s`.  Raising to the power `1 / (2As)`, which I'll call `p`, maps the interval `[0, 1]` to itself in a monotonically increasing way, meaning the `W` curve as a whole should increase monotonically from `0` to `B`.  Higher values of `p` means that for small `q`, the response of `W` to increasing `q` is flatter, but also accelerates more for moderate values of `q`.  For a fixed value of `s`, higher values of `p` correspond to lower values of `A`.  Plotting the curves gives a clear picture:

![weight.png](/ipfs/QmbVREVBW2985jyQszDGpmkTBXTQ3HxHZs8enCsHAFwMKz/weight.png)

Again like the `s = 0` case, the parameter `B` (originally arising from a constant of integration) is the maximum weight that will ever be issued as R-shares goes to infinity.  As emphasized by the tick labels on this plot, the parameters `s` and `B` can be viewed as establishing horizontal and vertical scales:  Changing either simply gives the same picture stretched or squashed.

### Inflection point analysis

One of these curves is not like the others.  The blue `A = 0.5 / 2s` curve in the picture actually accelerates for small values of `R`.  This curve violates the monotonic supply schedule principle and should be ruled out.  Similarly to the previous post, we can find the second derivative and check for inflection points:

![curation-derivation-calculus-s-nonzero-second-derivative.svg](/ipfs/QmbVREVBW2985jyQszDGpmkTBXTQ3HxHZs8enCsHAFwMKz/curation-derivation-calculus-s-nonzero-second-derivative.svg)

An inflection point occurs when `W'' = 0`.  Only the middle term of the three-term product for `W''` may be zero, which occurs when:

![curation-derivation-calculus-s-nonzero-second-derivative-zero.svg](/ipfs/QmbVREVBW2985jyQszDGpmkTBXTQ3HxHZs8enCsHAFwMKz/curation-derivation-calculus-s-nonzero-second-derivative-zero.svg)

Thus, as long as we set `s >= 1 / (2A)`, the inflection point occurs when `R <= 0` and we no longer violate the monotonic supply schedule principle!

### Conclusion

We started out with [some principles](the-steem-reward-system-part-3-curation-rewards-principles), which are mostly different specific mathematical ways to quantify the idea of a "fair" reward system which accelerates [1] the reward on a single post as upvotes accumulate.  In the [previous post](the-steem-reward-system-part-5-curation-rewards-calculus-s-0-case), we decided `V(R) = (R+s)^2 - s^2` (or equivalently, `V(R) = R^2 + 2Rs`) is the simplest curation reward curve [2] which *might* be compatible with the principles.

In this post, we took this curation reward curve as a given, and found that our principles imply a particular weight curve [4] given by:

![curation-result.svg](/ipfs/QmbVREVBW2985jyQszDGpmkTBXTQ3HxHZs8enCsHAFwMKz/curation-result.svg)

This curve is actually a family of curves; we must choose a member of this family by setting the values of the parameters `A`, `B` and `s`.  All three parameters must be positive; in addition we have the constraint `s >= 1 / (2A)`.  The values of `A` and `B` are fixed by certain practical implementation concerns [5], leaving `s` as the only "free" parameter.  In a future post I will discuss some considerations of how the value of `s` should be set.

### Footnotes

[1] The reward (as measured in V-shares) actually does continue to accelerate forever.  But since V-shares are claims on a pool of STEEM whose size is bounded by the allowed inflation, a post accumulating truly huge numbers of upvotes would see the increases in its reward (as measured in STEEM) eventually start to slow due to its V-shares beginning to represent a large majority of the pool.

[2] The curation reward curve `V(R)` is the formula which determines "the size of the pie":  How many V-shares will be assigned to the post's total curation rewards as a function of the number [3] of upvotes.

[3] Upvotes are measured in R-shares, which are determined by Steem Power times voting power.  Voting power is usually near 100% and regenerates over time, but a little bit is consumed with each upvote, meaning that curation rewards are subject to diminishing returns if you use a very large number of upvotes in a short period of time.

[4] The weight curve `W(R)` is the formula which determines "the slicing of the pie":  How much weight is given out based on the number of R-shares.  Specifically, if your upvote increases the R-shares on the post from `R0` to `R1`, the weight will increase from `W(R0)` to `W(R1)`; your curation reward weight will be `W(R1) - W(R0)`.  The total number of V-shares for the post's curation reward is calculated by the curation reward curve, then divided among all upvoters proportional to their weights.

[5] The choice `A = 1 / (2s)` is the only principles-compliant choice for which computing `W` does not require computing a non-integer power.  The choice of `B` is completely inconsequential as long as it's large enough to avoid rounding errors.
👍  , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
properties (23)
authortheoretical
permlinkthe-steem-reward-system-part-6-curation-rewards-calculus-with-s-greater-than-0
categorysteem
json_metadata{"tags":["steem","theoretical"]}
created2016-07-07 06:03:54
last_update2016-07-07 14:55:39
depth0
children6
last_payout2016-08-23 20:50:27
cashout_time1969-12-31 23:59:59
total_payout_value28.106 HBD
curator_payout_value1.842 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length7,579
author_reputation30,164,760,525,645
root_title"The Steem reward system, Part 6: Curation rewards calculus with s > 0"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id59,865
net_rshares51,007,213,933,877
author_curate_reward""
vote details (57)
@biophil ·
I'm going to have to watch your blog closely; I'll be taking liberally from your math as I think about the incentives in Steem in my upcoming series on the [Game Theory of Steem.](https://steemit.com/steem/@biophil/what-does-game-theory-say-about-steem-part-1) You've always impressed me with your mathematical acuity; I'd greatly value your thoughts on my series as it progresses!
👍  
properties (23)
authorbiophil
permlinkre-theoretical-the-steem-reward-system-part-6-curation-rewards-calculus-with-s-greater-than-0-20160713t170126020z
categorysteem
json_metadata{"tags":["steem"],"links":["https://steemit.com/steem/@biophil/what-does-game-theory-say-about-steem-part-1"]}
created2016-07-13 17:01:24
last_update2016-07-13 17:01:24
depth1
children0
last_payout2016-08-23 20:50:27
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length381
author_reputation45,223,914,794,461
root_title"The Steem reward system, Part 6: Curation rewards calculus with s > 0"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id97,536
net_rshares933,437,269
author_curate_reward""
vote details (1)
@heimindanger ·
OMG that looks like a great article. Most of the maths is in the picture unfortunatly and the pictures are ripped. Please re upload ? :(

xoxo
👍  ,
properties (23)
authorheimindanger
permlinkre-theoretical-the-steem-reward-system-part-6-curation-rewards-calculus-with-s-greater-than-0-20160726t173404704z
categorysteem
json_metadata{"tags":["steem"]}
created2016-07-26 17:34:06
last_update2016-07-26 17:34:06
depth1
children0
last_payout2016-08-23 20:50:27
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length142
author_reputation-16,507,408,909,111
root_title"The Steem reward system, Part 6: Curation rewards calculus with s > 0"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id379,682
net_rshares373,581,953
author_curate_reward""
vote details (2)
@markopaasila ·
It's amazing that nowadays behavior of a currency can be fine-tuned like this!
properties (22)
authormarkopaasila
permlinkre-theoretical-the-steem-reward-system-part-6-curation-rewards-calculus-with-s-greater-than-0-20160707t061212899z
categorysteem
json_metadata{"tags":["steem"]}
created2016-07-07 06:12:12
last_update2016-07-07 06:12:12
depth1
children0
last_payout2016-08-23 20:50:27
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length78
author_reputation32,771,884,740,822
root_title"The Steem reward system, Part 6: Curation rewards calculus with s > 0"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id59,875
net_rshares0
@stealthtrader ·
Yes thank you :D

Saves me having to convert all this stuff on my own your awesome!
properties (22)
authorstealthtrader
permlinkre-theoretical-the-steem-reward-system-part-6-curation-rewards-calculus-with-s-greater-than-0-20160713t195938386z
categorysteem
json_metadata{"tags":["steem"]}
created2016-07-13 19:59:18
last_update2016-07-13 19:59:18
depth1
children0
last_payout2016-08-23 20:50:27
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length83
author_reputation74,266,337,461,760
root_title"The Steem reward system, Part 6: Curation rewards calculus with s > 0"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id99,980
net_rshares0
@telos ·
As @heimindanger pointed out none of the images are showing... Would be nice if that were fixed!
properties (22)
authortelos
permlinkre-theoretical-the-steem-reward-system-part-6-curation-rewards-calculus-with-s-greater-than-0-20160821t003715655z
categorysteem
json_metadata{"tags":["steem"],"users":["heimindanger"]}
created2016-08-21 00:37:18
last_update2016-08-21 00:37:18
depth1
children0
last_payout2016-08-23 20:50:27
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length96
author_reputation3,975,075,719,043
root_title"The Steem reward system, Part 6: Curation rewards calculus with s > 0"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id913,899
net_rshares0
@theoretical ·
Edited to fix an algebra mistake when checking the derived expression for W satisfies the original DE.  (Missing brackets led to the -1 in the exponent being incorrectly placed in the denominator.)  I also slightly clarified the expression by putting the entire exponent in parentheses.
properties (22)
authortheoretical
permlinkre-theoretical-the-steem-reward-system-part-6-curation-rewards-calculus-with-s-greater-than-0-20160707t145857298z
categorysteem
json_metadata{"tags":["steem"]}
created2016-07-07 14:58:57
last_update2016-07-07 14:58:57
depth1
children0
last_payout2016-08-23 20:50:27
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length286
author_reputation30,164,760,525,645
root_title"The Steem reward system, Part 6: Curation rewards calculus with s > 0"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id60,902
net_rshares0