Solana MEV 中继:它到底做什么,以及怎么选

在没有公共 mempool 的链上,MEV 中继实际防的是什么、私密提交和 bundle 有什么区别,以及把生产流量接进去之前该问哪些问题。

BoltTx Team··17 min read
solanamev中继交易上链套利夹子攻击

"用个 MEV 中继"是给 Solana 上跑机器人的人最常见的建议之一。但这句话具体指什么,讲清楚的人少得多 —— 而且这个词至少被用来指三种不同的东西。

如果你正准备把生产流量接进去,值得先搞清楚自己买的是哪一种。

先说清楚:Solana 上到底什么在暴露

Solana 没有公共 mempool。这一条事实就让威胁模型和以太坊完全不同,而很多 MEV 建议是从那边直接搬过来的,没做调整。

在有公共 mempool 的链上,你待确认的交易躺在一个共享池子里,谁都能读。机器人盯着这个池子,发现一笔有利可图的 swap,就在你前后夹两笔。这就是夹子攻击,而暴露窗口是你待在池子里的全部时间。

Solana 上没有这样的池子。你的交易从 RPC 直接送往接下来负责出块的验证节点。那暴露从哪来?

两个地方,而且必须分开看:

你的提交路径。 从你的进程到出块方之间,每一跳都是一个能看到交易字节的参与方。不是一个公开的池子,而是具体的中间环节。如果其中任何一环自己也在跑策略、或者在卖订单流,你的意图在落块之前就已经泄露了。

出块方本身。 验证节点对自己产出的区块有排序权,它能看到即将收进去的全部内容,并决定顺序。

★中继能解决第一个,第二个谁都没法完全消除。★ 任何声称能做到的说法都是过度承诺。

如果你已经知道自己需要哪一种,免费领个 BoltTx key 改一行就能拿来做基准对比。

被叫做"MEV 中继"的三种东西

一、私密提交路径

交易从你这里送到出块方,中间不经过会检查它的参与方。没有共享池,不卖订单流,中间环节尽量少。

它防什么: 防止任何"本来能在传输途中看到你交易"的人抢跑或夹你。

它不防什么: 验证节点自己的排序。

这是最常见的含义,而且对大多数交易场景来说,这就是真正重要的那一种。

二、Bundle(打包)提交

把若干笔交易作为一个原子组提交 —— 要么全部进同一个区块,要么全都不进。收录权靠 tip 竞价。

它解决什么: 多腿策略,而且部分成交比完全不成交更糟的那种。一个两跳套利如果只成交了一条腿,你手上就多了个不想要的仓位。

它的代价: 速度上吃亏、复杂度上升。而如果你的策略就是一笔 swap,bundle 意义不大。

三、排序保证

有些服务承诺"区块内的位置"。这类措辞要仔细读。★区块内的排序最终是出块方说了算★ —— 服务能影响它,但除非它自己就是出块方,否则保证不了。

怎么判断自己需要哪一种

一条简短的决策路径:

单笔交易的策略 —— 一次 swap、一次狙击、一笔指令集单一的清算。你要的是私密提交路径。bundle 解决的是你没有的问题。

多腿原子策略 —— 跨两个池子的套利,或者任何"部分成交即亏损"的场景。bundle 就是为此而造的机制。

任何高频场景 —— 提交路径起决定作用。每一跳都是延迟,而且交易在落块之前每一跳都在暴露。

读取、索引、用 getBalance 展示余额 —— 完全不适用,没有什么需要保护的。

大多数对比都跳过的那个问题

服务商都会公布延迟数字。但几乎没人公布真正决定你结果的那件事:★你的交易在"被接收"和"进区块"之间,到底经过了谁。★

值得直接问的:

从提交到收录之间,有哪些方能看到这笔交易? 不是问"是不是私密的",而是要具体的名单。答不出具体环节的服务商,卖给你的是一句口号,却管它叫架构。

订单流会不会被出售或共享? 这应该是个一句话就能回答的问题。

服务在任何环节托管资金吗? 对提交路径来说答案应该是"不"。你在本地签名,中继只负责搬字节。

网络拥堵时会怎样? 路径之间的差别就在这里显现。轻负载时所有路径表现都一样。

tip 模型是什么,它在竞争什么? 竞争收录的 tip,和购买访问权的费用,是两回事。要搞清楚你付的是哪一种。

怎么验证它真的有用

MEV 保护有个尴尬的特点:生效时什么都不会发生。这让"付了钱但其实没用"变得很容易。

有两件事是你真的能测的:

实际滑点 vs 报价滑点。 在相同交易对、相同规模上,长期记录"报价价格"和"实际成交价"的差。夹子在这里的表现是:在那些看起来最有利可图的 swap 上,持续出现负向差值

// 每笔成交都把两边都记下来,然后对比改路由前后的分布。
// 单笔说明不了任何问题;几百笔才能看出差值有没有移动。
log({
  pair,
  sizeIn,
  quotedOut,        // 报价说的
  actualOut,        // 实际拿到的
  slippageBps: Math.round(((quotedOut - actualOut) / quotedOut) * 10_000),
  route,            // 走的哪条路
});

按网络状况分桶的上链率。 ★一条保护得很好但上不了链的路径,比不保护更糟★ —— 你损失的不是几个基点,而是整笔交易。按拥堵程度分桶对比:

const recent = await connection.getRecentPrioritizationFees();
const fees = recent.map((r) => r.prioritizationFee).sort((a, b) => a - b);
const medianFee = fees[Math.floor(fees.length / 2)] ?? 0;

metrics.record("submission", {
  landed: didItLand,
  route,
  bucket: medianFee > 50_000 ? "busy" : "calm",
});

★两项都至少跑一周,而且要覆盖两种网络状况。★ 只测一个拥堵的下午,什么都证明不了。

每一份中继宣传背后的那个取舍

保护和速度是互相拉扯的。

中间环节更少的路径,既更私密通常也更快。但一条"为了私密而绕开正常流程"的路径会增加跳数,而每一跳都是时间。一个输掉竞价的 bundle,根本不会落块。

对于机会窗口只有一两个 slot 的策略,★"没上链"和"被夹了"都是亏损★ —— 而且前者通常亏得更多,因为你连仓位都没拿到。

所以"保护得最狠"是个错误的目标。正确的目标是:在一条不泄露意图的路径上稳定上链 —— 这是另一个优化问题。

上链应该是什么水平

我们投递节点上的真实交易:中位确认 336 毫秒 —— 不到一个 slot。

如果一条"受保护"的路径明显比这个慢,那么保护的代价已经超过它省下的了。

BoltTx 在这里的位置

我们只做交易提交这一件事,整个产品就是这个。不做索引,不做解析历史,不做 NFT 元数据。

提交走我们自建的四区域投递节点,带 SWQoS 路由。不暴露公共 mempool,所以交易在落块之前,传输途中是观察不到的。你在本地签名 —— 我们不托管资金、不代签、不修改交易内容。

关于 tip:你把它带在交易里,从自己的钱包链上支付。交易 revert 的话 tip 跟着一起 revert —— 这是 Solana 原子交易的机制决定的。只有到达链上的交易才计费。

免费领 API key,没有月费:

// 选离你机器人最近的区域
const connection = new Connection("https://la.bolttx.io/?api-key=YOUR_KEY");

然后拿上面那套滑点和上链率的方法,和你现在用的做对比。★那个对比比任何服务商给的数字都值钱,包括我们的。★

常见问题

Solana 的 MEV 中继是什么? 一种把你签好名的交易送往出块方的服务,走的路径会限制谁能在传输途中看到它。Solana 没有公共 mempool,所以它要处理的暴露是提交路径上的中间环节,而不是一个共享的待确认池。

Solana 没有 mempool,那还有 MEV 吗? 有,但形态不同。没有公共池,暴露就来自你提交路径上的参与方,以及出块方在自己构建的区块里的排序权。这是一个比 mempool 链更窄的攻击面,不是不存在。

MEV 中继和 bundle 服务有什么区别? 中继把单笔交易走私密路径送出去。bundle 服务把若干笔作为原子组提交,要么一起进同一个区块、要么都不进,靠 tip 竞争收录。bundle 是给多腿策略用的,单笔 swap 不需要它。

中继能保证我永远不被夹吗? 它能消除提交路径上的暴露,但控制不了出块方在自己区块内的排序决定。任何承诺"完全消除"的服务,说的是它管不到的事。

单笔 swap 需要 MEV 保护吗? 如果这笔 swap 大到值得被夹,私密提交路径就值得有。如果你只是小额操作、或者在没有夹子利润空间的冷门交易对上,那意义不大。

怎么知道自己是不是被夹了? 在相同交易对、相同规模上,长期对比报价成交量和实际成交量。在你最有利可图的那批 swap 上持续出现负向差值,就是它的特征。单笔糟糕的成交是噪音,分布整体偏移才是证据。

MEV 保护会拖慢我的交易吗? 取决于路径。中间环节更少的路径可以既更私密又更快;而为了私密而增加跳数的路径要付延迟,输掉竞价的 bundle 则根本不落块。要把上链率和保护放在一起测,别想当然地假设一定有取舍。

crypto 里的 bundler 是什么? 一种把多笔交易打包做原子执行的服务 —— 它们要么一起被收进同一个区块,要么都不进。Solana 上主要用于多腿套利,以及任何"部分成交比完全不成交更糟"的策略。

清算该用 MEV 中继吗? 清算竞争激烈而且有利可图,所以它是被盯的目标,私密提交路径确实有帮助。但上链速度至少同样重要 —— 一笔受保护但比别人晚到的交易,一分钱也赚不到。

低频机器人值得上 MEV 保护吗? 先拿你自己的成交数据算一下。如果你的实际滑点已经很接近报价,那能挽回的空间本来就不大。保护的价值,和你的交易明面上携带多少价值成正比。

只做小额交易需要中继吗? 多半不需要。夹子只有在超过某个规模阈值时才有利可图,而这个阈值取决于池子深度。低于它,攻击者从你这笔交易里榨不出什么。

中继挂了我的交易会怎样? 完全取决于你有没有做兜底。中继在你的发送路径上是一个单点 —— 所以把"连不上"当成一个路由决策而不是一次故障:退回你平时的提交路径,并接受这一笔交易少了那层保护。

中继能和 priority fee 一起用吗? 能,而且通常应该。它们解决不同的问题:中继限制谁能观察到你的交易,priority fee 影响验证节点拿到之后怎么排序。

中继和普通 RPC 有什么区别? 通用 RPC 用同一套设施服务读取、历史、订阅和发送。中继只承载签好名的交易 —— 正是这种专一,让它的路由和质押权重能为一件事而存在。

中继能防止验证节点重排我的交易吗? 不能。区块内的排序是出块方的决定。中继限制的是"通往出块方那条路上"的暴露,那是问题的另一部分。

延伸阅读

返回博客列表