La Prueba de Conocimiento Cero (ZKP) es una técnica criptográfica propuesta por primera vez por S. Goldwasser, S. Micali y C. Rackoff a principios de la década de 1980 en un artículo tituladoLa Complejidad del Conocimiento de los Sistemas de Prueba InteractivaEn el documento, se conceptualizó como un modelo teórico para resolver el problema de verificar declaraciones matemáticas sin revelar la evidencia. Este concepto ha atraído una atención generalizada en la academia porque desafía los límites de las técnicas criptográficas tradicionales y proporciona nuevos métodos para procesar información sensible.
Con el tiempo, ZKP ha evolucionado de un concepto teórico abstracto a protocolos concretos que pueden integrarse en varias aplicaciones. En 2010, Groth publicó un artículo titulado “ Argumentos cortos de conocimiento cero no interactivos basados en emparejamientos“, que se convirtió en el hito teórico para zk-SNARK (Argumento de Conocimiento Sincrético No Interactivo Cero Conocido), una solución importante en ZKP. El progreso 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 proporciona protección de privacidad para transacciones y cantidades. Posteriormente, zk-SNARK combinado con contratos inteligentes, extendiendo su aplicación a una gama más amplia de escenarios de aplicación.
La ZKP tradicional se adhiere a tres principios:
El principio de ZKP se puede entender a través de un ejemplo simple: Si necesito demostrarle a A que tengo el número de teléfono de B, no necesito revelar directamente el número de teléfono de B. En cambio, puedo marcar directamente el número de teléfono de B y demostrar que realmente tengo el número de teléfono de B después de comunicarme. Este proceso no filtrará el número de teléfono de B.
zk-SNARK mejora aún más estos principios con las siguientes características:
En el artículo de Groth, propuso un método de prueba de conocimiento cero no interactivo basado en emparejamientos para transformar un problema computacional en un Programa Aritmético Cuadrático (QAP). Este método utiliza criptografía de curva elíptica y funciones hash para construir una prueba efectiva. Los diseños posteriores de zk-SNARK suelen implicar cuatro pasos.
Para ilustrar con un ejemplo simple, supongamos que tienes un mapa del tesoro que puede guiarte hasta la ubicación exacta de un tesoro enterrado. Quieres demostrarle a alguien que conoces la ubicación del tesoro, pero no quieres revelar el contenido del mapa del tesoro ni la ubicación real del tesoro. Si utilizas la tecnología zk-SNARK, necesitas crear un rompecabezas complejo del mapa del tesoro. Escoges una pequeña pieza del rompecabezas crucial (una prueba) y se la muestras a la otra persona, convenciéndola de que sabes cómo encaja toda la pieza del rompecabezas, es decir, la ubicación del tesoro, sin revelar el rompecabezas completo. Sin embargo, para hacer esto, necesitas obtener algunas marcas especiales de una imprenta de confianza, que se utilizan para demostrar la autenticidad de tu pieza del rompecabezas.
La discusión anterior mencionó que zk-SNARK permite establecer una cadena de referencia común, lo que significa que se pueden establecer restricciones en el circuito en funcionamiento. Tomando la reserva de Gate.io como ejemplo, establece cinco restricciones básicas en el circuito, como se muestra a continuación:
Antes de insertar los activos netos del usuario en el árbol de Merkle, el nodo correspondiente al ID del usuario está vacío.
② Calcular los activos/pasivos totales del usuario en base a la lista de activos del usuario y el precio de cada activo. Los activos totales deben ser mayores que los pasivos totales.
③ Agregue los activos/pasivos del usuario a los activos/pasivos del intercambio.
(4) Calcule el hash de estado del usuario utilizando el ID de usuario, el total de activos/pasivos y la lista de activos. Inserte el estado del usuario en el árbol de Merkle para obtener una nueva raíz de Merkle.
⑤ El valor hash del nodo raíz del árbol antes de que el usuario anterior cree una operación de usuario debe ser igual al valor hash después de que el usuario posterior cree una operación de usuario.
(La operación ① puede evitar que los datos del nodo sean falsos, la operación ② puede evitar cuentas con saldo negativo, y la operación ⑤ puede garantizar que los datos del usuario no se modifiquen antes y después de la operación).
Esto garantiza la resolución del problema de saldo negativo. Los datos del intercambio solo necesitan pasar por el circuito para realizar automáticamente verificaciones de restricciones y obtener el número de activos. Sin embargo, esta solución requiere cierta potencia de cálculo y condiciones de hardware. Se tarda 15 días en calcular la prueba de activos de 10 millones de usuarios en una máquina de 32 núcleos con 128 GB de RAM. El cálculo de la Prueba de Reservas puede ser paralelizado. Si hay 10 máquinas, solo se tarda 1.5 días.
Al establecer restricciones relevantes, zk-SNARK puede evitar la ocurrencia de problemas de valor negativo y proteger mejor la privacidad y seguridad de los usuarios. La Prueba de Reservas de Gate.io ahora puede demostrar las ratios de reserva para más de 100 monedas, y los usuarios pueden verlo simplemente haciendo clic en el enlaceEn la próxima lección, te llevaremos a verificar la seguridad de tus activos en 3 minutos.
La Prueba de Conocimiento Cero (ZKP) es una técnica criptográfica propuesta por primera vez por S. Goldwasser, S. Micali y C. Rackoff a principios de la década de 1980 en un artículo tituladoLa Complejidad del Conocimiento de los Sistemas de Prueba InteractivaEn el documento, se conceptualizó como un modelo teórico para resolver el problema de verificar declaraciones matemáticas sin revelar la evidencia. Este concepto ha atraído una atención generalizada en la academia porque desafía los límites de las técnicas criptográficas tradicionales y proporciona nuevos métodos para procesar información sensible.
Con el tiempo, ZKP ha evolucionado de un concepto teórico abstracto a protocolos concretos que pueden integrarse en varias aplicaciones. En 2010, Groth publicó un artículo titulado “ Argumentos cortos de conocimiento cero no interactivos basados en emparejamientos“, que se convirtió en el hito teórico para zk-SNARK (Argumento de Conocimiento Sincrético No Interactivo Cero Conocido), una solución importante en ZKP. El progreso 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 proporciona protección de privacidad para transacciones y cantidades. Posteriormente, zk-SNARK combinado con contratos inteligentes, extendiendo su aplicación a una gama más amplia de escenarios de aplicación.
La ZKP tradicional se adhiere a tres principios:
El principio de ZKP se puede entender a través de un ejemplo simple: Si necesito demostrarle a A que tengo el número de teléfono de B, no necesito revelar directamente el número de teléfono de B. En cambio, puedo marcar directamente el número de teléfono de B y demostrar que realmente tengo el número de teléfono de B después de comunicarme. Este proceso no filtrará el número de teléfono de B.
zk-SNARK mejora aún más estos principios con las siguientes características:
En el artículo de Groth, propuso un método de prueba de conocimiento cero no interactivo basado en emparejamientos para transformar un problema computacional en un Programa Aritmético Cuadrático (QAP). Este método utiliza criptografía de curva elíptica y funciones hash para construir una prueba efectiva. Los diseños posteriores de zk-SNARK suelen implicar cuatro pasos.
Para ilustrar con un ejemplo simple, supongamos que tienes un mapa del tesoro que puede guiarte hasta la ubicación exacta de un tesoro enterrado. Quieres demostrarle a alguien que conoces la ubicación del tesoro, pero no quieres revelar el contenido del mapa del tesoro ni la ubicación real del tesoro. Si utilizas la tecnología zk-SNARK, necesitas crear un rompecabezas complejo del mapa del tesoro. Escoges una pequeña pieza del rompecabezas crucial (una prueba) y se la muestras a la otra persona, convenciéndola de que sabes cómo encaja toda la pieza del rompecabezas, es decir, la ubicación del tesoro, sin revelar el rompecabezas completo. Sin embargo, para hacer esto, necesitas obtener algunas marcas especiales de una imprenta de confianza, que se utilizan para demostrar la autenticidad de tu pieza del rompecabezas.
La discusión anterior mencionó que zk-SNARK permite establecer una cadena de referencia común, lo que significa que se pueden establecer restricciones en el circuito en funcionamiento. Tomando la reserva de Gate.io como ejemplo, establece cinco restricciones básicas en el circuito, como se muestra a continuación:
Antes de insertar los activos netos del usuario en el árbol de Merkle, el nodo correspondiente al ID del usuario está vacío.
② Calcular los activos/pasivos totales del usuario en base a la lista de activos del usuario y el precio de cada activo. Los activos totales deben ser mayores que los pasivos totales.
③ Agregue los activos/pasivos del usuario a los activos/pasivos del intercambio.
(4) Calcule el hash de estado del usuario utilizando el ID de usuario, el total de activos/pasivos y la lista de activos. Inserte el estado del usuario en el árbol de Merkle para obtener una nueva raíz de Merkle.
⑤ El valor hash del nodo raíz del árbol antes de que el usuario anterior cree una operación de usuario debe ser igual al valor hash después de que el usuario posterior cree una operación de usuario.
(La operación ① puede evitar que los datos del nodo sean falsos, la operación ② puede evitar cuentas con saldo negativo, y la operación ⑤ puede garantizar que los datos del usuario no se modifiquen antes y después de la operación).
Esto garantiza la resolución del problema de saldo negativo. Los datos del intercambio solo necesitan pasar por el circuito para realizar automáticamente verificaciones de restricciones y obtener el número de activos. Sin embargo, esta solución requiere cierta potencia de cálculo y condiciones de hardware. Se tarda 15 días en calcular la prueba de activos de 10 millones de usuarios en una máquina de 32 núcleos con 128 GB de RAM. El cálculo de la Prueba de Reservas puede ser paralelizado. Si hay 10 máquinas, solo se tarda 1.5 días.
Al establecer restricciones relevantes, zk-SNARK puede evitar la ocurrencia de problemas de valor negativo y proteger mejor la privacidad y seguridad de los usuarios. La Prueba de Reservas de Gate.io ahora puede demostrar las ratios de reserva para más de 100 monedas, y los usuarios pueden verlo simplemente haciendo clic en el enlaceEn la próxima lección, te llevaremos a verificar la seguridad de tus activos en 3 minutos.