Uniswap
關於最佳 Uniswap 路徑的問題
如何計算最佳路徑?它是智能合約中的功能還是網站上的功能?
因為我檢查了函式 swapExactETHForTokens 並且路徑需要由函式呼叫者設置。
function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external virtual override payable ensure(deadline) returns (uint[] memory amounts) { require(path[0] == WETH, 'UniswapV2Router: INVALID_PATH'); amounts = UniswapV2Library.getAmountsOut(factory, msg.value, path); require(amounts[amounts.length - 1] >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT'); IWETH(WETH).deposit{value: amounts[0]}(); assert(IWETH(WETH).transfer(UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0])); _swap(amounts, path, to); }
如果我想以程式方式交換,我應該如何知道最佳路徑?
最佳路徑不在合約內計算。呼叫合約時必須提供準確的路徑,所以必須提前知道。
我們可以由此推斷,它是由網站在鏈下計算的。我不知道該網站的程式碼是否公開,但您可以查看 uniswap github 儲存庫,看看他們是否在那裡發布。