> For the complete documentation index, see [llms.txt](https://docs.hann.finance/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.hann.finance/zh/mechanics/deep-dives/yield-bearing-stables.md).

# 生息凭证代币

earnUSDT 份额、wEarnUSDT 抵押封装、估值与 USDT 提取

earnUSDT 是代表 SuperEarn 金库份额的凭证代币。Hann Finance 将份额封装为 wEarnUSDT 用于 CDP 记账。份额价值来自其对应资产，封装转换代币精度。

## 三种资产

| 资产        | 代表内容           | 用途                             |
| --------- | -------------- | ------------------------------ |
| USDT      | 底层稳定币          | 存入或从外部 SuperEarn 接收            |
| earnUSDT  | SuperEarn 金库份额 | EarnUSDT 抵押存入流程接受的凭证           |
| wEarnUSDT | 18 位精度的封装份额    | EarnUSDT 分支持有的抵押品，也是稳定池和赎回支付资产 |

应用的 earnUSDT 存款使用 6 位精度，wEarnUSDT 抵押记账使用 18 位。

```mermaid
flowchart LR
  U[USDT] -->|存入 SuperEarn| E[earnUSDT 份额]
  E -->|封装| W[wEarnUSDT]
  W -->|存入抵押品| T[Trove]
  T -->|取回抵押品| W
  W -->|解封| E
  E -->|申请赎回并领取| U
```

*先取回 Trove 抵押品，再解封份额，最后按 SuperEarn 流程领取 USDT。*

## 份额数量与单位价值

份额余额可保持不变，同时每份对应资产发生变化。设 `NAV` 为每份对应的 USDT：

$$
\text{USDTValue} \approx \text{Shares} \times \text{NAV}
$$

1,000 份的 NAV 从 1.00 升至 1.03 USDT，估算底层价值从 1,000 升至 1,030 USDT，份额仍为 1,000。提取费、已实现损失和流动性影响最终到账。

凭证实现有自己的换算方法。Hann Finance 的 NAV provider 读取 `SuperEarnRouter.previewRedeem(earnUSDT, oneShare)`，归一化到 18 位。

## 获取、持有和取回资产

### 1. 获取 earnUSDT 份额

外部 SuperEarn router 提供 `deposit(earnVault, amount, receiver, minSharesOut)`，存入 USDT 并发行份额。预览方法提供存款、铸造和赎回报价。

普通 EarnUSDT 抵押流程接受 **earnUSDT 份额**，输入数量按份额计。

### 2. 用作抵押品

EarnUSDTZapper 先将 earnUSDT 封装为 wEarnUSDT 再送入 Trove。借入 USDHN 会建立独立的计息债务。

精度决定固定封装关系：

$$
\text{WrappedRaw} = \text{EarnRaw} \times 10^{18-d}
$$

`d` 为 earnUSDT 精度。6 位时，1 earnUSDT 为 1,000,000 基础单位，对应 1,000,000,000,000,000,000 wEarnUSDT 基础单位，显示单位均代表一份。

### 3. 取回抵押品

关闭或减少 Trove 按借款条件释放抵押品。EarnUSDTZapper 将支付抵押品解封为 earnUSDT。杠杆关闭路径支付 wEarnUSDT 或 earn 金库代币，USDT 赎回之后另行申请。

稳定池抵押奖励和协议赎回支付 wEarnUSDT。封装器的 `withdraw` 或 `withdrawTo` 可将其转回 earnUSDT。

解封向下取整到 earnUSDT 基础单位，不足一单位的 wEarnUSDT 留在余额中。`previewWithdraw` 返回可销毁数量、底层数量和余量；`maxWithdrawable` 给出账户最大整单位解封量。

### 4. 申请并领取 USDT

SuperEarn 的 `redeem(earnVault, shares, receiver, minAssetsOut)` 返回提取申请 ID。冷却金库记录收款人、资产数量、申请时间、该申请的冷却期和领取状态。

就绪后 `claim(requestId, maxLossBps)` 返还资产。金库提供 `cooldownPeriod()` 和 `maxLossThresholdBps()`。领取使用申请记录的期限与允许损失上限。

也可在市场卖出凭证，所得取决于市场价格和流动性。

## 协议抵押价格

WEarnUSDTPriceFeed 通过 `EarnUSDTNavProviderRouter` 读取 NAV，并应用配置的估值折扣。折扣按冷却金库报告的缺口和领取损失相对于锁定及闲置资产计算，受倍率和上限控制。

普通价格为 NAV 扣除折扣。赎回价格先将 NAV 向上取整到一个 USDT 基础单位步长，再扣折扣。

价格源检查跨链 keeper 快照年龄。过期触发 `SnapshotStale` 并回滚读取。NAV 为零、读取失败或折扣记账读取失败时，触发分支关闭并使用最后有效价。

## 市场价值与抵押率

凭证市值还受 USDT 美元价格影响：

$$
\text{MarketValue} \approx \text{Shares} \times \text{NAV} \times \text{USDTMarketPrice}
$$

1,000 份、NAV 1.03 USDT、USDT $1.00 时值 $1,030；USDT 为 $0.97 时：

$$
1{,}000 \times 1.03 \times 0.97 = 999.1\ \text{USD}
$$

以上排除退出费和价格影响。

当前 wEarnUSDT feed 仅使用 NAV 与折扣，USDT/USD 市价需单独评估。页面 CR 按下述 feed 值计算：

$$
CR\_{protocol} = \frac{\text{wEarnUSDTAmount} \times \text{PriceFeedValue}}{\text{USDHNDebt}}
$$

份额价值、损失、折扣和债务利息改变该比率。冷却期与市场流动性影响换回 USDT 的方式及时间。

## 签名前

检查存入代币、份额换算报价和返还资产。Trove 还需看当前债务和抵押率；USDT 提取需看申请冷却期与领取损失设置。凭证依赖跨链资产记账和外部 SuperEarn 合约。

[Zapper 指南](/zh/protocol/zapper.md)说明转换路径，[技术概览](/zh/developers/technical-overview.md)说明合约角色。[CDP 抵押条件](/zh/mechanics/deep-dives/cdp-safety.md)、[清算与 Earn](/zh/mechanics/deep-dives/liquidations-and-earn.md)、[风险披露](/zh/security/risk-disclosure.md)说明记账和风险。


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

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

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.hann.finance/zh/mechanics/deep-dives/yield-bearing-stables.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
