Saltar al contenido
0%

SNARKs vs. STARKs vs. SNARKs recursivos

Alchemy team headshot

Escrito por Alchemy

Publicado el 27 de mayo de 202211 min de lectura

Las pruebas de conocimiento cero son mecanismos que permiten a una parte revelar el conocimiento de cierta información a otra parte sin revelar la información en sí. También llamadas pruebas de validez, las pruebas ZK se usaron originalmente para ocultar detalles de transacciones en blockchains enfocadas en privacidad.

Pero las pruebas ZK también tienen otro caso de uso interesante: escalar blockchains de propósito general. Con las pruebas de validez, los nodos de la blockchain pueden verificar transacciones sin almacenar los detalles ni volver a ejecutar el cómputo. Esto reduce los tiempos de confirmación y aumenta el rendimiento de la red.

Debido a sus beneficios de escalabilidad, las pruebas ZK se han convertido en una infraestructura central para proyectos de escalado de blockchain, especialmente para zero-knowledge rollups. En esta guía cubrimos las principales clasificaciones de pruebas ZK usadas en blockchains: ZK-SNARKs, ZK-STARKs y ZK-SNARKs recursivas.

¿Qué es un ZK-SNARK?

ZK-SNARK es un protocolo para generar pruebas de conocimiento cero que verifican la autenticidad de información sin exponer los datos subyacentes. El acrónimo significa Zero-Knowledge Succinct Non-Interactive Argument of Knowledge.

Un protocolo ZK-SNARK involucra a dos partes: el probador (Alice) y el verificador (Bob). El probador (Alice) es la parte que hace una afirmación, mientras que el verificador (Bob) es la parte responsable de verificar la afirmación.

La información referenciada en la afirmación se llama testigo o secreto. Un probador (Alice) usa el mecanismo ZK-SNARK para producir una prueba que le muestre a un verificador (Bob) que la afirmación es verdadera... sin revelar la información referenciada.

Un ejemplo hipotético que involucra ZK-SNARKs es la autenticación de identidades de usuario. Una persona podría demostrar una afirmación ("Soy ciudadano de Estados Unidos") sin revelar información personal (por ejemplo, un pasaporte o un número de Seguro Social).

Los ZK-SNARKs se llaman así porque poseen las siguientes cualidades:

1. Zero-knowledge (conocimiento cero): Significa que el verificador no sabe nada sobre una afirmación, excepto su validez o falsedad.

2. Succinct (sucinta): La prueba es lo suficientemente pequeña como para que el verificador la verifique en un período corto de tiempo.

3. Non-interactive (no interactiva): Los SNARKs son no interactivos porque los probadores y los verificadores no necesitan intercambiar información más allá de la prueba inicial enviada. Los primeros sistemas de prueba de conocimiento cero requerían que probadores y verificadores intercambiaran múltiples mensajes para verificar afirmaciones.

4. Argument (argumento): Un SNARK es una afirmación "computacionalmente sólida" que cumple con requisitos rigurosos, lo que dificulta hacer trampa (es decir, generar pruebas falsas).

5. Knowledge (conocimiento): Las pruebas basadas en SNARK no pueden crearse sin acceso a la información subyacente o el testigo.

Diagrama de un flujo de prueba ZK-SNARK entre el probador y el verificador
Fuente: Altoros

ZK-SNARKs en blockchains

Los sistemas de cómputo distribuido, como las blockchains públicas, necesitan resolver el llamado "problema de la integridad computacional". La integridad computacional (CI) se refiere a la corrección del resultado obtenido de un cómputo específico.

En las blockchains públicas, la integridad computacional se refiere a la corrección de las transacciones ejecutadas en una red. La mayoría de las blockchains la logran haciendo que otras computadoras (nodos) vuelvan a ejecutar cada transacción.

Sin embargo, este enfoque es problemático. Obligar a cada nodo a repetir cada transacción ralentiza la red y limita la escalabilidad. Los nodos también tienen que almacenar los datos de las transacciones (de lo contrario no pueden repetir los cómputos), lo que provoca un aumento exponencial en el tamaño de la blockchain.

Pero, ¿qué pasaría si los nodos pudieran verificar la validez de un cómputo sin volver a ejecutarlo? Esto mejoraría el rendimiento de la red y eliminaría la necesidad de que los nodos almacenen datos de transacciones excesivos.

Aquí es donde entran los ZK-SNARKs.

Las pruebas de validez generadas con ZK-SNARK pueden demostrar la validez de una transacción sin revelar las entradas. Por esto, criptomonedas enfocadas en privacidad como Zcash y Monero usan SNARKs para ofuscar información sobre las transacciones.

Un SNARK también puede demostrar la corrección de un cómputo realizado fuera de la cadena sin que los nodos repitan cada paso del cómputo. Aquí es donde el ZK-SNARK se vuelve útil para escalar blockchains.

Verificar cómputos fuera de la cadena con SNARKs es un proceso complejo que empieza codificando el cómputo en una expresión matemática. Esta afirmación matemática forma la base de la prueba de validez.

El verificador luego realiza una operación sobre la prueba para comprobar su corrección. Si la prueba pasa todas las verificaciones, se considera que el cómputo subyacente es válido. Por esto los SNARKs son sucintos: el tamaño de una prueba de validez es muchas veces menor que el del cómputo que verifica.

Diagrama de una prueba de validez ZK-SNARK verificando cómputo fuera de la cadena
Fuente: Finematics

ZK-SNARKs y ZK rollups

Un rollup es una solución de escalado de Capa 2 para Ethereum que mejora el rendimiento de la blockchain de Capa 1 (L1) mediante la ejecución fuera de la cadena. Los rollups procesan transacciones en una cadena L2, agrupan múltiples transacciones fuera de la cadena en bloques y las envían a la cadena L1.

Al trasladar el cómputo fuera de la capa base, los rollups disminuyen la congestión de la red y escalan las transacciones.

Sin embargo, la cadena L1 necesita saber si las transacciones ejecutadas fuera de la cadena son válidas o no (es decir, el problema de la integridad computacional). De lo contrario, un actor malicioso podría secuestrar el rollup y enviar transacciones no válidas a la cadena principal.

Un tipo de rollup (zero-knowledge rollup) usa ZK-SNARKs para demostrar a la cadena L1 la autenticidad de las transacciones fuera de la cadena. Las pruebas SNARK pueden ser verificadas por cualquiera, lo cual le da a la cadena L1 la garantía de la validez de las transacciones.

La mayoría de los ZK rollups que usan ZK-SNARKs siguen la misma estructura:

  1. Los usuarios en la cadena L2 firman transacciones y las envían a los validadores.

  2. Los validadores comprimen las transacciones en un bloque y generan la prueba de validez correspondiente (SNARK). Esto brinda garantías criptográficas de que el nuevo estado resultó de la adición de transacciones válidas.

  3. Un contrato inteligente en la cadena L1 realiza una operación sobre la prueba de validez. Los resultados de esta operación determinan si las transacciones agrupadas son validadas y publicadas en la cadena principal.

Diagrama de un rollup ZK enviando pruebas de validez SNARK a la cadena Ethereum L1
Fuente: Simon Brown

¿Cuáles son los beneficios de los ZK-SNARKs?

Hay tres beneficios principales de usar ZK-SNARKs: alto rendimiento, tamaños pequeños de prueba de validez, y seguridad.

1. Alto rendimiento

Los ZK-SNARKs escalan el rendimiento al reducir el cómputo en la capa base de Ethereum. Con ZK-SNARKs, los rollups pueden aumentar las tasas de TPS a miles.

Un ZK-SNARK suele ser muchas veces más pequeño que los datos de transacción que verifica. Esto reduce la congestión en las blockchains base y permite tarifas de gas más bajas y transacciones más rápidas.

2. Tamaños de prueba pequeños

El tamaño pequeño de las pruebas SNARK facilita su verificación en la cadena principal. En Ethereum, esto implica tarifas de gas más bajas para verificar transacciones fuera de la cadena, reduciendo los costos de los rollups para los usuarios finales.

3. Seguridad

Los ZK rollups se consideran más seguros que otros proyectos de escalado, principalmente debido a los mecanismos de seguridad criptográfica de vanguardia usados en los ZK-SNARKs.

La prueba ZK-SNARK es computacionalmente sólida, lo que dificulta engañar a los verificadores y actuar de forma maliciosa. La no interactividad de los ZK-SNARKs también significa que cualquiera puede verificar las pruebas sin necesidad de confianza.

¿Cuáles son las desventajas de los ZK-SNARKs?

Hay tres desventajas principales de usar ZK-SNARKs: requieren una configuración confiable, son susceptibles a ataques de computación cuántica, y dependen de hardware especial.

1. Configuración confiable

Configurar el protocolo ZK-SNARK requiere la creación de un Universal Common Reference String (CRS). También descrito como parámetros públicos, el CRS permite una comunicación segura entre probadores y verificadores.

Si un actor malicioso obtuviera conocimiento de los parámetros públicos, podría generar pruebas de validez falsas. Algunos proyectos intentan resolver este problema usando computación multipartita (MPC), que involucra a distintas personas, para generar los parámetros públicos.

Sin embargo, este enfoque requiere que los usuarios confíen en la integridad de los participantes. Esto es bastante problemático, ya que el propósito de las blockchains es reducir la necesidad de confiar en autoridades.

2. Susceptibilidad a ataques de computación cuántica

ZK-SNARK usa criptografía de curva elíptica (ECC) para cifrar la información usada en la producción de pruebas de validez. La ECC es relativamente segura por ahora, pero los avances en computación cuántica podrían romper su modelo de seguridad.

3. Dependencia de hardware especial

Generar pruebas de validez con ZK-SNARKs es un proceso computacionalmente intensivo, lo que significa que los probadores deben invertir en hardware especializado. Debido a que muy pocas personas pueden comprar estas máquinas, muchos consideran que el proceso de prueba de ZK-SNARK está muy centralizado.

¿Qué proyectos usan ZK-SNARKs?

Cinco proyectos destacados que usan ZK-SNARKs son ZKSync, Loopring, Aztec, Polygon Hermez y ZKSpace.

zkSync

ZK rollup compatible con EVM que opera en Ethereum Mainnet, creado por Matter Labs. ZKSync admite contratos inteligentes, swaps de tokens, pagos y creación de NFTs.

Loopring

Proyecto de Capa 2 (L2) de Ethereum impulsado por tecnología ZK rollup basada en SNARK. Loopring también funciona como un exchange descentralizado para operar ETH y otros tokens ERC-20, a una fracción de los costos que cobran los DEX en Ethereum Mainnet.

Aztec

Red L2 de código abierto construida sobre la red de Ethereum. Aztec aprovecha los ZK-SNARKs para escalar transacciones y aumentar la privacidad financiera de los usuarios.

Polygon hermez

ZK rollup que opera sobre la blockchain de Ethereum. Polygon Hermez usa ZK-SNARKs para habilitar transferencias de tokens y pagos seguros y de bajo costo.

Zkspace

Proyecto de ZK rollup basado en ZK-SNARKs. ZKSpace ofrece a los usuarios de Ethereum tarifas de gas más bajas y transacciones más rápidas, y está compuesto por un DEX estilo AMM (ZKSwap v3), una red de pagos (ZKSquare) y un marketplace de NFTs (ZKSea).

¿Qué es un ZK-STARK?

ZK-STARK es un acrónimo de Zero-Knowledge Scalable Transparent Argument of Knowledge. Al igual que los ZK-SNARKs, los ZK-STARKs demuestran que una afirmación es válida sin revelar nada sobre la afirmación en sí.

Salvo algunas diferencias, un STARK tiene las mismas propiedades que un SNARK. Las pruebas de validez basadas en STARK se generan usando un dato, que se oculta al verificador. Un STARK también puede verificar la corrección de transacciones sin revelar las entradas.

ZK-STARKs vs. ZK-SNARKs

La principal diferencia de los ZK-STARKs proviene de sus propiedades escalables y transparentes:

El ZK-STARK se considera transparente porque puede funcionar sin una configuración confiable de un Common Reference String (CRS). En cambio, los protocolos STARK usan aleatoriedad verificable públicamente para establecer las interacciones entre probadores y verificadores.

Los ZK-STARKs son escalables porque la complejidad de la prueba y la verificación escala de forma cuasilineal en relación con la complejidad del cómputo. Con los ZK-SNARKs, la complejidad de la prueba y la verificación escala de forma lineal en relación con el cómputo subyacente.

Esto simplemente significa que los protocolos ZK-SNARK requieren más tiempo para producir y verificar pruebas que los ZK-STARKs cuando el cómputo que necesitamos verificar es más grande. Por esto los STARKs están mejor preparados para aplicaciones que manejan grandes volúmenes de transacciones.

Tabla comparativa de propiedades de ZK-STARK y ZK-SNARK
Fuente: Adam Luciano

¿Cuáles son los beneficios de los ZK-STARKs?

Hay cuatro beneficios principales de usar ZK-STARKs: no necesitan una configuración confiable, son escalables, le dan a los usuarios un rendimiento máximo, y tienen altas garantías de seguridad.

1. No necesitan una configuración confiable

Los ZK-STARKs no requieren una configuración confiable para funcionar, sino que dependen de aleatoriedad pública. Esto reduce los supuestos de confianza por parte de los usuarios y mejora la seguridad de los protocolos basados en STARK.

2. Propiedades escalables

Los STARKs pueden calcularse y verificarse más rápido a escala en comparación con los SNARKs. Más importante aún, los ZK-STARKs mantienen bajos los tiempos de prueba y verificación incluso cuando la complejidad del cómputo subyacente crece exponencialmente.

3. Rendimiento máximo

Al igual que los SNARKs, los STARKs pueden escalar blockchains al habilitar un cómputo fuera de la cadena seguro y verificable.

Una sola prueba STARK enviada a la cadena L1 puede verificar miles de transacciones realizadas fuera de la cadena principal. Por esto, varios proyectos destacados de ZK rollup usan ZK-SNARKs para demostrar la integridad del cómputo fuera de la cadena.

4. Garantías de seguridad más altas

Los ZK-STARKs usan hashes resistentes a colisiones para el cifrado en lugar de los esquemas de curva elíptica usados en los ZK-SNARKs. Esto se considera resistente a ataques de computación cuántica, lo que lo hace más seguro que las curvas elípticas usadas en los SNARKs.

¿Cuáles son las desventajas de los ZK-STARKs?

Las dos principales desventajas de usar ZK-STARKs son que usan tamaños de prueba más grandes y que hay menos adopción de la tecnología en el espacio blockchain.

1. Tamaños de prueba más grandes

Si bien los STARKs ofrecen pruebas más rápidas, la desventaja es que estas pruebas son más grandes en comparación con las pruebas basadas en SNARK. Esto hace que las pruebas STARK sean más costosas de verificar en Ethereum, ya que calcular pruebas más grandes implica tarifas de gas más altas.

2. Menor adopción

Los SNARKs fueron la primera aplicación práctica de la tecnología de conocimiento cero en blockchains, por lo cual tienen más participación de mercado que los STARKs. La mayoría de los ZK rollups usan ZK-SNARKs, y el ecosistema de desarrolladores y las herramientas para pruebas ZK basadas en SNARK son más amplios.

Aunque los ZK-STARKs también cuentan con partidarios destacados, incluida la Ethereum Foundation, tienen menor adopción. Por lo tanto, los desarrolladores pueden encontrar menos soporte y herramientas para construir proyectos ZK con STARKs.

¿Qué proyectos usan ZK-STARKs?

StarkNet

ZK rollup de propósito general que opera como una red L2 en Ethereum. StarkNet permite a las aplicaciones descentralizadas alcanzar una escalabilidad ilimitada sin comprometer la descentralización ni la seguridad de Ethereum.

dYdX

Proyecto de ZK rollup basado en Ethereum (que también funciona como un exchange descentralizado) que ofrece a los usuarios y traders de cripto operaciones de trading, préstamos y créditos rápidos y de bajo costo. dYdX usa pruebas STARK como parte de su mecanismo de seguridad, garantizando a los usuarios la seguridad de sus fondos.

Polygon miden

ZK rollup basado en STARK con compatibilidad con EVM. Aunque todavía está en producción, Polygon Miden será el primer protocolo ZK-STARK compatible con EVM al momento de su lanzamiento, y permitirá a los desarrolladores migrar aplicaciones nativas de Ethereum para aprovechar la escalabilidad en la red L2.

¿Qué es un ZK-SNARK recursivo?

Un sistema SNARK recursivo genera pruebas en paralelo para diferentes bloques de transacciones y las agrega en una sola prueba de bloque que se envía a la blockchain principal, lo que significa que un SNARK puede verificar otros SNARKs.

El rollup L2 sigue enviando una sola prueba de validez en Ethereum. Sin embargo, esta "prueba recursiva" verifica transacciones en múltiples bloques L2, todos los cuales se vuelven válidos una vez que el contrato en cadena acepta la prueba enviada.

Diagrama de un ZK-SNARK recursivo agregando múltiples pruebas de bloque en una sola prueba
Fuente: Matter Labs

¿Qué problema resuelven los ZK-SNARKs recursivos?

Los ZK-SNARKs recursivos aumentan drásticamente la cantidad de transacciones que se pueden finalizar con una prueba ZK al incluir múltiples pruebas L2 en una sola prueba enviada a la cadena L1, lo cual actualmente está limitado por el tiempo de bloque de Ethereum de 12-14 segundos.

El tiempo de bloque se refiere a cuánto tiempo toma minar un nuevo bloque de transacciones en Ethereum. Los ZK rollups solo pueden enviar una transacción en cadena (y la prueba de validez correspondiente) por bloque, lo que limita la cantidad de transacciones que pueden procesar.

¿En qué se diferencia un ZK-SNARK recursivo de un ZK-SNARK regular?

Un ZK-SNARK recursivo se diferencia de un ZK-SNARK normal en que los ZK-SNARKs recursivos pueden verificar más de un bloque de transacciones al combinar SNARKs generados para diferentes bloques L2 en una sola prueba de validez que se envía a la cadena L1.

Los ZK rollups crean una prueba SNARK para cada lote de transacciones antes de publicarla en la blockchain principal, y una sola prueba SNARK solo puede verificar un bloque de transacciones realizadas en el rollup L2.

Los ZK-SNARKs pueden verificar transacciones que ya han sido verificadas por ZK-SNARKs regulares sin usar las entradas originales. Por lo tanto, el contrato inteligente en cadena puede verificar un conjunto más grande de cómputos fuera de la cadena sin ejecutar múltiples SNARKs como entradas.

¿Qué es Plonky2?

Plonky2 es un novedoso mecanismo de prueba usado en Polygon Zero, un ZK rollup de Polygon propuesto que usa ZK-SNARKs recursivos para aumentar las transacciones.

Los SNARKs recursivos escalan el proceso de generación de pruebas al agregar varias pruebas en una prueba recursiva, y Plonky2 usa la misma técnica para reducir el tiempo que toma generar nuevas pruebas de bloque.

El mecanismo de prueba de Plonky2 genera pruebas para miles de transacciones en paralelo antes de agregarlas recursivamente en una sola prueba de bloque. Esto es más eficiente que los mecanismos de prueba tradicionales que intentan generar la prueba de bloque completa de una sola vez.

Los beneficios de este enfoque son evidentes.

Plonky2 puede generar una prueba recursiva en 0.17 segundos, lo que lo convierte en el mecanismo de prueba más rápido disponible. Además, Plonky2 produce pruebas en un dispositivo de nivel de consumidor, resolviendo los problemas de centralización de hardware que presentan los sistemas de prueba basados en SNARK regulares.

Conclusión

Las pruebas de conocimiento cero han pasado de ser tecnologías de protección de la privacidad a convertirse en la próxima frontera de la tecnología de escalado. Con la explosión de los ZK rollups, es seguro decir que los ZK-SNARKs, los ZK-STARKs y los SNARKs recursivos tendrán un papel destacado en el impulso por escalar Ethereum.

Los desarrolladores de Web3 pueden aprovechar la tecnología de conocimiento cero construyendo en StarkNet, un ZK rollup de Ethereum impulsado por STARK y respaldado por Alchemy. ¡Empieza hoy a construir aplicaciones que escalan sin concesiones!

Background gradient

Construye magia blockchain

Alchemy combina los productos y herramientas de desarrollo Web3 más potentes con recursos, comunidad y un soporte legendario.