← 返回文章列表
July 19, 2026
5 分钟阅读

链上清算:Aave 与 Compound 的机制,以及围绕它们的机器人生意

链上清算:Aave 与 Compound 的机制,以及围绕它们的机器人生意
#DeFi
#清算
#Aave
#Compound
#MEV
#Chainlink
#闪电贷
#加密货币

Aave 上的清算是一个持续存在的公开要约:替别人偿还债务,以 5%到 15%的折扣拿走他们的抵押品。这个要约被写进了不可篡改的合约里,不需要任何许可,不需要 KYC,也不需要与协议建立任何关系——只要在仓位越过清算线的那个区块里,成为第一个调用 liquidationCall() 的地址即可。这是加密世界里最纯粹的竞速:奖金精确到分,触发条件(大体上)可预测,唯一的问题是你的基础设施能否比所有人都先到达终点。

本文将从头到尾拆解这台机器:决定仓位何时变得可清算的精确数学公式、为什么 Chainlink 预言机机制让清算变得可预测而非被动反应、一个有竞争力的清算机器人到底由什么组成,以及为什么这场竞速的经济效益已经被压缩到大部分奖励都流向了区块构建者——并且越来越多地回流给协议本身。文章最后,我们会将其与永续合约 DEX(GMX、Hyperliquid)的清算做对比,后者表面相似,实则是完全不同的游戏。

机制:健康因子、阈值、奖励

LTV 与清算阈值

Aave v3 上的每一种抵押资产都带有两个不同的风险参数,混淆它们是借款人最常犯的错误:

  • LTV(贷款价值比)——开仓时你能针对该资产借出的最大比例。以 Aave v3 主网上的 WETH 为例,大约是 80%。
  • 清算阈值——仓位变得可被清算的抵押率水平。对 WETH 而言,大约是 83%。

两者之间的差距是刻意设置的缓冲区:你无法开出一个立即就能被清算的仓位。但这个缓冲区很薄——只需几个百分点的不利价格波动,就能把"已借满"变成"待宰羔羊"。

健康因子将一切汇总成一个数字:

HF=iCiPiLTijDjPjHF = \frac{\sum_i C_i \cdot P_i \cdot LT_i}{\sum_j D_j \cdot P_j}

其中 CiC_i 是抵押资产 ii 的数量,PiP_i 是其预言机价格,LTiLT_i 是其清算阈值,而 DjPjD_j \cdot P_j 是每笔债务仓位的价值。当 HF<1HF < 1 时,任何人都可以发起清算。没有宽限期,没有追加保证金通知,也没有任何提醒。这个条件是惰性求值的——在有人调用该函数之前,什么都不会发生。

健康因子区间示意图:HF 高于 1 为安全区,0.95 到 1 之间为部分清算区,低于 0.95 为完全清算区

清算折扣系数与清算奖励

还有两个参数决定了清算人能拿到什么:

  • 清算折扣系数(close factor)——单次清算可以偿还的债务比例。Aave v3 的默认值是 50%。自 Aave v3.3 起,当 HF<0.95HF < 0.95(即 CLOSE_FACTOR_HF_THRESHOLD)时,或者当仓位的抵押品或债务低于一个粉尘阈值(约 2,000 美元)时,清算折扣系数会跳升到 100%——小仓位不值得用两笔交易来处理,而剩余的粉尘会造成坏账记账问题。
  • 清算奖励(也叫清算罚金,取决于你站在哪一边看)——清算人购买抵押品时享受的折扣。在 Aave 上,这是一个由治理按资产设定的固定价差:WETH 和主流稳定币大约是 5%,波动性较大的长尾抵押品最高可达 10%到 15%。

Compound v2 的运作方式相同,只是常数不同:liquidateBorrow(),清算折扣系数为 50%,清算激励为 8%(被没收的 cToken 抵押品价值是被偿还债务的 1.08 倍)。Compound v3(Comet)将流程重新设计为两步:absorb() 把资不抵债的仓位拉到协议自己的资产负债表上(债务被计入储备金而社会化,抵押品变成协议财产),而 buyCollateral() 则让任何人都能以治理设定的折扣、用基础资产从协议手中购买这些抵押品。实践中,清算人会在一笔交易里同时调用这两个函数——absorb 本身不产生任何收益,利润完全来自打折的 buyCollateral

一个具体仓位的逐步清算

以有代表性的 Aave v3 WETH 参数为例:LTV 80%,清算阈值 83%,清算奖励 5%。

初始设置。 你存入 10 WETH,价格 3,000 美元(共计 30,000 美元抵押品),借出 20,000 USDC。

HF=30,000×0.8320,000=1.245HF = \frac{30{,}000 \times 0.83}{20{,}000} = 1.245

清算价格。 当抵押品价值跌至 20{,}000 / 0.83 = \24{,}096, 时,HF = 1$,也就是 ETH 跌到2,410 美元——回撤 19.7%。听起来很安全。但实际并不安全,因为 ETH 跌 20%就跟家常便饭一样。

下跌发生。 预言机报出 ETH 价格为 2,350 美元。此时抵押品价值为 23,500 美元:

HF=23,500×0.8320,000=0.975HF = \frac{23{,}500 \times 0.83}{20{,}000} = 0.975

0.95<HF<10.95 < HF < 1,因此适用 50%的清算折扣系数。一个清算人替你偿还 10,000 USDC 的债务,并按预言机价格没收价值 10{,}000 \times 1.05 = \10{,}500$ 的抵押品:

10,5002,350=4.468 WETH\frac{10{,}500}{2{,}350} = 4.468 \text{ WETH}

清算人的盈亏。 他们花了 10,000 美元,拿到了价值 10,500 美元的 ETH:一次函数调用带来 500 美元的毛利,这还没算上 gas 费、平仓 ETH 时的兑换成本,以及——最关键的——为了赢得这场竞速而必须支付的竞价成本(下文详述)。

你的盈亏。 债务降至 10,000 美元,抵押品降至 5.532 WETH(13,000 美元)。新的健康因子:

HF=13,000×0.8310,000=1.079HF = \frac{13{,}000 \times 0.83}{10{,}000} = 1.079

请注意两个令人不快的事实。第一,你为这次被迫去杠杆支付了 500 美元的代价——这笔奖励完全来自你的权益。第二,新的 HF 1.079 只是勉强浮在水面上:ETH 再跌 7%,剩下一半仓位就会再次触发清算。固定价差清算恢复的是偿付能力,而非安全性。这种"清算一半、依然脆弱、再次被清算"的模式,正是级联动态背后的微观结构,我们在姊妹文章清算级联作为交易信号中对此有详细讨论。

触发条件:清算是可预测的,而非被动反应的

这里正是区分懂行者与外行的关键所在:在 Aave 和 Compound 上,仓位并不是在市场价格变动时变得可清算的。它们是在预言机更新时变得可清算的。

两个协议都从 Chainlink 数据源读取价格。当以下两个条件之一触发时,以太坊主网上的 Chainlink 数据源就会推送一个新的链上价格:

  • 偏离阈值——链下聚合价格相对上一个链上数值的变动超过设定百分比:主网 ETH/USD 为 0.5%,大多数较小的数据源为 1%到 2%。
  • 心跳间隔——一个最长时间间隔(ETH/USD 为 3,600 秒),不论偏离程度如何,到时就会推送更新。

这带来了一个深远的后果。在两次更新之间,链上价格从结构上就是陈旧的。如果币安上的 ETH 价格下跌了 0.6%,而链上数据源仍显示旧价格,那么每一个精明的参与者都知道,一笔预言机更新交易即将到来,也大致知道新价格会是多少,并且能够——在更新落地之前——精确计算出哪些仓位在更新那一刻会跌破 HF<1HF < 1

时间线示意图:显示链下价格越过偏离阈值、待处理的预言机更新,以及在与更新同一区块内执行的清算

因此,主导策略并不是"监视健康因子并作出反应",而是尾随预言机更新交易(backrun):构建一个交易包,让你的 liquidationCall() 紧跟在 Chainlink 的 transmit 交易之后、在同一个区块内执行。预言机更新就是发令枪,而所有人都能看到裁判正在举枪。这种交易包机制——向区块构建者的私下提交、原子化的顺序保证——与我们在三明治攻击与内存池抢跑一文中讲过的机制完全相同;清算不过是这套机制里最正当的用法。

实践中有两个细节值得注意:

  1. 你甚至不需要在内存池中看到 transmit 交易。 由于链下聚合价格是可观察的(你可以用 CEX 数据源自己跑同样的价格计算),你可以预测一旦偏离超过阈值,更新就必然会发生,并预先为价格上涨和价格下跌两条路径都构建好交易包。
  2. 心跳更新是可预期的流动性事件。 如果某个数据源一小时内偏离都没超过 0.5%,更新也会照常落地——如果价格已经朝着一大堆聚集在 HF=1HF = 1 附近的仓位不利的方向漂移了 0.4%,那么这次"无害"的心跳更新就是触发器。有竞争力的运营者会把"距离上次更新的时间"作为每个数据源的一等信号来追踪。

这种可预测性也是协议最终决定回收这部分价值的原因。2025 年 3 月,Aave 集成了 Chainlink SVR(智能价值回收):参与该机制的数据源的预言机更新会通过 Flashbots MEV-Share 路由,尾随交易的权利被拍卖,中标金额在 Aave DAO(65%)与 Chainlink(35%)之间分配,而不是完全流失给搜索者和构建者。短短几个月内,该系统已经处理了超过 3,200 万美元的清算,并回收了超过 110 万美元,捕获了超过 80%的可归集清算 MEV。可以把这看作一个市场定价信号:公开竞速已经变得如此高效,以至于协议可以直接拍卖终点线。

搭建机器人:四个子系统

一个有竞争力的清算机器人不是一个脚本,而是一整套小型交易公司级别的基础设施。四个子系统,每一个单独看都很简单,但合在一起对延迟极度敏感。

清算机器人架构示意图:索引器、带预言机模拟的健康监控、闪电贷执行合约、向构建者提交交易包

1. 仓位索引

你需要实时维护完整的借款人集合及其余额。启动阶段是一次事件回填——自协议部署以来的每一笔 SupplyBorrowRepayWithdrawLiquidationCall——折算成每个用户当前的余额,之后通过订阅新日志的 websocket 保持实时更新。Aave 的 getUserAccountData(address) 可以直接返回健康因子,但对 10 万以上的借款人逐个、逐区块调用是不现实的;严肃的运营者会在本地复刻协议的记账逻辑(包括利率指数的数学计算,因为债务每秒都在增长),并把 RPC 调用留作校验之用。

2. 带预言机模拟的健康因子监控

核心循环并不是"用当前预言机价格计算 HF",而是"用预言机即将发布的价格计算 HF":

def liquidatable_at(positions, feed, candidate_price):
    """Positions that cross HF < 1 if `feed` updates to candidate_price."""
    out = []
    for pos in positions.borrowers_exposed_to(feed):
        hf = pos.health_factor(price_override={feed: candidate_price})
        if hf < 1.0:
            close_factor = 1.0 if hf < 0.95 else 0.5
            repay = pos.debt_value * close_factor
            seized = repay * (1 + pos.liq_bonus)
            gross = seized - repay          # the prize, pre-costs
            out.append((pos, repay, gross))
    return sorted(out, key=lambda x: -x[2])

deviation = abs(offchain_px - onchain_px) / onchain_px
if deviation > FEED_DEVIATION_THRESHOLD * 0.8:   # update imminent
    targets = liquidatable_at(positions, feed, offchain_px)
    for pos, repay, gross in targets:
        prepare_bundle(pos, repay, max_bid=gross - costs(pos))

按照与 HF=1HF = 1 的接近程度对仓位排序(用触发每个仓位所需的价格作为键值的优先队列),可以让"热门集合"保持较小规模。代码中的 0.8 这个系数就是整场游戏的关键:你希望交易包在更新确定发生之前就已经构建并提交完毕,而不是之后。

3. 闪电贷驱动的执行

清算并不需要你自己有资本——你需要的只是大约 200 毫秒的区块时间。典型的执行合约会原子化地完成以下步骤:

  1. 闪电借入债务资产(Balancer 手续费为 0 个基点,或 Aave 自身约 5 个基点——这与我们在利用闪电贷的原子套利一文中搭建的原语相同)。
  2. 调用 liquidationCall(collateral, debtAsset, user, repayAmount, false)——其中的 false 表示接收底层抵押品而非 aToken。
  3. 将没收来的抵押品在报价最优的场所(Uniswap v3/v4、1inch 路由,或私下成交)兑换回债务资产。
  4. 偿还闪电贷;剩下的部分就是利润,并通过 require(profit >= minProfit) 进行校验,这样一旦模拟结果过时,交易会直接回滚而不是亏本执行。

兑换这一环节正是拙劣机器人的死穴:没收 10,500 美元的一个长尾代币,意味着要吃掉它在 DEX 上的流动性,而平仓时的价格冲击可能超过清算奖励本身。有竞争力的运营者会模拟整个往返过程——包括平仓兑换——并跳过净收益为负的清算,或者持有抵押品并用永续合约对冲,而不是直接在市场上抛售。

4. 交易包提交

最终的交易根本不会经过公开内存池。它会以交易包的形式提交给区块构建者(或者在适用的情况下提交给 SVR/OEV 拍卖),内容大致是:"把我的清算交易紧跟在这笔预言机 transmit 交易之后执行,这是我的小费。"这笔小费就是你在一场"全付而输家一无所获"的拍卖中的出价,对手是所有跑过同样模拟的其他机器人。这就引出了一个令人不太舒服的经济学问题。

竞争格局:奖励究竟流向了哪里

学界的基准研究是 Qin、Zhou、Gamito、Jovanovic 与 Gervais 合著的《DeFi 清算实证研究:激励、风险与不稳定性》(2021),该研究测量了 2019 年 4 月至 2021 年 4 月期间 Aave、Compound、MakerDAO 和 dYdX 上的清算业务:共 28,138 笔清算,总额 8.07 亿美元,清算人合计获利 6,360 万美元。该论文还记录了固定价差清算的结构性低效——这种折扣是一种粗糙的工具,相对于拍卖机制本应收取的价格,经常对借款人造成过度惩罚——并展示了清算人因策略过于简单而在桌面上留下了可观的钱没有拿走。

那个时代的利润不会重演,原因有三,且相互叠加:

gas 拍卖变成了构建者拍卖。 在 2019 到 2020 年,清算人在公开内存池中进行优先 gas 拍卖竞争;赢家超额支付 gas,输家交易回滚,相当一部分奖励留在了清算人手里。MEV-Boost 出现之后,竞争转移到了密封的构建者拍卖中。当 N 个机器人模拟出同一个确定性机会、算出同样的利润数字时,竞价会趋向于把整个奖励拍出去:获胜的交易包通常会把毛利的 90%以上作为小费给构建者/验证者。清算人的利润空间被压缩到只剩下谁的平仓定价略胜一筹、谁的成本略低,或者谁发现了别人没看到的机会。

预言机尾随交易主导一切,而这个空间正在被圈起来。 由于几乎所有货币市场的清算都是由预言机更新触发的,有利可图的策略空间收窄到了一个点上:抢到紧跟在 transmit 之后的那个位置。SVR 一类的机制把这一点正式化——协议拍卖这个位置,并留下大部分收益。搜索者能拿到的份额,从"奖励减去 gas"缩水成"拍卖赢家的边际利润",而竞价会把这个边际利润推向零。

剩下的是长尾市场。 2026 年新入局者现实可行的细分领域包括:构建者市场尚不成熟的链和 L2;奖励参数定价失误、竞争机器人较少的长尾借贷分叉协议;抵押品比较冷门、平仓兑换模拟真正有难度的仓位(靠更优的执行取胜,而非更低的延迟);以及压力事件——MakerDAO 的"黑色星期四"(2020 年 3 月)就是典型案例,当时零出价拍卖让清算人几乎白白拿走了 830 万美元的抵押品,因为当时几乎没有其他人的基础设施还能正常运转——这仍然是"这场竞速在最难运行的时候回报最高"这一规律的经典范例。

诚实地估算一下预期收益:这如今是一门有真实固定成本(节点、与构建者的关系、跨十几个部署的监控)的生意,却要为一个已经被大幅折让的奖池而竞争。它是一种极好的方式,能让你比任何课程都更深入地了解 EVM 内部机制、预言机和 MEV 的运作原理。但作为谋生手段,它是一条艰难的路。

永续合约 DEX 的清算:同一个词,不同的游戏

永续合约 DEX 也有"清算",而且头条数字更大——但其机制、进而其中的机会,在结构上是完全不同的。

GMX(v2): 仓位按预言机价格(Chainlink 低延迟数据流)与流动性池进行交易。当抵押品扣除亏损和费用后跌破维持保证金要求时,清算就会触发,由守护者(keeper)——指定的基础设施运营方,依据预言机签名的价格——来执行,而不是一场公开竞速。这里没有任何公开函数会向第一个调用者支付 5%的奖励;剩余抵押品按协议规则流入资金池。从搜索者的角度看,这里没有什么可赢的。

Hyperliquid: 清算在其 L1 自身的撮合引擎内部运行。当账户权益跌破维持保证金(以混合了 CEX 数据源和订单簿的标记价格来评估,这正是为了抵御上文所述的那种预言机博弈)时,引擎会向订单簿发送清算市价单——大仓位会被拆分成多个小块以限制冲击。如果权益持续下跌到维持保证金的三分之二以下,该仓位会被一个属于 HLP 内部策略的后备清算金库以标记价格接管,自动减仓作为最后一层防线。清算的盈亏归属于 HLP 存款人——"清算人利润"被社会化进了一个任何人都可以加入的金库,而不是按单次事件竞速争夺的。

这对交易者意味着什么:在货币市场上,游戏在于成为清算人——这是一场为固定价差而展开的基础设施竞速。而在永续合约 DEX 上,清算人这个角色是封闭的,于是游戏转变为围绕清算进行交易:清算价格可以从公开仓位中计算出来,被迫产生的成交流会冲击一个可见的订单簿,而聚集在一起的清算价位既是磁石,也是价格波动的燃料。这与 CEX 清算级联可交易背后的逻辑是一样的——我们在资金费率如何吞噬你的杠杆(杠杆成本正是把仓位推向悬崖边缘的力量)和土狗币拉盘出货机制(刻意推动价格进入清算聚集区)两篇文章中都提到过这一动态。将级联作为一种信号的完整处理——探测它们的形成过程、衡量它们的燃料、交易其中的超调——是本系列下一篇文章的主题。

应该记住什么

货币市场清算是加密世界里少有的一切都清晰可见的角落:触发条件是一个公式,奖励是一个由治理设定的常数,发令枪是一笔你能提前看到的预言机交易。这种清晰可见性在 2019 到 2021 年间催生了一门真正开放的生意,而后来——恰恰是因为一切都清晰可见——竞争把这个优势压低到只剩基础设施质量的差异,并把剩余部分拍卖回给了协议。这套机制仍然是必备知识:如果你在链上借款,这套数学就是你的风险模型;如果你围绕被迫成交流进行交易,预言机的更新节奏和清算折扣系数会告诉你何时、以及会有多少;而如果你无论如何还是要搭建这个机器人,至少要清楚这笔钱最终真正流向了哪里。

免责声明:本文提供的信息仅用于教育和参考目的,不构成财务、投资或交易建议。加密货币交易涉及重大损失风险。

Authors

Eugen Soloviov
Eugen Soloviov

Trading-systems engineer

Trading-systems engineer building bots since 2017: cross-exchange arbitrage (connected up to 30 venues), cointegration-based pairs arbitrage across spot and futures, scalping, news and sentiment-driven strategies, trend algorithms, and portfolio management and balancing algorithms. Also builds sub-millisecond order execution, big-data warehouses, backtesting engines, AI agents, and trading interfaces (incl. open-source profitmaker.cc). Stack: JS/TS, Python, Rust/Zig/Go, DevOps, backend, frontend, architecture.

Newsletter

紧跟市场步伐

订阅我们的时事通讯,获取独家 AI 交易见解、市场分析和平台更新。

我们尊重您的隐私。您可以随时退订。