Bsc
swapExactTokensForTokens 忽略 amountOutMin 參數
在令牌交換中,我收到的輸出令牌數量少於參數“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
為該令牌呼叫大於或等於的aamountOutMin
。但是,在AMM 呼叫轉賬後(從貨幣對到您的地址),代幣合約會燃燒您提到的 9% 的稅。這不是由 AMM 擷取的。
如果您希望在收到的金額小於 時恢復交易
amountOutMin
,您可以使用 functionswapExactTokensForTokensSupportingFeeOnTransferToken
函式(以及其他類似命名的函式)。