HomeU news5000 万 USDT 换回 3.5 万美元 AAVE:灾难如何发生?我们又该怪谁?

5000 万 USDT 换回 3.5 万美元 AAVE:灾难如何发生?我们又该怪谁?

2026-03-14
一笔价值5040万美元的USDT抵押品轮换交易,因路由系统缺陷被导向流动性极低的SushiSwap AAVE/WETH池,导致仅换得3.59万美元等值AAVE。事件非黑客攻击,而是CoW协议报价逻辑薄弱、Aave前端适配器缺陷及多层风控缺失共同引发的系统性路由失败。
5000 万 USDT 换回 3.5 万美元 AAVE:灾难如何发生?我们又该怪谁?

单看事件标题,大概率会误以为这是一起漏洞利用攻击。

有人将价值 5040 万美元的 USDT,最终仅兑换到价值 3.59 万美元的 AAVE。

我初次听闻此事时,着实震惊。因此,我彻头彻尾地梳理了整个事件:交易追踪、求解器路径、合约调用、历史储备、结算数据、适配器流程、Aave 界面代码、CoW 闪电贷 SDK,以及判断报价是否“合理”的路由代码。

这不是一次黑客攻击。

公链没有出问题,出问题的是路由。

在我看来,轻描淡写将此事归为单纯的“用户操作失误”,并非客观严谨的态度。诚然,用户完成了订单签名,但整套软件系统,竟允许一笔涉及近 5000 万美元抵押品轮换的操作,完成报价、签名、路由规划直至最终执行,且全部流程指向一个仅持有约 331 枚 AAVE 的低流动性池。这本该是完全不可能发生的事,至少理应在结算环节启动前,就被系统强硬拦截拒绝。

本次异常交易哈希为:0x9fa9feab3c1989a33424728c23e6de07a40a26a98ff7ff5139f3492ce430801f,于 2026 年 3 月 12 日在以太坊主网区块高度 24643151 处确认,交易索引为 1,消耗 Gas 量 3780570 单位,交易执行成功。订单归属钱包地址为 0x98b9 开头,实际执行交易的求解器(交易发送方)地址为 0x3980 开头,在 CoW 竞赛数据中标记为 tsolver。

首先要明白,这不是一次简单的钱包层面的 USDT 到 AAVE 兑换。卖出代币是 aEthUSDT,即 Aave 平台上生息的 USDT 存款凭证。买入代币是 aEthAAVE,即 Aave 平台上生息的 AAVE 存款凭证。所以,这实际上是一次通过 CoW 协议的结算系统及其闪电贷适配器流程进行的 Aave 抵押品轮换。

交易前,该钱包持有约 50,432,693.075254 个 aEthUSDT 和 0 个 aEthAAVE。交易后,它仅剩 4.980399 个 aEthUSDT,并收到了 327.241335505966487788 个 aEthAAVE。实际上,该钱包卖出了几乎全部头寸。

元数据更清晰地表明,路由在执行前就已经是“有毒”的。订单来自 aave-v3-interface-collateral-swap 流程。CoW 的 API 将其显示为已签名的卖出订单,而应用元数据则将其标记为使用 121 个基点智能滑点的市价式抵押品互换。签名的卖出金额是 50,432,688.41618 个 aEthUSDT。签名的最低买入金额是 324.949260918413591035 个 aEthAAVE。实际结算支付了 327.241335505966487788 个 aEthAAVE。

这是一个极其重要的细节。这笔订单本就没期望获得成千上万的 AAVE,然后在中途不知何故被摧毁。它在构建之初,就围绕着三百多个 AAVE 这样的结果。

一旦你跟随交易追踪,整个过程便残酷地直截了当。

顶层资金流转核心依托 CoW 协议 0x9008 开头的 GPv2Settlement 结算合约。首先,0x60bf 开头的 HooksTrampoline 合约完成 aEthUSDT 授权操作,允许 CoW 金库中继器无需单独交易授权,即可提取用户资产;随后,0xc92e 开头的 GPv2VaultRelayer 合约从用户钱包提取 50432688.41618 枚 aEthUSDT 进入结算流程,截至此环节,所有操作均符合正常逻辑。

结算合约随后将 aEthUSDT 操作权限授予 0xd524 开头的未开源辅助合约,并通过函数选择器 0x494b3137 发起调用;该辅助合约再将执行权限转交至 0x699c 开头的未开源执行器合约,至此,异常交易路由的全貌彻底暴露。

首个有效调用指向 0x87870 开头的 Aave 资金池合约,通过 withdraw 函数(选择器 0x69328dec)销毁 aEthUSDT,赎回底层原生 USDT;随后路由跳转至 0x4e68 开头的 Uniswap V3 深度 USDT/WETH 交易池,将全部 50432688.41618 枚 USDT 兑换为 17957.810805702142342238 枚 WETH。

这一阶段的交易完全正常:兑换汇率约为 2808.4 USDT 兑换 1 枚 WETH,符合当时市场行情,无流动性不足问题,无计算偏差,第一跳交易链路不存在任何异常。

问题出在第二跳,一旦你看到流动性储备,剩下的故事就不可避免了。

执行器获取 17957.810805702142342238 枚 WETH 后,将全部资金转入 0xd75ea151a61d06868e31f8988d28dfe5e9df57b4 地址的 SushiSwap V2 AAVE/WETH 交易池。

我核查了该交易池在异常交易发生前一刻(区块高度 24643150)的历史流动性储备数据,池内仅持有:

331.631982538108027323 枚 AAVE、17.653276196397688066 枚 WETH

这并非数据录入错误,而是铁一般的事实。

这条交易路由,将近 17958 枚 WETH 全部注入一个仅储备 17.65 枚 WETH、对应 AAVE 总库存仅 331.63 枚的微型交易池,输入的 WETH 体量竟是池内 WETH 储备的约 1017 倍。

这绝非“滑点偏高”或“流动性略薄”的常规问题,而是一条极端荒谬的市价单执行路径,相当于强迫一个体量极小的恒定乘积 AMM 池,承接一笔规模超出自身数千倍的巨额交易。

AMM 交易池按照既定算法执行了操作,近乎耗尽了池内全部 AAVE 储备。

SushiSwap 交易对触发核心 Swap 交换事件:执行器转入 17957.810805702142342238 枚 WETH,仅换回 331.305315608938235428 枚 AAVE。交易完成后,该池剩余流动性约为:

0.326666929169791895 枚 AAVE、17975.464081898540030304 枚 WETH

说白了,池中约 99.9% 的 AAVE 库存在一跳中被抽干。

根据交易前的储备,池子隐含的 AAVE 价格约为 149.50 美元。用户的实际执行价格约为 154,114.66 USDT 兑 1 AAVE。这比交易前的现货价格差了超过 1000 倍。

接着,这些 AAVE 被供应回 Aave 资金池,使用选择器 0x617ba037,即 supply(address,uint256,address,uint16)。结果是新铸造的 aEthAAVE 被送回结算合约。结算合约最终将 327.241335505966487788 个 aEthAAVE 转给了用户。大约 4.06398010297174764 个 aEthAAVE 作为相对于用户支付的盈余,留在了结算合约中。

所以,结算并没有突然将一个好的执行结果扭曲成一个坏结果。它只是最终敲定了路由早已产生的结果。

这是关键点,值得明确说出: 灾难性的结果在路由执行前就已经“预设”在其中了。

路由内嵌的辅助合约调用数据中,买入端目标金额约为 331.272185078031026739 枚,用户签名约定的最低买入金额为 324.949260918413591035 枚,实际结算金额为 327.241335505966487788 枚,所有核心数值在结算前,就锁定在三百余枚 AAVE 的量级。

这条路由生来就是坏的。

答案是:系统每一层校验机制,都在核查错误的维度。

却几乎没有核心层级校验交易路由在经济层面是否具备合理性,这是机制失守的核心根源。

首个明显的代码异常点,出现在 Aave 界面的 CoW 适配器报价流程中:原本用于在请求报价时,附带适配器专属应用数据的函数,被直接强制禁用。

5000 万 USDT 换回 3.5 万美元 AAVE:灾难如何发生?我们又该怪谁?

来源:和

并没有附上实际发布订单时会附加的闪电贷和钩子元数据

只要报价 Gas 费用为正、输出金额非零

5000 万 USDT 换回 3.5 万美元 AAVE:灾难如何发生?我们又该怪谁?

来源:

这是一个令人震惊的薄弱

这是本次事件的核心漏洞。

第三个问题,在于 Uniswap V2 风格的流动性池建模方式:代码仅采用标准恒定乘积算法,仅拒绝零储备、数值下溢、储备溢出等数学层面的不可能情况,不做经济层面的可行性校验。

5000 万 USDT 换回 3.5 万美元 AAVE:灾难如何发生?我们又该怪谁?

来源:和

该段代码不会判断流动性池体量是否足以承接对应路由交易,仅判断交换操作在数学上是否有效。因此,即便一个仅储备 331 枚 AAVE 的微型池,也会被判定为承接 17957 枚 WETH 买入请求的有效场所,只因恒定乘积算法能算出非零结果,却完全无视这个结果会带来毁灭性的资产损耗。

随后,闪电贷 SDK 直接将这份失效报价,固化到订单与钩子的执行载荷中,没有做任何二次风险拦截。

5000 万 USDT 换回 3.5 万美元 AAVE:灾难如何发生?我们又该怪谁?

接着:

5000 万 USDT 换回 3.5 万美元 AAVE:灾难如何发生?我们又该怪谁?

来源:和

并没有

没有真正保护用户

5000 万 USDT 换回 3.5 万美元 AAVE:灾难如何发生?我们又该怪谁?

来源:

如果报价本身就已经是胡言乱语,订单仍然可以通过。

不是一个硬性的熔断开关

5000 万 USDT 换回 3.5 万美元 AAVE:灾难如何发生?我们又该怪谁?

一旦用户勾选了复选框,障碍就被清除了:

5000 万 USDT 换回 3.5 万美元 AAVE:灾难如何发生?我们又该怪谁?

来源:和

因此,即便这笔交易会近乎清空全部资产价值,系统也仅将其判定为需用户确认的操作,而非系统必须强硬拒绝的高危交易,预警机制完全失去了风险拦截作用。

基于以上所有机制失守,我绝不认同“这只是用户犯傻”的敷衍结论。用户确实完成了签名,但整套软件系统有无数次机会拦截这场灾难,却每一层都仅做了基础校验,判定“非零、可执行、已签名”后直接放行,最终酿成恶果。

这一环节至关重要,直接排除了大量错误猜测:aave-v3-interface-collateral-swap 对应的 Aave 官方界面流程,会在 useSwapOrderAmounts.ts 文件第 139 行,结合报价、网络费用、合作方费用、闪电贷费用,计算滑点调整后的买入金额;第 331 行将其转换为 buyAmountBigInt 数值;随后在 CollateralSwapActionsViaCoWAdapters.tsx 文件第 191 行,对该金额完成精准签名。

后续适配器合约会在 AaveV3BaseAdapter.sol 文件第 141 行,校验签名订单字段与存储数值完全匹配;CoW 结算合约会在 GPv2Settlement.sol 文件第 337 行,强制执行签名约定的限额规则。因此,链上执行结果并未超出签名订单允许的范围,用户实际收到的资产,甚至高于签名约定的最低限额。

这足以证明:灾难发生在结算环节之前,而非结算过程中,路由的致命缺陷早已注定结局。

同一区块内的下一笔交易(哈希 0x45388b0f 开头),针对被破坏的 SushiSwap AAVE/WETH 池完成了回跑套利。异常交易用巨量 WETH 塞满池子、抽干绝大部分 AAVE 后,套利者立即将 AAVE 卖回池中,收割流动性失衡带来的超额价值。

本次回跑套利共提取约 17929.770158685933 枚 WETH,随后向该区块构建者支付约 13087.73 枚 ETH,向套利执行地址支付约 4824.31 枚 ETH。

用户损失的全部经济价值,最终几乎瞬间转化为同一区块内的 MEV 套利收益与区块构建者收益。

另外核查区块级时间序可以确认:交易前无人恶意操纵 SushiSwap 交易池设套诱骗用户,该 AAVE/WETH 交易对首次被触及,就是本次异常交易(交易索引 1);紧接着的下一笔交易(交易索引 2),就针对本次交易造成的价格扭曲完成首次回跑;交易索引 3 也在市场修复过程中触及该交易对。时间线清晰印证:本次异常交易制造了极端扭曲价格,后续交易直接收割了这份扭曲收益。

没有

没有

没有

真正的系统性失败,发生在更上层的路由与风控层面:

主要责任方为 CoW 协议的路由、报价与求解器模块

次要责任方为 Aave 前端界面

这是一次交易路由质量与风控护栏的极端性失败,直接将一笔合法合规的抵押品轮换操作,演变成了一场毁灭性的资产损失事件。

Live Chat
Customer Support Team

Just Now

Dear LBank User

Our online customer service system is currently experiencing connection issues. We are working actively to resolve the problem, but at this time we cannot provide an exact recovery timeline. We sincerely apologize for any inconvenience this may cause.

If you need assistance, please contact us via email and we will reply as soon as possible.

Thank you for your understanding and patience.

LBank Customer Support Team