Skip to content

Latest commit

 

History

History
56 lines (40 loc) · 2.24 KB

README.md

File metadata and controls

56 lines (40 loc) · 2.24 KB

Running the certora verification tool

These instructions detail the process for running CVT on the contracts.

Documentation for CVT and the specification language are available here

Running the verification

Initial step: if certora prover is not installed follow the steps here

First step is to create the munged/ directory. Enter the certora/ directory and run the following:

touch applyHarness.patch
make munged

The second and major step is to run all the verification rules. The script certora/scripts/run-all.sh is used to submit all verification jobs to the Certora verification service. These scripts should be run from the root directory:

bash certora/scripts/run-all.sh

Note: When running the rules locally, please remove the solc version from the .conf files as when using solc-select solc version should not be specified in .conf

After the jobs are complete, the results will be available on the Certora portal.

Adapting to changes

Some of our rules require the code to be simplified in various ways. Our primary tool for performing these simplifications is to run verification on a contract that extends the original contracts and overrides some of the methods. These "harness" contracts can be found in the certora/harness directory.

This pattern does require some modifications to the original code: some methods need to be made virtual or public, for example. These changes are handled by applying a patch to the code before verification.

When one of the verify scripts is executed, it first applies the patch file certora/applyHarness.patch to the contracts directory, placing the output in the certora/munged directory. We then verify the contracts in the certora/munged directory.

If the original contracts change, it is possible to create a conflict with the patch. In this case, the verify scripts will report an error message and output rejected changes in the munged directory. After merging the changes, run make record in the certora directory; this will regenerate the patch file, which can then be checked into git.