Zero-knowledge proof é um método pelo qual uma parte (responsável pela prova) pode provar à outra parte (verificador) que uma afirmação é verdadeira, sem revelar nenhuma informação adicional. Isso é particularmente útil quando a informação é sensível ou confidencial e a parte responsável pela prova não quer que o verificador tenha acesso a ela.
A parte responsável pela prova fornece uma prova matemática que só ela é capaz de gerar e o verificador pode usar essa prova para verificar a veracidade da afirmação. No entanto, não é possível usar essa prova para se obter a informação original.
Imagine um túnel com duas entradas, A e B. Há uma porta trancada com um código secreto bloqueando o único caminho e impedindo que as pessoas caminhem pelo túnel de uma ponta a outra (ou seja, de A até B). Você sabe o código secreto e quer vendê-lo para a Sra. X, que deseja acessar o túnel.
Você quer que ela pague adiantado antes de revelar o código, mas primeiro ela quer que você prove que realmente conhece o código. Nesse caso, ela pode simplesmente parar na frente do túnel e observar você entrar em uma das entradas e sair pela outra. Assim, você a convencerá de que realmente sabe qual é o código secreto.
A popularidade dos protocolos zero-knowledge proof nos setores de blockchain e cripto é impulsionada pela crescente demanda por privacidade e segurança em transações digitais. Com o surgimento da tecnologia blockchain e das criptomoedas, há uma necessidade crescente de verificar transações sem revelar informações confidenciais — os ZKPs são capazes de atender a essa necessidade.
Os ZKPs atraíram maior atenção e interesse nos últimos anos, com o lançamento de muitos protocolos que utilizam essa tecnologia e as principais blockchains desenvolvendo zk-rollups. Um claro sinal da popularidade dos ZKPs pôde ser notado na conferência DevCon 2022, onde mais de 20% de todas as palestras falaram sobre essa tecnologia.
Um desenvolvimento importante no âmbito das provas de conhecimento zero é o crescente uso de zk-SNARKs, um tipo específico de ZKP. Os protocolos zk-SNARKs foram amplamente adotados por várias aplicações do setor DeFi, como transações privadas de tokens e serviços de empréstimos com garantia. Outro grande desenvolvimento dos ZKPs é o maior foco na escalabilidade e no desempenho através de zk-rollups.
Zk-SNARKs é a sigla para "zero-knowledge succinct non-interactive argument of knowledge" (do inglês, "argumento de conhecimento sucinto não interativo de conhecimento-zero"). Trata-se de um tipo específico de ZKP que permite que uma declaração seja verificada sem revelar nenhuma informação sobre a declaração em si.
Os protocolos zk-SNARKs já foram usados em aplicações como a Zcash e o sistema de pagamento baseado em blockchain da JP Morgan Chase. Eles também têm sido usados como uma forma segura de autenticação de clientes para servidores.
O protocolo zk-rollups é uma solução de escalabilidade para redes blockchain que facilita o agrupamento de várias transações em uma única transação maior, que é registrada na blockchain. Por exemplo, em 2022, a BNB Chain lançou sua rede de testes zkBNB criada com a arquitetura zk-rollups.
A zkBNB é capaz de agrupar centenas de transações em um único lote off-chain e gerar uma prova criptográfica para provar a validade de todas as transações. A solução zk-rollups fornece um equilíbrio entre escalabilidade e segurança e é adequada para configurações com alto nível de escalabilidade e baixa latência.
Os ZKPs já são usados para muitas aplicações diferentes; a expectativa é que outras se tornem realidade no futuro. Alguns dos principais casos de uso da tecnologia ZKP incluem:
Os ZKPs podem ser usados para verificar identidades dos usuários sem revelar nenhuma informação pessoal confidencial. Isso pode ser útil em aplicações como sistemas de votação digital, onde as identidades dos eleitores devem ser verificadas sem comprometer seu anonimato.