gpt4 book ai didi

ethereum - 覆盖 ethers.js 合约交互中的 gasPrice

转载 作者:行者123 更新时间:2023-12-05 05:44:34 45 4
gpt4 key购买 nike

如何使用 ethers.js 在合约交互中设置 gasPrice?我正在尝试覆盖以下代码中的 gasPrice:

let txPromise = contract.populateTransaction.runAdventureVRF(0, false, { gasPrice: 800000 })

walletSigner.sendTransaction(txPromise)

我收到错误消息 transaction underpriced。如果我尝试记录 txPromise.overrides,它是未定义的,这让我觉得 gas 价格从未被设定。

docs

附加代码

const provider = new ethers.providers.AlchemyProvider('matic', process.env.ALCHEMY_API_KEY)
const wallet = new ethers.Wallet(process.env.PK)
const abi = '[{"inputs":[{"internalType":"uint256","name":"_teamId","type":"uint256"},{"internalType":"bool","name":"_energy","type":"bool"}],"name":"runAdventureVRF","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}]'
const contract = new ethers.Contract(address, abi, provider);
let walletSigner = wallet.connect(provider)

最佳答案

一种解决方案是将 gas 价格添加到您的交易中:

walletSigner.sendTransaction(txPromise, {gasPrice: ethers.utils.parseUnits('100', 'gwei'), gasLimit: 1000000});

这是我能找到的唯一解决方案,因为 getGasPrice()estimateGas() 返回一个空的 json 数组。我不知道这是否与提供者(炼金术)有关或为什么失败。

覆盖 gas 价格的具体语法在这里:

Ethers Override Transaction Gas Price Manually

它也在以下 Ethers 文档中,但不是很清楚(如果您不知道语法):

Ethers Contract Functions Send

在撰写本文时,我所有交易的默认 gas 值为 1.5 gwei,这在 matic 网络上远远不够。这也会无限期地挂起交易,直到您发送具有相同 nonce 值的新交易。即使你解决了你的 gas 问题,在你处理挂起的交易之前,其他交易也会堆积在它后面。

关于ethereum - 覆盖 ethers.js 合约交互中的 gasPrice,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71577182/

45 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com