Um Guia para Iniciantes para Provas de Conhecimento Zero: História do Desenvolvimento, Aplicações e Princípios Básicos

PrincipianteJan 06, 2024
Este artigo introduz sistematicamente a história do desenvolvimento e os princípios básicos das provas de conhecimento zero.
Um Guia para Iniciantes para Provas de Conhecimento Zero: História do Desenvolvimento, Aplicações e Princípios Básicos

A atual taxa de crescimento de projetos à prova de conhecimento zero (ZKP) na indústria de blockchain é surpreendente, especialmente o aumento das aplicações ZKP nos dois níveis de expansão e proteção de privacidade, o que nos expôs a uma variedade de projetos de prova de conhecimento zero. Devido à natureza extremamente matemática do ZKP, é significativamente mais difícil para os entusiastas da encriptação compreenderem o ZK em profundidade. Portanto, também esperamos resolver algumas mudanças na teoria e aplicação do ZKP desde o início e explorar o impacto e o valor na indústria cripto com os leitores - aprendendo juntos através de vários relatórios, que também servem como um resumo dos pensamentos da equipa de investigação da HashKey Capital. Este artigo é o primeiro da série, apresentando principalmente o histórico de desenvolvimento, aplicações e alguns princípios básicos do ZKP.

1. A história das provas de conhecimento zero

O moderno sistema de prova de conhecimento zero originou-se do artigo publicado em conjunto por Goldwasser, Micali e Rackoff: The Knowledge Complexity of Interactive Proof Systems (GMR85), que foi proposto em 1985 e publicado em 1989. Este artigo explica principalmente quanto conhecimento precisa ser trocado após K rodadas de interações num sistema interativo para provar que uma afirmação está correta. Se o conhecimento trocado pode ser feito zero, chama-se prova de conhecimento zero. Presume-se que o provador tem recursos ilimitados e o verificador tem apenas recursos limitados. O problema com os sistemas interativos é que a prova não é inteiramente matematicamente comprovável, mas correta num sentido probabilístico, embora a probabilidade seja muito pequena (1/2 ^ n).

Portanto, o sistema interativo não é perfeito e só tem uma completude aproximada. O sistema de sistema não interativo (NP) nascido nesta base tem completude e torna-se a escolha perfeita para o sistema de prova de conhecimento zero.

Os primeiros sistemas de prova de conhecimento zero faltavam eficiência e usabilidade, por isso permaneceram sempre no nível teórico. Não foi até os últimos 10 anos que começaram a florescer. À medida que a criptografia se tornou proeminente na criptografia, as provas de conhecimento zero vieram à frente e se tornaram uma direção crucial. Em particular, desenvolver um protocolo geral, não interativo e de prova de conhecimento zero com tamanho de prova limitado é uma das direções de exploração mais críticas.

Basicamente, a prova de conhecimento zero é uma compensação entre a velocidade da prova, a velocidade da verificação e o tamanho da prova. O protocolo ideal é prova rápida, verificação rápida e tamanho de prova pequeno.

O avanço mais importante na prova de conhecimento zero é o artigo de 2010 de Groth, Short Pairing, baseado em Short Pairing Non-Interactive Zero-Knowledge Argumentos, que também é o pioneiro teórico do grupo mais importante de zk-SNARKs no ZKP.

O desenvolvimento mais importante na aplicação da prova de conhecimento zero é o sistema de prova de conhecimento zero utilizado pelo Z-cash em 2015, que protegia a privacidade das transações e dos montantes. Mais tarde, evoluiu para a combinação de zk-SNARK e contratos inteligentes, e o zk-SNARK entrou nos cenários de aplicação mais alargados.

Algumas realizações académicas importantes durante este período incluem:

  1. Pinóquio (PGHR13) em 2013: Pinóquio: Computação Verificável Quase Prática, que comprime o tempo de prova e verificação ao âmbito aplicável, é também o protocolo básico utilizado pela Zcash.
  2. Groth16 em 2016: Sobre o tamanho dos argumentos não interativos baseados em emparelhamento, que simplifica o tamanho da prova e melhora a eficiência da verificação, é atualmente o algoritmo básico ZK mais utilizado.
  3. Bulletproofs (BBBPWM17) Bulletproofs: Short Proofs for Confidential Transactions and More em 2017 propôs o algoritmo Bulletproof, uma prova de conhecimento zero não interativa muito curta e não interativa que não requer uma configuração confiável. Será aplicado ao Monero 6 meses depois e é muito rápido. A combinação de teoria e aplicação.
  4. Em 2018, o ZK-STARKS (BBHR18) Integridade computacional segura escalável, transparente e pós-quântica propôs um protocolo de algoritmo ZK-STARK que não requer definições fidedignas. Esta é outra direção atraente do desenvolvimento do ZK atualmente, e também se baseia em Baseado nisto, nasceu o StarkWare, o projeto ZK mais importante.

Outros desenvolvimentos, incluindo PLONK, Halo2, etc. também são progressos extremamente importantes e também fizeram algumas melhorias no zk-SNARK.

2. Breve descrição da aplicação da prova de conhecimento zero

As duas aplicações mais difundidas de provas de conhecimento zero são a proteção da privacidade e a expansão da capacidade. Nos primeiros dias, com o lançamento de transações de privacidade e vários projetos conhecidos como Zcash e Monero, as transações de privacidade tornaram-se uma categoria muito importante. No entanto, como a necessidade de transações de privacidade não era tão proeminente como a indústria esperava, este tipo de projetos representativos começou a abrandar. Entre lentamente nos campos de segundo e terceiro escalões (não se retire da fase da história). Ao nível da aplicação, a necessidade de expansão aumentou ao ponto em que o Ethereum 2.0 (que foi renomeado camada de consenso) se transformou numa rota centrada no rollup em 2020. A série ZK voltou oficialmente à atenção da indústria e tornou-se o foco.

Transações de privacidade: Existem muitos projetos que implementaram transações de privacidade, incluindo Zcash usando SNARK, Tornado, Monero usando balas e Dash. O Dash não usa o ZKP no sentido estrito, mas sim um sistema simples e bruto de mistura de moeda que só pode ocultar o endereço mas não o valor. Não vou mencionar isso aqui.

As etapas da transação zk-SNARKS aplicadas pela Zcash são as seguintes:

Fonte: Desmistificando o Papel dos ZK-SNARKS no Zcash

  1. A fase de configuração do sistema gera a chave de prova (polinómio de prova de encriptação) e a chave de verificação, utilizando a função KeyGen
  2. O método de encriptação ECIES da fase CPA (Eliptic Curve Integrated Encryption Scheme) é utilizado para gerar chaves públicas e privadas
  3. Estágio de cunhagem de moedas, o número de novas moedas geradas. Endereço público e compromisso de moeda
  4. Na fase de despejamento, um certificado zk-SNARK é gerado e adicionado ao livro-razão de nossas transações.
  5. Na fase de Verificação, o verificador verifica se os volumes de transação de Mint e Pour estão corretos.
  6. Na fase de Recebimento, o destinatário recebe moedas. Se quiser usar as moedas recebidas, continue a ligar para o Pouring para formar a verificação zk-SNARK, repita os passos 4-6 acima para concluir a transação.

O Zcash ainda tem limitações na utilização de conhecimento zero, ou seja, baseia-se no UTXO, pelo que parte das informações da transação é apenas protegida, não realmente encoberta. Porque é uma rede separada baseada no design do Bitcoin, é difícil de expandir (combinar com outras aplicações). A taxa real de uso da blindagem (isto é, transações privadas) é inferior a 10%, o que mostra que as transações privadas não foram expandidas com sucesso. (a partir de 2202)

A única grande piscina de mistura usada pelo Tornado é mais versátil e baseada numa rede “testada e testada” como a Ethereum. O Torndao é essencialmente um pool de mistura de moedas usando o zk-SNark, e a configuração de confiança é baseada no papel Groth 16. As funcionalidades disponíveis com o Tornado Cash incluem:

  1. Só as moedas depositadas podem ser retiradas.
  2. Nenhuma moeda pode ser retirada duas vezes
  3. O processo de prova está vinculado à notificação de anulação da moeda (Nullifier). O hash da mesma prova mas um Nullifier diferente não permitirá a retirada de moedas.
  4. A segurança é de 126 bits e não será degradada devido à composição.

Vitalik mencionou que em comparação com a expansão, a privacidade é relativamente fácil de implementar. Se alguns protocolos de expansão puderem ser estabelecidos, a privacidade basicamente não será um problema.

Expansão: A expansão do ZK pode ser feita na rede de primeiro nível, como a Mina, ou na rede de segundo nível, ou seja, zk-roll up. A ideia do rolamento de ZK pode ter tido origem no post do Vitalik em 2018, escalonamento em cadeia para potencialmente ~ 500 tx/seg através da validação tx em massa.

O ZK-Rollup tem dois tipos de funções, uma é Sequenciador e a outra é Agregador. O Sequenciador é responsável por embalar as transações, e o Agregador é responsável por fundir um grande número de transações e criar um rollup, e formar uma prova SNARK (também pode ser uma prova de conhecimento zero com base em outros algoritmos). Esta prova será comparada com o estado anterior da Camada1 e, em seguida, atualizar a árvore Ethereum Merkle, calcular uma nova árvore de estado.

Fonte: Polygon

Vantagens e desvantagens do rollup ZK:

  1. Vantagens: baixo custo, ao contrário do OP que será economicamente atacado, não há necessidade de atrasar as transações, a privacidade pode ser protegida e a finalidade pode ser alcançada rapidamente
  2. Desvantagens: Formar a prova ZK requer uma grande quantidade de cálculo, problemas de segurança (SNARK requer uma configuração fidedigna), não resistente a ataques quânticos (SNARK, STARK pode), a ordem da transação pode ser alterada

Fonte: Investigação Ethereum

Com base na disponibilidade de dados e métodos de prova, o Starkware tem um diagrama de classificação clássico para L2 (a camada de disponibilidade de dados da Volition pode ser selecionada na cadeia ou fora da cadeia):

Fonte: Starkware

Os projetos de rollup ZK mais competitivos atualmente no mercado incluem: StarkNet da Starkware, ZKSync da Matterlabs e Aztec connect da Aztec, Hermez e Miden da Polygon, Loopring, Scroll, etc.

Basicamente, a rota técnica reside na escolha do SNARK (e das suas versões melhoradas) e STARK, bem como no suporte para EVM (incluindo compatibilidade ou equivalência).

  1. A Aztec desenvolveu um protocolo SNARK Protocol-PLONK generalizado. O Aztec3 em execução pode suportar EVM, mas a privacidade tem precedência sobre a compatibilidade EVM.
  2. O Starnet usa o zk-Stark, um zkp que não requer configurações confiáveis, mas atualmente não suporta EVM e tem o seu próprio compilador e linguagem de desenvolvimento.
  3. O ZKSync também usa plonk e suporta EVM. O ZKSync 2.0 é compatível com EVM e tem o seu próprio ZkeVM
  4. Scroll, um rollup ZK compatível com EVM, a equipa também é um contribuinte importante para o projeto ZKevM da Fundação Ethereum

Discutir brevemente os problemas de compatibilidade EVM:

A compatibilidade entre o sistema ZK e EVM foi sempre uma dor de cabeça, e a maioria dos projetos escolherá entre os dois. Aqueles que enfatizam o ZK podem construir uma máquina virtual no seu próprio sistema e ter a sua própria linguagem ZK e compilador, mas isso tornará mais difícil para os programadores aprenderem, e porque basicamente não é open source, vai tornar-se uma caixa preta. De um modo geral, a indústria tem atualmente duas opções. Um é ser totalmente compatível com os opcodes do Solidity e o outro é projetar uma nova máquina virtual que seja compatível com o ZK e compatível com o Solidity. A indústria não esperava uma integração tão rápida no início, mas a rápida iteração da tecnologia nos últimos dois anos trouxe a compatibilidade EVM a um novo nível, e os desenvolvedores podem alcançar um certo grau de migração perfeita (ou seja, a cadeia principal Ethereum para o ZK rollup) é um desenvolvimento empolgante, que afetará a ecologia de desenvolvimento e o cenário competitivo da ZK. Discutiremos esse problema em detalhes em relatórios subsequentes.

3. Princípios básicos da implementação ZK SNARK

Goldwasser, Micali e Rackoff propuseram que as provas de conhecimento zero têm três propriedades:

  1. Completude: Todas as declarações com testemunhas razoáveis podem ser verificadas pelo verificador
  2. Solidez: Todas as alegações apenas com testemunhas irrazoáveis não devem ser verificadas pelo verificador
  3. Conhecimento zero: O processo de verificação é conhecimento zero

Portanto, para entender o ZKP, começamos com o zk-SNARK, porque muitas aplicações blockchain atuais começam com o SNARK. Primeiro, vamos dar uma olhada no zk-SNARK.

zk-SNARK significa: Prova de conhecimento zero (zh-Snark) é o conhecimento zero argumentos sucintos não interativos do conhecimento.

  1. Conhecimento Zero: O processo de prova é conhecimento zero e não expõe informações redundantes.
  2. Sucinto: Pequeno tamanho de verificação
  3. Não interativo: processo não interativo
  4. ARGUMENTOS: O cálculo é fiável, ou seja, o provador com poder computacional limitado não pode forjar a prova, e o provador com poder computacional ilimitado pode forjar a prova.
  5. do Conhecimento: O provador não pode construir um parâmetro e uma prova sem saber informações válidas
  6. É impossível para o provador construir um conjunto de parâmetros e provas sem conhecer a testemunha (como a entrada de uma função hash ou um caminho para determinar um nó da árvore Merkel).

O princípio da prova do ZK-SNARK do Groth16 é o seguinte:

Origem: https://learnblockchain.cn/article/3220

Os passos são:

  1. Converter o problema num circuito
  2. Achatar o circuito na forma de R1CS.
  3. Converter R1CS para o formato QAP (Programas Aritméticos Quadráticos)
  4. Estabelecer uma configuração fidedigna e gerar parâmetros aleatórios, incluindo PK (chave de prova) e VK (chave de verificação)
  5. Geração de provas e verificação de zk-SNARK

No próximo artigo, vamos começar a estudar os princípios e aplicações do zk-SNARK, rever o desenvolvimento do ZK-SNARK através de vários casos e explorar a sua relação com o zk-Stark.

Isenção de responsabilidade:

  1. Este artigo foi reimpresso da [HashKey Capital]. Todos os direitos de autor pertencem ao autor original [HashKey Capital]. Se houver objeções a esta reimpressão, contacte a equipa do Gate Learn, e eles tratarão disso imediatamente.
  2. Isenção de responsabilidade: As opiniões e opiniões expressas neste artigo são exclusivamente do autor e não constituem nenhum conselho de investimento.
  3. As traduções do artigo para outras línguas são feitas pela equipa do Gate Learn. A menos que mencionado, é proibido copiar, distribuir ou plagiar os artigos traduzidos.
即刻开始交易
注册并交易即可获得
$100
和价值
$5500
理财体验金奖励!
立即注册