Uniswap v2 v3 SDK 以及合约都有获取价格的方法。
v2 用的是 Router 合约, v3 用的是 Quoter 合约
他们是通过自己当前自身池子的深度来计算,各家聚合器也在使用这些接口,在链下计算最优的兑换路径。
uniswapV2相关合约
function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts);
, 这个方法是把native token(也就是ETH)兑换成其他的ERC20 token,amountOutMin 参数是为了防止汉堡攻击导致滑点太大而设置的参数,用户可以限制获得token的最小数量,function getAmountsOut(uint amountIn, address[] memory path) public view returns (uint[] memory amounts);
,方法可以用来查询token的价格,就是指定输入,得到输出,输出是兑换得到的目标token的数量,