Re-exports
pub use ramlookup::LookupMode as RAMLookupMode;
pub use ramlookup::RAMLookup;
Modules
- Modules mimicking the defined structures used by Cannon CLI.
- A CLI mimicking the Cannon CLI.
- Integration with folding. Contains common trait implementations to be used by each circuit.
- Implementation of Keccak used by the zkVM.
- Instantiation of the lookups for the VM project. Instantiation of the lookups for the VM project.
- MIPS interpreter. This module implements a zero-knowledge virtual machine (zkVM) for the MIPS architecture. A zkVM is used by a prover to convince a verifier that the execution trace (also called the
witness
) of a program execution is correct. In the case of this zkVM, we will represent the execution trace by using a set of columns whose values will represent the evaluations of polynomials over a certain pre-defined domain. The correct execution will be proven using a polynomial commitment protocol. The polynomials are described in the structure crate::mips::column::ColumnAlias. These polynomials will be committed and evaluated at certain points following the polynomial protocol, and it will form the proof of the correct execution that the prover will build and send to the verifier. The corresponding structure is Proof. The prover will start by computing the execution trace using the interpreter implemented in the module crate::mips::interpreter, and the evaluations will be kept in the structure ProofInputs. - Preimage oracle interface used by the zkVM.
- Proof system of the zkVM.
- The RAM lookup argument.
- Abstract execution traces, possible long, that can be folded. A trace is a sequence of data points organized in a 2D array, constrained. This module defines structures and traits to build and manipulate traces. A trace is a collection of data points that represent the execution of a program. Some trace can be seen as “decomposable” in the sense that they can be divided into sub-traces that share the same columns, and sub-traces can be selected using “selectors”.
Constants
- Domain size shared by the Keccak evaluations, MIPS evaluation and main program.
Type Definitions
- Elliptic curve group of BN254
- Scalar field of BN254