SIP-23: Inflation Smoothing
Author | |
---|---|
Status | Implemented |
Type | Governance |
Implementor | TBD |
Release | TBD |
Discussions-To | https://github.com/Synthetixio/SIPs/issues/36 |
Created | 2019-09-24 |
Simple Summary
This SIP gradually decreases SNX inflation by 1.25% per week starting on GMT Wednesday, 11 December 2019 00:00:00 - week 40 of the current inflation schedule. There is a separate SIP-24 that proposes an annual inflation rate of 2.5% on week 234 of the inflation schedule. This is the week when the smoothed inflation schedule would first go below 2.5% on an annualized basis.
This SIP is the formal spec successor of deltatiger's Draft SIP Proposal #36. The formalization of specifics (week starting, % decrease per week) reflects the consensus reached during the October 24, 2019 governance call.
Abstract
- SNX's current inflation schedule creates a total of 245M tokens
- SNX's current inflation schedule started on March 6, 2019
- SNX's current inflation schedule issues 1.44M SNX per week, and halves weekly rewards every 52 weeks for 260 weeks
- Smoothing (gradually decreasing vs. abruptly halvening) this inflation schedule decreases the potential risk that an inflation halvening poses
- Smoothing the inflation schedule immediately allows for a more gradual inflation decline
Motivation
After 6 months of gathering data on current inflation rates and assessing the community's sentiment in regards to future inflation halvening, the community's consensus is that the inflation halvening presents an easily avoidable risk that we can address through a gradually decreased inflation curve starting as soon as possible.
Specification
Starting on GMT Wednesday, 11 December 2019 00:00:00, SNX inflation decreases by 1.25% per week per this final model, which is based on the origional model proposed in the draft SIP.
If the inflation smoothing and fixed terminal inflation SIPs both get approved, inflation would look like the below graph.
Rationale
An abrupt inflation halvening could lead to:
- minters packing up at the same time
- synth supply shrinking
- SNX unlocking to be sold down
- SNX price dropping
- sETH LPs getting their income halved and also now dropping in value
- sETH LPs exiting by withdrawing and converting sETH to ETH
- sETH getting smashed out of peg
- arb pool being unattractive as SNX drops relative to ETH
Test Cases
Standard test cases for Solidity contract compiling and deploying onto Ethereum testnets before updating the contract on mainnet.
[SupplySchedule] https://github.com/Synthetixio/synthetix/blob/v2.16.4/test/contracts/SupplySchedule.js
[Synthetix] https://github.com/Synthetixio/synthetix/blob/v2.16.4/test/contracts/Synthetix.js#L2326
[RewardsIntegrationTests] https://github.com/Synthetixio/synthetix/blob/v2.16.4/test/contracts/RewardsIntegrationTests.js
Implementation
- Update and deploy SupplySchedule.sol to Ropsten, Rinkby, and Kovan
- Update and deploy changes to proxy contracts that reference SupplySchedule.sol on Ethereum testnets
- Update and deploy SupplySchedule.sol to Ethereum mainnet
- Update and deploy changes to Ethereum mainnet proxy contracts that reference SupplySchedule.sol
Removing time slippage on lastMintEvent and minting day buffer
-
lastMintEvent
is recorded when synthetix.mint() is executed each week (7 days) and to ensure that slippage is removed, thelastMintEvent
is set fromINFLATION_START_DATE
+number of weeks of inflation
+MINT_BUFFER
. -
Relying on the blocktime
now
when synthetix.mint() is called resulted in the inflation supply not be mintable again until after another 7 days had passed, i.e. if mint was called 1 day late on Friday, instead of a Thursday this slippage would compound. By settinglastMintEvent
to the start of the week that was last minted ensures that the next inflation mint would be available earlier. -
MINT_BUFFER
of 1 DAYS was added to ensure that inflationary supply is minted a day after feePeriod closes.
[SupplySchedule] https://github.com/Synthetixio/synthetix/blob/v2.16.4/contracts/SupplySchedule.sol#L220
Copyright
Copyright and related rights waived via CC0.