Uniswap前端如何计算特定交易对的兑换路径(路由)?
Uniswap兑换路径的计算逻辑
你看到的CVC>ETH>USDT>KEEP路径是Uniswap路由算法比对所有可行兑换路径后得出的最优解,核心计算逻辑如下:
- 第一步:枚举有效流动池。算法会先拉取当前链上所有包含CVC、KEEP的流动池,同时默认纳入ETH、USDT这类高流通、高深度的通用代币对应的流动池,提前过滤掉流动性过低、交易滑点会超过阈值的无效池。
- 第二步:穷举合法路径计算兑换收益。Uniswap默认最多支持3次兑换跳转(也就是最多4个代币的路径,避免gas成本过高),会分别计算不同长度路径的目标代币输出量:
- 单跳路径:如果CVC和KEEP有直接配对流动池,先计算直接兑换的KEEP输出量
- 两跳路径:计算
CVC>ETH>KEEP、CVC>USDT>KEEP这类仅经过1个中间代币的路径输出量 - 三跳路径:计算
CVC>ETH>USDT>KEEP这类经过2个中间代币的路径输出量
- 第三步:综合收益和成本排序。算法会把每条路径的兑换输出量扣除对应gas成本的折算价值,选净收益最高的路径作为最优解展示。你碰到的情况大概率是CVC和KEEP没有直接流动池,或者两跳路径的中间池深度不足、滑点过高,反而三跳路径的最终净收益更高。
相关实现代码的获取位置
Uniswap的路由逻辑完全开源,核心代码分为两部分:
- 链下路径计算的前端逻辑在
uniswap/interface仓库中,核心对应SwapRouter相关的路由计算模块 - 链上路由执行、询价逻辑在对应版本的外围合约仓库中:V3版本对应
uniswap/v3-periphery仓库,核心合约为SwapRouter、Quoter;V2版本对应uniswap/v2-periphery仓库,核心合约为UniswapV2Router02。
你可以直接在Github搜索对应仓库名获取完整的开源实现。
内容的提问来源于stack exchange,提问作者peterchen145
相关产品推荐
相关产品推荐

