> For the complete documentation index, see [llms.txt](https://docs.convexfinance.com/convexfinanceintegration/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.convexfinance.com/convexfinanceintegration/depositors-and-token-conversions.md).

# Depositors & Token Conversions

The Convex system includes depositor contracts that convert a gauge platform's governance token into Convex's liquid staking representation. These are how **CRV** becomes **cvxCRV**, **FXS** becomes **cvxFXS**, and **FXN** becomes **cvxFXN**.

### CrvDepositor (CRV → cvxCRV)

[CrvDepositor.sol](https://github.com/convex-eth/platform/blob/main/contracts/contracts/CrvDepositor.sol) (mainnet `0x8014595F2AB54cD7c604B00E9fb932176fDc86Ae`) accepts **CRV** and mints **cvxCRV**. With `lockIncentive = 0` (current mainnet state) the mint is 1:1; if the governance-set `lockIncentive` is raised, a fee applies to deposits that **defer** locking.

```javascript
//deposit CRV, mint cvxCRV immediately
await crvDepositor.deposit( amount, true )        //locks CRV into the voter proxy's veCRV now

//deposit CRV, defer locking (fee may be due to the caller who locks later)
await crvDepositor.deposit( amount, false )

//deposit and optionally stake the cvxCRV immediately
await crvDepositor.deposit( amount, lock, stakeAddress )
```

Key mechanics (from source):

* The incentive is charged on `_lock=false` (locking is **deferred** to a future caller): `callIncentive = amount * lockIncentive / 10000` is taken from the deposit into an `incentiveCrv` pool, which pays the address that later calls `lockCurve()`. A `_lock=true` caller may additionally receive the accumulated `incentiveCrv`, minting **more than their own deposit**. While `lockIncentive = 0` on mainnet, this is governance-adjustable (max 30 bps).
* `lockCurve()` is the public function that locks accumulated **CRV** into the voter proxy's **veCRV** escrow (`0x5f3b5DfEb7B28CDbD7FAba78963EE202a494e2A2`), calls `increaseAmount`, and conditionally extends the unlock time. `initialLock()` (operator) sets up the first lock.
* Deposited **CRV** is locked into the protocol's **veCRV** via the voting proxy (`staker` = `0x989AEb4d175e16225E39E87d0D97A3360524AD80`), which is what gives **cvxCRV** its share of Curve emissions and trading fees.
* `minter` = **cvxCRV** token (`0x62B9c7356A2Dc64a1969e19C23e4f579F9810Aa7`).

**cvxCRV is transferable but has no redemption function on the depositor** — there is no unbonding path back to raw **CRV**. Exit relies on secondary-market liquidity (the incentivized **cvxCRV/CRV** pools) rather than a contract redemption.

### FxsDepositor (FXS → cvxFXS)

[FxsDepositor.sol](https://github.com/convex-eth/frax-cvx-platform/blob/main/contracts/contracts/FxsDepositor.sol) (mainnet `0x8f55d7c21bDFf1A51AFAa60f3De7590222A3181e`) accepts **FXS** and mints **cvxFXS**. The FXS is locked into the **veFXS** system (through the Convex **veFXS** proxy / escrow `0xc8418aF6358FFddA74e09Ca9CC3Fe03Ca6aDC5b0`), and the resulting **veFXS** power boosts the Frax-platform user vaults. **cvxFXS** holders hold a liquid token and may stake it for configured rewards; they do not directly receive the boost themselves.&#x20;

### FxnDepositor (FXN → cvxFXN)

[FxnDepositor.sol](https://github.com/convex-eth/function_x/blob/main/contracts/contracts/FxnDepositor.sol) (mainnet `0x56B3c8eF8A095f8637B6A84942aA898326B82b91`) accepts **FXN** and mints **cvxFXN**, locking the FXN into veFXN via the Function(X) escrow (`0xEC6B8A3F3605B083F7044C0F31f2cac0caf1d469`). It exposes:

```javascript
//deposit FXN -> cvxFXN
await fxnDepositor.deposit( amount, lock )      //lock=false: defer locking, mint cvxFXN
await fxnDepositor.depositAll( lock )

//trigger a protocol-level lock/extension of the veFXN position
await fxnDepositor.lockFxn()
```

The mint is always 1:1, with a conditional `platformHolding` route: after minting, if `depositAmount + cvxFxn.totalSupply() <= veFXN.locked(staker)` (the post-mint supply plus the new amount stays within the **veFXN** backing), up to `platformHolding` bps of the incoming **FXN** is diverted to `platformDeposit` (mainnet: 2000 bps / 20%, treasury)

### ClaimZap & reward plumbing (mainnet)

[ClaimZap.sol](https://github.com/convex-eth/platform/blob/main/contracts/contracts/ClaimZap.sol) (mainnet `0x3f29cB4111CbdA8081642DA1f75B3c12DECf2516`) is a convenience contract that batches common claim operations (claiming pool rewards, **cvxCRV/CVX** staking rewards, **veCRV** fees, and **CVX** minting in a single transaction) — useful for integrators building "claim everything" flows for end users.

### MasterChef / liquidity mining (historical)

The `ConvexMasterChef.sol` contract ran the launch liquidity-mining program (**CVX/ETH** and **cvxCRV/CRV** Sushiswap pools). The **launch pools** are historical — but note the contract itself is still deployed and live (deposits/withdraws/claims remain callable; whether any pool currently carries emission allocation is queryable via `poolLength()`/`poolInfo()`). Treat it as a legacy distribution contract, not a new-position integration surface; the `chefPools` entries in `contracts.json` reference its pools.
