Please see the slightly outdated paper for an introduction to Ceno.
🚧 This project is currently under construction and not suitable for use in production. 🚧
If you are unfamiliar with the RISC-V instruction set, please have a look at the RISC-V instruction set reference.
Ceno is built in Rust, so installing the Rust toolchain is a pre-requisite if you want to develop on your local machine. We also use cargo-make to build Ceno. You can install cargo-make with the following command:
cargo install cargo-make
You will also need to install the Risc-V target for Rust. You can do this with the following command:
rustup target add riscv32im-unknown-none-elf
A variety of examples are availables.
To run an example in e2e, use the following command:
cargo run --release --package ceno_zkvm --bin e2e -- \
--profiling=1 \
--platform=ceno \
--hints=<hint value> \
--public-io=<pub io> \
examples/target/riscv32im-ceno-zkvm-elf/release/examples/<example name>
The example will be automatically compiled before execution
For instance, with fibonacci
cargo run --release --package ceno_zkvm --bin e2e -- --profiling=1 --platform=ceno --hints=10 --public-io=4191 examples/target/riscv32im-ceno-zkvm-elf/release/examples/fibonacci
To run the tests, you can use the following command:
cargo make tests
Clippy and check work as usual:
cargo check
cargo clippy
cargo build
To set up docker container for CI, you can run the following command:
docker build -t ceno-runner scripts/ci/
docker run -d ceno-runner