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.

Feedback