@@ -433,8 +433,7 @@ def _build_spec(
433
433
# This is because #push doesn't handle `.Account`. And it's okay to be Int for other opcodes.
434
434
_init_subst ['CALLER_CELL' ] = KVariable ('CALLER_CELL' , KSort ('Int' )) # CALLER_CELL should be Int for CALLER.
435
435
_init_subst ['ORIGIN_CELL' ] = KVariable ('ORIGIN_CELL' , KSort ('Int' )) # ORIGIN_CELL should be Int for ORIGIN.
436
- inf_gas_cell = KEVM .inf_gas (KVariable ('GAS_CELL' , KSort ('Gas' )))
437
- _init_subst ['GAS_CELL' ] = inf_gas_cell # inf_gas to reduce the computation cost.
436
+ _init_subst ['GAS_CELL' ] = KEVM .inf_gas (KVariable ('GAS_CELL' , 'Gas' )) # SLOAD & SSTORE must use infinite gas.
438
437
_init_subst .update (init_map )
439
438
init_subst = CSubst (Subst (_init_subst ), init_constraints )
440
439
@@ -467,6 +466,9 @@ def _le(a: KInner, b: KInner) -> KInner:
467
466
init_subst : dict [str , KInner ] = {}
468
467
final_subst : dict [str , KInner ] = {}
469
468
469
+ if opcode_symbol == 'SSTORE' :
470
+ init_subst ['STATIC_CELL' ] = KToken ('false' , KSort ('Bool' ))
471
+
470
472
if opcode_symbol in NOT_USEGAS_OPCODES :
471
473
# TODO: Should allow infGas to calculate gas. Skip for now.
472
474
init_subst ['USEGAS_CELL' ] = KToken ('false' , KSort ('Bool' ))
@@ -572,7 +574,7 @@ def create_kcfg_explore() -> KCFGExplore:
572
574
proof ,
573
575
create_kcfg_explore = create_kcfg_explore ,
574
576
max_depth = 1 ,
575
- max_iterations = None ,
577
+ max_iterations = 300 ,
576
578
cut_point_rules = KEVMSemantics .cut_point_rules (
577
579
break_on_jumpi = False ,
578
580
break_on_jump = False ,
0 commit comments