O que são zk-SNARKs e zk-STARKs?
Página Inicial
Artigos
O que são zk-SNARKs e zk-STARKs?

O que são zk-SNARKs e zk-STARKs?

Avançado
Publicado em Feb 26, 2019Atualizado em Feb 22, 2024
6m
A privacidade sempre foi vista como um recurso valioso dentro da comunidade de criptomoedas. É o recurso precursor da fungibilidade, que é necessária quando se trata de uma forma de dinheiro amplamente utilizada. Analogamente, a maioria dos investidores de criptomoedas não querem que seus portfólios e histórico de transações sejam completamente públicos. Entre as várias técnicas criptográficas que visam fornecer privacidade às blockchains, as provas zk-SNARK e zk-STARK são dois exemplos notáveis.

zk-SNARK quer dizer ‘zero-knowledge succinct non-interactive argument of knowledge’ (argumento de conhecimento sucinto não interativo de conhecimento-zero) , e zk-STARK representa ‘zero-knowledge succinct transparent argument of knowledge’ (argumento de conhecimento sucinto transparente de conhecimento-zero). As provas Zk-SNARK já estão sendo usadas na criptomoeda Zcash, no sistema de pagamento baseado em blockchain do JP Morgan Chase, e também como uma forma segura de autenticar clientes para servidores. Mas enquanto os zk-SNARKs fizeram progressos significativos para serem bem estabelecidos e adotados, as provas zk-STARK estão sendo apresentadas como a nova versão  melhorada do protocolo, abordando muitas das desvantagens anteriores dos zk-SNARKs.


The Ali Baba's Cave Parable (A Parábola da Caverna de Ali Baba)

Em 1990, um artigo intitulado "Como explicar os protocolos de conhecimento zero a seus filhos" foi publicado pelo criptógrafo Jean-Jacques Quisquater (juntamente com outros colaboradores). O artigo introduz o conceito das provas ZK com uma parábola envolvendo a Caverna de Ali Baba. Desde a sua criação, a parábola foi adaptada várias vezes e agora temos várias variações. Ainda assim, a informação subjacente é essencialmente a mesma.

Vamos imaginar uma caverna em forma de anel com uma única entrada e uma porta mágica que separa dois caminhos. Para percorrer a porta mágica, é preciso sussurrar as palavras secretas corretamente. Então, considere que Alice (amarelo) quer provar a Bob (azul) que ela sabe quais são as palavras secretas - ainda mantendo-as em segredo. Para fazer isso, Bob concorda em esperar do lado de fora, enquanto ela entra na caverna e caminha até o final de um dos dois caminhos possíveis. Neste exemplo, ela decide passar pelo caminho 1.

Depois de esperar um tempo, Bob passa pela entrada e grita de que lado ele quer que Alice apareça (Caminho 2 neste caso).

Se Alice realmente souber o segredo, ela certamente aparecerá pelo caminho que Bob gritou. 

Todo o processo pode ser repetido várias vezes como uma maneira de confirmar que Alice não está escolhendo o caminho certo por sorte.

A parábola da Caverna de Ali Baba ilustra o conceito das provas de conhecimento-zero, que são parte dos protocolos zk-SNARK e zk-STARK. As provas ZK podem ser usadas para provar a posse de certos conhecimentos sem revelar qualquer informação sobre os mesmos.


zk-SNARKs

Zcash foi a primeira aplicação em larga escala do zk-SNARKs. Enquanto outros projetos focados em privacidade, como a Monero, adotam assinaturas em anel (ring signatures) dentre outras técnicas - que camuflam as informações - zk-SNARKs muda a forma como os dados são compartilhados. A privacidade da Zcash se deve ao fato que as transações da rede podem permanecer encriptadas e, ainda assim, serem verificadas como válidas através do uso das provas de conhecimento-zero (zero-knowledge proofs). Portanto, os participantes que forçam as regras de consenso só precisam ter conhecimento de uma pequena parcela de informação para cada transação. Vale lembrar que as funcionalidades de privacidade da Zcash não são ativas por padrão, ou seja, são opcionais e dependem de configuração manual.

Provas de conhecimento-zero permitem que um indivíduo prove para outro que um argumento é verdadeiro, sem precisar fornecer nenhuma outra informação que vai além da validade do argumento. Os membros envolvidos são geralmente chamados de provador (prover) e verificador (verifier), e o argumento que eles mantêm em segredo é chamado de testemunho (witness). O principal objetivo dessas provas é revelar o mínimo de informação possível entre duas partes. Em outros termos, uma pessoa pode usar as provas de conhecimento-zero para provar que ela possui certo conhecimento sem revelar nenhuma informação do conhecimento em si.

A palavra “succinct” (sucinto) do acrônimo SNARK significa que essas provas são menores em tamanho (por volta de 288 bytes) e podem ser verificadas com muita rapidez. “Non-interactive” (não interativo) significa que há pouca ou nenhuma interação entre o provador e o verificador. Versões mais antigas de protocolos de conhecimento-zero geralmente exigem que o provador e o verificador se comuniquem diversas vezes e, portanto, são consideradas provas ZK interativas (interactive zk proofs). Nas versões não-interativas, os provadores e verificadores só precisam se comunicar uma única vez.

Atualmente, as provas zk-SNARK baseiam-se em uma estrutura inicial (entre provador e verificador) que depende de confiança (initial trusted setup). Isso significa que um conjunto de parâmetros públicos é necessário para construir provas de conhecimento-zero e, com isso, transações privadas. Tais parâmetros funcionam como as regras do jogo e são programados no protocolo como um dos fatores necessários na autenticação de transações. Entretanto, isso pode levar à problemas de centralização, pois os parâmetros geralmente são definidos por um grupo relativamente pequeno de pessoas.

Um setup confiável é fundamental para implementações de zk-SNARK, mas pesquisadores estão buscando novas alternativas para reduzir a necessidade de confiança necessária no processo. Apesar de ser relativamente centralizada, a fase inicial (initial trusted setup) é importante para prevenir fraudes e duplicação de moedas. Se alguém possuir acesso aos parâmetros de aleatoriedade do sistema, ele pode criar provas falsas que são vistas como válidas pelos verificadores. No caso da Zcash, a fase de setup inicial é conhecida como Cerimônia de Geração de Parâmetros.
A palavra “ARguments” (argumentos) do acrônimo refere-se ao fato de que as provas zk-SNARKs possuem a propriedade matemática da correção (soundness). Isso significa que um provador desonesto possui uma chance extremamente baixa de sucesso ao tentar fraudar o sistema. No contexto da computação, a propriedade da correção considera que o provador possui uma capacidade limitada de poder computacional. Teoricamente, um provador com poder computacional suficiente poderia criar provas falsas e esse é um dos motivos de computadores quânticos serem considerados por muitos como uma ameaça às provas ZK-SNARKs e aos sistemas de blockchain.

A peça final do acrônimo é “Knowledge” (conhecimento) e diz respeito à impossibilidade do provador de construir uma prova sem realmente possuir o conhecimento (também chamado de testemunho ou witness) para embasar seu argumento.

As provas de conhecimento-zero podem ser rapidamente verificadas e ocupam muito menos espaço do que uma transação padrão de Bitcoin. Isso abre um caminho de possibilidades para a tecnologia zk-SNARK, que pode ser usada tanto como uma solução para privacidade quanto para escalabilidade.


zk-STARKs

As zk-STARKs foram criadas como uma versão alternativa das provas zk-SNARK e são consideradas uma implementação mais rápida e barata da tecnologia. Mas mais importante que isso, as zk-STARKs não dependem de uma estrutura inicial baseada em confiança (initial trusted setup) - por isso o “T” de transparent.

Tecnicamente falando, zk-STARKs são baseados em técnicas de criptografia que não dependem de um setup de confiança e se baseiam em funções hash resistentes a colisões. Tal abordagem também elimina as suposições teórico-numéricas (presentes nas provas zk-SNARK) que exigem maior poder computacional e são suscetíveis a ataques de computadores quânticos.

Um dos principais motivos das zk-STARKs oferecerem uma implementação mais rápida e barata se deve ao fato de o número de rodadas de comunicação entre provador e verificador permanecer constante, independente do aumento no trabalho computacional. Nas zk-SNARKs, por outro lado, quanto maior o trabalho computacional, maior o número de mensagens que devem ser trocadas entre as partes. Portanto, o tamanho dos dados nas provas zk-SNARK é muito maior do que nas zk-STARK.

É visível que tanto as zk-SNARKs quanto as zk-STARKs são alternativas interessantes para lidar com a crescente preocupação com privacidade. Dentro do mundo das criptomoedas, esses protocolos possuem um grande potencial e podem ser uma das grandes pontes em direção à adoção global.
Compartilhar publicações
Registre uma conta
Coloque seus conhecimentos em prática. Abra uma conta na Binance hoje mesmo.