Una guía para principiantes sobre pruebas de conocimiento cero: historial de desarrollo, aplicaciones y principios básicos

PrincipianteJan 06, 2024
Este artículo presenta sistemáticamente la historia del desarrollo y los principios básicos de las pruebas de conocimiento cero.
Una guía para principiantes sobre pruebas de conocimiento cero: historial de desarrollo, aplicaciones y principios básicos

La tasa de crecimiento actual de los proyectos a prueba de conocimiento cero (ZKP) en la industria blockchain es asombrosa, especialmente el aumento de las aplicaciones ZKP en los dos niveles de expansión y protección de la privacidad, lo que nos ha expuesto a una variedad de proyectos a prueba de conocimiento cero. Debido a la naturaleza extremadamente matemática de ZKP, es mucho más difícil para los entusiastas del cifrado comprender ZK en profundidad. Por lo tanto, también esperamos resolver algunos cambios en la teoría y aplicación de ZKP desde el principio, y explorar el impacto y el valor en la industria de la criptografía con los lectores, aprendiendo juntos a través de varios informes, que también sirven como un resumen de los pensamientos de HashKey. Equipo de investigación de capitales. Este artículo es el primero de una serie y presenta principalmente el historial de desarrollo, las aplicaciones y algunos principios básicos de ZKP.

1. La historia de las pruebas de conocimiento cero.

El moderno sistema de prueba de conocimiento cero se originó a partir del artículo publicado conjuntamente por Goldwasser, Micali y Rackoff: The Knowledge Complexity of Interactive Proof Systems (GMR85), que fue propuesto en 1985 y publicado en 1989. Este artículo explica principalmente cuánto conocimiento se debe intercambiar después de K rondas de interacciones en un sistema interactivo para demostrar que una afirmación es correcta. Si el conocimiento intercambiado puede reducirse a cero, se denomina prueba de conocimiento cero. Se supone que el probador tiene recursos ilimitados y el verificador solo tiene recursos limitados. El problema con los sistemas interactivos es que la prueba no es completamente demostrable matemáticamente, pero sí correcta en un sentido probabilístico, aunque la probabilidad es muy pequeña (1/2^n).

Por lo tanto, el sistema interactivo no es perfecto y sólo tiene una integridad aproximada. El sistema de sistema no interactivo (NP) nacido sobre esta base es completo y se convierte en la elección perfecta para el sistema de prueba de conocimiento cero.

Los primeros sistemas de prueba de conocimiento cero carecían de eficiencia y usabilidad, por lo que siempre se mantuvieron en el nivel teórico. No fue hasta los últimos 10 años que comenzaron a florecer. A medida que la criptografía se hizo prominente en el mundo de las criptomonedas, las pruebas de conocimiento cero pasaron a primer plano y se convirtieron en una dirección crucial. En particular, desarrollar un protocolo de prueba general, no interactivo y sin conocimiento con un tamaño de prueba limitado es una de las direcciones de exploración más críticas.

Básicamente, la prueba de conocimiento cero es un equilibrio entre la velocidad de la prueba, la velocidad de la verificación y el tamaño de la prueba. El protocolo ideal es una prueba rápida, una verificación rápida y un tamaño de prueba pequeño.

El avance más importante en la prueba de conocimiento cero es el artículo de Groth de 2010 Argumentos de conocimiento cero no interactivos basados en pares cortos, que también es el pionero teórico del grupo más importante de zk-SNARK en ZKP.

El avance más importante en la aplicación de la prueba de conocimiento cero es el sistema de prueba de conocimiento cero utilizado por Z-cash en 2015, que protegía la privacidad de las transacciones y los montos. Más tarde, se convirtió en una combinación de zk-SNARK y contratos inteligentes, y zk-SNARK entró en escenarios de aplicaciones más amplios.

Algunos logros académicos importantes durante este período incluyen:

  1. Pinocho (PGHR13) en 2013: Pinocho: Computación verificable casi práctica, que comprime el tiempo de prueba y verificación al alcance aplicable, es también el protocolo básico utilizado por Zcash.
  2. Groth16 en 2016: Sobre el tamaño de los argumentos no interactivos basados en emparejamiento, que simplifica el tamaño de la prueba y mejora la eficiencia de la verificación, es actualmente el algoritmo básico ZK más utilizado.
  3. Bulletproofs (BBBPWM17) Bulletproofs: pruebas breves para transacciones confidenciales y más en 2017 propuso el algoritmo Bulletproof, una prueba de conocimiento cero muy breve y no interactiva que no requiere una configuración confiable. Se aplicará a Monero 6 meses después y es muy rápido. La combinación de teoría y aplicación.
  4. En 2018, zk-STARKs (BBHR18), integridad computacional escalable, transparente y segura poscuántica, propuso un protocolo de algoritmo ZK-STARK que no requiere configuraciones confiables. Esta es otra dirección llamativa del desarrollo de ZK en la actualidad, y también se basa en Sobre esta base nació StarkWare, el proyecto más importante de ZK.

Otros desarrollos, incluidos PLONK, Halo2, etc., también son avances extremadamente importantes y también han realizado algunas mejoras en zk-SNARK.

2. Breve descripción de la aplicación de la prueba de conocimiento cero.

Las dos aplicaciones más extendidas de las pruebas de conocimiento cero son la protección de la privacidad y la expansión de la capacidad. En los primeros días, con el lanzamiento de transacciones de privacidad y varios proyectos conocidos como Zcash y Monero, las transacciones de privacidad alguna vez se convirtieron en una categoría muy importante. Sin embargo, debido a que la necesidad de transacciones de privacidad no era tan importante como esperaba la industria, este tipo de proyectos representativos comenzaron a desacelerarse. Ingrese lentamente a los campamentos de segundo y tercer nivel (no se retire del escenario de la historia). A nivel de aplicaciones, la necesidad de expansión ha aumentado hasta el punto en que Ethereum 2.0 (que ha pasado a llamarse capa de consenso) se ha transformado en una ruta centrada en acumulaciones en 2020. La serie ZK ha vuelto oficialmente a la atención de la industria y se ha convertido en el centro de atención.

Transacciones de privacidad: hay muchos proyectos que han implementado transacciones de privacidad, incluidos Zcash usando SNARK, Tornado, Monero usando Bulletproof y Dash. Dash no utiliza ZKP en sentido estricto, sino un sistema de mezcla de divisas simple y tosco que sólo puede ocultar la dirección pero no la cantidad. No lo mencionaré aquí.

Los pasos de la transacción zk-SNARKs aplicados por Zcash son los siguientes:

Fuente: Desmitificando el papel de zk-SNARK en Zcash

  1. La fase de configuración del sistema genera la clave de prueba (polinomio de prueba de cifrado) y la clave de verificación, utilizando la función KeyGen
  2. El método de cifrado ECIES de fase CPA (esquema de cifrado integrado de curva elíptica) se utiliza para generar claves públicas y privadas.
  3. Etapa de acuñación de monedas, la cantidad de nuevas monedas generadas. Megafonía y compromiso monetario
  4. En la etapa de vertido, se genera un certificado zk-SNARK y se agrega al libro de transacciones de vertido.
  5. En la fase de Verificación, el verificador verifica si los volúmenes de transacciones de Mint y Pour son correctos.
  6. En la etapa de Recepción, el receptor recibe monedas. Si desea utilizar las monedas recibidas, continúe llamando a Pouring para formar la verificación zk-SNARK, repita los pasos 4 a 6 anteriores para completar la transacción.

Zcash todavía tiene limitaciones en el uso de conocimiento cero, es decir, se basa en UTXO, por lo que parte de la información de la transacción solo está protegida, no realmente encubierta. Debido a que es una red separada basada en el diseño de Bitcoin, es difícil expandirla (combinarla con otras aplicaciones). La tasa de uso real de protección (es decir, transacciones privadas) es inferior al 10%, lo que demuestra que las transacciones privadas no se han expandido con éxito. (desde 2202)

El único grupo de mezcla grande utilizado por Tornado es más versátil y se basa en una red "probada y comprobada" como Ethereum. Torndao es esencialmente un grupo de mezcla de divisas que utiliza zk-SNARK, y la configuración de confianza se basa en el documento Groth 16. Las funciones disponibles con Tornado Cash incluyen:

  1. Sólo se pueden retirar las monedas depositadas.
  2. No se pueden retirar monedas dos veces.
  3. El proceso de prueba está ligado a la notificación de nulidad de la moneda (Nullifier). El hash de la misma prueba pero diferente Nulificador no permitirá el retiro de monedas.
  4. La seguridad es de 126 bits y no se degradará debido a la composición.

Vitalik mencionó que, en comparación con la expansión, la privacidad es relativamente fácil de implementar. Si se pueden establecer algunos protocolos de expansión, la privacidad básicamente no será un problema.

Expansión: La expansión de ZK se puede realizar en la red de primer nivel, como Mina, o en la red de segundo nivel, es decir, zk-roll up. La idea de la acumulación de ZK puede haberse originado en la publicación de Vitalik en 2018, Escalado en cadena a potencialmente ~500 tx/seg mediante validación de tx masiva.

ZK-rollup tiene dos tipos de roles, uno es Secuenciador y el otro es Agregador. El secuenciador es responsable de empaquetar las transacciones y el agregador es responsable de fusionar una gran cantidad de transacciones, crear un paquete acumulativo y formar una prueba SNARK (también puede ser una prueba de conocimiento cero basada en otros algoritmos). Esta prueba se comparará con el estado anterior de Layer1 y luego actualizará el árbol Ethereum Merkle y calculará un nuevo árbol de estado.

Fuente: Polígono

Ventajas y desventajas del resumen ZK:

  1. Ventajas: bajo costo, a diferencia del OP que será atacado económicamente, no es necesario retrasar las transacciones, se puede proteger la privacidad y la finalidad se puede lograr rápidamente
  2. Desventajas: formar la prueba ZK requiere una gran cantidad de cálculos, problemas de seguridad (SNARK requiere una configuración confiable), no es resistente a ataques cuánticos (SNARK, STARK pueden), el orden de las transacciones puede cambiarse

Fuente: investigación de Ethereum

Según la disponibilidad de datos y los métodos de prueba, Starkware tiene un diagrama de clasificación clásico para L2 (la capa de disponibilidad de datos de Volition se puede seleccionar dentro o fuera de la cadena):

Fuente: Starkware

Los proyectos acumulativos de ZK más competitivos actualmente en el mercado incluyen: StarkNet de Starkware, zkSync de Matterlabs y Aztec connect de Aztec, Hermez y Miden de Polygon, Loopring, Scroll, etc.

Básicamente, la ruta técnica pasa por la elección de SNARK (y sus versiones mejoradas) y STARK, así como el soporte para EVM (incluida la compatibilidad o equivalencia).

  1. Aztec ha desarrollado un protocolo SNARK generalizado: el protocolo Plonk. El Aztec3 en ejecución puede admitir EVM, pero la privacidad tiene prioridad sobre la compatibilidad con EVM.
  2. Starnet utiliza zk-STARK, un zkp que no requiere configuraciones confiables, pero actualmente no es compatible con EVM y tiene su propio compilador y lenguaje de desarrollo.
  3. zkSync también usa plonk y es compatible con EVM. zkSync 2.0 es compatible con EVM y tiene su propio zkEVM
  4. Scroll, un paquete acumulativo de ZK compatible con EVM, el equipo también es un contribuyente importante al proyecto zkEVM de la Fundación Ethereum.

Analice brevemente los problemas de compatibilidad de EVM:

La compatibilidad entre el sistema ZK y EVM siempre ha sido un dolor de cabeza y la mayoría de los proyectos elegirán entre los dos. Aquellos que enfatizan ZK pueden construir una máquina virtual en su propio sistema y tener su propio lenguaje y compilador ZK, pero esto hará que sea más difícil de aprender para los desarrolladores y, debido a que básicamente no es de código abierto, se convertirá en una caja negra. . En términos generales, la industria tiene actualmente dos opciones. Uno es ser totalmente compatible con los códigos de operación de Solidity y el otro es diseñar una nueva máquina virtual que sea compatible con ZK y con Solidity. La industria no esperaba una integración tan rápida al principio, pero la rápida iteración de la tecnología en los últimos uno o dos años ha llevado la compatibilidad con EVM a un nuevo nivel, y los desarrolladores pueden lograr un cierto grado de migración fluida (es decir, el principal Ethereum). cadena a ZK rollup) es un desarrollo emocionante, que afectará la ecología de desarrollo y el panorama competitivo de ZK. Discutiremos este tema en detalle en informes posteriores.

3. Principios básicos de implementación de ZK SNARK

Goldwasser, Micali y Rackoff propusieron que las pruebas de conocimiento cero tienen tres propiedades:

  1. Integridad: el verificador puede verificar cada declaración con testigos razonables.
  2. Solidez: el verificador no debe verificar cada reclamo con solo testigos poco razonables.
  3. Conocimiento cero: el proceso de verificación es conocimiento cero

Entonces, para comprender ZKP, comenzamos con zk-SNARK, porque muchas aplicaciones blockchain actuales comienzan con SNARK. Primero, echemos un vistazo a zk-SNARK.

zk-SNARK significa: La prueba de conocimiento cero (zh-SNARK) es un argumento de conocimiento sucinto y no interactivo de conocimiento cero.

  1. Conocimiento cero: el proceso de prueba es conocimiento cero y no expone información redundante.
  2. Sucinto: tamaño de verificación pequeño
  3. No interactivo: proceso no interactivo
  4. Argumentos: El cálculo es confiable, es decir, el probador con poder de cómputo limitado no puede falsificar la prueba, y el probador con poder de cómputo ilimitado puede falsificar la prueba.
  5. del Conocimiento: El demostrador no puede construir un parámetro y una prueba sin conocer información válida.
  6. Es imposible que el probador construya un conjunto de parámetros y pruebas sin conocer el testigo (como la entrada de una función hash o una ruta para determinar un nodo del árbol Merkle).

El principio de prueba del zk-SNARK de Groth16 es el siguiente:

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

Los pasos son:

  1. Convertir el problema en un circuito.
  2. Aplana el circuito en forma de R1CS.
  3. Convierta R1CS al formato QAP (Programas de aritmética cuadrática)
  4. Establezca una configuración confiable y genere parámetros aleatorios, incluidos PK (clave de prueba) y VK (clave de verificación)
  5. Generación de pruebas y verificación de zk-SNARK.

En el próximo artículo, comenzaremos a estudiar los principios y aplicaciones de zk-SNARK, revisaremos el desarrollo de ZK-SNARK a través de varios casos y exploraremos su relación con zk-STARK.

Descargo de responsabilidad:

  1. Este artículo está reimpreso de [HashKey Capital]. Todos los derechos de autor pertenecen al autor original [HashKey Capital]. Si hay objeciones a esta reimpresión, comuníquese con el equipo de Gate Learn y ellos lo manejarán de inmediato.
  2. Descargo de responsabilidad: los puntos de vista y opiniones expresados en este artículo son únicamente los del autor y no constituyen ningún consejo de inversión.
  3. Las traducciones del artículo a otros idiomas están a cargo del equipo de Gate Learn. A menos que se mencione, está prohibido copiar, distribuir o plagiar los artículos traducidos.
Comece agora
Registe-se e ganhe um cupão de
100 USD
!
Criar conta