# Conversion of Notes

## The Problem

In traditional finance, exercising a convertible bond is an all-or-nothing event — you convert to equity at a fixed ratio, or you hold to maturity and get your principal back. There's no flexibility to partially exercise, no choice of payout denomination, and no transparency about what you'll receive.

ETH Strategy's conversion mechanics are designed around flexibility and predictability. You can convert partially or fully. You can choose STRAT or esETH. You can see your exact entitlements on-chain at any time. And if you hold to expiry, your redemption is automatic and fair — pro-rata if the protocol is underwater, full face value if it's solvent.

This page covers the mechanics of exercising a [convertible note](/core-mechanics/convertible-notes.md). For how notes are created, see [Convertible Notes](/core-mechanics/convertible-notes.md). For the CDT token itself, see [CDT](/core-mechanics/cdt.md).

## Two Conversion Paths

During the active conversion window (after the \~6.9-day timelock, before the \~4.2-year expiry), a note holder can convert by burning CDT against their NFT. There are two paths:

### Convert to STRAT (Equity Path)

Burn CDT → receive newly minted STRAT.

This is the bullish path. The holder is exchanging their debt claim for equity in the protocol, betting that STRAT's value will exceed the conversion rate over time. The amount of STRAT received is determined by the `conversionEntitlementStrat` encoded in the NFT at bonding time — it does not change with market conditions after issuance.

When you convert to STRAT:

1. Your CDT is burned (reducing total protocol debt)
2. STRAT is freshly minted to your address
3. The pro-rata esETH backing moves from encumbered holdings to unencumbered holdings — freeing it for protocol use (lending, yield, operations)
4. The NFT's remaining balances are decremented

The encumbered-to-unencumbered transfer is important: it means STRAT conversion *increases* the protocol's available liquidity. More STRAT conversions → more esETH available for lending → more interest revenue for stakers. This creates a positive flywheel between conversion activity and staking yield.

### Convert to esETH (ETH Path)

Burn CDT → receive esETH from the treasury.

This is the risk-off path. The holder exits into ETH-denominated value without needing to sell STRAT on the open market. The amount of esETH received is determined by the `conversionEntitlementEth` encoded in the NFT at bonding time.

When you convert to esETH:

1. Your CDT is burned (reducing total protocol debt)
2. The pro-rata esETH backing moves from encumbered holdings to unencumbered holdings
3. That esETH is then transferred from unencumbered holdings to your address
4. The NFT's remaining balances are decremented

The ETH conversion entitlement reflects the net asset value (NAV) per STRAT at the time of bonding. If the protocol was underwater when you bonded (`debt > assets`), your ETH entitlement may be zero — but your STRAT entitlement is still intact. You can check both entitlements before bonding via the `conversionEntitlements()` preview function.

### Choosing Between Paths

|                        | Convert to STRAT                               | Convert to esETH                                   |
| ---------------------- | ---------------------------------------------- | -------------------------------------------------- |
| **You receive**        | Newly minted STRAT                             | esETH from treasury                                |
| **Best when**          | You're bullish on STRAT appreciation           | You want ETH exposure without market-selling STRAT |
| **Protocol impact**    | Increases STRAT supply; frees encumbered esETH | Decreases treasury esETH; frees encumbered esETH   |
| **Entitlement set at** | Bonding time (fixed)                           | Bonding time (fixed, based on NAV)                 |

In both cases, the CDT you burn is destroyed forever — reducing total protocol debt. The choice is about whether you want your payout in equity (STRAT) or in the underlying asset (esETH).

## Partial Exercise

You don't have to convert all at once. The protocol supports partial conversion — burn some of your CDT now and keep the rest for later.

When you partially exercise:

* You specify the exact amount of CDT to burn (between 1 and your remaining `amountOwedCdt`)
* The payout is calculated pro-rata against the NFT's remaining balances:

```
stratOut = conversionEntitlementStrat × cdtToBurn / amountOwedCdt
ethOut   = conversionEntitlementEth   × cdtToBurn / amountOwedCdt
```

* **Both** entitlements decrement regardless of which path you choose. If you convert to STRAT, the `ethOut` amount of esETH still moves from encumbered to unencumbered (freeing it for protocol use) and your `conversionEntitlementEth` decreases. If you convert to esETH, `stratOut` worth of STRAT entitlement is still consumed.
* `settlementEntitlementUsd` also decrements by the CDT burned — this affects your remaining redemption value if you hold some position to expiry
* The NFT remains active with the updated remaining balances

You can exercise partially as many times as you want during the conversion window. When you finally burn the last CDT owed (`amountOwedCdt` reaches zero), the NFT is burned and the position is fully closed.

### Example

You hold a note with 10,000 CDT owed, 400 STRAT entitlement, and 3.0 esETH entitlement. You decide to convert 2,500 CDT to STRAT:

1. `stratOut` = 400 × 2,500 / 10,000 = **100 STRAT** minted to you
2. `ethOut` = 3.0 × 2,500 / 10,000 = **0.75 esETH** moved from encumbered to unencumbered holdings (freed for protocol use — not sent to you since you chose the STRAT path)
3. Remaining: 7,500 CDT owed, 300 STRAT entitlement, 2.25 esETH entitlement

Later, you could convert 5,000 CDT to esETH:

1. `ethOut` = 2.25 × 5,000 / 7,500 = **1.5 esETH** transferred to you
2. `stratOut` = 300 × 5,000 / 7,500 = 200 STRAT entitlement consumed (not minted — you chose the esETH path)
3. Remaining: 2,500 CDT owed, 100 STRAT entitlement, 0.75 esETH entitlement

You can mix and match between STRAT and esETH paths across partial exercises.

## Post-Expiry Redemption

After the \~4.2-year expiry, the conversion window closes. Conversion to STRAT or esETH is no longer available. Instead, the holder redeems their remaining CDT for its USD notional value, paid out in esETH.

Unlike conversion (which can be partial), redemption is **single-shot** — it settles the entire remaining position at once and burns the NFT.

### How Redemption Payout Is Calculated

The payout depends on whether the protocol is solvent:

**If solvent** (treasury USD value > total CDT supply):

```
ethPayout = settlementEntitlementUsd × ORACLE_SCALE / ethPriceUSD
```

The holder receives the full dollar value of their remaining CDT, converted to esETH at the current oracle price.

**If underwater** (treasury USD value < total CDT supply):

```
ethPayout = settlementEntitlementUsd × totalTreasuryEth / totalCdtSupply
```

The holder receives their pro-rata share of the total treasury. All CDT holders are treated pari passu — no seniority, no priority.

In either case:

1. The encumbered esETH backing (if not already released) is moved to unencumbered holdings
2. The computed esETH payout is transferred from unencumbered holdings to the note owner
3. CDT equal to `settlementEntitlementUsd` is burned from the caller
4. The NFT is burned and all per-token state is cleared

The holder specifies `minEthOut` as slippage protection — if the oracle price moves between transaction submission and execution such that the esETH payout falls below this floor, the transaction reverts.

### Encumbrance Release

After a note expires, the protocol owner can call `releaseEncumbrance(tokenId)` to move that note's backing esETH from encumbered to unencumbered holdings — even if the holder hasn't redeemed yet. This is an administrative function that frees up protocol liquidity without affecting the holder's redemption rights. Each note's encumbrance can only be released once — calling `releaseEncumbrance` again reverts with `EncumbranceAlreadyReleased`.

If the encumbrance has already been released when the holder later redeems, the encumbered-to-unencumbered transfer is skipped (the esETH is already in unencumbered holdings). If the computed esETH payout exceeds the current unencumbered balance, the shortfall is automatically pulled from encumbered holdings before the transfer to the holder.

## Lifecycle Gates

Conversion and redemption are gated by two timestamps encoded in every note:

| Gate                                    | Window                        | What's Available                               |
| --------------------------------------- | ----------------------------- | ---------------------------------------------- |
| **Timelock** (\~6.9 days after bonding) | Before timelock passes        | Nothing — no conversion, no redemption         |
| **Active Conversion**                   | After timelock, before expiry | Conversion to STRAT or esETH (partial or full) |
| **Post-Expiry**                         | After expiry (\~4.2 years)    | Redemption only (single-shot, full position)   |

These windows are mutually exclusive by design. During the timelock, nothing can happen. After the timelock but before expiry, only conversion is available. After expiry, only redemption is available.

The timelock prevents immediate arbitrage against the bonding transaction and gives the market time to absorb new issuance. The expiry creates a natural maturity date for the protocol's debt — after which obligations must be settled.

## Ownership and Authorization

Only the current `ownerOf(tokenId)` can convert or redeem. This is enforced at the contract level — not through ERC-721 approval mechanics.

This is a deliberate security decision: ERC-721 approvals are designed for transfer authorization, not for settlement. Allowing approved addresses to trigger conversion would create an unnecessary attack surface. If you want someone else to convert your note, transfer the NFT to them.

This means:

* If you buy a note NFT on a secondary market, you can convert it (provided you hold CDT)
* If you've approved an address for NFT transfers, they **cannot** convert or redeem on your behalf
* Settlement payouts always go to `ownerOf(tokenId)` at the time of the transaction

## Permit Support

All conversion and redemption entry points support [ERC-2612](https://eips.ethereum.org/EIPS/eip-2612) permits for CDT approval. Instead of calling `CDT.approve()` in a separate transaction, you can sign a permit off-chain and pass it to `convertPartialWithPermit()`, `convertWithPermit()`, or `redeemCdtForUsdNotionalWithPermit()`.

This saves gas and improves UX — particularly for users who want to convert in a single transaction.

{% hint style="info" %}
**Status: Upcoming Release** — Note conversion and redemption are currently permissioned (ESPN exercises on behalf of depositors). Permissionless conversion will be available in the upcoming release.
{% endhint %}

## Failure Modes and Gotchas

**You need CDT to convert.** The NFT alone is not enough — you must hold and burn CDT to exercise any conversion right. If you've sold or used your CDT, you must reacquire it on the open market. The CDT amount required is tracked per-NFT in `amountOwedCdt`, which decrements as you partially exercise.

**Conversion and redemption are mutually exclusive windows.** You cannot convert after expiry, and you cannot redeem before expiry. If you miss the conversion window, your only option is post-expiry redemption at the USD notional rate. There is no grace period.

**Entitlements are fixed at bonding time.** Your `conversionEntitlementStrat` and `conversionEntitlementEth` are set when you bond. They do not change with market conditions, protocol growth, or STRAT price movements after issuance. This is by design — it makes the note a predictable instrument. But it also means a note bonded at a high STRAT price will have different entitlements than one bonded when STRAT is low.

**ETH conversion entitlement can be zero.** If the protocol was underwater when you bonded (debt exceeded assets), your `conversionEntitlementEth` will be zero. You can still convert to STRAT — the protocol continues issuing STRAT conversion rights even when underwater, allowing fresh capital to aid recovery. Check `conversionEntitlements()` before bonding to see both entitlements.

**Partial exercise rounds down.** Pro-rata calculations use integer division, so small partial exercises may lose fractional amounts to rounding. For very small CDT burns, this could result in zero payout. In practice, this only matters for dust-sized amounts.

**Redemption is single-shot.** Unlike conversion (which supports partial exercise), redemption settles everything at once. You cannot redeem part of your position after expiry — it's all or nothing. Plan accordingly if you hold a large position.

**Pro-rata redemption risk.** If the protocol is underwater at expiry, you receive less than $1 per CDT. All CDT holders share the available treasury proportionally. There is no seniority, insurance fund, or backstop. The payout formula is transparent and deterministic — you can calculate your expected redemption by checking `CDT.totalSupply()` against total treasury value at any time.

**Slippage on redemption.** Because redemption converts a USD notional to esETH at the current oracle price, the ETH amount you receive can change between transaction submission and execution. Always set a reasonable `minEthOut` to protect against adverse price movement.

For a comprehensive view of protocol risks and mitigations, see [Risks](/security-and-risk/risks.md).


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.ethstrat.xyz/core-mechanics/conversion-of-notes.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
