certora-cli-alpha-oz-publish-test

Runner for the Certora Prover


Keywords
blockchain, certora, certora-prover, ethereum, formal-verification, security-tools, smart-contracts, solana, stellar, web3
License
GPL-3.0-only
Install
pip install certora-cli-alpha-oz-publish-test==20250511.15.23.47923

Documentation

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

Optional Dependencies:

  • Graphviz: Graphviz is an optional dependency required for rendering visual elements, dot in particular. If not installed, some features may not work properly, such as Tac Reports. NOTE Remember to put dot in your system's PATH, by running:
    export PATH="/usr/local/bin:$PATH".
  • (Replace /usr/local/bin with the actual path where dot is installed.)

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

  • Make sure the path you used to set the variable CERTORA has important jars, scripts, and binaries like emv.jar, certoraRun.py, tac_optimizer.

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
  • You can make sure tac_optimizer builds correctly by cding in to the fried-egg directory and running cargo build --release. Also make sure tac_optimizer is in your path (set using CERTORA).

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 [email protected] 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.

OSZAR »