如何获取Quickswap(Uniswap v2)的最优兑换路径?
Quickswap 最优兑换路径获取方案(Node.js 环境)
实现前提
你已经完成了基础兑换功能的开发,接下来只需接入Quickswap官方维护的智能路由SDK,即可得到和官网完全一致的最优兑换路径,两者底层路由逻辑完全相同。
具体实现步骤
- 首先安装核心依赖:
@quickswap-sdk/smart-router、@uniswap/sdk-core、ethers,安装命令如下:npm install @quickswap-sdk/smart-router @uniswap/sdk-core ethers - 初始化Polygon主网的RPC provider,Quickswap核心部署在Polygon链上,需要对应链的节点支持
- 导入需要兑换的两种代币的合约地址、精度、符号等元数据,构造
sdk-core中的Token实例 - 调用路由SDK的对应方法:如果是固定输入数量兑换调用
getBestTradeExactIn,固定输出数量兑换调用getBestTradeExactOut,传入对应参数即可拿到最优路径、预计兑换数量等数据
注意:如果涉及稳定币兑换场景,需要在调用路由方法时开启稳定币配对的匹配开关,否则可能出现路径计算结果和官网不一致的情况
代码示例片段
import { AlphaRouter } from '@quickswap-sdk/smart-router' import { ethers } from 'ethers' import { Token, CurrencyAmount, TradeType } from '@uniswap/sdk-core' // 初始化RPC Provider const provider = new ethers.providers.JsonRpcProvider('你的Polygon主网RPC地址') // 初始化路由实例 const router = new AlphaRouter({ chainId: 137, provider }) // 构造代币实例,示例为WMATIC和USDC const WMATIC = new Token(137, '0x0d500B1d8E8eF31E23C969f40848ec6e63257911', 18, 'WMATIC', 'Wrapped Matic') const USDC = new Token(137, '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174', 6, 'USDC', 'USD Coin') // 示例:查询1个WMATIC兑换USDC的最优路径 const inputAmount = CurrencyAmount.fromRawAmount(WMATIC, ethers.utils.parseEther('1').toString()) const getBestRoute = async () => { const trade = await router.route( inputAmount, USDC, TradeType.EXACT_INPUT ) // 打印最优路径代币顺序 console.log(trade?.route.path.map(token => token.symbol)) // 打印预计输出数量 console.log(trade?.quote.toExact()) } getBestRoute()
内容的提问来源于stack exchange,提问作者Tee S
相关产品推荐
相关产品推荐

