BEP-20 Token 交易中被低估的交易
transaction underpriced in BEP-20 Token transaction
我在 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 并添加了一个比通过调用给我的值更多的随机数
web3.eth.getTransactionCount('ADDRESS')
。但它们都不起作用。我曾经在 Binance-Peg BUSD-T 中进行过很多交易,所以这对我来说是个大问题。有办法解决这个问题吗???
当您尝试替换交易并且替换 gas 价格太低时,会出现“交易定价过低”错误。
web3.eth.getTransactionCount()
只有 returns 开采的交易量。但是你可以有 N 个(不仅仅是一个)等待用已经更高的 nonce 来挖掘的交易。
示例:
- 您已提交 4 笔交易 - 随机数 1、2、3 和 4。
- 交易 1 和交易 2 已成功开采。
getTransactionCount()
returns 2
- 当您尝试使用随机数 3 或 4 提交另一笔交易时,它会尝试替换已经存在的交易。
解法:
如果您想替换现有交易,请使用更高的汽油价格。
或者,如果您想提交新交易(而不是替换之前的交易),请使用您的地址未使用过的更高随机数(“已成功开采”+“等待开采”+ 1 的总和)。
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
}
);
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。
我在 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 并添加了一个比通过调用给我的值更多的随机数
web3.eth.getTransactionCount('ADDRESS')
。但它们都不起作用。我曾经在 Binance-Peg BUSD-T 中进行过很多交易,所以这对我来说是个大问题。有办法解决这个问题吗???
当您尝试替换交易并且替换 gas 价格太低时,会出现“交易定价过低”错误。
web3.eth.getTransactionCount()
只有 returns 开采的交易量。但是你可以有 N 个(不仅仅是一个)等待用已经更高的 nonce 来挖掘的交易。
示例:
- 您已提交 4 笔交易 - 随机数 1、2、3 和 4。
- 交易 1 和交易 2 已成功开采。
getTransactionCount()
returns 2- 当您尝试使用随机数 3 或 4 提交另一笔交易时,它会尝试替换已经存在的交易。
解法:
如果您想替换现有交易,请使用更高的汽油价格。
或者,如果您想提交新交易(而不是替换之前的交易),请使用您的地址未使用过的更高随机数(“已成功开采”+“等待开采”+ 1 的总和)。
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
}
);
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。