Uma prova de conhecimento zero (ZKP) é um método criptográfico que permite a uma parte, chamada de provador, convencer outra parte, o verificador, de que uma afirmação é verdadeira sem revelar qualquer informação além da veracidade da própria afirmação. Em termos técnicos, uma ZKP satisfaz três propriedades fundamentais: completude, solidez e conhecimento zero. A completude garante que provadores honestos podem sempre convencer o verificador se a afirmação for verdadeira. A solidez garante que provadores desonestos não conseguem enganar o verificador para aceitar uma afirmação falsa. O conhecimento zero significa que o verificador não aprende nada além da validade da reivindicação.
Este conceito não é apenas teórico. As provas de conhecimento zero já estão a ser utilizadas em sistemas criptográficos modernos para verificar identidades, validar transações e aplicar políticas sem revelar dados privados. Elas são especialmente adequadas para aplicações de blockchain, onde a privacidade e a descentralização são fundamentais.
As blockchains públicas como Ethereum e Bitcoin operam segundo o princípio da plena transparência. Cada nó na rede deve reexecutar cada transação para validá-la. Embora este modelo garanta segurança e consenso, ele tem um custo em termos de escalabilidade e privacidade. As provas de conhecimento zero abordam ambas estas limitações.
Para privacidade, ZKPs permitem que os usuários provem algo — por exemplo, que uma transação é válida — sem expor o conteúdo da transação. Isso possibilita transações confidenciais e lógica de contratos inteligentes privados, mantendo a verificabilidade pública. Para escalabilidade, ZKPs comprimem a computação em uma prova sucinta. Esta prova pode ser verificada rapidamente na cadeia, mesmo que a computação original tenha sido cara e demorada. Em vez de executar toda a lógica em cada nó, apenas a prova precisa ser verificada. Isso reduz drasticamente os custos de gas e melhora o throughput.
A tecnologia de Zero-knowledge torna possível escalar blockchains sem sacrificar a confiança e construir aplicações privadas sem introduzir intermediários centralizados. À medida que os blockchains se tornam mais complexos e são adotados para uso mainstream, essas capacidades tornam-se essenciais.
Os contratos inteligentes transformaram as blockchains em plataformas programáveis. Eles permitem que os desenvolvedores criem aplicações descentralizadas que executam automaticamente a lógica com base em regras pré-definidas. No entanto, os contratos inteligentes estão limitados pelos limites computacionais da própria blockchain. Eles devem ser executados na cadeia, onde cada operação é cara e pública.
À medida que as aplicações descentralizadas crescem em complexidade, essas limitações tornam-se mais problemáticas. Realizar grandes cálculos ou acessar vastos conjuntos de dados em cadeia é impraticável. Ao mesmo tempo, os usuários exigem cada vez mais privacidade, que os contratos inteligentes padrão não conseguem fornecer.
Para resolver isso, os desenvolvedores começaram a mover a computação fora da cadeia, preservando a confiança através de provas criptográficas. É aqui que entram as provas de conhecimento zero. Em vez de executar toda a lógica na cadeia, a computação pesada é realizada fora da cadeia, e apenas uma prova sucinta do resultado é submetida à blockchain. Isso mantém a blockchain segura e verificável, enquanto melhora dramaticamente o desempenho e a confidencialidade.
Esta transição da lógica on-chain para a verificação off-chain marca uma mudança importante na arquitetura da blockchain. Permite que as aplicações escalem além dos limites da Ethereum Virtual Machine e suporta novos casos de uso que, de outra forma, seriam impossíveis.
O coprocessador de conhecimento zero é um sistema especializado fora da cadeia que realiza cálculos e gera provas criptográficas da sua correção. Ao contrário dos contratos inteligentes, que são executados diretamente na blockchain, um coprocessador ZK opera externamente. Ele processa entradas, executa um cálculo usando um zkVM ou um circuito personalizado e produz uma prova de conhecimento zero. Esta prova pode então ser submetida na cadeia para provar que o cálculo foi executado corretamente.
A ideia de um coprocessador é emprestada do hardware de computadores. Em sistemas tradicionais, um coprocessador é um processador separado utilizado para lidar com tarefas específicas, como gráficos ou aritmética de ponto flutuante. Da mesma forma, um coprocessador ZK descarrega lógica complexa da blockchain, permitindo que a cadeia principal se concentre na verificação em vez da execução.
Os coprocessadores ZK introduzem um ambiente de execução modular. Os desenvolvedores podem construir lógica em ambientes de execução off-chain especializados, executar cálculos grandes ou privados lá e, em seguida, comprometer o resultado verificado de volta a qualquer blockchain. Esta modularidade permite a composabilidade entre cadeias, melhora o desempenho e suporta um design de aplicação mais flexível.
Na arquitetura moderna de blockchain, os coprocessadores ZK ocupam uma camada intermediária entre contratos inteligentes on-chain e fontes de dados ou computação externas. Na base, você tem a própria blockchain, que registra o estado, impõe regras e verifica provas. Acima disso estão os contratos inteligentes, que definem a lógica de interface pública da aplicação e aceitam entradas de usuários ou de outros contratos.
Os coprocessadores ZK operam ao lado ou abaixo desses contratos inteligentes. Eles recebem entradas — frequentemente na forma de calldata ou mensagens assinadas — do usuário ou do contrato, executam a lógica fora da cadeia e geram uma prova de conhecimento zero. A prova é submetida de volta ao contrato inteligente, que a verifica usando uma chave de verificação. Se for válida, o contrato atualiza seu estado ou aciona uma resposta.
Esta arquitetura é cada vez mais modular. Um coprocessador pode servir múltiplos contratos ou aplicações. Da mesma forma, um contrato pode trabalhar com múltiplos coprocessadores. O sistema também é extensível entre cadeias. Um coprocessador ZK pode calcular uma prova para dados em uma cadeia e submetê-la a outra, permitindo a interoperabilidade entre cadeias com fortes garantias.