Saltar al contenido
0%

Pruebas de validez (ZK) vs. pruebas de fraude

Alchemy team headshot

Escrito por Alchemy

Publicado el 19 de octubre de 20228 min de lectura

El crecimiento exponencial de Ethereum presenta dificultades para procesar y almacenar datos, especialmente al estar limitado por los límites de bloque necesarios para preservar la descentralización y la seguridad de los datos al verificar cada transacción en la blockchain.

A diferencia de las sidechains, que se ejecutan en paralelo a Ethereum pero no obtienen los beneficios de su seguridad, y de las blockchains monolíticas, que dependen de sus propios mecanismos de consenso para garantizar estados válidos, las blockchains de layer 2 usan pruebas como parte de su arquitectura.

¿Qué tipo de blockchains usan pruebas?

Las pruebas se encuentran principalmente en blockchains de layer 2 que usan Rollups para lograr escala y mayor throughput mientras aseguran que el estado de la cadena base sea correcto. Un Rollup es un tipo de solución de escalabilidad que agrupa transacciones en una blockchain separada y usa pruebas para garantizar la veracidad de las transacciones.

Existen dos tipos principales de Rollups:

  1. Optimistic Rollups: asumen que todas las transacciones son válidas y usan fraud proofs para probar transacciones falsas dentro de un plazo de 7 días
  2. Zero Knowledge (ZK) Rollups: prueban instantáneamente si las transacciones son válidas o no mediante validity proofs

Las validity proofs y las fraud proofs verifican la legitimidad de las transacciones antes de que se registren en el estado de la cadena base.

¿Qué es una validity proof?

Una validity proof, también conocida como zero knowledge (ZK) proof, es un método de verificación de transacciones que ocurre entre un prover, quien crea una prueba sobre cierta información, y un verifier, quien verifica la prueba sin que se comparta información entre ambos.

La información compartida entre un prover y un verifier se llama witness y suele ser la solución a una ecuación matemática compleja. En esencia, el prover debe demostrar que conoce el witness con precisión, y el verifier debe poder determinar de forma confiable si el prover tiene conocimiento del witness.

¿Cómo funciona una validity proof?

Las validity proofs están diseñadas para ser difíciles de vulnerar y se basan en una técnica criptográfica conocida como polynomial commitments. En los polynomial commitments, la información de cada paso de un cómputo de verificación se codifica en polinomios, y una expresión polinomial factorizada puede representar una gran cantidad de ecuaciones entre números.

Al verificar las ecuaciones polinomiales, se está verificando implícitamente los cálculos numéricos, pero el proceso de hashing de estos polinomios es complicado. Los tres esquemas principales de hashing polinomial usados para polynomial commitments son:

  1. KZG (Kate) Polynomial Commitments
  2. Bulletproofs
  3. FRIs

FRI significa "Fast Reed-Solomon Interactive Oracle Proofs of Proximity."

¿Qué blockchains usan ZK proofs?

Algunos ejemplos de blockchains que usan Zero Knowledge proofs y rollups son zkSync, StarkNet y Zcash.

Todos los ZK rollups tienen un enfoque decidido en la seguridad y la verificación de transacciones, lo que permite usarlos de forma confiable en una variedad de casos de uso. zkSync y Zcash se enfocan más en transacciones, mientras que StarkNet se ha diversificado para soportar una variedad de dapps y proyectos de DeFi, incluyendo Immutable X, un framework para NFTs seguros y desarrollo web3 para la comunidad de gaming.

¿Qué es una fraud proof?

Una fraud proof, también conocida como fault proof, es una prueba enviada por un verifier que impugna un estado de transacción. Según la implementación, la fraud proof recorre un segmento de las transacciones e intenta validarlas.

Aquí una explicación simple:

  • Si la fraud proof detecta un error, las transacciones insertadas en el batch se eliminan y el batch se revierte a un estado anterior, verificablemente correcto.
  • Si no se envían fraud proofs durante el período de disputa, se asume de forma optimista que el cambio de estado es correcto.

¿Cómo funciona una fraud proof?

Las fraud proofs funcionan comparando Merkle roots y verificando los state roots inicial y final mediante una sola ronda de cómputo (como Optimism) o cómputo multi-ronda (como Arbitrum).

La blockchain funciona sobre una estructura de datos conocida como Merkle Tree, que contiene cada transacción como una hoja del árbol, y las ramas posteriores se representan mediante hashes cada vez más complejos del árbol.

El nodo raíz, también conocido como Merkle Root, es un hash que condensa efectivamente los datos para que los usuarios no tengan que descargar constantemente la totalidad de la cadena principal.

Los datos en verde, junto con el batch representado arriba, son suficientes para verificar un post-state root. (Fuente: blog de Vitalik)
Los datos en verde, junto con el batch representado arriba, son suficientes para verificar un post-state root. (Fuente: blog de Vitalik)

Si un verifier quiere impugnar un cambio de estado de una transacción, solo necesita enviar el post-state root actual y partes específicas del Merkle tree que puedan usarse para calcular el post-state root correcto. Si ambos no coinciden, los cambios de estado de la transacción se revierten y el hash se restablece a un state root probadamente correcto.

¿Qué blockchains usan fraud proofs?

Las fraud proofs y el modelo de optimistic rollup son considerablemente más económicos y rápidos que las transacciones en la cadena principal, razón por la cual son preferidos por blockchains como Arbitrum, Optimism y Metis Andromeda.

Optimism y Arbitrum usan sus propias máquinas virtuales compatibles con EVM, diseñadas para el funcionamiento de optimistic rollups, especialmente la capacidad de agrupar transacciones y aumentar el throughput, mientras que Metis se enfoca más en la aplicabilidad de su sistema L2 y ofrece una variedad de funciones que facilitan la creación y el desarrollo de apps, DAOs y un ecosistema DeFi.

¿En qué se parecen las validity proofs y las fraud proofs?

Los ZK proofs y las fraud proofs se parecen en que ambos usan soluciones de rollup para escalar y ambos tienen múltiples implementaciones para distintos casos de uso.

1. Ambos se usan en soluciones de layer 2 basadas en rollups para aumentar la escalabilidad

Los Rollups fueron diseñados para retirar la mayor parte de la carga de la blockchain principal de Ethereum. En lugar de ejecutar transacciones en el mainnet, los rollups mueven el cómputo fuera de la cadena mientras mantienen una pequeña cantidad de datos por transacción en Ethereum. Al comprimir transacciones, los rollups permiten una mayor escalabilidad en transacciones por segundo (TPS) y menores costos promedio de gas.

Los dos tipos principales de rollups son optimistic y ZK rollups.

La característica clave de los optimistic rollups es que inicialmente asumen que todas las transacciones son válidas y permiten que se agreguen al batch. Después del envío, hay un período de disputa durante el cual las transacciones pueden ser impugnadas mediante una fraud proof.

Los Zero knowledge rollups son similares a los optimistic rollups porque también agrupan transacciones en batches para su envío, pero una diferencia principal entre ambos es que los ZK rollups usan validity proofs para validar cada transacción antes de que se registre en el rollup, sin compartir información personal.

2. Las validity proofs y las fraud proofs tienen múltiples implementaciones

Las validity proofs tienen múltiples implementaciones, incluyendo, entre otras, SNARKs y STARKs, y las fraud proofs tienen múltiples implementaciones, incluyendo rollups de una sola ronda y rollups multi-ronda.

SNARKs vs. STARKs

Dos implementaciones populares de ZK proofs son SNARKs y STARKs.

Un SNARK es un:

  • Succinct
  • Non-interactive
  • ARgument of
  • Knowledge

Los ZK SNARKs crean argumentos de conocimiento pequeños y rápidamente verificables (es decir, pruebas criptográficas computacionalmente sólidas) que no requieren información adicional más allá de la prueba misma.

De manera similar, un STARK es un:

  • Scalable
  • TRansparent
  • Argument of
  • Knowledge

La diferencia clave entre un SNARK y un STARK son las propiedades de escalabilidad y transparencia de los STARKs. Los STARKs son escalables porque sus pruebas escalan linealmente, mientras que las pruebas SNARK solo escalan de forma cuasilineal. Por esto, los STARKs se prefieren para transacciones más grandes.

Además, los SNARKs son transparentes porque pueden usar aleatoriedad verificable públicamente para establecer las interacciones entre provers y verifiers, en lugar de depender de una configuración más centralizada y de confianza.

Rollups de una sola ronda vs. multi-ronda

Los dos tipos principales de optimistic rollups son los de una sola ronda y los multi-ronda, usados por Optimism y Arbitrum respectivamente. Cuando un verifier envía una fraud proof para impugnar una transacción en Optimism, la totalidad de la prueba se ejecuta en el EVM, lo cual es un proceso relativamente rápido y sencillo, limitado únicamente por el dispute time delay (DTD) de una semana.

Por otro lado, el proceso de verificación de fraud proofs de Arbitrum depende de un proceso interactivo de disputa fuera de la cadena, en el que el asserter y el challenger van acotando repetidamente secciones de la transacción en múltiples rondas hasta encontrar una sección donde no coincidan.

¿En qué se diferencian las validity proofs y las fraud proofs?

Los ZK proofs y las fraud proofs tienen múltiples diferencias, incluyendo la cantidad de cómputo que requieren, el tiempo que tardan en validar una transacción, su seguridad y su dificultad de implementación.

1. Las validity proofs son más intensivas computacionalmente que las fraud proofs

Los ZK proofs son inherentemente complejos de validar desde el punto de vista matemático, y por lo general se requiere un cómputo intenso dada la naturaleza técnica que exige un proceso de verificación verdaderamente zero knowledge.

Las fraud proofs suelen ser más económicas por batch, alrededor de 40,000 gas, mientras que las pruebas ZK SNARK requieren 500,000 gas. Sin embargo, los ZK SNARKs son más económicos on-chain porque los optimistic rollups necesitan publicar todos los datos de vuelta a la blockchain principal para que una fraud proof pueda legitimar o refutar un resultado.

2. Las validity proofs son instantáneas, mientras que las fraud proofs tienen un dispute time delay

Una diferencia importante entre los ZK proofs y las fraud proofs es que, mientras los ZK proofs validan una transacción de inmediato, las fraud proofs tienen un Dispute Time Delay (DTD) intrínseco que ralentiza las transacciones. Solo si ningún verifier ha enviado fraud proofs respecto a un batch dado, ese batch se publicará efectivamente en Ethereum.

3. Las validity proofs son más descentralizadas y seguras en cuanto a datos

Debido a que los ZK proofs requieren una interacción mínima (por ejemplo, solo compartir una prueba con un validator), y este proceso puede realizarse de forma segura, son muy descentralizados.

Además, dado que las pruebas son zero knowledge y perfectamente precisas, las validity proofs protegen la privacidad del usuario y minimizan el riesgo de amenazas graves como ataques del 51% en la cadena L1.

Los optimistic rollups, en cambio, requieren que un verifier envíe una fraud proof, la cual puede ser interceptada o sufrir un ataque DDoS para impedir que una impugnación del estado de la transacción llegue al batch.

4. Las validity proofs son más difíciles de implementar

Mientras que los optimistic rollups, y en consecuencia las fraud proofs, pueden funcionar en cualquier EVM u Optimistic Virtual Machine (OVM), las zero knowledge proofs y los ZK rollups requieren máquinas virtuales especializadas llamadas zero knowledge Ethereum Virtual Machines (zkEVMs). Estas máquinas virtuales pueden ejecutar smart contracts de una manera compatible con el cómputo ZK y las validity proofs criptográficas.

Hasta hace muy poco, se pensaba que los zkEVMs solo eran posibles en teoría, e incluso ahora sigue siendo difícil adaptar los EVMs para soportar ZK proofs. Sin embargo, hay nuevos desarrollos en el espacio ZK que están permitiendo mejoras en el throughput y la escalabilidad de las ZK proofs.

En particular, Polygon está creando su propia tecnología de rollup, que usa ZK SNARKs recursivos para ejecutar transacciones fuera de la cadena de forma más eficiente antes de volver a la cadena principal. Las pruebas recursivas funcionan probando múltiples bloques de transacciones a la vez y luego probando también un bloque agregado.

En esencia, los SNARKs prueban otros SNARKs, dando como resultado una única transacción final que es incluso más eficiente que múltiples transacciones agrupadas. Polygon Zero, de Polygon, usa Plonky2 para crear estas pruebas recursivas, y es el esquema de prueba más rápido disponible actualmente.

Validity Proofs (STARKs or SNARKs)

Validity Proofs (STARKs or SNARKs)

Fraud Proofs

On-Chain Data

zK-Rollup

Volition

Optimistic Rollup

Off-Chain Data

Validium

Volition

Plasma

Otra opción es un Validum, un tipo de ZK Rollup en el que, en lugar de almacenar parte de los datos on-chain, todos los datos se almacenan off-chain. Un factor de riesgo con esta configuración es que los operadores de StarkEx pueden impedir el acceso o modificar los datos off-chain, pero esto se mitiga con la creación del Data Availability Committee (DAC), que ofrece almacenamiento de datos neutral y honesto.

¿Qué solución de escalabilidad de layer 2 debería usar?

Hasta hace poco, las fraud proofs y los optimistic rollups eran preferidos porque los ZK proofs eran difíciles de implementar y mucho más intensivos computacionalmente, pero una variedad de nuevos desarrollos en el espacio zero knowledge están haciendo que los ZK rollups sean más accesibles que nunca.

Con el aumento de los zkEVMs, y la garantía de transacciones más seguras, sin información y no interactivas, los ZK rollups se están consolidando como una solución de escalabilidad de layer 2 emergente y de referencia.

Background gradient

Construye magia blockchain

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