# Curve Stablecoin: Overview

> import DocCard, { DocCardGrid } from '@site/src/components/DocCard'

# Curve Stablecoin: 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[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](../deployments.md).

:::

---

## Curve Stablecoin Infrastructure Components

<DocCardGrid>
  <DocCard title="crvUSD" icon="crvusd" link="./crvusd" linkText="crvUSD.vy">

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

  </DocCard>
  <DocCard title="Savings crvUSD" icon="/img/logos/scrvusd.png" link="../scrvusd/overview" linkText="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.

  </DocCard>
  <DocCard title="Controller" icon="vyper" link="./controller" linkText="Controller.vy">

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.

  </DocCard>
  <DocCard title="LLAMMA" icon="vyper" link="./amm" linkText="LLAMMA.vy">

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.

  </DocCard>
  <DocCard title="Factory" link="./factory" linkText="Learn more">

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

  </DocCard>
  <DocCard title="Monetary Policy" link="./monetary-policy" linkText="Learn more">

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

  </DocCard>
  <DocCard title="PegKeepers" link="./pegkeepers/overview" linkText="Learn more">

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

  </DocCard>
  <DocCard title="Price Aggregator" link="./price-aggregator" linkText="Learn more">

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.

  </DocCard>
  <DocCard title="Oracles" link="./oracle" linkText="Oracles">

Oracle contract used for collaterals in the markets.

  </DocCard>
  <DocCard title="Flash Loan" icon="vyper" link="./flash-lender" linkText="FlashLender.vy">

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

  </DocCard>
</DocCardGrid>

---

## 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 later adopted the V3 blueprint, so all Llamalend markets share the same Controller/AMM version as the latest crvUSD markets.

### 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 all [Llamalend](../lending/overview.md) markets.
:::

### 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 |

### Changelog

#### V1 → V2

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

#### V2 → V3

V3 is a significant upgrade that was developed alongside Llamalend. The same blueprint is shared by crvUSD mint markets and all Llamalend 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`](./controller.md#approve).
- **Extra health buffer**: Users can set [`extra_health`](./controller.md#extra_health) via [`set_extra_health`](./controller.md#set_extra_health), adding a health buffer when entering soft liquidation.
- **Extended borrow**: New [`borrow_more_extended`](./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's flexible token support.
- **`collect_fees()` disabled for lending**: In Llamalend markets, admin fees are zero and all interest goes to vault depositors.
- **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.
