https://github.com/scroll-tech/ceno
Accelerated Zero-knowledge Virtual Machine by Non-uniform Prover Based on GKR Protocol
https://github.com/scroll-tech/ceno
Last synced: 3 months ago
JSON representation
Accelerated Zero-knowledge Virtual Machine by Non-uniform Prover Based on GKR Protocol
- Host: GitHub
- URL: https://github.com/scroll-tech/ceno
- Owner: scroll-tech
- License: apache-2.0
- Created: 2023-11-27T15:33:41.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2025-04-01T01:35:00.000Z (3 months ago)
- Last Synced: 2025-04-01T02:27:49.614Z (3 months ago)
- Language: Rust
- Homepage:
- Size: 24.9 MB
- Stars: 93
- Watchers: 14
- Forks: 25
- Open Issues: 112
-
Metadata Files:
- Readme: README.md
- License: LICENSE-APACHE
Awesome Lists containing this project
- awesome-zkvm - ceno
README
# Ceno: Non-uniform, Segment and Parallel Risc-V Zero-knowledge Virtual Machine
Please see [the slightly outdated paper](https://eprint.iacr.org/2024/387) 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](https://github.com/jameslzhu/riscv-card/releases/download/latest/riscv-card.pdf).
## Local build requirements
Ceno is built in Rust, so [installing the Rust toolchain](https://www.rust-lang.org/tools/install) is a pre-requisite if you want to develop on your local machine. We also use [cargo-make](https://sagiegurari.github.io/cargo-make/) to build Ceno. You can install cargo-make with the following command:
```sh
cargo install cargo-make
```You will also need to install the Risc-V target for Rust. You can do this with the following command:
```sh
rustup target add riscv32im-unknown-none-elf
```## Try end-to-end with examples
A variety of [examples](https://github.com/scroll-tech/ceno/tree/master/examples/examples) are availables.To run an example in e2e, use the following command:
```sh
cargo run --release --package ceno_zkvm --bin e2e -- \
--profiling=1 \
--platform=ceno \
--hints= \
--public-io= \
examples/target/riscv32im-ceno-zkvm-elf/release/examples/
```The example will be automatically compiled before execution
For instance, with [fibonacci](https://github.com/scroll-tech/ceno/blob/master/examples/examples/fibonacci.rs)
```sh
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
```## Building Ceno and running tests
To run the tests, you can use the following command:
```sh
cargo make tests
```Clippy and check work as usual:
```sh
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:
```sh
docker build -t ceno-runner scripts/ci/
docker run -d ceno-runner
```