---
title: "What is Zero-Knowledge Proof (ZK)?"
canonical: https://wavect.io/glossary/zero-knowledge/
language: en
description: "A cryptographic technique that proves a statement is true without revealing the data behind it."
image: "https://wavect.io/img/general/bak/open_graph_preview.jpg"
---

TECHNOLOGIES

# Zero-Knowledge

Zero-Knowledge Proof (ZK)

A cryptographic technique that proves a statement is true without revealing the data behind it.

Last reviewed: 2026-05-24 by [Kevin Riedl](/team/kevin-riedl/) [wiki ↗](https://www.wikidata.org/wiki/Q139796365)

A zero-knowledge proof lets one party (the prover) convince another (the verifier) that they know some piece of information, without disclosing the information itself. The canonical example: prove that you are over 18 without revealing your date of birth.

In production, ZK shows up in two flavors. ZK-SNARKs are smaller and faster to verify but require a trusted setup. ZK-STARKs are larger and slower but need no trusted setup and are post-quantum safe. Most chains now offer pre-built circuits for common proofs (identity, balance, voting eligibility) so you do not need a cryptographer on staff to ship a [smart contract](/glossary/smart-contract/) that verifies them.

Worked example where ZK earns its keep: a regulated exchange has to prove to an auditor that every user passed KYC, without handing the auditor a database of names and passport numbers. A zero-knowledge proof lets the exchange attest “this set of accounts is fully KYC-verified” while the underlying identities stay private. In the EU, where GDPR makes that passport database a liability you would rather not hold, the privacy is not a nice-to-have, it is the point. The counter-example is just as instructive: if a trusted database query would satisfy the verifier, ZK is expensive theatre.

The honest engineering trade-off, and the most common founder mistake: assuming the hard part is the cryptography. The math is sound. The risk lives in the circuit. A subtly wrong circuit produces a proof that verifies perfectly while proving the wrong statement, and that bug is invisible until someone exploits it. This is why ZK work belongs near [account abstraction](/glossary/account-abstraction/) and other on-chain primitives where audits are non-negotiable, not bolted on as a marketing feature. The business case is narrower than the hype: ZK is genuinely valuable when you need to prove a property on-chain (or to a counterparty) without leaking the data. It is overkill for most consumer apps and most [web3](/glossary/web3/) projects that name-drop it.

// FAQ

## FAQs

### When is ZK actually worth it?

When you need to prove a property to a counterparty (regulator, chain, partner) without leaking the underlying data: KYC status, balance threshold, voting eligibility, age, accreditation. If the proof can be replaced with a trusted database query, ZK is overkill.

### SNARK or STARK?

SNARKs: smaller proofs, faster verification, trusted-setup requirement, more mature tooling. STARKs: larger proofs, slower verification, no trusted setup, post-quantum safe. For most production cases today, pick the one your target chain supports best, not the one with the better whitepaper.

### What goes wrong in production ZK systems?

Circuit bugs (the proof verifies correctly but proves the wrong thing), trusted-setup compromises, and prover-side performance walls when the input size grows. The cryptography is sound; the engineering around it is where most teams ship vulnerabilities.

Related terms

- [Web3](/glossary/web3/)
- [Smart Contract](/glossary/smart-contract/)
- [Account Abstraction](/glossary/account-abstraction/)

Related services

- [Zero-Knowledge](/services/zero-knowledge/)

Related case studies

- [LightBridge](/case-studies/lightbridge/)
- [Polity](/case-studies/polity/)

Related guides

- [How to choose a software development agency](/software-development-guide/how-to-choose-a-software-agency/)

Talk to us

## Structured Data

```json
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@id": "https://wavect.io/#organization",
      "@type": [
        "Organization",
        "ProfessionalService",
        "LocalBusiness"
      ],
      "employee": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "founder": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "legalRepresentative": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "name": "Wavect GmbH",
      "subjectOf": {
        "@id": "https://wavect.io/verified-claims.json#dataset",
        "@type": "Dataset",
        "creator": {
          "@id": "https://wavect.io/#organization",
          "@type": [
            "Organization",
            "ProfessionalService",
            "LocalBusiness"
          ]
        },
        "description": "A machine-readable registry of quantitative and qualitative claims published by Wavect, with review dates, localized page appearances and public third-party citations where available.",
        "inLanguage": "en",
        "isAccessibleForFree": true,
        "license": "https://creativecommons.org/licenses/by/4.0/",
        "name": "Wavect verified publication claims",
        "url": "https://wavect.io/verified-claims.json"
      },
      "url": "https://wavect.io/"
    },
    {
      "@id": "https://wavect.io/team/kevin-riedl/#person",
      "@type": "Person",
      "jobTitle": "Managing Director",
      "name": "Kevin Riedl",
      "sameAs": [
        "https://www.wikidata.org/wiki/Q139796365",
        "https://www.linkedin.com/in/wsdt",
        "https://github.com/wsdt"
      ],
      "url": "https://wavect.io/team/kevin-riedl/",
      "worksFor": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      }
    },
    {
      "@id": "https://wavect.io/team/christof-jori/#person",
      "@type": "Person",
      "jobTitle": "Managing Director",
      "name": "Christof Jori",
      "sameAs": [
        "https://www.wikidata.org/wiki/Q139796367",
        "https://www.linkedin.com/in/jocr77/",
        "https://github.com/jo-chris"
      ],
      "url": "https://wavect.io/team/christof-jori/",
      "worksFor": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      }
    },
    {
      "@id": "https://wavect.io/#website",
      "@type": "WebSite",
      "inLanguage": [
        "en",
        "de",
        "es",
        "zh"
      ],
      "name": "Wavect",
      "potentialAction": {
        "@type": "SearchAction",
        "query-input": "required name=search_term_string",
        "target": {
          "@type": "EntryPoint",
          "urlTemplate": "https://wavect.io/search/?q={search_term_string}"
        }
      },
      "publisher": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      },
      "url": "https://wavect.io/"
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@id": "https://wavect.io/glossary/zero-knowledge/#term",
      "@type": "DefinedTerm",
      "alternateName": [
        "ZK",
        "ZK Proof",
        "ZK-SNARK",
        "ZK-STARK"
      ],
      "description": "A cryptographic technique that proves a statement is true without revealing the data behind it.",
      "inDefinedTermSet": "https://wavect.io/glossary/#termset",
      "name": "Zero-Knowledge",
      "termCode": "zero-knowledge",
      "url": "https://wavect.io/glossary/zero-knowledge/"
    },
    {
      "@id": "https://wavect.io/glossary/zero-knowledge/#webpage",
      "@type": "WebPage",
      "about": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      },
      "author": {
        "@id": "https://wavect.io/team/kevin-riedl/#person",
        "@type": "Person",
        "name": "Kevin Riedl",
        "url": "https://wavect.io/team/kevin-riedl/"
      },
      "dateModified": "2026-05-24",
      "description": "A cryptographic technique that proves a statement is true without revealing the data behind it.",
      "headline": "Zero-Knowledge",
      "inLanguage": "en",
      "isPartOf": {
        "@id": "https://wavect.io/#website",
        "@type": "WebSite"
      },
      "lastReviewed": "2026-05-24",
      "mainEntity": {
        "@id": "https://wavect.io/glossary/zero-knowledge/#term"
      },
      "mentions": [
        {
          "@id": "https://wavect.io/#organization",
          "@type": [
            "Organization",
            "ProfessionalService",
            "LocalBusiness"
          ]
        },
        {
          "@type": "Service",
          "name": "Zero-Knowledge",
          "url": "https://wavect.io/services/zero-knowledge/"
        }
      ],
      "name": "Zero-Knowledge",
      "reviewedBy": {
        "@id": "https://wavect.io/team/christof-jori/#person",
        "@type": "Person",
        "name": "Christof Jori",
        "url": "https://wavect.io/team/christof-jori/"
      },
      "speakable": {
        "@type": "SpeakableSpecification",
        "cssSelector": [
          ".gls-single__h1",
          ".gls-single__tldr"
        ]
      },
      "url": "https://wavect.io/glossary/zero-knowledge/"
    },
    {
      "@type": "BreadcrumbList",
      "itemListElement": [
        {
          "@type": "ListItem",
          "item": "https://wavect.io/",
          "name": "Home",
          "position": 1
        },
        {
          "@type": "ListItem",
          "item": "https://wavect.io/glossary/",
          "name": "Tech, product & engagement glossary",
          "position": 2
        },
        {
          "@type": "ListItem",
          "item": "https://wavect.io/glossary/zero-knowledge/",
          "name": "Zero-Knowledge",
          "position": 3
        }
      ]
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "When you need to prove a property to a counterparty (regulator, chain, partner) without leaking the underlying data: KYC status, balance threshold, voting eligibility, age, accreditation. If the proof can be replaced with a trusted database query, ZK is overkill."
      },
      "name": "When is ZK actually worth it?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "SNARKs: smaller proofs, faster verification, trusted-setup requirement, more mature tooling. STARKs: larger proofs, slower verification, no trusted setup, post-quantum safe. For most production cases today, pick the one your target chain supports best, not the one with the better whitepaper."
      },
      "name": "SNARK or STARK?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Circuit bugs (the proof verifies correctly but proves the wrong thing), trusted-setup compromises, and prover-side performance walls when the input size grows. The cryptography is sound; the engineering around it is where most teams ship vulnerabilities."
      },
      "name": "What goes wrong in production ZK systems?"
    }
  ],
  "speakable": {
    "@type": "SpeakableSpecification",
    "cssSelector": [
      ".faq-question",
      ".faq-answer"
    ]
  }
}
```
