sCIP #45 - add a [RAI, [3pool]] Metapool

Summary:

This proposal would deploy and add a custom RAI-3pool Metapool to Curve.

Abstract:

RAI is an ETH pure, non-pegged stablecoin that resembles the original vision for Single Collateral Dai. RAI solves an issue present in all decentralized pegged assets, namely the fact that they cannot charge negative rates to their holders and compel them to sell when the market price of the asset is above the peg. RAI was designed as a reserve asset for other DeFi protocols as well as a first step to detach from fiat monopoly.

Motivation:

RAI is currently getting adopted in a wide array of protocols ranging from Aave, BarnBridge and Fuse to other stable assets like Fei which now holds approximately $10M worth of RAI in their reserves. It is also starting to be picked as a primary option in DAO treasuries and is one of the few stable assets released in the last year that were listed on Coinbase.

Curve is the go to avenue to trade pegged assets, sitting at a $12.77B TVL according to DeFi Pulse. Up to now, Curve has been primarily focused on fiat pegged assets or BTC and ETH synths. This proposal presents the idea of a non-pegged stable asset to be added in Curve using the following metapool contracts made by the Reflexer community. The community is currently checking whether the current pool factory can be used to deploy the RAI pool or if it needs adjustments.

Specification:

Here is a description for all the modifications brought to the vanilla Curve code so that it can work with RAI. It boils down to the pool reading the current RAI target price from the Reflexer protocol using this contract.

A question for the Curve community is whether we (the Reflexer team) should have an audit for the pool and potentially for the pool factory in case it needs to be modified to accomodate RAI.

In terms of relevant links, here is the Reflexer website and here are the docs.

For:

Deploy and add the [RAI, [3pool]] Metapool

Against:

Do not deploy the [RAI, [3pool]] Metapool

Poll:

Will post the snapshot vote once we get clarity on audits for this custom RAI pool as well as the pool factory.

10 Likes

I’d love to see this happening. As a member of both communities, long time Curve holder and also RAI minter I think it would greatly benefit both.

6 Likes

Strongly support this. RAI has become a really important component of defi so would generate good volume as curve would be the best place to trade it.

4 Likes

I support this.
I think RAI is a strong asset and this collaboration pushes Curve to more strongly demonstrate the strength of its metapools.

RAI is currently heavily using Uniswap v3 for liquidity between stables. I believe that Curve offers a better platform for LPs in this position. It brings in an new player to potential bribes.

As the ecosystem of non USD pegged stables grows, it would be in Curve’s interest to demonstrate cross peg pools with flatter curves are effective between unlike pegged, mostly stable currencies.

3 Likes

To your point, several community members said we have to get RAI on Curve, they want better UX for concentrated liquidity.

2 Likes

I definitely support this proposal and think its a smart implementation.

As discussed in the proposal, one open question is what has to be done to incorporate it into Curve. Since the contract reads RAI’s redemption price as a quasi-oracle, it is slightly different from the “vanilla” meta-pool contract, and can’t be deployed using the normal factory.

What’s the best way to proceed and to ensure the contract is safe (e.g., audits)?

3 Likes

We have made two implementations: the linked in the OP is for a standalone pool, but we also have ported it to an implementation that can be used in the normal factory.

To enable its use the steps are:

    1. deploy the implementation contract,
    1. Add the implementation to plain_implementations in the factory.
    1. Deploy the pool through the factory and initialize it.

The only difference from the other pools is that the pool deployer will need to make a second call to initialize_rate_feed function after deployment (to set up the redemption price feed). This was done this way to retain compatibility with the current in production factory, and can only be called by the deployer. The pool prevents anyone from adding liquidity before the external feed is set.

6 Likes

Awesome. That sounds excellent.

I think ideally one of the Curve devs could look it over, or an external audit if deemed necessary. Hopefully some of the devs could chime in here

1 Like

We just fuzzed the RAI Metapool implementation and it checks out:

2 Likes

Looks good and I can’t wait to have RAI available on Curve.
All seems solid to me and I would support this on Curve.

Let’s get one independent audit in before we start the vote to strengthen our assumptions and move this forward. :rocket: :rocket: :rocket:

4 Likes

Currently getting the pool audited, first report coming next week, then we fix any outstanding issues and then we contact the Curve team to help make a proposal.

Let’s get this baby on Curve and make history

5 Likes

Audit report has been published today: link.

We have audited both implementations (standalone meta pool, and the implementation for the factory).

4 Likes