今天群里看到图 1,有人用 22 万 usdc 只换出了 5272usdt.
我来分析一下整个流程。
首先打开链接,发现是区块前 3 笔。说明这肯定是一个 MEV 交易.用户被夹了,那么用户为什么会被夹呢?根本原因是什么呢?可以看图 1,
amountOutMinimum:0 说明用户交易以后,可以接受的最少 usdt 数量是 0。这种交易发在链上,就是给bot 送钱啊。(这边给各位 p 小将一个建议,在 eth 类似的链上,滑点设置需谨慎.)
再来分析黑客是如何做到的(图 234)原文在评论区。




https://etherscan.io/txs?block=22029771 前 3 笔交易。中间是用户的,两边是夹子
mev 交易
https://etherscan.io/tx/0xde5aa0c1521d97a48496f10bb8aff364e490c8fc3a4f5d9d587538f15d80cd36
https://etherscan.io/tx/0x3e72f3ad09d87149ce372e5f35eeb8012fed05f52bef45fb85fdacc0057a943c
用户交易
https://etherscan.io/tx/0xee9fcd2b9996e96b642cb4cda47fc140f98fdaf07ee02657743d4bfcc4670106
夹子操作
- 701.46 个 ETH 存入 AAVE
- 从 AAVE贷出 1,092,116 个 USDC
- 先从univ3 池子闪电贷出 175,813,66USDT
- 通过 curve 池子把上面的 usdt 换成 usdc. 17556155个
- 加上自己刚才借的 1092116 个一起,还给 univ3 池子. 还了 18648272 个。
- 3-5 步相当于 通过18648272个 usdc 交换了175,813,66 usdt。需要特别注意的是,这时候univ3 池子里的 usdt 和 usdc 还有多少呢?

usdc:34695550.244187
usdt:227875.126597
用户操作
因为池子里的 usdc,usdt 已经失衡了
这时候用户交易 220,806.389669usdc,换出了5,272.998058 usdt
用户亏 215534
用户的滑点设置竟然=0
可以看下面的params.amountOutMinimum,0 的话表示交换以后,最少拿到 0 个😳
特别像是自己手写的交换逻辑,应该没有哪个前端这么傻吧…

夹子操作
- 从 univ3 池子闪电贷出 18600117 usdc
- 通过 curve 把 17303136 usdc 换成 17321265 usdt
- 17321265 usdt 还给 univ3
还完剩下 18600117-17303136=1296981 usdc
- 继续还 aave 的 1092116 usdc,拿回 701.46 eth(这是自己的本金)
- 这时候还剩 204864 usdc(利润),直接换成 105 个 eth
- 100 个 ETH 给 MEV,剩下的留给自己
总结
- 用户设置 兑换后最少拿到 0 个
- mev 先把池子里的 usdt 大部分兑换走,池子里全是 usdc
- 用户 usdc 换 usdt
- mev 反向操作交换回去.
graph TD;
A[存入 701.46 ETH 到 AAVE] –> B[从 AAVE 贷出 1,092,116 USDC]
subgraph Uniswap v3 操作
C[从 Uniswap v3 闪电贷 17,581,366 USDT]
C --> D[通过 Curve 交换 USDT 为 17,556,155 USDC]
D --> E[加上借来的 1,092,116 USDC 归还 Uniswap v3]
E --> F[归还 18,648,272 USDC]
F --> G[总体来说:通过 18,648,272 USDC 换出 17,581,366 USDT]
end
B --> C
G --> H[V3池子USDC/USDT失衡
USDC:1604万 到 3469万
USDT:1780万 到 22 万
池子里基本上都是 USDC]
H --> I[用户交易 220,806 USDC 换 5,272 USDT]
I --> J[用户亏损 215,534 USDC]
subgraph 夹子操作
K[从 Uniswap v3 闪电贷 18,600,117 USDC]
K --> L[通过 Curve 交换 17,303,136 USDC 为 17,321,265 USDT]
L --> M[归还 17,321,265 USDT 给 Uniswap v3]
M --> N[剩余 1,296,981 USDC]
end
N --> O[还 AAVE 1,092,116 USDC 取回 701.46 ETH]
O --> P[剩余 204,864 USDC 转换为 105 ETH]
P --> Q[100 ETH 给 MEV,剩余 5 ETH 归自己]
+ There are no comments
Add yours