DIP-16: Improving Advance Incentives

In addition to the migration of our main liquidity pool from Uniswap to Sushiswap 🍣, DIP-16 introduces updated advance incentives.

TL;DR: With DIP-16 it is always economical to call the advance() function.

En route to DIP-10, one of the major roadblocks has been the advance() function. Due to high gas costs and DSD trading below peg, it has been not economical to call the advance() function. The gas costs were higher than the DSD rewards. The failure to call the function creates two problems:

  1. Confidence: When epochs aren’t advanced, DSD holders could be afraid that they will not be able to recover their DSD that they have bonded, without large costs for advancing the epochs. However, the confidence of market participants is crucial for the long-term success of DSD.
  2. Vulnerability: A larger epoch delay could be exploited by conflicting actors. For governance proposals to be approved, 25% of DAO bonders need to approve the proposal. When epochs are delayed, an attacker with significant DSD holdings could bond his DSD to the DAO and advance 12 epochs to be frozen immediately. Then he could propose a governance proposal, approve it with his frozen DSD, advance 36 epochs and commit the proposal. If this proposal e.g. mints infinite DSD to the attacker’s wallet, he could drain millions of USDC from the DSD pools and dump DSD into oblivion.

The new advance incentive fixes both issues. Under the new advance incentive, it is always economical to call the advance() function. The proposed improvement ensures confidence in the DSD mechanism and protects DSD against adversarial attacks. The advance caller now mints 1.25x the transaction cost worth in DSD. The mint can be calculated by:

advanceIncentive = advanceCost / DSD price * 1.25

For example:

  • If the transaction cost is $70 and DSD is at peg, then the advance caller receives 70 / 1 * 1,25 = 87,5 DSD.
  • If the transaction cost is $70 and DSD trades at $0.9, then the advance caller receives 70 / 0.9 * 1.25 = 97,2 DSD

The new advance() rewards are responsive to both the current transaction costs as well as the ETH price. The current ETH price and the current fast gas price are pulled by the Chainlink oracle contracts

Under the current implementation, DSD supply is increased by 150DSD with each advance call. Thereby, supply increases by 0.03% every month. Under the new implementation, assuming a $70 transaction cost to call advance(), inflation will be slightly increased for DSD prices < 0.5$ and slightly reduced for DSD prices ≥ 0.5$. For example, supply will increase by 0.09% around $0.2 and by 0.02% around $0.8.

Summary of advantages of the new implementation:

  • Long-term guarantee that DSDs epochs are always up-to-date
  • Catch-up of the current epoch backlog
  • Confidence that bonded DSD and LP token can be withdrawn without additional advance() costs.
  • Increased security against adversarial attacks
  • Decreased inflation for higher DSD prices

In the past, advance incentives had to be decreased and increased continually to respond to both (a) the changing value of DSD and (b) the gas/ETH price fluctuations. The constant updates have been a tedious process, reacting to problems retroactively.

A brief history of DSD advance incentives:

  • November 26th 2020: DSD starts with 50DSD advance incentive
  • Dec 1st 2020: DIP-1 lowered advance incentive to 25DSD because advance()-bots were dumping large amounts of DSD during the bootstrapping phase.
  • Dec 6th 2020: DIP-2 increased advance incentive to 50DSD to account for decreased price after bootstrap.
  • Jan 10th 2021: DIP-3 increased advance incentive to 150DSD because DSD price fell below peg and gas costs rose.

The new implementation paves way for a long-term stable and more secure future of the DSD protocol. We are excited to see how this mechanism in addition to DIP-10 can advance the protocols future!

The first fully DeFi compliant USD stablecoin.