代码如下:
pragma solidity ^0.4.25;
contract aPlusb{
function aPlusb(){}
uint a=1;
event happen(uint input,uint output);
function plus(address addr,uint a,uint b) returns (uint){
require(a==2);
uint aa;
uint bb;
uint cc;
uint dd;
aa+=bb;
bb+=1;
cc+=3;
dd+=cc;
happen(a,a+1);
return a+1;
}
}
在remix-ide里直接使用它的jvm虚拟机测试没问题,但是一旦连接到我geth启动的私链,再调用plus函数,就会使我的gas耗尽,并不返回gas。。头疼
不建议用 require() 来返回错误信息,使用自定义Error可以省下不少的Gas费
error ErrorMsg(uint256 num); //error需要写在合约的外面
contract TestContract {
uint256 public num = 1;
function test() public view
{
require(num != 1, 'ErrorMsg'); //替换成下面这个
if(num == 1)
{
revert ErrorMsg(num);
}
}
}