Ether
來自 uniswap 應用程序和合約讀取的金額之間的代幣交換金額差異
當我嘗試使用 Uniswap 應用程序(https://app.uniswap.org/#/swap)從 DAI 交換 1BAT 時,我需要
0.325372DAI
如圖所示。
1BAT
但是,當我嘗試通過目錄讀取合約函式 (getAmountsIn())計算我需要獲得多少 DAI 時,它顯示329322487172572064
,這意味著我需要 ‘0.32932DAI’ 來交換1BAT
。我認為來自
getAmountsIn()
的金額與來自 uniswap 官方應用的金額相同。為什麼這兩個數量不同,我是否呼叫了錯誤的函式?請給我一些建議好嗎?
據我所知,這種差異是支付給流動資金池創建者的費用。也就是說,鎖定這些資金以通過流動性池創建市場的獎勵。
當您嘗試使用 Uniswap Web 應用程序進行交換時,該應用程序會在不同對之間執行路徑查找器算法,並根據您要交換的數量建議具有最佳交換率的路徑。如圖所示,路由器算法為您的交換建議了 DAI-USDT + USDT-BAT 路徑。
如果您想僅使用合約呼叫重新生成相同的輸出,則必須輸入相同的路徑,在您的情況下為:
$$ 0x6b175474e89094c44da98b954eedeac495271d0f, 0xdac17f958d2ee523a2206206994597c13d831ec7, 0x0d8775f648430679a709e98d2b0cb6250d2887ef $$