Comprensión de los tipos ZK-EVM
Desmentir las palabras de moda de ZK-EVM de equivalente a Ethereum, equivalente a EVM y tipos 1 a 4
22 DE SEPTIEMBRE DE 2023
Artículo de Lisa Akselrod | Editado por Hiro Kennelly y trewkat | Arte de portada de Camaleón
Hace aproximadamente un año, una ola de ZK-EVM anunció el próximo lanzamiento de redes de prueba. Estas iniciativas despertaron la curiosidad dentro de la comunidad Ethereum, generando preguntas sobre los matices detrás de términos como equivalencia de Ethereum y equivalencia de EVM.
Para crear claridad, Vitalik escribió un artículo fundamental titulado " Los diferentes tipos de ZK-EVM ", que clasifica varios ZK-EVM en cuatro tipos y explica sus distinciones.
La idea central es la siguiente: el tipo 1 (por ejemplo, Taiko ) es exactamente equivalente a Ethereum, mientras que el tipo 4 (por ejemplo, zkSync ) sobresale en la generación eficiente de pruebas. Todos los demás tipos, Tipo 2, Tipo 2.5 y Tipo 3, se encuentran entre estos dos extremos (por ejemplo, Polygon zkEVM , Scroll , Linea ).
La mayoría de los ZK-EVM comenzaron inicialmente como Tipo 3 o Tipo 2.5, y transmitieron algunas intenciones de avanzar hacia el Tipo 1 o el Tipo 2, aunque estos proyectos no proporcionaron plazos ni compromisos específicos.
Este artículo se centra principalmente en las diferencias entre el Tipo 1 y el Tipo 2/2.5 y describe las posibles consecuencias de romper la equivalencia de Ethereum. También tocaremos brevemente los otros tipos.
El objetivo principal de ZK-EVM es escalar Ethereum , para mejorar el rendimiento de Ethereum y al mismo tiempo conservar sus otros atributos (seguridad, experiencia de desarrollador, etc.). En un escenario ideal, ZK-EVM:
Demostrar la ejecución de código de bytes nativo no modificado de acuerdo con la especificación de Ethereum VM como se especifica en el documento amarillo (que cubre el 100% de los códigos de operación de Ethereum ).
Genere pruebas rápidamente a bajo costo.
Permitir la reutilización del 100% de las herramientas e infraestructura desarrolladas para Ethereum.
Permitir la redistribución de cualquier dApp de Ethereum "tal cual" en ZK-EVM ("tal cual", significa que no se necesitan cambios, sin concesiones).
Hoy, la comunicación con el ecosistema offchain es cada día más complicado y difícil, centralizada y con una dirección mutable. Push es el sistema de conexión del mundo web3 con tu día a día. Crea tus canales, personaliza tus notificaciones y encripta tus conversaciones en audio y video con Push Chat.
Distinciones entre los tipos ZK-EVM
En el dominio ZK-EVM, las distinciones surgen de los niveles de equivalencia de Ethereum/EVM, la influencia de elementos hostiles a ZK en los costos y la velocidad de generación de pruebas y la complejidad de la implementación del circuito (como la construcción de VM o árboles de estado).
Analicemos estas diferencias, centrándonos específicamente en separar el Tipo 1 del Tipo 2/2.5. También abordaremos los casos de uso más relevantes para cada tipo.
Al comparar los distintos tipos, se utiliza comúnmente el siguiente diagrama:
Esta tabla puede parecer críptica para aquellos que no trabajan a tiempo completo en el espacio ZK-EVM, así que echemos un vistazo más de cerca en un lenguaje sencillo.
Este gráfico aporta más claridad sobre cuáles son las consecuencias prácticas para cada tipo, pero aún puede ser un poco críptico. ¡Conectemos los puntos explicando cada tipo por separado y exploremos el panorama ZK-EVM en su totalidad!
Tipo 1: equivalente a Ethereum
"Los ZK-EVM tipo 1 son lo que finalmente necesitamos para hacer que la capa 1 de Ethereum sea más escalable" - Vitalik Buterin
El tipo 1 no denota cambios en ninguna parte del sistema Ethereum para facilitar la generación de pruebas. Ningún cambio en Ethereum significa seguridad sin concesiones, ya que la mayoría de las primitivas criptográficas (por ejemplo, funciones hash), la infraestructura del desarrollador (por ejemplo, el depurador) o la infraestructura de la cadena (por ejemplo, los clientes de ejecución) han sido probadas durante más de 9 años.
Un ZK-EVM Tipo 1 no reemplaza nada: Hashes, árboles de estado, árboles de transacciones, precompilaciones o cualquier otra lógica de consenso. Todo es exactamente como está en el EVM de Mainnet.
El tipo 1 es el único tipo capaz de verificar la propia cadena Ethereum, desde bloques completos hasta la ejecución de transacciones, contratos inteligentes y lógica de cuentas.
Tipo 2: equivalente a EVM
El tipo 2 elimina algunas piezas no compatibles con ZK para acelerar la generación de pruebas y facilitar el desarrollo de circuitos. Sin embargo, como consecuencia de esto último, podría complicar más el desarrollo de otras partes del paquete acumulativo ZK (por ejemplo, software de nodo). Estas complicaciones pueden surgir debido a las mejores prácticas establecidas y herramientas de prueba que podrían ser incompatibles con los cambios implementados (por ejemplo, cambio de árbol de estado).
Nota: El equivalente de Ethereum y el equivalente de EVM no son lo mismo. Mientras que el equivalente de Ethereum significa que no se cambiaron partes de Ethereum, es decir, una compatibilidad perfecta con todas las dApps de Ethereum, el equivalente de EVM permite cambiar las estructuras de datos (por ejemplo, la estructura de bloques o el árbol de estado).
Aunque estos ajustes pueden parecer menores, afectan la compatibilidad de Ethereum. La alteración de las estructuras de datos podría hacer que las dApps de Ethereum sean incompatibles con un ZK-EVM Tipo 2, particularmente al verificar las pruebas de Merkle de bloques históricos de Ethereum para reclamos sobre transacciones, recibos o estados pasados (como se ve en puentes, por ejemplo).
Eliminación de elementos no compatibles con ZK
Las modificaciones realizadas en Ethereum tienen como objetivo agilizar el desarrollo y aumentar la velocidad de generación de pruebas. El objetivo es recortar partes de Ethereum que dependen de criptografía no compatible con ZK. En términos más técnicos, son aquellos que exigen numerosas puertas (operaciones de suma y multiplicación) debido a campos no nativos (por ejemplo, funciones hash); una gran cantidad de multiplicaciones multiescalares y/o FFT ; o simplemente una gran cantidad de operaciones requeridas.
Ejemplos específicos de elementos hostiles a ZK que el tipo 2 ZK-EVM podría modificar
Función hash : mientras que Ethereum emplea la función hash Keccak, muchos ZK-EVM utilizan la función hash Poseidon , que requiere muchas menos puertas.
Por ejemplo, estimemos cuántas funciones hash de cada tipo se pueden calcular por segundo (es decir, comparación de la velocidad de generación de pruebas).
La función hash Poseidon tiene una importante ventaja de velocidad en la generación de pruebas.
Sin embargo, es importante señalar que las primitivas de criptografía más nuevas son menos preferidas que las establecidas y respaldadas por una amplia comunidad de todas las industrias. Si bien Poseidón puede ofrecer velocidad, la naturaleza probada en batalla de Keccak lo hace más robusto y seguro, dada su adopción generalizada.
Por eso, Keccak, a pesar de ser más antiguo y ser un estándar adoptado por una comunidad más amplia (también en otras industrias, por ejemplo para sensores en sistemas de seguridad o dispositivos inteligentes), puede considerarse más probado en batalla y, por lo tanto, más robusto y seguro que Poseidon, un Nueva función hash creada y utilizada dentro de la comunidad ZK.
Árbol de estado para almacenamiento de datos : Por ejemplo, mientras Ethereum emplea Merkle Patricia Trees (usando hash Keccak), algunos ZK-EVM tipo 2 optan por Sparse Merkle Trees (usando hash Poseidon). Cambiar el árbol de estados puede provocar algunas incompatibilidades. Por ejemplo, el árbol Ethereum Merkle tiene diferentes tipos de nodos y codifica los datos usando RLP , lo cual es algo difícil de hacer en ZK.
Estructura de bloques: Los bloques contienen mucha información. Sin embargo, cuando exploramos L2, solo nos importa la ejecución_payload_header (es decir, el hash de bloque). En el siguiente gráfico, se muestra la estructura de todos los datos contenidos en el ejecutable_payload_header (hash de bloque).
Cambiar incluso uno de estos componentes rompe la equivalencia de Ethereum
Tipo 2.5 ZK-EVM (equivalente a EVM, con consideraciones de costo de gas)
Un ZK-EVM Tipo 2.5 aumenta el costo del gas de operaciones específicas en el EVM que son difíciles de probar con la tecnología ZK.
Dado el límite de gas por bloque de Ethereum (30 millones de gas), el aumento del costo del gas por código de operación genera menos códigos de operación por bloque. Como resultado, se pueden incluir códigos de operación menos complejos en un bloque. Los códigos de operación menos complejos hacen que su circuito sea más pequeño y la prueba se genera más rápido.
El gas es una medida de trabajo.
Los códigos de operación tienen un precio en gas.
El código de operación especifica la operación en una instrucción en lenguaje de máquina.
Un programa es una lista estática de códigos de operación. La ejecución del programa es un seguimiento de ejecución.
El seguimiento de ejecución es una lista ordenada específica de códigos de operación ejecutados para la ejecución de un programa.
Piezas difíciles de probar con ZK:
Código de operación de Keccak y algunos otros códigos de operación dependiendo de Keccak.
Precompilaciones: Funciones accesibles para el EVM. Algunos proporcionan tareas complejas o matemáticamente sofisticadas, como funciones criptográficas (por ejemplo, blake2f o sha256 ). No se ejecutan dentro del EVM. En cambio, son funciones codificadas en clientes de ejecución y están expuestas al EVM mediante una LLAMADA a una dirección especial.
Acceso a la memoria: por ejemplo, aumento del tamaño de la ranura de memoria (por ejemplo, mientras Ethereum usa memoria alineada con bytes , Polygon zkEVM usa ranuras de memoria de 32 bytes). Para que este cambio sea posible, se debe cambiar la lógica interna de algunos códigos de operación (por ejemplo, MLOAD).
Almacenamiento (es decir, cambiar la función hash o el árbol de estado como se mencionó anteriormente).
Cambiar los costos del gas puede reducir la compatibilidad de las herramientas del desarrollador y dañar algunas dApps. Por ejemplo, un contrato inteligente que ejecuta con frecuencia un código de operación con mayores costos de gas podría exceder el límite de bloque de gas y no poder ejecutarse.
Tipo 3 (casi equivalente a EVM)
Los ZK-EVM tipo 3 omiten las precompilaciones no compatibles con ZK y potencialmente modifican el acceso a la memoria y al almacenamiento.
Las dApps que dependen de precompilaciones eliminadas deben reescribirse. Las diferencias en cómo el ZK-EVM tipo 3 y el EVM original manejan los casos extremos también pueden implicar ajustes de dApp en circunstancias poco comunes.
Tipo 4 (equivalente al lenguaje de alto nivel)
El tipo 4 ya está bastante lejos de EVM.
El código fuente del contrato inteligente escrito en un lenguaje de alto nivel (por ejemplo, Solidity, Zinc) se compila en Intermediate Representation , generando códigos de operación para la VM compatible con ZK.
Este enfoque evita generar pruebas ZK para cada paso de ejecución de EVM, lo que reduce sustancialmente el trabajo del probador.
Aunque los contratos se pueden compilar, se necesita más trabajo si las dApps utilizan código de bytes escrito a mano EVM.
Los ZK-EVM tipo 4 también requieren sus propias herramientas de desarrollo (solo aquellas que funcionan en el nivel de código de operación), como depuradores y rastreadores.
En el circuito ZK que demuestra el seguimiento de ejecución, se implementan restricciones para cada paso y el costo de cada paso es la suma de todos los códigos de operación. Por lo tanto, los ZK-EVM Tipo 4 pretenden utilizar la menor cantidad posible de códigos de operación complejos para optimizar la eficiencia.
En la nota positiva, los códigos de operación personalizados (no cubiertos por Ethereum) permiten la implementación de nuevas funciones que no están disponibles en Ethereum de forma predeterminada. Por ejemplo, ejecución de múltiples llamadas para funciones de abstracción de cuentas o inicio de billeteras de contratos inteligentes utilizando soluciones listas para usar como Argent.
Resumiendo la taxonomía
Los diferentes tipos de ZK-EVM priorizan diferentes objetivos y características. El tipo 1 se centra en la equivalencia de Ethereum, mientras que el tipo 4 prioriza la generación eficiente de pruebas. Otros tipos se encuentran entre estos extremos, y muchos protocolos ZK-EVM de tipo 2 y 3 han anunciado sus intenciones de avanzar hacia la equivalencia de Ethereum. Esta taxonomía de cuatro tipos podría no ser el estado final para los paquetes acumulativos de ZK; podrían producirse más modificaciones en el futuro. Por ejemplo, algunos ZK-EVM podrían volverse híbridos: los tipos 1 y 2 podrían desarrollar soluciones de tipo 4 (con la mayor eficiencia posible) y ofrecer ambas opciones a las dApps, mientras que los ZK-EVM de tipo 3 y 4 podrían agregar opciones equivalentes a Ethereum.
Biografía del autor
Lisa Akselrod es una amante de las matemáticas entusiasmada con la construcción de sistemas robustos y enamorada de la cultura Ethereum Infinite Garden.
Biografía del editor
Hiro Kennelly es escritor, editor y coordinador de BanklessDAO, asociado de Bankless Consulting y ahora y siempre es un DAOpunk.
trewkat es escritor, editor y diseñador en BanklessDAO. Está interesada en aprender sobre web3, con un enfoque particular en cómo comunicar mejor este conocimiento a otros.
Biografía del diseñador
Chameleon es diseñador y creador en el espacio web3.
BanklessDAO es un motor educativo y de medios dedicado a ayudar a las personas a lograr la independencia financiera.
Esta publicación no contiene asesoramiento financiero , solo información educativa. Al leer este artículo, usted acepta y afirma lo anterior, así como que no se le solicita que tome una decisión financiera y que de ninguna manera recibe ninguna proyección fiduciaria, promesa o inferencia tácita de su capacidad para lograr objetivos financieros. ganancias.
Bankless Publishing siempre acepta envíos para publicación. Nos encantaría leer su trabajo, así que envíe su artículo aquí .
Divulgación. De vez en cuando podemos añadir enlaces en este boletín a productos que utilizamos o poseemos. Podemos recibir una comisión si haces hace una compra a través de uno de estos enlaces. Además, los redactores de Bankless poseen criptoactivos. Vea nuestras divulgaciones de inversión aquí y las de Nación Bankless aquí.
Recarga tu vitamina T (Tortas, tamales y tacos), en ETH México, la espera ya terminó, nos vemos el 21 de Octubre del 2023 en este gran evento que reunirá a los constructores, creadores e impulsores de la comunidad de Ethereum. Si quieres saber más, vista el twitter de ETH Mexico para no perderte de nada aquí.
Pasos de acción Nación Bankless 🏴 🐼
🪁 Apoyanos: Ya somos proyecto verificado en Giveth, seguimos buscando formas de seguir creciendo para generar contenido en español.
📖 Leer: Elige tu clase de personaje del mercado alcista
🪪 Conoce: ¿Quieres saber más de Bankless Wallet? Completa este formulario
🔒 tlbank: Si tienes BANK y quieres bloquearlo, lo puedes hacer aquí
¿Quieres conocer todo lo que pasa en el ecosistema cripto y web3 día a día? Pues bien, puedes suscribirte a Bankless para estar al tanto de todo lo que pasa y invita a tus amigos para que no se lo pierdan 🚀