Solidity新手在Remix IDE运行程序遇无限Gas需求报错求助
问题解决
报错原因分析
你的代码存在两个核心问题,触发了Remix静态分析器的gas异常报错:
reply函数声明为pure,但pure函数的约束是不能读取或修改合约状态变量,同时你在函数内给局部memory变量赋值的操作无意义,导致分析器误判。- 你错误地给函数参数(局部memory变量)赋值,而非合约的存储变量
_feedback,逻辑完全偏离预期。
修正后的代码
pragma solidity ^0.5.0; contract test { string public _feedback; function reply() public nonpayable { _feedback = "Well done!"; } }
关键修改点
- 移除
reply函数的多余参数feedback,因为你并未实际使用它。 - 删除
pure修饰符,改用nonpayable(Solidity 0.5中public函数默认是payable,若不需要接收以太,明确声明nonpayable更安全),让函数可以合法修改合约状态变量。 - 直接给存储变量
_feedback赋值,实现预期功能。
修正后,两个gas无限的报错会消失,合约可正常运行。
内容的提问来源于stack exchange,提问作者user19725334
相关产品推荐
相关产品推荐

