-
Notifications
You must be signed in to change notification settings - Fork 12
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge remote-tracking branch 'origin/master' into matthias/name-space-2
- Loading branch information
Showing
64 changed files
with
2,248 additions
and
1,054 deletions.
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,47 +1,38 @@ | ||
# Ceno: Non-uniform, Segment and Parallel Zero-knowledge Virtual Machine | ||
|
||
Please see [the paper](https://eprint.iacr.org/2024/387) for an introduction to Ceno. | ||
|
||
# MVP | ||
step 1 | ||
- non-uniform prover end to end | ||
- no recursion | ||
- no PCS | ||
- with IOP | ||
- with lookup | ||
- with Frontend + VM | ||
|
||
step 2 | ||
- introduce PCS | ||
|
||
step 3 | ||
- recursion and achieve uniformality | ||
|
||
# Building blocks | ||
- hash function | ||
<!--- - [ ] merkle tree hash: 2-1 or 3-1 with padding | ||
- [ ] transcript: 3-1 | ||
- [ ] (optional) breakdown: 16-1 | ||
- [ ] plonky2 12-4 ---> | ||
- [ ] decision: start with 8-4 first | ||
|
||
- IOP | ||
- lookup | ||
- [ ] logup: spec @wenqing | ||
- [ ] implement as an IOP module along with high degree gate | ||
- high degree gates | ||
- [ ] paper/spec @tianyi | ||
- one on one tianyi/zhenfei | ||
|
||
- PCS | ||
|
||
- gates/subcircuits | ||
- spec | ||
- example by tianyi | ||
|
||
|
||
option 1 | ||
- repeat sumcheck twice/three times | ||
option 2 | ||
- use F_q^2/3 extension field, do not repeat | ||
- rule of thumb: n rounds, soundness ~ (64-n) bits | ||
# 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/blob/master/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 | ||
``` | ||
|
||
## 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 | ||
``` | ||
|
||
Alas, `cargo build` doesn't work. That's a known problem and we're working on it. Please use `cargo make build` instead for now. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.