DEX攻击的解剖 - Hyperliquid JELLY案例及永续合约的未来保障

  • thogiti
  • 发布于 3天前
  • 阅读 465

本文深入探讨了Hyperliquid平台在2025年3月27日遇到的JELLY代币流动性危机,分析了HLP如何在被迫接管一笔有毒的JELLY空头后遭受1200万美元的纸面损失。文章分两部分,第一部分详述了流动性危机发生的原因与机制,第二部分则提出了一系列协议改进建议,旨在提升平台对于类似金融攻击的抵御能力。

引言

当一个单一交易者的“银河大脑(galaxy-brain)”套利针对一个去中心化交易所时会发生什么?2025年3月27日,Hyperliquid痛苦地发现了这个问题。对 JELLY 代币的一个被操控的空头头寸使其2.3亿美元的流动性池(HLP)遭遇了1200万美元的纸面损失——几乎使整个平台不稳定。这个两部分的深入分析详细解释了 HLP 如何成为一个不情愿的有毒空头的持有者(A 部分),并探讨了需要进行的数学和关键协议升级,以防止未来发生此类“金融战争”(B 部分)。

术语说明:Hyperliquid 的文档 有时会将“清算者金库”视为HLP策略的一部分。实际上,如果标准清算尝试失败,该头寸会被备兑清算,最终被金库继承(因此也就是HLP)。


A 部分:为什么 HLP 继承了一个有毒的 JELLY 空头并面临 1200 万美元的纸面损失

HLP-JELLY-liquidation-summary

JELLY-liquidation

图:Hyperliquid JELLY 清算摘要,来源: @gauthamzzz

永续清算如何工作(以及为什么 HLP 最终承担损失)

在许多中心化交易所,清算的头寸会在市场上关闭或由保险基金吸收。然而,Hyperliquid 采用了多步骤的方法:

  1. 通过订单簿进行初步清算

    • 当账户的权益低于维持保证金时,Hyperliquid 会发送市场订单尝试关闭整个头寸(如果高于某些阈值,则是关闭部分头寸)。
    • 部分清算阈值:对于名义超过10万美元的头寸,只有20%的头寸在第一块清算中被清算,随后进行30秒的冷却。如果这次部分清算足以恢复保证金要求,则交易者仍控制任何剩余抵押品/头寸。
  2. 支撑清算(清算者金库)

    • 如果账户的权益低于维持保证金的三分之二(意味着第一次尝试无法在订单簿上清算足够大小),Hyperliquid 会强行将剩余头寸转移到清算者金库,实际上这是 HLP 策略的一部分。
    • 此时,用户不再保留该保证金或头寸。在交叉保证金中,所有交叉头寸都会转移;在隔离保证金中,只有该隔离头寸会转移。

虽然这个分层系统(部分清算 + 支撑清算)旨在为用户尽可能多地保存抵押品,但任何剩余的有毒头寸最终都会转给 HLP,如果市场无法在没有滑点的情况下吸收它。这确保了协议不会造成级联市场崩溃,而是将风险集中在池上。

形式上,如果一个空头头寸被清算:

$$ \frac{\text{抵押品} + \text{未实现的盈亏}}{\text{名义头寸规模}} \;<\; \text{维持保证金要求}。 $$

如果损失超过抵押品,以至于未能满足保证金要求,协议会触发清算尝试。如果这些尝试失败(或仅部分成功),HLP/清算者金库将吸收剩余部分。

一旦在 Hyperliquid 上触发这一条件,协议有效地说:“HLP,你现在持有这个。”

关键要点:

  • 多步骤清算:Hyperliquid 首先尝试在订单簿上关闭头寸(可能是部分清算)。
  • 支撑继承:如果通过书面清算无法恢复保证金,清算者金库(HLP 的一部分)最终会持有剩余头寸。
  • 集中风险:虽然这种设计避免了市场崩溃,但将不良头寸的最终责任归于 HLP。

为什么 600 万美元的空头变成了超过 1200 万美元的纸面损失

在本例中,攻击者故意在不到一小时内将 JELLY 的现货价格提升了超过 400%。空头头寸贬值速度快于其抵押品的支持,导致强制清算。即使协议在订单簿上部分清算了一个部分,头寸也足够大,以至于账户最终低于所需维持保证金的三分之二。

此时,空头被强制转移到清算者金库,也就是 HLP,现在有效地持有这个空头。随着 JELLY 价格的持续攀升,市值损失也在攀升。观察者注意到,某一点时,未实现的损失达到了1200万美元,如果价格继续上涨,可能会造成进一步损失。

资金费率——当期货价格高于现货或市场显著看涨时,通常转为正值(意味着空头支付多头)——给 HLP 增加了另一层成本。Hyperliquid 的资金上限为每小时4%,这虽然“较不激进”,但如果价格和情绪保持高涨,仍可能是相当可观的。

关键要点:

  • 标记为市场损失:一旦HLP持有空头,JELLY 每次的价格上涨都会放大未实现的损失。
  • 正资金:迅速上升的现货价格通常会导致空头必须支付的高资费,进一步侵蚀 HLP 的头寸。

清算流程图

以下是简化事件顺序的序列图:

sequenceDiagram
    participant Trader
    participant SpotMarket as 现货市场
    participant Oracle as 预言机
    participant HyperliquidPerp as Hyperliquid 永续合约
    participant HLP as HLP(清算者金库)

    Trader->>SpotMarket: 大量购买 $JELLY(价格上涨)
    SpotMarket->>Oracle: 报告更新后的 $JELLY 价格
    Oracle->>HyperliquidPerp: 发送更高的现货价格数据
    HyperliquidPerp->>Trader: 空头保证金低于维持水平
    HyperliquidPerp->>HyperliquidPerp: 尝试在订单簿上部分清算
    HyperliquidPerp->>HLP: 如果不足,触发对金库的支撑清算
    HLP->>HLP: HLP 继承空头,并面临不断增加的损失

B 部分:更深层的机制 + 协议重设计

永续期货价格追踪现货背后的数学

永续期货旨在通过两种核心机制来追踪资产的现货价格:

  1. 预言机提供当前的现货价格 ($S_t$)。
  2. 资金费率激励交易者保持永续价格与现货价格一致。

预言机更新

令 $S_t$ 为时刻 $t$ 的现货价格,由预言机报告。如果某个资产(如 JELLY)在外部市场上发生了大买入,价格馈送捕获到更高的价格并将其传递给永续合约交易所。现货市场的低流动性可能使这些价格变动大而突然。

Hyperliquid 的文档指出,它通过采用多个 CEX 现货价格的加权中位数来计算每个预言机价格,权重根据交易所流动性进行调整。由于 JELLY 相对较小,单一场所的任何大买入都可能在成交量不大时改变该中位数。

资金费率公式

资金费率定期在多头和空头之间转移价值,以纠正与现货的任何偏差。简化的公式为:

$$ F_t = \Bigl(\frac{M_t - S_t}{S_t}\Bigr) \times (\text{调整}) + (\text{基准利率}), $$

其中 $M_t$ 是永续的标记价格,$S_t$ 是预言机的现货价格。如果 $M_t$ 高于 $S_t$,则多头支付空头;如果 $M_t$ 低于 $S_t$,则空头支付多头。在一个快速上升的市场中,空头通常付费——这增加了它们的损失。

Hyperliquid 的资金费率

Hyperliquid 的资金费率公式,每8小时计算一次,但以每小时计算的八分之一支付,公式为:

$$ F = \text{平均溢价指数 (}P\text{)} + \text{限值}\Bigl(\text{利率} - P,\,-0.0005,\,0.0005\Bigr), $$

其中:

  • 溢价指数 ($P$):测量永续的影响价格相对于现货预言机价格的高低。
  • 利率:每8小时约为0.01%(即每小时约为0.00125%,代表借入美元与持有加密货币的成本)。
  • 限值:将“利率 - 溢价”项限制在±0.05%(±0.0005 的十进制),在8小时范围内进行约束(如果进一步细分,每小时为±0.0000625),防止其波动过大。
  • 每小时资金支付:在计算8小时的利率后,按8进行划分以计算每小时付款。一个单独的4%每小时的总体上限确保利率在单个小时内永远不会超过该数值。

如果永续交易远高于现货,溢价指数为正,多头最终付费。如果低于,空头付款。就 JELLY 而言,现货迅速飙升,因此永续合约也可能快速上涨,迫使空头端支付。

让我们通过一个例子来计算资金费率:

  • 现货价格 ($S_t$) = 2000 美元
  • 影响竞标价格 = 2080美元(以一定名义金额在竞标侧出售的平均执行价格)
  • 溢价率
    $$ \text{溢价指数} = \frac{\text{影响竞标价格}}{\text{现货价格}} - 1 = \frac{2080}{2000} - 1 = 0.04 \quad (\text{或 }4\%). $$
  • 利率 = 每8小时 0.01%。

    • 每小时为 0.00125%(0.0000125 的十进制)。

      1. 计算(利率 - 溢价)
        $$ 0.00125\% - 4\% = -3.99875\%. $$ 由于 -3.99875% 小于8小时维度的-0.05%限制,我们将其限制为-0.05%(或-0.0005 的十进制),在8小时区间内进行。除以8以计算每小时利率得到-0.0005 / 8 = -0.0000625(-0.00625%)每小时;但为了与文档的简单方式保持一致,我们先执行8小时的计算,然后记录最终的每小时利率:
    • 限制差异 = -0.05%(8小时)。

  • 计算8小时的资金费率
    $$ F_{8h} = 4\% + (-0.05\%) = 3.95\%. $$ 所以每小时的资金费率大约为 $3.95\% / 8 \approx 0.494\%$ 每小时——低于 Hyperliquid 的4%每小时上限,因此无需再次限制。
  • 计算支付
    • 假设你持有20个合约的多头头寸,每个合约代表1 ETH。
    • 头寸规模 = 20 ETH,每个头寸价格为2000美元(预言机)。
    • 名义金额 = 20 × 2000美元 = 40000美元。
    • 在每小时结束时,资金 = 名义 × (每小时利率)。
    • 每小时利率 ≈ 0.494% → 0.00494 的十进制。
    • 资金支付 ≈ 40000美元 × 0.00494 = 198美元。

解读:因为永续合约的交易远高于现货(4%的溢价),多头负担费用。在这每小时里,你大约需要支付198美元给空头。如果溢价在8小时内保持持续高位,你可能 总共支付约1584美元。然而,如果新空头卖方进场(或多头关闭),那么溢价可能缩小,从而减少未来的资金费率。


防止类似攻击:建议的协议变更

以下是四项提议修改协议以减少重复情形发生的可能性:

对低市值资产施加严格的OI(Open Interest:未平仓合约)和杠杆上限

open interest : OI 通常是指 交易所上未平仓的多头和空头期货合约的总数

一个600万美元的空头在2000万美元的代币上是极不成比例的。限制总未平仓合约(OI)和基于流动性或市值的最大杠杆确保单一头寸不会危害整个系统。

例如:

  • 如果代币市值低于X百万美元或日交易量低于Y,那么平台允许的最大总未平仓合约有限制,最大杠杆被严格限制。你可以设定一种启发式“总未平仓合约不能超过该代币流通市值的10–20%”。

因此,没有人可以在2000万美元市值的代币上开设600万美元的空头。

增加熔断器

当价格在短时间内移动超过设定百分比时,或当资金费率超过阈值时,自动暂停新交易/清算可以防止失控的清算。“冷静”期允许预言机和市场确认价格变动是否合法或已被操控。

例如:

  • 价格熔断:如果代币在15分钟内移动50%,冻结新交易/清算,持续短暂冷却期(例如10分钟)。
  • 资金费率熔断:如果资金费率尝试超过1%每小时,暂停以便市场重新平衡。

这确保协议有时间去验证新的价格是否真实——尤其在低市值代币中至关重要。

加强预言机保护

加权中位数很好,但异常值检测或时间平滑可以减少流动性差代币的剧烈价格波动影响。

例如:

  • 异常值检测:如果一个来源为 JELLY 显示0.50美元,但其他资料平均在0.01美元附近,那么忽略异常值0.50美元。
  • 时间平滑:使用 EMA(指数移动平均)使得价格不能在协议内瞬间从0.01美元跃升至0.50美元,从而为检测或者熔断机制激活留出空间。

精炼支撑清算机制

基于拍卖的清算或更细致的部分清算可以在 HLP 强行继承大规模有毒头寸之前分散风险。

例如:

  • 允许以更小的额度进行部分清算,将其推向订单簿(如果有的话)。
  • 或允许其他交易者竞标接管头寸——即拍卖机制。
  • 这样可以分散风险,而不是让 HLP 立即背负一个巨大的空头。

三层安全网

在实践中,我们应考虑一种混合方法,以获得更好的安全保障。例如,我们可以设计一种具有以下特性的混合机制:

  1. 自适应 OI上限和杠杆
    例如:“单个头寸不得超过该代币流通市值的5%。”对于市值2000万的 JELLY,这单独就能阻止600万的空头。

  2. 熔断器
    当价格或资金费率波动异常高时停止交易。

  3. 预言机和清算逻辑升级
    集成时间平滑、多轮清算,或采用拍卖方法以防止一次性重压 HLP。


结论

Hyperliquid 被迫接管大规模 JELLY 空头,证明了薄弱的流动性、大额头寸和支撑清算如何对流动性池产生系统性风险。通过理解:

  • 为什么 HLP 最终持有了空头(在部分/书面清算失败后剩余的),
  • 如何损失升级(价格迅速上涨 + 高资金费用放大了空头的下行),
  • 预言机和资金背后的数学(确保永续跟随现货,同时也让空头面临巨大的持续成本),
  • 以及哪些设计优化(OI 上限、熔断器、更佳的预言机平滑方法、先进的清算机制)可以缓解这些风险,

我们看到了一份明确的蓝图,以防止未来针对低流动性代币的“金融战争”利用。


最后行动项目

  • 上限和杠杆:将未平仓合约/杠杆限制直接与代币流动性或市值绑定。
  • 熔断器:在极端价格或资金变动时自动暂停交易,留出再评估的时间。
  • 预言机安全:加入异常值检测、时间平滑,可能包括链上数据以抵抗操控。
  • 加强清算机制:扩展部分清算或采用基于拍卖的方法,以避免单次灾难性转移至 HLP。

通过采取这些措施,Hyperliquid(和其他 perp DEX)可以在资本效率与健全风险管理之间取得平衡——确保一次精心策划的突击不会转化为数百万美元的损失,损害协议的流动性提供者。

参考文献:

  • 原文链接: github.com/thogiti/thogi...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
thogiti
thogiti
https://thogiti.github.io/