1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# zkwid-zkvm
RISC Zero host for zkwid: `prove(ProveInput)` returns `bincode(Receipt)`, and `verify(receipt)` checks it against `image_id()` and returns the `Journal`.
- `core/` holds the shared `ProveInput` and `Journal` types.
- `guest/` is the zkVM program `zkwid-guest`. It measures every stage with SHA-256, runs stage 0 (the shim) in wasmi 0.31 with the `env.keygen` import, and commits the `Journal`.
## Features
| Feature | Effect |
|---|---|
| `prove` | Enables `prove` (`risc0-zkvm/prove`) |
| `disable-dev-mode` | Rejects `RISC0_DEV_MODE` fake receipts (`risc0-zkvm/disable-dev-mode`) |
Without features, the crate only verifies receipts.
## zkVM
- Guest build: about 1.5 minutes from clean with the RISC Zero toolchain (rust 1.97.0), and about 30 seconds after a guest source change.
- Cycles for the test shim plus one extra stage: 236318 user cycles in 1 segment (po2 19).
- k256 uses the RISC Zero accelerated fork (`k256/v0.13.4-risczero.1`, with the patched `crypto-bigint` and `sha2`), wired up through `[patch.crates-io]` in `guest/Cargo.toml`.
Dev-mode round trip with fake receipts:
```sh
RISC0_DEV_MODE=1 cargo test -p zkwid-zkvm --features prove -- --nocapture
```
Real succinct proof:
```sh
cargo test -p zkwid-zkvm --features prove --release -- --ignored real_proof --nocapture
```