web3.js 中的 sendSignedTransaction 花费的时间太长

sendSignedTransaction in web3.js takes too long

提问人:Mazyar Daryaee 提问时间:11/11/2023 更新时间:11/11/2023 访问量:13

问:

这是我提供的代码,用于在 goerli 网络上向 USDT 合约发送简单交易以铸造一些代币。但是当我运行时,它需要很长时间才能超过有限的超时时间(顺便说一句,这并不短)。

const Tx = require('ethereumjs-tx').Transaction;
const {HttpProvider, Web3, Contract} = require("web3")
const privateKey = "<PK>"
Buffer.from(privateKey , 'hex');

const w3 = new Web3('<endPoint>')
let USDT_ABI = '<abi>'
const USDTAddress = '0x5BCc22abEC37337630C0E0dd41D64fd86CaeE951'
let contract = new w3.eth.Contract(USDT_ABI, USDTAddress)
let owner = "<account address>"

let rawTransaction = {
    nonce: w3.utils.toHex(w3.eth.getTransactionCount(owner)),
    gasPrice: w3.utils.toHex(15),
    gasLimit: w3.utils.toHex(51302),
    from: owner,
    to: USDTAddress,
    data: contract.methods.mint('0x4b7fceBd9a645fAad26893f360Fe5b8b36B613e1', 10070000000).encodeABI()
}
w3.eth.accounts.signTransaction(rawTransaction, privateKey).then(signature=>{
    console.log(signature.transactionHash);
    w3.eth.sendSignedTransaction(signature.rawTransaction).then(console.log)
});

有什么建议吗?

以太坊 区块链 Web3JS

评论


答:

1赞 Akeel Ahmed Qureshi 11/23/2023 #1

您的代码超时的原因可能与手动设置不适当的 gas 价格和 gas 限制有关。您可以尝试设置更高的 gas 限制或设置网络的当前 gas 价格。

您可以在网络上查看当前的 gas 价格并相应地调整您的值。

const gasPrice = await w3.eth.getGasPrice(); // Use current gas price from the network

您也可以尝试提高您的气体限制。

gasLimit: w3.utils.toHex(60000), // Adjust based on the complexity of your transaction

此外,您可以尝试在不同的网络上运行代码,以确保它不是特定于网络的问题。