WEB3DEV

Cover image for Guia para entender Zero Knowledge Proofs
João Lucas Liberato
João Lucas Liberato

Posted on

Guia para entender Zero Knowledge Proofs

Esse artigo é uma tradução de Nnam Darlington feita por João Lucas Liberato. Você pode encontrar o artigo original aqui.

A frase “Zero Knowledge Proofs” (prova de conhecimento zero em português) tornou-se um termo usado com mais frequência no ecossistema web3, pois a maioria das pessoas o considera o futuro do dimensionamento e privacidade de blockchains da layer 1. Tenho certeza que você se deparou com este artigo, em uma tentativa de entender essa terminologia cada vez mais usada, mas antes de mergulharmos nela, quero esclarecer uma coisa:

As Zero Knowledge Proofs não são uma solução para todos os problemas.

Eu vejo muitas pessoas falando sobre Zero Knowledge como se fosse uma solução mágica que corrige tudo, literalmente sem contexto para suas limitações, mas para entender suas limitações, precisamos entender, o que é certo? Então vamos nos aprofundar.

O que diabos é zero knowledge proof?

Explicação ZKs

As Zero Knowledge Proofs, simplesmente definidas, são um meio pelo qual um provador convence um verificador de que alguma afirmação em particular é verdadeira, sem revelar nenhuma informação sensível em relação à prova ao verificador.

Quando ouvi pela primeira vez sobre Zero Knowledge Proofs, toda a ideia parecia engraçada e impossível, porque quando falamos de prova no sentido literal, refere-se ao estabelecimento de um fato ou verdade de uma afirmação usando uma evidência ou argumento substancial. Então, como alguém poderia fazer uma prova substancial que não fornece evidência (conhecimento)?

Existem diferentes conceitos ou exemplos que as pessoas costumam usar ao explicar ZKPs (abreviação de Zero Knowledge Proofs). Alguns deles incluem:

  1. Onde está Waldo?
  2. A coloração do mapa
  3. A caverna do Alibaba
  4. Bolas coloridas e o amigo daltônico

Nesse artigo, vamos discutir apenas o 1 e o 4.

Onde está Waldo?

Waldo, criado pelo ilustrador Martin Handford em 1987, é a figura presente no livro de puzzle infantil, onde cada página tem uma multidão de personagens diferentes. A ideia é encontrar o Waldo, onde quer que ele esteja escondido.

Waldo

Então vamos supor por um momento, Bob e Alice estavam jogando o jogo, e Bob encontra Waldo primeiro, e informa a Alice que ele encontrou Waldo, mas Alice duvida que seja verdade. Bob pode encontrar uma maneira de convencer Alice, que ele realmente sabe onde Waldo está, sem revelar a posição de Waldo para Alice?

Bem, isso é difícil, mas não impossível. Lembre-se de que ele não pode apontar para Waldo diretamente, ou ele daria a localização de Waldo para Alice. Então, o que ele pode fazer é encontrar uma cartolina provavelmente com o dobro do tamanho do livro e usá-lo para cobrir a imagem original. Ele poderia então fazer um pequeno buraco nele, que ele pode usar para apontar a localização de Waldo.

Waldo

Depois, Bob tira a cartolina, tendo convencido Alice de que ele realmente sabe a localização de Waldo, mas ao mesmo tempo, Alice ainda não será capaz de decifrar a localização de Waldo, como o buraco que Bob criou na cartolina, poderia ter coberto qualquer parte da imagem original.

Propriedades de uma Zero Knowledge Proof

Para que um método se qualifique como ZKP, ele deve satisfazer as seguintes condições:

Integralidade: Esta condição significa simplesmente que se Bob (o provador) foi honesto e não mentiu, ele deveria ser capaz de convencer totalmente Alice (o verificador), que ele está dizendo a verdade.

Solidez: Esta condição significa que se Bob fosse um trapaceiro, ele nunca deveria ser capaz de enganar Alice para que acreditasse em suas mentiras.

Conhecimento zero: Essa condição significa simplesmente que Bob deve ser capaz de convencer totalmente Alice de que ele conhece a localização de Waldo, sem revelá-la.

Bolas coloridas e o amigo daltônico

Porventura, o primeiro conceito, não ficou tão claro, isso deve deixar as coisas um pouco mais claras.

Bob tem uma amiga, Alice, que é daltônica. Bob tem duas bolas: uma vermelha e uma verde, mas idênticas. Para Alice, eles parecem completamente idênticas e ela duvida que sejam realmente distinguíveis. Digamos que Bob quer provar a ela que elas são de fato de cores diferentes, mas não quer revelar qual é o vermelho e qual é o verde. Como ele pode fazer isto?

Bob dá as duas bolas para Alice, depois pede que ela troque as bolas atrás das costas e toda vez ele tem que adivinhar se as bolas foram trocadas ou não.

Alice então trocará a bola e perguntará a Bob: “Eu troquei a bola?” Todo este procedimento é então repetido quantas vezes forem necessárias. Ao olhar para suas cores, Bob pode facilmente dizer se Alice as trocou ou não. Por outro lado, se fossem da mesma cor e, portanto indistinguíveis, não há como ele adivinhar corretamente com probabilidade superior a 50%. Se essa “prova” for repetida várias vezes, Alice vai ficar convencida (“integralidade”) de que as bolas são de fato de cores diferentes; caso contrário, a probabilidade de Bob ter conseguido identificar aleatoriamente todas as vezes é próxima de zero (“solidez”), enquanto Alice ainda não sabe qual bola é vermelha ou verde (“conhecimento zero”).

Classificações de Provas de Conhecimento Zero

1.Provas interativas de conhecimento zero: todos os conceitos que discutimos até agora se enquadram nessa classe de ZKPs. Eles exigem múltiplas interações entre o provador e o verificador para que o provador convença o verificador. Embora essa classe de ZKPs funcione, eles são difíceis de implementar em uma blockchain, pois cada interação entre o provador e o verificador custará gás, logo não seria escalável.

  1. Provas de conhecimento zero não interativas: Essa classe de ZKPs foi a mais adotada devido ao fato de que requer apenas uma única interação entre o provador e o verificador para que o provador convença completamente o verificador. Uma maneira fácil de explicar como isso é possível é que o provador simule as interações necessárias entre ele e o verificador, e envie uma cópia dessa simulação para o verificador. O verificador, por sua vez, só precisa verificar se a simulação foi feita corretamente, para ficar completamente convencido. A criptografia por trás desses sistemas de prova é bastante complexa e será deixada para um artigo futuro.

Aplicações de Provas de Conhecimento Zero

As ZKPs têm uma ampla gama de aplicações, mas entre elas, aqui estão algumas populares:

  1. Privacidade em blockchains: A transparência de Blockchains, embora tenha muitas vantagens, pois podemos verificar publicamente as transações, também implica em pouca privacidade. Com ZKPs,poderíamos proteger as transações no blockchain, tornando possível realizar transações privadas. Exemplos de blockchains ou protocolos privados são Zcash, Mina e Monero.

  2. Escalabilidade em blockchains: A blockchain da Ethereum usa um modelo de Proof of Stake que, embora aumente a segurança em protocolos descentralizados, consome muitos recursos e requer muito poder computacional para funcionar. Com o advento dos Zk-rollups, em vez de processar ou calcular cada transação que é feita diretamente no blockchain, agora podemos agrupar centenas e milhares de transações em uma, com uma prova de validade para verificar a exatidão das transações e registrá-las em Ethereum de uma vez.

  3. Autenticação: ZKPs estão sendo adotadas em massa em protocolos de autenticação, pois fornecem um meio de autenticação de usuários sem a necessidade de informações privadas, como senhas, IDs etc.

  4. Aprendizado de máquina: As ZPKs também estão sendo muito utilizadas no aprendizado de máquina, pois podem permitir que o proprietário de um algoritmo convença outras pessoas sobre os resultados de seus modelos, sem revelar nenhuma informação sobre o próprio modelo de aprendizado de máquina.

O mundo das ZPKs é bastante vasto, mas com muitos potenciais para mudar a web como a conhecemos atualmente. Aqui estão alguns outros recursos para verificar (em inglês):

  1. Zcash — a primeira blockchain privada
  2. Porquê e como as zk-Snarks funcionam
  3. Zero Knowledge Proofs com Avi Widgerson
  4. Ethereum Scaling- Zk Rollups e a teoria da complexidade

Top comments (0)