Risc Zero

This section of the documentation explains how to create a W3bstream ZK prover using Risc Zero as the ZK framework.

Prerequisites

1. Rust language

Ensure you have the Rust compiler correctly installed

rustc --version

2. Cargo

Ensure you have cargo 1.72.0 or higher:

cargo version

update cargo with:

rustup update

3. rustzero toolchain

cargo install cargo-risczero
cargo risczero install

Build the prover code

Clone the W3bstream repository

Start by cloning the W3bstream repository, where you can start from a template prover:

git clone https://github.com/iotexproject/w3bstream.git
cd examples/risc0-circuit/

Open the folder in a code editor and make the required modifications based on your actual data message.

Learn more about developing Risc Zero provers:

Go to the official Risc Zero documentation

Build the prover logic

cargo build --release

The prover bytecode is saved in a file named methods.rs inside the release folder. The correct path is logged at the end of the build:

warning: range-method@0.1.0: methods_path is: "/Users/simone/Source/GitHub/machinefi/sprout/examples/risc0-circuit/target/debug/build/range-method-2bec077ba5c1d7b6/out/methods.rs"

The method.rs file also includes the image ID of the prover that is needed by the verifier when verifying a proof:

pub const RANGE_ID: [u32; 8] = [512905798, 3876631256, 1803615688, 344980519, 987991463, 241449906, 813598757, 370978982];

Last updated

Logo

This documentation portal is currently undergoing updates to align with the IoTeX 2.0 Whitepaper release. Information provided here may be incomplete, or out-of-date. Please use this portal for preliminary reference only, and check out the official IoTeX 2.0 Whitepaper for updated information.

.

2024 | IoTeX