# Token Routes

This page maps every token flow in the protocol. It serves as both a visual reference and an accessible text alternative to the [Protocol Overview](https://docs.ethstrat.xyz/introduction/protocol-overview) diagram.

## System Overview

The protocol has three fungible tokens (esETH, STRAT, CDT), one non-fungible token (NFT Option), and one vault token (ESPN). Every interaction in the protocol moves one or more of these tokens between users, the treasury, and protocol contracts.

```mermaid
flowchart TB
    subgraph Users
        Bonder["Bonder"]
        Holder["Note Holder"]
        Staker["STRAT Staker"]
        Borrower["Borrower"]
        ESPNUser["ESPN Depositor"]
    end

    subgraph Treasury["Protocol Treasury"]
        Enc["Encumbered Holdings\n(esETH locked for conversion)"]
        Unenc["Unencumbered Holdings\n(esETH available for operations)"]
    end

    subgraph Tokens
        esETH["esETH"]
        STRAT["STRAT"]
        CDT["CDT"]
        NFT["NFT Option"]
        ESPN["ESPN"]
    end

    subgraph Contracts
        StakedStrat["StakedStrat\n(staking rewards)"]
        TreasuryLend["TreasuryLend\n(fixed-rate loans)"]
        ESPNVault["ESPN Vault\n(options strategy)"]
    end

    Bonder -- "ETH in" --> Enc & Unenc
    Enc & Unenc -- "esETH" --> Holder
    CDT -- "minted to" --> Bonder
    NFT -- "minted to" --> Bonder
    Holder -- "burns CDT" --> STRAT
    Holder -- "burns CDT" --> esETH
    Staker -- "stakes STRAT" --> StakedStrat
    StakedStrat -- "esETH rewards" --> Staker
    Borrower -- "burns STRAT + CDT" --> TreasuryLend
    TreasuryLend -- "esETH loan" --> Borrower
    TreasuryLend -- "interest" --> StakedStrat
    ESPNUser -- "USDS" --> ESPNVault
    ESPNVault -- "ESPN shares" --> ESPNUser
```

## The Five Tokens

| Token          | Type                   | Created By                                                  | Destroyed By                                    | Purpose                                                                   |
| -------------- | ---------------------- | ----------------------------------------------------------- | ----------------------------------------------- | ------------------------------------------------------------------------- |
| **esETH**      | ERC-20 (fungible)      | Depositing any supported LST or ETH (1:1 with ETH value)    | Redeeming for underlying LSTs                   | Unified denomination layer for all treasury holdings, pegged 1:1 with ETH |
| **STRAT**      | ERC-20 (fungible)      | Conversion of notes; repayment minting                      | Burned as collateral for treasury lending       | Equity token — leveraged ETH exposure                                     |
| **CDT**        | ERC-20 (fungible)      | Purchasing a convertible note (1 CDT per \~$1 USD notional) | Conversion, redemption, or burned as collateral | Fungible protocol debt — total supply = total debt                        |
| **NFT Option** | ERC-721 (non-fungible) | Purchasing a convertible note (one per note)                | Full conversion or post-expiry redemption       | Encodes conversion rights (STRAT amount, esETH amount, expiry, timelock)  |
| **ESPN**       | ERC-4626 (vault share) | Depositing USDS into ESPN vault                             | Redeeming from ESPN vault                       | Yield-bearing vault token — options premium accrual                       |

## User Journeys

### 1. Mint esETH

Wrap any supported liquid staking token into the protocol's unified denomination.

```mermaid
flowchart LR
    A["User holds\nwstETH / rETH / cbETH\nweETH / aWETH / ETH"] -->|deposit| B["esETH Contract"]
    B -->|"mint esETH\n(1:1 with ETH)"| C["User holds esETH"]
```

**What moves:**

* **In:** LST or ETH from user → esETH contract
* **Out:** esETH minted to user (non-rebasing, predictable balance)

**Reverse:** Redeem esETH for any supported LST the contract holds.

***

### 2. Purchase a Convertible Note (Bond)

The protocol's primary treasury growth mechanism. Notes are USD-denominated — the buyer pays with ETH (priced via an ETH/USD oracle), and the protocol acquires the ETH for the treasury.

```mermaid
flowchart LR
    A["Buyer sends ETH\n(USD-priced via oracle)"] -->|"bond()"| B["Protocol"]
    B -->|"ETH acquired\nfor treasury as esETH"| C["Treasury"]
    C --> D["Encumbered Holdings\n(esETH backing conversion rights)"]
    C --> E["Unencumbered Holdings\n(esETH for operations)"]
    B -->|"mint"| F["CDT to Buyer\n(1 per ~$1 USD notional)"]
    B -->|"mint"| G["NFT Option to Buyer\n(STRAT + esETH entitlements,\ntimelock, expiry)"]
```

**What moves:**

* **In:** ETH from buyer (priced in USD) → acquired for treasury as esETH, split into encumbered (backs conversion-to-ETH rights) + unencumbered (free capital)
* **Out:** CDT (fungible debt, 1 per \~$1 USD notional) + NFT Option (conversion rights) to buyer

**Key detail:** The note is a USD-denominated instrument — the CDT amount and conversion entitlements are determined by the USD value of the ETH sent, not the ETH amount itself. The split between encumbered and unencumbered is determined by the ETH conversion entitlement. The encumbered portion is locked until the note holder exercises their ETH conversion right or the note expires.

***

### 3. Convert a Note (Before Expiry)

Note holders burn CDT against their NFT to receive either STRAT (equity) or esETH (ETH). Partial exercise is supported.

#### Path A: Convert to STRAT (Equity Path)

```mermaid
flowchart LR
    A["Note Holder"] -->|"burns CDT"| B["CDT Destroyed\n(protocol debt reduced)"]
    C["Protocol"] -->|"mints STRAT"| A
    D["Encumbered Holdings"] -->|"esETH released"| E["Unencumbered Holdings\n(freed for lending/operations)"]
    F["NFT balances\ndecremented"]
```

**What moves:**

* **Destroyed:** CDT burned (reduces total protocol debt)
* **Created:** STRAT minted to holder
* **Moved:** esETH from encumbered → unencumbered holdings (increases available liquidity)
* **Updated:** NFT entitlements decremented pro-rata

**Why it matters:** STRAT conversion frees esETH for protocol use. More conversions → more esETH available for lending → more interest for stakers. This is the positive flywheel.

#### Path B: Convert to esETH (ETH Path)

```mermaid
flowchart LR
    A["Note Holder"] -->|"burns CDT"| B["CDT Destroyed\n(protocol debt reduced)"]
    C["Encumbered Holdings"] -->|"esETH released"| D["Unencumbered Holdings"]
    D -->|"esETH transferred"| A
    E["NFT balances\ndecremented"]
```

**What moves:**

* **Destroyed:** CDT burned (reduces total protocol debt)
* **Moved:** esETH from encumbered → unencumbered → to holder
* **Updated:** NFT entitlements decremented pro-rata

**Key difference from Path A:** The holder receives esETH directly. The treasury loses esETH but also sheds the corresponding debt.

***

### 4. Redeem a Note (After Expiry)

After the \~4.2-year expiry, conversion closes and redemption opens. The holder redeems remaining CDT for its USD notional value, paid in esETH.

```mermaid
flowchart LR
    A["Note Holder"] -->|"burns all\nremaining CDT"| B["CDT Destroyed"]
    C["Unencumbered Holdings"] -->|"esETH at\nUSD notional value"| A
    D["NFT burned\n(position closed)"]
```

**What moves:**

* **Destroyed:** All remaining CDT burned + NFT burned
* **Out:** esETH equivalent to USD notional value (at current ETH/USD price) transferred to holder
* **If underwater:** Holder receives pro-rata share of total treasury instead of full face value. All CDT holders treated equally — no seniority.

**Single-shot:** Unlike conversion, redemption settles the entire remaining position at once.

***

### 5. Stake STRAT (Earn Yield)

Stake STRAT to earn esETH rewards from treasury lending interest.

```mermaid
flowchart LR
    A["STRAT Holder"] -->|"deposit STRAT"| B["StakedStrat Contract"]
    B -->|"sSTRAT-v2\n(non-transferable receipt)"| A
    C["TreasuryLend"] -->|"interest revenue\n(esETH)"| B
    B -->|"esETH rewards\n(streamed over 7 days)"| A
```

**What moves:**

* **In:** STRAT deposited to StakedStrat contract
* **Receipt:** sSTRAT-v2 (non-transferable, tracks your share)
* **Rewards:** esETH streamed linearly over 7-day periods from lending interest
* **Out (unstake):** STRAT returned + pending rewards claimed. No lock period.

**Anti-frontrunning:** The 7-day linear streaming prevents deposit-collect-leave attacks. New rewards blend with undistributed balance — earlier stakers always retain their accrued yield.

***

### 6. Borrow from Treasury

STRAT holders borrow esETH using STRAT + CDT as collateral. Fixed rate, fixed term, no liquidation during the loan.

```mermaid
flowchart LR
    A["Borrower"] -->|"STRAT + CDT\n(burned)"| B["TreasuryLend Contract"]
    C["Unencumbered Holdings"] -->|"ethBacking\n(full pro-rata share)"| B
    B -->|"borrowAmount\n(esETH loan)"| A
    B -.->|"maxTermInterest +\ndelinquentFee\n(held in reserve)"| B
```

**What moves:**

* **Destroyed:** Borrower's STRAT and CDT are burned (not escrowed)
* **Moved:** Pro-rata esETH backing from unencumbered holdings → TreasuryLend contract
* **Out:** Loan amount (esETH) to borrower. Remainder held as interest + delinquent fee reserve.

#### On Repayment (Before Expiry)

```mermaid
flowchart LR
    A["Borrower"] -->|"principal +\naccrued interest\n(esETH)"| B["TreasuryLend"]
    B -->|"interest"| C["StakedStrat\n(to stakers)"]
    B -->|"unused reserves"| D["Unencumbered Holdings"]
    B -->|"mint STRAT + CDT\nback to borrower"| A
```

* **Repaid:** Principal + accrued interest in esETH
* **Created:** STRAT and CDT minted back to borrower
* **Interest:** Flows to StakedStrat (streamed to stakers)
* **Invariant:** ethPerStrat unchanged — borrowing/repaying is neutral to other holders

#### On Default (After Expiry)

```mermaid
flowchart LR
    B["TreasuryLend"] -->|"maxTermInterest"| C["StakedStrat\n(to stakers)"]
    B -->|"delinquentFee"| D["Unencumbered Holdings\n(boosts ethPerStrat)"]
    E["Collateral permanently\nforfeited — STRAT + CDT\nnot returned"]
    F["Position NFT burned"]
```

* **Forfeited:** Borrower's STRAT and CDT are gone permanently
* **Distributed:** Full-term interest to stakers, delinquent fee boosts ethPerStrat for all remaining holders
* **Net effect:** ethPerStrat increases — defaults compensate remaining holders

***

### 7. ESPN Deposit (Volatility Yield)

Deposit USDS into the ESPN vault to earn yield from ETH options without directional exposure.

```mermaid
flowchart LR
    A["Depositor"] -->|"USDS"| B["ESPN Vault"]
    B -->|"ESPN shares\n(ERC-4626)"| A
    B -->|"converts USDS → ETH\nbonds with protocol"| C["Convertible Note\n(CDT + NFT Option)"]
    C -->|"NFT as collateral"| D["Derive\n(options exchange)"]
    D -->|"sell short-dated\ncovered calls"| E["Option Premiums"]
    E -->|"premium revenue"| B
    B -.->|"assets per share\nincreases over time"| A
```

**What moves:**

* **In:** USDS from depositor → ESPN vault
* **Out:** ESPN shares (ERC-4626) to depositor
* **Internal:** Vault converts USDS → ETH → bonds with protocol → receives convertible note → sells covered calls on Derive → premiums flow back to vault
* **Yield:** Assets per share increases as premiums accumulate. No action required.
* **Redeem:** ESPN → USDS (instant if liquid, or via redemption queue)

***

## Complete Token Lifecycle

This table traces each token from creation to destruction:

| Token          | Born                                                  | Lives                                                               | Dies                                                    |
| -------------- | ----------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------- |
| **esETH**      | LST/ETH deposited into esETH contract                 | Treasury holdings, user wallets, StakedStrat rewards, loan proceeds | Redeemed for underlying LSTs                            |
| **STRAT**      | Note conversion (CDT→STRAT) or loan repayment minting | User wallets, StakedStrat contract, secondary markets               | Burned as lending collateral or forfeited on default    |
| **CDT**        | Bonding (1 CDT per \~$1 notional)                     | User wallets, lending collateral, secondary markets                 | Burned on conversion, redemption, or lending collateral |
| **NFT Option** | Bonding (one per note, encoding conversion rights)    | User wallets, secondary markets                                     | Burned on full conversion or post-expiry redemption     |
| **ESPN**       | USDS deposited to ESPN vault                          | User wallets, LP positions, staking                                 | Burned on vault redemption                              |

## Treasury Flow Summary

All esETH in the protocol sits in one of two pools:

```mermaid
flowchart TB
    subgraph Treasury
        Enc["Encumbered Holdings\nesETH locked for conversion rights"]
        Unenc["Unencumbered Holdings\nesETH available for operations"]
    end

    Bond["New Bonds"] -->|"conversion backing"| Enc
    Bond -->|"remaining ETH"| Unenc
    Enc -->|"on conversion\nor expiry release"| Unenc
    Unenc -->|"lending"| TL["TreasuryLend"]
    TL -->|"interest"| SS["StakedStrat → Stakers"]
    TL -->|"delinquent fees"| Unenc
    Unenc -->|"redemption payouts"| Users["Note Holders"]
    Unenc -->|"staking rewards"| SS
```

**Encumbered** = locked to back ETH conversion rights. Can only leave when a note holder converts to esETH or when the protocol owner releases encumbrance after expiry.

**Unencumbered** = the protocol's working capital. Funds lending, pays redemptions, distributes rewards. This pool grows when STRAT conversions free encumbered esETH, when bonds bring in new capital beyond conversion backing, and when delinquent fees are forfeited.

The health of the protocol can be measured by watching the ratio of unencumbered holdings to outstanding obligations — a growing unencumbered pool means more capital available for lending revenue and staker rewards.
