cairo-vm icon indicating copy to clipboard operation
cairo-vm copied to clipboard

cairo-vm is a Rust implementation of the Cairo VM. Cairo (CPU Algebraic Intermediate Representation) is a programming language for writing provable programs, where one party can prove to another that...

cairo-rs

rust benchmark codecov

cairo-rs is a Rust implementation of the Cairo VM. The project used to be called cleopatra-cairo but after being feature complete we decided it was clearer to call the vm cairo-rs.

The code of the original Cairo VM can be found here.

Dependencies

  • Rust
  • Cargo
  • PyEnv for running the original VM and compiling cairo programs

Running cairo-rs

Compile with cargo build --release, once the binary is built, it can be found in target/release/ under the name cairo-rs-run. To run a compiled json program through the VM, call the executable giving it the path and name to the file to be executed.

Full compilation and execution example:

git clone https://github.com/lambdaclass/cairo-rs.git
cd cairo-rs

cargo build --release
./target/release/cairo-rs-run tests/support/fibonacci_compiled.json

Testing

Run the test suite:

make test

Code Coverage

Track of the project's code coverage: Codecov.

cairo-rs benchmarks:

Running a Cairo program that gets the 1000th Fibonacci number we got the following benchmarks:

  • Execution time with Criterion
  • Flamegraph
  • Github action results

Run the benchmark suite with cargo:

cargo bench

Cairo

Original Cairo VM Internals

We wrote a document explaining how the Cairo VM works. It can be found here.

Compilers and interpreters

These is a list of recommended books to learn how to implement a compiler or an interpreter.

Computational integrity and Zero Knowledge Proofs

Basics

ZK SNARKs

STARKs

Introduction:

Vitalik Buterin's blog series on zk-STARKs:

Alan Szepieniec's STARK tutorial:

StarkWare's STARK Math blog series: