These are the steps to follow to run a given Cairo program (program.cairo) with an associated input file (input.json).

Initial Setup

One-time only. If this step has been completed, begin from “Activate environment”.

Cairo is python based. An easy way to get started is:

Navigate to a directory where you would like to install Cairo and create and activate a virtual environment called cairo_venv.

python3 -m cairo_venv .
source cairo_venv/bin/activate

Install cairo-lang using pip.

pip3 install cairo-lang

For troubleshooting, see the official docs.

Activate environment

Activate the python virtual environment cairo_venv.

source cairo_venv/bin/activate

Use the command line interface

There are different commands available, each command can be called with the -h flag for an explanation of what it is and how to use it (e.g., cairo-compile -h). The commands are:

  • cairo-compile
  • cairo-format
  • cairo-hash-program
  • cairo-run
  • cairo-sharp

Compile code

Compile the code to produce and output called compiled_program.json.

cairo-compile program.cairo --output compiled_program.json

Run code

cairo-run --program=compiled_program.json --program_input=input.json \
    --print_output --layout=small --tracer

Send the code for proving

This instruction sends the program.cairo and input.json to the SHARP proving service.

cairo-sharp submit --source program.cairo --program_input input.json

Interact with proof

You can navigate to the on-chain verifier contract.

The contract can be queried with a read method isValid. Passing the fact hash will return True once the SHARP service has created the proof, bundled it, and sent it to the contract.

Using the proof

You can deploy a smart contract which can integrate the proof as part of a larger application. More details can be found in this solidity skeleton.