一、套利基础认知:链上套利的本质与机会
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 API 或 1inch 的报价数据来做价差监控。这些聚合器会同时查询多个 DEX,省去自己对接每个协议的麻烦。
1.3.2 三明治攻击
三明治攻击,说白了就是「抢跑 + 反向操作」。我看到一个大额买单即将执行,就在它前面买入,等它推高价格后卖出。
嗯,这里要说明白。三明治攻击严格来说不算「套利」,它更像是一种 MEV 提取策略。但很多实战教程把它归在套利范畴里。
三明治攻击的核心步骤:
- 监控 mempool,发现待处理的大额交易
- 在目标交易之前插入自己的买入交易
- 等目标交易执行后,卖出获利
关键点:三明治攻击需要抢在目标交易之前被打包。这通常意味着要支付更高的 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 套利机会的实时监控
实战中,套利机会转瞬即逝。我通常的做法是:
- 订阅链上事件(比如 Swap 事件)
- 实时计算各 DEX 的价差
- 当价差超过阈值时,触发交易
这里有个坑。很多新手直接轮询 RPC 节点,结果被限速。我建议用 WebSocket 订阅事件,效率高得多。
重要提醒:不要用公共 RPC 节点跑套利机器人。延迟高、容易被限速。我吃过这个亏,后来一直用 Alchemy 或 Infura 的付费节点。
1.6 本章小结
链上套利的本质是寻找并利用市场定价偏差。数学上很简单,但实战中要考虑 Gas、滑点、竞争等复杂因素。
我个人认为,套利机器人的核心能力就三个:
- 发现机会的速度:比别人快 0.1 秒,可能就多赚 10 倍
- 执行效率:Gas 优化、合约调用顺序
- 风险控制:别被三明治,别被抢跑
嗯,这一章先讲到这里。后面的章节我们会深入每个技术细节,从代码层面一步步搭建一个完整的套利机器人。