Programming Zero Knowledge Proofs: From Zero to Hero

What Zero-Knowledge Proofs (ZKPs) Are, in Practice

  • Often framed as “signatures on computations”: you can prove “I ran this program with some inputs and got this output” more cheaply to verify than to recompute.
  • Zero-knowledge adds the ability to hide some inputs while still proving the computation was done correctly.

Illustrative Use Cases (Non-Blockchain + Blockchain)

  • Privacy-preserving checks

    • Prove age > 18 (or other attributes) from an ID without revealing name, DOB, address, or issuer; can also support richer logic (“over 18 and resident of X” or more complex predicates).
    • Prove loan/creditworthiness or income thresholds using bank/transaction data without exposing full history.
    • KYC/compliance: institutions encode rules, keep only proofs that rules were satisfied, potentially deleting raw data.
    • Prove membership in a group/org (or that you’re “some employee” or “a senator”) without disclosing which one.
    • Anonymous voting and credentials, whistleblower authentication, blacklist/abuse filtering without deanonymizing users.
    • Anonymous cash-like systems and mixers (e.g., Tornado Cash-style designs).
    • Location proofs (inside a zone) and image-processing provenance chains.
  • Verifiable outsourced computation

    • Prove huge computations (compilation, scientific workloads, zkVM execution) were run correctly; verifier does milliseconds of work regardless of original cost.
    • Layer-2 blockchains use ZKPs to prove batches of transactions are valid instead of every node re-running them.

Debates vs. Simpler Cryptography (Hashes, Signatures, VCs)

  • Some argue many examples (age checks, credentials) could be done with standard signatures, verifiable credentials, or blind signatures; see ZKP as overkill.
  • Others counter that ZKPs allow arbitrary predicates over attributes, unlinkability across sites, and issuer-agnostic logic without issuers anticipating every use.
  • Ongoing back-and-forth on whether password hashing and standard auth already solve many cited scenarios.

Performance, Setup, and Practicality

  • Proving is currently very expensive (often ~1000x or more overhead vs. native execution), though improving via specialized VMs and ASICs.
  • Some schemes require a “trusted setup”; others (e.g., STARK-like, logarithmic proofs) avoid this but may have slower verification or larger proofs.
  • Strong skepticism remains about “real” non-crypto deployment today; many see current usage as mostly blockchain-driven research funding with future potential.

Developer Tools Mentioned

  • zkVMs and compilers (e.g., Powdr, Noir, Risc Zero, Sunscreen, noname) are cited as ways to write normal code and get ZK circuits/proofs without hand-building polynomials.