Run Book | Try Examples | Paper
🚧 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.
The cargo ceno command is the primary tool for interacting with the Ceno zkVM. You can install it by running the
following command from the root of the repository:
cargo install --path ceno_cliA variety of examples are availables.
To run an example, you first need to build it. You can run a specific example using the cargo ceno run command. For
instance, to run the fibonacci
example, use the following command:
cargo ceno run --example fibonacci --hints=10 --public-io=4191This command runs 2^10 (1024) Fibonacci steps via --hints=10. The expected result is 4191, which is verified
against the --public-io=4191 argument.
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-makeYou 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-elfTo run the tests, you can use the following command:
cargo make testsClippy and check work as usual:
cargo check
cargo clippy
cargo buildTo set up docker container for CI, you can run the following command:
docker build -t ceno-runner scripts/ci/
docker run -d ceno-runnerCeno stands on the shoulders of remarkable projects in the zero-knowledge ecosystem. We extend our appreciation to the following works, which have shaped Ceno's design and direction:
- Plonky3 — Inspired by Plonky3’s modular architecture, enabling support for diverse field arithmetics.
- OpenVM — Ceno's recursion stack builds upon OpenVM's eDSL + native VM, while also borrowing its limb-based constraint design for RISC-V opcodes.
- SP1 — Derived significant insights from SP1's RISC-V emulator and memory layout strategy.