Ich stoße auf ein seltsames Problem, wenn ich meinen Vertrag in Remix-ide + geth teste
:
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;
}
}
Wenn ich dies in Remix-id Java EVM teste, wird Folgendes angezeigt:
Aber wenn ich den Vertrag mit dem web3provder für die private Kette bereitstelle und die Funktion func plus() ausführe, geht ihr das Benzin wie folgt aus:
Wahrscheinlich fehlen Ihnen die Byzanz-Opcodes in Ihrer privaten Kette.
Der Revert-Opcode wurde mit dem Byzantium-Fork eingeführt . In Ketten ohne Gabel verhält es sich wie ein ungültiger Opcode und verursacht den Verbrauch des gesamten Gases.
Um Byzantium-Opcodes zu aktivieren, müssen Sie sie in Ihrer Genesis-Datei aktivieren
{
"config": {
...
"byzantiumBlock": BLOCK_NUMBER
},
...
}
Sie müssen BLOCK_NUMBER durch den ersten Block ersetzen, in dem Sie die Byzanz-Opcodes aktivieren möchten.
John