Proposal to add the RAI3CRV gauge


This is a proposal to add the RAI MetaPool to the Gauge Controller and enable veCRV holders to assign a gauge weight.


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.

The pool is a custom version of the vanilla metapool, it allows for the use of unpegged stable assets. The pool has been live for 20 days now, and it currently has around 50k USD in total liquidity. It was audited by Quantstamp prior to deployment.


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 $20M 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.

Currently there are no incentives in Curve for liquidity for non-pegged stablecoins.

A previous discussion on the motivation for the pool (and now the gauge) can be found here.


Although the pool has a custom implementation, it has been formally audited by Quantstamp and reviewed by the Curve team.

The gauge is the standard V4 implementation. It was deployed here.

Add the RAI3CRV gauge to the controller.

Do not add the RAI3CRV gauge to the controller.

Not yet posted, we will create the proposal after gauging community feeling and confirming if there any other steps before posting it.


Update: all preliminary steps were taken, gauge ownership was transferred to the ownership proxy (pending acceptance), poll was just created:


gauge-risk-assessments/gauge_risk_assessment.ipynb at main · bout3fiddy/gauge-risk-assessments · GitHub

“The team expects that LPs and traders with high value transactions may want to consider calling updateAndGetSnappedPrice to update the RedemptionPrice snapshot contract to the latest value before large liquidity events.”

Is this extra step important to do before large swaps/deposits/withdrawals? Whats the most user friendly way to call this function?


Hey @WormholeOracle,

In most cases this will be irrelevant. The reason for this contract is because the call to get the redemption price on RAI is state changing (and expensive, it goes through all the steps to recalculate it) so we made the redemption price snap as a proxy for it, preventing all the swaps/adding/removing liquidity from paying for this operation.

The redemption price is really stable, and it moves slowly (the redemption rate is applied to it, currently 4%/year): you can check it in the last graph on our stats page:

We also setup a pinger that will update the snapshot price in a set frequency and also earlier if the price deviates too much from the snapshot.

So the difference should always be negligible.

All that said, it can still make sense to call it before a really large swap, depending on the direction of your swap. For example: if you are buying RAI and the snapped price is above the RAI redemption price, you could call it before swapping to get the new lower redemption price. If the difference in price amounts to a value greater than the gas cost of calling the snapshot update it is profitable to do so.

The snapshot contract does not have a web interface, but you just need to call updateSnappedPrice and it will update it. For non technical users I think the easiest way is just calling it through Etherscan (the function takes no parameters, so you just have to press a button/sign the tx).


I like the idea of a pinger: it helps makes the swaps a bit more UX-friendly, and defi definitely needs better UX. If it is easy for you to implement, and if you think it is needed at all, please do consider it :).


Hey @bout3fiddy, we do have one in place. As another note, we have other contracts using the redemption price snap (mStable pool already in prod, future RAI/FRAX stableSwap), so the more people using it, the more it should be updated.


Awesome! It was a pleasure looking into rai!