/cairo-rs

Cleopatra Cairo is a Rust implementation of the Cairo VM. Cairo is a programming language for writing provable programs, where one party can prove to another that a certain computation was executed correctly. Cairo and similar proof systems can be used to provide scalability to blockchains.

Primary LanguageRustMIT LicenseMIT

Cleopatra Cairo VM

rustbenchmarkcodecov

Cleaopatra is a Rust implementation of the Cairo VM. The VM is fully functional but we don't support hints yet.

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

Dependencies

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

Running Cleopatra

Compile with cargo build --release, once the binary is built, it can be found in target/release/ under the name cleopatra-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/cleopatra_cairo.git
cd cleopatra_cairo

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

Testing

Run the test suite with cargo:

cargo test

Code Coverage

Track of the project's code coverage: Codecov.

Cleopatra benchmarks:

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

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

ZK STARKs

Introduction:

Vitalik Buterin's blog series on zk-STARKs:

Alan Szepieniec's STARK tutorial:

StarkWare's STARK Math blog series: