zk-SNARKs(ZKP) como uma tecnologia criptográfica importante, é amplamente considerada no campo da blockchain como uma das inovações mais revolucionárias após a tecnologia de livro-razão distribuído. Este artigo fornece uma revisão sistemática do desenvolvimento da tecnologia ZKP nos últimos quarenta anos e das pesquisas mais recentes.
Primeiro, foram introduzidos os conceitos básicos e o histórico do ZKP, com uma análise detalhada da tecnologia ZKP baseada em circuitos, incluindo o design, aplicação e métodos de otimização de modelos como zk-SNARKs, Pinocchio e Bulletproofs. No que diz respeito ao ambiente computacional, este artigo apresenta o ZKVM e o ZKEVM, explorando como eles podem aumentar a capacidade de processamento de transações, proteger a privacidade e melhorar a eficiência de verificação. O artigo também descreve o mecanismo de funcionamento e os métodos de otimização do ZK Rollup como uma solução de escalonamento Layer 2, além dos últimos avanços em aceleração de hardware, soluções híbridas e um ZK EVM dedicado.
Por último, 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 no blockchain.
Através da análise destas tecnologias mais recentes e tendências de desenvolvimento, este artigo fornece uma perspectiva abrangente para a compreensão e aplicação da tecnologia zk-SNARKs, demonstrando o seu enorme potencial para melhorar a eficiência e segurança dos sistemas de blockchain, oferecendo uma referência importante para decisões de investimento futuras.
índice
Introdução
Um, zk-SNARKs conhecimentos básicos
Resumo
zk-SNARKs示例
Dois, zk-SNARKs não interativos
Fundo
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, zk-SNARKs modelo
Contexto
Modelos de algoritmos comuns
Proposta baseada em PCP linear e problema do logaritmo discreto
Proposta baseada na prova de pessoas comuns
Prova de conhecimento zero baseada em provas verificáveis de probabilidade
Classificação da fase de configuração baseada em CPC
V. Visão geral e desenvolvimento da máquina virtual de zk-SNARKs
Background
Classificação do ZKVM existente
Paradigmas de Front-end e Back-end
Vantagens e desvantagens do paradigma ZKVM
Seis, Visão geral e desenvolvimento do zk-SNARKs Ethereum Virtual Machine
Contexto
O funcionamento do ZKEVM
O processo de implementação do ZKEVM
Características do ZKEVM
Sete, Visão geral e desenvolvimento da solução de rede de segunda camada zk-SNARKs
Contexto
O mecanismo de trabalho 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
A proposta e o desenvolvimento do ZKML
Desenvolvimento relacionado com a tecnologia de escalabilidade zk-SNARKs
Desenvolvimento da interoperabilidade de zk-SNARKs
Nove, conclusão
Prefácio
Com a chegada da era Web3, as aplicações de blockchain ( DApps ) estão a apresentar um crescimento explosivo, com novas aplicações a surgirem todos os dias. Nos últimos anos, as plataformas de blockchain têm suportado diariamente a atividade de milhões de utilizadores, processando dezenas de bilhões de transações. Os grandes volumes de dados gerados por estas transações geralmente contêm informações pessoais sensíveis, como a identidade do utilizador, o montante da transação, o endereço da conta e o saldo, entre outros. Tendo em conta a abertura e a transparência da blockchain, os dados armazenados são públicos para 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 de conta e dos montantes das transações, mas não consegue proteger os 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 os endereços das contas, mas não consegue proteger os saldos de conta 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 participantes, protegendo efetivamente os saldos de conta e os montantes das transações, mas também não consegue proteger os endereços das contas. Além disso, essas tecnologias não conseguem verificar se o provador possui um montante suficiente de transação no ambiente da blockchain sem revelar os montantes das transações, os endereços das contas e os saldos das contas.
zk-SNARKs(ZKP) é 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 uma infraestrutura de chave pública complexa, e sua implementação repetida não oferece a usuários mal-intencionados a oportunidade de obter informações úteis adicionais. Através do ZKP, o verificador pode validar se o provador possui montantes de transação suficientes sem revelar quaisquer dados privados de transação. O processo de verificação inclui a geração de uma prova que contém o montante de transação que o provador afirma, e então essa prova é transmitida ao verificador, que realiza cálculos pré-definidos sobre a prova e gera o resultado final do cálculo, a partir do qual se chega à conclusão de aceitar ou não a declaração do provador. Se a declaração do provador for aceita, isso significa que ele possui montantes de transação suficientes. O processo de verificação acima pode ser registrado na blockchain, sem qualquer falsificação.
A característica do ZKP faz com que desempenhe um papel central nas transações de blockchain e nas aplicações de criptomoedas, especialmente em termos de proteção de privacidade e escalabilidade da rede, tornando-se não apenas o foco de pesquisa acadêmica, mas amplamente considerado uma das inovações tecnológicas mais importantes desde a implementação bem-sucedida da tecnologia de livro-razão distribuído (, especialmente do Bitcoin ). Ao mesmo tempo, também é uma pista de foco para aplicações do setor e investimento de risco.
Assim, vários projetos de rede baseados em zk-SNARKs surgiram, como ZkSync, StarkNet, Mina, Filecoin e Aleo. Com o desenvolvimento desses projetos, inovações algorítmicas relacionadas ao zk-SNARKs têm surgido continuamente, com relatos de novos algoritmos a serem lançados quase todas as semanas. Além disso, o desenvolvimento de hardware relacionado à tecnologia zk-SNARKs também está avançando rapidamente, incluindo chips otimizados especificamente para zk-SNARKs. Por exemplo, projetos como Ingonyama, Irreducible e Cysic já completaram arrecadações massivas de fundos; esses desenvolvimentos não apenas demonstram o rápido progresso da tecnologia zk-SNARKs, 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 a zk-SNARKs ( ZKP ), para melhor auxiliar na tomada de 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 as informações e os white papers dos projetos líderes na área (, classificando-os de acordo com o tamanho do financiamento ). Essa coleta e análise abrangente de informações forneceram uma base sólida para a redação deste artigo.
Um, zk-SNARKs fundamentos.
1. Visão Geral
Em 1985, os acadêmicos Goldwasser, Micali e Rackoff propuseram pela primeira vez a prova de conhecimento zero no artigo "The Knowledge Complexity of Interactive Proof-Systems", definindo conceitos que influenciaram pesquisas acadêmicas subsequentes, como a definição de conhecimento sendo "saída de cálculo não viável", ou seja, o conhecimento deve ser uma saída e um cálculo não viável, significando que não pode ser uma função simples, mas sim uma função complexa. O cálculo não viável pode ser entendido como um problema NP, que é 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 a viabilidade do algoritmo. Devido à complexidade do processo de resolução de problemas NP, eles são considerados cálculos não viáveis; no entanto, seu processo de verificação é relativamente simples, tornando-os muito adequados para a verificação de provas de conhecimento zero.
Um exemplo clássico de problema NP é o problema do caixeiro 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 e outros introduziram o conceito de "complexidade do conhecimento" em seu artigo, para quantificar a quantidade de conhecimento que o provador revela ao 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) provam a veracidade de uma afirmação através de múltiplas interações.
Em suma, a definição de zk-SNARKs resumida por Goldwasser et al. é uma forma especial de prova interativa, na qual 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 propostas três características básicas que incluem:
Completude: se a prova é verdadeira, um provador honesto pode convencer um verificante honesto desse fato;
2.Confiabilidade: se o provador não souber o conteúdo da declaração, ele só poderá enganar o validador com uma probabilidade insignificante;
zk-SNARKs: 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 conseguir obter qualquer conteúdo adicional.
(# 2.zk-SNARKs exemplo
Para melhor compreender os zk-SNARKs e suas propriedades, aqui está um exemplo de como verificar se um provador possui certas informações confidenciais, que é dividido em três fases: configuração, desafio e resposta.
Primeiro passo: configurar
Neste passo, o objetivo do provador é criar uma prova que demonstre que ele conhece um número secreto s, mas sem mostrar diretamente s. Seja s o número secreto;
Escolha dois grandes números primos p e q, e calcule o seu produto n. Defina os números primos p e q, e calcule o n obtido.
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.
Escolha um número inteiro aleatório r, calcule x=r^2 mod n e envie-o ao verificador. Este valor x é utilizado no processo de verificação subsequente, mas também não expõe s. Considere o número inteiro aleatório r e o valor de x calculado.
Segundo passo: desafio
Um validador escolhe aleatoriamente um valor a) que pode ser 0 ou 1(, e então o envia ao provador. Este "desafio" determina os passos que o provador precisa tomar a seguir.
Terceiro passo: resposta
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 verificador envia um bit aleatório a, e com base no valor de a, o provador calcula g;
Por fim, o validador verifica se x é igual a g^2 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 x no lado direito; quando a=1, o validador calcula g^2 mod n, validando xv no lado direito.
Aqui, vemos que o valor calculado pelo verificador x=g^2 mod n demonstra que o provador conseguiu passar com sucesso pelo processo de verificação, enquanto não revelou seu número secreto s. Aqui, como a pode assumir apenas 0 ou 1, há apenas duas possibilidades, e a probabilidade de o provador passar na verificação por sorte é de 50%( quando a assume o valor 0). Mas o verificador, em seguida, desafia o provador n vezes, e o provador muda constantemente os números relevantes, apresentando-os ao verificador, e sempre consegue passar com sucesso pelo processo de verificação, assim, a probabilidade de o provador passar na verificação por sorte se torna (1/2)^n( que se aproxima infinitamente de 0), levando à conclusão de que o provador realmente conhece um número secreto s. Este exemplo demonstra a integridade, confiabilidade e zero conhecimento do sistema de prova de conhecimento zero.
( 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 normalmente 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, muitas vezes 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 especialmente importante.
2.A introdução do NIZK
Em 1988, Blum, Feldman e Micali foram os primeiros a apresentar o conceito de prova não interativa de conhecimento zero ###NIZK(, demonstrando que é possível que o provador )Prover### e o verificador (Verifier) completem o processo de autenticação sem a necessidade de múltiplas interações. Esse avanço tornou viável a realização de transações instantâneas, votação e aplicações em blockchain.
Esta página pode conter conteúdo de terceiros, que é fornecido apenas para fins informativos (não para representações/garantias) e não deve ser considerada como um endosso de suas opiniões pela Gate nem como aconselhamento financeiro ou profissional. Consulte a Isenção de responsabilidade para obter detalhes.
15 Curtidas
Recompensa
15
7
Compartilhar
Comentário
0/400
BlockDetective
· 07-15 23:55
zksnark é realmente bom
Ver originalResponder0
FunGibleTom
· 07-15 04:16
Quem é que consegue entender isso... já estou quase enlouquecendo.
Ver originalResponder0
FlashLoanLord
· 07-14 05:09
Não consigo ler, até os cães não entendem.
Ver originalResponder0
wagmi_eventually
· 07-14 05:05
zk Eu só usei o stark, o resto não entendo.
Ver originalResponder0
JustHereForMemes
· 07-14 04:55
zk esta tecnologia é realmente fantástico
Ver originalResponder0
ImpermanentPhilosopher
· 07-14 04:55
DOGE onde não funciona zkp não foi usado antes?
Ver originalResponder0
DaoGovernanceOfficer
· 07-14 04:53
*suspiro* mais uma pesquisa que falta as percepções críticas do vitalik do seu artigo zk de 2022...
História da evolução da tecnologia de zk-SNARKs ao longo de 40 anos: uma análise completa desde a base até o ZK Rollup.
zk-SNARKs技术综述与未来展望
Resumo
zk-SNARKs(ZKP) como uma tecnologia criptográfica importante, é amplamente considerada no campo da blockchain como uma das inovações mais revolucionárias após a tecnologia de livro-razão distribuído. Este artigo fornece uma revisão sistemática do desenvolvimento da tecnologia ZKP nos últimos quarenta anos e das pesquisas mais recentes.
Primeiro, foram introduzidos os conceitos básicos e o histórico do ZKP, com uma análise detalhada da tecnologia ZKP baseada em circuitos, incluindo o design, aplicação e métodos de otimização de modelos como zk-SNARKs, Pinocchio e Bulletproofs. No que diz respeito ao ambiente computacional, este artigo apresenta o ZKVM e o ZKEVM, explorando como eles podem aumentar a capacidade de processamento de transações, proteger a privacidade e melhorar a eficiência de verificação. O artigo também descreve o mecanismo de funcionamento e os métodos de otimização do ZK Rollup como uma solução de escalonamento Layer 2, além dos últimos avanços em aceleração de hardware, soluções híbridas e um ZK EVM dedicado.
Por último, 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 no blockchain.
Através da análise destas tecnologias mais recentes e tendências de desenvolvimento, este artigo fornece uma perspectiva abrangente para a compreensão e aplicação da tecnologia zk-SNARKs, demonstrando o seu enorme potencial para melhorar a eficiência e segurança dos sistemas de blockchain, oferecendo uma referência importante para decisões de investimento futuras.
índice
Introdução
Um, zk-SNARKs conhecimentos básicos
Dois, zk-SNARKs não interativos
Três, prova de conhecimento zero baseada em circuitos
Quatro, zk-SNARKs modelo
V. Visão geral e desenvolvimento da máquina virtual de zk-SNARKs
Seis, Visão geral e desenvolvimento do zk-SNARKs Ethereum Virtual Machine
Sete, Visão geral e desenvolvimento da solução de rede de segunda camada zk-SNARKs
Oitavo, direções futuras para o desenvolvimento de zk-SNARKs
Nove, conclusão
Prefácio
Com a chegada da era Web3, as aplicações de blockchain ( DApps ) estão a apresentar um crescimento explosivo, com novas aplicações a surgirem todos os dias. Nos últimos anos, as plataformas de blockchain têm suportado diariamente a atividade de milhões de utilizadores, processando dezenas de bilhões de transações. Os grandes volumes de dados gerados por estas transações geralmente contêm informações pessoais sensíveis, como a identidade do utilizador, o montante da transação, o endereço da conta e o saldo, entre outros. Tendo em conta a abertura e a transparência da blockchain, os dados armazenados são públicos para 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 de conta e dos montantes das transações, mas não consegue proteger os 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 os endereços das contas, mas não consegue proteger os saldos de conta 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 participantes, protegendo efetivamente os saldos de conta e os montantes das transações, mas também não consegue proteger os endereços das contas. Além disso, essas tecnologias não conseguem verificar se o provador possui um montante suficiente de transação no ambiente da blockchain sem revelar os montantes das transações, os endereços das contas e os saldos das contas.
zk-SNARKs(ZKP) é 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 uma infraestrutura de chave pública complexa, e sua implementação repetida não oferece a usuários mal-intencionados a oportunidade de obter informações úteis adicionais. Através do ZKP, o verificador pode validar se o provador possui montantes de transação suficientes sem revelar quaisquer dados privados de transação. O processo de verificação inclui a geração de uma prova que contém o montante de transação que o provador afirma, e então essa prova é transmitida ao verificador, que realiza cálculos pré-definidos sobre a prova e gera o resultado final do cálculo, a partir do qual se chega à conclusão de aceitar ou não a declaração do provador. Se a declaração do provador for aceita, isso significa que ele possui montantes de transação suficientes. O processo de verificação acima pode ser registrado na blockchain, sem qualquer falsificação.
A característica do ZKP faz com que desempenhe um papel central nas transações de blockchain e nas aplicações de criptomoedas, especialmente em termos de proteção de privacidade e escalabilidade da rede, tornando-se não apenas o foco de pesquisa acadêmica, mas amplamente considerado uma das inovações tecnológicas mais importantes desde a implementação bem-sucedida da tecnologia de livro-razão distribuído (, especialmente do Bitcoin ). Ao mesmo tempo, também é uma pista de foco para aplicações do setor e investimento de risco.
Assim, vários projetos de rede baseados em zk-SNARKs surgiram, como ZkSync, StarkNet, Mina, Filecoin e Aleo. Com o desenvolvimento desses projetos, inovações algorítmicas relacionadas ao zk-SNARKs têm surgido continuamente, com relatos de novos algoritmos a serem lançados quase todas as semanas. Além disso, o desenvolvimento de hardware relacionado à tecnologia zk-SNARKs também está avançando rapidamente, incluindo chips otimizados especificamente para zk-SNARKs. Por exemplo, projetos como Ingonyama, Irreducible e Cysic já completaram arrecadações massivas de fundos; esses desenvolvimentos não apenas demonstram o rápido progresso da tecnologia zk-SNARKs, 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 a zk-SNARKs ( ZKP ), para melhor auxiliar na tomada de 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 as informações e os white papers dos projetos líderes na área (, classificando-os de acordo com o tamanho do financiamento ). Essa coleta e análise abrangente de informações forneceram uma base sólida para a redação deste artigo.
Um, zk-SNARKs fundamentos.
1. Visão Geral
Em 1985, os acadêmicos Goldwasser, Micali e Rackoff propuseram pela primeira vez a prova de conhecimento zero no artigo "The Knowledge Complexity of Interactive Proof-Systems", definindo conceitos que influenciaram pesquisas acadêmicas subsequentes, como a definição de conhecimento sendo "saída de cálculo não viável", ou seja, o conhecimento deve ser uma saída e um cálculo não viável, significando que não pode ser uma função simples, mas sim uma função complexa. O cálculo não viável pode ser entendido como um problema NP, que é 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 a viabilidade do algoritmo. Devido à complexidade do processo de resolução de problemas NP, eles são considerados cálculos não viáveis; no entanto, seu processo de verificação é relativamente simples, tornando-os muito adequados para a verificação de provas de conhecimento zero.
Um exemplo clássico de problema NP é o problema do caixeiro 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 e outros introduziram o conceito de "complexidade do conhecimento" em seu artigo, para quantificar a quantidade de conhecimento que o provador revela ao 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) provam a veracidade de uma afirmação através de múltiplas interações.
Em suma, a definição de zk-SNARKs resumida por Goldwasser et al. é uma forma especial de prova interativa, na qual 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 propostas três características básicas que incluem:
2.Confiabilidade: se o provador não souber o conteúdo da declaração, ele só poderá enganar o validador com uma probabilidade insignificante;
(# 2.zk-SNARKs exemplo
Para melhor compreender os zk-SNARKs e suas propriedades, aqui está um exemplo de como verificar se um provador possui certas informações confidenciais, que é dividido em três fases: configuração, desafio e resposta.
Primeiro passo: configurar
Neste passo, o objetivo do provador é criar uma prova que demonstre que ele conhece um número secreto s, mas sem mostrar diretamente s. Seja s o número secreto;
Escolha dois grandes números primos p e q, e calcule o seu produto n. Defina os números primos p e q, e calcule o n obtido.
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.
Escolha um número inteiro aleatório r, calcule x=r^2 mod n e envie-o ao verificador. Este valor x é utilizado no processo de verificação subsequente, mas também não expõe s. Considere o número inteiro aleatório r e o valor de x calculado.
Segundo passo: desafio
Um validador escolhe aleatoriamente um valor a) que pode ser 0 ou 1(, e então o envia ao provador. Este "desafio" determina os passos que o provador precisa tomar a seguir.
Terceiro passo: resposta
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 verificador envia um bit aleatório a, e com base no valor de a, o provador calcula g;
Por fim, o validador verifica se x é igual a g^2 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 x no lado direito; quando a=1, o validador calcula g^2 mod n, validando xv no lado direito.
Aqui, vemos que o valor calculado pelo verificador x=g^2 mod n demonstra que o provador conseguiu passar com sucesso pelo processo de verificação, enquanto não revelou seu número secreto s. Aqui, como a pode assumir apenas 0 ou 1, há apenas duas possibilidades, e a probabilidade de o provador passar na verificação por sorte é de 50%( quando a assume o valor 0). Mas o verificador, em seguida, desafia o provador n vezes, e o provador muda constantemente os números relevantes, apresentando-os ao verificador, e sempre consegue passar com sucesso pelo processo de verificação, assim, a probabilidade de o provador passar na verificação por sorte se torna (1/2)^n( que se aproxima infinitamente de 0), levando à conclusão de que o provador realmente conhece um número secreto s. Este exemplo demonstra a integridade, confiabilidade e zero conhecimento do sistema de prova de conhecimento zero.
( 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 normalmente 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, muitas vezes 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 especialmente importante.
2.A introdução do NIZK
Em 1988, Blum, Feldman e Micali foram os primeiros a apresentar o conceito de prova não interativa de conhecimento zero ###NIZK(, demonstrando que é possível que o provador )Prover### e o verificador (Verifier) completem o processo de autenticação sem a necessidade de múltiplas interações. Esse avanço tornou viável a realização de transações instantâneas, votação e aplicações em blockchain.