DUSD is a stablecoin that is collateralized by Curve Finance liquidity provider (LP) tokens. It uses chainlink oracles for its stability mechanism. We leverage Curve to handle the logic around integrating with lending protocols and token swaps; which are essential ingredients for the stability of DUSD. We also introduce a staking mechanism for additional peg safety.
There are 4 components to the DUSD system.
This is the price reference data from the chainlink oracles for the supported stablecoins.
Peak refers to a yield generating protocol in which the underlying stablecoins are deposited. At launch, the system supports the curve susdV2 pool. This choice was made to maximize the distribution of decentralized stablecoins in the basket. It is possible to mint DUSD with DAI, USDT, USDC and sUSD. Since then the susdV2 has been deprecated and been replaced by the yPool. The contracts have been written in a manner that it is possible to add other peaks like Aave, Uniswap. Note that the peak will hold the respective LP tokens from the protocol it supports. It will be possible to modify/add/remove peaks from the protocol based on community deliberations.
Mint / redeem If any more peaks are added, the user will be free to choose any of the supported peaks to mint/redeem DUSD. However, note that the DUSD system will be an average of the funds in all the peaks. Later, we might explore the possibility of assigning weights to assets that are deposited at each peak (e.g. 60% y pool and 20% susdV2 pool and 20% in Aave). There will be a separate contract for each supported peak. This choice was made to keep the gas usage low. Here is how the curve finance peak will look like:
This is the core contract of the entire DUSD system and is in charge of the actual mint/redeem DUSD operations, pulling oracle prices, distributing protocol income to DUSD stakers — which brings us to the fourth component.
Valley refers to the DUSD staking system. If the underlying stable-coins fall below their $1 peg, the DUSD system will become under-collateralized. To offset this risk, DUSD has a native staking mechanism. It’s possible to stake DUSD with the system which acts as additional collateral for the DUSD coins that are in free circulation (not staked). In the event of peg failure of the underlying stablecoin assets, the stakers act as buyers of the last resort in the DUSD system. For bearing this risk, stakers will receive all the underlying income generated from having deposited funds in Curve.
Explaining the concept with a scenario:
Let’s say 110 DUSD are backed by $110 worth of stable-coins like DAI, USDC which are deposited in Curve and hence generating income.
Alice, with a higher risk appetite, decided to stake 10 DUSD. Since these staked funds act as collateral for the system, effectively the freely circulating 100 DUSD are collateralized with $110 worth of stable-coins.
Over some time period the protocol generated income (on the entire $110) from underlying curve pools and now has a total of $115 in assets. At this point Alice may decide to withdraw her stake and receive her proportional share (100%) from the income, so will withdraw $10 + $5 (denominated in DUSD). Note that though the protocol income was about 4.5%, however, that is directed entirely towards staked funds. This results in a 50% APR for Alice.
There may be a situation that causes one of the underlying stable-coins to break it’s peg, causing the system to be backed by $105 (instead of $110).
In this situation, the entire burden of the under-collateralized system is borne by Alice. So effectively, while the freely circulating 100 DUSD are still backed 1-1 with a dollar (protocol has $105), 5/10 staked DUSD will become unredeemable for Alice. This is how staked funds provide a volatility cushion. Please see What are the risks associated with staking? to understand more.
Say, a black swan event occurred which caused the underlying assets to fall further to $80. Now, - All of Alice's staked funds are unredeemable. - Since we still want free circulating DUSD to be redeemable with the protocol; the system will use the price feed from the oracle to devalue a DUSD token to $80/100 DUSD = $0.8 / DUSD.