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)
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
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.
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.
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.
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.