Solidity

使用 swapExactTokensForTokens 進行交換,但執行已恢復

  • October 5, 2022

我正在嘗試使用測試網上的 pancake swap 將 BUSD 交換為 USDT,但是每當我嘗試使用 swapExactTokensForTokens 函式進行交換時,我都會收到“執行恢復”錯誤,你能幫我找出問題嗎?

contract swaptest{
   address router = 0x9Ac64Cc6e4415144C455BD8E4837Fea55603e5c3;
   address busd = 0x78867BbEeF44f2326bF8DDd1941a4439382EF2A7;
   address usdt = 0x7ef95a0FEE0Dd31b22626fA2e10Ee6A223F8a684;
   address wbnb = 0xae13d989daC2f0dEbFf460aC112a837C89BAa7cd;
   function approve() public {
       IBEP20(0x78867BbEeF44f2326bF8DDd1941a4439382EF2A7).approve(router , 1 ether);
   }
   function swap() public {
       address[] memory path;
       path[0] = busd;
       path[1] = wbnb;
       path[2] = usdt;
       IPancakeRouter02(router).swapExactTokensForTokens( 1 ether , 0 , path , address(this) , block.timestamp );
   }
}

首先我向合約發送 2 BUSD,然後執行批准功能,然後執行不起作用的交換功能。我正在使用此網站獲取地址:https: //bsc.kiemtienonline360.com/。這是來自混音的消息:

Gas estimation errored with the following message (see below). The transaction execution will likely fail. Do you want to force sending?
Internal JSON-RPC error.
{
"code": 3,
"message": "execution reverted",
"data": "0x4e487b710000000000000000000000000000000000000000000000000000000000000032"
}

這是交易雜湊:0x180d8f44b3be3e0c06986f69acb2f343f71a9598dad1865caff73c50946c09f3

解決方案是我應該像這樣聲明路徑變數:

address[] memory path = new address[](3);

bsc 上的主網 Pancakeswap 路由器:0x10ED43C718714eb63d5aA57B78B54704E256024E

匯流排:0xe9e7cea3dedca5984780bafc599bd69add087d56

wbnb: 0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c

美元:0x55d398326f99059ff775485246999027b3197955

你在測試網上,我的錯。

我無法訪問您的 BUSD。但是工廠契約確實顯示了一個供您交換的池。

我只是使用您擁有的地址測試了幾次交換,用於路由器和 WBNB,它們可以正常工作。 https://testnet.bscscan.com/tx/0xda779fc16026d3429537b3f923b1714e8ed8f431cf86fb3c4fe710e2b3f549d7

我會嘗試不同的路線,並通過清除 cookie 並再次拉起契約,或嘗試通過類似巧克力蛋糕之類的東西來確保這不是混音錯誤。

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