[ARFC] Onboard USDS and sUSDS to Aave v3

Title: [ARFC] Onboard USDS and sUSDS to Aave v3

Author: @ACI

Date: 2024-09-10


Summary

This proposal aims to onboard USDS and sUSDS, the rebranded DAI and sDAI tokens to Aave v3.

Motivation

DAI has been a cornerstone asset in the Aave ecosystem, with a long and successful history of supply across various versions of the protocol. MakerDAO marked a significant milestone with a rebranded to Sky, introducing USDS and sUSDS as the new iterations of DAI and sDAI. Given the established track record and widespread adoption of their predecessors, we propose to onboard these new assets to Aave v3.

By integrating USDS and sUSDS into Aave v3, we aim to maintain continuity for users who have relied on DAI and sDAI while embracing the evolution of these assets under the Sky brand.

Benefits of listing USDS and sUSDS

DAI and sDAI have been a success and in order to not lose marketshare to other protocols as some DAI holders migrate to the new tokens, it is in the DAO’s interest to capture this demand. As there will be incentive programs running this also provides the opportunity for Aave users to benefit from these.

Market impact

We expect the listing of these new tokens to possibly take marketshare from existing markets on Aave but overall expect a positive impact on Aave growth due to incentive programs.

Chain to be deployed

ETH mainnet.

Proof of Liquidity and Deposit Commitments

Sky protocol team has discussed providing both token incentives and liquidity provision when USDS is onboarded. Further details on incentive programs can be found on the Maker Forum here: Spark Proposal for Integrations into Aave - Spark SubDAO - The Maker Forum

Useful links

Specification

Based on discussion with members of Sky protocol team, we propose the following:

  • sUSDS added as collateral and borrow asset to Aave v3 Main Instance
  • USDS added as supply and borrow asset to Aave v3 Lido Instance
  • Integration with Paraswap to allow users to seamlessly swap between DAI and USDS variants within the Aave system.

We invite all service providers and community members to weigh in on these suggestions.

Risk Parameters will be provided by Risk Service Providers and this ARFC will be updated based on this.

Relevant contract addresses are as follows:

Contract Address
USDS Token 0xdC035D45d973E3EC169d2276DDab16f1e407384F
USDS Implementation 0x1923DfeE706A8E78157416C29cBCCFDe7cdF4102
DAI-USDS Converter 0x3225737a9Bbb6473CB4a45b7244ACa2BeFdB276A
sUSDS Token and Vault 0xa3931d71877C0E7a3148CB7Eb4463524FEc27fbD
sUSDS Implementation 0x4e7991e5C547ce825BdEb665EE14a3274f9F61e0

Disclaimer:

This proposal is powered by Skywards. ACI is not directly affiliated with Sky and did not receive compensation for creation of this proposal.

Next Steps

  1. Publication of a standard ARFC, collect community & service providers feedback before escalating proposal to ARFC snapshot stage
  2. If the ARFC snapshot outcome is YAE, publish an AIP vote for final confirmation and enforcement of the proposal

Copyright:

Copyright and related rights waived under CC0

4 Likes

Overview

Chaos Labs supports the onboarding of sUSDS to Aave v3 Main Ethereum deployment and USDS to Aave v3 Lido Ethereum instance.

Please note that we are unable to provide all parameters for sUSDS at this time given the lack of available on-chain data, and this recommendation will be updated as this becomes available.

USDS and sUSDS Information

USDS is the newly upgraded stablecoin of the Sky Ecosystem, replacing DAI and allowing 1:1 conversion from DAI and USDC. Additionally, with sUSDS, users can opt for the traditional Savings Rate, which previously applied to sDAI.

DAI-USDS Conversion

Users will be able to convert DAI to USDS seamlessly at a 1:1 ratio through the Sky.money platform using the SUDS conversion contract. The process is reversible: users will be able to convert the USDS back into DAI through the same contract.

The SUDS conversion contract is verified and publicly available on GitHub, allowing us to confirm that the conversion process is atomic.

The following Solidity code outlines the primary conversion function:

function daiToUsds(address usr, uint256 wad) external {
    dai.transferFrom(msg.sender, address(this), wad);
    daiJoin.join(address(this), wad);
    usdsJoin.exit(usr, wad);
    emit DaiToUsds(msg.sender, usr, wad);
}

The function executes in four distinct steps:

  1. dai.transferFrom(): This step transfers the specified amount of DAI from the user’s wallet to the conversion contract’s address.
  2. daiJoin.join(): The DAI is moved from the conversion contract to the Maker Vault (vat) to repay any associated debt.
  3. usdsJoin.exit(): The contract opens an equivalent position with USDS via the vat, transferring the corresponding USDS amount to the user.
  4. emit DaiToUsds(): Finally, an event is emitted to signal the successful conversion of DAI to USDS.

image_720

SKY Token and Incentives

The SKY token serves as the new governance token of the Sky Ecosystem. MKR holders will be able to optionally convert MKR to SKY at a rate of 24,000 SKY per MKR.

The SKY Token Reward will be distributed at a rate of 600 million SKY per year across participating USDS holders, with users who registered before the launch receiving double rewards for the first month. Given the considerable rewards distributed, we expect to see a rapid migration from DAI in the first month.

sUSDS and staking contract

sUSDS is the staked version of USDS that provides a 6% yield through the DSR. sUSDS will not receive an sDAI to sUSDS conversion contract, but it will use the ERC-4626 token standard, and the conversion from USDS will be instantaneous.

LlamaRisk covers the staking contract functionality in their analysis.

Liquidity

As the USDS and sUSDS tokens have not yet been launched, no on-chain liquidity is currently available. However, the migration of the PSM, as hinted by the X post from Sam MacPherson, implies the availability of 1.4B USDC of liquidity upon the migration.

Additionally, at Launch, the Smart Burn Engine will target the SKY/USDS market with all of its current liquidity and all future automatic liquidity acquisition from Protocol Surplus.

Given that atomic USDS to DAI conversions are available, USDS will be deeply liquid immediately after launch.

Pricing the Assets

Given the instant and permissionless conversion contract and the deep liquidity available for DAI, we recommend pricing USDS using the DAI/USD market oracle until a USDS oracle is available. For sUSDS, we recommend using an exchange rate oracle.

LTV, Liquidation Threshold, and Liquidation Bonus

While we are not able to analyze the assets’ historical price volatility, given the pricing setup described above, we recommend aligning USDS’s collateral parameters with DAI’s: 63% LTV and 72% LT (note that DAI’s current LT is higher, however we recommended 72% as ideal in April; reductions to DAI’s LT have been limited by potentially large induced liquidations).

We recommend setting the Liquidation Bonus at 7.5% initially, higher than DAI’s 5%. This higher parameter will help ensure that liquidations are processed even in the event of significant peg volatility. Additionally, we will closely monitor the deployment of this market; if we observe that USDS is primarily being used as collateral for USDS-USDS looping, we may recommend reducing its LTV to 0%.

We recommend aligning sUSDS’s parameters with sDAI’s: 75% LTV and 78% LT.

Supply and Borrow Cap

Demand to borrow stablecoins against LSTs has thus far been relatively limited. As such, we prefer to err on the side of caution when setting initial caps for USDS. We recommend an initial supply cap of 50M and borrow cap of 45M for USDS on the Lido instance, noting that we are able to double supply and borrow caps via the risk steward immediately after listing, then every five days afterwards, creating a hypothetical max supply cap of 200M five days after listing, should demand be overwhelming and liquidity facilitate such an increase.

Given sUSDS’s similarity to sDAI, as well as its incentives, we find it likely that sDAI liquidity will rapidly shift to sUSDS. Additionally, atomic swaps between USDS and DAI reduce the liquidity risk associated with listing a new asset like sUSDS. Given this, we recommend a starting supply cap of 35M, slightly more than half of sDAI’s current supply.

In addition to these changes, we propose reducing caps for DAI and sDAI on Ethereum, anticipating that demand for these assets will decrease.

IR Curve

We recommend aligning USDS’s IR curve with DAI’s.

Recommendations

Following the above analysis, we recommend the following parameters for listing USDS and sUSDS on Aave V3’s Ethereum deployment. The sUSDS listing parameters will be updated following an assessment of on-chain liquidity.

Parameter Value
Asset USDS
Market Lido
Isolation Mode No
Borrowable Yes
Collateral Enabled Yes
Supply Cap 50,000,000
Borrow Cap 45,000,000
Debt Ceiling -
LTV 63%
LT 72%
Liquidation Bonus 7.5%
Liquidation Protocol Fee 10.00%
Variable Base 0%
Variable Slope1 5.5%
Variable Slope2 75.0%
Uoptimal 90%
Reserve Factor 25%
Stable Borrowing Disabled
Flashloanable Yes
Siloed Borrowing No
Borrowable in Isolation No
E-Mode Category N/A
Parameter Value
Asset sUSDS
Market Core
Isolation Mode No
Borrowable No
Collateral Enabled Yes
Supply Cap 35,000,000
Borrow Cap -
Debt Ceiling -
LTV 75%
LT 78%
Liquidation Bonus 7.5%
Liquidation Protocol Fee 10.00%
Variable Base -
Variable Slope1 -
Variable Slope2 -
Uoptimal -
Reserve Factor -
Stable Borrowing Disabled
Flashloanable Yes
Siloed Borrowing No
Borrowable in Isolation No
E-Mode Category N/A

Additionally, we recommend the following supply and borrow cap changes on Ethereum.

Current Supply Cap Rec. Supply Cap Current Borrow Cap Rec. Borrow Cap
sDAI 340,000,000 70,000,000 - -
DAI 338,000,000 150,000,000 271,000,000 140,000,000

CAPO

For USDS, we recommend aligning to stablecoin markets on Aave.

Price Cap
4%

For sUSDS:

MINIMUM_SNAPSHOT_DELAY ratioReferenceTime maxYearlyRatioGrowthPercent
4 days monthly 15%
5 Likes

Summary

We support the onboarding of USDS and sUSDS on the Aave platform. Being a day-1 partner marks a new epoch in the collaboration between Aave and Maker. The verifiable information available and Maker’s track record are sufficient to establish conservative parameters that could be quickly expanded upon as these markets evolve. We published an initial brief of this transition.

Here are the highlights of our assessment:

  • Maker ecosystem transitioning from DAI to USDS as part of the Endgame plan, while DAI remains immutable.
  • USDS obtainable by upgrading DAI or converting USDC (1:1), with holders earning SKY token rewards (600M annually) and benefiting from Savings Rate.
  • SKY: new governance token, upgradeable from MKR (24,000 SKY per MKR).
  • Sky.money: primary gateway to Sky Ecosystem, launching on September 18, 2024, with Skybase International managing legal, technical, and marketing aspects.
  • USDS mintable on Spark.fi with various crypto collaterals, 700M SPK rewards allocated; Spark Star plays a significant role in the Sky Ecosystem.
  • Activation campaign (August 20 - September 18, 2024) subject to legal terms, excludes US, UK, and prohibited jurisdictions, prohibits VPNs and anonymization; rewards claimable until December 30, 2024.
  • Expected PSM migration: 1.4B USDC liquidity, 6% estimated yield.
  • Smart Contracts:
    • DAI USDS Converter: 1:1 swaps between DAI and USDS with zero fees, no mutable fee mechanisms.
    • sUSDS: yield-bearing USDS deposits, guided by flexible Savings USDS Rate (SSR), ERC-20, ERC-4626, and ERC-2612 compliant, upgradeable, no external oracle, future freeze function for global scalability over a multi-month to multi-year timeline.
    • Bug bounty program via ImmuneFi, rewards from $1,000 to $10 million based on vulnerability severity.
    • ChainSecurity audit: no major vulnerabilities found, one low-severity issue resolved.

We have reviewed the parameters proposed by @ChaosLabs and support their implementation, especially considering the detailed rationale provided in light of the lack of historical data for these new assets. Key decisions include setting a higher liquidation bonus and temporarily utilizing the existing DAI/USD market feed and exchange rate oracle for sUSDS. We will monitor these new assets closely and provide update as needed.

Supplement to our initial brief

Smart Contract Risk

USDS

Contract: 0x1923DfeE706A8E78157416C29cBCCFDe7cdF4102

The contract uses the UUPS (Universal Upgradeable Proxy Standard) pattern to enable upgradeability. Only authorized admins (wards[address] == 1) can:

  • Grant or revoke admin rights (rely, deny)
  • Authorize upgrades (_authorizeUpgrade)
  • Update contract parameters, e.g., Savings Rate (file)

getImplementation allows anyone to check the current implementation.

The contract implements key standards:

  • ERC-20: Standard token functionality (totalSupply, balanceOf, transfer, transferFrom)
  • ERC-4626: Tokenized shares of an underlying asset (USDS) that accrues yield over time (deposit, mint, withdraw, redeem, convertToShares, convertToAsset)
  • ERC-2612: Permit functionality for approvals via signatures (EIP-712), saving gas

The drip function updates the rate accumulator (chi) based on the USDS Savings Rate (ssr), determining the savings balance growth over time. It ensures chi only updates when time has passed since the last update (rho).

DAI USDS Converter

Contract: 0x3225737a9Bbb6473CB4a45b7244ACa2BeFdB276A

DAI USDS Converter allows for 1:1 swaps between DAI and USDS through two main functions (daiToUsds and usdsToDai).
It relies on external Join contracts for DAI and USDS, which handle deposits and withdrawals of tokens.
Only the user who initiates a transaction (e.g., calling daiToUsds or usdsToDai) needs to approve token transfers. The Converter ensures that only the specified user (usr) receives the tokens after the swap.
The conversion is performed without any deductions or fees. Since fees are not implemented, and there are no mutable state variables related to fees, no one can further set or change the fees.

Savings USDS

Contract: 0xa3931d71877C0E7a3148CB7Eb4463524FEc27fbD

sUSDS represents a savings version of the USDS stablecoin, where users can deposit USDS tokens to earn yield based on the Savings USDS Rate (SSR). The contract is designed to handle deposits, withdrawals, and savings interest accrual leveraging VatLike, UsdsJoinLike, and UsdsLike for core interactions with the USDS system.

ERC-20 and ERC-4626 standards are followed, with additional upgradability implementation through inheritance from OpenZeppelin’s UUPSUpgradeable. This ensures that the contract can be upgraded without disrupting the existing state.

SSR rate determines the yield for depositors. It can be changed by authorized users (admins) through the file function, which sets a new SSR. While the contract imposes no explicit fee for deposits or withdrawals, the yield earned by users is directly influenced by the SSR, which is adjustable by the admins.

Bug Bounty Program

The program follows the rules prescribed by MakerDAO and is available on ImmuneFi Bug Bounty Portal. Rewards start from $1,000 for low-level bugs and grade up to $10,000,000, calculated as 10% of the funds directly affected, with a minimum reward of $150,000 for critical bugs reported.

Smart Contract Audits

ChainSecurity has assessed USDS codebase. The audit identified one low-severity finding related to a specification change. No critical, high, or medium-severity findings were reported.

The only finding resolved was a low-severity issue regarding outdated information in the README about wards of USDS. There is a note that the DaiNst converter can be paused if DaiJoin is paused, though this does not apply to the current deployment.

Access Control Risk

sUSDS contract uses wards mapping for access control. Admins (addresses in wards with a value of 1) have special privileges:
• Adding or removing other admins (rely and deny).
• Setting contract parameters, like the USDS Savings Rate (SSR) via file.
• Upgrading the contract (_authorizeUpgrade).

Disclaimer

This review was independently prepared by LlamaRisk, a community-led non-profit decentralized organization funded in part by the Aave DAO. LlamaRisk is not directly affiliated with the Sky protocol and did not receive any compensation from Sky for this assessment.

The information provided should not be construed as legal, financial, tax, or professional advice.

4 Likes

For easier integration & implementation, this AIP will be implemented in 2 parts.

The first part will be escalated shortly to onboard both USDS & sUSDS on the Aave Ethereum Main pool.

A second part will consider onboarding the Lido Instance alongside other stablecoins.

5 Likes

Hello @MarcZeller and @ACI. I see that this proposal has been cancelled; however, can you please confirm: ‘0xdC035D45d973E3EC169d2276DDab16f1e407384’ as the contract address for USDS? Thank you.

1 Like

Hello,

Review of the AIP by @bgdlabs & @Certora detected an implementation error.

To protect aave users, the proposal was cancelled, payload was fixed, re-reviewed and passed.

We are now aiming at an onboarding for Tuesday 24th.

@sharkshart no the address is 0xdC035D45d973E3EC169d2276DDab16f1e407384F

2 Likes

After discussions and sync with service providers and Sky team to benefit the intended use case we made the following modifications to the AIP parameters

sUSDS Changes in Aave V3 Main Instance

Parameter Before After
borrowCap 0 USDS 32,500,000 USDS
reserveFactor 25% 50%
borrowingEnabled false true
optimalUsageRatio 90% 92%
variableRateSlope1 5.5% 2%
variableRateSlope2 75% 50%
Parameter Before After
Collateral Enabled true false
LTV (Loan-to-Value) 63% 0%
Liquidation Threshold 72% 0%
Liquidation Bonus 7.5% 0%
Reserve Factor 25% 10%
Base Variable Borrow Rate 0% 0.75%
Variable Rate Slope 1 5.5% 6.25%
Optimal Usage Ratio 90% 92%
2 Likes

USDS Proposal Update: Final Changes and Explanations

Following discussions with service providers and the Sky team, significant modifications have been made to the original proposal for onboarding USDS to Aave V3. These changes primarily affect the parameters for USDS in the main Aave V3 instance, while the Lido pool remains unchanged.

Major Changes

  1. Removal of sUSDS: The updated proposal no longer includes the listing of sUSDS.

  2. Collateral Usage: USDS is now enabled as collateral in the main pool

  3. Reserve Factor: Substantial decrease from the originally proposed value for USDS in the main pool.

  4. Interest Rate Parameters: Adjustments to Variable Rate Slopes for USDS in the main pool.

  5. No Changes to Lido Pool: The parameters for the Lido pool remain as originally proposed.

Detailed Parameter Changes for USDS in Aave V3 Main Instance

Below is a table comparing the original proposal’s parameters for sUSDS with the updated version onboarding USDS:

Parameter Original Proposal Updated Proposal
Reserve Factor 50% 10%
Base Variable Borrow Rate 0.75% 0.75%
Variable Rate Slope 1 2% 6.25%
Variable Rate Slope 2 50% 75%
Optimal Usage Ratio 92% 92%

In light of the recent updates to the proposal, we have updated our recommended parameters for listing USDS on the main Aave V3 instance.

Recommendation

Parameter Value
Asset USDS
Market Main
Isolation Mode No
Borrowable Yes
Collateral Enabled Yes
Supply Cap 50,000,000
Borrow Cap 45,000,000
Debt Ceiling -
LTV 75%
LT 78%
Liquidation Bonus 7.5%
Liquidation Protocol Fee 10.00%
Variable Base 0.75%
Variable Slope1 6.25%
Variable Slope2 75.0%
Uoptimal 92%
Reserve Factor 10%
Stable Borrowing Disabled
Flashloanable Yes
Siloed Borrowing No
Borrowable in Isolation No
E-Mode Category N/A
1 Like