我们知道,在使用estimateGas进行gas预估的时间,如果得到预估结果,其实意味着这笔交易逻辑基本是没有问题的:但是在bsc测试网开发的时间,就遇到了一次意外。在拿到预估gas之后,前端一直上链交易失败。查了区块链浏览器,发现根本没有上链。看了代码逻辑,也没有问题。使用remix
我们知道,在使用estimateGas
进行gas预估的时间,如果得到预估结果,其实意味着这笔交易逻辑基本是没有问题的:
但是在bsc测试网开发的时间,就遇到了一次意外。 在拿到预估gas之后,前端一直上链交易失败。
手动将MetaMask的GasPrice调整为区块链正常交易的gas即可,我使用的是BSC测试网,所以这里设置为10 Gwei。
我们也可以在代码发送交易的时间,主动设置GasPrice来解决问题。
// 构建交易对象
const txObject = {
from: web3.eth.accounts.privateKeyToAccount(privateKey).address,
to: toAddress,
value: amountToSend
};
// 获取 gasPrice
web3.eth.getGasPrice().then((gasPrice) => {
txObject.gasPrice = gasPrice;
// 估算 gasLimit
web3.eth.estimateGas(txObject).then((gasLimit) => {
txObject.gas = gasLimit;
// 签名交易并发送
web3.eth.accounts.signTransaction(txObject, privateKey).then((signedTx) => {
web3.eth.sendSignedTransaction(signedTx.rawTransaction)
.on('receipt', (receipt) => {
console.log('Transaction Hash:', receipt.transactionHash);
});
});
});
});
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!