Skip to content

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.