所有文章
指南

三明治攻击是什么?Solana 的 MEV 防护

三明治攻击在兑换显示成功的同时抽走几美元。它怎么发生、1,000 美元的例子、滑点该收到多紧,以及 2026 年新出的防护。

16 分钟阅读 J Tools Editorial
这篇指南配的编辑插画,主题是 Solana 上的三明治攻击和 MEV 防护

兑换显示成功,走势图也没动。可是到账的代币,比屏幕一开始报的数少了一截。这就是三明治攻击。

据公开报道的数字,三明治攻击的机器人从普通交易者手上抽走的钱大约是 5 亿美元。一次几美元,走势图一直很安静。

三明治攻击是什么

兑换就是把一种代币换成另一种。你买,价格就往上挪一点,池子的定价机制本来就是这样。

三明治攻击是机器人把自己的买卖夹在你这一单的前后,把差价拿走。整套动作发生在同一个区块里。区块就是网络一起确认的那一批交易。

  1. 机器人抢在你前面买进同一个代币,把价格顶高。
  2. 你的单子接着成交,成交在被顶高之后的价位。
  3. 机器人立刻卖出,把你这一单推上去的那段差价收走。

你是中间的馅,机器人是上下两片面包。链上写着成功,界面变绿,一来一回又在同一瞬间回到原位,走势图看起来毫发无损。

MEV 是什么,没有公开内存池为什么还会被夹

推动三明治攻击的那套东西有名字,叫 MEV(最大可提取价值):机器人靠调换区块里交易的顺序、或者往中间插一笔,把钱挤出来。谁决定顺序,谁就靠顺序赚钱。

以太坊有一个公开的候车室(内存池),待确认的交易都排在那里,谁都能看。Solana 没有这个地方,单子从连接服务商(负责把你的交易转发给网络的服务)直接送到下一个出块方(正在打包下一个区块的那台电脑)手上。那机器人为什么还是看得见?漏了两个口子。

  • 一部分连接服务商会把待确认的交易,悄悄递给合作的机器人网络。
  • 出块方手上待处理的交易队列,跟它合作的机器人读得到。

所以 Solana 上没有一间透明的候车室,只有两扇一直开着的侧门。这类攻击大多走 Jito:把一组交易封成一个包(bundle),带上小费按固定顺序发出去,出块方要么全收,要么全丢。被拿来作恶的这套机制,待会儿也是你自己的护甲。

不到一秒钟发生了什么

假设你拿 1,000 美元的 SOL 去换一个小模因币,价格保护放得很宽,然后点了确认。

  • 机器人看到你这笔买单,抢先零点几秒买进,把价格推高大约 5%。
  • 你的单子成交在这个更差的价位,到手的币比报价时少。
  • 机器人随后卖出,大概带走 40 美元。

钱包里写着兑换成功。这 40 美元的损失,除非把预期价位和实际成交价摆在一起比,否则看不见。一天几千笔堆起来,就是开头那个数字。

滑点是免费的第一道防线

这篇只记一件事的话,记滑点:它是你愿意接受的价格最大变差幅度,超过就自动取消这笔兑换。相当于交代一句「3 美元买,超过 3.3 美元就算了」。

滑点能挡住三明治攻击,道理很直接:上限收紧,机器人能拿走的钱就封了顶。它一旦把价格顶过你的上限,你这一单直接取消,它手里就剩一堆为了设局买进的代币。

账算下来是你占便宜:取消只付一点点网络费,被夹一次付的是这一单的百分之几。取消不是故障,是防线起了作用:一笔交易要么整笔成功,要么整笔回滚(见 Solana 官方文档对交易的说明)。

滑点收到多紧,看池子有多深。池子就是兑换时对手方的那两堆代币,越深价格越推不动,越浅越跳。

池子类型例子建议滑点
深池、大池SOL 与 USDC 的交易对0.5% 到 1%
中等池子站稳脚跟的中型代币1% 到 2%
浅池、新池刚出生的模因币2% 到 3%

滑点写成 50% 这种数字,等于喊「多少钱我都要」,盯着的机器人全会扑上来。反过来,给一个波动很大的模因币写 0.1%,正常的抖动就会让单子一直取消,你被挡在交易之外,也谈不上受保护。上限按池子挑。

滑点作用示意图:左边是一直开着的流道,右边是在水滴后面关上的单向阀,表示收紧上限能限制被抽走的金额

逐个场景怎么定,写在Solana 滑点设置:这个数字怎么定里。

避开三明治攻击的四个步骤

不用变成专家。普通人做普通的单子,从上往下做这四件事就够了。

  1. 收紧滑点。按上面那张表挑。小单子光靠这一条,大部分攻击就不成立。
  2. 用路由干净的兑换工具。Solana 兑换工具走 Jupiter 取路径,签名前给出当前报价,还会跑链上执行检查。
  3. 单子别开太大,大的拆开。大多数三明治攻击的机器人不碰大约 500 到 1,000 美元以下的单子,网络费加小费就把利润吃光了。多钱包批量兑换把同一笔兑换按固定顺序分到几个钱包,一笔大单变成每份都低于机器人门槛的小份。手续费以工具页面上的当前数字为准。
  4. 先看池子。筹码集中在少数几个钱包的代币更好操纵。用持币快照工具看清楚谁拿着多少,再决定这一单开多大。

对新手最安心的一条:机器人基本不理小单子。50 美元或者 100 美元的兑换,滑点写得像样,基本在雷达底下。

2026 年有什么变化

今年防守这一侧也在动,有三样东西正在改变 Solana 三明治攻击的力量对比。

  • Jito DontFront。把你的交易强制钉在 bundle 的最前面,抢在你前面买进这种最简单的手法就行不通了。范围更大的夹击套路,它没法全部挡住。
  • JitoBAM(加密内存池)。交易一直加密到执行的那一刻,只在专用的安全硬件里打开。读不到的东西,机器人没法围着它设局。现在正在铺开。
  • Alpenglow 升级。这项升级还在推进,目标是把交易变成不可撤销的那一刻(最终确认)压到大约 150 毫秒,比以前快大约 100 倍。窗口越短,机器人靠的那段缝隙越窄。

没有哪一个是万能按钮。防护是分层的,要哪一层,看单子多大、池子多深。bundle 到底保证什么,写在Jito bundle 保证什么里;全收还是全丢的规则在 Jito 的官方文档。

你的情况合适的防护
500 美元以下的小单收紧滑点通常就够了
1,000 美元以上的单笔收紧滑点,再拆到几个钱包
浅池里的新模因币先看池子,再写 2% 到 3%
协同进场(进阶)自己发一个封好的 bundle

进阶:发币方和多钱包玩家

下面这一段是给跑代币发行、同时调度很多钱包的人看的。普通交易者可以跳过。

发币时想让自己的几个钱包干净地进场,走公开路径会给狙击机器人留空子。狙击机器人就是代币一上线、开盘那一刻抢着买的机器人。这类机器人怎么动手,写在狙击机器人怎么运作里。

自己打包示意图:一排钱包汇进同一个封好的包,方括号外面是一个被挡住的机器人剪影

自己发一个封好的 bundle,顺序就定死了,外面的机器人插不进来。打包交易工具支持 Pump.fun、PumpSwap 和 Raydium,用 Jito bundle 从几个钱包买进,整包落在同一个区块里。一个 bundle 最多装五笔交易,Packed 模式下几个钱包共用一笔交易,所以一个 bundle 能装下多少笔买入,取决于平台。手续费以工具页面上的当前数字为准。卖出这一侧用的是同一个思路。

看着像保护、其实不是的做法

  • 关掉预检。预检是发送前的那道安全检查。关掉它,交易不会因此对机器人隐身,只是少了一道护栏。
  • 凌晨三点交易。机器人不睡觉,是 24 小时跑着的软件。
  • 「无三明治攻击」的招牌。宣传语不是保证。说不清楚它怎么起作用,就当装饰。
  • 什么都写 0.1%。深池上没问题,浅的模因币上只会一直失败。

三明治攻击、抢跑和尾随的区别

这三个词经常混着用,可机器人的动作不一样。看一个工具到底防住哪一种时,这个区别有用。

  • 抢跑是抢在你前面的一笔买单,吃你这一单推上去的那段。
  • 尾随是紧跟在你后面的一笔,捡你这一单打开的价差,多数时候不直接从你身上拿。
  • 三明治攻击是两件事一起做:前面顶价,后面卖进你的滑点留出的余量。

所以每一次三明治攻击里都有一次抢跑,反过来不成立。

三明治攻击常见问题

被夹走的钱能追回来吗?

追不回来。交易已经在链上结算,机器人的利润在同一个区块里就走了,没有人可以找。能改的是下一单:收紧上限、挑干净的路径,同样的攻击就不再划算。

小单子会被三明治攻击吗?

很少。大多数机器人跳过大约 500 到 1,000 美元以下的单子,100 美元的兑换不值它动手。

用私有 RPC 能挡住吗?

只能挡一部分。漏口在共享订单流的服务商和出块方的队列上。换一个不外传交易的服务商能降低暴露,但真正起主要作用的还是收紧滑点。

用 Jito 就能防住三明治攻击吗?

只防一部分。DontFront 把你的交易钉在最前面,最简单的那种手法就行不通了,但它替代不了一个像样的滑点。单笔普通兑换根本用不上 bundle。

滑点到底该收到多紧?

按池子深度来。深的交易对 0.5% 到 1%,浅的新模因币 2% 到 3%。

对普通交易者来说

三明治攻击的机器人是真的,也真的拿走了不少钱。防护分三层:守住滑点上限、挑不会在交易落地前把单子外传的连接服务、再加上打包和排序的规则。哪一层都不是墙。

按池子定上限,单笔别开太大,下手前先看一眼深度。小单子做到这些就够了。

这篇是科普,不是投资建议。代币交易有真实风险,包括亏掉本金,任何防护都消不掉这个风险。只用亏得起的钱。

深度怎么读,写在流动性池是什么:在 Solana 上读懂深度与风险里;路径怎么选,写在Jupiter、Raydium 还是 Orca:Solana 上该用哪个 DEX里。

J
作者
J Tools Editorial

来自 J Tools 团队的文章。

查看 J Tools Editorial 发表的所有文章 →

相关文章