加密货币抢跑:MEV 机器人与防护
Learn how front running works in crypto, sandwich attacks on DEX swaps, and proven protection methods like private RPCs and slippage tolerance.
您在 Uniswap 上提交了一笔兑换,而收到的代币数量少于界面给您的报价。在您点击确认到交易结算之间的短短一秒内,价格发生了变动。这个差距有一个专门的称呼。
在加密货币领域,抢跑(Front running)是指自动化机器人通过监控区块链上尚未确认的待处理交易,然后支付更高的燃料优先费(gas priority fee),从而在您的交易之前插入其自身的交易。机器人从您的交易所引起的价格波动中获利,而您则会获得一个比预期更差的成交价格。
这发生在 DeFi(去中心化金融)内部,这是一个建立在公共区块链上的金融应用生态系统,包括代币互换、借贷协议和收益农场,所有这些都通过智能合约执行,无需中心化中介。
抢跑的由来
“抢跑”(front running)一词起源于传统金融市场,即经纪人基于对客户待处理订单的预先知情,为其自有账户执行交易,从而在客户的大订单最终成交时,利用其引起的价格波动获利。
在受监管的市场中,这种做法是明令禁止的。它违反了经纪人的受信责任、美国证券交易委员会 (SEC) 规则 10b-5 以及金融业监管局 (FINRA) 的行为准则。抢先于客户订单进行交易的经纪人将面临刑事起诉和监管行动。
加密货币抢先交易在结构上相似,但在法律上有所不同。其区别在于一个词:公开。在以太坊(链上抢先交易记录最为详尽的区块链)上,每笔待处理的交易在确认之前对任何人都是可见的。这里不存在特权信息、秘密,也不存在违反职责的行为。这种区别正是加密货币抢先交易处于法律灰色地带而非明确非法范畴的原因。
加密货币中的抢先交易是如何运作的?
- 你在去中心化交易所 (DEX) 上提交代币兑换,调用一个智能合约(区块链上的一个自我执行程序),该程序在链上执行交易。每一笔区块链交易,包括你的兑换,都包含发送方地址、要执行的操作、提供的矿工费以及加密签名。
- 你的交易进入公开的内存池,这是已提交但未确认交易的等待区域,网络上的每个节点,包括自动化机器人,都能看到它。
- 一个抢跑机器人 (bot) 在毫秒内检测到你的交易,读取代币数量和你的目标价格,并根据资金池大小和你的滑点容忍度计算出该交易是否有利可图,可以被利用。
- 该机器人提交自己的同一代币买入交易,并提供更高的矿工费优先权,从而在验证者队列中抢先于你的交易。
- 机器人的交易首先执行,推高了币价。然后你的交易以更差的价格执行,机器人立即卖出获利。
内存池:你的待处理交易为何可见
内存池(memory pool)是一个公共等待区,已提交但未确认的区块链交易在此处暂存,直到验证者将其选入区块。将其想象成一个透明的等候室,每位顾客的订单都写在白板上,房间里的每个人都能看到,包括任何想插队的人。
您的待处理交易的每一个细节都可以被任何节点运营商读取:您正在兑换哪些代币、兑换多少、调用哪个合约,以及您提供的矿工费是多少。内存池抢跑(Mempool front running)正是指这种在待处理交易被确认之前对其进行扫描、识别并加以利用的做法。以太坊及其他 EVM 兼容链的此类案例最多,尽管一些替代链和私有内存池设计限制了这种风险。
机器人如何插队:矿工费优先费
验证者,即在以太坊的权益证明(Proof-of-Stake)网络上产生新区块的节点,根据gas优先费用(gas priority fee)对(待处理的)交易进行排序:提示费(tip)最高的交易优先。在以太坊的EIP-1559费用结构下,每笔交易支付一笔基础费用(这笔费用会被销毁,不会支付给验证者),以及一笔单独的gas优先费用,这是验证者实际收到的提示费(tip),并决定了他们对交易的排序偏好。
一个抢跑机器人会检测到你待处理的交易,计算预期利润减去gas费用,如果该交易值得被盯上,它就会自动提交一个竞争性交易,并设定一个比你的gas优先费用稍高的费用。这个过程被称为优先gas拍卖 (PGA)。机器人并没有违反任何协议规则。它只是在公开的费用市场中竞价胜过你。
谁在运行这些机器人?
抢跑交易背后的操纵者不是盯着屏幕的人类交易员。它们是自动化的 MEV 机器人,也称为搜寻机器人,它们全天候不间断地扫描内存池。加密货币抢跑机器人通过 WebSocket 或 RPC 连接直接连接到以太坊节点,以流式传输实时的内存池数据。从检测到有漏洞的待处理交易到提交竞争性交易,整个周期仅需毫秒。这些机器人由开发人员和交易公司运营。交易所和区块链协议不运行这些机器人,也不对其行为负责。
当机器人抢先执行您的兑换时,它会抢在您之前下单,并朝着您交易的方向推高价格。这意味着您支付相同的 ETH 却收到更少的代币,或者为了获得相同数量的代币而支付更多的 ETH。界面给您的报价与您实际收到的价格之间的差距就是您的抢先交易损失。
加密货币中的抢跑类型
在 DeFi 中,抢先交易有三种主要形式,每种形式都以不同的方式针对您的待处理交易。
什么是夹心攻击?
在 DeFi 中,三明治攻击是最常见的抢跑形式。一个机器人会在你待处理的兑换请求之前立即发起一笔交易,并在其后立即发起另一笔交易。你的交易被夹在两笔机器人交易之间,就像两片面包之间的夹心一样。机器人从你的交易引发的价格波动中获利。
在像 Uniswap 这样的基于自动化做市商 (AMM) 的去中心化交易所 (DEX) 上,交易是直接针对流动性池(即流动性提供者存入的两种代币的储备金)进行的,而不是与其他买家和卖家进行交易。自动化做市商 (AMM) 会根据池中资产的比例来为代币定价:你从一个固定的池子购买的越多,每单位的价格就越高。机器人会利用这种可预测的价格影响。
以下是夹子攻击分步进行的过程:
- 您在 Uniswap 上为代币 X 提交了一笔大额兑换交易;该交易以标准的 Gas 优先费用进入了内存池 (mempool)。
- 机器人 (Bot) 提交了一笔代币 X 的买入订单,并设置了更高的 Gas 优先费用,抢在您的交易之前执行,并通过 AMM 价格影响推高了代币 X 的价格。
- 您的兑换交易以此时更高的价格执行,您收到的代币数量少于界面上显示的报价。
- 机器人立即以抬高后的价格卖出其买入的代币 X,从而赚取其中的差价。
夹心攻击(Sandwich attack)是抢先交易(Front running)的一种特定类型,并非一个独立的概念。抢先交易是一个广泛的类别。夹心攻击是最常见的形式,因其夹在您的交易前后的两个机器人交易而得名。
位移抢先交易
位移攻击是一种更简单的抢跑交易形式:机器人提交一个竞争性交易,该交易会占据你在区块中的仓位,从而延迟或完全阻碍你的交易,而不是从价格影响中获利。这种形式在常规的 DEX 兑换中不太常见,但在 NFT 铸造竞赛和套利场景中经常出现,在这些场景中,首先被打包进区块是其全部价值所在。
加密货币中的跟单交易是什么?
尾随交易(Back running)是抢跑交易(front running)的反向操作:机器人并非抢在您的交易之前,而是在一笔大宗交易之后立即挂单,以从随后的价格再平衡中获利。一旦大宗兑换执行并改变了 AMM 池的比例,价格会短暂地偏离其他交易平台的价格。尾随交易机器人会捕捉这一再平衡走势。与抢跑交易不同,尾随交易不会改变您的成交价格,因为您的交易在机器人行动之前已经结算。相比夹心攻击,它对个人交易者的危害较小,但它仍然是 MEV 提取的一种形式,从您的交易所产生的同一链上活动中获取价值。
加密货币抢先交易的真实案例
一名交易员在 Uniswap 上提交了价值约 15,000 美元的 5 ETH 兑换 TOKEN_X 的交易。该笔交易以标准的 Gas 优先费用进入公共内存池。
机器人的运作方式: 抢跑机器人在几毫秒内检测到待处理的兑换。它会为 TOKEN_X 提交一笔 2 ETH 的买单,并设置高出约 20% 的 Gas 优先费用,以确保其交易优先执行。
结果:机器人 的买入由于 AMM 价格影响,将 TOKEN_X 价格推高了约 0.4%。交易者 的 5 ETH 兑换在该上涨的价格下执行,获得的代币数量比界面报价少了约 2%。机器人 立即出售其 TOKEN_X 仓位,在扣除 Gas 费用后,赚取约 80 至 150 美元的利润。
交易者的损失: 在一次 15,000 美元的掉期交易中,收到少 2% 的代币相当于约 300 美元的价值被提取。机器人获利即是交易者的损失,这是同一笔交易中的零和式获利。
这种情况在以太坊上每天都发生数十万次。EigenPhi 的三明治攻击追踪器) 可以让你搜索任何交易哈希,以检查你的交易是否受到了目标攻击。
抢跑和 MEV:全局视角
最大可提取价值 (MEV) 是指通过在区块内重排、插入或审查交易,超出标准区块奖励和 Gas 费用之外,可以从区块链用户那里提取的总价值。该术语最初在以太坊的工作量证明 (Proof-of-Work) 时代被称为“矿工可提取价值”。在 2022 年 9 月以太坊过渡到权益证明 (Proof-of-Stake) 的 The Merge 之后,该名称更新为“最大化”,以反映现在由验证者(而非矿工)来排序交易。这两个术语都出现在较早的文献中;最大可提取价值是当前的标准。有关更深入的技术参考,请参阅 以太坊的 MEV 文档.)
抢跑是加密货币中利润最高的一种 MEV 提取形式,占以太坊上捕获的总 MEV 的很大一部分。更广泛的 MEV 分类包括三种主要策略:
- 三明治攻击和位移抢跑: 利用特定的待处理用户交易,以交易者的损失为代价直接获利
- 套利下单: 通过在不同的流动性池或交易场所同时低买高卖,利用价格差异获利;通常被认为是市场中性的,因为它提高了整个生态系统的价格一致性,而不是从特定用户那里榨取价值
- 强制平仓抢跑: 机器人争相触发 Aave 或 Compound 等借贷协议上抵押不足贷款的强制平仓,并因率先行动而获得强制平仓体验金
与抢跑不同,套利下单不会针对您的特定交易。它能从独立于您交易活动的价格低效率中获益。强制平仓抢跑将MEV图景扩展到DEX互换之外,展示了验证者和搜索者机器人如何与更广泛的链上活动进行交互。
抢先交易如何影响您的盈亏
利润和亏损 (盈亏) 在加密货币交易中,是指您在卖出或兑换资产后,扣除所有费用后,所支付价格与所收到价格之间的净差额。抢先交易会降低您每一次交易的盈亏,并且其显示方式与普通滑点在您的交易历史记录中无异。
当机器人抢跑您的兑换交易时,价格会在您的交易执行前发生不利变动。您看到的报价与收到的执行价格之间的差距,直接减少了您该笔交易的已实现盈亏。在 10,000 美元的兑换中,0.3% 的抢跑影响代表每笔交易被抽走了 30 美元的价值。若每周进行三次交易,每年累计将损失约 4,680 美元,这些资金从您的回报中被悄悄抽走,而原因仅被模糊地归咎于“市场波动”。
根据 EigenPhi 的三明治套利追踪器,),截至 2024 年初,在以太坊上通过三明治攻击提取的累计 MEV 收益已超过 10 亿美元,覆盖了数十万次独立攻击。对于活跃的 DeFi 交易者而言,这并非理论上的风险。它是在基于 AMM 的 DEX 上每一次大额兑换中嵌入的经常性成本。在引用数据前,请直接从源头核实当前数据,因为此数据会持续更新。
要检查您自己的交易是否被抢先交易,请按照以下步骤操作:
- 在您的钱包历史记录或 Etherscan 上查找您的交易哈希。
- 在 Etherscan 区块浏览器中定位包含您交易的区块。
- 寻找在相同代币对上,紧随在您的兑换交易之前出现的机器人买入交易,以及紧随其后出现的机器人卖出交易。
- 直接在 EigenPhi 的三明治攻击追踪器,) 上搜索您的交易哈希,该追踪器会自动标记已确认的三明治攻击。
加密货币 vs. 股票 vs. 中心化交易所 的抢跑
抢跑(Front running)并非仅限于加密货币,但其机制、法律地位和保护期权在三种不同情境下存在显著差异。
| DEX / 链上 (加密货币) | CEX (中心化交易所) | TradFi (股票/证券) | |
|---|---|---|---|
| 机制 | 机器人监控公共内存池;提交更高Gas费用的交易以优先于挂单进行执行 | 交易所内部人士理论上可以在执行前看到大量挂单 | 经纪商在处理大型客户订单前执行自己的交易 |
| 使用信息 | 公共内存池数据,对所有人公开可见 | 内部订单流,仅对交易所运营者可见 | 重要的非公开客户订单信息 |
| 谁执行 | 由开发人员和交易公司操作的自动化MEV机器人 | 交易所内部人士,如果发生的话 | 经纪商和金融专业人士 |
| 法律地位 | 法律灰色地带;目前在大多数司法管辖区不被禁止;监管审查正在演变 | 在交易所服务条款下被禁止;在大多数司法管辖区受到监管限制 | 根据美国证券交易委员会(SEC)的10b-5规则、FINRA条例以及经纪商的信义义务,属于明确的非法行为 |
| 如何保护 | 滑点容差,私有RPC端点,DEX聚合器(具备MEV保护功能) | 使用信誉良好的受监管交易所;监管审查提供结构性保护 | SEC/FINRA的执法;客户无法自我保护 |
结构上的区别在于:链上抢跑利用的是所有参与者都能平等看到公开信息。TradFi 以及中心化交易所(CEX)的抢跑,都涉及利用本应保密的信息,这也是为什么它们在法律上是被禁止的。
加密货币抢跑是否非法?
目前在大多数司法管辖区,加密货币领域的抢跑交易处于法律灰色地带。它并不像 TradFi 抢跑那样被明确禁止。
原因在于信息。TradFi 前端运行(Front running)根据美国证券交易委员会(SEC)规则 10b-5 是违法的,因为经纪商利用了重大的非公开信息:客户的订单是保密的,而在订单成交前进行交易构成了违反受托责任,是一种证券欺诈。链上前端运行的运作方式则有所不同。内存池被设计为公开的。任何运行以太坊节点的人都可以实时看到每一笔待处理交易。所使用的信息在设计上就是公开的,且不存在违反受托关系的情况。目前在大多数司法管辖区中,运行执行前端运行的 MEV 机器人并不会被起诉,且这也不违反以太坊协议规则。
伦理辩论更具争议性。一种观点认为,MEV(最大可提取价值)的提取是透明、无需许可的区块链的自然结果:规则对每个人都一样,而读取公共数据并采取行动的机器人只是在遵守这些规则。一些 MEV,例如套利下单,通过保持跨池价格一致性,可以被认为有益于生态系统。相反的观点认为,三明治攻击尤其具有掠夺性,针对散户交易者,对每一次大额兑换征收隐形税,不成比例地影响到那些不知道内存池是可见的或存在保护工具的技术不够成熟的参与者。
监管框架正在积极演变。美国证券交易委员会 (SEC) 和商品期货交易委员会 (CFTC) 在近年来都扩大了对加密货币市场的监督,而随着监管的成熟,基于 MEV 的抢先交易 (front running) 的法律地位可能会发生变化。本文仅用于教育目的,不构成法律建议。在根据本分析做出决定之前,请咨询合格的法律专业人士。
如何保护自己免受加密货币抢先交易的影响
- 将您的滑点容忍度在 DEX 界面(如 Uniswap)上降低至 0.5% 或更低。
- 切换到私有 RPC 端点(Flashbots Protect 或 MEV Blocker),以将您的交易隐藏在公开的内存池之外。
- 使用具备内置 MEV 保护功能的 DEX 聚合器,例如 CoW Swap 或 1inch Fusion Mode。
- 将大额交易拆分为较小的交易,以减小每笔交易的价格影响,并使单笔交易更难被针对以获利。
- 避免在 Gas 费用拥堵高峰期进行交易,此时机器人最活跃,Gas 优先费用的竞争也最激烈。
调整您的滑点容忍度
滑点容忍度是您可以立即配置的最直接的保护,直接在您的 DEX 界面中。滑点描述的是报价与执行价格之间的差异。前置运行通过在您的交易执行前推动价格来扩大这个差距。
滑点设置告诉 DEX 界面您愿意接受多少价格偏差,超出此范围交易将自动撤销。这些可以减少您的抢跑风险的设置:
- 对于大多数 Uniswap 交易:将滑点容忍度设置为 0.5% 或更低。
- 对于流动性高、交易量大且交易规模标准化的交易对:0.1% 至 0.3% 可提供更强的免受三明治攻击的保护。
- 对于低滑点会导致频繁回滚的高波动性代币:请改用私有 RPC 端点,而不是将您的滑点容忍度提高到 1% 以上。
要在 Uniswap 上进行调整:点击兑换界面中的设置齿轮图标,然后选择“滑点容差”并输入您偏好的百分比。
降低滑点容忍度可显著降低您遭受三明治攻击的风险。如果机器人的抢先买入将价格推高至您的阈值之外,您的交易会自动回滚,使该攻击对机器人来说无利可图。然而,在您的容忍度高于资金池大小的最低盈利阈值的情况下,机器人仍可在交易中获利,因此滑点容忍度是您的第一道防线,而非完整的解决方案。
使用私有 RPC 端点
私有的RPC端点是大额交易最强的防护措施,因为它能将您的交易完全从公共内存池中移除。
RPC(远程过程调用)是您的加密货币钱包用来与区块链通信的连接方法。默认情况下,大多数钱包通过公共 RPC 端点连接,该端点会将您的交易广播到公共内存池,使它们在您提交的那一刻对抢跑机器人可见。私有 RPC 端点通过受保护的通道将您的交易直接路由到验证者。该交易在尚未包含在区块中之前,永远不会出现在公共内存池中,因此扫描内存池的机器人看不到它。
Flashbots Protect 是散户交易者使用最广泛的私密 RPC 选项。Flashbots 是一家研发机构,致力于构建基础设施以减少以太坊上破坏性的 MEV 提取。他们的消费级产品通过私密通道路由您的交易,使抢跑机器人无法看见或利用该交易。若要将 Flashbots Protect 添加到 MetaMask:请前往“设置”,然后进入“网络”,点击“添加网络”,将 RPC URL 输入为 https://rpc.flashbots.net,并将链 ID 设置为 1(适用于以太坊主网)。
CoW Protocol 的 MEV Blocker 提供一键设置选项。它会将您的交易发送给一个构建者网络,这些构建者会通过竞争为您提供最佳的执行价格。这两种工具都会通过第三方提供商路由您的交易,对于大额交易而言,这是一种值得考虑的信任权衡。对于日常兑换,这种保护对大多数交易者来说利大于弊。
带有 MEV 保护的 DEX 聚合器
一些 DEX 聚合器内置了抢先交易保护,但并非所有聚合器都是如此。设计至关重要。
CoW Swap(基于 CoW Protocol 构建)采用批次拍卖机制,将多个订单进行分组并同时结算。由于不存在单个待处理交易驻留在内存池中供机器人识别和定位,因此三明治攻击模型不适用。1inch Fusion Mode 通过一个由求解器组成的网络来路由订单,这些求解器竞争以最佳价格执行订单,并通过私有订单路由来减少内存池暴露。
仅通过 AMM 路由交易的标准 DEX 聚合器无法提供全面的三明治攻击保护。如果聚合器仍以标准方式将您的交易提交到公共内存池 (mempool),机器人 (bot) 依然可以察觉到它。在确信自己获得保护之前,请先检查聚合器的 MEV 保护是否属于结构性保护,例如批量拍卖或私有路由。
常见问题
三明治攻击和抢先交易有什么区别?
三明治攻击是抢先交易的一种特定类型,而不是一个独立的概念。抢先交易是一个广泛的范畴,涵盖了机器人通过在您的交易之前插入其交易以从价格变动中获利的任何策略。三明治攻击是最常见的形式,它使用两笔机器人交易(一笔在您的交易之前,一笔在之后)来夹击您的兑换交易并提取差价。
抢先交易在加密货币领域是否违法?
加密货币中的抢跑目前在大多数司法管辖区都处于法律灰色地带。它不像券商根据美国证券交易委员会 (SEC) 10b-5 法规进行的抢跑那样被明确禁止,因为内存池是人人皆可访问的公共信息,而非机密客户数据。监管框架仍在发展中,这种状况可能会改变。本文不构成法律建议。
我如何知道我的交易是否被抢跑了?
在 Etherscan 上搜索您的交易哈希,并检查包含它的区块。如果一个机器人的购买交易出现在您的交易之前,并且一个机器人的出售交易出现在您的交易之后,对于相同的代币对,您很可能遭受了三明治攻击。您也可以在 EigenPhi 的三明治追踪器) 上搜索您的交易哈希进行自动化检测。
在 Uniswap 上应该设置多少滑点容差才能避免抢跑?
对于大多数 Uniswap 交易,请在界面设置中将滑点容差设置为 0.5% 或更低。对于标准交易量的流动性好的交易对,0.1% 至 0.3% 可提供更强的保护。对于低滑点会导致反复回滚的高波动性代币,请切换到 Flashbots Protect 等私有 RPC 端点,而不是将您的容差提高到 1% 以上。
什么是 Flashbots 以及它如何防止 MEV?
Flashbots 是一家研发机构,致力于构建基础设施以减少以太坊上由于 MEV(最大可提取价值)带来的负面影响。他们的产品 Flashbots Protect 让您可以透过私有 RPC 节点提交交易,从而完全绕过公共内存池。在交易被纳入区块之前,抢跑机器人(Front-running bots)无法看到您的交易,这使它们失去了抢跑的机会。
什么是私有 RPC 节点?
RPC(远程过程调用)端点是您的加密货币钱包用来与区块链通信的连接。默认情况下,钱包会将交易广播到公开内存池,抢跑机器人可以在那里看到这些交易。私人 RPC 端点通过受保护的通道将您的交易直接路由到验证者,在交易于区块中确认之前,使其对机器人隐藏。
中心化交易所会发生抢跑吗?
外部机器人无法在中心化交易所进行内存池式的抢跑交易,因为 CEX 订单簿是私密的,且挂单并不公开可见。然而,交易所内部人员理论上可以在执行前看到大额订单并抢先交易。这种形式的内部抢跑在大多数司法管辖区的交易所服务条款和金融法规下都是被禁止的。
什么是加密货币中的尾随交易 (Back running)?
后追是抢跑的相反操作:一个机器人会在一项大额交易执行后立即提交一笔交易,以从中获利随之而来的价格再平衡。与三明治攻击不同,后追不会改变你的成交价,因为你的交易已经结算。它对散户交易者造成的伤害较小,但仍然是一种 MEV(矿工可提取价值)提取行为。