Uniswap

關於最佳 Uniswap 路徑的問題

  • November 18, 2021

如何計算最佳路徑?它是智能合約中的功能還是網站上的功能?

因為我檢查了函式 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 儲存庫,看看他們是否在那裡發布。

引用自:https://ethereum.stackexchange.com/questions/98765