一、套利基础认知:链上套利的本质与机会

1.1 什么是链上套利?

链上套利,说白了就是利用区块链上不同市场之间的价格差异来赚钱。

举个例子。Uniswap 上的 ETH 卖 2000 USDC,SushiSwap 上同样的 ETH 卖 2010 USDC。你在 Uniswap 买入,去 SushiSwap 卖出,净赚 10 USDC 差价。这就是最基础的套利。

我个人习惯把链上套利分成两类:

  • 空间套利:同一时间,不同 DEX 之间的价差
  • 时间套利:同一 DEX,不同区块之间的价差

嗯,这里要注意。链上套利和传统金融套利有个本质区别——交易成本结构不同。Gas 费、滑点、MEV 风险,这些在传统市场里几乎不存在。

1.2 套利的数学本质

套利的数学本质是什么?我直接给公式:

套利利润 = 卖出价格 - 买入价格 - 交易成本

无风险条件:卖出价格 - 买入价格 > 交易成本

这个公式看起来简单,但坑很多。我在项目中遇到过不少新手,看到价差 0.5% 就冲进去,结果 Gas 费吃掉 0.8%,反而亏钱。

核心要点:套利的数学本质是寻找「正期望值」的交易机会。不是所有价差都能赚钱,只有覆盖成本后的净收益才是真利润。

为什么会这样?因为链上交易的成本结构很特殊:

成本类型 说明 典型范围
Gas 费 每笔交易必须支付的链上费用 $0.1 - $50+
滑点 大额交易导致的执行价格偏移 0.1% - 2%
协议手续费 DEX 收取的交易费用 0.01% - 0.3%
MEV 风险 被抢跑或三明治攻击的损失 难以量化

你想想看,如果一笔套利预期赚 1%,但 Gas 费吃掉 0.5%,滑点吃掉 0.3%,协议费吃掉 0.1%,最后只剩 0.1%。这还不算被三明治的风险。所以真正的无风险条件其实很苛刻。

避坑指南:我曾经在 BSC 上看到一个 2% 的价差,觉得稳赚。结果 Gas 费飙升,加上滑点,最后亏了 0.3%。从那以后我养成了习惯——先算净收益,再决定是否执行。

1.3 DeFi 生态中的套利机会概览

DeFi 生态里的套利机会,我按实战频率排个序:

1.3.1 DEX 价差套利

这是最基础、最稳定的套利方式。不同 DEX 对同一交易对定价不同,原因很简单:

  • 流动性池深度不同
  • 交易量分布不均
  • 预言机更新频率差异

举个例子。Curve 上的稳定币池和 Uniswap V3 上的稳定币池,经常出现 0.1%-0.3% 的价差。虽然单笔利润薄,但胜在稳定、风险低。

我个人习惯用 0x API1inch 的报价数据来做价差监控。这些聚合器会同时查询多个 DEX,省去自己对接每个协议的麻烦。

1.3.2 三明治攻击

三明治攻击,说白了就是「抢跑 + 反向操作」。我看到一个大额买单即将执行,就在它前面买入,等它推高价格后卖出。

嗯,这里要说明白。三明治攻击严格来说不算「套利」,它更像是一种 MEV 提取策略。但很多实战教程把它归在套利范畴里。

三明治攻击的核心步骤:

  1. 监控 mempool,发现待处理的大额交易
  2. 在目标交易之前插入自己的买入交易
  3. 等目标交易执行后,卖出获利

关键点:三明治攻击需要抢在目标交易之前被打包。这通常意味着要支付更高的 Gas 费,或者使用 Flashbots 等 MEV 基础设施。

我曾经在以太坊主网上跑过三明治机器人。说实话,竞争太激烈了。Gas 费竞价经常打到 500 Gwei 以上,普通玩家很难参与。

1.3.3 闪电贷套利

闪电贷是 DeFi 里最酷的发明之一。你不需要本金,只要在一个交易内完成「借-买-卖-还」四个步骤就行。

闪电贷套利的典型流程:

1. 从 Aave 或 dYdX 借出 1000 ETH
2. 在 Uniswap 用 1000 ETH 买入 2,000,000 USDC
3. 在 SushiSwap 用 2,000,000 USDC 买回 1005 ETH
4. 还掉 1000 ETH 借款 + 0.09% 手续费
5. 净赚 5 ETH - 手续费

这个流程必须在同一个交易内完成。如果中间任何一步失败,整个交易回滚,你只损失 Gas 费。

实战技巧:我建议新手从闪电贷套利入手。因为不需要本金,风险可控。但要注意——闪电贷的 Gas 费很高,因为涉及多个合约调用。我曾经一笔闪电贷套利花了 0.3 ETH 的 Gas,利润才 0.5 ETH,差点白干。

1.4 套利机会的数学建模

我们用一个简单的数学模型来理解套利机会:

// 伪代码:套利机会检测
function findArbitrage(prices) {
  for each pair (dexA, dexB) {
    spread = (prices[dexB] - prices[dexA]) / prices[dexA]
    netProfit = spread - gasCost - slippage - fee
    if (netProfit > threshold) {
      return profitable
    }
  }
  return noOpportunity
}

这个模型虽然简单,但实战中要考虑的因素远不止这些。比如:

  • 流动性深度:能不能吃掉整个价差?
  • 交易延迟:从发现机会到执行,价差会不会消失?
  • 竞争情况:有没有其他机器人也在抢这个机会?

我个人习惯在模型里加一个「安全系数」。比如计算出的净收益是 1%,我只在超过 1.5% 时才执行。这样能抵消一些不可预见的风险。

1.5 套利机会的实时监控

实战中,套利机会转瞬即逝。我通常的做法是:

  1. 订阅链上事件(比如 Swap 事件)
  2. 实时计算各 DEX 的价差
  3. 当价差超过阈值时,触发交易

这里有个坑。很多新手直接轮询 RPC 节点,结果被限速。我建议用 WebSocket 订阅事件,效率高得多。

重要提醒:不要用公共 RPC 节点跑套利机器人。延迟高、容易被限速。我吃过这个亏,后来一直用 Alchemy 或 Infura 的付费节点。

1.6 本章小结

链上套利的本质是寻找并利用市场定价偏差。数学上很简单,但实战中要考虑 Gas、滑点、竞争等复杂因素。

我个人认为,套利机器人的核心能力就三个:

  • 发现机会的速度:比别人快 0.1 秒,可能就多赚 10 倍
  • 执行效率:Gas 优化、合约调用顺序
  • 风险控制:别被三明治,别被抢跑

嗯,这一章先讲到这里。后面的章节我们会深入每个技术细节,从代码层面一步步搭建一个完整的套利机器人。

链上套利知识体系 链上套利 DEX 价差套利 三明治攻击 闪电贷套利 跨 DEX 价格差异 流动性深度差异 预言机更新频率 Mempool 监控 Gas 竞价策略 Flashbots 集成 零本金套利 单交易原子执行 Aave / dYdX 集成 核心公式 套利利润 = 卖出价 - 买入价 - Gas - 滑点 - 手续费