@@ -92,36 +92,15 @@ public void step(Program program) {
9292
9393 try {
9494 OpCode op = OpCode .code (program .getCurrentOp ());
95- if (op == null ) {
96- throw Program .Exception .invalidOpCode (program .getCurrentOp ());
97- }
98-
99- // hard fork for 3.2
100- if (!VMConfig .allowTvmTransferTrc10 ()
101- && (op == CALLTOKEN || op == TOKENBALANCE || op == CALLTOKENVALUE || op == CALLTOKENID )) {
102- throw Program .Exception .invalidOpCode (program .getCurrentOp ());
103- }
104-
105- if (!VMConfig .allowTvmConstantinople ()
106- && (op == SHL || op == SHR || op == SAR || op == CREATE2 || op == EXTCODEHASH )) {
107- throw Program .Exception .invalidOpCode (program .getCurrentOp ());
108- }
109-
110- if (!VMConfig .allowTvmSolidity059 () && op == ISCONTRACT ) {
111- throw Program .Exception .invalidOpCode (program .getCurrentOp ());
112- }
113-
114- if (!VMConfig .allowTvmIstanbul () && (op == SELFBALANCE || op == CHAINID )) {
115- throw Program .Exception .invalidOpCode (program .getCurrentOp ());
116- }
117-
118- if (!VMConfig .allowTvmStake ()
119- && (op == ISSRCANDIDATE || op == REWARDBALANCE || op == STAKE || op == UNSTAKE
120- || op == WITHDRAWREWARD )) {
121- throw Program .Exception .invalidOpCode (program .getCurrentOp ());
122- }
123-
124- if (!VMConfig .allowTvmAssetIssue () && (op == TOKENISSUE || op == UPDATEASSET )) {
95+ if (op == null
96+ || (!VMConfig .allowTvmTransferTrc10 ()
97+ && (op == CALLTOKEN || op == TOKENBALANCE || op == CALLTOKENVALUE
98+ || op == CALLTOKENID ))
99+ || (!VMConfig .allowTvmConstantinople ()
100+ && (op == SHL || op == SHR || op == SAR || op == CREATE2 || op == EXTCODEHASH ))
101+ || (!VMConfig .allowTvmSolidity059 () && op == ISCONTRACT )
102+ || (!VMConfig .allowTvmIstanbul () && (op == SELFBALANCE || op == CHAINID ))
103+ ) {
125104 throw Program .Exception .invalidOpCode (program .getCurrentOp ());
126105 }
127106
@@ -173,9 +152,7 @@ public void step(Program program) {
173152 break ;
174153 case TOKENBALANCE :
175154 case BALANCE :
176- case REWARDBALANCE :
177155 case ISCONTRACT :
178- case ISSRCANDIDATE :
179156 energyCost = energyCosts .getBALANCE ();
180157 break ;
181158
@@ -317,19 +294,6 @@ && isDeadAccount(program, callAddressWord)
317294 energyCost =
318295 (long ) energyCosts .getEXP_ENERGY () + energyCosts .getEXP_BYTE_ENERGY () * bytesOccupied ;
319296 break ;
320- case STAKE :
321- case UNSTAKE :
322- energyCost = energyCosts .getStakeAndUnstake ();
323- break ;
324- case WITHDRAWREWARD :
325- energyCost = energyCosts .getWithdrawReward ();
326- break ;
327- case TOKENISSUE :
328- energyCost = energyCosts .getTokenIssue ();
329- break ;
330- case UPDATEASSET :
331- energyCost = energyCosts .getUpdateAsset ();
332- break ;
333297 default :
334298 break ;
335299 }
@@ -763,20 +727,6 @@ && isDeadAccount(program, callAddressWord)
763727 program .step ();
764728 }
765729 break ;
766- case REWARDBALANCE : {
767- DataWord address = program .stackPop ();
768- DataWord rewardBalance = program .getRewardBalance (address );
769-
770- if (logger .isDebugEnabled ()) {
771- hint = ADDRESS_LOG
772- + Hex .toHexString (address .getLast20Bytes ())
773- + " reward balance: " + rewardBalance .toString ();
774- }
775-
776- program .stackPush (rewardBalance );
777- program .step ();
778- }
779- break ;
780730 case ISCONTRACT : {
781731 DataWord address = program .stackPop ();
782732 DataWord isContract = program .isContract (address );
@@ -785,14 +735,6 @@ && isDeadAccount(program, callAddressWord)
785735 program .step ();
786736 }
787737 break ;
788- case ISSRCANDIDATE : {
789- DataWord address = program .stackPop ();
790- DataWord isSRCandidate = program .isSRCandidate (address );
791-
792- program .stackPush (isSRCandidate );
793- program .step ();
794- }
795- break ;
796738 case ORIGIN : {
797739 DataWord originAddress = program .getOriginAddress ();
798740
@@ -1452,46 +1394,6 @@ && isDeadAccount(program, callAddressWord)
14521394 program .step ();
14531395 break ;
14541396 }
1455- case STAKE : {
1456- DataWord srAddress = program .stackPop ();
1457- DataWord stakeAmount = program .stackPop ();
1458- boolean result = program .stake (srAddress , stakeAmount );
1459- program .stackPush (new DataWord (result ? 1 : 0 ));
1460-
1461- program .step ();
1462- }
1463- break ;
1464- case UNSTAKE : {
1465- boolean result = program .unstake ();
1466- program .stackPush (new DataWord (result ? 1 : 0 ));
1467-
1468- program .step ();
1469- }
1470- break ;
1471- case WITHDRAWREWARD : {
1472- program .withdrawReward ();
1473- program .step ();
1474- }
1475- break ;
1476- case TOKENISSUE : {
1477- DataWord name = program .stackPop ();
1478- DataWord abbr = program .stackPop ();
1479- DataWord totalSupply = program .stackPop ();
1480- DataWord precision = program .stackPop ();
1481-
1482- program .tokenIssue (name , abbr , totalSupply , precision );
1483- program .step ();
1484- break ;
1485- }
1486- case UPDATEASSET : {
1487- program .stackPop ();
1488- DataWord urlDataOffs = program .stackPop ();
1489- DataWord descriptionDataOffs = program .stackPop ();
1490-
1491- program .updateAsset (urlDataOffs , descriptionDataOffs );
1492- program .step ();
1493- break ;
1494- }
14951397 case RETURN :
14961398 case REVERT : {
14971399 DataWord offset = program .stackPop ();
0 commit comments