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

Solidity计算器合约出现无限Gas需求错误,求问题定位

Solidity计算器合约Gas报错分析与解决

你遇到的这个"Gas requirement is infinite"是Solidity编译器的误判,你的add函数逻辑完全没问题——只是对单个storage变量result进行赋值,不存在循环、大面积修改storage的操作,实际执行时Gas消耗是正常的。

编译器之所以会弹出这个提示,是因为它在做Gas估算时,偶尔会对简单的storage写入操作产生误报,尤其是当合约中包含带require的函数(比如你的div函数)时,但这并不影响合约的实际部署和调用。

验证方式

实际部署合约后调用add函数,会发现它能正常执行,Gas消耗就是修改单个storage变量的固定值(约20000 Gas),远低于区块Gas上限。

可选优化

可以把result变量改为private,通过getResult函数对外暴露读取权限,更符合合约封装规范:

// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.13;

contract Calculator {
    int private result;

    function add(int a, int b) public {
        result = a + b;
    }

    function sub(int a, int b) public {
        result = a - b;
    }

    function mul(int a, int b) public {
        result = a * b;
    }

    function div(int a, int b) public {
        require(b != 0, "B should not be 0!");
        result = a / b;
    }

    function getResult() public view returns (int) {
        return result;
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 11:17:06