# Quick Start

## Minting ESPN

To mint ESPN, deposit USDS to the vault.

* The mint price starts at 100 USDS per ESPN
* The mint price increases with the value of the underlying assets as yield accrues
* There is no vesting or lockup. ESPN is fully permissionless and freely tradable

You can preview exactly how many ESPN shares you'll receive for a given USDS amount using `previewDeposit()`.

### Minting Cap

ESPN minting is capped. The deposit cap is monitored and adjusted based on demand and market dynamics. You can check the current remaining capacity by calling `maxDeposit()` on the contract.

{% hint style="info" %}
The cap may be increased at any time. If the cap is reached, check back later or watch [@eth\_strategy](https://twitter.com/eth_strategy) for announcements.
{% endhint %}

## Earning Yield

Holding ESPN earns yield over time. The amount of USDS each ESPN token can be redeemed for increases as option premiums flow into the vault. No action is required — yield accrues automatically to all ESPN holders.

<figure><img src="https://4118867301-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FdVsn8HPU0Wps7d1zQcgD%2Fuploads%2Fgit-blob-4001995c33339a3aaca1a4173be0eb6885b1c213%2FYield%20Growth%20Mechanism%20of%20ESPN_V4.png?alt=media" alt="ESPN yield growth mechanism"><figcaption><p>ESPN yield grows as option premiums are allocated to the vault, increasing the assets per share.</p></figcaption></figure>

### Staking for Boosted Yield

ESPN holders can provide liquidity to the ESPN/USDS pool (via [Arrakis](https://etherscan.io/address/0x2F63AE2184D876f156b9eF21f488d4E6B442FaD7)) and stake their LP tokens for boosted yield based on lock duration. See [Staking Incentives](https://docs.ethstrat.xyz/espn/staking-incentives) for mechanics and lock period details.

## Redeeming ESPN

ESPN is redeemable for the underlying USDS.

### Instant Redemption

When the vault has sufficient liquid USDS, redemptions are instant. Call `redeem()` or `withdraw()` on the ESPN contract directly.

### Redemption Queue

When instant liquidity isn't available (options positions may need unwinding), redemptions go through the queue:

1. **Approve** your ESPN to the ESPNRedemptionQueue contract
2. **Queue** by calling `queueRedemption(espnAmount)` — you receive an ERC-721 NFT representing your position
3. **Wait** for your position to become eligible. Check with `isEligibleForRedemption(tokenId)`
4. **Redeem** by calling `redeem(tokenId)` when eligible — you receive exactly the USDS amount you queued

Your queue position is determined by cumulative dollar value (FIFO). A position becomes eligible when: `redemptionsBefore < (totalRedemptionsProcessed + totalCancellationsProcessed + USDS balance in contract)`. You receive exactly your `redemptionAmount` in USDS — you don't benefit from ESPN yield while in the queue, but you also don't lose your original dollar value.

**Cancelling a queued redemption:** Call `cancelRedemption(tokenId)` to exit the queue and receive ESPN back. You receive ESPN worth the dollar value you originally queued at the current share price. Note: you may receive a different number of ESPN shares than you deposited — fewer if the share price increased, more if it decreased — but the dollar value is preserved.

**Advancing the queue:** If cancelled positions are ahead of you, anyone can call `processCancelledRedemptions(tokenIds)` with an array of cancelled NFT IDs to clear them, reducing the USDS needed for your redemption to be processed.

## Contract Addresses

| Contract                  | Address                                                                                                               |
| ------------------------- | --------------------------------------------------------------------------------------------------------------------- |
| **ESPN Token**            | [0xb250C9E0F7bE4cfF13F94374C993aC445A1385fE](https://etherscan.io/address/0xb250C9E0F7bE4cfF13F94374C993aC445A1385fE) |
| **ESPN Redemption Queue** | Deploying soon — see [Contracts](https://docs.ethstrat.xyz/references/contracts) for updates                          |
| **ESPN LP**               | [0x67E26e7ef3344b9E8970F6413dc678b138C30317](https://etherscan.io/address/0x67E26e7ef3344b9E8970F6413dc678b138C30317) |
| **ESPN Derive Bridge**    | [0x9371352CCef6f5b36EfDFE90942fFE622Ab77F1D](https://etherscan.io/address/0x9371352CCef6f5b36EfDFE90942fFE622Ab77F1D) |
| **sESPN LP (Staking)**    | [0xcD65F0b6E31e44225330DB8622a9e5307DDC6c1C](https://etherscan.io/address/0xcD65F0b6E31e44225330DB8622a9e5307DDC6c1C) |
| **Arrakis ESPN/USDS LP**  | [0x2F63AE2184D876f156b9eF21f488d4E6B442FaD7](https://etherscan.io/address/0x2F63AE2184D876f156b9eF21f488d4E6B442FaD7) |

For the full list of deployed contracts, see [Contracts](https://docs.ethstrat.xyz/references/contracts).

## Failure Modes & Gotchas

| Scenario                                     | What Happens                                                                                                       | Mitigation                                                                                                                       |
| -------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------- |
| **Deposit cap reached**                      | `maxDeposit()` returns 0 and minting reverts.                                                                      | Wait for cap increase or monitor [@eth\_strategy](https://twitter.com/eth_strategy) for announcements.                           |
| **Instant redemption unavailable**           | Vault balance insufficient for `withdraw()`/`redeem()`.                                                            | Use the redemption queue. Dollar value is preserved while waiting.                                                               |
| **Queue position not yet eligible**          | `isEligibleForRedemption()` returns false.                                                                         | Wait for earlier positions to be fulfilled, or call `processCancelledRedemptions()` to advance cancelled positions ahead of you. |
| **Received different ESPN shares on cancel** | Cancelling returns ESPN worth your queued dollar value at current share price — not the original number of shares. | This is by design. Dollar value is always preserved.                                                                             |
