Explicación detallada de la actualización de Boojum: por qué zkSync Era eligió el sistema de prueba STARK

Autor: zkSync; traducción: Jinse Finance xiaozou

Puntos principales de este artículo:

Actualización: zkSync Era está en transición a un nuevo sistema de prueba de Boojum sin regeneración.

**Rendimiento: **Boojum ha demostrado un rendimiento de prueba de clase mundial, ayudando al rendimiento del clasificador zkSync Era, que ya puede manejar más de 100 TPS.

**Descentralización: **El probador Boojum (certificador) solo necesita 16 GB de RAM, lo que admite la descentralización a gran escala del probador en el futuro.

Listo:¡La prueba de sombras (a prueba de sombras) se ha lanzado en la red principal!

Como articulamos en nuestro manifiesto ZK Credo, la misión de zkSync es promover la libertad personal para todos mediante la construcción de una red de cadena de bloques que sea confiable, segura, sin permisos, asequible, fácil de usar, resistente e infinitamente escalable, haciendo que la autopropiedad digital esté disponible en general. .

En pos de esta misión, la versión Alpha de zkSync Era se abrió al público hace más de tres meses y ha recibido una respuesta sorprendente. Hemos visto mucha actividad en la web durante este tiempo.

Aspectos destacados de la red:

· $577 millones en valor bloqueado total (fuente: L2Beat).

23,75 millones de transacciones procesadas en los últimos 30 días, la mayor parte por L2 (fuente: L2Beat).

· Contratos inteligentes verificados con código fuente 9735.

En marzo de 2023, lanzamos zkSync Era, utilizando un sistema basado en SNARK para admitir nuestro zkEVM, utilizando el marco de circuito probado, y ha sido compatible con zkSync Lite en la red principal durante casi tres años. Sin embargo, sabemos que este no es el final del sistema de prueba zkSync Era, diseñamos el sistema para permitir cambios radicales sin realizar una regeneración. Esto significa que podemos realizar importantes actualizaciones de cifrado sin interrumpir a los desarrolladores y usuarios.

Llevamos mucho tiempo trabajando en actualizaciones de cifrado. Hoy, nos complace anunciar nuestra primera actualización de encriptación: zkSync Era está en transición a un nuevo sistema de prueba basado en STARK**, conocido como "Boojum". **

1. Introducción a Boojum

Boojum es el nombre de nuestra biblioteca de algoritmos y restricciones basada en Rust que usamos para implementar zkSync Era y la versión mejorada de los circuitos ZK de ZK Stack. El nombre Boojum se inspiró en el poema The Hunting of The Snark de Lewis Carroll, y Boojum representa el tipo de Snark más aterrador.

**(1) ¿Qué es Boojum? **

El diseño de Boojum tiene una serie de características atractivas:

· Algoritmo de tipo PLONK**: **Para protocolos de conocimiento cero, el algoritmo (aritmetización) es el proceso de convertir cálculos generales en formas matemáticas. En lo que respecta al sistema de prueba actual, nuestro sistema actualizado continúa utilizando el algoritmo de tipo PLONK. Con este enfoque, los circuitos ZK son más fáciles de escribir que otras alternativas, y el sistema es más fácil de desarrollar, auditar, mantener y actualizar.

· **Potente esquema de compromiso: **El núcleo de Boojum es el esquema de compromiso FRI. El compromiso FRI es un componente clave, que nos permite comprometernos con un polinomio acotado y luego demostrar de manera eficiente que la apertura reclamada (polinomio) es de hecho Pertenece a polinomios de bajo orden.

**Eficiencia de la parte "boring" del sistema: **Aunque la generación de testigos a veces se ignora cuando la gente habla sobre el rendimiento del probador, en la versión actual del sistema de prueba, el probador GPU optimizado es muy eficiente, y el tiempo de generación de testigos es comparable al tiempo de generación de pruebas. Con Boojum, proporcionamos generación de testigos paralela automatizada (si el gráfico de dependencia lo permite), al tiempo que facilita la definición de funciones de generación de testigos como |(a, b)| a + b.

· Fácil de extender: La abstracción básica del sistema de restricciones es muy superficial, pero permite a los usuarios agregar sus tipos de restricciones de puerta personalizadas de varias maneras, como agregar algunos polinomios especializados o reutilizar columnas comunes. Después de que los usuarios definan una geometría simple para su circuito, la interfaz de extensión les brinda la capacidad de generar probadores, verificadores y verificadores recursivos automáticamente. Esto permitirá un proceso de desarrollo muy eficiente; si el usuario cambia la estructura del circuito y elige usar un tipo diferente de puerta, puede volver a llamar a la interfaz y regenerará las claves y se asegurará de que esté usando los programas correctos de prueba y verificación. .

· Single-stack: Con Boojum, todo lo anterior se puede expresar en Rust idiomático estándar y usar la expresividad de su sistema de tipos. Las partes computacionalmente pesadas del probador GPU están escritas en CUDA C++, pero proporcionamos enlaces de Rust para la composición.

De forma predeterminada, Boojum opera en un campo de números primos de tamaño 2^64 - 2^32 + 1 (llamado "campo Goldilocks", propuesto originalmente por Mike Hamburg, usando parámetros específicos sugeridos por Hamish Ivey-Law), y proporciona el campo correspondiente implementaciones primitivas vinculantes de primitivas criptográficas como la función hash Poseidon2 e implementaciones de primitivas criptográficas más estándar basadas en tablas de búsqueda como SHA256, Keccak256 y Blake2s.

Es importante destacar que, en el paso final de nuestra implementación, utilizaremos un SNARK opaco basado en emparejamiento, esencialmente una versión ligeramente mejorada del sistema de prueba actual, para envolver la prueba STARK, y este SNARK estará disponible en Ethereum. Dichas pruebas son mucho más pequeñas y mucho más económicas de verificar; este paso reduce el costo del sistema de prueba y, por lo tanto, de la transacción misma.

Boojum se ha beneficiado de las contribuciones de muchas personas de la comunidad y estamos agradecidos por la variedad de ideas que recibimos. Nos inspiramos en los documentos subyacentes de STARK, FRI y DEEP-FRI, el avance de las funciones hash propuestas en Poseidon y Poseidon2, y el desarrollo del algoritmo PLONK propuesto por Gabizon, Williamson y Ciobotaru. Además, el enfoque innovador del proyecto Plonky2 (Farmer, Lubarov, Borgeaud, etc.), incluida la elección de Poseidon MDS y el uso de constantes redondas, y los conocimientos novedosos de los cocientes almacenados en caché y la investigación de búsqueda multivariante de Eagen, Fiore, Gabizon. y Haböck. Son estas valiosas contribuciones las que juntas dan forma al diseño de Boojum.

**2. ¿Por qué elegir Boojum? **

Al diseñar Boojum, nuestra decisión consideró dos factores clave: (1) rendimiento de prueba de clase mundial y (2) requisitos de hardware reducidos para la descentralización.

(1) Desempeño de clase mundial

Nuestro sistema actual basado en SNARK, si bien actualmente funciona de manera efectiva, no puede escalar a las transacciones de gran volumen y casi en tiempo real que ZK Stack planea respaldar en los próximos años. Visualizamos un futuro para estos sistemas en el que las pruebas se puedan generar y verificar de manera económica y rápida, lo que permite una finalidad e interoperabilidad rápidas entre hipercadenas.

El rendimiento del sistema de prueba afecta directamente el precio que pagan los usuarios por sus transacciones, y estos costos deben aproximarse a cero con el tiempo. La versión actual del sistema de prueba es lo suficientemente potente como para crear un zkEVM y procesar millones de transacciones en solo unos meses, ¡pero con Boojum podemos hacerlo aún mejor!

Para medir el tiempo de generación de pruebas de la red (y otras métricas clave relacionadas con el rendimiento), nos asociamos con Celer, un equipo con amplia experiencia en evaluación comparativa y análisis de sistemas de pruebas múltiples. Puede ver en el gráfico a continuación que Boojum supera significativamente a la mayoría de los sistemas. Los resultados hablan por sí solos: **Nuestra implementación demuestra un rendimiento de prueba de clase mundial, que es, hasta donde sabemos, el sistema de prueba más rápido en uso. **

Para una comparación similar, Celer realizó estos puntos de referencia con un probador basado en CPU, pero nuestro sistema de red principal usa un probador basado en GPU más rápido.

R30sS1Jn4hTAjEo4DBDqmCQrVTg1htiAeyqvkcx5.png

El cambio a un sistema de prueba basado en STARK traerá mejoras significativas en el rendimiento y ayudará a garantizar resultados finales de baja latencia y respaldará una mayor actividad en zkSync Era y otros sistemas basados en ZK Stack.

(2) Reducir los requisitos de hardware para la descentralización

Estos resultados de rendimiento son especialmente impresionantes dado que esta no era la única métrica para la que estábamos optimizando: queríamos mejorar el rendimiento del sistema y reducir los requisitos de hardware para que el sistema se ejecutara.

Los sistemas de prueba populares de hoy en día, incluido nuestro sistema de prueba actual, son obviamente muy exigentes con el hardware. Nuestro sistema de verificación actual se ejecuta en un grupo de GPU A100 con 80 GB de RAM cada una. Esta necesidad de máquinas caras y potentes plantea un obstáculo importante para nuestro objetivo de permitir un futuro de generación de pruebas descentralizada e impulsada por el usuario. Para lograr este objetivo, no es suficiente hacer que la generación de pruebas no requiera permiso; los usuarios tampoco deben necesitar máquinas costosas y cientos de gigabytes de RAM.

¡Esta es otra área en la que hemos hecho un gran progreso! El probador de GPU que usamos en Boojum solo requiere 16 GB de RAM, un umbral tan bajo es un paso importante hacia nuestra visión futura. La validación basada en CPU también es posible con tan solo 64 GB de RAM (esperamos que sea tan bajo como 32 GB), y puede aprovechar al máximo los modernos procesadores multinúcleo. Una vez que hayamos migrado completamente al nuevo sistema de prueba, publicaremos más información sobre sus planes de descentralización.

Finalmente, el secuenciador zkSync Era basado en Rust ya es capaz de procesar más de 100 transacciones por segundo (TPS). La introducción del nuevo sistema de prueba no solo mejora el rendimiento, sino que también reduce los requisitos de hardware, lo que lo convierte en un refuerzo ideal para los clasificadores. El mayor rendimiento de Boojum también significa que el sistema puede probar las transacciones más rápido, y la reducción de los requisitos de hardware brinda a la red acceso a máquinas de menor costo, lo que aumenta la escalabilidad horizontal.

3**, el camino de Boojum a Mainnet**

El equipo ha estado trabajando en esta actualización durante meses y estamos emocionados de finalmente llevar el sistema a la red principal. También queríamos compartir algunas historias hasta ahora.

(1) Actualizar Era zkSync

Primero, describamos brevemente cómo realizamos dicha actualización. Primero, el diseño de zkSync Era nos permite actualizar cada componente con el tiempo, y el sistema de prueba no es una excepción.

Al igual que Ethereum, usamos una estructura de datos de árbol de Merkle para almacenar información sobre el estado de la red. Esta información es necesaria para probar el sistema porque estamos probando una afirmación sobre el estado del sistema. Una decisión de diseño clave de este árbol Merkle (y la forma en que el sistema de prueba interactúa con él) es el uso de funciones hash no algebraicas, específicamente Blake2s. Si estuviéramos optimizando únicamente para facilitar la generación de pruebas, usaríamos una función hash algebraica (por ejemplo, Poseidon2), pero esta elección uniría el estado observable con los parámetros del sistema de prueba, como la elección del campo principal. Cualquier actualización del sistema de prueba requeriría una regeneración completa del estado, lo que sería una experiencia enormemente disruptiva para los usuarios de zkSync Era. Todo lo que tenemos que hacer para actualizar nuestro sistema de prueba es volver a implementar Blake2s dentro del circuito.

(2) Boojum: del diseño a la reseña

Hace aproximadamente un mes, comenzamos a enfocar nuestros esfuerzos en la implementación de una versión completa de extremo a extremo del nuevo sistema de pruebas. Dada la complejidad de esta actualización y la importancia de la corrección del sistema, comenzamos una serie de revisiones internas y externas. auditorías

El circuito zkEVM y la biblioteca de algoritmos de Boojum todavía estaban en desarrollo activo en ese momento, pero trabajamos con auditores de seguridad externos que se centraron en la identificación temprana de posibles problemas relacionados con la confiabilidad del circuito principal y los componentes de Boojum. Trabajamos en estrecha colaboración para brindarles acceso completo al código fuente y la documentación mientras revisaban y probaban el circuito zkEVM y las herramientas relacionadas con Boojum (utilizando métodos manuales y automáticos). A través de esta asociación, pudimos abordar muchos problemas iniciales.

(3) Boojum: de la revisión a la prueba

Ahora, hemos ingresado al siguiente paso de nuestro plan: ¡Modo de sombra de red principal! Estamos entusiasmados de poder ejecutar ahora el nuevo sistema de prueba junto con el sistema de prueba existente, aunque Boojum solo está en versión beta. Ya estamos generando y validando "pruebas de sombra" de bloques de mainnet.

La versión de red principal de zkSync Era no requiere pruebas paralelas; seguirá funcionando con el sistema de prueba existente. Solo estamos validando estas pruebas de sombra para probar y optimizar el sistema, pero utilizando datos de producción reales de la actividad de los usuarios de zkSync Era.

También estamos emocionados de hacer esta prueba públicamente, en las próximas semanas verá enlaces a alguna información sobre estas pruebas de sombra en el explorador de bloques junto a la información de prueba existente, estamos abriendo una herramienta CLI que cualquiera puede usar para verificar nuevas pruebas.

Ahora estamos particularmente enfocados en probar el nuevo sistema de prueba y no planeamos verificar las pruebas sombra en Ethereum todavía. Durante la fase de prueba, la verificación de las pruebas sombra se realizará fuera de la cadena, buscamos casos extremos y errores, y continuamos revisando la implementación más a fondo.

También estamos abriendo el código base de Boojum hoy. Tenga en cuenta: ¡el código base aún es un trabajo en progreso! A medida que avanzan las pruebas, es probable que también vea numerosos ajustes, optimizaciones, correcciones y mejoras en la documentación. También abriremos varios repositorios más interesantes en las próximas semanas, incluidos circuitos actualizados y un probador de GPU.

(4) Boojum: de las pruebas a la migración

La seguridad es una prioridad en todo lo que hacemos. Solo consideraremos migrar cuando estemos completamente satisfechos con nuestras pruebas del nuevo sistema, y compartiremos más detalles en las próximas semanas y meses. También planeamos realizar más auditorías y revisiones de seguridad, y esta emocionante actualización está a punto de implementarse por completo mientras el sistema de atestación actual está obsoleto.

Creemos que Boojum, junto con nuestro compromiso con la innovación y el diseño centrado en el usuario, es el siguiente paso hacia una zkEVM más segura, más escalable y más eficiente.

Ver originales
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
  • Recompensa
  • Comentar
  • Compartir
Comentar
0/400
Sin comentarios
  • 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)