在 Node.js 上使用以太库在 Pancakeswap 上出售功能

Posted

技术标签:

【中文标题】在 Node.js 上使用以太库在 Pancakeswap 上出售功能【英文标题】:Sell Function on Pancakeswap with Ether Library on Node.js 【发布时间】:2022-01-21 16:35:07 【问题描述】:

我正在尝试通过在测试网上使用 pancakeswap 路由器 v2 将我的 busd 令牌换成 bnb (wbnb)。虽然我有 CALL_EXCEPTION。

在我深入研究代码之前,我在bscscan 上遇到了同样的问题。我不知道这是否相关,但即使我成功批准了合同,它仍然为 allowance 返回 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;

批准令牌:

const tx = await erc.approve(
        tokenIn,
        tokenAmount,
        
            gasPrice: gasPrice,
            gasLimit: gasLimit
        
    );

    const receipt = await tx.wait();

Sell 函数(它实际上会抛出 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】:

我发现了问题。我在批准金额时输入了输入令牌的地址。所以这就是津贴为零的原因!

【讨论】:

以上是关于在 Node.js 上使用以太库在 Pancakeswap 上出售功能的主要内容,如果未能解决你的问题,请参考以下文章

无法使用带有 Uniswap SDK 的 node.js 中的以太币连接到本地以太坊节点(主网)

以太坊 DApp 开发入门实战! 用Node.js和truffle框架搭建——区块链投票系统!

在电子中使用 node.js 模块

使用Node.js在AMM交易所上自动交易代币简单示例

CryptoCurrency NODE.js Web3 以太坊 - 无法连接到 TESTRPC

Node.js生态要靠区块链拯救? 以太坊团队这位小哥给出了开源协作的新方案