crytic/echidna

Vyper support is limited

ggrieco-tob opened this issue · 2 comments

Echidna works on vyper contracts running the .vy files directly, however:

  • properties should be hardcoded in the contract
  • any use of framework will fail to work (e.g. brownie).
  • slither won't run on it, so there is no constant extraction or assertion detection.
  • we still get the constants if they are returned by a function inside the code
  • coverage feedback and source code integration works

It is expected to have a limited effectiveness since we cannot get useful constants from the source code.

This is something we won't fix unless Vyper has more traction.

FYI, I added Echidna to my 🐍 snekmate Vyper contracts: pcaversaccio/snekmate#239. Some important learnings:

  • hevm doesn't strip whitespace characters (!) when FFI is used,
  • use filterFunctions in the Echidna config file to remove crashing calls to the VyperDeployer contract if allContracts: true is used.