Saindo do zero em Zero Knowledge (ZK)

Gustavo Cunha diz que ZK tem aplicação no dia a dia das pessoas.

Desde o último trimestre de 2022 há um burburinho em todas as conversas de cripto. Esse burburinho se chama ZK, abreviação de Zero Knowledge. Seja em discussões sobre como tornar mais seguras as “bridges” – as pontes que interligam diferentes blockchains -, sobre como garantir a privacidade de dados e pessoas ou até formas de dar escala para blockchains, a discussão sempre acaba indo no sentido de que ZK resolve ou resolverá isso. E desde que ouvi essa palavra sempre me perguntei o que ela realmente significava, o que era, o que efetivamente poderia resolver e por aí vai… E quando fico com isso na cabeça sempre atuo no sentido de ir atrás do conhecimento para entender e conseguir reproduzi-lo.

Vale já fazer a ressalva de que este texto não será conclusivo e muito provavelmente terá alguma inconsistência, já que esse é um assunto bastante complexo e tenho me aprofundado nele há não tanto tempo assim para conseguir fechar todas as dúvidas que tenho. Dito isso, se você quiser me ajudar nessa trajetória de entender ZK e traduzir isso para que todos entendam, não hesite em entrar em contato.

Vamos lá então.

Como surgiu e o que é ZK?

ZK é um algoritmo de criptografia que permite que determinada pessoa, protocolo ou sistema prove algo para outra pessoa, protocolo ou sistema sem que nenhuma informação seja compartilhada entre essas duas partes. Anão ser a confirmação de que (A) tem conhecimento sobre o assunto (B) e (A) e (B) concordam com isso. Essa prova tem que ser feita sem um terceiro, só entre as duas partes.

A ilustração mais usada para explicar isso envolve aquele livro chamado “Onde está Wally”. Lembra dela? Foi uma febre há uns 20 anos atrás. Bem, a explicação decorre de eu te provar que sei onde o Wally está na ilustração sem te apontar onde ele está. A forma de fazer isso é pegar uma cartolina, fazer um buraco bem pequeno e posicionar a ilustração atrás da cartolina de tal maneira que quando você olhar pelo buraco, verá a figura do Wally. Isso te provaria que eu sei onde está o Wally na ilustração, mas sem te mostrar onde ele está, pois o posicionamento da ilustração atrás da cartolina poderia ser qualquer um.

Os algoritmos e formas de se fazer isso tiveram sua proposição, ou nascimento, se você assim preferir, em dois textos acadêmicos. Um deles é de 1989 e outro é de 1991. Ou seja, temos algo como 30 anos desde que a primeira forma de se fazer isso foi concebida. De lá para cá, muito se avançou e alguns conceitos já estão definidos quando falamos de ZK.

Um dos conceitos importantes foi o de SNARKs, que é um acrônimo para (Succinct, Non-interactive, Argument of Knowledge), ou seja, uma forma sucinta e sem interação para provar que você tem conhecimento sobre algo. Isso foi muito importante porque uma das formas de eu te provar algo pode sempre ser a troca de informações várias vezes. Portanto, numa forma em que depois de eu te provar “N” vezes de que eu sei algo, você estatisticamente estaria convencido disso.

Isso esbarra em duas restrições. A primeira delas é o volume de informações que tem que ser trocados a cada interação. A segunda é a quantidade de interações necessárias. Em termos computacionais, isso se traduz em tamanho dos arquivos e capacidade de processamento. Mas, quanto maior os dois, mais lento e custoso fica esse processo. O desenvolvimento dos SNARKs possibilitou essa troca somente uma única vez e com um número reduzido de informações.

Outra forma de se fazer isso é via STARKs, acrônimo para Scalable, Transparent Argument of Knowledge. Isso significa uma forma escalável e transparente de se provar que se tem conhecimento sobre algo. Até onde consegui entender, essa forma parece ser mais escalável à medida que temos mais dados a necessitarem provas. Além disso, há uma corrente que defende que STARKs são protegidos do avanço da computação quântica. Mas, confesso que não fui muito a fundo aqui.

Juntando as duas coisas temos as utilizações atuais em Blockchain de ZK-SNARKs, ou seja, uma única interação entre dois agentes. Assim, o primeiro constata que o segundo sabe algo através de uma prova sucinta (pequena) e sem que esse segundo abra nenhuma informação adicional. Essas provas são feitas de maneira completa, válida e sem que o verificador receba nenhuma informação a não ser a de que ela é válida ou não.

Parece muito etéreo e pouco palpável, mas é aí que entram os casos de uso que estão sendo testados e os que já se pode vislumbrar com o uso disso. Vamos a eles.

Porque ZK pode mudar o mundo?

O que você acharia de poder provar para um banco que você tem capacidade de pagar um empréstimo sem ter que revelar nenhuma informação financeira sua? Ou provar que você é brasileiro sem mostrar seu passaporte, RG ou carteira de motorista? Ou provar que você tem determinado conhecimento sem mostrar seu currículo ou certificado do curso? Ou, para terminar, provar que uma determinada cópia ou edição de uma foto foi tirada em determinado local e data?

Bem, esses são alguns casos de uso que já estão sendo testados, mas não para por aí. Casos de uso em computação e arquitetura de sistemas vão muito além disso. Por tornar a prova rápida e sem a necessidade de grande capacidade computacional para fazê-la, ZK está sendo usado também para a “exportação” de determinadas atividades para computadores mais potentes, Depois que fazem, os computadores emitem uma prova do resultado de tal forma que o computador mais “fraco” consiga atestar e comprovar o resultado.

Qual o papel de Cripto-Blockchain em ZK?

Bem, um dos gargalos das blockchains é a limitação atual de escalabilidade. Não preciso ir longe, a própria rede Ethereum está se desenvolvendo via as suas Layers 2, ou L2 como chamamos. De forma simplista, o que as L2 fazem é processar várias operações e registrar provas desse processamento na rede principal. E é aqui que ZK entra.

Por meio de ZK, essas provas podem ser feitas de uma maneira muito mais rápida, sem o trânsito de muitas informações. E o melhor de tudo, sem ter que revelar nada sobre a base de transações que deram origem a essa prova. Isso é o que chamam de ZK-rollups. O desenvolvimento disso está em crescimento acelerado, com a Polygon prometendo colocar seu ZK-rollup em produção ainda em março/2023.

Por ter essa limitação de escalabilidade, a utilização de ZK parece fazer muito sentido na interação entre esses vários layers que estão sendo criados. Isso fará com que a escala seja atingida por meio do uso mais eficiente de espaço do bloco da rede principal para registrar operações. No final das contas, essas operações representam várias outras oem outras camadas (layers). Assim, ZK-SNARKs dá o conforto necessário para que essa representatividade seja segura, que os arquivos a serem validados são pequenos, sem interação e que nenhuma informação revelada sobre o conteúdo na L2.

O que me abriu os olhos em relação a ZK foi um podcast que ouvi (link no final do texto), no qual um professor da Universidade de Stanford diz que na visão dele, o que blockchain está fazendo para ZK é o que o processo de levar o homem para a Lua fez para inúmeras tecnologias que viriam a mudar o mundo nas décadas seguintes. Portanto, para resolver seu problema de escalabilidade, blockchain está desenvolvendo ZK a um nível que vários outros casos de uso e setores serão afetados para frente. Um caso em desenvolvimento fora de blockchain que ele cita tem a ver com notícias falsas e como ZK pode ajudar a combater isso.

O que teremos pela frente

Como eu disse lá no começo, comecei a enveredar por esse mundo de conhecer melhor sobre ZK há pouco tempo. No entanto, a sensação pelo que tenho escutado, lido e estudado é que podemos estar diante de uma tecnologia muito poderosa e disruptiva. Um sentimento muito similar a quando, em 2017, comecei a estudar sobre cripto e blockchain.

Apesar disso, algumas perguntas ainda ecoam na minha cabeça. Uma delas vem do fato de que me parece que a prova de ZK envolve estatística, portanto, há alguma chance, ínfima mas não zero, dessa prova gerar um falso positivo. Quais as repercussões e formas de se evitar isso?

Uma outra pergunta que tenho é se é possível usar KZ em todas as trocas de informação no ambiente digital. Trocas entre meu computador e a nuvem, por exemplo? Quais as restrições que essa tecnologia impõe? E pergunto ainda se já temos algo de ZK sendo testado no mercado financeiro tradicional. A ZK poderia resolver a discussão sobre privacidade das moedas digitais de bancos centrais (CBDCs) e stablecoins?

Espero que esse texto tenha te ajudado em duas coisas. A primeira é te tirar do zero em relação ao seu conhecimento de ZK. A segunda é ter te deixado algumas dúvidas. Afinal de contas, em tudo temos espaço para aprendermos mais.

Onde continuamos:

LinkedIn: @Fintrender

Instagram: @Fintrender

Twitter: @Fintrender

Facebook: @Fintrender

Para entender mais sobre o assunto (em ordem crescente de complexidade):

Computer Scientist Explains One Concept in 5 Levels of Difficulty | WIRED

Episode 256: New ZK Use Cases with Dan Boneh – Zero Knowledge | Podcast on Spotify

What is ZK technology? – Bitstamp Learn Center

What Is Zero-knowledge Proof and How Does It Impact Blockchain? | Binance Academy

Polygon zkEVM | Scaling for the Ethereum Virtual Machine

Zero-Knowledge rollups | ethereum.org

Zero-knowledge proofs | ethereum.org

ZK Whiteboard Sessions – Module One: What is a SNARK? by Dan Boneh – YouTube

The_Knowledge_Complexity_Of_Interactive_Proof_Systems.pdf (Academic paper 1989)

Non-Interactive Zero-Knowledge and Its Applications (Academic paper 1991)

*Gustavo Cunha é fundador da FinTrender.

Outro artigo do autor:

Moeda comum da Argentina e Brasil: uma ideia procurando um caso de uso

Compartilhe agora

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *