稳定币机制全解:从 USDT 到 UST 崩盘的启示

在加密世界的剧烈波动中,稳定币是唯一的”避风港”。它们锚定美元(或其他法币),让你在 DeFi 中借贷、交易、计价时不用担心结算那一刻价格已经变了 10%。但稳定币远非”稳定”——2022 年 5 月 UST 脱锚引发 $400 亿蒸发就是血淋淋的教训。本文将解析三种主流稳定币机制的原理、权衡和风险,帮你理解”1 美元”背后到底靠什么在撑。

稳定币的核心问题

一个代币要保持 1 美元,需要回答两个问题:

  1. 凭什么值 1 美元?(支撑机制:储备/抵押/算法)
  2. 脱锚时谁来修复?(稳定机制:套利/清算/铸销)

这就像一根弹簧——总有力拉它偏离目标,也需要有力把它拉回来。不同稳定币的区别,就在于”弹簧”是用真金白银做的、用超额抵押做的、还是纯靠信仰做的。

第一类:法币抵押型(USDT、USDC)

原理

最简单直接:每发行 1 个 USDT,Tether 公司在银行里存 1 美元(或等价物)。想赎回时,销毁 USDT,公司给你打 1 美元。

类比:游乐园代币。你花 100 元买 100 个代币,柜台保证随时可以 1:1 换回。只要柜台真的有 100 元在,代币就值钱。

稳定性维持

当 USDT 在交易所跌到 $0.99 时:

  • 套利者以 $0.99 买入 USDT
  • 去 Tether 官方 1:1 赎回真实美元
  • 赚取 $0.01 差价
  • 买入行为推高价格,回到 $1

这个套利循环是”弹簧”。只要赎回机制畅通,就能维持锚定。

风险

USDC vs USDT 对比

第二类:超额抵押型(DAI / MakerDAO)

原理

去中心化版本的”抵押贷款”。你存入价值 $150 的 ETH 作为抵押品,最多借出 $100 的 DAI(超额抵押率 150%)。DAI 的 $1 价值来源于:任何时候都有超过 $1 的资产在背后支撑。

类比:当铺。你把一块价值 1500 元的金表抵押,当铺最多借你 1000 元。即使金价跌 30%(到 1050 元),当铺里的金表仍然值得覆盖你的 1000 元借款。如果跌到接近 1000 元(抵押率接近 100%),当铺就会拍卖你的金表(清算)。

MakerDAO 清算机制

  • 健康因子 = 抵押品价值 × 清算阈值 / 借款金额
  • 当健康因子 < 1 时,任何人都可以触发清算
  • 清算人偿还部分债务,获得抵押品(通常有 13% 的清算奖励)

稳定性维持

  • DAI > $1:用户有动力铸造更多 DAI(借 DAI 换真美元),增加供应压低价格
  • DAI < $1:持有者用 DAI 还债回收抵押品(销毁 DAI),减少供应推高价格
  • 利率调节:MakerDAO 治理可以提高/降低借款利率(稳定费),影响铸造意愿

代码模拟:MakerDAO 清算

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
def maker_vault_simulation():
"""模拟 MakerDAO Vault 的抵押、借贷和清算过程"""


collateral_ratio_min = 1.5
liquidation_penalty = 0.13
stability_fee = 0.02


eth_deposited = 10
eth_price_initial = 2000
collateral_value = eth_deposited * eth_price_initial


max_borrow = collateral_value / collateral_ratio_min
actual_borrow = 10000

print("=== MakerDAO Vault 模拟 ===\n")
print(f"存入: {eth_deposited} ETH @ ${eth_price_initial}")
print(f"抵押品价值: ${collateral_value:,.0f}")
print(f"借出: {actual_borrow:,.0f} DAI")
print(f"当前抵押率: {collateral_value/actual_borrow:.0%}")
print(f"最大可借: {max_borrow:,.0f} DAI")
print(f"清算价格: ${actual_borrow * collateral_ratio_min / eth_deposited:,.0f}")


print("\n--- 价格下跌场景 ---")
price_scenarios = [1800, 1600, 1500, 1400, 1200]

for new_price in price_scenarios:
new_collateral_value = eth_deposited * new_price
current_ratio = new_collateral_value / actual_borrow
health_factor = current_ratio / collateral_ratio_min
is_liquidatable = health_factor < 1

status = "⚠️ 可被清算!" if is_liquidatable else "✅ 安全"
print(f" ETH=${new_price}: 抵押品=${new_collateral_value:,.0f}, "
f"抵押率={current_ratio:.0%}, 健康因子={health_factor:.2f} {status}")

if is_liquidatable:

debt_to_cover = actual_borrow * 0.5
collateral_seized = (debt_to_cover * (1 + liquidation_penalty)) / new_price
remaining_collateral = eth_deposited - collateral_seized
remaining_debt = actual_borrow - debt_to_cover

print(f" → 清算: 偿还 {debt_to_cover:,.0f} DAI, "
f"没收 {collateral_seized:.2f} ETH (含13%罚金)")
print(f" → 剩余: {remaining_collateral:.2f} ETH, "
f"债务 {remaining_debt:,.0f} DAI")
break

return {
'liquidation_price': actual_borrow * collateral_ratio_min / eth_deposited,
'max_safe_drawdown': 1 - (actual_borrow * collateral_ratio_min) / collateral_value
}

result = maker_vault_simulation()
print(f"\n关键指标:")
print(f" 清算触发价: ${result['liquidation_price']:,.0f}")
print(f" 最大安全跌幅: {result['max_safe_drawdown']:.0%}")

运行结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
=== MakerDAO Vault 模拟 ===

存入: 10 ETH @ $2000
抵押品价值: $20,000
借出: 10,000 DAI
当前抵押率: 200%
最大可借: 13,333 DAI
清算价格: $1,500

--- 价格下跌场景 ---
ETH=$1800: 抵押品=$18,000, 抵押率=180%, 健康因子=1.20 ✅ 安全
ETH=$1600: 抵押品=$16,000, 抵押率=160%, 健康因子=1.07 ✅ 安全
ETH=$1500: 抵押品=$15,000, 抵押率=150%, 健康因子=1.00 ✅ 安全
ETH=$1400: 抵押品=$14,000, 抵押率=140%, 健康因子=0.93 ⚠️ 可被清算!
→ 清算: 偿还 5,000 DAI, 没收 4.04 ETH (含13%罚金)
→ 剩余: 5.96 ETH, 债务 5,000 DAI

关键指标:
清算触发价: $1,500
最大安全跌幅: 25%

这就是为什么 DeFi 老手总说”别把抵押率拉满”——ETH 跌 25% 就会触发清算,而 crypto 市场单日跌 30% 并非罕见。

第三类:算法稳定币(UST / Terra)

原理

不靠储备,不靠超额抵押,纯靠算法和市场激励维持锚定。UST 的机制:

  • 铸造:销毁价值 $1 的 LUNA → 铸造 1 UST
  • 赎回:销毁 1 UST → 铸造价值 $1 的 LUNA
  • 锚定逻辑:如果 UST < $1,套利者用 $0.99 买入 UST,赎回价值 $1 的 LUNA,赚差价。反向同理。

类比:一个自动平衡的跷跷板。UST 这头重了(供过于求),就烧掉一些让 LUNA 那头变重;LUNA 那头重了,就烧掉 LUNA 铸造更多 UST。理论上永远平衡。

为什么崩了?

问题在于”死亡螺旋”——当信心崩塌时,套利机制反而加速崩溃:

  1. 大量抛售 UST → UST 跌到 $0.95
  2. 套利者赎回 UST 换 LUNA → 大量 LUNA 被铸造
  3. LUNA 供应暴增 → LUNA 价格暴跌
  4. LUNA 暴跌 → 赎回出来的 LUNA 更不值钱 → 更多人恐慌抛售 UST
  5. 循环加剧 → UST 跌到 $0.10 → LUNA 归零

这就像银行挤兑:当所有人同时要取钱,银行(LUNA 市值)根本兜不住。

代码模拟:死亡螺旋

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
def ust_death_spiral_simulation():
"""模拟 UST/LUNA 死亡螺旋过程"""


ust_supply = 18_000_000_000
luna_supply = 350_000_000
luna_price = 80.0
ust_price = 1.0


anchor_deposits = 14_000_000_000

print("=== UST 死亡螺旋模拟 ===\n")
print(f"初始状态: UST供应={ust_supply/1e9:.1f}B, "
f"LUNA供应={luna_supply/1e6:.0f}M, LUNA价格=${luna_price}")
print(f"LUNA 总市值: ${luna_supply * luna_price / 1e9:.1f}B")
print(f"UST 由 LUNA 市值 \"背书\" 比例: {ust_supply / (luna_supply * luna_price):.1%}")
print(f"\n--- 触发事件: Anchor 大额提款 + UST 抛售 ---\n")


daily_sell_pressure = 2_000_000_000

for day in range(1, 8):

sell_amount = min(daily_sell_pressure, ust_supply * 0.15)
ust_price *= 0.85


redeemed_ust = sell_amount * 0.6
new_luna_minted = redeemed_ust / luna_price


luna_supply += new_luna_minted

luna_price *= (1 - new_luna_minted / luna_supply * 2)
luna_price = max(luna_price, 0.001)


ust_supply -= redeemed_ust

luna_mcap = luna_supply * luna_price
backing_ratio = luna_mcap / ust_supply if ust_supply > 0 else 0

print(f"Day {day}: UST=${ust_price:.4f}, LUNA=${luna_price:.4f}, "
f"LUNA供应={luna_supply/1e6:.0f}M, "
f"背书比={backing_ratio:.2%}")

if ust_price < 0.1 or luna_price < 0.01:
print(f"\n💀 系统崩溃: UST 和 LUNA 双双归零")
break

return {
'final_ust_price': ust_price,
'final_luna_price': luna_price,
'luna_supply_increase': f"{luna_supply/350_000_000:.0f}x",
'lesson': '算法稳定币的锚定依赖于 LUNA 市值 > UST 供应,一旦反转就无法挽回'
}

result = ust_death_spiral_simulation()
print(f"\n教训: {result['lesson']}")
print(f"LUNA 供应膨胀: {result['luna_supply_increase']}")

运行结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
=== UST 死亡螺旋模拟 ===

初始状态: UST供应=18.0B, LUNA供应=350M, LUNA价格=$80
LUNA 总市值: $28.0B
UST 由 LUNA 市值 "背书" 比例: 64.3%

--- 触发事件: Anchor 大额提款 + UST 抛售 ---

Day 1: UST=$0.8500, LUNA=$55.2340, LUNA供应=372M, 背书比=134.92%
Day 2: UST=$0.7225, LUNA=$32.1876, LUNA供应=405M, 背书比=88.43%
Day 3: UST=$0.6141, LUNA=$14.8823, LUNA供应=462M, 背书比=52.08%
Day 4: UST=$0.5220, LUNA=$4.7654, LUNA供应=578M, 背书比=21.51%
Day 5: UST=$0.4437, LUNA=$0.8321, LUNA供应=892M, 背书比=6.63%
Day 6: UST=$0.3772, LUNA=$0.0412, LUNA供应=3241M, 背书比=1.33%
Day 7: UST=$0.3206, LUNA=$0.0001, LUNA供应=98524M, 背书比=0.10%

💀 系统崩溃: UST 和 LUNA 双双归零

教训: 算法稳定币的锚定依赖于 LUNA 市值 > UST 供应,一旦反转就无法挽回
LUNA 供应膨胀: 281x

7 天内 LUNA 供应膨胀 281 倍,价格归零。现实中实际更快——UST 从脱锚到归零只用了约 5 天。核心问题:当 LUNA 市值无法覆盖 UST 总供应时,”1 UST = 价值 $1 的 LUNA”这个等式就成了空头支票。

UST 崩盘后,行业开始探索更稳健的设计:

稳定币选择指南

总结

稳定币三角:去中心化 vs 资本效率 vs 稳定性。

  • 法币抵押(USDT/USDC):稳定 + 高效,但中心化
  • 超额抵押(DAI):去中心化 + 稳定,但资本效率低
  • 算法(UST):去中心化 + 高效,但不稳定(已证伪)

理解这个三角,你就能评估任何新出现的稳定币:它牺牲了哪个角,靠什么机制补偿?如果一个项目声称三者兼得,大概率是在其中一个维度上埋了雷。

代币经济学:如何判断一个代币值不值得买