Solidity
使用 swapExactTokensForTokens 進行交換,但執行已恢復
我正在嘗試使用測試網上的 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 並再次拉起契約,或嘗試通過類似巧克力蛋糕之類的東西來確保這不是混音錯誤。