Prova de Conhecimento Zero (ZKP)
17/04/2026
Uma prova de conhecimento zero (ZKP) é um protocolo criptográfico no qual uma parte (o proponente) convence outra (o verificador) de que uma declaração é verdadeira — sem revelar qualquer informação adicional além do fato de que é verdadeira. As provas de conhecimento zero foram introduzidas por Shafi Goldwasser, Silvio Micali e Charles Rackoff em seu artigo de 1985 "The Knowledge Complexity of Interactive Proof Systems" — um resultado que ganhou o Prêmio Gödel (1993) e contribuiu para o Prêmio Turing de Goldwasser e Micali (2012).
As três propriedades
Todo sistema de prova de conhecimento zero satisfaz:
- Completude — se a declaração é verdadeira, um proponente honesto pode convencer um verificador honesto
- Solidez — se a declaração é falsa, nenhum proponente trapaceiro pode convencer o verificador (exceto com probabilidade negligenciável)
- Conhecimento zero — o verificador não aprende nada além da verdade da declaração; nenhuma informação sobre por que a declaração é verdadeira é revelada
A intuição canônica: provar que você conhece uma senha sem revelar a senha.
Sistemas de prova modernos
- zk-SNARK (Argumento de Conhecimento Não Interativo Sucinto) — provas muito pequenas (centenas de bytes), verificação em tempo constante. Construções clássicas (Groth16, PGHR13) requerem uma configuração confiável específica do circuito; PLONK e Marlin usam uma configuração atualizável universal; Halo 2 (desenvolvido pela Electric Coin Company para Zcash) usa um compromisso polinomial sem configuração confiável.
- zk-STARK (Argumento de Conhecimento Transparente e Escalável) — introduzido por Ben-Sasson et al. (2018). Transparente (sem configuração confiável), baseia-se apenas em funções hash e é plausivelmente seguro pós-quântico. As provas são maiores (dezenas a centenas de KB). Usado pela StarkWare em Starknet e StarkEx.
- Bulletproofs — provas de intervalo curtas sem configuração confiável. Usado pelo Monero para valores confidenciais desde 2018.
- Nova / HyperNova, Plonky2 / Plonky3 — sistemas modernos de SNARK de esquema de dobramento e recursivos, otimizados para computação incremental.
Usos em cripto
Privacidade
- Zcash — transações protegidas usando zk-SNARKs (Groth16 → Halo 2)
- Aztec Network, Aleo, Namada — contratos inteligentes focados em privacidade
- Monero — Bulletproofs para provas de intervalo
- Tornado Cash — mistura zk-SNARK (sanções do Tesouro dos EUA parcialmente revertidas pelo 5º Circuito em 2024)
Escalabilidade — ZK-rollups
- zkSync Era, Starknet, Polygon zkEVM, Scroll, Linea — comprimem milhares de transações L2 em uma única prova de validade postada no Ethereum. Esses rollups usam ZK para sucintez, não para ocultar dados.
Identidade e credenciais
- Worldcoin — prova de identidade a partir de escaneamentos de íris sem revelar o próprio escaneamento
- zk-email — provando recebimentos de e-mail sem revelar o conteúdo do e-mail
- Polygon ID, Semaphore — identidade on-chain sem histórico de carteira vinculável
Computação verificável
- zkML (EZKL, Modulus Labs) — provando que um modelo de IA foi executado corretamente em entradas específicas
- Coprocessadores on-chain (Axiom, Herodotus) — provando resultados de computação off-chain
Conceito errado comum — "ZK" ≠ "privado"
Um zk-rollup anuncia "ZK" em seu nome, mas normalmente não fornece privacidade ao usuário. A propriedade de conhecimento zero aqui é usada para sucintez — uma pequena prova atesta muitas transações — não para ocultar dados. Todas as transações permanecem públicas no rollup. Para privacidade do usuário, é necessário um design adicional (Aztec, Aleo).
