STATICCALL
(and later EXTCODESIZE
& CALL
) overapproximation needs *much* better explanation
#666
Labels
documentation
Improvements or additions to documentation
We have a new system that overapproximates in certain cases. However, it turns out that this can be confusing to users.
If the address is fully symbolic, e.g.
fun(address myaddr)
and later this stuff is called, we overapproximate and return some nonsense value formyaddr
-- because it hallucinated that the contract at that address e.g. returnedabba
in thereturndata
. In this case, theSMTCex
will containstaticall-result-data-0
set toConcreteBuf "abba"
. But the system needs a solution to theaddress myaddr
in order to generate aSMTCex
, so it will come up with some value for the addressmyaddr
that doesn't make any sense. The definition of that contract is simply that for the value it is called with (whatever it was) it returnsaabb
.This definitely needs documentation at https://hevm.dev And it needs to be explained to the user during the counterexample generation so they are not surprised and start looking for a contract at that nonsense address. In fact, the address should not be shown, instead, we should tell the user that at that symbolic address, the contract must put
aabb
in the returndata.The text was updated successfully, but these errors were encountered: