导语:把华尔街的杠杆搬上链,难在哪
现货交易只需要一个价格,衍生品需要一整套基础设施:定价模型、保证金规则、清算引擎、资金费率、预言机与风险管理。中心化交易所(CEX)把这些放在自己的服务器上,链上协议则必须在公开、无许可、可组合的环境里重建它们,且每一步都可被套利者攻击。
本文按三类形态拆解 DeFi 衍生品的技术实现,重点回答"链上如何在没有订单簿的情况下定价"与"清算如何做到既不误伤又不出坏账"。
一句话总结:链上衍生品的所有设计难点,都收敛到一个问题——如何用预言机价格 + 抵押品机制,替代中心化交易所的撮合与风控。
1. 三类形态与技术分野
| 形态 | 代表协议 | 定价来源 | 结算方式 |
|---|---|---|---|
| 期权 | Opyn、Lyra、Ribbon | Black-Scholes / 隐含波动率 | 到期行权或现金结算 |
| 永续合约 | GMX、dYdX、Perp v2 | 预言机 / 订单簿 | 资金费率锚定现货 |
| 合成资产 | Synthetix、Mirror | 预言机 + 债务池 | 按债务比例分摊 |
三者的共同点是都需要一个可信价格源,这使区块链预言机 成为整个衍生品栈的地基。价格源被操纵,上层所有机制都会连锁崩塌。
2. 永续合约:没有到期日的杠杆
2.1 为什么需要资金费率
永续合约(Perpetual)永不交割,因此必须有一个机制让合约价格锚定现货。这个机制就是资金费率(Funding Rate):当合约价格高于现货(多头拥挤),多头定期向空头付费;反之空头付给多头。
资金费率 ≈ (合约标记价 - 现货指数价) / 现货指数价 / 结算周期
若为正:多头付费给空头 → 抑制做多 → 价格回落
若为负:空头付费给多头 → 抑制做空 → 价格回升
资金费率是永续合约的"看不见的手",它把套利者的行为转化为价格锚定力:只要费率足够高,就有资金去"做空合约 + 做多现货"赚取无风险利差。
2.2 两种定价范式
| 范式 | 代表 | 机制 | 优劣 |
|---|---|---|---|
| 预言机定价 | GMX | 直接用 Chainlink 价格成交 | 无需订单簿,但有延迟与操纵风险 |
| 订单簿定价 | dYdX、Perp v2 | 链下撮合 + 链上结算 | 价格发现好,但依赖中心化组件 |
GMX 的模型值得细看:它是零滑点的,成交价完全取自预言机,做市方(GLP/GM 池)作为所有交易的对手方。这带来一个关键约束——预言机延迟期间的价格变动就是做市方的风险敞口,因此 GMX 用"双预言机 + 时间加权"来降低被夹的风险:
// 简化示意:取两个预言机的价格并检查偏离
uint256 priceA = oracleA.latestAnswer();
uint256 priceB = oracleB.latestAnswer();
require(
absDiff(priceA, priceB) * 10000 / priceA < MAX_DEVIATION_BP,
"price deviation too large"
);
2.3 保证金与清算
永续合约的核心风控是维持保证金率(Maintenance Margin)。当账户权益跌破维持线,清算人可部分平仓;跌破更低的清算线则全额强平。
账户权益 = 抵押品价值 + 未实现盈亏
保证金率 = 账户权益 / 仓位名义价值
初始保证金率(开仓门槛) 如 10%(10x 杠杆)
维持保证金率(清算触发线) 如 5%
清算罚金 如 1%(归清算人)
链上清算引擎的难点在于清算的原子性与激励:清算必须在一笔交易内完成(否则被抢跑),且罚金必须足够覆盖 gas 与风险。这催生了链上清算机器人(Keeper)生态,也带来了 MEV 竞争。
2.4 自动减仓(ADL)
极端行情下若清算无法及时执行,协议会积累坏账。**自动减仓(Auto-Deleveraging, ADL)**是最后手段:协议强制平掉盈利方的一部分仓位,用其利润覆盖穿仓损失。ADL 的排序通常按"盈利最多 + 杠杆最高"优先,因此高杠杆盈利者在极端行情下会被优先强制平仓。
2.5 清算逻辑的实现要点
一个可用的链上清算函数需要同时满足"原子执行"与"激励充分":
function liquidate(address account) external {
Position memory p = positions[account];
require(p.size != 0, "no position");
uint256 equity = _equity(account); // 抵押品 + 未实现盈亏
uint256 notional = _notional(account);
require(equity * 1e18 / notional < MAINT_MARGIN, "not liquidatable");
// 1. 平掉部分或全部仓位
uint256 closeSize = _closeSize(p, equity);
_reducePosition(account, closeSize);
// 2. 罚金归清算人
uint256 penalty = notional * LIQ_PENALTY_BP / 10000;
collateral[msg.sender] += penalty;
// 3. 剩余抵押品退回被清算账户
_settle(account);
}
三个参数决定了清算的安全性:MAINT_MARGIN(太高会频繁误伤)、LIQ_PENALTY_BP(太低没人愿意清算)、closeSize(部分清算可减少对市场的冲击)。
2.6 未平仓量与多空平衡
做市方(如 GMX 的 GLP 池)是所有人的对手方,因此协议必须限制**未平仓量(Open Interest, OI)**的单边敞口:
OI 上限规则:
|longOI - shortOI| <= maxNetExposure // 净敞口约束
longOI <= maxLongOI // 单边上限
shortOI <= maxShortOI
当多头 OI 触顶,开多被拒绝或需支付更高费率。这套约束让做市方的风险可量化——否则一波单边行情就能把池子打穿。
3. 期权:链上定价的难题
3.1 Black-Scholes 在链上的困境
期权定价依赖 Black-Scholes 公式,其核心输入是隐含波动率(Implied Volatility, IV):
C = S·N(d1) - K·e^(-rT)·N(d2)
d1 = [ln(S/K) + (r + σ²/2)T] / (σ√T)
d2 = d1 - σ√T
问题在于:链上无法直接观测 IV。IV 由市场供需决定,而链上没有连续报价的期权市场来发现它。因此链上期权协议通常用两种替代方案:
| 方案 | 做法 | 代表 |
|---|---|---|
| 波动率预言机 | 由做市商提交 IV 曲线 | Lyra(早期) |
| 固定 IV 定价 | 协议硬编码 IV 或按期限设定 | Opyn 的部分产品 |
| AMM 定价 | 用恒定函数曲线自动定价 | 早期 Squeeth |
3.2 期权金库(Option Vault)
面向散户的链上期权多以**金库(Vault)**形态出现,把复杂策略包装成"存入资产、自动收租":
Covered Call 金库:
1. 用户存入 ETH
2. 金库每周卖出 ETH 看涨期权,收取权利金
3. 到期时若 ETH 高于行权价,ETH 被行权,用户拿到 USDC
4. 否则期权作废,权利金归金库(用户)
风险:ETH 大涨时收益被行权价封顶("卖飞")
这类产品的核心卖点是权利金收益,但代价是上行收益被封顶。理解这一点比看 APY 数字重要得多。
3.3 结构化产品与风险分层
更复杂的形态是风险分层(Tranche):把同一个金库的收益拆成"优先级"与"劣后级",优先级拿固定收益,劣后级承担波动换取超额。这在链上通常用两组代币(如 squeeth 与 wSQUEETH)实现,本质是把期权收益做了一次证券化切分。
3.4 Greeks 与链上对冲
做市方卖出期权后会暴露于 Greeks 风险,链上对冲远比 CEX 困难:
| Greek | 含义 | 对冲手段 |
|---|---|---|
| Delta | 标的价格敏感度 | 在现货/永续上反向开仓 |
| Gamma | Delta 的变化率 | 需动态调仓,链上成本高 |
| Vega | 波动率敏感度 | 需另一份期权对冲,链上深度不足 |
| Theta | 时间衰减 | 卖方天然受益,无需对冲 |
链上最大的短板是 Gamma 与 Vega 无法有效对冲:缺乏深度足够的期权市场,做市方只能靠"限制持仓规模 + 高权利金"来补偿无法对冲的风险。这是链上期权权利金普遍高于 CEX 的根本原因。
4. 合成资产:债务池模型
4.1 Synthetix 的债务池
合成资产协议让用户抵押 SNX 铸造 sUSD,再兑换成任意 sAsset(如 sBTC、sETH)。关键在于所有合成资产共享一个债务池:
全局债务 D = Σ(每种 sAsset 的供应量 × 其当前价格)
用户的债务份额 = 其 sUSD 铸造量 / 全局债务
用户盈亏 = 债务份额 × 全局债务 - 其实际持仓价值
这个模型的美妙之处是零滑点兑换:因为所有 sAsset 都由同一个池子背书,sETH → sBTC 只是池内权重变化,不需要对手方。代价是债务会随他人交易而波动——即使你什么都不做,只要别人用 sUSD 买入暴涨的资产,你的债务份额对应的美元价值就会上升(你亏了)。
4.2 抵押率与清算
Synthetix 要求 SNX 抵押率(C-Ratio)维持在 400% 以上(因 SNX 本身波动大):
C-Ratio = 抵押的 SNX 价值 / 债务价值
低于目标 → 需补仓或销毁 sUSD
低于清算线 → 被清算
高抵押率是合成资产安全的前提,但也意味着资本效率极低:400% 抵押才能发行 100% 的合成资产。这也是后来 sUSD 转向更分散抵押品的原因。
4.3 合成资产 vs 稳定币
合成资产与稳定币与 DEX/AMM 机制 在机制上高度重叠(都靠抵押品 + 预言机),差别在目标:稳定币追求锚定法币,合成资产追求追踪任意标的(股票、商品、指数)。因此合成资产面临更严的监管审视,这也是 Mirror 等协议在部分司法辖区退出的原因。
4.4 铸造与兑换的实现流程
合成资产的铸造与兑换都需要在同一笔交易内读取价格并更新债务,否则会留下套利窗口:
function mintSynth(bytes32 synthKey, uint256 amount) external {
uint256 price = oracle.getPrice(synthKey); // 读预言机
uint256 sUSDNeeded = amount * price / 1e18;
require(sUSD.balanceOf(msg.sender) >= sUSDNeeded, "insufficient sUSD");
sUSD.burn(msg.sender, sUSDNeeded); // 销毁 sUSD
synth[synthKey].mint(msg.sender, amount); // 铸造合成资产
_updateDebt(); // 刷新全局债务
}
function exchange(bytes32 from, uint256 amount, bytes32 to) external {
uint256 fromPrice = oracle.getPrice(from);
uint256 toPrice = oracle.getPrice(to);
uint256 usdValue = amount * fromPrice / 1e18;
uint256 outAmount = usdValue * 1e18 / toPrice;
synth[from].burn(msg.sender, amount);
synth[to].mint(msg.sender, outAmount);
_updateDebt();
}
注意 _updateDebt() 必须紧跟价格读取:债务的记账时点与价格时点必须一致,否则旧债务会被新价格重估,产生人为的盈亏错配。
5. 风险管理与预言机攻击
5.1 预言机操纵的三种手法
| 手法 | 机制 | 防御 |
|---|---|---|
| 现货价格操纵 | 在 AMM 大额买卖推高瞬时价 | 用 TWAP 而非现货价 |
| 闪电贷放大 | 借巨资单笔操纵后归还 | 用多源聚合 + 偏离阈值 |
| 延迟套利 | 预言机更新延迟期间下单 | 双预言机交叉校验 |
5.2 TWAP 的正确用法
时间加权平均价(TWAP)能有效抵御单笔操纵,但窗口长度是关键参数:
窗口太短(如 1 分钟)→ 仍可被持续操纵
窗口太长(如 1 小时)→ 价格滞后,极端行情下清算延迟,积累坏账
经验区间:10~30 分钟,并配合偏离熔断
5.3 保险与后备资金
成熟的衍生品协议通常配置三层缓冲:
- 保险基金:从交易手续费中抽取,用于吸收小额穿仓;
- ADL 机制:保险基金耗尽时强制平掉盈利仓;
- 治理兜底:极端情况下由治理决定增发或社会化损失。
5.4 两个值得复盘的事件模式
模式一:预言机延迟套利。若协议在链下价格变动后、预言机更新前允许交易,套利者可以按旧价成交,损失由做市池承担。防御的核心是缩短预言机心跳周期并设置偏离熔断。
模式二:清算级联。一次大幅下跌触发大量清算,清算卖压进一步压低价格,触发更多清算。链上清算缺乏"熔断机制",因此协议通常限制单块最大清算量,或引入渐进式清算(分批平仓)来打断级联。
6. 与链下衍生品的对比
| 维度 | 链上衍生品 | 中心化交易所 |
|---|---|---|
| 托管 | 自托管,合约即规则 | 交易所托管 |
| 透明度 | 链上可验证 | 黑盒 |
| 资金效率 | 低(超额抵押) | 高(跨保证金) |
| 吞吐 | 受链限制 | 极高 |
| 定价 | 预言机 / AMM | 订单簿 |
| 清算 | 公开竞争(MEV) | 内部引擎 |
链上衍生品的核心劣势是资金效率:为了在无信任环境下保证偿付能力,必须超额抵押。这也是为什么大量"链上衍生品"最终走向链下撮合 + 链上结算的混合架构——用中心化组件换性能,用链上结算换透明度。定价模型与希腊字母计算的数学细节,可延伸阅读 量化衍生品定价 。
6.1 混合架构的实际形态
混合架构把职责切成两半:
| 环节 | 放在链下 | 放在链上 |
|---|---|---|
| 订单匹配 | 高性能撮合引擎 | — |
| 持仓与保证金 | 实时风控计算 | 状态根与结算 |
| 清算 | 快速检测与执行 | 最终结算与罚没 |
| 资金托管 | — | 智能合约托管 |
这样既拿到了 CEX 级的吞吐与资金效率,又保留了"资金由合约托管、结算可验证"的链上属性。代价是引入了排序器或运营方的信任假设,需要靠争议期与欺诈证明来约束。
小结
DeFi 衍生品的三类形态共享同一套底层需求:可信价格源、抵押品机制、清算引擎、风险缓冲。永续合约用资金费率锚定现货,期权用金库把复杂策略产品化,合成资产用债务池实现零滑点兑换——每种设计都在"资本效率"与"安全性"之间做不同取舍。
工程上最该盯紧的是三件事:预言机是否可操纵、清算是否原子且激励充分、极端行情下是否有 ADL 或保险基金兜底。任何一个环节缺失,协议都会在下一次剧烈波动中暴露。对协议设计者而言,先想清楚"最坏情况下的偿付路径",再谈收益与杠杆,顺序不能颠倒。
继续阅读
探索更多技术文章
浏览归档,发现更多关于系统设计、工具链和工程实践的内容。