La aplicación de la tecnología zk-SNARKs en la cadena de bloques y las tendencias futuras de desarrollo.

Aplicación y desarrollo de la tecnología zk-SNARKs en el campo de la Cadena de bloques

Resumen

Este artículo proporciona una revisión sistemática de la literatura histórica y de la investigación más reciente sobre la tecnología de zk-SNARKs (ZKP) a lo largo de casi cuarenta años. Primero se introducen los conceptos básicos y el contexto histórico de ZKP, luego se analiza en profundidad la tecnología ZKP basada en circuitos, incluidos el diseño, la aplicación y los métodos de optimización de modelos como zkSNARK, Ben-Sasson, Pinocchio, Bulletproofs y Ligero. En el ámbito de los entornos de computación, este artículo presenta ZKVM y ZKEVM, explorando cómo mejoran la capacidad de procesamiento de transacciones, protegen la privacidad y aumentan la eficiencia de verificación. El artículo también presenta el mecanismo de trabajo y los métodos de optimización de los Rollups de conocimiento cero como una solución de escalado de Capa 2, así como los últimos avances en aceleración de hardware, soluciones híbridas y ZK EVM dedicados.

Por último, este artículo examina conceptos emergentes como ZKCoprocessor, ZKML, ZKThreads, ZK Sharding y ZK StateChannels, y analiza su potencial en la escalabilidad, interoperabilidad y protección de la privacidad de la cadena de bloques. Al analizar estas tecnologías más recientes y tendencias de desarrollo, este artículo proporciona una perspectiva integral para entender y aplicar la tecnología ZKP, mostrando su gran potencial para mejorar la eficiencia y seguridad de los sistemas de cadena de bloques, y ofreciendo una referencia importante para decisiones de inversión futuras.

Índice

Introducción

Uno, conocimiento básico sobre zk-SNARKs

  1. Resumen
  2. Ejemplo de zk-SNARKs

Dos, zk-SNARKs no interactivos

  1. Fondo
  2. Propuesta de NIZK
  3. Transformación Fiat-Shamir
  4. Jens Groth y su investigación
  5. Otras investigaciones

Tres, pruebas de cero conocimiento basadas en circuitos

  1. Antecedentes
  2. Conceptos básicos y características del modelo de circuito
  3. Diseño y aplicación de circuitos en zk-SNARKs
  4. Defectos y desafíos potenciales

Cuatro, modelo de zk-SNARKs

  1. Fondo
  2. Modelos de algoritmos comunes
  3. Propuesta basada en PCP lineal y el problema del logaritmo discreto
  4. Propuesta basada en la prueba de personas comunes
  5. Prueba de conocimiento cero basada en la verificación probabilística ( PCP )
  6. Clasificación basada en la fase de configuración de CPC

Cinco, una visión general y desarrollo de la máquina virtual de zk-SNARKs.

  1. Fondo
  2. Clasificación del ZKVM existente
  3. Paradigma de front-end y back-end
  4. Ventajas y desventajas del paradigma ZKVM

Seis, resumen y desarrollo de la máquina virtual de Ethereum zk-SNARKs

  1. Antecedentes
  2. El funcionamiento de ZKEVM
  3. Proceso de implementación de ZKEVM
  4. Características de ZKEVM

Siete, descripción y desarrollo de la solución de red de segunda capa de zk-SNARKs

  1. Fondo
  2. Mecanismo de trabajo de ZK Rollup
  3. Desventajas y optimización de ZK Rollup

Ocho, direcciones futuras del desarrollo de zk-SNARKs

  1. Acelerar el desarrollo del entorno de cálculo
  2. Propuesta y desarrollo de ZKML
  3. Desarrollo relacionado con la tecnología de escalado ZKP
  4. El desarrollo de la interoperabilidad de zk-SNARKs

Nueve, conclusión

Introducción

En los últimos años, el desarrollo de aplicaciones de cadena de bloques (DApps) ha sido rápido, surgiendo nuevas aplicaciones todos los días. Las plataformas de cadena de bloques soportan las actividades de millones de usuarios a diario, procesando miles de millones de transacciones. Los enormes volúmenes de datos generados por estas transacciones a menudo incluyen información personal sensible como la identidad del usuario, el monto de la transacción, la dirección de la cuenta y el saldo de la cuenta. Dada la apertura y transparencia de la cadena de bloques, estos datos almacenados son accesibles para todos, lo que ha suscitado una variedad de problemas de seguridad y privacidad.

Actualmente, hay varias tecnologías criptográficas que pueden abordar estos desafíos, incluyendo la criptografía homomórfica, las firmas en anillo, el cálculo seguro multipartito y zk-SNARKs. La criptografía homomórfica permite realizar operaciones sin descifrar el texto cifrado, lo que ayuda a proteger la seguridad del saldo de la cuenta y el monto de las transacciones, pero no puede proteger la seguridad de la dirección de la cuenta. Las firmas en anillo ofrecen una forma especial de firma digital que puede ocultar la identidad del firmante, protegiendo así la seguridad de la dirección de la cuenta, pero no puede proteger el saldo de la cuenta y el monto de las transacciones. El cálculo seguro multipartito permite distribuir tareas de cálculo entre múltiples participantes, sin que ningún participante conozca los datos de los otros, protegiendo efectivamente la seguridad del saldo de la cuenta y el monto de las transacciones, pero tampoco puede proteger la seguridad de la dirección de la cuenta. Además, la criptografía homomórfica, las firmas en anillo y el cálculo seguro multipartito no pueden usarse para verificar en un entorno de cadena de bloques si los probadores tienen suficientes fondos para realizar la transacción sin revelar el monto de la transacción, la dirección de la cuenta y el saldo de la cuenta.

zk-SNARKs es una solución más integral, este protocolo de verificación permite validar la corrección de ciertas proposiciones sin revelar ningún dato intermedio. El protocolo no requiere una infraestructura de clave pública compleja, y su implementación repetida no brinda a usuarios malintencionados la oportunidad de obtener información útil adicional. A través de ZKP, el validador puede verificar si el probador tiene una cantidad de transacciones suficiente sin revelar ningún dato privado de la transacción. El proceso de validación incluye la generación de una prueba que contiene el monto de transacción que el probador afirma tener, luego se pasa esa prueba al validador, quien realiza cálculos predefinidos sobre la prueba y produce el resultado final de los cálculos, llegando así a la conclusión de si acepta la declaración del probador. Si la declaración del probador es aceptada, significa que tienen un monto de transacción suficiente. El proceso de validación mencionado se puede registrar en la Cadena de bloques, sin ningún tipo de falsificación.

Esta característica del ZKP lo convierte en un papel central en las transacciones de la cadena de bloques y en las aplicaciones de criptomonedas, particularmente en lo que respecta a la protección de la privacidad y la escalabilidad de la red, lo que lo convierte no solo en el foco de la investigación académica, sino que es ampliamente considerado como una de las innovaciones tecnológicas más importantes desde la implementación exitosa de la tecnología de libros de contabilidad distribuidos, especialmente Bitcoin. También es una pista clave para las aplicaciones en la industria y el capital de riesgo.

Como resultado, numerosos proyectos de red basados en ZKP han surgido, como ZkSync, StarkNet, Mina, Filecoin y Aleo. Con el desarrollo de estos proyectos, la innovación en algoritmos de ZKP no ha dejado de surgir, y se informa que casi cada semana aparece un nuevo algoritmo. Además, el desarrollo de hardware relacionado con la tecnología ZKP también está avanzando rápidamente, incluidos chips optimizados específicamente para ZKP. Por ejemplo, proyectos como Ingonyama, Irreducible y Cysic han completado recaudaciones de fondos a gran escala; estos desarrollos no solo muestran el rápido progreso de la tecnología ZKP, sino que también reflejan la transición de hardware genérico a hardware especializado como GPU, FPGA y ASIC.

Estos avances indican que la tecnología de zk-SNARKs no solo es un importante avance en el campo de la criptografía, sino que también es un motor clave para lograr aplicaciones más amplias de la Cadena de bloques, especialmente en la mejora de la protección de la privacidad y la capacidad de procesamiento.

Por lo tanto, hemos decidido organizar sistemáticamente el conocimiento relevante sobre zk-SNARKs ( ZKP ) para ayudar mejor en nuestras decisiones de inversión futuras. Para ello, hemos revisado de manera integral los artículos académicos clave relacionados con ZKP ( y los hemos clasificado según su relevancia y número de citas ); al mismo tiempo, también hemos analizado en detalle la información y los libros blancos de los proyectos líderes en este campo ( y los hemos clasificado según su tamaño de financiamiento ). Esta recopilación y análisis integral de información proporciona una base sólida para la redacción de este artículo.

Uno, conocimientos básicos sobre zk-SNARKs

1. Resumen

En 1985, los académicos Goldwasser, Micali y Rackoff presentaron por primera vez la prueba de cero conocimiento en su artículo "La complejidad del conocimiento de los sistemas de prueba interactivos", donde definieron conceptos que influyeron en la investigación académica posterior, como la prueba de cero conocimiento ( Zero-Knowledge Proof, ZKP ) y el conocimiento interactivo ( Interactive Zero-Knowledge, IZK ). Este artículo es fundamental para la prueba de cero conocimiento y define la noción de que el conocimiento es "la salida de un cálculo no factible" ( unfeasible computation ), lo que significa que el conocimiento debe ser una salida y ser un cálculo no factible, lo que implica que no puede ser una función simple, sino que debe ser una función compleja. Un cálculo no factible generalmente puede entenderse como un problema NP, es decir, un problema cuya solución puede ser verificada en tiempo polinómico, lo que significa que el tiempo de ejecución del algoritmo puede expresarse como una función polinómica del tamaño de la entrada. Este es un estándar importante en la ciencia de la computación para medir la eficiencia y viabilidad de los algoritmos. Debido a la complejidad del proceso de resolución de problemas NP, se considera un cálculo no factible; sin embargo, su proceso de verificación es relativamente simple, por lo que es muy adecuado para la verificación de pruebas de cero conocimiento.

Un ejemplo clásico de un problema NP es el problema del vendedor viajero, en el que se busca encontrar la ruta más corta que visite una serie de ciudades y regrese al punto de partida. Aunque encontrar la ruta más corta puede ser difícil, dado un camino, verificar si esa ruta es la más corta es relativamente fácil. Esto se debe a que la distancia total de un camino específico se puede verificar en tiempo polinómico.

Goldwasser y otros introdujeron en su artículo el concepto de "complejidad del conocimiento" ( knowledge complexity ), utilizado para cuantificar la cantidad de conocimiento que el probador filtra al verificador en sistemas de prueba interactivos. También propusieron los sistemas de prueba interactivos ( Interactive Proof Systems, IPS ), donde el probador ( Prover ) y el verificador ( Verifier ) demuestran la veracidad de una declaración a través de múltiples interacciones.

En resumen, la definición de zk-SNARKs resumida por Goldwasser y otros es un tipo especial de prueba interactiva, en la que el verificador no obtiene ninguna información adicional más allá del valor de verdad de la declaración durante el proceso de verificación; y se proponen tres características básicas que incluyen:

1.Completitud(completeness): Si la prueba es verdadera, el probador honesto puede convencer al validador honesto de este hecho;

  1. Fiabilidad ( solidez ): Si el probador no conoce el contenido de la afirmación, solo puede engañar al verificador con una probabilidad insignificante;

3.zk-SNARKs(zero-knowledge): Al completar el proceso de prueba, el verificador solo obtiene la información de "el probador posee este conocimiento", sin poder obtener ningún contenido adicional.

2.ejemplo de zk-SNARKs

Para entender mejor los zk-SNARKs y sus propiedades, a continuación se muestra un ejemplo de cómo verificar si un probador posee cierta información privada. Este ejemplo se divide en tres etapas: configuración, desafío y respuesta.

Primer paso: configurar (Setup)

En este paso, el objetivo del probador es crear una prueba que demuestre que conoce un número secreto s, pero sin mostrar directamente s. Sea el número secreto s=5;

Elija dos grandes números primos p y q, y calcule su producto n. Sea el número primo p=11, q=13, el n obtenido es 143;

Calcule v=s^2 mod n, aquí, v se envía al verificador como parte de la prueba, pero no es suficiente para que el verificador o cualquier observador infiera s. v=5^2 mod 143=25;

Seleccione un entero aleatorio r, calcule x=r^2 mod n y envíelo al verificador. Este valor x se utiliza para el proceso de verificación posterior, pero tampoco expone s. Suponga que el entero aleatorio r=7, el valor calculado es x=49.

Segundo paso: desafiar (Challenge)

El validador selecciona aleatoriamente un bit a( que puede ser 0 o 1), y luego lo envía al probador. Este "desafío" determina los pasos que el probador debe seguir a continuación.

Tercer paso: respuesta (Response)

Según el valor a emitido por el validador, el probador responde:

Si a=0, el probador envía g=r( donde r es el número que eligió aleatoriamente anteriormente ).

Si a=1, el probador calcula g=rs mod n y lo envía. Supongamos que el bit aleatorio enviado por el validador a=1, según el valor de a, el probador calcula g=75 mod 143=35;

Finalmente, el validador verifica si x es igual a g^2/v^a mod n en función de g recibido. Si la igualdad se cumple, el validador acepta esta prueba. Cuando a=0, el validador calcula g^2 mod n, verificando a la derecha x=49; cuando a=1, el validador calcula g^2/v mod n=35^2/25 mod 143=49, verificando a la derecha x=49.

Aquí, vemos que el x calculado por el validador indica que el probador ha pasado exitosamente el proceso de verificación, al mismo tiempo que no ha revelado su número secreto s. Aquí, dado que a solo puede tomar 0 o 1, hay solo dos posibilidades; la probabilidad de que el probador pase la verificación por suerte es (1/2)( cuando a toma 0. Pero el validador luego desafía al probador n veces, el probador cambia constantemente los números relevantes, los presenta al validador, y siempre logra pasar el proceso de verificación, de tal manera que la probabilidad de que el probador pase la verificación por suerte )1/2(^n) tiende a 0(, lo que prueba que el probador efectivamente conoce un número secreto s. Este ejemplo demuestra la integridad, confiabilidad y propiedad de conocimiento cero del sistema de prueba de conocimiento cero.

) Dos, zk-SNARKs no interactivos

1. Contexto

zk-SNARKs###ZKP( en el concepto tradicional generalmente es una forma de protocolo interactivo y en línea; por ejemplo, el protocolo Sigma generalmente requiere de tres a cinco rondas de interacción para completar la autenticación. Sin embargo, en escenarios como transacciones instantáneas o votaciones, a menudo no hay oportunidad para múltiples interacciones, especialmente en la aplicación de la tecnología de Cadena de bloques, donde la función de verificación fuera de línea es particularmente importante.

)# 2. Propuesta de NIZK

En 1988, Blum, Feldman y Micali propusieron por primera vez el concepto de prueba no interactiva zk-SNARKs ### NIZK (, demostrando que era posible realizarlo sin necesidad de múltiples interacciones.

ZK4.68%
Ver originales
Esta página puede contener contenido de terceros, que se proporciona únicamente con fines informativos (sin garantías ni declaraciones) y no debe considerarse como un respaldo por parte de Gate a las opiniones expresadas ni como asesoramiento financiero o profesional. Consulte el Descargo de responsabilidad para obtener más detalles.
  • Recompensa
  • 2
  • Compartir
Comentar
0/400
GweiTooHighvip
· 08-04 10:36
También es que el código está cantando y la billetera está copiando.
Ver originalesResponder0
GasSavingMastervip
· 08-04 10:32
zk tan popular que siempre está corriendo sin poder ganar ese circuito
Ver originalesResponder0
  • Anclado
Opere con criptomonedas en cualquier momento y lugar
qrCode
Escanee para descargar la aplicación Gate
Comunidad
Español
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)