Contract-Invocation
PancakeSwap V2 swapExactTokensForTokens 不工作,卡住
我無法使用
ethers.js
. 我知道這個特定主題有很多類似的問題,但似乎沒有一個答案對我有用。我的嘗試主要基於Noob Troubleshooting failed BSC transaction using ethers.js 和 Pancakeswap v2 router。我的程式碼如下:
const ethers = require('ethers'); const addresses = { WBNB: '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', BUSD: '0xe9e7cea3dedca5984780bafc599bd69add087d56', factory: '0xcA143Ce32Fe78f1f7019d7d551a6402fC5350c73', router: '0x10ed43c718714eb63d5aa57b78b54704e256024e', recipient: '0xE00e552a0e18ca773a26f65cE957915D302CBE10' } const PRIVATE_KEY = "" const mygasPrice = ethers.utils.parseUnits('5', 'gwei'); const WSS = "wss://*.bsc.quiknode.pro/*/" const provider = new ethers.providers.WebSocketProvider(WSS); const wallet = new ethers.Wallet(PRIVATE_KEY); const account = wallet.connect(provider); const router = new ethers.Contract( addresses.router, [ 'function swapExactTokensForTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts)' ], account ); const init = async () => { console.log("Test TX"); let tokenIn = addresses.WBNB, tokenOut = addresses.BUSD; const amountIn = ethers.utils.parseUnits('0.0005', 'ether'); const amountOutMin = 0; console.log("Starting swap..."); const tx = await router.swapExactTokensForTokens( amountIn, amountOutMin, [tokenIn, tokenOut], addresses.recipient, Math.floor(Date.now() / 1000) + 60 * 20, // 20 minutes from the current Unix time { gasPrice: mygasPrice, gasLimit: 500000 } ); console.log("Swap done!"); const receipt = await tx.wait(); console.log("Transaction receipt"); console.log(receipt); } init();
當我執行此程式碼時,它會卡住。
Test TX Starting swap...
私鑰生成的錢包與收款地址相同(
0xE00e552a0e18ca773a26f65cE957915D302CBE10
),WBNB
餘額充足。我只是嘗試在 pancakeswap V2 (WBNB
toBUSD
) 上進行手動交換,它完美地工作 (https://bscscan.com/tx/0xe3351e82ed4a86e18e164ba47b44bb7fa74faaeda67f8b7e3486f6410e5b50b9
)。我目前沒有想法,我不知道如何進一步調試。
謝謝你的幫助。
您需要呼叫
swapExactETHForTokens
將 WBNB 交換為令牌,而不是swapExactTokensForTokens
。swapExactTokensForTokens
用於將非 BNB 代幣兌換成另一個非 BNB 代幣。(至少,這是我能想到的。)
看起來這是 BSC 節點(QuickNode)的問題。我剛剛開始使用這項服務,但到目前為止它看起來非常不可靠。也許我做錯了什麼,我很想知道是什麼。
更改為
WSS
後wss://bsc-ws-node.nariox.org:443
它可以工作。