Zero-Knowledge Proof (ZKP) é uma técnica criptográfica proposta pela primeira vez por S. Goldwasser, S. Micali e C. Rackoff no início dos anos 80 num artigo intitulado A Complexidade do Conhecimento dos Sistemas de Prova InterativosNo artigo, foi conceptualizado como um modelo teórico para resolver o problema de verificar declarações matemáticas sem revelar a evidência. Este conceito tem atraído atenção generalizada na academia porque desafia os limites das técnicas criptográficas tradicionais e fornece novos métodos para processar informações sensíveis.
Com o tempo, ZKP evoluiu de um conceito teórico abstrato para protocolos concretos que podem ser integrados em várias aplicações. Em 2010, Groth publicou um artigo intitulado “Argumentos de conhecimento zero não interativos baseados em emparelhamento curto“, que se tornou o marco teórico para zk-SNARK (Argumento de Conhecimento Sucinto Não Interativo de Conhecimento), uma solução importante em ZKP. O progresso mais importante na aplicação da prova de conhecimento zero é o sistema de prova de conhecimento zero usado pelo Z-cash em 2015, que fornece proteção de privacidade para transações e montantes. Posteriormente, zk-SNARK combinado com contratos inteligentes, estendendo sua aplicação a uma gama mais ampla de cenários de aplicação.
A ZKP tradicional adere a três princípios:
O princípio de ZKP pode ser entendido através de um exemplo simples: Se eu precisar provar a A que tenho o número de telefone de B, não preciso revelar diretamente o número de telefone de B. Em vez disso, posso ligar diretamente para o número de telefone de B e provar que tenho o número de telefone de B depois de conseguir completar a chamada. Este processo não irá divulgar o número de telefone de B.
zk-SNARK melhora ainda mais esses princípios com as seguintes características:
No artigo de Groth, ele propôs um método de prova de conhecimento zero não interativo baseado em emparelhamentos para transformar um problema computacional em um Programa Aritmético Quadrático (QAP). Este método utiliza criptografia de curva elíptica e funções de hash para construir uma prova eficaz. Os projetos subsequentes de zk-SNARK geralmente envolvem quatro etapas.
Para ilustrar com um exemplo simples, suponha que tenha um mapa do tesouro que o pode guiar até à localização exata de um tesouro enterrado. Quer provar a alguém que conhece a localização do tesouro, mas não quer revelar o conteúdo do mapa do tesouro ou a localização real do tesouro. Se utilizar a tecnologia zk-SNARK, precisa de criar um quebra-cabeças complexo do mapa do tesouro. Escolhe uma pequena peça crucial do quebra-cabeças (uma prova) e mostra-a à outra pessoa, convencendo-a de que conhece como o quebra-cabeças inteiro, ou seja, a localização do tesouro, se encaixa sem revelar o quebra-cabeças inteiro. No entanto, para fazer isto, precisa de obter algumas marcas especiais de uma casa de impressão de confiança, que são usadas para provar a autenticidade da sua peça do quebra-cabeças.
A discussão anterior mencionou que zk-SNARK permite definir uma string de referência comum, o que significa que podem ser estabelecidas restrições no circuito em execução. Tomando a reserva da Gate.io como exemplo, define cinco restrições principais no circuito, como mostrado abaixo:
① Antes de inserir os ativos líquidos do usuário na árvore de Merkle, o nó correspondente ao ID do usuário está vazio.
② Calcular os ativos/passivos totais do utilizador com base na lista de ativos do utilizador e no preço de cada ativo. Os ativos totais devem ser superiores aos passivos totais.
③ Adicione os ativos/passivos do usuário aos ativos/passivos da troca.
④ Calcular o hash de estado do usuário usando o ID do usuário, ativos/passivos totais e lista de ativos. Inserir o estado do usuário na árvore de Merkle para obter uma nova Raiz de Merkle.
⑤ O valor de hash do nó raiz da árvore antes de o utilizador anterior criar uma operação de utilizador deve ser igual ao valor de hash após o utilizador subsequente criar uma operação de utilizador.
(A operação ① pode evitar que os dados do nó sejam falsos, a operação ② pode evitar contas com saldo negativo e a operação ⑤ pode garantir que os dados do usuário não sejam alterados antes e depois da operação.)
Isso garante a resolução do problema de saldo negativo. Os dados da exchange só precisam passar pelo circuito para realizar automaticamente verificações de restrição e obter o número do ativo. No entanto, esta solução requer certa potência de computação e condições de hardware. São necessários 15 dias para calcular a prova de ativos de 10 milhões de usuários em uma máquina de 32 núcleos com 128GB de RAM. O cálculo da Prova de Reservas pode ser paralelizado. Se houver 10 máquinas, levará apenas 1,5 dias.
Ao definir restrições relevantes, zk-SNARK pode evitar a ocorrência de problemas de valor negativo e melhor proteger a privacidade e segurança dos usuários. A Prova de Reservas da Gate.io agora pode comprovar as taxas de reserva para mais de 100 moedas, e os usuários podem visualizá-la clicando simplesmente noligação. Na próxima lição, vamos levá-lo a verificar a segurança dos seus ativos em 3 minutos.
Zero-Knowledge Proof (ZKP) é uma técnica criptográfica proposta pela primeira vez por S. Goldwasser, S. Micali e C. Rackoff no início dos anos 80 num artigo intitulado A Complexidade do Conhecimento dos Sistemas de Prova InterativosNo artigo, foi conceptualizado como um modelo teórico para resolver o problema de verificar declarações matemáticas sem revelar a evidência. Este conceito tem atraído atenção generalizada na academia porque desafia os limites das técnicas criptográficas tradicionais e fornece novos métodos para processar informações sensíveis.
Com o tempo, ZKP evoluiu de um conceito teórico abstrato para protocolos concretos que podem ser integrados em várias aplicações. Em 2010, Groth publicou um artigo intitulado “Argumentos de conhecimento zero não interativos baseados em emparelhamento curto“, que se tornou o marco teórico para zk-SNARK (Argumento de Conhecimento Sucinto Não Interativo de Conhecimento), uma solução importante em ZKP. O progresso mais importante na aplicação da prova de conhecimento zero é o sistema de prova de conhecimento zero usado pelo Z-cash em 2015, que fornece proteção de privacidade para transações e montantes. Posteriormente, zk-SNARK combinado com contratos inteligentes, estendendo sua aplicação a uma gama mais ampla de cenários de aplicação.
A ZKP tradicional adere a três princípios:
O princípio de ZKP pode ser entendido através de um exemplo simples: Se eu precisar provar a A que tenho o número de telefone de B, não preciso revelar diretamente o número de telefone de B. Em vez disso, posso ligar diretamente para o número de telefone de B e provar que tenho o número de telefone de B depois de conseguir completar a chamada. Este processo não irá divulgar o número de telefone de B.
zk-SNARK melhora ainda mais esses princípios com as seguintes características:
No artigo de Groth, ele propôs um método de prova de conhecimento zero não interativo baseado em emparelhamentos para transformar um problema computacional em um Programa Aritmético Quadrático (QAP). Este método utiliza criptografia de curva elíptica e funções de hash para construir uma prova eficaz. Os projetos subsequentes de zk-SNARK geralmente envolvem quatro etapas.
Para ilustrar com um exemplo simples, suponha que tenha um mapa do tesouro que o pode guiar até à localização exata de um tesouro enterrado. Quer provar a alguém que conhece a localização do tesouro, mas não quer revelar o conteúdo do mapa do tesouro ou a localização real do tesouro. Se utilizar a tecnologia zk-SNARK, precisa de criar um quebra-cabeças complexo do mapa do tesouro. Escolhe uma pequena peça crucial do quebra-cabeças (uma prova) e mostra-a à outra pessoa, convencendo-a de que conhece como o quebra-cabeças inteiro, ou seja, a localização do tesouro, se encaixa sem revelar o quebra-cabeças inteiro. No entanto, para fazer isto, precisa de obter algumas marcas especiais de uma casa de impressão de confiança, que são usadas para provar a autenticidade da sua peça do quebra-cabeças.
A discussão anterior mencionou que zk-SNARK permite definir uma string de referência comum, o que significa que podem ser estabelecidas restrições no circuito em execução. Tomando a reserva da Gate.io como exemplo, define cinco restrições principais no circuito, como mostrado abaixo:
① Antes de inserir os ativos líquidos do usuário na árvore de Merkle, o nó correspondente ao ID do usuário está vazio.
② Calcular os ativos/passivos totais do utilizador com base na lista de ativos do utilizador e no preço de cada ativo. Os ativos totais devem ser superiores aos passivos totais.
③ Adicione os ativos/passivos do usuário aos ativos/passivos da troca.
④ Calcular o hash de estado do usuário usando o ID do usuário, ativos/passivos totais e lista de ativos. Inserir o estado do usuário na árvore de Merkle para obter uma nova Raiz de Merkle.
⑤ O valor de hash do nó raiz da árvore antes de o utilizador anterior criar uma operação de utilizador deve ser igual ao valor de hash após o utilizador subsequente criar uma operação de utilizador.
(A operação ① pode evitar que os dados do nó sejam falsos, a operação ② pode evitar contas com saldo negativo e a operação ⑤ pode garantir que os dados do usuário não sejam alterados antes e depois da operação.)
Isso garante a resolução do problema de saldo negativo. Os dados da exchange só precisam passar pelo circuito para realizar automaticamente verificações de restrição e obter o número do ativo. No entanto, esta solução requer certa potência de computação e condições de hardware. São necessários 15 dias para calcular a prova de ativos de 10 milhões de usuários em uma máquina de 32 núcleos com 128GB de RAM. O cálculo da Prova de Reservas pode ser paralelizado. Se houver 10 máquinas, levará apenas 1,5 dias.
Ao definir restrições relevantes, zk-SNARK pode evitar a ocorrência de problemas de valor negativo e melhor proteger a privacidade e segurança dos usuários. A Prova de Reservas da Gate.io agora pode comprovar as taxas de reserva para mais de 100 moedas, e os usuários podem visualizá-la clicando simplesmente noligação. Na próxima lição, vamos levá-lo a verificar a segurança dos seus ativos em 3 minutos.