Skip to content

Clarification on HAVOC in Call Trace After Linking External Contracts #30

@dayday2019

Description

@dayday2019

Hi Certora team,

I have a question regarding the reliability of Certora's analysis results in the presence of HAVOC steps in the call trace.

I understand that when Certora encounters an external function whose implementation is unknown, it models the return value using HAVOC. However, after I use the --link option to link the actual external contract, I still see many red HAVOC steps in the call trace. At the same time, in the "Contracts Call Resolutions" section, there are no longer any alerts related to unresolved calls.

Could you please clarify:

  1. Why are there still so many HAVOC steps in the call trace after linking the external contract?
  2. In such a case, can I still trust the rule evaluation results, even when the execution trace contains many HAVOC steps?
  3. Does the presence of many HAVOC steps necessarily imply that the rule result is unreliable?

As an example, here is a link where there are no more unresolved call alerts in "Contracts Call Resolutions", but the call trace still shows many HAVOC steps. Is the result of this rule considered trustworthy?

https://prover.certora.com/output/5562613/96e11c341033427fb84e48b04ecc7a61/

Thank you very much for your help!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions