BEP-20 代币交易中被低估的交易

Posted

技术标签:

【中文标题】BEP-20 代币交易中被低估的交易【英文标题】:transaction underpriced in BEP-20 Token transaction 【发布时间】:2021-08-30 12:04:05 【问题描述】:

我在 Binance-Peg BUSD-T 中的 Binance Smart Chain 中进行了一些交易,并且成功运行。但经过 5 次交易。我遇到了Returned error: transaction underpriced 的问题!这是我的代码:

const web3 = new Web3('https://bsc-dataseed1.binance.org:443');

const contract = new web3.eth.Contract(abi, usdtContractAddr, 
  from: 'SENDER_ADDRESS', // default from address
  gasPrice: '200000000' // default gas price in wei, 20 gwei in this case
);

web3.eth.accounts.wallet.add('SENDER_PRIVATE_KEY');
const receipt = await contract.methods.transfer('TO_ADDRESS', '1000000000000000000').send(
    from: 'SENDER_ADDRESS',
    gas: 100000
);

我已经增加了 10% 的 gas 并添加了一个超过调用给我的值的 nonce web3.eth.getTransactionCount('ADDRESS')。但它们都不起作用。我曾经在 Binance-Peg BUSD-T 中进行过很多交易,所以这对我来说是个大问题。有没有办法解决这个问题???

【问题讨论】:

【参考方案1】:

当您尝试替换交易并且替换的 gas 价格太低时,会出现“交易价格过低”错误。

web3.eth.getTransactionCount() 只返回挖掘交易的数量。但是你可以有 N 个(不仅仅是一个)正在等待以已经更高的 nonce 挖掘的交易。

示例:

您已提交 4 笔交易 - 随机数 1、2、3 和 4。 交易 1 和 2 已成功开采。 getTransactionCount() 返回 2 当您尝试使用 nonce 3 或 4 提交另一个 tx 时,它会尝试替换已经存在的交易。

解决方案:

如果您想替换现有交易,请使用更高的 gas 价格。

或者,如果您想提交新交易(而不是替换之前的交易),请使用您的地址尚未使用的更高随机数(“成功开采”+“等待开采”+ 1 的总和)。

【讨论】:

好的。非常感谢。我明白了。但是我怎样才能得到完整的随机数??? (“成功开采”+“等待开采”) 目前没有web3(或底层JSON-RPC)方法来获取每个地址的“等待被挖掘”交易量。您可以在应用程序中(在变量或单独的数据库中)保留单独的等待事务计数。或者,如果您没有历史数据,则需要手动计算。【参考方案2】:
const tx = await router.swapExactTokensForTokens(
  amountIn,
  amountOutMin,
  [tokenIn, tokenOut],
  addresses.recipient,
  Date.now() + 1000 * 60 * 10, //10 minutes
  // Math.floor(Date.now() / 1000) + 60 * 20,

  
    gasPrice: ethers.utils.parseUnits('6','gwei').toString(),
    gasLimit: 177302
  

);

【讨论】:

没有任何解释的代码很少有帮助。 Stack Overflow 是关于学习的,而不是提供 sn-ps 来盲目复制和粘贴。请编辑您的问题并解释它如何回答所提出的具体问题。见How to Answer。【参考方案3】:
const contract = new web3.eth.Contract(abi, usdtContractAddr, 
  from: 'SENDER_ADDRESS', // default from address
  gasPrice: '200000000' // default gas price in wei, 20 gwei in this case
);

准确地说,gasPrice 不是 20 gwei,而是 0.2 gwei。向 gasPrice 添加 2 个额外的零应该可以消除定价过低的错误,因为 0.2 gwei 小于 BSC 区块链上的最低 gasPrice。

【讨论】:

以上是关于BEP-20 代币交易中被低估的交易的主要内容,如果未能解决你的问题,请参考以下文章

NodeJs 上的 BEP-20 代币交易

如何计算 BSC (BEP-20) 区块链中 USDT 等代币交易的 gasLimit?

我应该为 Bep20 代币设置每笔交易/24 小时的最大卖出限额吗?

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

一文读懂UOS的合约交易代币

如何在 Serum Anchor 中签署代币交易