Saindo do Zero em Zero Knowledge (ZK)
ZK parece ter um futuro tão disruptivo e promissor quanto Blockchain em 2017, mas o que é ZK? E por que tantos olham para ela como a próxima grande coisa em tech?
Desde o último trimestre de 2022 que há um burburinho em todas as conversas de cripto. Esse burburinho se chama Zero Knowledge (ZK). Seja em discussões sobre como tornar bridges mais seguras, 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.
Por se tratar de um assunto bastante complexo sobre o qual eu tenho me aprofundado há não tanto tempo assim, algumas dúvidas ainda persistem. Dito isso, se você quiser me ajudar nessa trajetória de entender ZK e traduzir isso para que todos entendam, não hesite em comentar ou entrar em contato.
Vamos lá então.
Como surgiu e o que é ZK?
ZK é um algoritmo de criptografia que permite determinada pessoa/protocolo/sistema prove algo para outra pessoa/protocolo/sistema sem que nenhuma informação seja compartilhada entre essas duas partes a nã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 envolve aquele livro chamado “onde está Wally”. Lembra? 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, posicionar a ilustração atrás da cartolina de tal maneira que quando você olhar pelo buraco irá ver a figura do Wally. Isso te provaria que eu sei onde está o Wally na ilustração sem te mostrar onde ele está, pois o posicionamento da ilustração atrás da cartolina poderia ser qualquer uma.
Os algoritmos e formas de se fazer isso tiveram sua proposição, ou nascimento se você assim preferir, em dois textos acadêmicos, um 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, sem interação de se provar que você tem conhecimento sobre algo. Isso foi muito importante porque uma das formas de eu te provar algo pode sempre ser ficar trocando informações por várias vezes, de tal forma de depois de eu te provar N vezes de que eu sei algo, você estatisticamente estaria convencido disso.
Isso esbarra em duas restrições que são: (1) o volume de informações que tem que ser trocados a cada interação e (2) a quantidade de interações necessárias. Em termos computacionais isso se traduz em tamanho dos arquivos e capacidade de processamento, e quanto maior os dois, mais lento e custoso fica esse processo. Com o desenvolvimento dos SNARKs isso possibilitou que houvesse essa troca somente uma única vez e com um numero reduzido de informações.
Outra forma de se fazer isso é via STARKs, acrônimo para Scalable, Transparent ARgument of Knowledge, ou seja, 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, e há também uma corrente que defende que STARKs são protegidos do avanço de quantum computing, mas confesso que não fui muito alem disso aqui.
Juntando as duas coisas temos as utilizações atuais em Blockchain de ZK-SNARKs, ou seja, uma única interação entre dois agentes, onde 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/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 que, após o fazerem, 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 de escalabilidade atual. 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. Via ZK essas provas podem ser feitas de uma maneira muito mais rápida, sem ter que transitar 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, fazendo com que a escala seja atingida via utilização mais eficiente de espaço do bloco da rede principal para registrar operações que, no final das contas, representam várias outras operações em outras camadas (layers). E ZK-SNARKs dá o conforto necessário para que essa representatividade seja segura, que os arquivos a serem validados são pequenos, que não haja interação e que nenhuma informação seja 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), onde um professor de Stanford relata 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, ou seja, para resolver um problema seu 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 em desenvolvimento fora de Blockchain que ele cita tem a ver com Fake News e como ZK pode ser utilizado para combater isso.
O que teremos pela frente?
Bem, como eu disse lá no começo, comecei a enveredar por esse mundo de conhecer melhor sobre ZK há muito pouco tempo, mas a sensação pelo que tenho escutado, lido, 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 tais como: (1) me parece que a prova de ZK envolve estatística e que portanto há alguma chance, ínfima mas não zero, dessa prova gerar um falso positivo e quais as repercussões e formas de se evitar isso; (2) Dá para 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? (3) já temos algo de ZK sendo testado no mercado financeiro tradicional? ZK poderia resolver a discussão sobre privacidade das CBDCs e Stablecoins?
Espero ter conseguido te tirar do zero em relação ao seu conhecimento de ZK e te deixado com 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)
Excelente, ajudou muito, abriu muito mais minha cabeça. Acabei de assistir 2 lives seguidas sobre ZK, mas foram muito técnicas, nível elevado demais para iniciante como eu, com o artigo, que por sinal está muito bem escrito, um leigo consegue ter muito mais noção do que é esta tecnologia ZK, agradeço muito a vocês todos, saúde e prosperidade a todos.