O que é zk-SNARK?

Publicado por Javier Ricardo

O que é zk-SNARK?


Zk-SNARK é uma sigla que significa “Zero-Knowledge Succinct Non-Interactive Argument of Knowledge”.
Um zk-SNARK é uma prova criptográfica que permite a uma parte provar que possui certas informações sem revelar essas informações. Esta prova é possível usando uma chave secreta criada antes que a transação ocorra. Ele é usado como parte do protocolo para a criptomoeda, Zcash.


Principais vantagens

  • Zk-SNARK é um protocolo à prova de conhecimento zero usado em criptografia, e é um acrônimo que significa “Zero-Knowledge Succinct Non-Interactive Argument of Knowledge”.
  • Essa prova foi desenvolvida e introduzida pela primeira vez no final dos anos 1980 e agora é empregada pela criptomoeda Zcash para resolver um problema de anonimato percebido com blockchains do tipo Bitcoin.
  • As provas do Zk-SNARK contam com uma configuração inicial de “sistema de confiança” que foi criticada como uma falha de segurança inerente.

Compreendendo o zk-SNARK


Para muitos membros originais da comunidade criptomoeda – principalmente a comunidade Bitcoin – a privacidade era um objetivo assumido e uma característica das criptomoedas.
No entanto, a privacidade sempre foi uma preocupação de segunda ordem, dada a necessidade da criptomoeda de criar um sistema “sem confiança” para garantir a integridade da moeda eletrônica e das transações digitais.


No início de 2010, os usuários do Bitcoin às vezes presumiam que suas transações eram anônimas porque suas identidades offline não estavam associadas às chaves públicas dos usuários.
Mas, no final da década, esforços coordenados por cientistas de dados, hackers e agentes da lei provaram que não só é possível como também é relativamente fácil reidentificar pessoas que forneceram dados pseudônimos a fontes múltiplas.


Por causa da percepção da falta de privacidade de algumas das criptomoedas originais, como o Bitcoin, os desenvolvedores começaram a trabalhar em moedas com foco na privacidade.
O mais proeminente deles foi o Zcash, apoiado por uma tecnologia conhecida como zk-SNARKs.

Prova de Conhecimento Zero


Um zk-SNARK (“argumento de conhecimento sucinto não interativo de conhecimento zero”) utiliza um conceito conhecido como “prova de conhecimento zero”.
A ideia por trás dessas provas foi desenvolvida pela primeira vez na década de 1980. Simplificando, uma prova de conhecimento zero é uma situação em que cada uma das partes em uma transação é capaz de verificar uma à outra que possui um determinado conjunto de informações, ao mesmo tempo que não revela quais são essas informações.


Para a maioria dos outros tipos de prova, pelo menos uma das duas partes deve ter acesso a todas as informações.
Uma prova tradicional pode ser comparada a uma senha usada para acessar uma rede online. O usuário envia a senha e a própria rede verifica o conteúdo da senha para verificar se está correta. Para fazer isso, a rede também deve ter acesso ao conteúdo da senha.


Uma versão de prova de conhecimento zero desta situação envolveria o usuário demonstrar à rede (por meio de prova matemática) que ele tem a senha correta sem realmente revelar a própria senha.
As vantagens de privacidade e segurança nesta situação são claras: Se a rede não tiver a senha armazenada em algum lugar para fins de verificação, a senha não pode ser roubada.


A base matemática de zk-SNARKS é complexa.
No entanto, provas desse tipo permitem que uma parte demonstre não apenas que existe uma informação específica, mas também que a parte em questão tem conhecimento dessa informação. No caso do Zcash, os zk-SNARKs podem ser verificados quase instantaneamente, e o protocolo não requer nenhuma interação entre o provador e o verificador.

Críticas a zk-SNARKs


Existem, é claro, preocupações relacionadas ao zk-SNARKs.
Por exemplo, se alguém foi capaz de acessar a chave privada que foi usada para criar os parâmetros do protocolo de prova, eles poderiam criar provas falsas que ainda assim pareciam válidas para verificadores. Isso permitiria que essa pessoa criasse novos tokens de Zcash por meio de um processo de falsificação. Para evitar que isso aconteça, o Zcash foi projetado de forma a tornar os protocolos de prova elaborados e espalhados por várias partes.


Embora a construção do processo de comprovação Zcash tenha sido concluída de forma a minimizar a possibilidade de falsificação de tokens por meio de provas falsas, há pelo menos uma outra preocupação relacionada à criptomoeda também.
Zcash foi criado com um “imposto” de 20% cobrado sobre todos os blocos criados ao longo dos primeiros anos do token. Esse imposto é conhecido como “imposto do fundador” e é usado para compensar os desenvolvedores da criptomoeda.


Os críticos sugeriram que os fundadores poderiam usar potencialmente esta faceta do sistema para criar um número infinito de tokens Zcash sem que ninguém mais soubesse da existência desses tokens.
Por esse motivo, não é inteiramente possível saber o número exato de tokens Zcash existentes neste momento.


Desde 2019, alguns desenvolvedores têm trabalhado para melhorar zk-SNARKs removendo a configuração confiável.
Uma equipe chamada Suterusu desenvolveu um sistema chamado zK-ConSNARK que afirma ser operável sem uma configuração confiável, pode fornecer proteção de privacidade para blockchains convencionais como Bitcoin e tem a inflação mais baixa para qualquer criptomoeda existente.