FRAX Listing Proposal

I am proposing adding FRAX to Compound. I’m a member of the Frax community. I’m hoping to gather feedback, especially around proposed parameters. FRAX’s capital efficiency and lending AMO should make FRAX the least expensive stablecoin to borrow on Compound. As time passes and FRAX proves itself as a useful asset on Compound, I hope FRAX will gradually be treated more like a fully collateralized fiat stablecoin on Compound.

Summary
FRAX is a redeemable stablecoin with a dynamic collateral ratio that adjusts based on market demand. Frax is unique among recent stablecoin designs in that each FRAX is always redeemable for $1.00 worth of assets from the Frax protocol. This has kept the price of FRAX in a relatively tight band around $1.00, making Frax an ideal asset to borrow and lend against on Compound. Frax is already integrating with Compound and is currently the 17th largest cUSDC holder (~$30m) and growing, demonstrating a strong synergy between the communities. As the FRAX supply increases, additional collateral will be deposited into Compound. The Frax community has also chosen to hold all COMP rewards received to be an active participant in Compound governance.

v2 of the Frax protocol recently launched and introduces a lending module that can be built directly into Compound. This would enable the Frax protocol to supply large amounts of FRAX to Compound on demand. FRAX could become the lowest borrowing cost stablecoin on Compound, which would be quite attractive for Compound borrowers. The first step towards this integration is the addition of FRAX as an asset on Compound.

FRAX Stability
Since launching in December 2020, FRAX has held a tight band around the $1.00 price target. Below is a chart showing FRAX price history since launch:

Screen Shot 2021-04-12 at 9.51.00 PM

Each FRAX is collateralized by approximately $0.86 USDC (including interest bearing equivalents) and $0.14 of the Frax governance token, FXS. When the price of FRAX is at or above $1.00, the protocol gradually lowers the collateralization ratio of USDC to FXS. When the price of FRAX is below $1.00, the protocol gradually increases the ratio. FRAX can always be minted or redeemed by the protocol for $1.00 of assets, which counterbalances significant price deviations from the $1.00 target. Frax emphasizes a highly autonomous approach with no active management of the price stability function. More information about the mechanisms behind FRAX can be found in the links below.

FRAX is not an algorithmic stablecoin. There are algorithmic aspects of FRAX (the protocol uses FXS as a tool to stabilize the price of FRAX) but it is better understood as a capital efficient collateralized stablecoin. Given that the Compound collateral factor of FRAX is likely to be well below the current collateralization ratio of 86.5%, FRAX as a collateral asset on Compound would effectively be over collateralized by a healthy margin. It is also worth noting that there is also approximately $60m of Uniswap, Sushiswap and FRAX-3Pool LP tokens locked within the Frax protocol. A significant portion of this is locked for greater than 2 years. This provides guaranteed liquidity for FRAX and provides significant benefits to the stability of the protocol in times of volatility.

Lending AMO
Frax has built a lending contract (AMO) that will integrate the Frax protocol directly into Compound to supply FRAX on demand for borrowing. This would be somewhat analogous to the Fed discount window, where borrowers could borrow directly from the FRAX protocol via Compoound. A direct integration with Compound will also make supplying FRAX more attractive to other market participants because there is a guarantee of FRAX liquidity directly from the protocol, avoiding the pitfalls of high utilization rates in DeFi money markets.

Misc. Project Info
There is approximately $102m of FRAX liquidity currently on Uniswap. The main venue for FRAX is slowly shifting to a Curve FRAX-3pool; the stableswap curve is so much more capital efficient at holding the $1.00 price target. FRAX volume was averaging about $9m volume in March - Coingecko is currently under reporting the volume as it does not include the Curve pool or Sushiswap. Given that FRAX can always be minted and redeemed at the protocol, daily volume is less of a factor in my opinion. Frax has undergone extensive code reviews and was audited by Certik with additional audits upcoming.

Input on Proposed Parameters
I’ve spoken with the Frax team and they are happy to help any with oracle / contract deployment needs. I’d appreciate some Compound community input on the Collateral Factor and Reserve Factor. Given that each FRAX is backed by approximately $0.865 of USDC, cUSDC, aUSDC and yUSDC (obviously on chain), it would make sense to me that FRAX’s Collateral Factor and Reserve Factor would look more like DAI than USDT - perhaps a CF of 60% and RF of 15% to start. I also understand if a more conservative approach is desired as things get off the ground - please let me know what you think!

Thank you for your time and participation. Please let me know if you have any questions or concerns. As I receive input, I’m happy to revise the proposal to incorporate it. Reference links are below.

References

1 Like

Thanks for creating this proposal here @metalface. Really important for FRAX to get on Compound as we are the most capital efficient stablecoin on the market. As everyone can see, our peg is perfect and rock solid just like DAI, USDC, etc. I’m also confident that due to the capital efficient design of FRAX, it will be the cheapest/most affordable stablecoin to borrow which would increase Compound usage by a lot.

Additionally, it’s important to note that the Frax Protocol itself is one of the largest lenders on Compound with its idle collateral. So there’s incredible synergy here. Frax Protocol lends over $30m on Compound to earn yield with its unused collateral. We also earn COMP tokens for this lending that we have never sold and do not plan to sell. We want to be an active part of Compound governance as important players in the DeFi space.

Very excited to build with you all if the proposal is accepted for a vote on chain!

Quick note - I’m not sure if the current oracle soln. can be easily adapted to support FRAX: Compound | Docs - Open Price Feed

Hey guys! I’m bumping this up to get more insights from the Compound community as well as now that the recent Chainlink oracle proposal has been passed through COMP governance, this should address @jmo’s concern about FRAX not having an open oracle feed. FRAX has a Chainlink feed in both FRAX-ETH and FRAX-USD which can be leveraged if COMP governance votes to include FRAX into the protocol.

I also want to update on our progress. Since this proposal was created, FRAX has not just grown but has thrived, becoming the premier decentralized stablecoin that has successfully developed new algorithmic stability mechanisms. We’ve never broken our peg in over 7 months of operation now. Market data is on our side. We’re also ranked as the 11th largest stablecoin by Defipulse with performance on par with all other stablecoins ranked in the list.

Another reference point > Aave - Open Source Liquidity Protocol

Thanks @inkymaze - it’s exciting to see FRAX supported by Aave. Since the original post, Frax has more than tripled in supply, completed an audit with Trail of Bits and also has a FRAX / USD Chainlink price feed which should address @jmo concerns:

It’s nice to see the interest in the newer generation of stablecoins that are actually stable (shoutout to FEI for their recent success and having an awesome community overall). Let me know if you have any questions, would love to move this forward.

2 Likes

Gently bumping this. Frax has been live and stable for nearly a year and has over 1bn FRAX circulating. Frax lending AMOs are currently supplying over $100m of liquidity to other lending platforms. If Compound adds FRAX, there will be liquidity. Frax has chainlink price feeds. If Gauntlet or other’s see any issues here, I’d be happy to try and find the right person to address them - otherwise would love to push this forward.

Gauntlet is recommending that FRAX be added as a collateral asset on Compound. FRAX is an exciting new stablecoin that will provide more stablecoin liquidity to the Compound protocol in addition to DAI, USDC, and USDT. By convention, assets are usually listed on Compound with a collateral factor of 0, but given the liquidity and volatility profile of FRAX, the Gauntlet Platform expects to ramp up the FRAX collateral factor post-listing.

Market Risk

FRAX is currently listed on exchanges such as Uniswap, Sushiswap, Solarbeam (on Moonriver), Pangolin (on Avalanche), and more. The liquidity for FRAX has been steadily increasing, with the 90, 60, and 30 day ADVs being $22M, $30M, and $43M respectively.

Note that while the ADV of FRAX is increasing, it is still substantially lower than DAI (roughly 10X lower) and USDC (roughly 50X lower).

FRAX has a 36% annualized volatility over the past month, which is more volatile than DAI (4%) or USDC (2%).

Decentralization

The top 10 FRAX token positions are listed below:

As seen in the chart below, the top 10 positions make up 87.6% of the total FRAX supply. However, the majority of those tokens are either locked in Curve’s FRAX3CRV pool, other exchanges, and bridges.

If FRAX is trading below $1 on exchanges, users are incentivized to burn FRAX in exchange for $1 of USDC and FXS. Conversely, if FRAX is trading above $1 on exchanges, users are incentivized to mint FRAX by depositing USDC and burning FXS, then selling FRAX on the exchange. This way the supplies of FRAX and FXS are controlled while maintaining a peg to the USD. While the FRAX protocol is decentralized, the collateralization mechanism relies on USDC as collateral, which is centrally backed.

Analyzing USDC and FRAX Pegs to USD

Given that FRAX is heavily dependent on USDC, Gauntlet’s platform will carefully analyze how Collateral Factor changes to both USDC and FRAX may affect their respective USD pegs.

2 Likes

Completely agree that FRAX would be a great addition to Compound and looking forward to seeing the proposal soon!

1 Like

Looking forward to seeing the proposal. FRAX has grown substantially over the lifetime of this thread, and the market has shown its durability. We support the addition of FRAX as an asset on Compound.

1 Like

Agree with the above, Blockchain at UCLA supports this proposal to add FRAX as an asset to Compound

Blockchain@Columbia supports this proposal to add FRAX to compound given appropriate risk parameters are added. We think that it is important to add more stablecoins on the decentralization spectrum to Compound to help support their usage in the ecosystem and give users the widest variety of assets to borrow/lend on Compound.

Hi guys, I’m with the Frax team and I’ve gone ahead and deployed the necessary contracts as well as added the necessary tests and configs to push this proposal onchain.

Contracts:

cFRAX: CErc20Delegator | 0x1ddaAfEe72Ffc6Cd60368f17cEB376692F69515F
New Uniswap Anchored View which includes cFRAX: UniswapAnchoredView | 0x15dE940e76Ad5771C49bb82D5083C9148Af9fDD0
cFRAX Validator Proxy: ValidatorProxy | 0x5B24EA09De554175Dd5431533Aad223c7C3583E4

cFRAX was deployed to match other stables:
Underlying: 0x853d955acef822db058eb8505911ed77f175b99e
Comptroller: 0x3d9819210a31b4961b30ef54be2aed79b9c9cd3b
InterestRateModel (matches USDC): 0xd8ec56013ea119e7181d231e5048f90fbbe753c0
InitialExchangeRate(matches USDC): 2000000000000000000
Name: Compound Frax
Symbol: cFRAX
Decimals: 8
Admin: 0x6d903f6003cca6255d85cca4d3b5e5146dc33925
Implementation: 0x24aa720906378bb8364228bddb8cabbc1f6fe1ba

We used the same Implementation/CErc20Delegate as cLINK and cWBTC2, which I believe is standard, but can change this in the proposal if it’s necessary.

The new Uniswap Anchored View has all the same configs as the existing one, 0x046728da7cb8272284238bd3e47909823d63a58d, with the addition of cFRAX. A diff of the config arrays, pulled from on-chain, can be found here: https://www.diffchecker.com/zBUL6nRJ

The cFRAX Validator Proxy was copied from USDP’s recently deployed one. Aggregator is set to the one used by Chainlink FRAX/USD: 0x61eb091ea16a32ea5b880d0b3d09d518c340d750, and the Validator is set to the new Uniswap Anchored View: 0x15de940e76ad5771c49bb82d5083c9148af9fdd0. Ownership has been offered to 0x21f73d42eb58ba49ddb685dc29d3bf5c0f0373ca, like the other Validator Proxies.

Simulations:

I adapted @TylerEther’s tests which he made for USDP, which simulates the proposal, and it passes as expected.
You can see the tests here, and you can see a paste of the successful output here

Pull Requests:

I’ve opened three PRs in the Compound github to add the necessary configs and assets for if the proposal passes. They include the simulation, mainnet config updates for all the new contracts, and a shiny new cFRAX token icon.

Compound-protocol: https://github.com/compound-finance/compound-protocol/pull/183
Compound-config: https://github.com/compound-finance/compound-config/pull/51
Compound-assets: https://github.com/compound-finance/compound-components/pull/59

Hopefully this is what we need to push the proposal on-chain!

2 Likes

Thanks, @corddry . As an update to the Compound Community, Gauntlet has been working on this listing with the FRAX team and has analyzed the economic risks of listing FRAX on Compound. We plan on putting up an on-chain proposal with an initial CF of 0% and reserve factor of 15%. On the smart contract and technical risk side, we would welcome analysis from the Community and any other interested parties, as Gauntlet is not an auditing firm.

3 Likes

@corddry good job managing to figure all of that out; it’s definitely not easy. Like my first deployment, you also made some similar mistakes :wink:.

Initial exchange rate is incorrect

To quote @mistertom from my LINK market addition thread:

The standard cToken initial exchange rate for Compound is 0.02 scaled . The goal is to have 50 cTokens = 1 underlyingToken when the market is first deployed. In our case for cLINK , the math is:

  • 0.02 * 10^(18 + underlyingDecimals - cTokenDecimals)
  • = 0.02 * 10^(18+18-8)
  • = 0.02 * 10^28 … floating-point representation …
  • = 2e26 … unsigned scaled integer representation … (value used for constructor)

Like LINK, FRAX also uses 18 decimal places, so the initial exchange rate should be 2e26.

Stablecoins have been using a different implementation

The stablecoin implementation is 0xa035b9e130F2B1AedC733eEFb1C67Ba4c503491F.

New stablecoins have been using an improved interest rate model

This improved interest rate model is 0xFB564da37B41b2F6B6EDcc3e56FbF523bD9F2012.

Good job so far!

Thanks @pauljlei for your help! How about a 25% reserve factor? This has become the standard for all new deployments.

3 Likes

Thanks for the feedback! cFRAX has been redeployed with the updated parameters alongside an updated UAV to match.

cFRAX: CErc20Delegator | 0xe7373A0D692F60400AF4A5ac6dfB927840414F86
UAV: UniswapAnchoredView | 0xa469ddb19f903f4de66fdae32eb0d5a87c3826b3

The ValidatorProxy has been updated to point to the new UAV, and I’ve updated the tests and pull requests. Test results are successful and can be found here

New cFRAX parameters:

    "underlying": "0x853d955aCEf822Db058eb8505911ED77F175b99e",
    "comptroller": "0x3d9819210a31b4961b30ef54be2aed79b9c9cd3b",
    "interestRateModel": "0xFB564da37B41b2F6B6EDcc3e56FbF523bD9F2012",
    "initialExchangeRateMantissa": "2.0e26",
    "name": "Compound Frax",
    "symbol": "cFRAX",
    "decimals": "8",
    "admin": "0x6d903f6003cca6255d85cca4d3b5e5146dc33925",
    "implementation": "0xa035b9e130F2B1AedC733eEFb1C67Ba4c503491F",
    "becomeImplementationData": "0x"

Let me know if I missed anything!

2 Likes

Hi @TylerEther , thanks very much for all your help here and for your thoughts. There are tradeoffs to be made whether we list with a 25% versus 15% Reserve Factor. Listing with a higher reserve factor increases protocol revenue from the start. In addition, there might be less user friction in decreasing the reserve factor down the line as opposed to increasing the reserve factor. On the other hand, listing with a lower reserve factor incentivizes suppliers with a higher deposit APY. Incentivizing supply here can be particularly useful given that users won’t be able to use FRAX as a collateral asset from the start. Although most new assets on Compound have listed at a Reserve Factor of 25% (LINK, AAVE, SUSHI, YFI, etc), most stablecoins (with the exception of USDP) currently have a Reserve Factor of 7.5% (and DAI is 15%), therefore, 15% is closer to a steady state value that most other stablecoins have. For these reasons, we will initially list FRAX with a 15% Reserve Factor but our platform will continuously ingest on-chain data to track how market conditions and user positions evolve.

1 Like

As an update, we plan on posting an on-chain proposal to list FRAX the week of February 21. We want to give this 2-weeks long notice period in order to provide enough time to @cylon Open Zeppelin and Community developers to assess and become comfortable with any smart contract / technical risks.

3 Likes

0xe7373A0D692F60400AF4A5ac6dfB927840414F86

Looks good!

1 Like

Hi everyone, the OpenZeppelin team has been working on a security recommendation for how to handle asset listings that the community needs to consider before moving to list FRAX.

We’ve learned in our ongoing audit of the Compound protocol that the security risks for listing new assets are greater than most of the community might be aware. We’ve also found that a prior Critical issue related to an asset listing already existed and we’ve already worked with the Compound Multisig and the team behind the affected asset to ensure it is patched without incident. We’ll be releasing the complete Compound Audit Report and more details on the bug that was patched in the coming weeks.

Given what we’ve now learned, we believe that asset listing proposals such as this should receive more security attention going forward. We recommend that the community hold off on listing new assets for now as we work to put together a more detailed policy to ensure asset listings do not cause integration issues that could endanger the protocol. One option is to have OpenZeppelin audit each listing proposal although we need to consider the impact this might have on our existing backlog of protocol changes and the priority to assign to each one.

I will follow up early next week with more detailed guidance on a path forward for the FRAX proposal. I understand that it may be frustrating to hold off on listing new assets right now so I ask for your patience as we work to create security processes that will protect Compound while also minimizing proposal wait times as much as possible.

If any of you want to learn more or share thoughts on securing asset listings, please don’t hesitate to reach out to me.

12 Likes