这里的新手请耐心点。
我使用EthersJS最新v5是为了与我们的合同进行交互,到目前为止,这是很好的工作。然而,我发现,在一段时间(大约3月1日),我们的许多交易失败,因为汽油用完了。
您可以看到事务这里的列表。
据我所知,EthersJS将通过estimateGas在内部通过合同计算费用数额。至少在我们这边我们不做任何手动气体计算。
因此,我想知道为什么在某一段时间内,许多交易失败了。也许这与使用某种RPC url有关?
我想了解一下。我们称之为redeemAuto的合同方法之一如下:
const contract = new ethers.Contract(
contracts[contractName].address,
contracts[contractName].abi,
library.getSigner()
);
await contract.redeemAuto(etherToWei(amount))所以这里没什么好想的。
谢谢
发布于 2023-05-23 22:15:24
气体估计并不总是准确的,或者可能在呼叫执行时发生变化。这是一个估计。你的交易失败已经使用了98%的气体,所以你可能需要提高你的估计,给你的气体一些回旋的空间。
您可以通过提供所有必要的参数作为选项来覆盖默认的气体估计值。
与以太;
const tx = await contract.redeemAuto(amount,{value:value,gas:150000,...})有一些工具可以评估您的交易的天然气成本,并调查为什么气体单位不同。
例如
我怀疑您在契约中执行的循环和或具有未定义长度的数组可能会导致这种行为。
请注意,提供比所需的更多的气体单元是安全的,因为EVM永远不会对这些单元充电过高。你只会用你所需要的。(你需要有这个平衡)
https://ethereum.stackexchange.com/questions/150354
复制相似问题