工程Mar 28, 2026
Deep EVM #14:构建套利环路发现器——池图上的DFS
OS
Open Soft Team
Engineering Team
套利的图结构
在DEX套利中,代币是节点、流动性池是边。套利机会表现为图中的环路——从某个代币出发,经过一系列swap后回到同一代币,并获得更多数量。
深度优先搜索(DFS)
我们使用DFS来发现图中的环路。DFS从一个起始节点出发,尽可能深入地探索每条路径,直到找到回到起始节点的环路。
fn find_cycles(
graph: &TokenGraph,
start: Address,
max_depth: usize,
) -> Vec<ArbPath> {
let mut paths = Vec::new();
let mut stack = vec![(start, vec![start], HashSet::from([start]))];
while let Some((current, path, visited)) = stack.pop() {
for (next_token, pool) in graph.neighbors(current) {
if next_token == start && path.len() >= 2 {
paths.push(ArbPath::new(path.clone(), pool));
} else if !visited.contains(&next_token) && path.len() < max_depth {
let mut new_path = path.clone();
new_path.push(next_token);
let mut new_visited = visited.clone();
new_visited.insert(next_token);
stack.push((next_token, new_path, new_visited));
}
}
}
paths
}
keccak256去重
在有数千个池的图中,可能发现大量重复或等价的环路。使用keccak256对排序后的路径进行哈希可以高效去重。
性能优化
在生产环境中,环路发现必须在毫秒内完成。关键优化包括:
- 剪枝低流动性池
- 限制搜索深度(通常3-4跳)
- 并行化搜索
- 增量图更新
总结
套利环路发现器是MEV机器人的核心组件。通过在代币-池图上进行高效的DFS搜索,结合keccak256去重和剪枝优化,可以在毫秒内发现数千个潜在套利机会。