Aplicação e desenvolvimento da tecnologia zk-SNARKs no campo do Blockchain
Resumo
Este artigo faz uma revisão sistemática da literatura histórica e das pesquisas mais recentes sobre a tecnologia de zk-SNARKs ao longo de quase quarenta anos. Primeiro, apresenta os conceitos básicos e o contexto histórico do ZKP, em seguida, analisa em profundidade a tecnologia ZKP baseada em circuitos, incluindo o design, a aplicação e os métodos de otimização dos modelos como zkSNARK, Ben-Sasson, Pinocchio, Bulletproofs e Ligero. No campo do ambiente computacional, o artigo apresenta o ZKVM e o ZKEVM, explorando como eles melhoram a capacidade de processamento de transações, protegem a privacidade e aumentam a eficiência de verificação. O artigo também introduz o zero-knowledge Rollup como um mecanismo de trabalho e métodos de otimização para soluções de expansão Layer 2, assim como os últimos avanços em aceleração de hardware, soluções híbridas e ZK EVM dedicado.
Por fim, este artigo antecipa conceitos emergentes como ZKCoprocessor, ZKML, ZKThreads, ZK Sharding e ZK StateChannels, e explora seu potencial em termos de escalabilidade, interoperabilidade e proteção de privacidade da Blockchain. Ao analisar essas tecnologias mais recentes e tendências de desenvolvimento, o artigo oferece uma perspectiva abrangente sobre a compreensão e aplicação das tecnologias ZKP, demonstrando seu enorme potencial para melhorar a eficiência e segurança dos sistemas Blockchain, fornecendo uma referência importante para futuras decisões de investimento.
( Índice
Introdução
Uma, conhecimento básico sobre zk-SNARKs
Resumo
Exemplo de zk-SNARKs
Dois, zk-SNARKs não interativos
Contexto
A proposta de NIZK
Transformação Fiat-Shamir
Jens Groth e sua pesquisa
Outras pesquisas
Três, prova de conhecimento zero baseada em circuitos
Contexto
Conceitos e características básicas do modelo de circuito
Design e aplicação de circuitos em zk-SNARKs
Defeitos e desafios potenciais
Quatro, modelo de zk-SNARKs
Contexto
Modelos de Algoritmos Comuns
Proposta baseada em PCP linear e problema do logaritmo discreto
Proposta baseada em provas de pessoas comuns
Prova de conhecimento zero verificável baseada em probabilidade ) PCP ###
Classificação na fase de configuração com base no CPC
Cinco, Visão geral e desenvolvimento da máquina virtual de zk-SNARKs
Contexto
Classificação do ZKVM existente
Paradigma de Frontend e Backend
Vantagens e desvantagens do paradigma ZKVM
Seis, Visão geral e desenvolvimento da Máquina Virtual Ethereum de zk-SNARKs
Contexto
Como funciona o ZKEVM
O processo de implementação do ZKEVM
Características do ZKEVM
Sete, Visão Geral e Desenvolvimento da Solução de Rede de Camada Dois zk-SNARKs
Contexto
O mecanismo de funcionamento do ZK Rollup
Desvantagens e otimizações do ZK Rollup
Oitavo, direções futuras para o desenvolvimento de zk-SNARKs
Acelerar o desenvolvimento do ambiente de computação
Proposta e desenvolvimento do ZKML
Desenvolvimento relacionado à tecnologia de expansão de ZKP
Desenvolvimento da interoperabilidade ZKP
Nove, Conclusão
( Prefácio
Nos últimos anos, o desenvolvimento de aplicações Blockchain )DApps ### tem sido rápido, com novas aplicações surgindo diariamente. As plataformas Blockchain suportam as atividades de milhões de usuários todos os dias, processando bilhões de transações. Os grandes volumes de dados gerados por essas transações geralmente incluem informações pessoais sensíveis, como identidade do usuário, montante da transação, endereço da conta e saldo da conta. Dada a abertura e a transparência da Blockchain, os dados armazenados são acessíveis a todos, o que levanta várias questões de segurança e privacidade.
Atualmente, existem várias tecnologias de criptografia que podem enfrentar esses desafios, incluindo criptografia homomórfica, assinaturas em anel, computação multipartidária segura e zk-SNARKs. A criptografia homomórfica permite realizar operações sem decifrar o texto cifrado, ajudando a proteger a segurança dos saldos das contas e dos montantes das transações, mas não consegue proteger a segurança dos endereços das contas. As assinaturas em anel oferecem uma forma especial de assinatura digital que pode ocultar a identidade do signatário, protegendo assim a segurança dos endereços das contas, mas não consegue proteger os saldos das contas e os montantes das transações. A computação multipartidária segura permite distribuir tarefas de computação entre vários participantes, sem que nenhum participante conheça os dados dos outros, protegendo efetivamente a segurança dos saldos das contas e dos montantes das transações, mas também não consegue proteger a segurança dos endereços das contas. Além disso, a criptografia homomórfica, as assinaturas em anel e a computação multipartidária segura não podem ser usadas para verificar se o provador possui montantes de transação suficientes no ambiente blockchain sem revelar os montantes das transações, os endereços das contas e os saldos das contas.
zk-SNARKs é uma solução mais abrangente, este protocolo de verificação permite validar a correção de certas proposições sem revelar quaisquer dados intermediários. O protocolo não requer infraestruturas complexas de chave pública, e sua implementação repetida não oferece aos usuários maliciosos a oportunidade de obter informações úteis adicionais. Através do ZKP, o verificador pode validar se o provedor possui montantes de transação suficientes sem divulgar quaisquer dados de transação privados. O processo de verificação inclui a geração de uma prova que contém o montante da transação que o provedor afirma ter, que é então passada ao verificador, que realiza cálculos pré-definidos sobre a prova e produz o resultado final do cálculo, permitindo chegar à conclusão sobre a aceitação da declaração do provedor. Se a declaração do provedor for aceita, isso significa que eles possuem montantes de transação suficientes. O processo de verificação acima pode ser registrado no Blockchain, sem qualquer falsificação.
A característica do ZKP faz com que desempenhe um papel central nas transações em Blockchain e nas aplicações de criptomoedas, especialmente na proteção da privacidade e na escalabilidade da rede, tornando-se não apenas o foco de pesquisa acadêmica, mas amplamente reconhecido como uma das inovações tecnológicas mais importantes desde a implementação bem-sucedida da tecnologia de livro-razão distribuído – especialmente o Bitcoin. Também é uma pista de destaque para aplicações na indústria e investimento de risco.
Como resultado, diversos projetos de rede baseados em ZKP surgiram, como ZkSync, StarkNet, Mina, Filecoin e Aleo. Com o desenvolvimento desses projetos, inovações algorítmicas em ZKP têm surgido constantemente, com relatos de novos algoritmos sendo lançados quase todas as semanas. Além disso, o desenvolvimento de hardware relacionado à tecnologia ZKP também está avançando rapidamente, incluindo chips otimizados especificamente para ZKP. Por exemplo, projetos como Ingonyama, Irreducible e Cysic já concluíram captações de recursos em larga escala; esses desenvolvimentos não apenas demonstram o rápido progresso da tecnologia ZKP, mas também refletem a transição de hardware genérico para hardware dedicado, como GPU, FPGA e ASIC.
Esses avanços indicam que a tecnologia zk-SNARKs não é apenas um importante avanço no campo da criptografia, mas também um motor chave para a realização de aplicações mais amplas da tecnologia Blockchain — especialmente na melhoria da proteção da privacidade e da capacidade de processamento.
Portanto, decidimos organizar sistematicamente o conhecimento relacionado ao zk-SNARKs ( ZKP ) para melhor auxiliar nossas decisões de investimento futuras. Para isso, revisamos de forma abrangente os principais artigos acadêmicos relacionados ao ZKP (, ordenando-os com base na relevância e no número de citações ); ao mesmo tempo, também analisamos detalhadamente os dados e os white papers dos projetos líderes na área (, classificando-os de acordo com o tamanho do financiamento ). Esta coleta e análise abrangentes de dados forneceram uma base sólida para a redação deste artigo.
( Uma, conhecimentos básicos sobre zk-SNARKs
)# 1. Visão Geral
Em 1985, os acadêmicos Goldwasser, Micali e Rackoff apresentaram pela primeira vez a prova de conhecimento zero no artigo "A Complexidade do Conhecimento de Sistemas de Provas Interativas", definindo muitos conceitos que influenciaram a pesquisa acadêmica subsequente. Por exemplo, a definição de conhecimento é "saída de um cálculo inviável", ou seja, o conhecimento deve ser uma saída e ser um cálculo inviável, o que significa que não pode ser uma função simples, mas sim uma função complexa. O cálculo inviável pode ser entendido como um problema NP, ou seja, um problema cuja solução pode ser verificada em tempo polinomial, onde o tempo polinomial se refere ao tempo de execução do algoritmo que pode ser expresso como uma função polinomial do tamanho da entrada. Este é um critério importante na ciência da computação para medir a eficiência e viabilidade de algoritmos. Devido à complexidade do processo de resolução de problemas NP, eles são considerados cálculos inviáveis; no entanto, seu processo de verificação é relativamente simples, tornando-os muito adequados para a validação de provas de conhecimento zero.
Um exemplo clássico de problema NP é o problema do vendedor viajante, onde é necessário encontrar o caminho mais curto para visitar uma série de cidades e retornar ao ponto de partida. Embora encontrar o caminho mais curto possa ser difícil, dado um caminho, verificar se esse caminho é o mais curto é relativamente fácil. Isso porque a verificação da distância total de um caminho específico pode ser realizada em tempo polinomial.
Goldwasser et al. introduziram em seu artigo o conceito de "complexidade do conhecimento" ### knowledge complexity ###, usado para quantificar a quantidade de conhecimento que o provador vaza para o verificador em sistemas de prova interativa. Eles também propuseram sistemas de prova interativa ( Interactive Proof Systems, IPS ), onde o provador ( Prover ) e o verificador ( Verifier ) interagem em várias rodadas para provar a veracidade de uma afirmação.
Em suma, a definição de zk-SNARKs resumida por Goldwasser et al. é um tipo especial de prova interativa, onde o verificador não obtém nenhuma informação adicional além do valor verdadeiro da afirmação durante o processo de verificação; e foram apresentadas três características básicas, incluindo:
Completude ( completeness ): Se a prova for verdadeira, o provedor honesto pode convencer o validador honesto desse fato;
Confiabilidade ( solidez ): Se o provador não souber o conteúdo da declaração, ele só pode enganar o verificador com uma probabilidade insignificante;
3.zk-SNARKs(zero-knowledge): Após a conclusão do processo de prova, o verificador apenas obtém a informação de que "o provador possui este conhecimento", sem obter qualquer conteúdo adicional.
(# 2.zk-SNARKs示例
Para melhor entender os zk-SNARKs e suas propriedades, segue um exemplo de como verificar se um provador possui certas informações privadas, que se divide em três fases: configuração, desafio e resposta.
Primeiro passo: configurar )Setup(
Nesta etapa, o objetivo do provador é criar uma prova de que ele conhece um número secreto s, mas sem mostrar diretamente s. Seja o número secreto s=5;
Escolha dois grandes números primos p e q, calcule o produto deles n. Suponha que o número primo p=11, q=13, o n calculado é 143;
Calcule v=s^2 mod n, aqui, v é enviado ao verificador como parte da prova, mas não é suficiente para que o verificador ou qualquer espectador deduza s. v=5^2 mod 143=25;
Escolha aleatoriamente um inteiro r, calcule x=r^2 mod n e envie para o verificador. Este valor x é utilizado no processo de verificação subsequente, mas também não expõe s. Suponha que o inteiro aleatório r=7, o x calculado é 49.
Segundo passo: desafio )Challenge(
O validador seleciona aleatoriamente um bit a) que pode ser 0 ou 1(, e então o envia ao provador. Este "desafio" determina os próximos passos que o provador precisa seguir.
Terceiro passo: resposta )Response###
De acordo com o valor a enviado pelo validador, o provador responde:
Se a=0, o provador envia g=r( onde r é o número que ele escolheu aleatoriamente anteriormente ).
Se a=1, o provador calcula g=rs mod n e envia. Suponha que o bit aleatório enviado pelo validador a=1, de acordo com o valor de a, o provador calcula g=75 mod 143=35;
Por fim, o validador verifica se x é igual a g^2/v^a mod n com base no g recebido. Se a igualdade for verdadeira, o validador aceita esta prova. Quando a=0, o validador calcula g^2 mod n, validando à direita x=49; quando a=1, o validador calcula g^2/v mod n=35^2/25 mod 143=49, validando à direita x=49.
Aqui, vemos que o x calculado pelo validador indica que o provador conseguiu passar pelo processo de validação sem revelar seu número secreto s. Aqui, como a pode apenas ser 0 ou 1, existem apenas duas possibilidades, a probabilidade de o provador passar na validação por sorte é (1/2) quando a é 0. Mas o validador então desafia o provador n vezes, o provador muda constantemente os números relevantes e os submete ao validador, e consegue sempre passar pelo processo de validação, assim a probabilidade de o provador passar na validação por sorte é (1/2)^n, que se aproxima infinitamente de 0(, provando assim que o provador realmente conhece um número secreto s. Este exemplo demonstra a integridade, confiabilidade e a propriedade de zero conhecimento do sistema de prova de zero conhecimento.
) Dois, zk-SNARKs não interativos
(# 1. Contexto
zk-SNARKs)ZKP( na concepção tradicional geralmente é uma forma de protocolo interativo e online; por exemplo, o protocolo Sigma geralmente requer de três a cinco rodadas de interação para completar a autenticação. No entanto, em cenários como transações instantâneas ou votação, frequentemente não há oportunidade para múltiplas interações, especialmente na aplicação da tecnologia Blockchain, onde a funcionalidade de verificação offline se torna particularmente importante.
)# 2. A proposta de NIZK
Em 1988, Blum, Feldman e Micali propuseram pela primeira vez o conceito de prova NIZK não interativa de zk-SNARKs (, provando que é possível sem múltiplas interações.
Esta página pode conter conteúdos de terceiros, que são fornecidos apenas para fins informativos (sem representações/garantias) e não devem ser considerados como uma aprovação dos seus pontos de vista pela Gate, nem como aconselhamento financeiro ou profissional. Consulte a Declaração de exoneração de responsabilidade para obter mais informações.
8 gostos
Recompensa
8
2
Partilhar
Comentar
0/400
GweiTooHigh
· 08-04 10:36
Ou seja, o código está a cantar enquanto a carteira está a copiar.
Ver originalResponder0
GasSavingMaster
· 08-04 10:32
zk tão popular que está sempre a perder para aquele circuito
A aplicação e as tendências futuras da tecnologia de zk-SNARKs no Blockchain
Aplicação e desenvolvimento da tecnologia zk-SNARKs no campo do Blockchain
Resumo
Este artigo faz uma revisão sistemática da literatura histórica e das pesquisas mais recentes sobre a tecnologia de zk-SNARKs ao longo de quase quarenta anos. Primeiro, apresenta os conceitos básicos e o contexto histórico do ZKP, em seguida, analisa em profundidade a tecnologia ZKP baseada em circuitos, incluindo o design, a aplicação e os métodos de otimização dos modelos como zkSNARK, Ben-Sasson, Pinocchio, Bulletproofs e Ligero. No campo do ambiente computacional, o artigo apresenta o ZKVM e o ZKEVM, explorando como eles melhoram a capacidade de processamento de transações, protegem a privacidade e aumentam a eficiência de verificação. O artigo também introduz o zero-knowledge Rollup como um mecanismo de trabalho e métodos de otimização para soluções de expansão Layer 2, assim como os últimos avanços em aceleração de hardware, soluções híbridas e ZK EVM dedicado.
Por fim, este artigo antecipa conceitos emergentes como ZKCoprocessor, ZKML, ZKThreads, ZK Sharding e ZK StateChannels, e explora seu potencial em termos de escalabilidade, interoperabilidade e proteção de privacidade da Blockchain. Ao analisar essas tecnologias mais recentes e tendências de desenvolvimento, o artigo oferece uma perspectiva abrangente sobre a compreensão e aplicação das tecnologias ZKP, demonstrando seu enorme potencial para melhorar a eficiência e segurança dos sistemas Blockchain, fornecendo uma referência importante para futuras decisões de investimento.
( Índice
Introdução
Uma, conhecimento básico sobre zk-SNARKs
Dois, zk-SNARKs não interativos
Três, prova de conhecimento zero baseada em circuitos
Quatro, modelo de zk-SNARKs
Cinco, Visão geral e desenvolvimento da máquina virtual de zk-SNARKs
Seis, Visão geral e desenvolvimento da Máquina Virtual Ethereum de zk-SNARKs
Sete, Visão Geral e Desenvolvimento da Solução de Rede de Camada Dois zk-SNARKs
Oitavo, direções futuras para o desenvolvimento de zk-SNARKs
Nove, Conclusão
( Prefácio
Nos últimos anos, o desenvolvimento de aplicações Blockchain )DApps ### tem sido rápido, com novas aplicações surgindo diariamente. As plataformas Blockchain suportam as atividades de milhões de usuários todos os dias, processando bilhões de transações. Os grandes volumes de dados gerados por essas transações geralmente incluem informações pessoais sensíveis, como identidade do usuário, montante da transação, endereço da conta e saldo da conta. Dada a abertura e a transparência da Blockchain, os dados armazenados são acessíveis a todos, o que levanta várias questões de segurança e privacidade.
Atualmente, existem várias tecnologias de criptografia que podem enfrentar esses desafios, incluindo criptografia homomórfica, assinaturas em anel, computação multipartidária segura e zk-SNARKs. A criptografia homomórfica permite realizar operações sem decifrar o texto cifrado, ajudando a proteger a segurança dos saldos das contas e dos montantes das transações, mas não consegue proteger a segurança dos endereços das contas. As assinaturas em anel oferecem uma forma especial de assinatura digital que pode ocultar a identidade do signatário, protegendo assim a segurança dos endereços das contas, mas não consegue proteger os saldos das contas e os montantes das transações. A computação multipartidária segura permite distribuir tarefas de computação entre vários participantes, sem que nenhum participante conheça os dados dos outros, protegendo efetivamente a segurança dos saldos das contas e dos montantes das transações, mas também não consegue proteger a segurança dos endereços das contas. Além disso, a criptografia homomórfica, as assinaturas em anel e a computação multipartidária segura não podem ser usadas para verificar se o provador possui montantes de transação suficientes no ambiente blockchain sem revelar os montantes das transações, os endereços das contas e os saldos das contas.
zk-SNARKs é uma solução mais abrangente, este protocolo de verificação permite validar a correção de certas proposições sem revelar quaisquer dados intermediários. O protocolo não requer infraestruturas complexas de chave pública, e sua implementação repetida não oferece aos usuários maliciosos a oportunidade de obter informações úteis adicionais. Através do ZKP, o verificador pode validar se o provedor possui montantes de transação suficientes sem divulgar quaisquer dados de transação privados. O processo de verificação inclui a geração de uma prova que contém o montante da transação que o provedor afirma ter, que é então passada ao verificador, que realiza cálculos pré-definidos sobre a prova e produz o resultado final do cálculo, permitindo chegar à conclusão sobre a aceitação da declaração do provedor. Se a declaração do provedor for aceita, isso significa que eles possuem montantes de transação suficientes. O processo de verificação acima pode ser registrado no Blockchain, sem qualquer falsificação.
A característica do ZKP faz com que desempenhe um papel central nas transações em Blockchain e nas aplicações de criptomoedas, especialmente na proteção da privacidade e na escalabilidade da rede, tornando-se não apenas o foco de pesquisa acadêmica, mas amplamente reconhecido como uma das inovações tecnológicas mais importantes desde a implementação bem-sucedida da tecnologia de livro-razão distribuído – especialmente o Bitcoin. Também é uma pista de destaque para aplicações na indústria e investimento de risco.
Como resultado, diversos projetos de rede baseados em ZKP surgiram, como ZkSync, StarkNet, Mina, Filecoin e Aleo. Com o desenvolvimento desses projetos, inovações algorítmicas em ZKP têm surgido constantemente, com relatos de novos algoritmos sendo lançados quase todas as semanas. Além disso, o desenvolvimento de hardware relacionado à tecnologia ZKP também está avançando rapidamente, incluindo chips otimizados especificamente para ZKP. Por exemplo, projetos como Ingonyama, Irreducible e Cysic já concluíram captações de recursos em larga escala; esses desenvolvimentos não apenas demonstram o rápido progresso da tecnologia ZKP, mas também refletem a transição de hardware genérico para hardware dedicado, como GPU, FPGA e ASIC.
Esses avanços indicam que a tecnologia zk-SNARKs não é apenas um importante avanço no campo da criptografia, mas também um motor chave para a realização de aplicações mais amplas da tecnologia Blockchain — especialmente na melhoria da proteção da privacidade e da capacidade de processamento.
Portanto, decidimos organizar sistematicamente o conhecimento relacionado ao zk-SNARKs ( ZKP ) para melhor auxiliar nossas decisões de investimento futuras. Para isso, revisamos de forma abrangente os principais artigos acadêmicos relacionados ao ZKP (, ordenando-os com base na relevância e no número de citações ); ao mesmo tempo, também analisamos detalhadamente os dados e os white papers dos projetos líderes na área (, classificando-os de acordo com o tamanho do financiamento ). Esta coleta e análise abrangentes de dados forneceram uma base sólida para a redação deste artigo.
( Uma, conhecimentos básicos sobre zk-SNARKs
)# 1. Visão Geral
Em 1985, os acadêmicos Goldwasser, Micali e Rackoff apresentaram pela primeira vez a prova de conhecimento zero no artigo "A Complexidade do Conhecimento de Sistemas de Provas Interativas", definindo muitos conceitos que influenciaram a pesquisa acadêmica subsequente. Por exemplo, a definição de conhecimento é "saída de um cálculo inviável", ou seja, o conhecimento deve ser uma saída e ser um cálculo inviável, o que significa que não pode ser uma função simples, mas sim uma função complexa. O cálculo inviável pode ser entendido como um problema NP, ou seja, um problema cuja solução pode ser verificada em tempo polinomial, onde o tempo polinomial se refere ao tempo de execução do algoritmo que pode ser expresso como uma função polinomial do tamanho da entrada. Este é um critério importante na ciência da computação para medir a eficiência e viabilidade de algoritmos. Devido à complexidade do processo de resolução de problemas NP, eles são considerados cálculos inviáveis; no entanto, seu processo de verificação é relativamente simples, tornando-os muito adequados para a validação de provas de conhecimento zero.
Um exemplo clássico de problema NP é o problema do vendedor viajante, onde é necessário encontrar o caminho mais curto para visitar uma série de cidades e retornar ao ponto de partida. Embora encontrar o caminho mais curto possa ser difícil, dado um caminho, verificar se esse caminho é o mais curto é relativamente fácil. Isso porque a verificação da distância total de um caminho específico pode ser realizada em tempo polinomial.
Goldwasser et al. introduziram em seu artigo o conceito de "complexidade do conhecimento" ### knowledge complexity ###, usado para quantificar a quantidade de conhecimento que o provador vaza para o verificador em sistemas de prova interativa. Eles também propuseram sistemas de prova interativa ( Interactive Proof Systems, IPS ), onde o provador ( Prover ) e o verificador ( Verifier ) interagem em várias rodadas para provar a veracidade de uma afirmação.
Em suma, a definição de zk-SNARKs resumida por Goldwasser et al. é um tipo especial de prova interativa, onde o verificador não obtém nenhuma informação adicional além do valor verdadeiro da afirmação durante o processo de verificação; e foram apresentadas três características básicas, incluindo:
Completude ( completeness ): Se a prova for verdadeira, o provedor honesto pode convencer o validador honesto desse fato;
Confiabilidade ( solidez ): Se o provador não souber o conteúdo da declaração, ele só pode enganar o verificador com uma probabilidade insignificante;
3.zk-SNARKs(zero-knowledge): Após a conclusão do processo de prova, o verificador apenas obtém a informação de que "o provador possui este conhecimento", sem obter qualquer conteúdo adicional.
(# 2.zk-SNARKs示例
Para melhor entender os zk-SNARKs e suas propriedades, segue um exemplo de como verificar se um provador possui certas informações privadas, que se divide em três fases: configuração, desafio e resposta.
Primeiro passo: configurar )Setup(
Nesta etapa, o objetivo do provador é criar uma prova de que ele conhece um número secreto s, mas sem mostrar diretamente s. Seja o número secreto s=5;
Escolha dois grandes números primos p e q, calcule o produto deles n. Suponha que o número primo p=11, q=13, o n calculado é 143;
Calcule v=s^2 mod n, aqui, v é enviado ao verificador como parte da prova, mas não é suficiente para que o verificador ou qualquer espectador deduza s. v=5^2 mod 143=25;
Escolha aleatoriamente um inteiro r, calcule x=r^2 mod n e envie para o verificador. Este valor x é utilizado no processo de verificação subsequente, mas também não expõe s. Suponha que o inteiro aleatório r=7, o x calculado é 49.
Segundo passo: desafio )Challenge(
O validador seleciona aleatoriamente um bit a) que pode ser 0 ou 1(, e então o envia ao provador. Este "desafio" determina os próximos passos que o provador precisa seguir.
Terceiro passo: resposta )Response###
De acordo com o valor a enviado pelo validador, o provador responde:
Se a=0, o provador envia g=r( onde r é o número que ele escolheu aleatoriamente anteriormente ).
Se a=1, o provador calcula g=rs mod n e envia. Suponha que o bit aleatório enviado pelo validador a=1, de acordo com o valor de a, o provador calcula g=75 mod 143=35;
Por fim, o validador verifica se x é igual a g^2/v^a mod n com base no g recebido. Se a igualdade for verdadeira, o validador aceita esta prova. Quando a=0, o validador calcula g^2 mod n, validando à direita x=49; quando a=1, o validador calcula g^2/v mod n=35^2/25 mod 143=49, validando à direita x=49.
Aqui, vemos que o x calculado pelo validador indica que o provador conseguiu passar pelo processo de validação sem revelar seu número secreto s. Aqui, como a pode apenas ser 0 ou 1, existem apenas duas possibilidades, a probabilidade de o provador passar na validação por sorte é (1/2) quando a é 0. Mas o validador então desafia o provador n vezes, o provador muda constantemente os números relevantes e os submete ao validador, e consegue sempre passar pelo processo de validação, assim a probabilidade de o provador passar na validação por sorte é (1/2)^n, que se aproxima infinitamente de 0(, provando assim que o provador realmente conhece um número secreto s. Este exemplo demonstra a integridade, confiabilidade e a propriedade de zero conhecimento do sistema de prova de zero conhecimento.
) Dois, zk-SNARKs não interativos
(# 1. Contexto
zk-SNARKs)ZKP( na concepção tradicional geralmente é uma forma de protocolo interativo e online; por exemplo, o protocolo Sigma geralmente requer de três a cinco rodadas de interação para completar a autenticação. No entanto, em cenários como transações instantâneas ou votação, frequentemente não há oportunidade para múltiplas interações, especialmente na aplicação da tecnologia Blockchain, onde a funcionalidade de verificação offline se torna particularmente importante.
)# 2. A proposta de NIZK
Em 1988, Blum, Feldman e Micali propuseram pela primeira vez o conceito de prova NIZK não interativa de zk-SNARKs (, provando que é possível sem múltiplas interações.