DEX 杠杆交易技术原理

新闻背景:ZEC 突破 1600 美元,Aster DEX 上一地址以 50 倍杠杆做多 140 枚 ZEC, 开仓价值约 22.4 万美元,未实现盈利 7.07 万美元,回报率约 1581%。 这笔仓位背后,是一整套"去中心化杠杆"的技术机器在运转。本文从永续合约出发, 拆解 DEX 实现杠杆交易的技术原理,并以 Aster(Pro / Shield / 1001x 三种模式)为落地案例。

技术栈:Solidity / Rust 智能合约 | 预言机:Pyth + Chainlink + Binance Oracle | 链:Aster Chain(L1)、BNB Chain、Arbitrum、Ethereum、Solana、SUI
参考: Aster 官方文档、 Margin、 Liquidations、 Funding Rate、 Mark Price

1. 概述:DEX 如何加杠杆

"杠杆"的本质是借入资金放大仓位。在中心化交易所(CEX),平台就是你的对手方和信贷方, 用一张数据库里的借条即可实现 100 倍杠杆。而 DEX 没有中心化主体,要做到同样的事,必须用代码回答三个问题:

  1. 谁做对手盘?——你的多单,谁愿意做空?(订单簿里的其他交易者 / LP 流动性池 / 协议金库)
  2. 用什么价?——链上没有天然价格,靠预言机(Oracle)把外部市场价格喂进来。
  3. 怎么强平?——没有中心化风控团队,清算必须由智能合约按规则自动执行,且要能兜底穿仓亏损。

这三个问题,分别对应三种主流技术架构(见第 7 章),以及永续合约、保证金、标记价、资金费率、清算瀑布五大机制(见第 2 章)。

1.1 DEX 杠杆 vs 中心化杠杆

维度中心化交易所(CEX)去中心化交易所(DEX)
资产托管 平台托管,用户仅有账面余额 用户自托管,资金在智能合约(非托管)
对手盘 / 流动性 平台内部撮合或做市商 订单簿撮合、LP 流动性池或预言机定价
价格来源 平台内部最新成交价 多源预言机加权指数价 + 标记价
强平执行 风控团队人工 / 系统 智能合约按保证金率自动触发
穿仓兜底 平台风险储备金 保险基金 + 自动减仓(ADL)
透明度 黑盒 合约开源可审计,链上可验证
永续合约(Perpetual Contract):没有到期日的期货合约,通过"资金费率"锚定现货价格,是 DEX 杠杆交易最主要的载体。
非托管(Non-custodial):用户始终掌握私钥与资产,协议不能挪用,只能按合约逻辑操作。
对手盘(Counterparty):与你方向相反、承接你风险敞口的一方。DEX 里可能是别的交易者,也可能是 LP 池。

2. 通用原理

不论哪种 DEX 架构,杠杆交易都建立在同一套机制之上:保证金账户决定能开多大仓, 标记价格决定盈亏如何计算,资金费率让永续价格锚定现货, 清算在亏损触及底线时强制平仓,保险基金 / ADL兜住极端穿仓。

2.1 保证金与杠杆

杠杆倍数决定"用多少自有资金控制多大的仓位"。开仓所需的最低资金称为初始保证金:

初始保证金 = (仓位数量 × 标记价格) / 杠杆倍数

例如 10 倍杠杆下,100 美元保证金可开 1000 美元仓位。价格每涨 1%,保证金收益率约为 10%(正反皆然)。 那笔 ZEC 仓位:50 倍杠杆、140 枚、价格约 1600 美元,仓位价值 22.4 万美元, 对应保证金约 224000 / 50 = 4480 美元——价格只需反向波动约 2% 就会触及强平。

保证金账户有两种模式:

模式说明风险特征
交叉保证金 Cross 全账户保证金共享,所有仓位共同承担盈亏 盈利可对冲亏损,降低单一仓位被强平概率;但全部余额都暴露在风险中
逐仓保证金 Isolated 每个仓位独立分配保证金 单仓位最多亏掉分配给它的保证金,不牵连其他仓位

维持保证金(Maintenance Margin)是维持仓位不被强平所需的最低保证金, 它取决于仓位总规模而非杠杆倍数,并按规模分档(tier)——仓位越大,落入越高档位, 维持保证金率越高。这被称为保证金分档。

初始保证金(Initial Margin):开仓时必须冻结的最低资金。
维持保证金(Maintenance Margin):维持仓位所需的最低保证金,低于它就会被强平。
保证金率(Margin Ratio):已用保证金 / 持仓价值,越高越危险(接近 100% 即强平)。
全仓 / 逐仓(Cross / Isolated):保证金的两种隔离方式。

2.2 标记价格:防止"插针式"清算

链上最新成交价(Last Price)容易被瞬时大单操纵。如果直接用它触发强平, 攻击者可以故意砸出一根"针"把别人的仓位清算掉。因此 DEX 引入标记价格(Mark Price): 它由多来源指数价与资金费基准计算得出,更平滑、更抗操纵,专门用于计算未实现盈亏与触发清算。

Aster 的标记价取三个价格的中位数(median):

Price 1 = 指数价 × (1 + 资金费率 × (距下次资金费小时数 / 8))
Price 2 = 指数价 + 5 分钟均值 (买一 + 卖一)/2 − 指数价
Contract Price = 当前合约价
Mark Price = median(Price 1, Price 2, Contract Price)

其保护机制包括:单交易所偏离中位数 > 5% 则权重归零;多家偏离则改用中位数;行情源 3 秒不更新即剔除。指数价(Price Index)则按成交量加权聚合 Binance、HTX、Kraken 等现货市场。

指数价(Index Price):多家现货交易所的成交量加权均价,代表"公允现货价"。
标记价(Mark Price):抗操纵的参考价,用于计算未实现盈亏与强平。
最新成交价(Last Price):合约最近一笔成交价,用于计算已实现盈亏。

2.3 资金费率:让永续价格锚定现货

永续合约没有到期日,价格可能长期偏离现货。资金费率(Funding Rate)就是纠偏机制: 每隔一段时间(如 8 小时/4 小时),多头与空头之间互相支付一笔费用。 当合约价高于现货(正费率),多头付给空头,激励做空、抑制做多,把价格拉回。

资金费率 F = [平均溢价指数 P + clamp(利率 − P, 0.05%, −0.05%)] ÷ (8 / N)
资金费额 = 仓位规模 × 标记价 × 资金费率

其中溢价指数 P 反映合约相对现货的偏离,N 为资金费结算间隔。 关键点:平台不赚这笔钱,它是多空之间的点对点转移。 资金费直接从保证金账户扣除,若余额不足会侵蚀仓位保证金,从而影响清算价。

对高杠杆的影响:50 倍杠杆下,即使是很小的资金费也可能显著侵蚀本就单薄的保证金, 使清算价悄然逼近。持仓过夜的高杠杆仓位,必须把资金费计入成本。
资金费率(Funding Rate):多空之间定期支付的费率,用于锚定永续与现货价格。
溢价指数(Premium Index):合约冲击价与指数价的偏离程度。
冲击价(Impact Bid/Ask Price):按订单簿深度吃单一定名义价值后的均价。

2.4 清算:从触发到破产

强制清算的触发条件是账户保证金跌破维持保证金:

保证金 = 初始抵押 + 已实现盈亏 + 未实现盈亏 < 维持保证金 → 触发强平

Aster 的强平流程是一个阶梯式减仓过程,而非"一刀砍光":

  1. 撤销该账户全部挂单;
  2. 提交一笔 IOC(Immediate-or-Cancel)订单减仓,能成交多少算多少,其余立即取消;
  3. 若减仓后保证金恢复安全,则清算停止;
  4. 若仍不足,剩余仓位按破产价(Bankruptcy Price)平掉,仓位交由保险基金接管,账户标记为破产;
  5. 若账户余额为负,由保险基金覆盖亏损并支付费用。
小仓位因保证金缓冲薄、通常无法享受分档部分清算,更容易被一次性全额强平; 大仓位则可借保证金分档逐步减仓。这正是 50 倍这类高杠杆仓位极为脆弱的原因。
强平(Forced Liquidation):保证金不足时由系统强制减仓。
破产价(Bankruptcy Price):保证金恰好归零的价格;低于它即为穿仓。
IOC(Immediate-or-Cancel):立即成交可成交部分,剩余立即取消的订单类型。
保险基金(Insurance Fund):由清算费与历史盈余积累,用于兜底穿仓亏损。
ADL 自动减仓(Auto-Deleveraging):保险基金不足时,强制平掉对手方中盈利最高的仓位。

3. 用例图

先看"谁"在用这套系统、各自能做什么。参与方包括交易者、流动性提供者、清算人(机器人)、预言机,以及协议自身的兜底模块。

PlantUML diagram
用例图(Use Case Diagram)——DEX 杠杆交易系统的参与方与核心用例

4. 开仓活动图

交易者下一次"50x 做多"的点击,背后要经过杠杆设置、保证金校验、取价、冻结、成交、计费、记录清算价等一系列步骤。下面这张活动图给出主流程,其中取价与保证金校验是杠杆交易的命门。

PlantUML diagram
活动图(Activity Diagram)——从下单到持仓的完整开仓主流程

核心计算(以伪代码示意):

// 开仓前风控校验(伪代码)
function openPosition(symbol, side, size, leverage, marginMode) {
    uint markPrice = oracle.getMarkPrice(symbol);        // 标记价,非最新成交价
    uint imr       = 1e18 / leverage;                    // 初始保证金率
    uint initMargin = size * markPrice * imr / 1e18;     // 初始保证金

    require(account.availableMargin() >= initMargin, "insufficient margin");

    account.lock(initMargin);                            // 冻结保证金
    uint fillPrice = mode == ORDERBOOK
        ? matchingEngine.match(symbol, side, size)       // 订单簿撮合
        : ammPool.swap(symbol, side, size);              // AMM/预言机成交,LP 为对手盘

    position.entryPrice    = fillPrice;
    position.liquidationPrice = computeLiqPrice(side, size, fillPrice, imr);
    account.chargeFee(size * fillPrice * takerFee);      // 扣除开仓手续费
}

5. 清算时序图

杠杆交易最惊险的时刻是清算。下图展示一次清算从预言机触发、到风险引擎判定、再到 IOC 减仓、保险基金兜底、乃至 ADL 的全链路时序。

PlantUML diagram
时序图(Sequence Diagram)——强制清算全链路
风险引擎(Risk Engine):持续监控每个账户/仓位的保证金率,判定是否触发清算。
清算引擎(Liquidation Engine):执行减仓、计算破产价、与保险基金结算。
部分清算(Partial Liquidation):只平掉一部分仓位以恢复保证金安全,常见于大仓位。

6. 仓位状态机

一个仓位从开仓到结算,会经历"持仓→(部分清算)→破产→已平仓"等状态。理解状态迁移,才能理解为什么高杠杆仓位如此脆弱。

PlantUML diagram
状态机图(State Machine Diagram)——仓位生命周期

7. 三种技术架构

"谁做对手盘、用什么价"这两个问题的答案,把 DEX 杠杆交易分成三种主流架构。

架构对手盘 / 定价代表Aster 对应特点
链下订单簿 + 链上结算 其他交易者,价格由买卖盘决定 dYdX、Hyperliquid Pro 模式 流动性深、滑点小;依赖高性能撮合引擎
Peer-to-Pool(LP 池做对手盘) 流动性池,价格由 AMM 曲线 / 预言机决定 GMX Shield 模式、1001x(ALP 池) 无需撮合、即时有对手盘;LP 承担交易者盈亏
Oracle / vAMM 预言机定价或虚拟 AMM 曲线 Perpetual Protocol 1001x(Pyth + Chainlink) 纯链上、免充值;依赖预言机抗操纵能力

7.1 链下订单簿(Aster Pro)

订单簿模式最接近传统 CEX:链下撮合引擎高速匹配买卖单,成交结果与保证金结算上链。 用户自托管资产,但撮合在链下完成以保证性能。Aster Pro 提供深度流动性与高级订单类型, 标记价、资金费、清算均按前文机制执行。

7.2 Peer-to-Pool(Shield 模式 / 1001x)

没有订单簿,交易者直接与流动性池(LP Pool)对赌。以 Aster 的 ALP 为例: 用户铸造 ALP 注入池子,成为所有永续交易的做市对手方;池子的净值(NAV)随交易盈亏、手续费、 资金费、清算收益而涨跌。交易者盈利 = LP 池亏损,反之亦然。

因此 Peer-to-Pool 的资金费率目的不同——它用来平衡多空持仓比例、降低 LP 风险:

资金费率 = clamp( Floor, |(多头 OI − 空头 OI) × 每小时费率| / max(多头 OI, 空头 OI), Cap )
LP 池(Liquidity Pool):由流动性提供者注入的资金池,充当交易者的对手盘。
NAV(Net Asset Value):池子净值,随做市盈亏变动。
OI 未平仓量(Open Interest):市场上未平仓合约的总量,多空 OI 失衡会加大 LP 风险。

7.3 Oracle / 免充值模式(1001x)

1001x 模式把杠杆推到极致(BTCUSD 最高 1001 倍),无需充值即可直接用链上流动性交易。 其价格完全依赖预言机:以 Pyth 为主源,Chainlink 交叉校验 (偏离超过 1% 即触发熔断使交易失败),Pyth 不支持的交易对则回退到 Binance Oracle。 交易在请求价的同时向预言机取价,经链上验证后两个区块内完成。

预言机(Oracle):把链下价格安全地送上链的基础设施。
熔断(Circuit Breaker):当价格源之间偏离过大时暂停交易,防止错误定价。
vAMM(虚拟 AMM):不持有真实资产、仅用数学曲线定价的虚拟自动做市商。

8. Aster 案例复盘(50x ZEC)

回到新闻:ZEC 突破 1600 美元,地址以 50 倍杠杆做多 140 枚 ZEC。

项目数值 / 计算
仓位数量140 ZEC
开仓价格(约)1600 USD
仓位名义价值140 × 1600 = 224,000 USD(即新闻"开仓价值 22.4 万美元")
杠杆倍数50x
初始保证金(约)224,000 / 50 = 4,480 USD
未实现盈利70,700 USD
回报率(ROE)70,700 / 4,480 ≈ 1578% ≈ 1581%(新闻值)
价格波动幅度约 +31.6%(70,700 / 224,000),价格从 1600 涨至约 2105 USD
强平敏感度约 1/50 = 2% 的反向波动即可从满仓触及清算区(未计维持保证金与资金费)

这笔仓位的技术含义:它把 4,480 美元的保证金当成"风险预算", 换取 22.4 万美元的 ZEC 敞口。价格只要上涨约 2%,保证金就翻倍; 但下跌约 2% 时,标记价就会逼近清算线。正是这种非对称性,让 50x 既可能带来 1581% 的回报,也可能在几分钟内被强平归零。

复盘要点:该地址的盈利并非"账面数字随便涨",而是由标记价实时计算、 经资金费逐期结算、由风险引擎持续盯市的结果。若 ZEC 在高位剧烈震荡,即使最终看对方向, 也可能先被标记价的短时波动强平出场。

9. 部署图

从宏观部署看,DEX 杠杆交易横跨"客户端—链下服务—链上合约—外部预言机"四层。链下负责性能(撮合、风控),链上负责资产与最终结算,预言机负责价格输入。

PlantUML diagram
部署图(Deployment Diagram)——系统跨链、链下、预言机的物理部署

10. 组件图

把系统拆开看组件:交易层负责吃单与定价,账户层负责保证金与风控,价格层负责取价,清算层负责兜底。组件之间为单向依赖,价格层是全局的风险输入。

PlantUML diagram
组件图(Component Diagram)——四大子系统与内部模块

11. 核心合约类图

最后落到最细的结构:合约与实体的类图。核心关系是保证金账户持有多个仓位,风险引擎依据预言机价格评估仓位,清算引擎在触发时减仓并向保险基金结算。

PlantUML diagram
类图(Class Diagram)——核心合约与数据实体

12. 风险与速查

12.1 公式速查

项目公式
初始保证金(仓位数量 × 标记价) / 杠杆倍数
账户保证金初始抵押 + 已实现盈亏 + 未实现盈亏
清算条件保证金 < 维持保证金
资金费率[平均溢价指数 + clamp(利率 − 溢价指数, ±0.05%)] ÷ (8 / 结算间隔)
资金费额仓位规模 × 标记价 × 资金费率
标记价median(Price1, Price2, Contract Price)
回报率 ROE未实现盈利 / 初始保证金

12.2 主要风险

一句话总结:DEX 用"永续合约 + 保证金 + 标记价预言机 + 资金费 + 自动清算瀑布" 在无中心主体的条件下复刻了杠杆交易;交易者拿到的是放大后的收益与风险, 而协议用保险基金与 ADL 守住不穿仓的底线。