"$2,993,502 drained from a single Solana pool in 150 seconds. 1 whale. 6 bots. 9 transactions. 1 misconfigured Meteora pool that sat for 10 months."
—— @anshu_code, X / 2026-05-06
这条推文讲的,是 Solana 链上一个被忽略了 10 个月的 Meteora DLMM 流动性池 ,在 150 秒内被 6 个套利机器人和一个大户合力"洗"了一遍,搬走 299 万美金。本文用图把它拆开讲清楚。
1. 它属于哪一类套利?
这种玩法的术语叫 Stale Pool Arbitrage(过期池套利) 。靶子是那些 LP 挂上去就不再维护 的集中流动性池——挂的还是几个月前的"老价格",外部市场早已涨飞,池子却毫无觉察。
Raydium / 真实市场
代币 X 已涨到
$1.00
活跃交易 · 价格随市场实时更新
Meteora 旧池子
10 个月没人交易
$0.001
价格停在 LP 创建时的水平
价差 1000×
套利机器人在这里下手
同一种代币,两个池子,价格差 1000 倍。差距在 LP 不维护时会一直存在。
2. 先理解 DLMM:什么是 bin?
Meteora DLMM(Dynamic Liquidity Market Maker)跟 Uniswap v3 思路一样:把价格切成一格一格的"档位",每一档叫 bin 。LP 不是在一条曲线上放钱,而是把代币塞进具体某几个 bin 里。
↓ Active Bin(当前价)
$0.5
$0.6
$0.7
$0.8
$0.9
$1.0
$1.1
$1.2
$1.3
$1.4
$1.5
下方 bins
装 USDC(限价买单)
上方 bins
装 代币 X(限价卖单)
DLMM 池子结构:active bin 把价格分成左右两半。左边的 bin 装 USDC,右边的装代币。
关键三点:
每个 bin 对应一个固定 的兑换价(创建时算好的常数)。
active bin 下方 的 bins 装 Y(USDC),是"低价等买 X 的限价买单"。
active bin 上方 的 bins 装 X(代币),是"高价等卖出的限价卖单"。
3. 为什么 bin 会"老价格存在"?
这是这次事件最反直觉的地方。DLMM 池子的价格不会自动跟着外部市场走 ——它只在有人在本池子做 swap 的时候才移动 active bin。
Day 0
Day 1 ~ 300(无人交易)
Day 300(被发现)
Raydium 真实市价
$0.001
$1.00 ↑↑↑
Meteora 池子 active bin
10 个月一动不动 · 一直停在 $0.001
价差
1000×
外部市场涨了 1000 倍,Meteora 池子的 active bin 却没移动半步——因为没人来这里 swap。
所以"代币涨了为什么 bin 还能低价存在"的答案是:
Solana 链上没有"全局市场价"。 每个 DEX 池子都是独立的小宇宙。Raydium 的价格涨到 $1 跟 Meteora 这个池子毫无机械联系——除非有套利机器人主动来"对齐"它。在它被发现之前,那批挂在 $0.001、$0.0011、$0.005、$0.01 ... 的 X 代币就一直**安静地坐在那儿等买家**。
4. 攻击是怎么发生的(图解)
为了讲清楚机器人具体在干什么,下面把那笔 transaction 拆成 4 个画面:
① 池子初始状态:active bin 在 $0.001,上方塞满便宜 X 代币
$0.001
$0.002
$0.005
$0.01
$0.05
$0.2
$0.5
$1.0
每个紫格里都有大量代币 X,标价远低于市价
② 机器人灌入 USDC,吞掉第一格 bin(按 $0.001 买)
已吃完
代币 X 进入机器人钱包,bin #1 变成 USDC
③ active bin 推到下一格,继续吃(按 $0.002, $0.005, $0.01... 一路买上去)
active bin 一格格往上推,直到逼近真实市价 $1.0
④ 同一笔 transaction 里把吃到的 X 全部发到 Raydium 按 $1.0 卖出
Meteora
买 X · 极便宜
→
Raydium
卖 X · 市价
→
机器人钱包
+ $400K USDC
所有指令打包进 1 笔 tx,
失败回滚 → 永远不会亏
套利的整个动作:低价吃光 → 市价卖出 → 同一笔交易原子完成。
事件时间线
时刻 角色 动作 结果
T+0s 鲸鱼 大额 swap,第一次"打开"这个被遗忘的池子 active bin 开始移动
T+0.4s Bot 1 监听器触发,发起反向套利 $0.16 成本 → $403K 盈利
T+1.2s Bot 2 下一个 block 抢落地 $0.23 成本 → $696K 盈利
T+0~150s Bot 3-6 剩余 bin 慢慢被扫 累计接近 $3M
T+150s — active bin 已逼近 Raydium 市价 套利窗口关闭
5. 技术实现骨架(如果你想做)
扫描全网 Meteora DLMM 池找"stale"标的。 拉所有 DLMM 池的 PDA 账户,用 SDK 读 active bin 价格,跟 Jupiter / Birdeye 拿到的市价对比。差 5-10% 以上的进候选池。这一步可以离线一天扫一次。
实时盯盘候选池。 用 Helius / Triton 的 Geyser gRPC 或 accountSubscribe WebSocket 订阅这些池子账户,状态一变就 push 给你(延迟 50-200ms)。
盈亏模拟。 调用 @meteora-ag/dlmm 模拟从这个池子买 X、再到 Raydium 卖的总收益。扣掉两边手续费、Solana 优先费、Jito tip 后还赚才发交易。
原子 transaction。 把"Meteora 买 + Raydium 卖"两条 swap 指令打到同一笔 tx 里,每个指令都设 min_out_amount,价格滑了整笔回滚。账户多塞不下时用 Address Lookup Table (LUT) 压缩。
抢落地。 普通 RPC 抢不过别人。主流做法:Jito bundle(带 tip)+ Helius Sender / Triton Cascade 同时发出去,哪个先 land 算哪个。tip 大小是 bot 之间最常调的旋钮。
提示: 这种机会真正的瓶颈不在策略本身,而在抢速度 和风险控制 。一旦池子被发现,每个 block 都有 5-20 个机器人在抢同一笔利润。原子 + Jito + 充足的 priority fee 是最低门槛。
6. 一句话总结
Bin 不会自动更新价格 ,DLMM 池子只在被交易时才移动 active bin。LP 创建池子后 10 个月不维护,外部市场暴涨 1000 倍——池子里那些"高于原始 active bin 但远低于市场价"的 bins 就成了静悄悄挂着的「便宜代币堆」,等着第一个发现它的套利机器人一口气全吃光。
这就是 stale pool / stale LP arbitrage。错不在 Meteora 协议,而在 LP 自己。这种漏洞跟 Uniswap v3 在以太坊上遇到的"untracked LP"问题完全一样,只是 Solana 上池子多、LP 散、被发现的速度极快——这次连 1 秒都没撑住。
资料来源:
@anshu_code 主推 ·
前一条引用 ·
Meteora DLMM 文档 · Jupiter / Helius 公开技术资料
本文为根据公开链上数据和推文内容做的技术拆解,不构成投资建议;过期池套利涉及极高的速度竞争和资金风险,复刻前请自行评估。