Я сталкиваюсь со странной проблемой, когда тестирую свой контракт в Remix-ide + geth
:
pragma solidity ^0.4.22;
contract aPlusb{
function aPlusb(){}
uint a=1;
event happen(uint input,uint output);
function plus(uint a,uint b) returns (uint){
require(a==2);
happen(a,a+1);
return a+1;
}
}
Когда я тестирую это в Remix-id Java EVM, это показывает следующее:
Но когда я развертываю контракт в частной цепочке с помощью web3provder и запускаю функцию func plus(), у него кончается газ следующим образом:
Вероятно, вам не хватает опкодов byzantium в вашей приватной цепочке.
Код операции Revert был представлен вместе с форком Byzantium . В цепочках без форка он будет вести себя как недопустимый код операции и приведет к потреблению всего газа.
Чтобы включить коды операций Byzantium, вы должны включить их в своем генезис-файле.
{
"config": {
...
"byzantiumBlock": BLOCK_NUMBER
},
...
}
Вы должны заменить BLOCK_NUMBER первым блоком, в котором вы хотите включить коды операций byzantium.
Джон