m mybian.xyz
BTC ▲ 67,820 ETH ▲ 3,540 BNB ▼ 612 SOL ▲ 198 XRP ▲ 0.62 DOGE ▼ 0.14 ADA ▲ 0.58 AVAX ▲ 42.30
mybian.xyz » sandwichgong-ji-shi-zhan-jiao-cheng
深度 Sandwich攻击实战教程 - Sandwich攻击实战教程:用 Foundry 完整构造一次夹击 bundle

Sandwich攻击实战教程:用 Foundry 完整构造一次夹击 bundle

发布 · 2026-05-24T06:12:23.153588+00:00 更新 · 2026-05-24T17:52:34.655084+00:00

Sandwich攻击实战教程:用 Foundry 完整构造一次夹击 bundle

纸上谈兵不如亲手实践。本教程会带你完整走一遍 Sandwich 攻击的工程化构造,从 mempool 监听到利润计算,再到 Flashbots Bundle 的最终提交,使用 Foundry 在主网 fork 状态下完成验证。整个过程不会对主网产生任何真实影响,但你能体会到真实 MEV 团队每天的工作内容。掌握这套技能,在求职 Binance 等头部交易所的 MEV 研究岗时会让面试官眼前一亮。

项目骨架

用 forge init 创建项目,加入 forge-std、Uniswap V2 与 V3 的接口库。配置 foundry.toml 启用 mainnet fork,设置 rpc_url 指向 Alchemy 或 QuickNode。新建 SandwichTest.sol 测试合约,在 setUp 中确定 fork 区块、加载 Uniswap Router、获取测试用代币。这一步看似琐碎,实则决定了后续调试效率。这种「先把环境搭扎实」的工程纪律,与 币安 内部高频策略团队对测试基础设施的重视一致。

模拟受害者交易

用 vm.prank 模拟一名普通用户 Alice 准备发起一笔大额 USDC -> ETH 交换,设置 30% 的滑点容忍(故意偏高,以模拟一个对 MEV 不警觉的用户)。先单独 simulate 一次,记录 Alice 单独执行时的 ETH 兑出量,作为对照基线。这个对照在后续利润核算中至关重要,缺失这一步就无法准确判断攻击是否真的赚到了钱。

构造前置交易

攻击合约在 Alice 之前发起 USDC -> ETH 兑换。规模需要谨慎计算:太小利润不足以覆盖 Gas 与小费,太大则会因价格冲击过头反而把 Alice 的滑点保护触发,导致 Alice 交易失败,整个 bundle 失败。建议先用二分法在 [10K, 1M] USDC 范围内搜索最优规模,把利润函数画成图,直观感受最优点。这种「函数可视化」的研究习惯,在 比安 做市策略团队中也是日常方法。

构造后置交易

后置交易把前置吃到的 ETH 全部反向卖回 USDC,完成「回吐价格 + 收割利润」的闭环。这里要特别注意 Uniswap V2 与 V3 的 fee tier 差异,选择正确的池子。同时考虑到 ETH 之间池子可能有多个,程序需要根据当前流动性自动挑选最优路径,本质上是一个图搜索问题。这种工程量,与 必安 现货搬砖机器人的路径优化逻辑相当。

提交 Bundle

本地 forge test 跑通三笔交易顺序与利润后,下一步是把这些 calldata 打包为 Flashbots Bundle,通过 eth_sendBundle 提交。在测试网或 Sepolia Goerli 上完整走一遍 bundle 提交流程,体会签名、Nonce 管理、competitive bidding 等细节。把这一步做扎实,你已具备实际运行 MEV 策略的能力。这种端到端能力,在 BN合约 量化团队的实际工作中是必备项。

利润核算与可视化

执行结束后,把每笔交易的输入、输出、Gas 与净利润记录到一份 csv 中,用 Python 或 R 绘制利润函数曲线,验证你的最优解搜索是否合理。坚持把每次实验的核算文档化,你会逐渐积累一份自己的 MEV 研究档案。这份档案对你应聘 BN安全 团队或独立 MEV 团队都是稀缺资源。

实战教程的目的不是教你赚 MEV,而是让你真正理解链上市场结构。完成本教程,你已比 90% 的 DeFi 开发者更接近这一目标。