【问题标题】:Error on estimating gas for swapExactTokensForTokens为 swapExactTokensForTokens 估算 gas 时出错
【发布时间】:2021-08-14 22:25:30
【问题描述】:

我是区块链新手,我正在尝试使用 web3.js。 我试图计算将 WBNB 换成 DAI 的气体,但我一直出错。 这是我的代码:

let routerContract = new puWeb3.eth.Contract(Config.PANCAKESWAP_ROUTER_V2_ABI, Config.PANCAKESWAP_ROUTER_V2_ADDRESS);
let tokenContract = new puWeb3.eth.Contract(Config.TOKEN_ABI, Config.WBNB_ADDRESS);

let amountIn = puWeb3.utils.toWei('0.01', 'ether');
let amountOutMin = await routerContract.methods.getAmountsOut(amountIn, [Config.WBNB_ADDRESS, Config.DAI_ADDRESS]).call();
amountIn = amountOutMin[0];
amountOutMin = amountOutMin[1];

console.log(amountIn+" WBNB ----> "+amountOutMin+" DAI");

// Set deadline 1 minute from now
let now = parseInt(Date.now()/1000);
let deadline = now + 60 

// Encode data
let encodedABI = routerContract.methods.swapExactTokensForTokens(amountIn, amountOutMin, [Config.WBNB_ADDRESS, Config.DAI_ADDRESS], Config.ACCOUNT_ADDRESS, deadline).encodeABI();

//Estimate gas
let estimateGas = await puWeb3.eth.estimateGas({
    from: Config.ACCOUNT_ADDRESS,   
    to: Config.PANCAKESWAP_ROUTER_V2_ADDRESS,    
    data: encodedABI,
});

错误是: 返回错误:执行恢复:TransferHelper: TRANSFER_FROM_FAILED

谁能告诉我我做错了什么?谢谢。

【问题讨论】:

    标签: blockchain web3js


    【解决方案1】:

    在我批准输入代币进行交换后,我终于设法获得了估计的 gas 并进行了交易。 您需要 2 笔交易:

    1. 先发送一笔交易,以输入金额批准输入token

      // Encode data
      let encodedABI = tokenContract.methods.approve(Config.PANCAKESWAP_ROUTER_V2_ADDRESS, puWeb3.utils.toHex(amountIn)).encodeABI();
      
    2. 批准交易后,发送交易到swap

    【讨论】:

      猜你喜欢
      • 2022-07-06
      • 2022-08-04
      • 1970-01-01
      • 2022-01-14
      • 2022-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-27
      相关资源
      最近更新 更多