预言机给出价格后,两笔交换交易单独看都签名有效;若攻击者观察到大额兑换并在它前后各放一笔订单,用户实际执行价格可能恶化。区块链(29):预言机能提交数据,不能把现实交付变成定理讨论输入真实性,交易排序问题则发生在输入都有效的情况下。谁能提议/选择区块内容、能看到待处理交易、能为顺序出价,决定可提取的价值与攻击面。

sequenceDiagram
  participant U as 用户
  participant S as 搜索者/排序者
  participant P as 交易池与区块生产者
  U->>P: swap(数量、最低可得)
  P-->>S: 可见待处理交易
  S->>P: 前置交易
  P->>P: 用户交易(价格已变化)
  S->>P: 后置交易

防线不能只写“加密交易池”:协议必须处理排序权、撤回权与延迟。应用可设置最小输出、有效期、批量撮合或承诺—揭示,但最小输出只是让超过滑点的交易 revert,不能保证成交价格最好。把所有 MEV 都称为抢跑也会漏掉跨域套利、清算和用户主动寻求的合理排序;机制约束需说明副作用是谁承担。

正确执行也可能给用户很差的结果

用户接受的最少输出是 95,报价界面曾显示 100。排序者先买入同一资产,用户执行时池状态改变,仍收到 96;这次交易按用户签名条件成立,但相比未被夹击的状态少得 4。随后排序者可反向卖出获利,实际收益还要扣除手续费、池子规则和对手成本,不能从这个教学例直接得出真实 MEV 金额。若价格再恶化至 94,amountOutMin=95 应使用户交易失败,但用户可能仍支付执行费用;“没有被差价吃掉”不等于零成本。

用户可限最小输出与有效期,协议可用批量竞价或延迟揭示改变可见性,私有通道可以减少某类待处理交易的公开暴露;三者各引入延迟、审查、可信中介或失败回退问题。对于教学托管,谁先提交交付报告和谁先提交退款同样是排序争议,不应只把 MEV 想成交易所价差。机制验收需要固定交易集合,在两种相反排序下复算订单状态与收款额,并保存候选块与链上实际顺序;目前没有可运行 AMM 或真实池记录。

练习一:用户设置 amountOutMin=95,预期 100,最终能得到 96,这个设置能保证 100 吗?答案:不能;它只限定在执行时的最差可接受输出。练习二:将私有提交标记 HTTP 200,能确保构建者没有改排序吗?答案:不能;要核对实际块、执行结果与通道的控制者。真实 mempool/排序/夹击模拟与损失测量 NOT_RUN。

可迁移原则:即使请求均有效,执行顺序仍是需要治理的输入。参考:Ethereum MEV 说明、Uniswap docs(具体协议版本、网络及实验待核);导航:区块链(29):预言机能提交数据,不能把现实交付变成定理 · 30 · 区块链(31):通道、侧链与 rollup 把哪些责任移出主链。