Solana Inflation Design Overview

Below we summarize the status of our current inflation design, stage of implementation and areas of ongoing research. This post is an attempt to collect and summarize information previously published to present a holistic current picture of where we are on the road to implementation (i.e. nothing new/clever here, just an attempt at consolidation).

Terminology

Lots of terms are thrown around when discussing inflation and the related components (e.g. rewards/yield/interest), we try to define and clarify some commonly used concept here:

Total Current Supply [SOL]

The total amount of tokens (locked or unlocked) that have been generated (via genesis block or protocol inflation) minus any tokens that have been burnt (via transaction fees or other mechanism) or slashed. At network launch, 500,000,000 SOL were instantiated in the genesis block. Since then the Total Current Supply has been reduced by the burning of transaction fees and a planned token reduction event. As of 2020-10-01, Solana’s Total Current Supply stands at: 488,615,614 SOL

Inflation Rate [%]

The Solana protocol will automatically create new tokens on a predetermined inflation schedule (discussed below). The Inflation Rate [%] is the annualized growth rate of the Total Current Supply at any point in time.

Inflation Schedule

A deterministic description of token issuance over time. The Solana Foundation is proposing a dis-inflationary Inflation Schedule. I.e. Inflation starts at its highest value, the rate reduces over time until stabilizing at a predetermined long-term inflation rate (see discussion below). This schedule is completely and uniquely parameterized by three numbers:

  • Initial Inflation Rate [%]: The starting Inflation Rate for when inflation is first enabled. Token issuance rate can only decrease from this point.
  • Dis-inflation Rate [%]: The rate at which the Inflation Rate is reduced.
  • Long-term Inflation Rate [%]: The stable, long-term Inflation Rate to be expected.

Effective Inflation Rate [%]

The inflation rate actually observed on the Solana network after accounting for other factors that might decrease the Total Current Supply. Note that it is not possible for tokens to be created outside of what is described by the Inflation Schedule.

  • While the Inflation Schedule determines how the protocol issues SOL, this neglects the concurrent elimination of tokens in the ecosystem due to various factors. The primary token burning mechanism is the burning of a portion of each transaction fee. While 100\% of each transaction fee is currently being destroyed, it is planned on reducing this burn rate to 50\% of each transaction fee, with the remaining fee to be retained by the validator that processes the transaction.
  • Additional factors such as loss of private keys and slashing events should also be considered in a holistic analysis of the Effective Inflation Rate. For example, it’s estimated that 10-20\% of all BTC have been lost and are unrecoverable and that networks may experience similar yearly losses at the rate of 1-2\%.

Staking Yield [%]

The rate of return (aka interest) earned on SOL staked on the network. It is often quoted as an annualized rate (e.g. “the network staking yield is currently 10\% per year”).

  • Staking yield is of great interest to validators and token-holders holders who wish to delegate their tokens to avoid token dilution due to inflation (the extent of which is discussed below).
  • Inflationary issuances are expected to be split in distribution with 95% to be distributed to staked token-holders in proportion to the SOL they have staked with validators and 5% to be allocated to the Foundation treasury for operational expenses and future grants.
    • There may be future consideration for an additional split of inflation issuance with the introduction of Archivers into the economy. Archivers are network participants who provide a decentralized storage service and should also be incentivized with token distribution from inflation issuances for this service.
  • Staking yield can be calculated from the Inflation Schedule along with the fraction of the Total Current Supply that is staked at any given time. Since inflation interest is split between staked-token holders, the Foundation pool and, potentially, Archivers - only the portion delivered to validators should be considered in the calculation of Staking Yield. Currently, the only split discussed is the 5\% to the Foundation, which is likely to be directly staked upon receipt, so not impacting the yield calculation. Below, this is specified by setting the ‘Fraction to Validators’ to 100\%. The explicit relationship is given by:
\begin{aligned} \text{Staking Yield} &= \text{Inflation Rate}\times \text{Fraction to Validators}\times \left( \frac{1}{\%~\text{SOL Staked}} \right) \\ \text{where:}\\ \%~\text{SOL Staked} &= \frac{\text{Total SOL Staked}}{\text{Total Current Supply}} \end{aligned}

Token Dilution [%]

Dilution is defined here as the change in proportional representation of a set of tokens within a larger set due to the introduction of new tokens. In practical terms, we discuss the dilution of staked or un-staked tokens due to the introduction and distribution of inflation issuance across the network. As will be shown below, while dilution impacts every token holder, the relative dilution between staked and un-staked tokens should be the primary concern to un-staked token holders. Staking tokens, which will receive their proportional distribution of inflation issuance, should assuage any dilution concerns for staked token holders. I.e. dilution from ‘inflation’ is offset by the distribution of new tokens to staked token holders, nullifying the ‘dilutive’ effects of the inflation for that group.

Adjusted Staking Yield [%]

A complete appraisal of earning potential from staking tokens should take into account staked Token Dilution and its impact on the Staking Yield. For this, we define the Adjusted Staking Yield as the change in fractional token supply ownership of staked tokens due to the distribution of inflation issuance. I.e. the positive dilutive effects of inflation.

Solana’s Proposed Inflation Schedule

As mentioned above, the network’s Inflation Schedule is uniquely described by three parameters: Initial Inflation Rate, Dis-inflation Rate and Long-term Inflation Rate. When considering these numbers, there are many factors to take into account:

  • A large portion of the SOL issued via inflation will be distributed to stake-holders in proportion to the SOL they have staked. We want to ensure that the Inflation Schedule design results in reasonable Staking Yields for token holders who delegate SOL and for validation service providers (via commissions taken from Staking Yields).
  • The primary driver of Staked Yield is the amount of SOL staked divided by the total amount of SOL (% of total SOL staked). Therefore the distribution and delegation of tokens across validators are important factors to understand when determining initial inflation parameters.
  • Yield throttling is a mechanism currently under consideration that would impact staking-yields. This is not taken into consideration in the discussion here or the modeling below.
  • Overall token issuance - i.e. what do we expect the Current Total Supply to be in 10 years, or 20 years?
  • Long-term, steady-state inflation is an important consideration not only for sustainable support for the validator ecosystem and the Solana Foundation grant programs, but also should be tuned in consideration with expected token losses and burning over time.
  • The rate at which we expect network usage to grow, as a consideration to the dis-inflationary rate. Over time, we plan for inflation to drop and expect that usage will grow.

With these considerations in mind, we can start exploring ranges of expected inflation schedules and subsequent staking-yields, under various assumptions about the above factors.

Currently, we’re exploring ranges for the annual supply inflation rate between 5-10\%, decreasing by ~15\% yearly until it stabilizes long-term around 1-2\%. The modeling presented here gives us an idea of what to expect within these ranges. We expect to continuously refine these models and narrow in on specific numbers with the support of community discussions. The largest ecosystem drivers that will mature during that time, and guide our final decisions, will be the distribution of staked SOL and the development of Solana Foundation delegation programs (e.g. Stake-o-Matic matching program).

As inflation balancing factors such as transaction fee burning and token loss, will necessarily impact the protocol issuance more in the future, the models discussed below are more likely to reflect the reality of the early days of the protocol.

As a first step to understanding the impact of the Inflation Schedule on the Solana economy, we’ve simulated the upper and lower ranges of what token issuance over time might look like given the current ranges of Inflation Schedule parameters under study.

Specifically:

  • Initial Inflation Rate: 7-9\%
  • Dis-inflation Rate: -14-16\%
  • Long-term Inflation Rate: 1-2\%

Using these ranges to simulate a number of possible Inflation Schedules, we can explore inflation over time:

In the above graph, the average values of the range are identified to illustrate the contribution of each parameter.
From these simulated Inflation Schedules, we can also project ranges for token issuance over time.

Finally we can estimate the Staked Yield on staked SOL, if we introduce an additional parameter, previously discussed, % of Staked SOL:

\%~\text{SOL Staked} = \frac{\text{Total SOL Staked}}{\text{Total Current Supply}}

In this case, because % of Staked SOL is a parameter that must be estimated unlike the Inflation Schedule parameters which are prescribed. For this reason is is most convenient to specify Inflation Schedule parameters and explore a range of % of Staked SOL. For the below example, we’ve chosen the middle of the parameter ranges explored above:

  • Initial Inflation Rate: 8\%
  • Dis-inflation Rate: -15\%
  • Long-term Inflation Rate: 1.5\%

The values of % of Staked SOL range from 60\% - 90\%, which we feel covers the likely range we expect to observe, based on feedback from the investor and validator communities as well as what is observed on comparable Proof-of-Stake protocols.

Again, the above shows an example Staked Yield that a staker might expect over time on the Solana network with the Inflation Schedule as specified. This is an idealized Staked Yield as it neglects validator uptime impact on rewards, validator commissions, potential yield throttling and potential slashing incidents. It additionally ignores that % of Staked SOL is dynamic by design - the economic incentives set up by this Inflation Schedule are more clearly seen when Token Dilution is taken into account (see the Estimated Adjusted Staking Yield section below).

Token Dilution

Similarly we can look at the expected Staked Dilution (i.e. Adjusted Staking Yield) and Un-staked Dilution as previously defined. Again, dilution in this context is defined as the change in fractional representation (i.e. ownership) of a set of tokens within a larger set. In this sense, dilution can be a positive value: an increase in fractional ownership (staked dilution / Adjusted Staking Yield), or a negative value: a decrease in fractional ownership (un-staked dilution).

We are interested in the relative change in ownership of staked vs un-staked tokens as the overall token pool increases with inflation issuance. As discussed, this issuance is distributed only to staked token holders, increasing the staked token fractional representation of the Total Current Supply.

Continuing with the same Inflation Schedule parameters as above, we see the fraction of staked supply grow as shown below.

Due to this relative change in representation, the proportion of stake of any token holder will also change as a function of the Inflation Schedule and the proportion of all tokens that are staked.

Of initial interest, however, is the dilution of un-staked tokens, or D_{us}. In the case of un-staked tokens, token dilution is only a function of the Inflation Schedule because the amount of un-staked tokens doesn’t change over time.

This can be seen by explicitly calculating un-staked dilution as D_{us}. The un-staked proportion of the token pool at time t is P_{us}(t_{N}) and I_{t} is the incremental inflation rate applied between any two consecutive time points. SOL_{us}(t) and SOL_{total}(t) is the amount of un-staked and total SOL on the network, respectively, at time t. Therefore P_{us}(t) = SOL_{us}(t)/SOL_{total}(t).

\begin{aligned} D_{us} &= \left( \frac{P_{us}(t_{1}) - P_{us}(t_{0})}{P_{us}(t_{0})} \right)\\ &= \left( \frac{ \left( \frac{SOL_{us}(t_{2})}{SOL_{total}(t_{2})} \right) - \left( \frac{SOL_{us}(t_{1})}{SOL_{total}(t_{1})} \right)}{ \left( \frac{SOL_{us}(t_{1})}{SOL_{total}(t_{1})} \right) } \right)\\ \end{aligned}

However, because inflation issuance only increases the total amount and the un-staked supply doesn’t change:

\begin{aligned} SOL_{us}(t_2) &= SOL_{us}(t_1)\\ SOL_{total}(t_2) &= SOL_{total}(t_1)\times (1 + I_{t_1})\\ \end{aligned}

So D_{us} becomes:

\begin{aligned} D_{us} &= \left( \frac{ \left( \frac{SOL_{us}(t_{1})}{SOL_{total}(t_{1})\times (1 + I_{1})} \right) - \left( \frac{SOL_{us}(t_{1})}{SOL_{total}(t_{1})} \right)}{ \left( \frac{SOL_{us}(t_{1})}{SOL_{total}(t_{1})} \right) } \right)\\ D_{us} &= \frac{1}{(1 + I_{1})} - 1\\ \end{aligned}

Or generally, dilution for un-staked tokens over any time frame undergoing inflation I:

D_{us} = -\frac{I}{I + 1} \\

So as guessed, this dilution is independent of the total proportion of staked tokens and only depends on inflation rate. This can be seen with our example Inflation Schedule here:

Estimated Adjusted Staked Yield

We can do a similar calculation to determine the dilution of staked token holders, or as we’ve defined here as the Adjusted Staked Yield, keeping in mind that dilution in this context is an increase in proportional ownership over time. We’ll use the terminology Adjusted Staked Yield to avoid confusion going forward.

To see the functional form, we calculate, Y_{adj}, or the Adjusted Staked Yield (to be compared to D_{us} the dilution of un-staked tokens above), where P_{s}(t) is the staked proportion of token pool at time t and I_{t} is the incremental inflation rate applied between any two consecutive time points. The definition of Y_{adj} is therefore:

Y_{adj} = \frac{P_s(t_2) - P_s(t_1)}{P_s(t_1)}\\

As seen in the plot above, the proportion of staked tokens increases with inflation issuance. Letting SOL_s(t) and SOL_{\text{total}}(t) represent the amount of staked and total SOL at time t respectively:

P_s(t_2) = \frac{SOL_s(t_1) + SOL_{\text{total}}(t_1)\times I(t_1)}{SOL_{\text{total}}(t_1)\times (1 + I(t_1))}\\

Where SOL_{\text{total}}(t_1)\times I(t_1) is the additional inflation issuance added to the staked token pool. Now we can write Y_{adj} in common terms t_1 = t:

\begin{aligned} Y_{adj} &= \frac{\frac{SOL_s(t) + SOL_{\text{total}}(t)\times I(t)}{SOL_{\text{total}}(t)\times (1 + I(t))} - \frac{SOL_s(t)}{SOL_{\text{total}}(t)} }{ \frac{SOL_s(t)}{SOL_{\text{total}}(t)} } \\ &= \frac{ SOL_{\text{total}}(t)\times (SOL_s(t) + SOL_{\text{total}}(t)\times I(t)) }{ SOL_s(t)\times SOL_{\text{total}}\times (1 + I(t)) } -1 \\ \end{aligned}

which simplifies to:

Y_{adj} = \frac{ 1 + I(t)/P_s(t) }{ 1 + I(t) } - 1\\

So we see that the Adjusted Staked Yield a function of the inflation rate and the percent of staked tokens on the network. We can see this plotted for various staking fractions here:

It is also clear that in all cases, dilution of un-staked tokens > adjusted staked yield (i.e. dilution of staked tokens). Explicitly we can look at the relative dilution of un-staked tokens to staked tokens: D_{us}/Y_{adj}. Here the relationship to inflation drops out and the relative dilution, i.e. the impact of staking tokens vs not staking tokens, is purely a function of the % of the total token supply staked. From above

\begin{aligned} Y_{adj} &= \frac{ 1 + I/P_s }{ 1 + I } - 1,~\text{and}\\ D_{us} &= -\frac{I}{I + 1},~\text{so} \\ \frac{D_{us}}{Y_{adj}} &= \frac{ \frac{I}{I + 1} }{ \frac{ 1 + I/P_s }{ 1 + I } - 1 } \\ \end{aligned}

which simplifies as,

\begin{aligned} \frac{D_{us}}{Y_{adj}} &= \frac{ I }{ 1 + \frac{I}{P_s} - (1 + I)}\\ &= \frac{ I }{ \frac{I}{P_s} - I}\\ \frac{D_{us}}{Y_{adj}}&= \frac{ P_s }{ 1 - P_s}\\ \end{aligned}

Where we can see a primary dependence of the relative dilution of un-staked tokens to staked tokens is on the function of the proportion of total tokens staked. As shown above, the proportion of total tokens staked changes over time (i.e. P_s = P_s(t) due to the re-staking of inflation issuance thus we see relative dilution grow over time as:

As might be intuitive, as the total fraction of staked tokens increases the relative dilution of un-staked tokens grows dramatically. E.g. with 80\% of the network tokens staked, an un-staked token holder will experience ~400\% more dilution than a staked holder.

Again, this represents the change in fractional change in ownership of staked tokens and illustrates the built-in incentive for token holder to stake their tokens to earn Staked Yield and avoid Un-staked Dilution.

Model Parameter Dashboard

While we’ve presented a range of Inflation Schedule parameters here, a generic model implementation is available at: https://solana.shinyapps.io/network_parameters/. Different combinations of Inflation Schedule parameters can be input with the impact on some of the same outcome metrics presented above being shown.

This dashboard is in current development and expected to evolve.

Next Steps

Inflation, as described, has been enabled our Tour de SOL testnet for over a month at the time of this post. During this time we’ve been able to observe testnet issuance and debug this implementation running on a distributed network. The proposed v1.3 release, has a feature to reducing the Inflation Rate on both testnet and devnet to 0.01\% and as well asl providing initial tooling for monitoring inflation metrics. This reduced implementation on our test networks is in preparation of a roll-out of this reduced inflation on Mainnet Beta.

Over the next few weeks, we plan to closely monitor this reduced inflation issuance on testnet and devnet to further validate the distribution model on these networks. During this time, we hope to make the final refinements to the Inflation Schedule. These refinements will be based on input from the community and observation/estimation of changes to the \% of tokens staked on the network. Similar to the reduced inflation schedule, full Inflation Schedule parameters will be initially rolled out on testnet and devnet for validation in advance of Mainnet Beta.

Implementation of full Inflation Schedule on Mainnet Beta following the remaining testing described above is targeted for mid-Q4. Specific target parameters and potential implementation dates will be circulated in advance for community discussion in these forums.

8 Likes

Thanks for this post @eric

The content in these posts are getting richer and complex

Are you open to having an quick walkthrough and AMA w/ our community ?

This is a great idea. I’ll set something up with seshbot on Discord

edit: done!

1 Like

Lots of good stuff in this analysis.

One item I might add to the mix: the unbonding period, or the amount of time that token holders need to wait for their staked tokens to unlock for transfer. Not surprisingly, we’ve seen that networks with longer unbonding periods (e.g. Polkadot & Cosmos) have a lower staking participation rate than those who have fully-liquid staking or short unbonding periods.