You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Hedera测试网近乎相同交易中gasUsed差异原因咨询

问题:Hedera测试网中gasLimit设置不同导致gasUsed不一致的原因

我在Hedera测试网部署了指定Solidity合约,使用ethers.js发起两次参数完全一致的合约调用:

  • 第一次将gasLimit设为eth_estimateGas返回的精确值(400000)
  • 第二次设为该值的1.1倍(440000)

结果显示两次交易的gasUsed分别为320000和352000,第二次额外消耗32000 gas,按预期两次gasUsed应一致,特此咨询原因。

合约代码

// SPDX-License-Identifier: GPL-3.0
pragma solidity 0.8.18;

contract ExpendSomeGasDemo {
    uint256 public state;

    function updateState(
        uint256 newState
    )
        public
        returns (uint256 updatedState)
    {
        state = newState;
        updatedState = newState;
    }
}

交易代码(ethers.js)

// with exact estimated amount of gas
const estimatedGas2 = (await expendGasSc.estimateGas.updateState(1_000_000_123n)).toBigInt();
console.log('estimatedGas2', estimatedGas2);
const gasLimit2 = estimatedGas2 * 1n;
console.log('gasLimit2', gasLimit2);
const txResponse2 = await (await expendGasSc
    .updateState(
        1_000_000_123n,
        { gasLimit: gasLimit2 },
    ))
    .wait();
const gasUsed2 = txResponse2.gasUsed.toBigInt();
console.log('gasUsed2', gasUsed2);

// with 110%  of estimated amount of gas
const estimatedGas3 = (await expendGasSc.estimateGas.updateState(1_000_000_123n)).toBigInt();
console.log('estimatedGas3', estimatedGas3);
const gasLimit3 = estimatedGas3 * 11n / 10n;
console.log('gasLimit3', gasLimit3);
const txResponse3 = await (await expendGasSc
    .updateState(
        1_000_000_123n,
        { gasLimit: gasLimit3 },
    ))
    .wait();
const gasUsed3 = txResponse3.gasUsed.toBigInt();
console.log('gasUsed3', gasUsed3);

输出结果

estimatedGas2 400000n
gasLimit2 400000n
gasUsed2 320000n
estimatedGas3 400000n
gasLimit3 440000n
gasUsed3 352000n

原因分析

这是Hedera网络特有的gas计费机制导致的:

  • Hedera的gas计算逻辑和以太坊不同,它要求交易的gasUsed至少为设置的gasLimit的80%(即0.8倍),这是平台为避免用户设置过低gasLimit浪费网络资源设计的规则。
  • 第一次设置gasLimit=400000,0.8×400000=320000,刚好等于合约实际执行消耗的gas,因此gasUsed显示为320000。
  • 第二次设置gasLimit=440000,0.8×440000=352000,即便合约实际执行只需要320000 gas,Hedera也会按最低比例收取费用,所以gasUsed显示为352000。

内容的提问来源于stack exchange,提问作者bguiz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 04:00:27