# Curve Stablecoin: Overview

Source: [https://docs.curve.finance/developer/crvusd/overview](https://docs.curve.finance/developer/crvusd/overview)

Curve Stablecoin infrastructure enables users to **mint crvUSD using a selection of crypto collaterals**. Adding new collaterals is subject to DAO approval.

`crvUSD` is designed to provide a more **capital-efficient** stablecoin mechanism and **smoother liquidations**, while maintaining a decentralized design which the Curve DAO governs.

GitHub

The source code for all releveant stablecoin contract can be found on [GitHub](https://github.com/curvefi/curve-stablecoin) . Related deployments can be found [here](https://docs.curve.finance/developer/deployments.md).

* * *

<a id="curve-stablecoin-infrastructure-components"></a>

## Curve Stablecoin Infrastructure Components

`crvUSD`

* * *

`crvUSD` token which is based on the [ERC-20 Token Standard](https://ethereum.org/en/developers/docs/standards/tokens/erc-20/).

[→ crvUSD.vy](https://docs.curve.finance/developer/crvusd/index.md)

`Savings crvUSD`

* * *

Savings crvUSD, abbreviated as `scrvUSD`, is a yield-bearing version of crvUSD built on top of a Yearn V3 Vault. It earns a portion of the yield generated by borrowers who pay interest to mint crvUSD.

[→ Savings crvUSD](https://docs.curve.finance/developer/scrvusd/overview.md)

`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.

[→ Controller.vy](https://docs.curve.finance/developer/crvusd/controller.md)

`LLAMMA`

* * *

LLAMMA is the **market-making contract that rebalances the collateral**. As the name suggests, this contract is responsible for liquidating collateral. Every market has its own AMM (created from a blueprint contract) containing the collateral asset and crvUSD.

[→ LLAMMA.vy](https://docs.curve.finance/developer/crvusd/amm.md)

`Factory`

* * *

The Factory is used to **add new markets**, **raise or lower debt ceilings** of already existing markets, **set blueprint contracts for AMM and Controller**, and **set fee receiver**.

[→ Learn more](https://docs.curve.finance/developer/crvusd/factory.md)

`Monetary Policy`

* * *

Monetary policy contracts are integrated into the crvUSD system and are **responsible for the interest rate** of crvUSD markets.

[→ Learn more](https://docs.curve.finance/developer/crvusd/monetary-policy/index.md)

`PegKeepers`

* * *

PegKeepers are contracts that help **stabilize the peg of crvUSD**. They are allocated a specific amount of crvUSD to secure the peg.

[→ Learn more](https://docs.curve.finance/developer/crvusd/pegkeepers/overview.md)

`Price Aggregator`

* * *

The AggregatorStablePrice contract is designed to **aggregate the price of crvUSD based on multiple Curve pools**. This price is mainly used as an oracle for calculating the interest rate, providing an aggregated and exponential moving average price.

[→ Learn more](https://docs.curve.finance/developer/crvusd/price-aggregator)

`Oracles`

* * *

Oracle contract used for collaterals in the markets.

[→ Oracles](https://docs.curve.finance/developer/crvusd/oracle)

`Flash Loan`

* * *

The `FlashLender.vy` contract allows users to take out a flash loan for `crvUSD`.

[→ FlashLender.vy](https://docs.curve.finance/developer/crvusd/flash-lender.md)

* * *

<a id="controller--amm-versions"></a>

## Controller & AMM Versions

The crvUSD mint markets use several iterations of the Controller and AMM (LLAMMA) contracts. Each version was deployed as a new **blueprint** — existing markets are not affected when a new implementation is set. **LlamaLend v1** adopted the V3 blueprint, so its markets share the same Controller/AMM version as the latest crvUSD markets. LlamaLend v2 uses a separate Vyper 0.4.3 modular architecture.

<a id="version-matrix"></a>

### Version Matrix

| Version | Vyper | Controller Blueprint | AMM Blueprint | Source |
| --- | --- | --- | --- | --- |
| **V1** | 0.3.7 | `0x856...8CC` ([Etherscan](https://etherscan.io/address/0x856fF1aaff4782eEe27D2C6bbAd48781F57f88CC)) | `0x7Ec...099` ([Etherscan](https://etherscan.io/address/0x7Ec8e02b74CDD1C1c222DbF3Bf47F3256B734099)) | [58289a4](https://github.com/curvefi/curve-stablecoin/tree/58289a4283d7cc3c53aba2d3801dcac5ef124957) |
| **V2** | 0.3.9 | `0x803...737` ([Etherscan](https://etherscan.io/address/0x80333bd8791Fee04C4C3e1CA8a524CEfA7C94737)) | `0x762...260` ([Etherscan](https://etherscan.io/address/0x7624C0DD4f5D06d650DDFF25fFEC45D032501260)) | — |
| **V3** | 0.3.10 | `0xe3e...415` ([Etherscan](https://etherscan.io/address/0xe3e3Fb7E9f48d26817b7210C9bD6B22744790415)) | `0x2B7...3e9` ([Etherscan](https://etherscan.io/address/0x2B7e624bdb839975d56D8428d9f6A4cf1160D3e9)) | [b0240d8](https://github.com/curvefi/curve-stablecoin/tree/b0240d844c9e60fdab78b481a556a187ceee3721) |

info

V3 is the **current blueprint** set on the Controller Factory. It is also the version used by [LlamaLend v1](https://docs.curve.finance/developer/lending/overview.md) markets; see [LlamaLend v2](https://docs.curve.finance/developer/llamalend-v2/overview.md) for the newer lending architecture.

<a id="market--version-mapping"></a>

### Market → Version Mapping

| Market (Collateral) | Controller Version | Status |
| --- | --- | --- |
| sfrxETH (v1) | V1 | Deprecated (0 debt ceiling) |
| wstETH | V1 | Active |
| WBTC | V1 | Active |
| WETH | V1 | Active |
| sfrxETH (v2) | V2 | Active |
| tBTC | V2 | Active |
| weETH | V3 | Active |
| cbBTC | V3 | Active |
| LBTC | V3 | Active |

<a id="changelog"></a>

### Changelog

<a id="v1--v2"></a>

#### V1 → V2

-   **Compiler upgrade**: Vyper 0.3.7 → 0.3.9.
-   Minor internal changes; the external API is identical.

<a id="v2--v3"></a>

#### V2 → V3

V3 is a significant upgrade that was developed alongside LlamaLend v1. The same blueprint is shared by crvUSD mint markets and LlamaLend v1 lending markets.

-   **Compiler upgrade**: Vyper 0.3.9 → 0.3.10.
-   **Delegated loan creation**: `create_loan`, `borrow_more`, `repay`, and `liquidate` accept an optional `_for` parameter, allowing approved operators to manage loans on behalf of users. See [`approve`](https://docs.curve.finance/developer/crvusd/controller.md#approve).
-   **Extra health buffer**: Users can set [`extra_health`](https://docs.curve.finance/developer/crvusd/controller.md#extra_health) via [`set_extra_health`](https://docs.curve.finance/developer/crvusd/controller.md#set_extra_health), adding a health buffer when entering soft liquidation.
-   **Extended borrow**: New [`borrow_more_extended`](https://docs.curve.finance/developer/crvusd/controller.md#borrow_more_extended) function supporting callback-based leverage.
-   **Arbitrary-decimal tokens**: The Controller now handles tokens with any number of decimals (not just 18), with rounding adjusted in favor of existing borrowers. This was necessary for LlamaLend v1's flexible token support.
-   **`collect_fees()` disabled for lending**: In LlamaLend v1 markets, admin fees are zero and all interest goes to vault depositors. LlamaLend v2 has separately configurable admin percentages.
-   **Native ETH transfers removed**: Automatic ETH wrapping is permanently disabled for safety.
-   **`check_lock` / `save_rate`**: New external helpers used by the Vault contract in LlamaLend v1.
