Функция продажи на 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 ответ

Я нашел проблему. Я указывал адрес входного токена при утверждении суммы. Так вот почему пособие равно нулю!

Другие вопросы по тегам