Um protocolo de conhecimento zero é um método pelo qual uma parte (o provador) pode provar a outra parte (o verificador) que algo é verdadeiro, sem revelar nenhuma informação além do fato de que esta declaração específica é verdadeira.
Provas de conhecimento zero melhoraram ao longo dos anos e agora estão sendo usadas em várias aplicações do mundo real.
Provas de conhecimento zero representaram um avanço na criptografia aplicada, pois prometeram melhorar a segurança da informação para indivíduos. Considere como você pode provar uma alegação (por exemplo, "Eu sou cidadão do país X") para outra parte (por exemplo, um provedor de serviços). Você precisaria fornecer "evidências" para respaldar sua alegação, como um passaporte nacional ou carteira de motorista.
Mas há problemas com essa abordagem, principalmente a falta de privacidade. As Informações Pessoalmente Identificáveis (IPI) compartilhadas com serviços de terceiros são armazenadas em bancos de dados centrais, que são vulneráveis a hacks. Com o roubo de identidade se tornando uma questão crítica, há pedidos de meios de compartilhamento de informações sensíveis mais protegidos por privacidade.
Provas de conhecimento zero resolvem esse problema eliminando a necessidade de revelar informações para provar a validade das reivindicações. O protocolo de conhecimento zero usa a declaração (chamada de 'testemunha') como entrada para gerar uma prova sucinta de sua validade. Essa prova fornece garantias sólidas de que uma declaração é verdadeira sem expor as informações usadas em sua criação.
Voltando ao nosso exemplo anterior, a única evidência que você precisa para comprovar sua reivindicação de cidadania é uma prova de conhecimento zero. O verificador só precisa verificar se certas propriedades da prova são verdadeiras para se convencer de que a declaração subjacente também é verdadeira.
Uma prova de conhecimento zero permite que você prove a veracidade de uma afirmação sem compartilhar o conteúdo da afirmação ou revelar como descobriu a verdade. Para tornar isso possível, os protocolos de conhecimento zero dependem de algoritmos que recebem alguns dados como entrada e retornam 'verdadeiro' ou 'falso' como saída.
Um protocolo de conhecimento zero deve satisfazer os seguinte critérios:
Em sua forma básica, uma prova de conhecimento zero é composta por três elementos: testemunha, desafio e resposta.
O acima descreve a estrutura de uma 'prova interativa de conhecimento zero'. Os protocolos zero-knowledge iniciais usavam provas interativas, onde verificar a validade de uma declaração exigia comunicação de ida e volta entre probadores e verificadores.
Um bom exemplo que ilustra como as provas interativas funcionam é o famoso de Jean-Jacques Quisquater.História da caverna de Ali Babá
Na história, Peggy (o provador) quer provar a Victor (o verificador) que ela sabe a frase secreta para abrir uma porta mágica sem revelar a frase.
Embora revolucionária, a prova interativa teve utilidade limitada, uma vez que exigia que as duas partes estivessem disponíveis e interagissem repetidamente. Mesmo que um verificador estivesse convencido da honestidade de um provador, a prova não estaria disponível para verificação independente (calcular uma nova prova exigiria um novo conjunto de mensagens entre o provador e o verificador).
Para resolver este problema, Manuel Blum, Paul Feldman e Silvio Micali sugeriram o primeiro provas de conhecimento zero não interativas
onde o verificador e o verificador têm uma chave compartilhada. Isso permite que o verificador demonstre seu conhecimento de algumas informações (ou seja, testemunha) sem fornecer as informações em si.
Ao contrário das provas interativas, as provas não interativas requerem apenas uma rodada de comunicação entre os participantes (provador e verificador). O provador passa as informações secretas para um algoritmo especial para calcular uma prova de conhecimento zero. Esta prova é enviada ao verificador, que verifica se o provador conhece as informações secretas usando outro algoritmo.
A prova não interativa reduz a comunicação entre o provador e o verificador, tornando as provas de conhecimento zero mais eficientes. Além disso, uma vez que uma prova é gerada, ela está disponível para qualquer outra pessoa (com acesso à chave compartilhada e algoritmo de verificação) verificar.
As provas não interativas representaram um avanço para a tecnologia de conhecimento zero e impulsionaram o desenvolvimento dos sistemas de prova usados hoje. Discutimos esses tipos de prova abaixo:
ZK-SNARK é um acrônimo para Zero-Knowledge Succinct Non-Interactive Argument of Knowledge. O protocolo ZK-SNARK possui as seguintes qualidades:
A 'chave compartilhada' mencionada anteriormente refere-se a parâmetros públicos com os quais o provador e o verificador concordam em usar na geração e verificação de provas. Gerar os parâmetros públicos (coletivamente conhecidos como a String de Referência Comum (CRS)) é uma operação sensível devido à sua importância na segurança do protocolo. Se a entropia (aleatoriedade) usada na geração do CRS cair nas mãos de um provador desonesto, eles podem calcular provas falsas.
Computação multipartidária (MPC)
é uma forma de reduzir os riscos na geração de parâmetros públicos. Múltiplas partes participam de um cerimônia de configuração confiável
, onde cada pessoa contribui com alguns valores aleatórios para gerar o CRS. Desde que uma parte honesta destrua sua parcela da entropia, o protocolo ZK-SNARK mantém a solidez computacional.
Setups confiáveis exigem que os usuários confiem nos participantes na geração de parâmetros. No entanto, o desenvolvimento do ZK-STARKs permitiu protocolos de prova que funcionam com um setup não confiável.
ZK-STARK é um acrônimo para Argumento Transparente Escalável de Conhecimento Zero. ZK-STARKs são semelhantes aos ZK-SNARKs, exceto que eles são:
ZK-STARKs produzem provas maiores do que ZK-SNARKs, o que significa que geralmente têm sobrecargas de verificação mais altas. No entanto, existem casos (como provar conjuntos de dados grandes) em que ZK-STARKs podem ser mais econômicos do que ZK-SNARKs.
Pagamentos com cartão de crédito são frequentemente visíveis para várias partes, incluindo o provedor de pagamentos, bancos e outras partes interessadas (por exemplo, autoridades governamentais). Embora a vigilância financeira tenha benefícios para identificar atividades ilegais, também mina a privacidade dos cidadãos comuns.
As criptomoedas foram concebidas para fornecer um meio para os usuários realizarem transações privadas ponto a ponto. No entanto, a maioria das transações de criptomoedas são abertamente visíveis em blockchains públicos. As identidades dos usuários muitas vezes são pseudônimas e podem ser intencionalmente vinculadas a identidades do mundo real (por exemplo, incluindo endereços ETH em perfis do Twitter ou GitHub) ou podem ser associadas a identidades do mundo real usando análise de dados básica on-chain e off-chain.
Existem “moedas de privacidade” específicas projetadas para transações completamente anônimas. Blockchains focadas em privacidade, como Zcash e Monero, protegem detalhes da transação, incluindo endereços do remetente/destinatário, tipo de ativo, quantidade e cronologia da transação.
Ao incorporar a tecnologia de conhecimento zero no protocolo, as redes blockchain focadas em privacidade permitem que os nós validem transações sem precisar acessar os dados da transação.
Zero-knowledge proofs are also being applied to anonymizing transactions on public blockchains. An example is Tornado Cash, a decentralized, non-custodial service that allows users to conduct private transactions on Ethereum. Tornado Cash uses zero-knowledge proofs to obfuscate transaction details and guarantee financial privacy. Unfortunately, because these are “opt-in” privacy tools they are associated with illicit activity. To overcome this, privacy has to eventually become the default on public blockchains.
Os sistemas atuais de gerenciamento de identidade colocam informações pessoais em risco. Provas de conhecimento zero podem ajudar os indivíduos a validar a identidade enquanto protegem detalhes sensíveis.
Provas de conhecimento zero são particularmente úteis no contexto de identidade descentralizada. A identidade descentralizada (também descrita como 'identidade soberana') dá ao indivíduo a capacidade de controlar o acesso aos identificadores pessoais. Provar sua cidadania sem revelar seu ID fiscal ou detalhes do passaporte é um bom exemplo de como a tecnologia de conhecimento zero permite a identidade descentralizada.
Usar serviços online requer comprovar sua identidade e direito de acessar essas plataformas. Isso frequentemente requer fornecer informações pessoais, como nomes, endereços de e-mail, datas de nascimento e assim por diante. Você também pode precisar memorizar senhas longas ou correr o risco de perder o acesso.
As provas de conhecimento zero, no entanto, podem simplificar a autenticação tanto para as plataformas quanto para os usuários. Depois que uma prova de ZK foi gerada usando entradas públicas (por exemplo, dados que atestam a filiação do usuário à plataforma) e entradas privadas (por exemplo, os detalhes do usuário), o usuário pode simplesmente apresentá-la para autenticar sua identidade quando precisar acessar o serviço. Isso melhora a experiência para os usuários e liberta as organizações da necessidade de armazenar grandes quantidades de informações do usuário.
A computação verificável é outra aplicação da tecnologia de conhecimento zero para melhorar os designs de blockchain. A computação verificável nos permite terceirizar a computação para outra entidade enquanto mantemos resultados verificáveis. A entidade envia o resultado juntamente com uma prova que verifica que o programa foi executado corretamente.
A computação verificável é fundamental para melhorar a velocidade de processamento nas blockchains sem reduzir a segurança. Compreender isso requer conhecer as diferenças nas soluções propostas para escalar o Ethereum.
Soluções de escalonamento on-chain, como sharding, exigem extensas modificações na camada base do blockchain. No entanto, essa abordagem é altamente complexa e erros na implementação podem minar o modelo de segurança do Ethereum.
Soluções de escalonamento fora da cadeianão exigem o redesenho do protocolo central do Ethereum. Em vez disso, eles dependem de um modelo de computação terceirizado para melhorar a capacidade de processamento na camada base do Ethereum.
Aqui está como isso funciona na prática:
O benefício aqui é que o Ethereum não precisa executar nada e só precisa aplicar os resultados da computação terceirizada ao seu estado. Isso reduz a congestão da rede e também melhora a velocidade das transações (os protocolos fora da cadeia otimizam a execução mais rápida).
A cadeia precisa de uma maneira de validar transações fora da cadeia sem reexecutá-las, caso contrário o valor da execução fora da cadeia é perdido.
Aqui é onde a computação verificável entra em jogo. Quando um nó executa uma transação fora do Ethereum, ele envia uma prova de conhecimento zero para provar a correção da execução off-chain. Essa prova (chamada de
prova de validade) garante que uma transação é válida, permitindo que o Ethereum aplique o resultado ao seu estado—sem precisar esperar que alguém a conteste.
Rollups de conhecimento zeroevalidiumssão duas soluções de dimensionamento off-chain que usam provas de validade para fornecer escalabilidade segura. Esses protocolos executam milhares de transações off-chain e enviam provas para verificação no Ethereum. Esses resultados podem ser aplicados imediatamente assim que a prova for verificada, permitindo que o Ethereum processe mais transações sem aumentar a computação na camada base.
Esquemas de votação em blockchain têm muitas características favoráveis: são totalmente auditáveis, seguros contra ataques, resistentes à censura e livres de restrições geográficas. Mas mesmo os esquemas de votação on-chain não estão imunes ao problema de colusão.
Definida como "coordenar para limitar a competição aberta enganando, fraudando e enganando os outros", a colusão pode assumir a forma de um ator malicioso influenciando a votação oferecendo subornos. Por exemplo, Alice pode receber um suborno de Bob para votar na opção B em uma cédula, mesmo que ela prefira a opção A.
Suborno e conluio limitam a eficácia de qualquer processo que utilize a votação como mecanismo de sinalização (especialmente onde os usuários podem comprovar seu voto). Isso pode ter consequências significativas, especialmente quando os votos são responsáveis por alocar recursos escassos.
Por exemplo, mecanismos de financiamento quadrático
contar com doações para medir a preferência por certas opções entre diferentes projetos de bens públicos. Cada doação conta como um “voto” para um projeto específico, com projetos que recebem mais votos recebendo mais fundos do pool de correspondência.
O uso de votação on-chain torna o financiamento quadrático suscetível à colusão: as transações de blockchain são públicas, então os subornadores podem inspecionar a atividade on-chain de um subornado para ver como eles 'votaram'. Dessa forma, o financiamento quadrático deixa de ser um meio eficaz de alocar fundos com base nas preferências agregadas da comunidade.
Felizmente, soluções mais recentes como MACI (Infraestrutura Mínima Anti-Cola) estão utilizando provas de conhecimento zero para tornar a votação on-chain (por exemplo, mecanismos de financiamento quadrático) resistente à suborno e colusão. MACI é um conjunto de contratos inteligentes e scripts que permitem a um administrador central (chamado de "coordenador") agregar votos e totalizar resultados sem revelar especificidades sobre como cada indivíduo votou. Mesmo assim, ainda é possível verificar se os votos foram contados corretamente ou confirmar que um determinado indivíduo participou da rodada de votação.
No início, o coordenador implanta o contrato MACI no Ethereum, após o qual os usuários podem se inscrever para votar (registrando sua chave pública no smart contract). Os usuários votam enviando mensagens criptografadas com sua chave pública para o smart contract (um voto válido deve ser assinado com a chave pública mais recente associada à identidade do usuário, entre outros critérios). Em seguida, o coordenador processa todas as mensagens assim que o período de votação termina, contabiliza os votos e verifica os resultados na cadeia de blocos.
No MACI, provas de conhecimento zero são usadas para garantir a correção da computação, tornando impossível para o coordenador processar incorretamente votos e totalizar resultados. Isso é alcançado exigindo que o coordenador gere provas ZK-SNARK verificando que a) todas as mensagens foram processadas corretamente b) o resultado final corresponde à soma de todos os votos válidos.
Assim, mesmo sem compartilhar uma divisão de votos por usuário (como geralmente acontece), o MACI garante a integridade dos resultados calculados durante o processo de contagem. Essa funcionalidade é útil para reduzir a eficácia de esquemas básicos de colusão. Podemos explorar essa possibilidade usando o exemplo anterior de Bob subornando Alice para votar em uma opção:
Usar o MACI requer confiar no coordenador para não conluio com subornadores ou tentar subornar os eleitores. O coordenador pode descriptografar mensagens de usuários (necessário para criar a prova), para que eles possam verificar com precisão como cada pessoa votou.
Mas nos casos em que o coordenador permanece honesto, MACI representa uma ferramenta poderosa para garantir a santidade da votação on-chain. Isso explica sua popularidade entre as aplicações de financiamento quadrático (por exemplo, clr.fund
) que dependem muito da integridade das escolhas de voto de cada indivíduo.
.
Gerar provas de conhecimento zero envolve cálculos muito complexos, que são melhor realizados em máquinas especializadas. Como essas máquinas são caras, muitas vezes estão fora do alcance de pessoas comuns. Além disso, as aplicações que desejam utilizar a tecnologia de conhecimento zero devem considerar os custos de hardware, o que pode aumentar os custos para os usuários finais.
Verificar provas também requer computação complexa e aumenta os custos de implementar a tecnologia de conhecimento zero em aplicações. Este custo é particularmente relevante no contexto da computação de prova. Por exemplo, os ZK-rollups pagam ~ 500.000 de gás para verificar uma única prova ZK-SNARK no Ethereum, com ZK-STARKs exigindo taxas ainda mais altas.
Em ZK-SNARK, a String de Referência Comum (parâmetros públicos) é gerada uma vez e está disponível para reutilização por partes que desejam participar do protocolo de conhecimento zero. Os parâmetros públicos são criados por meio de uma cerimônia de configuração confiável, onde se assume que os participantes são honestos.
Mas não há realmente nenhuma maneira para os usuários avaliarem a honestidade dos participantes e os usuários têm que confiar nos desenvolvedores. ZK-STARKs estão livres de suposições de confiança, uma vez que a aleatoriedade usada na geração da string é publicamente verificável. Enquanto isso, os pesquisadores estão trabalhando em configurações não confiáveis para ZK-SNARKs para aumentar a segurança dos mecanismos de prova.
ZK-SNARK usa criptografia de curva elíptica
ECDSA) para criptografia. Embora o algoritmo ECDSA seja seguro por enquanto, o desenvolvimento de computadores quânticos poderia quebrar seu modelo de segurança no futuro.
ZK-STARK é considerado imune à ameaça da computação quântica, pois utiliza hashes resistentes a colisões para criptografia. Ao contrário dos pares de chaves público-privadas usadas na criptografia de curva elíptica, o hashing resistente a colisões é mais difícil de ser quebrado por algoritmos de computação quântica.
Um protocolo de conhecimento zero é um método pelo qual uma parte (o provador) pode provar a outra parte (o verificador) que algo é verdadeiro, sem revelar nenhuma informação além do fato de que esta declaração específica é verdadeira.
Provas de conhecimento zero melhoraram ao longo dos anos e agora estão sendo usadas em várias aplicações do mundo real.
Provas de conhecimento zero representaram um avanço na criptografia aplicada, pois prometeram melhorar a segurança da informação para indivíduos. Considere como você pode provar uma alegação (por exemplo, "Eu sou cidadão do país X") para outra parte (por exemplo, um provedor de serviços). Você precisaria fornecer "evidências" para respaldar sua alegação, como um passaporte nacional ou carteira de motorista.
Mas há problemas com essa abordagem, principalmente a falta de privacidade. As Informações Pessoalmente Identificáveis (IPI) compartilhadas com serviços de terceiros são armazenadas em bancos de dados centrais, que são vulneráveis a hacks. Com o roubo de identidade se tornando uma questão crítica, há pedidos de meios de compartilhamento de informações sensíveis mais protegidos por privacidade.
Provas de conhecimento zero resolvem esse problema eliminando a necessidade de revelar informações para provar a validade das reivindicações. O protocolo de conhecimento zero usa a declaração (chamada de 'testemunha') como entrada para gerar uma prova sucinta de sua validade. Essa prova fornece garantias sólidas de que uma declaração é verdadeira sem expor as informações usadas em sua criação.
Voltando ao nosso exemplo anterior, a única evidência que você precisa para comprovar sua reivindicação de cidadania é uma prova de conhecimento zero. O verificador só precisa verificar se certas propriedades da prova são verdadeiras para se convencer de que a declaração subjacente também é verdadeira.
Uma prova de conhecimento zero permite que você prove a veracidade de uma afirmação sem compartilhar o conteúdo da afirmação ou revelar como descobriu a verdade. Para tornar isso possível, os protocolos de conhecimento zero dependem de algoritmos que recebem alguns dados como entrada e retornam 'verdadeiro' ou 'falso' como saída.
Um protocolo de conhecimento zero deve satisfazer os seguinte critérios:
Em sua forma básica, uma prova de conhecimento zero é composta por três elementos: testemunha, desafio e resposta.
O acima descreve a estrutura de uma 'prova interativa de conhecimento zero'. Os protocolos zero-knowledge iniciais usavam provas interativas, onde verificar a validade de uma declaração exigia comunicação de ida e volta entre probadores e verificadores.
Um bom exemplo que ilustra como as provas interativas funcionam é o famoso de Jean-Jacques Quisquater.História da caverna de Ali Babá
Na história, Peggy (o provador) quer provar a Victor (o verificador) que ela sabe a frase secreta para abrir uma porta mágica sem revelar a frase.
Embora revolucionária, a prova interativa teve utilidade limitada, uma vez que exigia que as duas partes estivessem disponíveis e interagissem repetidamente. Mesmo que um verificador estivesse convencido da honestidade de um provador, a prova não estaria disponível para verificação independente (calcular uma nova prova exigiria um novo conjunto de mensagens entre o provador e o verificador).
Para resolver este problema, Manuel Blum, Paul Feldman e Silvio Micali sugeriram o primeiro provas de conhecimento zero não interativas
onde o verificador e o verificador têm uma chave compartilhada. Isso permite que o verificador demonstre seu conhecimento de algumas informações (ou seja, testemunha) sem fornecer as informações em si.
Ao contrário das provas interativas, as provas não interativas requerem apenas uma rodada de comunicação entre os participantes (provador e verificador). O provador passa as informações secretas para um algoritmo especial para calcular uma prova de conhecimento zero. Esta prova é enviada ao verificador, que verifica se o provador conhece as informações secretas usando outro algoritmo.
A prova não interativa reduz a comunicação entre o provador e o verificador, tornando as provas de conhecimento zero mais eficientes. Além disso, uma vez que uma prova é gerada, ela está disponível para qualquer outra pessoa (com acesso à chave compartilhada e algoritmo de verificação) verificar.
As provas não interativas representaram um avanço para a tecnologia de conhecimento zero e impulsionaram o desenvolvimento dos sistemas de prova usados hoje. Discutimos esses tipos de prova abaixo:
ZK-SNARK é um acrônimo para Zero-Knowledge Succinct Non-Interactive Argument of Knowledge. O protocolo ZK-SNARK possui as seguintes qualidades:
A 'chave compartilhada' mencionada anteriormente refere-se a parâmetros públicos com os quais o provador e o verificador concordam em usar na geração e verificação de provas. Gerar os parâmetros públicos (coletivamente conhecidos como a String de Referência Comum (CRS)) é uma operação sensível devido à sua importância na segurança do protocolo. Se a entropia (aleatoriedade) usada na geração do CRS cair nas mãos de um provador desonesto, eles podem calcular provas falsas.
Computação multipartidária (MPC)
é uma forma de reduzir os riscos na geração de parâmetros públicos. Múltiplas partes participam de um cerimônia de configuração confiável
, onde cada pessoa contribui com alguns valores aleatórios para gerar o CRS. Desde que uma parte honesta destrua sua parcela da entropia, o protocolo ZK-SNARK mantém a solidez computacional.
Setups confiáveis exigem que os usuários confiem nos participantes na geração de parâmetros. No entanto, o desenvolvimento do ZK-STARKs permitiu protocolos de prova que funcionam com um setup não confiável.
ZK-STARK é um acrônimo para Argumento Transparente Escalável de Conhecimento Zero. ZK-STARKs são semelhantes aos ZK-SNARKs, exceto que eles são:
ZK-STARKs produzem provas maiores do que ZK-SNARKs, o que significa que geralmente têm sobrecargas de verificação mais altas. No entanto, existem casos (como provar conjuntos de dados grandes) em que ZK-STARKs podem ser mais econômicos do que ZK-SNARKs.
Pagamentos com cartão de crédito são frequentemente visíveis para várias partes, incluindo o provedor de pagamentos, bancos e outras partes interessadas (por exemplo, autoridades governamentais). Embora a vigilância financeira tenha benefícios para identificar atividades ilegais, também mina a privacidade dos cidadãos comuns.
As criptomoedas foram concebidas para fornecer um meio para os usuários realizarem transações privadas ponto a ponto. No entanto, a maioria das transações de criptomoedas são abertamente visíveis em blockchains públicos. As identidades dos usuários muitas vezes são pseudônimas e podem ser intencionalmente vinculadas a identidades do mundo real (por exemplo, incluindo endereços ETH em perfis do Twitter ou GitHub) ou podem ser associadas a identidades do mundo real usando análise de dados básica on-chain e off-chain.
Existem “moedas de privacidade” específicas projetadas para transações completamente anônimas. Blockchains focadas em privacidade, como Zcash e Monero, protegem detalhes da transação, incluindo endereços do remetente/destinatário, tipo de ativo, quantidade e cronologia da transação.
Ao incorporar a tecnologia de conhecimento zero no protocolo, as redes blockchain focadas em privacidade permitem que os nós validem transações sem precisar acessar os dados da transação.
Zero-knowledge proofs are also being applied to anonymizing transactions on public blockchains. An example is Tornado Cash, a decentralized, non-custodial service that allows users to conduct private transactions on Ethereum. Tornado Cash uses zero-knowledge proofs to obfuscate transaction details and guarantee financial privacy. Unfortunately, because these are “opt-in” privacy tools they are associated with illicit activity. To overcome this, privacy has to eventually become the default on public blockchains.
Os sistemas atuais de gerenciamento de identidade colocam informações pessoais em risco. Provas de conhecimento zero podem ajudar os indivíduos a validar a identidade enquanto protegem detalhes sensíveis.
Provas de conhecimento zero são particularmente úteis no contexto de identidade descentralizada. A identidade descentralizada (também descrita como 'identidade soberana') dá ao indivíduo a capacidade de controlar o acesso aos identificadores pessoais. Provar sua cidadania sem revelar seu ID fiscal ou detalhes do passaporte é um bom exemplo de como a tecnologia de conhecimento zero permite a identidade descentralizada.
Usar serviços online requer comprovar sua identidade e direito de acessar essas plataformas. Isso frequentemente requer fornecer informações pessoais, como nomes, endereços de e-mail, datas de nascimento e assim por diante. Você também pode precisar memorizar senhas longas ou correr o risco de perder o acesso.
As provas de conhecimento zero, no entanto, podem simplificar a autenticação tanto para as plataformas quanto para os usuários. Depois que uma prova de ZK foi gerada usando entradas públicas (por exemplo, dados que atestam a filiação do usuário à plataforma) e entradas privadas (por exemplo, os detalhes do usuário), o usuário pode simplesmente apresentá-la para autenticar sua identidade quando precisar acessar o serviço. Isso melhora a experiência para os usuários e liberta as organizações da necessidade de armazenar grandes quantidades de informações do usuário.
A computação verificável é outra aplicação da tecnologia de conhecimento zero para melhorar os designs de blockchain. A computação verificável nos permite terceirizar a computação para outra entidade enquanto mantemos resultados verificáveis. A entidade envia o resultado juntamente com uma prova que verifica que o programa foi executado corretamente.
A computação verificável é fundamental para melhorar a velocidade de processamento nas blockchains sem reduzir a segurança. Compreender isso requer conhecer as diferenças nas soluções propostas para escalar o Ethereum.
Soluções de escalonamento on-chain, como sharding, exigem extensas modificações na camada base do blockchain. No entanto, essa abordagem é altamente complexa e erros na implementação podem minar o modelo de segurança do Ethereum.
Soluções de escalonamento fora da cadeianão exigem o redesenho do protocolo central do Ethereum. Em vez disso, eles dependem de um modelo de computação terceirizado para melhorar a capacidade de processamento na camada base do Ethereum.
Aqui está como isso funciona na prática:
O benefício aqui é que o Ethereum não precisa executar nada e só precisa aplicar os resultados da computação terceirizada ao seu estado. Isso reduz a congestão da rede e também melhora a velocidade das transações (os protocolos fora da cadeia otimizam a execução mais rápida).
A cadeia precisa de uma maneira de validar transações fora da cadeia sem reexecutá-las, caso contrário o valor da execução fora da cadeia é perdido.
Aqui é onde a computação verificável entra em jogo. Quando um nó executa uma transação fora do Ethereum, ele envia uma prova de conhecimento zero para provar a correção da execução off-chain. Essa prova (chamada de
prova de validade) garante que uma transação é válida, permitindo que o Ethereum aplique o resultado ao seu estado—sem precisar esperar que alguém a conteste.
Rollups de conhecimento zeroevalidiumssão duas soluções de dimensionamento off-chain que usam provas de validade para fornecer escalabilidade segura. Esses protocolos executam milhares de transações off-chain e enviam provas para verificação no Ethereum. Esses resultados podem ser aplicados imediatamente assim que a prova for verificada, permitindo que o Ethereum processe mais transações sem aumentar a computação na camada base.
Esquemas de votação em blockchain têm muitas características favoráveis: são totalmente auditáveis, seguros contra ataques, resistentes à censura e livres de restrições geográficas. Mas mesmo os esquemas de votação on-chain não estão imunes ao problema de colusão.
Definida como "coordenar para limitar a competição aberta enganando, fraudando e enganando os outros", a colusão pode assumir a forma de um ator malicioso influenciando a votação oferecendo subornos. Por exemplo, Alice pode receber um suborno de Bob para votar na opção B em uma cédula, mesmo que ela prefira a opção A.
Suborno e conluio limitam a eficácia de qualquer processo que utilize a votação como mecanismo de sinalização (especialmente onde os usuários podem comprovar seu voto). Isso pode ter consequências significativas, especialmente quando os votos são responsáveis por alocar recursos escassos.
Por exemplo, mecanismos de financiamento quadrático
contar com doações para medir a preferência por certas opções entre diferentes projetos de bens públicos. Cada doação conta como um “voto” para um projeto específico, com projetos que recebem mais votos recebendo mais fundos do pool de correspondência.
O uso de votação on-chain torna o financiamento quadrático suscetível à colusão: as transações de blockchain são públicas, então os subornadores podem inspecionar a atividade on-chain de um subornado para ver como eles 'votaram'. Dessa forma, o financiamento quadrático deixa de ser um meio eficaz de alocar fundos com base nas preferências agregadas da comunidade.
Felizmente, soluções mais recentes como MACI (Infraestrutura Mínima Anti-Cola) estão utilizando provas de conhecimento zero para tornar a votação on-chain (por exemplo, mecanismos de financiamento quadrático) resistente à suborno e colusão. MACI é um conjunto de contratos inteligentes e scripts que permitem a um administrador central (chamado de "coordenador") agregar votos e totalizar resultados sem revelar especificidades sobre como cada indivíduo votou. Mesmo assim, ainda é possível verificar se os votos foram contados corretamente ou confirmar que um determinado indivíduo participou da rodada de votação.
No início, o coordenador implanta o contrato MACI no Ethereum, após o qual os usuários podem se inscrever para votar (registrando sua chave pública no smart contract). Os usuários votam enviando mensagens criptografadas com sua chave pública para o smart contract (um voto válido deve ser assinado com a chave pública mais recente associada à identidade do usuário, entre outros critérios). Em seguida, o coordenador processa todas as mensagens assim que o período de votação termina, contabiliza os votos e verifica os resultados na cadeia de blocos.
No MACI, provas de conhecimento zero são usadas para garantir a correção da computação, tornando impossível para o coordenador processar incorretamente votos e totalizar resultados. Isso é alcançado exigindo que o coordenador gere provas ZK-SNARK verificando que a) todas as mensagens foram processadas corretamente b) o resultado final corresponde à soma de todos os votos válidos.
Assim, mesmo sem compartilhar uma divisão de votos por usuário (como geralmente acontece), o MACI garante a integridade dos resultados calculados durante o processo de contagem. Essa funcionalidade é útil para reduzir a eficácia de esquemas básicos de colusão. Podemos explorar essa possibilidade usando o exemplo anterior de Bob subornando Alice para votar em uma opção:
Usar o MACI requer confiar no coordenador para não conluio com subornadores ou tentar subornar os eleitores. O coordenador pode descriptografar mensagens de usuários (necessário para criar a prova), para que eles possam verificar com precisão como cada pessoa votou.
Mas nos casos em que o coordenador permanece honesto, MACI representa uma ferramenta poderosa para garantir a santidade da votação on-chain. Isso explica sua popularidade entre as aplicações de financiamento quadrático (por exemplo, clr.fund
) que dependem muito da integridade das escolhas de voto de cada indivíduo.
.
Gerar provas de conhecimento zero envolve cálculos muito complexos, que são melhor realizados em máquinas especializadas. Como essas máquinas são caras, muitas vezes estão fora do alcance de pessoas comuns. Além disso, as aplicações que desejam utilizar a tecnologia de conhecimento zero devem considerar os custos de hardware, o que pode aumentar os custos para os usuários finais.
Verificar provas também requer computação complexa e aumenta os custos de implementar a tecnologia de conhecimento zero em aplicações. Este custo é particularmente relevante no contexto da computação de prova. Por exemplo, os ZK-rollups pagam ~ 500.000 de gás para verificar uma única prova ZK-SNARK no Ethereum, com ZK-STARKs exigindo taxas ainda mais altas.
Em ZK-SNARK, a String de Referência Comum (parâmetros públicos) é gerada uma vez e está disponível para reutilização por partes que desejam participar do protocolo de conhecimento zero. Os parâmetros públicos são criados por meio de uma cerimônia de configuração confiável, onde se assume que os participantes são honestos.
Mas não há realmente nenhuma maneira para os usuários avaliarem a honestidade dos participantes e os usuários têm que confiar nos desenvolvedores. ZK-STARKs estão livres de suposições de confiança, uma vez que a aleatoriedade usada na geração da string é publicamente verificável. Enquanto isso, os pesquisadores estão trabalhando em configurações não confiáveis para ZK-SNARKs para aumentar a segurança dos mecanismos de prova.
ZK-SNARK usa criptografia de curva elíptica
ECDSA) para criptografia. Embora o algoritmo ECDSA seja seguro por enquanto, o desenvolvimento de computadores quânticos poderia quebrar seu modelo de segurança no futuro.
ZK-STARK é considerado imune à ameaça da computação quântica, pois utiliza hashes resistentes a colisões para criptografia. Ao contrário dos pares de chaves público-privadas usadas na criptografia de curva elíptica, o hashing resistente a colisões é mais difícil de ser quebrado por algoritmos de computação quântica.