## New Example This new c++ example shows the basics of RISC0 protocol using our Polynomial API
ICICLE example: RISC0's Fibonacci sequence proof using Polynomial API
Why RISC0?
RISC0 Protocol creates computational integrity proofs (a.k.a. Zero Knowledge Proofs) for programs executing on RISC-V architecture. The proofs are created for sequences of values in RISC-V registers, called execution traces. This approach is transparent to developers and enables the use of general purpose languages.
Best-Practices
This example builds on ICICLE Polynomial API so we recommend to run it first.
Key-Takeaway
RISC0 encodes execution traces into very large polynomials and commits them using Merkle trees. FRI speeds-up validation of such commitments by recursively generating smaller polynomials (and trees) from larger ones. The key enabler for recursion is the redundancy of polynomial commitments, hence the use of Reed-Solomon codes.
Running the example
To run example, from project root directory:
cd examples/c++/risc0
./compile.sh
./run.sh
What's in the example
The example follows STARK by Hand, structured in the following Lessons:
- The Execution Trace
- Rule checks to validate a computation
- Padding the Trace
- Constructing Trace Polynomials
- ZK Commitments of the Trace Data
- Constraint Polynomials
- Mixing Constraint Polynomials
- The Core of the RISC Zero STARK
- The DEEP Technique
- Mixing (Batching) for FRI
- FRI Protocol (Commit Phase)
- FRI Protocol (Query Phase)