Solidity
以程式方式調整 Uniswap 中的滑點容差
我已經能夠通過 Uniswap 的外圍智能合約Router 02通過呼叫任何函式來進行交換,例如:
function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts);
但是,這些函式都沒有任何涉及滑點的欄位(交易送出和執行之間價格在交易對中的移動量),並且我不知道滑點設置在哪個階段之前啟動掉期交易。
在執行交換交易時,有沒有辦法以程式方式處理滑點容差?
是的,您可以使用該功能對其進行調整。
Uniswap 路由器交換功能將資產 A 換成資產 B,並帶有滑點。大多數情況下,它們的類型是“給 A,得到 B,而 A 或 B 的數量保持不變”。例如,您有一個交換“我想支付 x 數量的 A 代幣並獲得盡可能多的 B 代幣”或“我想支付盡可能少的 A 代幣並獲得 x 數量的 B 代幣”。
在您的情況下,您正在使用一個函式,該函式提供最少數量的 tokenA 並獲得一定數量的 tokenB。因此,這
amountOut
是您定義的靜態數字,amountInMax
是您願意輸入令牌 A 以獲得令牌 B 的靜態數量的最大值。因此,您的滑點由 定義
amountInMax
。