Skip to content

Accelerated Zero-knowledge Virtual Machine by Non-uniform Prover Based on GKR Protocol

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

scroll-tech/ceno

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Ceno: Non-uniform, Segment and Parallel Risc-V Zero-knowledge Virtual Machine

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.

Local build requirements

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

Installing cargo ceno

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_cli

Try end-to-end with examples

A 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=4191

This command runs 2^10 (1024) Fibonacci steps via --hints=10. The expected result is 4191, which is verified against the --public-io=4191 argument.

Building Ceno and running tests

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

Setting up self-hosted CI docker container

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

Acknowledgements

Ceno 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.

About

Accelerated Zero-knowledge Virtual Machine by Non-uniform Prover Based on GKR Protocol

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Packages

No packages published

Contributors 32

Languages