Curve - Project Breakdown | Revelo Intel

Curve

Up to date as of January 9, 2024

Overview

Curve is a non-custodial decentralized exchange founded by Michael Egorov and deployed on Ethereum mainnet in 2020. Liquidity providers deposit funds into Curve pools and receive trading fees paid by traders executing swaps against the liquidity pool. The protocol is owned and governed by CRV holders, who also take a cut of the total trading fees paid by traders (revenue). 

Curve is the largest DEX by TVL and is also predominant in trading volume alongside Uniswap and Sushiswap. Its most pioneering and popular feature is the Stableswap AMM, which consists of a series of pools that provide better trading execution for like-priced and correlated assets (one stablecoin to another, native ETH for an ETH liquid staking derivative). The V2 of the protocol is also optimized for trade execution between all assets.

Curve’s 3pool is often considered the “backbone” of DeFi since that’s where the deepest liquidity can be found for the major stablecoins:  USDT, USDC, and DAI. The 3pool also acts as a base pool, meaning that its LP token (3CRV) is used to pair against other stablecoins.

Curve Pools

Curve pools are smart contracts where funds are deposited in order to facilitate low slippage and low-fee trades against that capital. The ultimate goal of the liquidity pools is to attract higher trading volumes in order to maximize the protocol revenue that is accrued from fees. Besides, adding liquidity to a liquidity pool gives the depositor the opportunity to start earning revenue from trading fees and token emissions. 

Curve pools are also non-upgradeable, meaning that users can remain assured that the underlying code is immutable.

A Curve pool refers to a smart contract implementation of the stableswap invariant that contains the logic for exchanging assets. However, while all Curve pools implement the stableswap invariant, they may come in different flavors. In its simplest form, a Curve pool is an implementation of the stableswap invariant with 2 or more tokens, which can be referred to as a plain pool. Alternative and more complex pools can be constructed as well, such as lending pools or metapools.

Stablecoins in this context refer to tokens that are representations of another. This includes USD-pegged stablecoins like DAI and USDC, but also correlated assets like ETH and stETH or different versions of BTC, such as wBTC and renBTC. 

All Curve liquidity gauges receive CRV based on how much of the emissions the DAO allocates to them.

Curve pools charge trading fees on token swaps, where the fee may differ between pools. Besides, an admin fee is charged on the pool fee.

All new Curve pools are deployed permissionless through the Curve factory, which means that anybody can deploy a pool at any time. 

As a user, every time you provide liquidity to a pool, no matter what token you deposit, you gain exposure to all the tokens in the pool, which means that you might want to find a pool with tokens you are comfortable with.

LP Tokens

In exchange for providing liquidity (depositing tokens in a Curve pool), liquidity providers receive pool LP tokens, where the Curve LP token is an ERC20 contract specific to that Curve pool. 

Why the Project was Created

When Curve launched, the protocol experienced massive growth in TVL as a result of securing the undeveloped stablecoin swaps market. Over time, stablecoin adoption has increased exponentially and there are many different flavors: DAI, sUSD, TUSD, USDC, USDT… This means that there was a need for users to go from one stablecoin to another while suffering as little price impact and slippage as possible. At the time, Curve became the standard DEX for swapping stablecoins due to its stableswap AMM. 

After gaining market share in the stablecoin market, Curve v2 was launched as an AMM that optimizes for concentrated liquidity and facilitates swaps between volatile pairs (i.e. BTC, ETH…). The launch of V2 took place after Uniswap gained traction with its x*y=k. The iteration from the previous stableswap version introduced with Curve v1 helped to solve many of the shortcomings of Uniswap. The Uniswap V2 model does not make any assumption about the pricing of the underlying assets and spreads evenly the liquidity across all prices. By transforming the former stableswap invariant, Curve V2 managed to concentrate liquidity in a more efficient way that creates 5-10 times more liquidity than the Uniswap invariant, which at the same time brings in higher profits for liquidity providers.

The protocol was deployed by an anonymous user, not with Curve’s core team that decided to launch the protocol’s code hosted on Github in August 2020.

Roadmap

The team has mentioned that there are no public roadmaps, but plans and updates are usually announced on their social media channels, especially via Twitter and Discord announcements.

One of the biggest upcoming milestones on the roadmap that is known would be the crvUSD implementation and launch. (Please refer to the crvUSD section for detailed information).

Curve is also working on:

DeFi Subsector

As a DEX, one of Curve’s strongest arguments is that, unlike other competitors that require third-party integrations to manage concentrated liquidity positions (like Arrakis, or xTokenTerminal, can manage liquidity by design. This all-in-one service of LPs means that contrary to centralized exchanges, Curve can completely avoid the intervention of middlemen and drive its TVL to its most valuable users. The design also fixes some issues present in Uniswap V3. 

Router flow creates a segment of retail traders that is distinct from sophisticated traders. This is quite attractive to liquidity providers because they can have a much better chance of capturing spread if they know they are trading against the retail flow.

UniswapV3 incentivizes the professionalization of market makers and is not a good alternative for passive liquidity providers. The reason for that is that professionals and informed participants will use order flow to their advantage through automated strategies that will rebalance LP positions on narrow ranges. This also cements the statement that Uniswap loses pricing power over long-tail assets since the percentage of uninformed order flow is greater in long-tail assets than in highly liquid tokens. It can be argued that Uniswap v3 is tailored for professional market makers while Uniswap v2 is better for launching new tokens. However, the reason why Uniswap V3 was created is because of Uniswap V2’s capital inefficiency.

Similar to Uniswap V3, Curve V2 also allows for concentrated LPs. However, its AMM design adjusts the range dynamically without forcing LPs to take any extra action. At the same time, the transactions lead to higher transaction fees that are allocated to compensating LPs as prices move away from equilibrium. Because of this, Curve V2 can improve capital efficiency without making it more difficult to manage liquidity positions (by constantly rebalancing the ranges on which the liquidity is provided).

Even though Uniswap v3 is more capital efficient than Uniswap V2, it forces LPs to actively manage their positions, as the price range of trading pairs varies from time to time (except for pegged assets). This deters new projects from setting up new liquidity pools for their native tokens. Since the price for new tokens fluctuates a lot due to the shallow initial liquidity, new projects with pools on v3 need to adjust the price range very often. This cost of actively managing liquidity can be unaffordable for some protocols.

Besides, Curve’s design has fewer issues related to MEV. For instance, its v2 pools use a time lag on price changes that prevent MEV bots from easily manipulating prices within a single block. This is not necessarily the case in Uniswap v3, where JIT (Just-In Time) liquidity can lead to losses for LPs.

In Uniswap V3, the fee earned by LPs is proportional to the amount of liquidity they have supplied against traders’s order flow.

MEV

Since Curve’s trading function has a lower price impact and trading stablecoins exposes the AMM less to external price fluctuations, its volume from MEV is significantly lower than Uniswap’s.

MEV is the value extracted from an ecosystem by miners or staking validators who can change the sequence of transactions that are included in a block to maximize their profits. This is an example of an unfair ordering of transactions.

Although Curve’s AMM mitigates the negative price impacts of MEV, it can still occur. An Eigenphi report noted that over a time period from June 1 to October 31 in 222, the most dominant forms of MEV were:

During this period, Curve made about $15M in trading fees.

In fact, Curve pools rely on arbitrage traders. When prices move suddenly, Curve v2 pools are at an imbalance, offering a clear arbitrage opportunity from which Curve will earn trading fees while still allowing arbitrageurs to make a profit.

Stablecoins Landscape

Due to how important stablecoins are in DeFi, acquiring dominance in that vertical could significantly increase a protocol’s revenue. 

Currently, fiat-collateralized stablecoins are the most used across DeFi, followed by overcollateralized stablecoins like DAI. However, their growth has stalled after the UST collapse and has never kept up with the adoption of centralized competitors like USDT, or USDC.

Curve’s crvUSD vs. Aave’s GHO

Currently, Maker’s DAO DAI is the most adopted decentralized stablecoin. Nonetheless, it relies on fiat-backed collateral, USDC. As of 2023, more than 50% of DAI’s collateral is backed by USDC, GUSD, and USDP. Protocols like Aave and Curve have recently come up with their own models of stablecoins. Both of them aim to deliver sustainable and scalable stablecoins that are particular in the sense that they are backed by crypto assets rather than relying on fiat-backed collateral.

Both GHO and crvUSD aim to tap into their respective protocol’s large existing liquidity and distribution networks. However, they carry significant differences in how they are governed and managed – most notable in how the collateral is managed and the positions are liquidated.

In contrast to LLAMA’s design, GHO’s monetary policy includes some discretionary decisions, such as interest rates being set by the Aave DAO and delegating the minting/burning processes to facilitators.

With GHO, facilitators are entities that can onboard different forms of collateral to back the value of the stablecoin and issue redemptions. This high level of discretion has tradeoffs, such as higher risks of centralization, but it is also very flexible and scalable when it comes to meeting growing demand. 

In the GHO system, Aave Governance will be tasked with onboarding, monitoring, and managing facilitators – all in addition to setting interest rate policies, a discount for stkAAVE holders, and numerous other parameters.

On the one hand, GHO can expand its scope to real-world assets, as well as credit and institutional users. On the other hand, crvUSD’s monetary policy could attract more capital to Curve, improve liquidity conditions, generate more revenue from trading fees, and overall attract more capital to the protocol. 

Chains

While the protocol was originally launched on Ethereum, it continues to expand across other chains. As of February 2023, Curve is deployed on Ethereum mainnet, Optimism, Arbitrum, Polygon, Fantom, Celo, Avalanche, Moonbeam, Gnosis, Kava, Aurora, and Harmony.

The CRV token can be bridged across chains, but it will not always have full functionality. 

Staking of CRV must be done on Ethereum mainnet. Rewards voting for cross-chain gauges must occur on Ethereum mainnet.

How Curve Works

The Stableswap Invariant

Curve’s stableswap AMM (Automated Market Maker) allows users to swap between similarly behaving assets, such as stablecoins, with low slippage and fees. This is unlike Uniswap, which focuses more on maximizing liquidity with a higher risk of slippage. At the same time, by keeping pools restricted to similar assets (DAI and USDC, ETH, and stETH), pools managed to minimize the negative effect of impermanent loss.

The stableswap AMM is the combination of both the Uniswap constant product AMM model and linear invariant curves.

An invariant is a property of a mathematical object that remains unchanged after performing operations or certain transformations.

For example, a linear invariant model can be x + y = C, where x and y refer to the pool tokens and C is the sum invariant.

The Linear Invariant Model

Given a sum invariant C = x + y, if there are 90 X tokens and 90 Y tokens, the C will be 180.

If a user wants to sell 23 X tokens, this will result in an increase in Y tokens in the pool, such that:

(x + 23) + y = C;

(90 + 23)+ y = C;

113 + y = 180;

y = 67;

The number of Y tokens after the trade will be 67, which means that the user will receive y tokens after swapping X tokens

receive y = before y – after y;

receive y = 90 – 67;

receive y = 23;

In this example, the user will receive 23 Y tokens for selling 23 X tokens. The pools will now have 113 X tokens and 67 Y tokens.

The price will be given by the delta (difference) of Y divided by the delta of X:

P = y / x =dy / dx =  received Y / deposited X = 23 / 23 =1;

Therefore, taking the derivative to the graph tangent we see that:

y = C – x;

y’ = (-1)x0;

y’ = -1;

|y’| = 1;

Hence, when the pool is balanced, the price is equal to 1.

With the linear invariant constant sum formula we are likely to have zero chances of slippage, which is also known as infinite leverage.

Note that the linear invariant model helps to keep the price constant but it can also drain the pool

The Constant Product AMM (Uniswap x * y = k)

Uniswap’s V2 AMM works on a constant product formula, x * y = k

If there are 95 X tokens and 95 Y tokens, then

x *y = k;

95 * 95 = k;

k = 9,025

If a user wants to buy 19 Y tokens, then they will be removing 19 Y tokens from the pool and the k constant must remain

x * (y – 19) = 9025;

x * (95 – 19) = 9025;

x * 76 = 9025;

x = 9025 / 76;

x = 119;

This means that the amount of X tokens will need to be increased from 95 to 119 in order to preserve the constant k.

receive x = after x – before x;

receive x = 119 – 95;

receive x = 24;

Therefore, the user will need to deposit 24 X tokens in order to receive 19 Y tokens.

The price is then calculated as: 

Therefore, 1 Y tokens costs 0.79 X tokens.

If the user then executes another transaction of 24 X tokens for 1 Y token, then:

x *y = k;

(x + 24) * y = k;

(119 + 24) * y = 9025;

y = 63.1118881119

If users continue to buy Y tokens, this would mean that there will be more X tokens in the pool, which further reduces the supply of Y. 

The Uniswap V2 AMM model always makes sure that there is liquidity in the pool

The Stableswap AMM

The stableswap AMM combines the linear invariant and the constant product formula:

The stableswap AMM combines both models in order to find a sweet spot where the pools would not run out of any of the assets, and the traders don’t face expensive trading conditions.

Hence, the AMM is the sum of both the linear and the product invariants.

A DAI/USDC pool could be expressed as:

Altogether, this becomes:

USDC + DAI + (USDC * DAI) = 100 + (100 / 2) ^2;

Generalized, this means:

x + y + (x * y) = D + (D / 2)^2 ;

n  is the number of tokens.

This representation resembles the constant product invariant because the linear variant has not been amplified.

Amplifying the linear variant helps to lower slippage

As the amplifier is increased, the bonding curve will resemble the linear invariant more.

The Amplification Coefficient – A

The amplification coefficient (“A”) determines a pool’s tolerance for the imbalance between the assets within it.

A higher value of the A coefficient means that trades will incur slippage sooner as the assets within the pool become imbalanced.

When =0.53, we obtain the graph below:

Within the pools, the A coefficient is reflected as 1 / A, which implies that greater values of A make the pool more tolerant to slippage when imbalanced.

The appropriate value for A is dependent on the type of tokens being used in the pool. It is possible to change the amplification coefficient for a pool after it has been deployed, but it requires a vote within the Curve DAO governance which must surpass a minimum 15% quorum.

Curve V1

Curve’s V1 whitepaper introduced a new decentralized exchange optimized for efficient trades of correlated assets like stablecoins. It was implemented using the stableswap invariant, which offered lower slippage compared to other AMM designs (e.g. constant product).

Plain Pools

The simplest Curve pool that can be constructed is a plain pool, which is an implementation of the Stableswap invariant for two or more tokens.

The key characteristic of a plain pool is that the pool contract holds all deposited assets at all times.

An example of a plain pool is the 3pool, which contains DAI, USDC, and USDT.

Lending Pools

Lending pools contain lending functionality whereby the underlying tokens are lent out on other protocols (e.g. Compound or Yearn).

The main difference to a plain pool is that lending pools don’t hold the underlying token itself, but a wrapped representation of it

Curve supports lending pools such as:

For example, the Compound pool contains wrapped tokens such as cDAI and cUSDC, while the underlying DAI and USDC tokens are lent out on Compound. Therefore, liquidity providers of the Compound pool receive interest generated on Compound in addition to the fees they earn from the token swaps in the pool.

The implementation of lending pools may differ with respect to how wrapped tokens accrue interest:

Metapools

Metapools are pools where a stablecoin is paired against the LP token from another pool (a so-called base pool).

Metapools provide an opportunity for the base pool liquidity providers to earn additional trading fees by depositing their LP tokens into the metapool.

Note that the CRV rewards received for staking LP tokens into the pool’s liquidity gauge may differ for the base pool’s liquidity gauge and the metapool’s liquidity gauge.

For example, a liquidity provider may deposit DAI into the 3Pool and in exchange receive the pool’s 3CRV LP token. This 3CRV LP token may then be deposited into the GUSD metapool, which contains GUSD and 3CRV. In return, that user would get back the gusd3CRV metapool’s LP tokens. This metapool LP token may then be staked in the metapool’s liquidity gauge for CRV rewards.

While Curve metapools support swaps between base pool tokens, the base pool LP token, and the metapool tokens, they do not allow liquidity providers to deposit and/or withdraw base pool tokens.

For example, the GUSD metapool consisting of GUSD and 3CRV (the LP token of the 3Pool) allows for swaps between GUSD, DAI, USDT, USDC, and 3CRV, but liquidity providers are not able to deposit DAI, USDC, or USDT directly into the pool.

Factory Pools

In collaboration with Yearn, Curve has developed a pool factory to allow anyone to deploy a curve metapool. Some parameters will need to be set when creating the pool:

Once a pool has been created, the deployer needs to submit it to the DAO for the vote. The account must have more than 2,500 veCRV in order to create a vote.

There are also nonconfigurable parameters and considerations such as:

Historically, pools have only been listed on Curve’s UI if they met the following requirements:

Curve V2

Curve v2 pools are designed to provide deep liquidity for a broad range of assets with varying degrees of volatility. This way, since different trading pairs can exhibit different price dynamics, Curve v2 offers a series of tunable parameters for each type of asset pair.

When creating a Curve v2 pool, there are 3 types of parameters:

The Bonding Curve

Curve v2 bonding curve prices assets based on their supply inside the pool and attempts to concentrate price within the center of the curve. In contrast to other AMMs, the center of the curve (the equilibrium point) is dynamically shifted relative to price changes.

The image above illustrates the Curve V2 bonding curve in orange, the stableswap invariant in blue, and two constant product invariants (dashed).

In Curve v2, the shape of the bonding curve is governed by two parameters:

The A coefficient adjusts the center of the curve, while the gamma parameters help to shape and fine-tune the overall curve.

Both parameters, A and gamma can have overlapping effects and, as a rule of thumb, gamma should be kept very close to 0.

This is known as the transformed peg invariant, whose goal is to allow for high liquidity among differently priced assets (5-10x greater than other product invariants used by most AMMs).

The pool internally computes an internal oracle price that adjusts when the loss becomes smaller than the system’s profit. Represented by the orange line in the chart below, the goal is to obtain the best of both worlds: minimize slippage at small price movements, but allow for asymptotic behavior to account for large fluctuations of differently priced assets.

Blue is the stableswap invariant used for stable assets, and the dashed lines represent constant product invariants used in other AMMs. The orange line is the transformed peg invariant for swapping volatile assets.

The transformed peg invariant or CurveCrypto invariant is a modified version of the stableswap invariant that works approximately as a superposition of constant-product and stableswap invariants. It is derived by transforming the price space in such a way that all the prices are converted from some target price to an area close to 1 by following a mathematical transformation. This transformation creates an invariant that can be represented as a hypersurface (a curve if the number of dimensions is 2) relative to the asset deposits in the pool.

Detailed math explanation in Curve V2 whitepaper

Price Scaling

Curve v2 pools dynamically shift liquidity to maximize depth close to the current market price (i.e. minimize slippage). This is achieved by taking a running EMA (Exponential Moving Average) of the pool’s recent exchange rates (an internal oracle), and re-centering the liquidity at the EMA only when it is financially reasonable for LPs to do so.

This process can be thought of as “re-pegging” the bonding curve so that the point of maximum liquidity concentration is matched to the EMA

The price where liquidity is maximally concentrated is known as the price scale, and the current EMA is known as the internal  price oracle

Liquidity Pool Fees

Dynamic fees range from a minimum to a maximum fee and are defined using 3 parameters:

These dynamic fees range from 0.04% to 0.4%

Liquidity Gauges

CRV inflation is directed to users who provide liquidity within the protocol. This usage is measured via liquidity gauge contracts and each pool maintains an individual liquidity gauge. The list of gauges is controlled by the Gauge Controller, which keeps track of the type and weight of each gauge.

Each user receives a share of newly minted CRV proportional to the amount of LP tokens locked. Additionally, these rewards may be boosted by up to a factor of 2.5 if the user vote-locks tokens for veCRV.

In order to measure liquidity over time, users deposit their LP tokens into the liquidity gauge. The rate of tokens from inflation that are allocated to each gauge depends on the current CRV inflation rate, gauge weights, and gauge type weights.

For example, assuming an inflation rate r changing with every epoch (1 year), gauge weight wg and gauge type wt  then gauges handle the stream of inflation with the rate r’  = wgwtr, which it can update every time one of wg wt  or mining epoch changes.

To calculate a user’s share of r’, we use the equation:

This way, the value of Iis is recorded at any point the user withdraws or deposits, as well as every time the rate of inflation r’ changes (either due to gauge weight changes, or mining epoch changes)

The weight system allows the DAO to dictate the Curve DAO where inflation should go. Users can use their voting power to participate in those decisions and allocate rewards to the pools that they think should receive the most CRV.

Gauge weight voting

Boosting

In order to incentivize users to take action in governance and create stickiness for their liquidity deposits, the protocol implements a voting escrow mechanism where a user’s balance (counted in the liquidity gauge) can get boosted if the user chooses to lock CRV tokens in return for veCRV (vote-escrow CRV).

Curve’s implementation is done in such a way that users get the boost at the time of the last action or checkpoint. Your voting weight decreases over time but your boost will take notice of your decreasing voting power at certain checkpoints like withdrawing, depositions into a gauge, or minting CRV.

For example, if you start at 1,000 veCRV and your voting power decreases to 800 veCRV, your boost will still use your original voting power of 1,000 veCRV until a user checkpoint.

Once the vote-lock expires, anyone can “kick” the user’s voting power by creating a checkpoint for that user and, essentially, resetting the user’s voting power to a state where no boost is applied to their position.

Since the voting power decreases with time, it is favorable for users to apply a boost and take no further actions until they vote-lock more tokens.

Boost calculator

Gauge Weight Voting

Users can allocate their veCRV balance towards one or more liquidity gauges.

When a user applies a new weight vote, it gets applied at the start of the next epoch week. Also, the weighted vote for any gauge cannot be changed more often than once in 10 days.

The Gauge Controller maintains a list of gauges and their types, with the weights of each gauge and type. In order to implement weight voting, the Gauge Controller has to include parameters handling the voting power of each user. When a user changes their gauge weight, the change is scheduled for the next epoch week, not immediately.

This reduces the number of reads from storage that must be performed by each user: it is proportional to the number of weeks since the last change rather than the number of interactions from other users.

The Gauge Controller records points (bias + slope) per gauge in vote points, and scheduled changes in biases and slopes for those points. The totals for slopes and biases for vote weight per gauge, and sums of those per type, are scheduled/recorded for the next week, as well as the points when the voting power gets to 0 (lock expiration) for some users.

Each liquidity gauge is assigned a type (Ethereum stableswap pools, Fantom pools, Polygon pools, Ethereum crypto pools…). This allows the DAO to adjust its emissions. Besides, each pool has a unique liquidity gauge.

Due to the Curve DAO’s complexity, parts of its functionality cannot be easily bridged outside of Ethereum. However, some aspects of the underlying mechanism, such as CRV emissions, can be executed on chains where Curve pools are active.

  1. On Ethereum, a RootChainGauge contract mints allocated CRV each week and transfer it over a bridge
    1. A call is made to the checkpoint function  at the beginning of each epoch)
    2. After the contract call, the function mints all of the allocated CRV for the previous week, and transfers them over the bridge to another contract deployed at the same address on the related sidechain
    3. Emissions are delayed by one week in order to avoid exceeding the maximum allowable supply of CRV
  2. On the other chain, CRV is received into ChildChainStreamer contract and then streamed out to a RewardsOnlyGauge
    1. The bridge automatically transfers CRV into a streamer contract deployed at the same address on the destination chain as on Ethereum. Once the CRV tokens have arrived, a call to the notify_reward_amount is made in order to update the local accounting of the smart contract and stream the balance out linearly over the next 7 days.
  3. The liquidity providers who have staked  their LP tokens in the RewardsOnlyGauge may claim their CRV

Gauges on chains other than Ethereum have a simplified logic that handles CRV as if it was another rewards token and distributes it evenly between stakers based on the deposited balances at the time when the token is received.

crvUSD

The design of the crvUSD stablecoin consists of 3 primary concepts: lending-liquidating AMM algorithm (LLAMMA), PegKeeper, and Monetary Policy.

  1. A user creates a CDP with ETH
    1. The user deposits ETH collateral and mints (“borrows”) crvUSD against his collateral
    2. At the time crvUSD is minted, the position is loaded into the LLAMMA market maker algorithm with specific price bands assigned to it at which the ETH will be swapped into USD
  2. As the price of ETH moves down, the position swaps ETH into USD, thus bringing down the LTV ratio of the position. If the price of ETH subsequently goes up through the price bands, then the LLAMMA gradually swaps the position’s USD back into ETH through Curve (generating fees for Curve in the process)
  3. The user pays interest for borrowing crvUSD
    1. If crvUSD is trading above 1, the rates will decrease to incentivize borrowers
    2. If crvUSD is trading below 1, the rates will increase to disincentivize borrowers

One of the key innovations of this design is that if someone borrows against collateral, even at the liquidation threshold, if the price of the collateral dips and bounces, then there will be no liquidation and the borrower will not suffer any significant losses.

According to simulations using historical data for ETH/USD since September 2017, if a  user were to leave the CDP (Collateralized Debt Position) unattended for 3 days and during this time price drop of 10% were to occur, only 1% of the collateral would get lost.

LLAMMA

LLAMMA is the core idea behind the design of the crvUSD stablecoin. It is an AMM that allows for a continuous liquidation and deliquidation process. The idea is that the AMM converts between the collateral (i.e. ETH) and the stablecoin (i.e. crvUSD) such that if the price of the collateral is high, the user deposits will be all in ETH, but as the price of the collateral goes lower, the AMM will convert the user’s ETH collateral to crvUSD.

This is different from traditional AMMs where the user’s position is all in USD at the top and all in ETH at the bottom.

An external price source determines a price around which the liquidity is formed, Pcenter. The AMM will then support the liquidity to be concentrated such that, pcd<pcenter<pcu.

When the current price p is out of range between Pcd and Pcu, then the AMM is either fully in the stablecoin (when at Pcu) or fully in the collateral asset (when at Pcd). This way, when PcdPcenterPcu, the AMM price is equal to the current price p.

This way, it is possible to construct an AMM where Pcd and pcu are functions of p0 such that when p0 grows, Pcd and pcu grow even faster. In this case, the AMM will be all in ETH when ETH is expensive, and all in USD when ETH is cheap.

The range where the liquidity is concentrated is called a band. For instance, at the constant p0, the band has liquidity from Pcd to Pcu. The goal of the AMM is to come up with functions of Pcd(p0) and pcu(p0) such that their increase is more steep than linear and they can grow faster than p0.

Curve stablecoin whitepaper

LLAMMA and crvUSD Stablecoin

The crvUSD stablecoin is a CDP (Collateralized Debt Position) where users can borrow units of a stablecoin against a volatile collateral asset (such as ETH).

The collateral assets are loaded into LLAMMA in a price range such that if the price of the collateral goes down relatively slowly, the ETH gets converted into enough units of the stablecoin to cover the CDP’s debt. This can happen via self-liquidation or via external liquidation (if the coverage is too close to a dangerous debt threshold, or not close at all while waiting for the price of the collateral to bounce).

When a user deposits collateral and borrows the stablecoin, the LLAMMA smart contract calculates the bands for the collateral. After that, as the price of the collateral changes, it starts getting converted to stablecoin. This way, when the user is “underwater”, the system already has enough USD value to cover the loan. At this point, if it gives values too close to the liquidation thresholds, an external liquidator can get involved. However, this shouldn’t typically happen within a few days or even weeks, or even it will never happen if the collateral price does not go back up relatively quickly.

The AMM also reflects when the stablecoin charges interest to the users. This is done by adjusting the grid of prices. When the stablecoin charges an interest rate r, all the grid of prices in the AMM shift upwards at the same rate. Therefore, the price multiplier goes up over time as long as the charged rate is positive.

This is done by looking for the amounts of stablecoin and collateral such that, if the current price moves, they would also have to move either to the lowest price of the lower band or to the highest price of the upper band. This allows the system to measure how many stablecoins it will need and that is not dependent on the current instantaneous price, which is important for protection against MEV and sandwich attacks.

PegKeeper

Once the price is > 1, the PegKeeper contract is allowed to mint uncollateralized stablecoin and deposit it single-sided to the stableswap pool in such a way that the final price after this action is no less than 1.

These actions cause the price of the stablecoin to depreciate when it is higher than 1 and appreciate when it is lower than 1.

Even though the mint is uncollateralized, the stablecoin appears to be implicitly collateralized by the liquidity in the stablecoin pool. Overall, this whole mint/burn cycle appears to be profitable while providing stability.

Monetary Policy

The amount of debt in the system will equilibrate the price by reducing/increasing the borrow rate based on the ratio of the debt/supply.

The stabilization and point of equilibrium is then reached by:

The first input into the Monetary Policy contract is the balances of the affiliated Peg Keeper Pools, such as the liquidity of stablecoins like USDC, USDT, USDP, and TUSD in Curve v1. This provides the system with information about crvUSD’s implied price.

Each Peg Keeper connects with an affiliated vanilla v1 Curve Pool. These pools provide liquidity and an AMM to trade against, giving arbitrageurs all the tools they need. These balances directly inform the borrowing rate within crvUSD. More specifically, other than taking, out a loan, the only way to bring new crvUSD into circulation is through Peg Keepers, since they are authorized to issue or withdraw a limited amount of crvUSD directly into their pools in order to stabilize the supply. As a result, Peg Keepers directly buy/sell into their affiliated pools in an attempt to trade the imbalances towards a profit.

The other major input is the amount of debt that is held by Peg Keepers. Peg Keepers are uniquely allowed to mint crvUSD for the purpose of trading these pools with the goal of making a profit.

In addition to that, the Monetary Policy contract also relies on a series of variables that were set at launch and can be modified later by the DAO:

crvUSD simulator

The codebase of Curve’s stablecoin has been almost in its entirety coded by Curve’s founder Michael Egorov

Factory

The crvUSD Factory enables the creation of new markets and adjustments, including setting a new fee receiver, modifying the debt ceiling of an existing market, or updating blueprint implementations.

Other than the pool factory, this factory does not allow permissionless deployment of new markets. Only its admin, the CurveOwnershipAgent, can call to add a market. Therefore, adding a new market requires a successfully passed DAO vote.

Controller

The Controller is the contract the user interacts with to create a loan and further manage the position. It holds all user debt information. External liquidations are also done through it.

Each market has its own Controller, created from a blueprint contract, when a new market is successfully added via the Factory.

Price Aggregator

The AggregatorStablePrice contract is designed to aggregate the prices of $crvUSD based on multiple Curve Stableswap pools. This price is primarily used as an oracle for calculating the interest rate, but also for PegKeepers to determine whether to mint and deposit or withdraw and burn.

Curve Lending

Curve Pools

Curve pools are smart contracts where funds are deposited in order to facilitate low slippage and low-fee trades against that capital. The ultimate goal of the liquidity pools is to attract higher trading volumes in order to maximize the protocol revenue that is accrued from fees. Besides, adding liquidity to a liquidity pool gives the depositor the opportunity to start earning revenue from trading fees and token emissions.

Curve pools are also non-upgradeable, meaning that users can remain assured that the underlying code is immutable.

A Curve pool refers to a smart contract implementation of the stableswap invariant that contains the logic for exchanging assets. However, while all Curve pools complement the stableswap invariant, they may come in different flavors. In its simplest form, a Curve pool is an implementation of the stableswap invariant with 2 or more tokens, which can be referred to as a plain pool. Alternative and more complex pools can be constructed as well, such as lending pools or metapools.

Stablecoins in this context refers to tokens that are representations of another. This includes USD-pegged stablecoins like DAI and USDC, but also correlated assets like ETH and stETH or different versions of BTC, such as wBTC and renBTC.

All Curve liquidity gauges receive CRV based on how much of the emissions the DAO allocates to them.

Curve pools charge trading fees on token swaps, where the fee may differ between pools. Besides, an admin fee is charged on the pool fee.

All new Curve pools are deployed permissionless through the Curve factory, which means that anybody can deploy a pool at any time.

As a user, every time you provide liquidity to a pool, no matter what token you deposit, you gain exposure to all the tokens in the pool, which means that you might want to find a pool with tokens you are comfortable with.

LP Tokens

In exchange for providing liquidity (depositing tokens in a Curve pool), liquidity providers receive pool LP tokens, where the Curve LP token is an ERC20 contract specific to that Curve pool.

For Users

Target Users

Curve’s user retention rate is measured based on the number of users that have interacted with a liquidity pool contract. This is done by grouping users into cohorts and assessing their activity on a weekly basis over 8 weeks:

For Investors

Unlike in traditional finance, where there are multiple avenues for investors to have immediate access to liquidity, DeFi liquidity is characterized by the interactions between decentralized protocols with one another. This is a double-sided challenge where any DeFi protocol must capture liquidity for its own proper functioning while still coming up with mechanisms or incentives to make that liquidity sticky and not flock away to another protocol.

Liquidity mining, renting liquidity, and protocol-owned liquidity are different mechanisms used by protocols to incentivize liquidity providers to keep their liquidity within a protocol in order to enhance its utility.

The Curve Wars

The Curve Wars found its origin in a fight where multiple protocols competed for liquidity. This is still an ongoing battle across DeFi. Curve is the cornerstone of this period due to its incentives system, which allows for token emissions to be directed to certain pools. Because of this mechanism, other protocols’ goal is to control these incentives in order to increase their liquidity and facilitate trading for the pairs of their tokens.

The first-mover was Convex, a protocol built with the goal of controlling veCRV and, therefore, having a say on where CRV emissions should be allocated. By creating incentives on their pool that were bigger than the ones offered by Curve, Convex managed to hold more than 51% of the circulating veCRV and have a large influence on the CRV inflation gauge, since it would lock all its CRV for 4 years to get the max rewards boost. This was the first step in what eventually became the bribes

Bribes are the practice by which protocols offer incentives for veCRV holders to vote for the pools of their own native tokens. Since the majority of the voting power (i.e. veCRV) was (and still is) held by Convex, these extra incentives were offered on Convex, which acted as the go-to source for gauge-weight voting decisions. This was achieved with a similar dual token mechanism through CVX and vlCVX.

Instead of CRV to influence emissions, protocols started buying CVX to influence what Convex did on Curve since Convex enabled its holders (only those who locked CVX for vlCVX) to vote on how they should put the aggregate veCRV owned by the protocol to work.

CVX is Convex’s governance token. Locking CVX returns vlCVX, which grants voting power on the decisions pertaining Convex’s ownership of veCRV.

Many DAOs started accumulating CRV and CVX in order to be able to rent increasing amounts of liquidity, like Abracadabra, Alchemix, Olympus, StakeDao, Frax… For these protocols, it is critical to have enough liquidity in Curve, and controlling the CRV emissions is a way for them to attract more liquidity for the pools of their tokens.

As a result, the holders of veCRV (whether directly on Curve or using Convex as a proxy), were able to receive “bribes” from other protocols in return for voting for that protocol’s pools. This allowed users to earn extra incentives from those protocols who were in pursuit of veCRV to obtain more votes.

Curve monopolized liquidity, and Convex provided an alternative way to access that liquidity. In addition to the revenue from trading fees and yield emissions, users could now have access to extra incentives in the form of CVX tokens.

By locking CVX tokens for vlCVX, Convex users could influence the votes about CRV emissions by directly voting on where Convex should vote. This way, protocols like Abracadabra could offer SPELL (Abracadabra’s governance token) incentives to Convex users who voted in favor of directing CRV emissions to the MIM pool (Abracadabra’s stablecoin).

This was especially relevant for protocols issuing their own stablecoins. Besides the stableswap AMM, CRV emissions were a powerful enough yield-farming incentive that would allow external protocols to improve the liquidity depth for their pools on Curve. This would further strengthen the peg of their stablecoin.

More liquidity for a pool on Curve means that more buy/sell volume is required to trigger price fluctuations. This translates in stablecoins having a robust peg where slight deviations would be quickly arbitraged (e.g. between $0.99 and $1.01). This is important because the slippage for trading stablecoins is a big opportunity cost for users.

Investing Strategies

There are 3 main sources of yield available to users and protocols:

  1. vAPY: 50% from trading fees
  2. tAPR: from CRV emissions (after staking LP tokens in gauges)
  3. veCRV APY: bonus incentives from bribes from their own liquidity mining programs

Assuming that liquidity providers don’t own any CRV, their revenue would come from trading volume and CRV rewards. Over time, if the decreasing CRV emissions are followed by an increase in volume, LPs could earn recurring revenue from the protocol’s cash flow.

On top of the trading volume, there are other factors that incentivize/disincentivize LPs on Curve, such as gauge weights, the 2.5x boost, and the price of CRV.

For an LP, if they stake their LP token in Curve’s liquidity gauges, they are offered CRV emissions proportional to the liquidity they have provided. At the same time, the emissions directed to these gauges are based on the gauge votes. Because of this, managing the gauges can result in increased rewards. However, it is not straightforward to have control over the votes directed to each gauge.

Another way for LPs to get better rewards is to own veCRV and boost their CRV earnings. This step is simplified with Convex, which has over 51% of Curve’s voting power and boosts its CRV rewards on a continued basis.

  1. User deposits assets into Curve’s liquidity pools (if you deposit one asset, the protocol auto-splits the liquidity in proportion to all the assets it holds)
  2. The user receives an interest-bearing LP token
  3. The user can further stake their LP tokens in gauges to receive additional earnings
  4. For staking LP tokens, the user can earn additional CRV rewards on top of the trading fees
  5. The user could then lock CRV tokens for a specific period from 1 week to 4 years in order to get veCRV
  6. veCRV grants voting rights to the user proportional to the locking period (the longer you lock, the more veCRV you get)
  7. By holding veCRV the user can now access 50% of all trading fees (admin fee) as 3CRV tokens. Besides, the user can also boost its CRV rewards by up to 2.5x (if locking for 4 years) as well as have voting power in the Curve DAO to vote on the future distribution of CRV rewards across the protocol pools

Business Model

The flywheel relies on the assumption that favorable market conditions for LPs will attract more liquidity, which will lower the slippage and attract more volume, thus generating more revenue for veCRV holders. Ideally, the action of accumulating veCRV would cause the CRV price to increase and lead to a higher total APR.

Flow diagram for the transfer of value through the Curve ecosystem.

Slippage is dependent on trading volume but is not the only factor affecting the number of trades that take place in a pool.

The price of CRV is dependent on public perception and trading volume has no primary effect other than distributing revenue from fees to users who lock CRV.

More liquidity leads to lesser slippage, which attracts more traders and exchange aggregators, in turn generating more fees.

Revenue Streams

Rewards Breakdown

Locking CRV is the only way to get veCRV, so users will tend to lock more and more CRV, which would lead to increased demand for CRV and decreased selling pressure from CRV locking.

Admin fees are the 50% portion of the swap fees generated on Curve and that are distributed to veCRV holders. When the admin fees increase, the demand for veCRV increases as well to some extent due to the perceived extra revenue.

Base vAPY

The vAPY is the 50% portion of the swap fees from the liquidity pools. An increase in swap fees will increase the vAPY.

Curve makes money for liquidity providers from trading fees. Every time a user makes a trade on Curve, a small fee is charged to them and distributed to liquidity providers. This is why the base vAPY increases with volume on Curve.

Because fees are dependent on volume, the daily vAPYs can often be quite low just like they can be very high during periods of high volatility.

Lending pools on Curve also earn interest from lending protocols. Those pools use lending protocols like Compound or Aave to generate more interest for LPs.

Whilst lending pools can earn more interest when rates are high, they also add an extra layer of risk.

Some of the pools also receive CRV liquidity incentives as per voting rounds where the DAO allocates CRV emissions. Each liquidity gauge receives a different amount of CRV based on how much the DAO allocates to it.

Some of the pools in Curve are incentivized. That means that on top of the trading fees and lending fees, other protocols add extra incentives to reward users for providing liquidity to their pools.

 

Tokenomics

The maximum supply of 3.03B CRV is gradually released over time.

Curve follows a piecewise linear inflation schedule where the inflation rate is reduced by 21/4 each year. Each time the inflation reduces, a new mining epoch starts

The initial supply of CRV is 1.273B tokens, which is 42% of the eventual supply of 3.03B tokens. All these initial tokens are gradually vested with every block and started off with an inflation schedule of 22% (279.6M tokens per year). This inflation is distributed to Curve liquidity providers according to measurements taken by the gauges.

During the first year, the approximate inflow into the circulating supply is 2M CRV per day, where the initial circulating supply is 0.

In 2024, when the core team vesting ends and only liquity incentives are emitted, CRV’s inflation rate decreases to 6% and further to 0.3% in 2040.

CRV

Curve incentivizes liquidity providers with CRV tokens, the governance token of the protocol.

The allocation, distribution, and minting of CRV tokens are managed via several DAO-related contracts:

The main purpose of the CRV token is to get as many users involved as possible in the governance of the protocol. Because of that, the Curve token has 3 main users: voting, staking, and boosting, all of which require users to vote to lock their CRV tokens in return for veCRV.

Staking (Locking) the CRV Token

Staking (locking) the CRV token allows users to earn trading fees from the protocol. Since September 19, 2020, 50% of all trading fees are distributed to veCRV holders. The goal behind this mechanism is to align the incentives between liquidity providers and governance participants (veCRV holders)

The APY for staking CRV can be calculated as:

Daily Trading Volume * 0.0002 * 365Total veCRV * CRV price* 100;

The fees that are collected by the protocol are used to buy 3CRV (LP token for 3pool made out of USDC, USDT, and DAI) and distribute them to veCRV holders.

Users who stake CRV can claim trading fees as often as they like, but the fees will only be converted to 3CRV once a week.

There is a delay before a user can make their first claim for 3CRV after locking. It takes 8 days from the Thursday after which the user has locked before they can claim.

A contract collects all trading fees from all the swap pool contracts. Those fees come in different stablecoins, Bitcoin, Ethereum…

Next, the fee tokens are traded into USDC using Curve and Synthetix, and this USDC is then deposited into the 3pool. Finally, a checkpoint is triggered to update all the claimable balances of each veCRV holder.

This process is referred to as burning. This is a gas-expensive process but anyone can call it if they are willing to pay for it.

This script may be used by anyone to initiate the burn process

Fees may only be claimed for the week that has already passed because the burner does not know how much everyone is entitled to before the end of this period.

Boosting

Boosting is one of the main incentives to incentivize users to be more active in governance. This gives increased exposure to rewards based on the liquidity that has been provided. Vote-locking CRV allows users to acquire voting power to participate in the DAO and earn a boost of up to 2.5x on the liquidity they are already providing on Curve.

Voting

Voting can only be done after vote-locking CRV tokens for veCRV. This involves voting on DAO proposals as well as pool parameters.

veCRV

Users can “vote-escrow” or time-lock CRV for up to 4 years in exchange for veCRV, a non-transferable asset that grants protocol governance rights and 50% of trading fees.

veCRV is a non-standard ERC20 token that cannot be transferred and the only way to obtain it is by locking CRV

veCRV stands for Voting Escrow CRV and represents locked CRV tokens for voting. The longer you lock CRV, the more voting power you have (and the bigger the boost you can reach). The number of veCRV you will receive depends on how long you lock your CRV. The minimum lock time is 1 week and the maximum locking period is 4 years.

A user’s veCRV balance decays linearly as the remaining time until the CRV unlock decreases. For example, a balance of 4,000 CRV locked for one year provides the same amount of veCRV as 2,000 CRV locked for 2 years, or 1,000 CRV locked for 4 years. When the locking time ends, the user will have 0 veCRV and their locked CRV will be returned. Each CRV locked for 4 years represents 1 veCRV.

When properly implemented and adopted, ve tokenomics have reflexive upside benefits while a limited downside strain. If the demand for CRV increases, the veCRV lock rate increases (to boost gauge weights) and the CRV supply decreases, the vote escrow lock model can remove CRV from the circulating supply with the protocol not experiencing a sudden supply dilution (as veCRV remains time locked, often for years).

Liquid veCRV Wrappers

Liquid lockers solve the problem where users are required to lock their governance tokens for long periods of time, which forces them to remain illiquid – since they can’t be moved and sold easily.

Liquid lockers are smart contracts where users can deposit locked governance tokens such as veCRV and, in return, receive a derivative liquid representation along with other incentives. This allows them to stay liquid while still maintaining their voting power. This way, users aren’t forced to choose between earnings and governance, since they can still sell their votes for increased earnings in the form of bribes, but only if they explicitly choose to do so.

Liquid lockers preserve the capital efficiency of locked governance tokens while deriving the most yield possible on them.

Due to the importance of veCRV, Convex (cvxCRV), StakeDao (sdCRV), or Yearn (yveCRV) have come up with “liquid lockers” that allow veCRV holders to retain their voting power while maximizing their liquidity.

cvxCRV – Convex

The cvxCRV is a tokenized version of veCRV implemented by Convex such that users can deposit CRV into Convex and that CRV will be locked forever on the platform as veCRV. Next, a tokenized version of veCRV, cvxCRV, is returned to the user at a 1:1 rate.

The cvxCRV conversion is 1-way, although liquidity pools may exist to allow users to swap cvxCRV for CRV, although this exchange rate does not necessarily need to stay at 1:1 due to market forces.

cvxCRV can be staked in Convex in order for users to receive normal Curve admin fees as they would if they were holding veCRV. Additionally, users staking cvxCRV will receive CRV from Convex’s performance fee, as well as CVX tokens.

Since the beginning of 2023, the low APR of cvxCRV was starting to crater against its competitors. Because of that, Convex announced a series of changes with cvxCRV v2 such as:

In the past, cvxCRV stakers could choose to receive rewards as 100% 3CRV, 100% CRV/CVX, or any ratio in between. After the release of cvxCRV v2 in 2023, the protocol allows users to withdraw a blend of assets from the rewards earned in CRV, CVX, and 3CRV

yCRV – Yearn

yCRV is Yearn’s liquid wrapper for veCRV. Yearn’s model uses yCRV as a base token as well as 3 derivative tokens called activated tokens.

As the base token, yCRV carries no native rewards but lets users easily access the activated tokens. New yCRV can be minted by locking CRV to Yearn’s veCRV position (permanent 1-way lock).

Users can also mint yCRV by migrating their yveCRV and yvBOOST legacy tokens.

Yearn passes all benefits of its veCRV position to yCRV users who hold one of the activated tokens:

st-yCRV

Staked yCRV is a yield-optimized position for yCRV users that allows them to earn passive income through two sources:

St-yCRV is a Yearn v2 vault that automatically compounds yCRV by selling 3CRV and some claimed bribes into yCRV, allowing users to earn yields with a “set and forget” strategy.

lp-yCRV

Liquidity Pool’d yCRV provides liquidity to the new CRV/yCRV pool on Curve, and lp-yCRV holders receive LP fees and emissions. By zapping to this token, users enter an LP position in the yCRV/CRV pool and deposit the LP tokens into the lp-yCRV yVault.

The lp-yCRV yVault is a Yearn v2 vault with a strategy that deposits all CRV emissions generated back into the pool to grow the position, and it’s designed to be a set-and-forget token that auto-harvests and auto-compounds rewards.

For every 1 yCRV in this position, Yearn will mark 1 veCRV worth of voting power to vote in favor of yCRV Curve gauge, which increases CRV emissions to users.

vl-yCRV

(vl-yCRV is currently in the final stages of development and is not yet ready for production.) 

vl-yCRV is the position that users can enter which allows them to cast votes for Curve gauge weights. This position is expected to be particularly helpful for protocols that want to increase emissions to their pool’s Curve gauges without having to commit to a 4-year veCRV lock or repeatedly submit large bribes.

Users who hold this position are subjected to the following:

Voting details are as follows:

Vote delegation:

Locks:

Bribes and Incentives

Users can choose to move between activated tokens at any time depending on which benefits they want, except for vl-yCRV, which has time lock restrictions varying from 14 to 28 days

sdCRV – Stake DAO

Stake DAO users have the possibility to deposit into Curve strategies to get boosted rewards. Stake DAO users the boost it obtains from locking veCRV to boost rewards and allow users to also get rewards in SDT tokens depending on the allocation of strategies depending on gauges weights.

Stake DAO Curve strategies

Governance

Curve uses Aragon for governance and control of the protocol admin functionality. All interactions with Aragon occur through a modified implementation of the Aragon voting app.

The Curve DAO has a total of 3 Aragon Agent ownership addresses, which are governed by two independent DAOs:

Participation in the Curve DAO governance requires ownership of veCRV, which is the non-standard ERC-20 implementation used within the DAO to determine each account’s voting power. The user’s voting power has been linearly decreasing since the moment when CRV tokens are locked for veCRV.

You can only vote using your voting weight at the block where a proposal was created

veCRV is obtained by locking CRV tokens for up to 4 years, with 1 veCRV being equal to 1 CRV locked for 4 years.

As the lock time decreases, an account’s veCRV balance decreases linearly as well. veCRV is non-transferrable.

Official DAO proposals are the only way to create enforceable changes to the Curve protocol. There are two types of changes: parameter changes, and text changes.

Users who want to create a proposal must post a draft proposal on the governance forum

Curve’s Unusually High Governance Participation

Risks

On top of the Curve smart contracts themselves, whenever you join a pool, you are also accepting systemic risks from the coins in the pool. For example, if you are a user who does not want to have any exposure to USDT, then you should not deposit any asset in any pool that contains USDT.

Curve also uses smart contracts from lending protocols, which means that there is an external risk from trusting those external protocols as well.

Due to how the liquidity is managed for the tokens inside the pools if one of the coins were to lose its peg relative to another asset, the liquidity providers would hold almost all of their liquidity in that currency.

Risk Breakdown

Note: veCRV is illiquid and a CRV derivative. Impermanent Loss (IL) is minimal in the case of stableswap unless a coin de-pegs. There are different types of pools offering different risk and reward profiles.

Security

On top of its audits, Curve smart contracts have been battle-tested since 2020. The admin keys of the smart contracts only allowed the Curve team to pause contracts in emergency situations during the first two months.

Curve’s smart contracts are immutable and cannot be upgraded with the admin key. This limits the actions that can be taken during an emergency but also leaves users fully in control of their funds.

Audits

Even though audits never eliminate risks completely, Curve contracts have been audited by Trail of Bits, Quantstamp, MixBytes, and ChainSecurity.

Curve also has a bug bounty program with HackerOne.

crvUSD Risk Monitoring and Alerting Platform

The $crvUSD platform was launched on September 13, 2023, by Chaos Labs, an economic security, mechanism design, and risk management platform for DeFi protocols.

It allows users to monitor the risks and various other metrics of $crvUSD, such as high-level metrics aggregated across $crvUSD markets, including total supply, total borrow, TVL, the sum of collateral at risk of liquidation, and more.

Additional Information

Team

There is no official list of the team members of Curve, members that can be identified from social media are:

Project Investors

The initial supply was distributed to community liquidity providers, shareholders (team and investors), employees, and the community reserve.

Community Fund

The initial distribution of CRV allowed for a community fund of 5% of the total CRV supply to be used in cases of emergencies or awarded to community-led initiatives or grants.

FAQ

What is the vote-locking boost?

When I provide liquidity, does it matter what coin I deposit?

How often does my boost records voting power change?

What is the purpose of CRV?

How to calculate the APY for staking CRV

What happens if more people vote lock?

What happens to my voting power if I provide liquidity in multiple pools?

Why are gauge weights so important?

What are incentivized pools?

What is $crvUSD and how does it work?

  • $crvUSD refers to a dollar-pegged stablecoin, which may be minted by a decentralized protocol developed by Curve Finance. Users can mint $crvUSD by posting collateral and opening a loan within this protocol.

How does the $crvUSD liquidation process differ from other debt-based stablecoins?

  • $crvUSD uses an innovative mechanism to reduce the risk of liquidations. Instead of instantly triggering a hard liquidation at a specific price, a user’s collateral is converted into stablecoins across a smooth range of prices.
  • The benefit of this mechanism is that most cases will result in a loss of just a few percentage points worth of value, instead of the total and instant loss suffered by the hard liquidation process common to most debt-based stablecoins.

What is the mechanism behind $crvUSD’s pegging to a dollar value?

  • $crvUSD maintains price stability through a combination of an on-chain variable Borrow Rate and a series of Peg Keepers, which maintain the peg by minting or burning $crvUSD based on market demand.

Can other types of collateral be proposed or added for $crvUSD? How does that process work?

  • Yes, other collateral markets can be proposed for $crvUSD through governance. Contact the community support channels for additional information on the current process to recommend new collateral types.

What is my liquidation price?

  • When you take out a loan of $crvUSD, instead of a single liquidation price, you deposit your collateral over a range of prices. When the price falls within this range, your collateral begins being converted into $crvUSD, a process that helps maintain the health of your loan and can prevent a hard liquidation in most circumstances. Thus, you do not have one specific liquidation price.

How do I understand or adjust the range of prices at which my collateral is deposited?

  • This price range can be adjusted when initially creating a loan. In the UI, look for the “advanced mode” toggle which, will provide more information on this range as well as an “Adjust” button that allows you to fine-tune this range.

What happens when the collateral price falls into my range?

  • Each $crvUSD market is attached to an AMM. When the price falls into your range, this collateral can be traded in the AMM. In most cases, arb traders will purchase the collateral for $crvUSD. This has the effect of leaving your loan collateralized by stablecoins, which tend to hold value better and maintain your loan health.
  • NOTE: This process was originally referred to as “soft liquidation,” but this term is being phased out to avoid confusion with the harder liquidation process in which a loan is closed and collateral is sold off.

What happens if the collateral price recovers?

  • The entire process happens in reverse, and your position is traded from stablecoins back into your original collateral. Due to AMM trading fees, you may find you have lost a few percentage points worth of your original collateral value on the round trip.

Under what circumstances can I be liquidated?

  • When your loan health drops below 0% you may be subject to hard liquidation, in which your collateral can be sold off and your position is sold. Although $crvUSD’s collateral conversion mechanism can protect against hard liquidations in most cases, it may be unable to keep pace with severe price swings. Borrowers are recommended to maintain their loan health, particularly when prices fall within their range.

How can I maintain my loan health if the price drops into my range?

  • When the collateral price falls into your range, you can no longer add new collateral to protect your loan health. If you want to maintain a healthy loan you should repay $crvUSD. Even small repayments of $crvUSD at this level can be helpful at preventing hard liquidations.

What is the difference between self-liquidation and repaying a loan? When is each option more beneficial?

  • Self-liquidation is a process by which the user closes out their loan while repaying a loan involves the borrower paying $crvUSD to maintain their loan and improve their health. In the event the collateral’s price drops significantly, the loan may be collateralized by $crvUSD sold off at a higher collateral price, and in some cases, self-liquidation may actually be done at a profit.

What happens to the collateral in the event of hard liquidation?

  • In the event of a hard liquidation, all available collateral is sold off by the system to cover the debt.

How is the ‘liquidation discount’ calculated during hard liquidation?

  • The ‘liquidation discount’ is calculated based on the collateral’s market value and is designed to incentivize liquidators to participate in the liquidation process.

Is $crvUSD always pegged to a price of $1? If so, how is this achieved?

  • Yes, $crvUSD is designed to be pegged to $1. This is achieved by automatically adjusting borrow rates based on supply and demand, and by the Peg Keepers, which are authorized to burn or mint $crvUSD based on market conditions.

Under what circumstances can the Peg Keepers mint or burn $crvUSD?

  • Each Peg Keeper targets a specific Peg Keeper pool, which is a Curve v1 pool allowing trading between $crvUSD and a blue chip stablecoin. The Peg Keepers are responsible for trying to balance these pools by trading at a profit. The Peg Keepers can mint $crvUSD to trade into their associated pools when the balance of $crvUSD is too low, or it can repurchase and burn the $crvUSD if the balance is too high.

What is the relationship between Peg Keeper’s debt and the total debt in crvUSD?

  • The Peg Keeper’s debt is the amount of $crvUSD they have deposited into a specific pool. Total debt in $crvUSD includes all outstanding $crvUSD that has been borrowed across the system.

What does it mean if the Peg Keeper’s debt is zero?

  • If a Peg Keeper’s debt is zero, it means that the Peg Keeper has no outstanding debt in the $crvUSD system.

How does Peg Keeper trade and distribute profits?

  • The Peg Keepers have a public `update` function. If the Peg Keeper has accumulated profits, then a portion of these profits are distributed at the behest of the user who calls the `update` function, in order to incentivize distributed trading in the pools.

What is the ‘Borrow Rate’?

  • The ‘Borrow Rate’ is the variable interest charged on active loans within each collateral market.

How is the Borrow Rate calculated in $crvUSD?

  • The Borrow Rate for each collateral market in $crvUSD is calculated based on a series of parameters, including the Peg Keeper’s debt and the market demand for borrowing.

How does the Peg Keeper’s debt affect the borrowing rate?

  • An increase in the Peg Keeper’s debt may lead to a higher Borrow Rate, in order to incentivize repayment and restore stability to the system.

Why is the Borrow Rate high even though the price of $crvUSD is close to the peg?

  • The high interest rate could be due to high demand for borrowing or an increase in the Peg Keeper’s debt, even if the price of $crvUSD is close to the peg. For example, if Peg Keepers are emptied as collateral prices rise, then increasing the Borrow Rate is the only way the system can provide stability.

What are the risks of using $crvUSD

  • As with all cryptocurrencies, $crvUSD carries several risks, including depeg risks and the risk of liquidation of your collateral. Make sure to read the disclaimer and exercise caution when interacting with smart contracts.

How can I best manage my risks when providing liquidity or borrowing in crvUSD?

  • Best risk management practices include maintaining a safe collateralization ratio, understanding the potential for liquidation, and keeping an eye on market conditions.

Has $crvUSD been audited?

  • Yes, you may read the full $crvUSD MixByte audit, and other audits for Curve may be published to Github.

Can I see the code?

Community Links

Revision History

Version 0.0 | Mar. 2, 2023 – Initial Release

Version 0.1 | Mar. 6, 2023 – Added ticker and price chart for $CRV

Version 0.2 | August. 30, 2023 – Updated Sections (Audit, FAQ)

Version 0.3 | October 23, 2023 – Updated Risks section

Version 0.4 | January 1, 2024 – Updated crvUSD

Version 0.5 | January 9, 2024 – Removed economics