Supported proving schemes
Clone a template or write your own program to get started with app writing.
Proving scheme | Verifier | Program ID | Example app |
---|---|---|---|
Noir | noir | Verification key. | check_secret |
Risc0 | risc0 | Image ID without a prefix. ex. 0x123 becomes 123. | eZKasino |
SP1 | sp1 | Verification key. | Faucet |
Noir
Because Noir is a circuit-based ZK-language, you have to define the maximum size of the state at the contract creation. For simplicity, we recommend keeping Noir for stateless contracts:
- A stateless contract in Noir for private inputs and the logic linked to them.
- A stateful contract in Rust using Risc0 or SP1 to store the private state onchain.
Proof composition allows you to leverage the privacy of Noir and ease of use of zkVMs.