glossary·2026-03-09·1 min read

Proving Key / Verifying Key

Proving Key / Verifying Key

When you compile a Leo program, the compiler generates a proving key and a verifying key for each transition function.

  • Proving key - Used by the transaction sender to generate a zero-knowledge proof that the computation was performed correctly. This is the expensive step.
  • Verifying key - Used by validators to quickly check that a proof is valid. Verification is fast, even when proving is slow.

Both keys are function-specific. If a program has three transitions, compilation produces three proving keys and three verifying keys. The verifying keys are published on-chain with the deployment; the proving keys are kept by whoever needs to generate transactions.

For agents doing delegated proving, the proving key is the artifact that gets sent to the proving service.