Skip to content

The Certora Prover is the state-of-the-art security tool for automated formal verification of smart contracts running on EVM-based chains, Solana and Stellar

License

Notifications You must be signed in to change notification settings

Certora/CertoraProver

Repository files navigation

Certora Prover

The Certora Prover is a tool for formally verifying smart contracts. This document is intended for those who would like to contribute to the tool.

If you are interested to use the tool on our cloud platform without having to locally build it, we recommend following the documentation here: https://docs.certora.com/en/latest/docs/user-guide/install.html.

The instructions here are for users on Mac OS and Linux.

Dependencies

Installation

  • Create a directory anywhere to store build outputs.

    • Add an environment variable CERTORA whose value is the path to this directory.

    • Add this directory to PATH as well. For example if you are using a bash shell, you can edit your ~/.bashrc file like so:

      export CERTORA="preferred/path/for/storing/build/outputs"
      export PATH="$CERTORA:$PATH"
  • cd into a directory you want to store the CertoraProver source and clone the repo:

     git clone --recurse-submodules https://github.com/Certora/CertoraProver.git
    
  • Compile the code by running: ./gradlew assemble

  • If you want to clean up all artifacts of the project, run: ./gradlew clean

Troubleshooting

  • We recommend working from within a python virtual environment and installing all dependencies there:
cd CertoraProver
python -m venv .venv
source .venv/bin/activate
pip install -r scripts/certora_cli_requirements.txt
  • If you have Crypto installed, you may first need to uninstall (pip uninstall crypto) before installing pycryptodome

Running

  • You can run the tool by running certoraRun.py -h to see all the options.

    • There are several small examples for testing under Public/TestEVM. For example, you can run one of these like so:
          cd Public/TestEVM/CVLCompilation/OptionalFunction
          certoraRun.py Default.conf
    
  • You can run unit tests directly from IDEs like IntelliJ, or from the command line with ./gradlew test --tests <name_of_test_with_wildcards>

    • These tests are in CertoraProver/src/test (and also in the test directories of the various subprojects)

Contributing

  1. Fork the repo and open a pull request with your changes.
  2. Contact Certora at devhelp@certora.com once your PR is ready.
  3. Certora will assign a dev representative who will review and test the changes, and provide feedback directly in the PR.
  4. Once the feature is approved and ready to be merged, Certora will merge it through its internal process and include the feature in a subsequent Prover release.

LICENSE

Copyright (C) 2025 Certora Ltd. The Certora Prover is released under the GNU General Public License, Version 3, as published by the Free Software Foundation. For more information, see the file LICENSE.

About

The Certora Prover is the state-of-the-art security tool for automated formal verification of smart contracts running on EVM-based chains, Solana and Stellar

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published