MEV 攻击(最大可提取价值攻击)是一种利用对交易排序的控制,通过重新排序、插入或排除特定交易,来获取额外利润的区块链行为。
最常见的形式是三明治攻击,攻击者在用户的买入交易前后分别插入自己的交易,利用价格操纵实现套利,导致用户支付更高的价格。其他形式包括抢先交易、清算套利等。
需要指出的是,三明治攻击、front-running 攻击对于区块链生态而言基本算是百害而无一利的。因为它会导致用户交易的利润受损以使自己受益, 它和三角套利这样的不同,三角套利本身是可以对区块链带来流动性的;而三明治攻击和抢跑攻击本身是伤害流动性的,当没有交易发生的时候, 这两类攻击也就随之消失。由此可见,三明治攻击和抢跑攻击对区块链(尤其是 defi)的负面作用极大,堪称业界毒瘤。
MEVless 适用的攻击场景:
三明治攻击
front-running 攻击
MEVless 适用的链:
在这里,笔者不建议在 L1 公链这一层(尤其是通用的区块链,像 ETH,solana)使用 MEVless 协议,因为 MEVless 需要对区块本身做一些针对性修改,这是专门为了抗 MEV 而设计的,未必适用于 其他业务类型(尤其是不需要抗 MEV 的业务类型)。 笔者建议将 MEVless 放在一些专用的 defi 应用链 或者 L2 上,然后最后回到 ETH L1 上进行结算。
MEVless 的原理在于约束矿工对交易定序的行为,我们的做法是在排序的时候不让矿工看到具体的交易内容。 并且在看不到交易内容的情况下进行交易排序,此时由于不知道具体交易内容,则即使是矿工 也无法进行 MEV 攻击,排完序之后需要将该顺序发布到公网中使其他节点和用户也获悉。此时交易顺序已然定型并入块,那么之后提交具体交易内容的时候便会强制按照这个共识的顺序执行,不再有 MEV 的操作空间了。
我们将链上的区块分成两个类型:
这两种区块交替出块,比如创世区块之后,单数块高的区块即为定序区块,双数块高的区块即为执行区块

依此下去周而复始
在该方案中,可能会出现当交易内容发往链上之后,矿工看到该笔交易有利可图,于是可能会恶意扣下该笔交易以使得交易无法上链然后等待用户下次重新发送相同的交易再来进行攻击, 此时不仅用户的交易利润依然会被侵蚀,还会因为之前发送的交易 hash 白白多交一笔预付款。
所以,我们需要 DA(比如 ETH Blob)来确保用户发送出来的交易一定能够上链,这样哪怕出块节点恶意扣留了该笔交易,其他的验证节点和全节点也能够收到该笔交易内容, 并在后续的出块过程中执行该笔交易。这样,出块节点为了防止自己跟其他节点出现状态不一致的情况就会不得不把该笔交易也包含到自己出的区块中。
在这个过程中,DA 是为用户多提供了一层保障,并不是必选项,如果用户觉得该交易在 P2P 网络中已充分传播到足够的全节点,也可以不使用 DA。
引入 DA 也可以防止该链的矿工群体以联合垄断的方式扣留用户交易。
前文我们讨论了普通的 MEV 攻击,但是如果攻击者无法看到具体的交易内容无法定点狙杀交易的时候,他们可能会采取另一种方式来攻击,即投机性 MEV 攻击。
这种攻击方式具体体现在:在 MEVless 中,攻击者可以提前埋伏好一个交易 并把该交易的 hash 提交到链上,等待执行区块开始时,大家都提交交易内容的时候,攻击者可以根据其他用户提交的交易内容 来判断并计算自己是否有攻击收益,如果有则提交自己的交易内容,如果没有的话就选择拒绝提交自己的交易内容,实现三明治攻击。
这种方式在 MEVless 协议中很难成立, 因为投机需要成本,而当攻击者发现无利可图选择放弃提交自己的交易内容的时候,他之前提交 txHash 时候所支付的预付款便等于白白浪费了,并且攻击者越想让自己的交易在排序中靠前, 那么他所需要的预支付的成本就越大。
那么,一定会有读者疑惑,如果是出块节点自己进行 MEV 攻击,那么这部分预支付款相当于是自己给自己,完全弥补了攻击成本,这种情况下,又该如何解呢?
确实,当出块节点自己进行 MEV 攻击时,这部分预支付款会被自己的出块奖励所覆盖,所以不会存在攻击成本的浪费。那我们削弱这种投机方式的思路是:让矿工无法预测下一个区块是否轮到自己出块,这样他投机成本就会陡增。为此,我们需要在共识层去增添如下设计:
并且,这种共识设计,在去中心化越来越高的情况下抗 MEV 效果越好,因为矿工越多,那么每个矿工节点就越难预料自己是否是下个出块节点,他们投机式 MEV 的风险就越高。
原作者:魏文侯
原文:https://lawliet-chan.github.io/2025/09/20/MEVless/
【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。
