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-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-elfThe 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.
To 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.