Try   HackMD

The Math of Staking: Policy as Pure Income Redistribution

Everyone is watching for the slope of the below line to be consistently negative for Ethereum to be 'ultra sound money'. I argue that this is an overly strict requirement, using math.

Summary

  • Ethereum provides computation and transaction ordering as a service.
  • Users and searchers pay for that service; the total revenue is an exogenous variable defined by demand.
  • Revenue (yield) is distributed among stakers and nonstakers; the split is determined by network policies (block rewards and fee burn).
  • These policies divert more or less yield to stakers, but the overall amount of yield is fixed; the weighted average of staker yield and nonstaker yield is always the inherent yield (the total income of the network divided by the total supply). This should be an obvious result, but we show it through math.
  • There are some clear takeaways, for example it becomes clear that the goal of net Ethereum deflation (the Ultrasound Money meme) is a stricter condition than Ethereum network profitability. We could have net Ethereum deflation right now simply by tweaking network policies.

Introduction

Ethereum provides computation and transaction ordering as a service.

The total income of Ethereum is the sum of all gas fees (paid by users to get their transactions included) and MEV tips (paid by searchers to get their bundles included). In this discussion, we’ll refer to this sum as total_income, and we’ll consider it an exogenous variable, defined by demand for computation and ordering.

In this discussion, we’ll consider various quantities over the course of a year so that they can be expressed as yield.

Free variables

We should think of a PoS system as one with four free variables:

  • inherent_yield: total_income divided by total_supply (defined by degree of usage of the network)
  • pct_staked, the percentage of total supply that is staked (defined by user behavior)
  • burn_pct: the percentage of total_income burned due to EIP-1559 (network parameter)
    • note that not all income can be burned, as some of the income is MEV tips (not burned), and also because we don’t want validators to get 0 gas fee or there won’t be an incentive to choose high-paying transactions
  • raw_inflation: the raw inflation % from block rewards, i.e. total block rewards divided by total supply. (network parameter)

[note that it would also be acceptable to consider the fourth free variable as block_reward_pct, i.e. the block reward percentage for stakers is fixed, and the raw inflation varies with the amount staked. It’s not important; we will stick with our variables above]

Dependent variables

  • burn_effect, the % of total supply that ends up getting burned
  • reward_effect, the % of total supply that is offered as reward to stakers
  • net_inflation, the net % change in total supply: increased by block rewards (raw inflation), decreased by burn
  • {nonstaker,staker}_{nominal,real} yields, governed by
    • real_yield = nominal_yield - net_inflation
    • Real yield is what everyone should care about! If you hold OHM and it offers 7000% nominal yield to you, but then inflates by 7000% because everyone is staking, then the real yield is actually 0%.

Governing equations

The dependent variables are defined by these relationships:

  • burn_effect = inherent_yield * burn_pct
  • reward_effect = inherent_yield * (1-burn_pct)
  • net_inflation = raw_inflation - burn_effect
  • nonstaker_nominal = 0 (always)
  • nonstaker_real = nonstaker_nominal - net_inflation = -net_inflation
  • staker_nominal = (reward_effect + raw_inflation)/pct_staked
    • this is because reward_effect and raw_inflation are expressed as yields that are a function of total supply, but they are only shared among stakers; thus the yield for stakers is amplified by 1/pct_staked
  • staker_real = staker_nominal - net_inflation

Let us rewrite these equations, letting

  • y = inherent_yield
  • s = pct_staked
  • b = burn_pct
  • i = raw_inflation

Then we have

  • burn_effect = y*b
  • reward_effect = y*(1-b)
  • net_inflation = i - y*b
  • nonstaker_real = -net_inflation = -i + yb
  • staker_nominal = (y*(1-b) + i)/s
  • staker_real = (y-yb+i)/s - (i-yb) = yb(1-1/s) + i(1-1/s) + y/s

"Average yield”

What is the weighted average of the staker real yield and the nonstaker real yield? It is

avg_yield = staker_real * s + nonstaker_real * (1-s)
          = yb(s-1) + i(s-1) + y + (-i + yb) * (1-s)
          = yb(s-1) + i(s-1) + y - i(1-s) + yb(1-s)
          = y

So it simplifies back to y, the inherent yield! Which makes sense because the ‘inherent yield’ is real yield that gets split between stakers and nonstakers; inflation and burn are just policies that affect how that yield is distributed among them.

With this result in mind it should be clear that the most important KPI for the network is to maximize real revenue (”inherent yield”). The other policies merely affect distribution of revenue, making it more or less attractive to stake.

Real Examples

This spreadsheet shows the same result in action. Check it out!

Here’s an example (depicted as row 16 of the spreadsheet) to illustrate:

  • inherent_yield = 2.6%
  • pct_staked = 50%
  • burn_pct = 40%
  • raw_inflation = 1%
  • Then
    • burn_effect = 40% * 2.6% = 1.04%
    • reward_effect = 60% * 2.6% = 1.56%
    • net_inflation = 1% - 1.04% = -0.04%
    • nonstaker_nominal_yield = 0% (always)
    • nonstaker_real_yield = 0% - (-0.04%) = 0.04%
    • staker_nominal_yield = (1.56% + 1%)/50% = 5.12%
    • staker_real_yield = 5.12% + 0.04% = 5.16%
  • So just to emphasize, nonstakers earn 0.04% in real yield (thru deflation), stakers earn 5.16% in real yield
  • And since each represents 50% of the population, the average real yield is 0.04% * 50% + 5.16% * 50% = 2.6%, which matches the inherent yield.

Takeaway 1: Inflation isn’t a cost on the network; burn isn’t a benefit to the network

Once you see this, it becomes clear that block reward inflation is not a cost on the network as a whole; it’s a cost on nonstakers (paid to stakers).

Similarly, burning some of the income as deflation is not value-accretive to the network per se; it’s a benefit for nonstakers (paid for by stakers).

The value accretion for the network as a whole comes from income from users and searchers paying fees.

When taking this into account, proposals such as “Burn the MEV” become less useful because it is clear that they are just policy changes intended to shift yield from stakers to nonstakers. Which may be a reasonable goal, but which is also a goal that can be achieved in other ways with fewer externalities, for example by reducing the block reward.

Takeaway 2: How is this inflation mechanic different from PoW?

  • In PoW, inflation is a cost on holders in aggregate because the new tokens accrue to a different class of participants.
  • In PoS, inflation isn’t a cost to holders in aggregate. As a holder you choose whether you want to be part of the class that earns extra yield (at the cost of locking up capital and taking slashing risks).

Takeway 3: the “Ultrasound Money” meme is great, but defines success overly narrowly

“Ultrasound Money” (https://ultrasound.money/) refers to the hope that unstaked Eth will be net deflationary. This chart shows total supply change, i.e. shows the negative of nonstaker real yield. It’s pretty close to flat, trending toward deflationary if conditions persist:

However, as seen above, nonstaker yield is dictated by inherent_yield, pct_staked, and economic policy (burn_pct and raw_inflation).

The network is value-accretive if inherent yield is positive (which it absolutely is). For any level of inherent yield, it is possible to construct a choice of pct_staked, burn_pct, and raw_inflation such that nonstaker yield is either positive or negative. It all just depends on how much we want to reward staking.

Appendix: Validator commissions

Most holders don’t run a validator; they delegate, either through the blockchain’s native delegation system or by using a Liquid Staking Pool like Lido. When delegating, a portion of the staking yield (say, 10%) goes to the validator operator.

It is thus possible to update the above model from a two-party system to a three-party system.

Staker nominal and real yield is sapped (in particular, if the commission is 10%, the staker nominal yield will be cut by 10%, while net_inflation remains the same so staker real yield will likely drop by more than 10%).

This is the reason why several major projects have negative real yield (”Adj Reward” in the below screenshot from StakingRewards) for the ‘simple’ approach of delegating.

Feedback

Join the discussion on twitter.