Функция продажи на Pancakeswap с библиотекой Ether на Node.js
Я пытаюсь поменять свои токены busd на bnb (wbnb) с помощью маршрутизатора pancakeswap v2 в тестовой сети. Хотя у меня CALL_EXCEPTION.
Прежде чем я углублюсь в код, у меня такая же проблема с bscscan . Я не знаю, связано ли это, но, хотя я успешно одобряю контракт, он все равно возвращает 0 для надбавки. Вот метод, который я пробую, я получил значения из моего кода. Общая сумма оплаты (сумма + плата за газ) не меняется, вне зависимости от ввода.
Вот мои активы в тестовой сети.
Значение amountIn заполняется возвращаемым значением метода busdContract.balanceOf
const abi = await retrieveAbi(tokenIn);
erc = new ethers.Contract(
tokenIn,
abi,
account
);
const balance = await erc.balanceOf(process.env.WALLET_ADDRESS);
amountOutMin рассчитывается методом pancakeswapRouter.getAmountsOut
let amountOutMin = 0;
if (parseInt(slippage) !== 0) {
const amounts = await router.getAmountsOut(amountIn, [tokenIn, tokenOut]);
amountOutMin = amounts[1].sub(amounts[1].mul(slippage).div(100));
}
return amountOutMin;
ApproveToken:
const tx = await erc.approve(
tokenIn,
tokenAmount,
{
gasPrice: gasPrice,
gasLimit: gasLimit
}
);
const receipt = await tx.wait();
Функция продажи (где на самом деле выдает ошибку CALL_EXCEPTION):
const tx = await router.swapExactTokensForETH(
amountIn,
amountOutMin,
[tokenIn, tokenOut],
process.env.WALLET_ADDRESS,
Date.now() + 1000 * 60 * 5, // 5 minutes
{
gasPrice: gasPrice,
gasLimit: gasLimit
}
);
const receipt = await tx.wait();
Я также попытался указать произвольную сумму и вычислить ее, используя полученное десятичное значение abi (busd abi), но безуспешно; он дает ту же ошибку: CALL_EXCEPTION.
const amountIn = ethers.utils.parseUnits('100', decimals);
Ни сообщение об ошибке, ни неудачная транзакция не дают мне никаких подсказок. Он говорит только code = CALL_EXCEPTION.Это никуда меня не ведет.
Я подозреваю, что проблема в утверждении и разрешении. Несмотря на то, что транзакция одобрения прошла успешно, размер busd моего кошелька всегда равен нулю. Спасибо заранее.
Вот переменные, показанные на изображениях:
211064843184329663888 amountIn
468509127086739224 amountOutMin
0x8301f2213c0eed49a7e28ae4c3e91722919b8b47 tokenIn (BUSD)
0xae13d989dac2f0debff460ac112a837c89baa7cd tokenOut (WBNB)
1 ответ
Я нашел проблему. Я указывал адрес входного токена при утверждении суммы. Так вот почему пособие равно нулю!