Cairo 🐺
⚡ Blazing ⚡ fast ⚡ compiler for Cairo, written in 🦀 Rust 🦀
![](https://raw.githubusercontent.com/abaleo/cairo/main/./resources/img/cairo-logo-square.png)
Report a Bug - Request a Feature - Ask a Question
Table of Contents
About
Cairo is the first Turing-complete language for creating provable programs for general computation.
Getting Started
Prerequisites
- Install Rust
- Setup Rust:
rustup override set stable && rustup update
Ensure rust was installed correctly by running the following from the root project directory:
cargo test
Compiling and running Cairo files
Compile Cairo to Sierra:
cargo run --bin cairo-compile -- --single-file /path/to/input.cairo /path/to/output.sierra --replace-ids
Compile Sierra to casm (Cairo assembly):
cargo run --bin sierra-compile -- /path/to/input.sierra /path/to/output.casm
Run Cairo code directly:
cargo run --bin cairo-run -- --single-file /path/to/file.cairo
See more information here. You can also find Cairo examples in the examples directory.
For running tests specifically, see here: cairo-test
Compiling Starknet Contracts
Compile a Starknet Contract to a Sierra ContractClass:
cargo run --bin starknet-compile -- --single-file /path/to/input.cairo /path/to/output.json
Or specify the contract path if multiple contracts are defined in the same project:
cargo run --bin starknet-compile -- /path/to/input/crate /path/to/output.json --contract-path path::to::contract
Compile the ContractClass of a CompiledClass:
cargo run --bin starknet-sierra-compile -- /path/to/input.json /path/to/output.casm
Development
Install the language server
Follow the instructions in vscode-cairo.
Roadmap
The next milestone is to reach feature parity with the old Cairo version. You can track the exact progress here.
Support
- We encourage developers to ask and answer questions on stackoverflow.
- Contact options listed on this GitHub profile
Project assistance
If you want to say thank you or/and support active development of Cairo:
- Add a GitHub Star to the project.
- Tweet about your Cairo work.
- Write interesting articles about the project on Dev.to, Medium or your personal blog.
Together, we can make Cairo better!
Contributing
First off, thanks for taking the time to contribute! Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make will benefit everybody else and are greatly appreciated.
Please read our contribution guidelines, and thank you for being involved!
Authors & contributors
For a full list of all authors and contributors, see the contributors page.
Security
Cairo follows good practices of security, but 100% security cannot be assured. Cairo is provided "as is" without any warranty. Use at your own risk.
For more information and to report security issues, please refer to our security documentation.
License
This project is licensed under the Apache 2.0.
See LICENSE for more information.