Hey everyone
I am proposing a change to the formula that calculates the ideal staking rate on Polkadot. In the following, I’ll detail the rationale behind this proposed change, offer an insight into the potential adjustment, and argue that it aligns with Polkadot’s anticipated trajectory.
Introduction
As presented in more detail here, the ideal staking rate is decreasing by 0.5% with every additional parachain until a minimum of 45%. Right now, with 45 parachains (with ID>=2000), the ideal rate is at 52.5%. The current system is designed to nudge the collective of stakers towards the ideal rate by diverting staker rewards whenever there is a mismatch between the two rates. It is crucial to recognize that if the staking rate falls below the ideal rate, diversions are scaling linearly. In contrast and if the staking rate is above the ideal rate, the amount scales exponentially. In other words, then much more rewards are diverted to treasury, reducing staker APY significantly.
This system was originally designed to cope with a gruadually upscaling number of parachains where continously a significant amount of issuance would be locked up in the slots. This leads to the observation that the total issuance of DOT would be divided among three major conditions: liquid, staked, or locked (in long-term slots).
With the upcoming changes, this assumption seem to be outdated, because the Relay Chain will allocate coretime on a much more frequent basis and the costs of coretime are spent directly, instead of indirectly (through opportunity costs). In short, there won’t be any tokens locked in parachain slots eventually.
While the long-term leases will probably still be a part of Polkadot in the short/medium-term, I expect them to fade away after some transition phase. This implies that it is not reasonable to expect a larger share of issuance being locked up for parachain leases. With that state being gone, we should reconsider the capacity limit imposed on the staking system by the ideal staking rate.
In particular, we should consider making sure that the ideal staking rate leaves enough room for staked tokens, obtaining more economic security as a positive side-effect.
An opportunity for revision
With the net number of parachain slots finally declining, the ideal staking rate would gradually move back to it’s upper limit of 75%. So, without further intervention, we’d see a gradual increase in the ideal staking rate. The problem, however, is that the slots have a non-uniformly distributed number tokens locked. In particular, a significant share of in the long-term lease system are due to Polkadot’s initial two lease offerings. Specifically, there are ~100M DOT locked in leases 6-13 and ~40M in 7-14. Those are projected to expire at around 23rd October 2023 and mid-January 2024, respectively. Then, the system experiences approximately ~7.4% of the issuance turning liquid in a singular event in October 2023 and another ~3% in January 2024.
With a current staking rate of about 48.8%, it leaves a meager 3.7% of the issuance available for staking prior to a steep plunge in staker rewards. Remember, that the incentives not to overshoot the ideal staking rate are much stronger than to not undershoot it. We might even see additional parachain slots being auctioned off, driving the ideal rate even further down. Consequently, the bulk of the unlocking tokens are constricted within the present staking framework.
To address this, rather than waiting for the natural rise in the ideal staking rate, we can act preemptively. By adjusting the rate now, we prepare the system for these imminent unlocking events, ensuring staking capacity aligns with Polkadot’s anticipated trajectory.
Immediate change
The current formula determines the auction_proportion
which is then substracted from the fixed value of 75% to obtain the ideal staking rate. An easy intervention would be to change the calculation.
The formula is currently:
let auction_proportion = Perquintill::from_rational(auctioned_slots.min(60), 200u64);
An immediate revision could be:
let auction_proportion = Perquintill::from_rational(auctioned_slots.min(60), 300u64);
In that configuration, the variable auction_proportion
is calculated as the minimum of the auctioned_slots
(which are all parachains with ID >= 2000) and 60, divided by 300. The ideal staking rate is then 75% minus the auction_proportion
. For the current situation, the ideal staking rate would then be calculated as: 0.75 - min(45,60)/300 = 0.6, i.e., 60%.
Long-term change
Eventually, it does not make sense to scale the ideal staking rate with the number of parachains (paraIDs), because their concept will be deprecated. Instead, we probably want to go for an ideal staking rate that is a governance-exposed constant. Then, the community can collaboratively determine an optimum value, given the state of the network at the time.
I’d argue, however, that the gradual upscaling is still a valid mechanism, because slots will gradually expire. We might want to wait until Polkadot fully transitioned between the old and the new method of allocating coretime until we discuss further, larger changes.
Next steps
Time is of the essence. This change requires a runtime upgrade and makes the most sense to deploy it before October 23rd. Should there be a consensus within the community about this revision, it could be synchronized with the adjustments discussed here that are currently being worked on here. From what I gather, we might still make that deadline.
TL;DR
In order to give the unlocking tokens from lease period 6-13 and 7-14 more room in the staking system, we could make a small adjustment to the calculation of the ideal staking rate. While this can be regarded as an ad-hoc response to a single event, the change aligns with the direction of Polkadot and its upcoming changes.
Let me know what you think.