Bsc

swapExactTokensForTokens 忽略 amountOutMin 參數

  • May 27, 2021

在令牌交換中,我收到的輸出令牌數量少於參數“amountOutMin”中指示的數量。這是意料之中的,因為我交換的代幣有 9% 的稅。沒有預料到的是交易發生了。交易必須以“INSUFFICIENT_OUTPUT_AMOUNT”失敗。因為我收到的令牌數量少於參數“amountOutMin”中指示的數量。

令牌有 18 位小數(https://bscscan.com/token/0xf7469bad4e3da85b15b02a0dcfadb2c2d219a4b7

交易:https ://bscscan.com/tx/0xf8c1af25b432892f7c87ce57beacb938300ce7d6563cf17574ad8ec5e091ab85

收到:3271.126023249240379059 代幣

金額OutMinParam:3594640386952184892933(十進制18:3594.640386952184892933)

即使輸出量小於amountOutMin,也發生了交易。似乎有些重要的事情我不明白。

最小金額

AMM 僅檢查它是否正在您發送amountOutMin,而不是您正在接收它。換句話說,它transfer為該令牌呼叫大於或等於的a amountOutMin

但是,AMM 呼叫轉賬後(從貨幣對到您的地址),代幣合約會燃燒您提到的 9% 的稅。這不是由 AMM 擷取的。

如果您希望在收到的金額小於 時恢復交易amountOutMin,您可以使用 functionswapExactTokensForTokensSupportingFeeOnTransferToken函式(以及其他類似命名的函式)。

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