ZK em 60 segundos — para devs (não para pesquisadores)
Zero-Knowledge Proof: você prova que conhece um witness w tal que f(w, x) = y, sem revelar w. Verifier aceita com altíssima probabilidade se a prova é válida, rejeita se inválida. Práticas reais: provar idade > 18 sem revelar nascimento, provar saldo > X sem revelar saldo, provar que executou uma computação corretamente (rollups).
💡
Você não precisa entender pairing-based crypto para usar ZK em 2026. Você precisa entender o modelo (witness, statement, verifier) e dominar uma DSL (Noir ou Circom).
Noir — hello world
// circuit.nr
// Prova que conhece dois números cuja soma é pública
fn main(a: Field, b: Field, sum: pub Field) {
assert(a + b == sum);
}
// 'a' e 'b' são private witness; 'sum' é public input.
// Verifier só vê 'sum'; prover convence sem revelar a, b.# Compilar circuit
nargo compile
# Prover side: gerar prova com witness
nargo prove
# Verifier side: verificar proof
nargo verify
# Gerar Solidity verifier para deploy on-chain
nargo codegen-verifierCircom — equivalente low-level
pragma circom 2.1.0;
template Sum() {
signal input a;
signal input b;
signal input sum;
sum === a + b;
}
component main { public [sum] } = Sum();Constraints explícitosEm Circom, você descreve o sistema de equações
snarkjs / rapidsnarkToolchain padrão para gerar proofs Groth16/Plonk
Powers of TauTrusted setup ceremony — circuits Groth16 precisam
Ecosystem maduroMais bibliotecas e tutorials que Noir
Projetos reais usando ZK em 2026
| Projeto | O que prova ZK | Stack |
|---|---|---|
| zkEmail | Possui e-mail com sender/conteúdo específico | Circom + DKIM |
| Anon Aadhaar | Cidadania indiana sem revelar identidade | Circom + Aadhaar QR |
| zkPassport | Passaporte válido sem revelar dados | Noir + NFC ICAO |
| Sismo | Reputation sem identidade on-chain | Custom ZK |
| Worldcoin / World ID | Humano único (anti-sybil) | Custom + iris scan |
| Privacy Pools (Vitalik) | Saldo Tornado-like com pool de honestos | Halo2 |
| Scroll / Linea / zkSync | ZK rollups L2 — provam toda execução EVM | Custom prover backends |
ProjetozkEmail
O que prova ZKPossui e-mail com sender/conteúdo específico
StackCircom + DKIM
ProjetoAnon Aadhaar
O que prova ZKCidadania indiana sem revelar identidade
StackCircom + Aadhaar QR
ProjetozkPassport
O que prova ZKPassaporte válido sem revelar dados
StackNoir + NFC ICAO
ProjetoSismo
O que prova ZKReputation sem identidade on-chain
StackCustom ZK
ProjetoWorldcoin / World ID
O que prova ZKHumano único (anti-sybil)
StackCustom + iris scan
ProjetoPrivacy Pools (Vitalik)
O que prova ZKSaldo Tornado-like com pool de honestos
StackHalo2
ProjetoScroll / Linea / zkSync
O que prova ZKZK rollups L2 — provam toda execução EVM
StackCustom prover backends
Quando ZK faz sentido
Privacidade obrigatóriaSaldo, identidade, voto, dados médicos
Compactar computaçãoRollups L2 — provar execução off-chain é mais barato que repetir on-chain
KYC sem disclosureProvar "sou maior de 18" sem revelar data exata
Cross-chain bridges sem trustProvar state de chain A em chain B sem oracle
NÃO use quandoLatência crítica (provas levam segundos a minutos), ou quando dado é público mesmo
Toolchain 2026
| Tool | Linguagem | Backend | Maturidade |
|---|---|---|---|
| Circom + snarkjs | Circom DSL | Groth16 / Plonk | Maduro, padrão |
| Noir (Aztec) | Rust-like | Plonkish / Halo2-style | Crescendo rápido |
| Halo2 (zcash) | Rust direct | Plonkish + IPA | Avançado, complexo |
| Cairo (StarkWare) | Cairo DSL | STARK | Maduro em StarkNet |
| SP1 (Succinct) | Rust completo → zkVM | STARK + recursion | Novo, promissor |
| RISC Zero | Rust → zkVM RISC-V | STARK | Genérico, mais lento |
ToolCircom + snarkjs
LinguagemCircom DSL
BackendGroth16 / Plonk
MaturidadeMaduro, padrão
ToolNoir (Aztec)
LinguagemRust-like
BackendPlonkish / Halo2-style
MaturidadeCrescendo rápido
ToolHalo2 (zcash)
LinguagemRust direct
BackendPlonkish + IPA
MaturidadeAvançado, complexo
ToolCairo (StarkWare)
LinguagemCairo DSL
BackendSTARK
MaturidadeMaduro em StarkNet
ToolSP1 (Succinct)
LinguagemRust completo → zkVM
BackendSTARK + recursion
MaturidadeNovo, promissor
ToolRISC Zero
LinguagemRust → zkVM RISC-V
BackendSTARK
MaturidadeGenérico, mais lento