MinervaMinerva
Back to guides

Generate Your First Proof

beginner3 min

Overview

This tutorial walks you through generating a real ZK-STARK proof on Minerva. You'll prove a simple claim — that a number exceeds a threshold — without revealing the number itself.

Step 1: Choose a Template

Navigate to Templates and select **"Age Verification"** — the simplest circuit.

This template has:

Step 2: Supply Your Inputs

On the template page, you'll see the input form:

FieldTypeExample
`minimum_age`Public18
`actual_age`Private25

The public input (18) will be visible in the proof. The private input (25) will never leave your session.

Step 3: Generate the Proof

Click "Generate Proof". Minerva will:

1.Parse the circuit definition into arithmetic constraints
2.Build an execution trace from your inputs
3.Run the Winterfell STARK prover
4.Return a proof blob (base64-encoded)

The proof looks like:

WINTERFELL_PROOF_AAAAEAAAABAAAAAgA...

This is a real cryptographic proof — not a hash or signature. It's a full STARK proof over a 128-bit prime field.

Step 4: Verify

Click "Verify". Minerva runs the Winterfell verifier against the proof and public inputs. If the proof is valid, you'll see a green checkmark.

Anyone with the proof blob and public inputs can independently verify the claim. They learn that your age exceeds 18 — nothing more.

What Happened Under the Hood?

1.The `gt` gate was compiled into an **Algebraic Intermediate Representation (AIR)**
2.Your inputs were encoded as field elements in GF(2^64 - 2^32 + 1)
3.The prover built a polynomial commitment over the execution trace
4.The verifier checked the polynomial constraints without seeing the trace

Try More

[Income Threshold](/templates/income-threshold) — Prove income exceeds a minimum
[Document Authenticity](/templates/document-authenticity) — Prove a document hash matches
[Design a custom circuit with Juno →](/chat)

Common Questions

Q: Is the proof reusable?

Yes. Once generated, anyone can verify it any number of times.

Q: Can the verifier extract my private data?

No. The zero-knowledge property guarantees that the proof reveals nothing beyond the truth of the claim.

Q: How large is a proof?

Typically 10–50 KB depending on circuit complexity. STARK proofs are larger than SNARK proofs but require no trusted setup.

Back to guides

Generate Your First Proof

beginner3 min

Overview

This tutorial walks you through generating a real ZK-STARK proof on Minerva. You'll prove a simple claim — that a number exceeds a threshold — without revealing the number itself.

Step 1: Choose a Template

Navigate to Templates and select **"Age Verification"** — the simplest circuit.

This template has:

Step 2: Supply Your Inputs

On the template page, you'll see the input form:

FieldTypeExample
`minimum_age`Public18
`actual_age`Private25

The public input (18) will be visible in the proof. The private input (25) will never leave your session.

Step 3: Generate the Proof

Click "Generate Proof". Minerva will:

1.Parse the circuit definition into arithmetic constraints
2.Build an execution trace from your inputs
3.Run the Winterfell STARK prover
4.Return a proof blob (base64-encoded)

The proof looks like:

WINTERFELL_PROOF_AAAAEAAAABAAAAAgA...

This is a real cryptographic proof — not a hash or signature. It's a full STARK proof over a 128-bit prime field.

Step 4: Verify

Click "Verify". Minerva runs the Winterfell verifier against the proof and public inputs. If the proof is valid, you'll see a green checkmark.

Anyone with the proof blob and public inputs can independently verify the claim. They learn that your age exceeds 18 — nothing more.

What Happened Under the Hood?

1.The `gt` gate was compiled into an **Algebraic Intermediate Representation (AIR)**
2.Your inputs were encoded as field elements in GF(2^64 - 2^32 + 1)
3.The prover built a polynomial commitment over the execution trace
4.The verifier checked the polynomial constraints without seeing the trace

Try More

[Income Threshold](/templates/income-threshold) — Prove income exceeds a minimum
[Document Authenticity](/templates/document-authenticity) — Prove a document hash matches
[Design a custom circuit with Juno →](/chat)

Common Questions

Q: Is the proof reusable?

Yes. Once generated, anyone can verify it any number of times.

Q: Can the verifier extract my private data?

No. The zero-knowledge property guarantees that the proof reveals nothing beyond the truth of the claim.

Q: How large is a proof?

Typically 10–50 KB depending on circuit complexity. STARK proofs are larger than SNARK proofs but require no trusted setup.