Skip to content
SnarkPad

Proof centre

What's proven,
and what's checked.

SnarkPad uses Groth16 proofs for one thing: showing you're eligible without revealing which credential you hold. Amounts, escrow, schedules and authorities are ordinary public facts, so they're checked directly on-chain instead.

Circuit · snarkpad.eligibility v1.0.0 · depth 16 · Groth16/BN254

Statement

"I know a secret whose credential commitment is a leaf under root. This nullifier is derived from that secret for this launch, this policy and this action. The recipient, cap and expiry are the ones bound here."

rootCredential Merkle root. The program accepts only the root pinned in the launch policy.
launchIdLaunch identifier (domain separation)
policyHashPolicy sha256, top 253 bits
actionTag1 = opening-round commitment, 2 = completion-record claim
recipientRecipient public key, bound so the proof can't be redirected
capAtomicMax quote atomic units (u64, range-checked)
expiryUnix seconds (u64). The program rejects expired proofs.
nullifierPoseidon(domain, secret, launch, policy, action). One use only.

Private inputs (identity secret, salt, Merkle path) stay on your device inside a Web Worker and are never logged or sent anywhere.

Verification key provenance

Production key
None. No ceremony has been run.
Local-test key
…

Unavailable

Production proofs need a ceremony-backed proving key and the deployed proof-authorization program. Neither exists yet.

Local test environment · not a production proof

Run a genuine test proof

This builds a fresh local credential tree, generates a real Groth16 proof in your browser, and verifies it. The keys come from a deterministic single-party setup, so anyone could forge with them. The result proves the circuit works. It doesn't make you eligible for anything.

Privacy boundaries

  • — Hidden: which credential (leaf) you hold, and your identity secret.
  • — Public: your wallet, escrow amount, lock tier, the nullifier and the transaction itself.
  • — A nullifier stops one credential from being used twice per launch and action. It says nothing about how many people are behind it.
  • — Whoever issues credentials decides who gets one. The proof only shows that a credential is in the root, not why.
  • — Coming later, not live: completion-record credentials that you can prove privately at another launch.
  • — Coming later, not live: an aggregate private release-envelope proof. Public schedule checks work without it today.