[Note: this text can also be read here: Notion – The all-in-one workspace for your notes, tasks, wikis, and databases.]
Over the past month, the USDC depeg and the Euler hack have highlighted several vulnerabilities in our Core Module, emphasizing the need for a better model that reduces risks for agToken holders.
That being said, we would like to present the current state of our thoughts regarding the design of a “Core Module V2” for the protocol. Our aim is not to delve into technical details but rather to discuss the overall plan to ensure we are moving in the right direction.
Objectives
To begin, we will outline the key requirements that the future system must meet:
- The design should allow for mints and burns with low slippage to allow easy usage of the stablecoin and enable smooth Borrow Module liquidations.
- The design should be scalable.
- The design should be able to autonomously withstand unforeseen events, such as black swan events or hacks, without requiring any governance intervention.
- The design should treat all stablecoins holders equally in the event of a black swan event, without any bank run possibility.
- The design should be robust enough to accept any backing denominated in Euros, including stablecoins, yield-bearing tokens, and real-world assets.
- The design should be able to properly diversify and segregate risks among all the assets comprising its backing. This is a challenging task as the natural tendency is that automated systems are frequently left holding the weakest assets.
- The design should not expose users to any foreign exchange risk.
Overall, these requirements will help ensure that the new Core Module V2 is reliable, resilient, and fair for all users.
Design
Now, here is the design we have in mind. Let’s explain the design we have in mind through the scope of a € stablecoin (agEUR) backed by a basket of €-denominated assets.
For example, assume there are two assets, EURA and EURB, and the current reserves are 1 million EURA and 2 million EURB, respectively, backing 3M agEUR. We denote by p_A
and the EURA/EUR and EURB/EUR prices.
The system will involve three primary actions:
- Primary Action #1 - Redemption curve: Users can redeem 1 agEUR for a proportion of each reserve asset, minus a fee. For instance, in our example, redeeming 1 agEUR would involve swapping it for 0.33 EURA and 0.66 EURB. This action can be performed even during a black swan event without affecting the risk or underlying exposure of any other agEUR holder. It does not depend on the prices of the backing assets as the system simply exchanges a portion of the agEUR total supply against a portion of the reserves. A fee would be applied depending on the collateral ratio, with a peak just below 100%. This would deter users from starting a bank run as they’d have to pay slightly higher fees in case of small transitory depeg. The following figure would apply that plots how we could set the value redeemed by the Redemption Curve depending on the Collateral Ratio.
The goal of the decreasing redemption quotes as the collateral ratio starts to get below 100% is to disincentivize bank-runs and attacks on the currency peg and reward users who wait for a transitory downturn to pass in a sustainable way. This is a mechanism inspired by Gyroscope.
-
Primary Action #2 - Burn: Users can burn 1 agEUR to redeem an asset worth
min(1, p_A, p_B)*(1-fee)
. This is intended to be the most advantageous burning method if allp_i
are close to 1 only. Otherwise, it should be more advantageous to use the first method. This way, the system has a good UX in its normal state but preserves its exposures in the case of black swans to treat all users fairly. -
Primary Action #3 - Mint: Users can mint 1 agEUR against a specific asset priced by bringing
max(1, 1/p)/(1-fee)
asset. For instance, if EURA is priced at 0.999 and the fee is 0.1%, then 1.002 EURA can be exchanged for 1 agEUR.
To set the fees we define fees functions f^{mint}_{A}(e_A)
, f^{burn}_{A}(e_A)
, etc where e
is the exposure to the asset. In our example, e_A = 33.3%
, e_B = 66.6%
. Using these functions we can incentivize convergence toward target exposures to the underlying assets.
To set the fees, we will use the fees functions f^{mint}_{A}(e_A)
, f^{burn}_{A}(e_A)
, etc., where e_A
is the exposure to the asset. For example, if there are 1 million EURA and 1 million EURB, and EURA represents 50% of the total exposure, then e_A=50%
.
Assuming the system targets a 50-50 exposure, we could use the following functions as examples:
Defining such functions would naturally discourage users from minting with EURB or burning with EURA. Over time, the exposure should converge to the zone where fees are low, thereby incentivizing users to maintain an exposure of the system close to 50-50.
Furthermore, the proposed system could allow other modules to mint agEUR within a limited exposure to add liquidity to AMM pools. For instance, a Curve Deposit Module could be released, capped at 20% of the global exposure, that could mint agEUR to add liquidity to a agEUR-EURC pool on Curve. In case of a depeg of EURC, all the Curve liquidity would be swapped to EURC, but the effect would be limited to 20% of the global backing.
Here is the detailed example under the form of a spreadsheet: https://docs.google.com/spreadsheets/d/1cbwHlBVYsUoYE6pUKBsKnrpd8iFPawM4T1tK0xI8_kE/edit?usp=sharing
Properties
The system thus has the following key properties:
- UX: The system enables minting and burning with limited fees from a wide range of assets
- Scalability: It would work similarly with $1m TVL as with $1bn TVL
- Resilience: All its underlying mechanisms would be fully autonomous and hence predictable by all stakeholders. In case of a black swan event, just like in the Gyroscope design, it’d provide reasons to bet on the stablecoin returning to its target price.
- Fairness: There cannot be any bank run or case where the first users coming for a redemption end up better off than the ones coming after. This is particularly helpful in the case of a black swan of one of the stablecoins in the backing.
- Robustness: The backing system can be diversified with multiple stablecoins like EUROC, EURe, or EUROe. It can also work with other assets in the basket like yield-bearing Euros.
- Safety: If fees are properly set, the design provides incentives to bring the basket of reserves to a target desired allocation: this ensures that the risk of the system is properly diversified. In case of a depeg, it is unprofitable to perform trades that will leave the protocol holding the weakest asset (contrary to what happened to Maker during the USDC depeg).
By properly diversifying risk, the system should be safer than any of the assets in the backing alone. The system should be more resilient than any of the asset in the backing alone.