跳到主要内容
工程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去重和剪枝优化,可以在毫秒内发现数千个潜在套利机会。