O que é zk-SNARK

zk-SNARK (Argumento de Conhecimento Sucinto Não Interativo de Conhecimento Zero) é um sistema de prova criptográfico que permite a uma parte provar a outra que conhece uma determinada informação, sem revelar a própria informação.

zk-SNARKs são um tipo de prova de conhecimento zero, um método criptográfico que prova a validade de uma declaração sem revelar os dados subjacentes. Isso é alcançado criando uma prova concisa que pode ser rapidamente verificada, independentemente da complexidade dos dados ou cálculo originais.

A tecnologia foi inicialmente desenvolvida no início dos anos 2010, com avanços significativos ao longo dos anos. Eles se tornaram cada vez mais importantes em aplicações de blockchain e criptomoedas, oferecendo melhorias significativas na privacidade e benefícios de escalabilidade.

zk-SNARKs são usados em várias aplicações, incluindo transações privadas, verificação de identidade e computação off-chain. Eles permitem que os usuários provem que atendem a certas condições (por exemplo, fundos suficientes, credenciais válidas) sem revelar informações confidenciais. Isso é particularmente útil em sistemas blockchain, onde a privacidade é frequentemente uma preocupação, e também para soluções de escalabilidade como rollups.

Tecnicamente, zk-SNARKs dependem de conceitos matemáticos complexos, incluindo criptografia de curva elíptica e compromissos polinomiais. O aspecto 'sucinto' refere-se ao tamanho curto da prova, e o aspecto 'não interativo' significa que o provador e o verificador não precisam trocar várias mensagens. Isso torna a verificação eficiente e rápida.

        graph LR
  Center["O que é zk-SNARK"]:::main
  Pre_zero_knowledge_proof["zero-knowledge-proof"]:::pre --> Center
  click Pre_zero_knowledge_proof "/terms/zero-knowledge-proof"
  Rel_zk_stark["zk-stark"]:::related -.-> Center
  click Rel_zk_stark "/terms/zk-stark"
  Rel_zk_rollup["zk-rollup"]:::related -.-> Center
  click Rel_zk_rollup "/terms/zk-rollup"
  classDef main fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px,color:white,font-weight:bold,rx:5,ry:5;
  classDef pre fill:#0f172a,stroke:#3b82f6,color:#94a3b8,rx:5,ry:5;
  classDef child fill:#0f172a,stroke:#10b981,color:#94a3b8,rx:5,ry:5;
  classDef related fill:#0f172a,stroke:#8b5cf6,stroke-dasharray: 5 5,color:#94a3b8,rx:5,ry:5;
  linkStyle default stroke:#4b5563,stroke-width:2px;

      

🧠 Teste de conhecimento

1 / 3

🧒 Explique como se eu tivesse 5 anos

Imagine you have a secret key to a treasure chest, and you want to prove to your friend that you have the key without showing it to them. A zk-SNARK is like a magic trick that lets you prove you can open the chest, and your friend can be sure you're not lying, but they still won't know what your key looks like.

🤓 Expert Deep Dive

zk-SNARKs fundamentally enable verifiable computation in a zero-knowledge setting. The underlying mathematical framework typically involves mapping the computational problem to a system of polynomial equations, often represented as an arithmetic circuit. The prover constructs a proof demonstrating knowledge of a witness satisfying these equations. Common constructions utilize pairings on elliptic curves to check polynomial evaluations at specific points, forming the basis of the verification process. The succinctness property is achieved by compressing the verification information into a small proof, often through techniques like polynomial commitments and the use of cryptographic accumulators. The non-interactive nature is typically realized using the Fiat-Shamir heuristic, transforming an interactive proof system into a non-interactive one by using a [hash function](/pt/terms/hash-function) to derive the verifier's challenges. A significant trade-off is the requirement for a trusted setup phase in many SNARK constructions (e.g., Groth16), where toxic waste must be securely destroyed. Failure to do so allows the creation of undetectable fake proofs. Newer SNARK variants and alternative zero-knowledge proof systems like zk-STARKs aim to mitigate or eliminate this trusted setup requirement.

❓ Perguntas frequentes

Como o zk-SNARK melhora a privacidade do blockchain?

zk-SNARKs permitem que os usuários provem a validade das transações sem revelar detalhes da transação, como remetente, destinatário e valor. Isso aumenta a privacidade do usuário, mantendo informações confidenciais ocultas da visão pública.

Quais são os benefícios de usar zk-SNARKs?

zk-SNARKs oferecem vários benefícios, incluindo maior privacidade, escalabilidade aprimorada por meio de computação off-chain e custos de transação reduzidos. Eles permitem que cálculos complexos sejam verificados de forma eficiente, mesmo em plataformas com recursos limitados.

Os zk-SNARKs são seguros?

Sim, os zk-SNARKs são projetados para serem criptograficamente seguros. No entanto, a segurança de um sistema zk-SNARK depende das suposições criptográficas subjacentes e da implementação. A implementação adequada e as auditorias de segurança contínuas são críticas para garantir sua eficácia.

Quais são algumas aplicações práticas de zk-SNARKs?

zk-SNARKs são usados em uma variedade de aplicações, incluindo criptomoedas privadas (por exemplo, Zcash), soluções de escalabilidade (por exemplo, zk-rollups no Ethereum), sistemas de verificação de identidade e plataformas de votação seguras. Eles também são usados em vários outros sistemas que exigem privacidade ou verificação eficiente de cálculos.

🔗 Termos relacionados

Pré-requisitos:

📚 Fontes