|
|
@ -120,7 +120,7 @@ def _analyze_states(state: GlobalState) -> list: |
|
|
|
# Why the second constraint? Because otherwise, Z3 returns a solution where param overflows. |
|
|
|
# Why the second constraint? Because otherwise, Z3 returns a solution where param overflows. |
|
|
|
|
|
|
|
|
|
|
|
solver.get_model(constraint) |
|
|
|
solver.get_model(constraint) |
|
|
|
state.annotate(OldBlockNumberUsedAnnotation) |
|
|
|
state.annotate(OldBlockNumberUsedAnnotation()) |
|
|
|
|
|
|
|
|
|
|
|
except UnsatError: |
|
|
|
except UnsatError: |
|
|
|
pass |
|
|
|
pass |
|
|
@ -141,9 +141,7 @@ def _analyze_states(state: GlobalState) -> list: |
|
|
|
I added a string comparison as a workaround. |
|
|
|
I added a string comparison as a workaround. |
|
|
|
""" |
|
|
|
""" |
|
|
|
|
|
|
|
|
|
|
|
if isinstance( |
|
|
|
if isinstance(annotation, OldBlockNumberUsedAnnotation): |
|
|
|
annotation, OldBlockNumberUsedAnnotation |
|
|
|
|
|
|
|
) or "OldBlockNumber" in str(annotation): |
|
|
|
|
|
|
|
state.mstate.stack[-1].annotate( |
|
|
|
state.mstate.stack[-1].annotate( |
|
|
|
PredictableValueAnnotation("block hash of a previous block") |
|
|
|
PredictableValueAnnotation("block hash of a previous block") |
|
|
|
) |
|
|
|
) |
|
|
|