El 10 de octubre, a las 14:00, la red principal Scroll de la solución Ethereum Layer 2 generó su primer bloque, lo que marcó el lanzamiento exitoso de la red principal de Scroll. Hasta el 25 de octubre, más de 7600 ETH se han conectado a la red Scroll a través de puentes entre cadenas, y 24 plataformas comerciales descentralizadas se han puesto en funcionamiento en la red principal de Scroll, con un TVL total de aproximadamente $ 10 millones.
El 17 de octubre, Scroll anunció oficialmente el lanzamiento de su red principal sin dejar de mantener su compromiso con el código abierto y la descentralización. En la siguiente fase, Scroll se centrará en construir una red descentralizada de prueba de participación y un clasificador. En este artículo, proporcionaremos un análisis detallado de la arquitectura y la tecnología de Scroll para ayudar a todos a comprender el estado actual de la red y la dirección de desarrollo futuro de Scroll. También explicaremos el circuito zkEVM de Scroll y el conocimiento de auditoría para fortalecer las medidas de seguridad para proyectos zk.
Scroll es una solución de escalamiento de Ethereum Layer 2 basada en tecnología a prueba de conocimiento cero, cuyo objetivo es mejorar el rendimiento de las transacciones y la velocidad de la red Ethereum. En comparación con Optimistic Rollup, Scroll logra escalabilidad a través de pruebas de conocimiento cero y acelera la generación y verificación de pruebas de conocimiento cero a través de la aceleración de hardware. Está comprometido a lograr compatibilidad EVM a nivel de código de bytes. Esto significa que los desarrolladores pueden utilizar directamente las herramientas de desarrollo relacionadas con Solidity y Ethereum para crear contratos inteligentes e implementarlos en Scroll sin ninguna modificación.
Según el sitio web oficial de Scroll, actualmente hay 10 miembros principales en el equipo de Scroll, distribuidos en Asia, América y Europa. Los miembros del equipo tienen una rica experiencia en el desarrollo de zkRollup y operaciones industriales, y la mayoría de ellos se graduaron de universidades prestigiosas y tienen títulos de doctorado.
Actualmente, el ecosistema Scroll es muy rico, con proyectos de infraestructura que incluyen billeteras, herramientas de desarrollo, instalaciones de seguridad y más. El objetivo es brindar soporte integral a los proyectos durante todo el ciclo de vida, desde el diseño, el desarrollo, la operación hasta la auditoría de seguridad. Actualmente, hay más de 180 proyectos de ecosistema en la red principal de Scroll.
Billetera
Actualmente, Scroll es compatible con casi todas las billeteras principales: Metamask, TrustWallet, MathWallet, TokenPocket, WalletConnect, Binance Chain Wallet, SafePal Wallet. Además, la billetera del ecosistema Scroll también incluye OKX Wallet, Versa Wallet, etc.
Puente de las Cadenas Cruzadas
La infraestructura oficial de cadena cruzada de Scroll incluye Celer Network, Stargate, Orbiter Finance, Hop Protocol, LI.FI, Connext, etc. Además, también incluye el protocolo de liquidez entre cadenas Synapse Protocol, Owlto Finance que se centra en puentes entre cadenas de capa 2, puentes entre cadenas de Ethereum Layer 1 y Layer 2 Pheasant Network, Symbiosis, Catalyst, etc.
DeFi
En el ecosistema Scroll, hay varios proyectos DeFi bien establecidos, incluido el protocolo de préstamos Aave, el agregador DEX multicadena DODO, DEX SushiSwap, el agregador DEX OpenOcean, el protocolo DeFi multicadena iZUMi Finance, DEX Syncswap, el protocolo de rendimiento Pendle Finance, préstamos protocolo dForce y protocolo MUX del agregador de operaciones de apalancamiento. También hay proyectos innovadores como GMX que no han sido ampliamente adoptados.
Otros
En términos de NFT, juegos y aspectos sociales, otros proyectos en el ecosistema Scroll incluyen NFTScan, la plataforma de tareas Web3 QuestN, TaskOn, la plataforma de firma de protocolo electrónico EthSign, Galaxy Blitz, OmniKingdoms y otros juegos blockchain en línea.
¿Qué diferencia a la tecnología Scroll de otras?
La arquitectura de Scroll consta de tres componentes:
Nodo de desplazamiento: genera bloques en la red Scroll en función de las transacciones del usuario, envía estas transacciones a la capa base de Ethereum y maneja el paso de mensajes entre Ethereum y Scroll.
Roller: El Roller es responsable de convertir los contratos inteligentes en circuitos zkEVM y luego genera pruebas para demostrar la exactitud de las transacciones. Hay múltiples Rollers en la red Scroll, que procesan transacciones en paralelo y aceleran la generación de pruebas a través del hardware. Scroll logra compatibilidad a nivel de código de bytes con EVM al demostrar directamente la exactitud del procesamiento del código de bytes de EVM.
Contrato acumulativo y puente: estos contratos proporcionan disponibilidad de datos para transacciones de desplazamiento y verifican las pruebas de validez generadas por zkEVM. Se puede decir que Scroll está conectado a la capa base de Ethereum a través de contratos Rollup y Bridge. A través de estos contratos, los usuarios pueden intercambiar mensajes arbitrarios entre Ethereum y Scroll y transferir activos ERC-20 en cualquier dirección con la ayuda de contratos de puerta de enlace.
fuente: https://scroll.mirror.xyz/nDAbJbSIJdQIWqp9kn8J0MVS4s6pYBwHmK7keidQs-k
Scroll es el contrato principal implementado en la cadena de bloques Ethereum:
Contrato de proxy de enrutamiento de puerta de enlace (garantizando el mapeo correcto de tokens en operaciones entre cadenas): 0xF8B1378579659D8F7EE5f3C929c2f3E332E41Fd6
Contrato de proxy de mensaje (transmisión de mensajes entre L1 y L2): 0x6774Bcbd5ceCeF1336b5300fb5186a12DDD8b367
Vale la pena señalar que estos contratos pueden ser modificados por el administrador y propietario del proxy. Además, Scroll ha incorporado una función de lista blanca que permite ajustar las tarifas del gas para direcciones específicas dentro de Scroll. Actualmente, el secuenciador Scroll opera de manera centralizada, lo que permite la revisión de mensajes y transacciones en la red Scroll. Además, existe la posibilidad de omitir cualquier mensaje en la cola de mensajes y confirmar directamente un mensaje específico.
Después de que Scroll genera un bloque, pasa por un coordinador y múltiples probadores (Rodillos) para generar pruebas agregadas. Luego, estas pruebas se envían al contrato Ethereum Rollup para su verificación. El proceso detallado es el siguiente:
1. El secuenciador recibe nuevas transacciones. La máquina virtual lee el código de bytes asociado a cada transacción, genera un seguimiento de ejecución y lo envía al coordinador. Simultáneamente, el secuenciador envía datos de transacciones al contrato acumulativo.
2. Los rodillos convierten los seguimientos de ejecución recibidos del coordinador en circuitos zkEVM. Cada paso en el seguimiento de ejecución corresponde a un circuito zkEVM. Para funciones que no son compatibles con zk (como hash y Keccak), Scroll construye tablas de búsqueda para asignar las entradas y salidas de estas funciones en el seguimiento de ejecución a la tabla de búsqueda. Se utilizan circuitos adicionales para verificar la exactitud de la tabla de búsqueda. Luego, los rodillos generan pruebas para estos circuitos zkEVM.
3. Después de generar las pruebas, Rollers las envía de vuelta al coordinador. Cada pocos bloques, el coordinador asigna aleatoriamente tareas de agregación a un Roller. Luego, el rodillo asignado agrega pruebas de varios bloques en una sola prueba.
4、Por último, el coordinador envía la prueba agregada al contrato Rollup. El contrato Rollup utiliza esta prueba para verificar la exactitud del estado y los datos de la transacción enviados previamente, confirmando así la exactitud del bloque.
zkEVM consta de varios circuitos, cada uno de los cuales tiene la tarea de verificar un aspecto específico de la EVM (máquina virtual Ethereum). Estos circuitos eventualmente se combinan o agregan para generar pruebas de ejecución de la transacción. El siguiente diagrama ilustra la relación entre estos circuitos y las tablas.
Hay subcircuitos más pequeños, como el circuito ECDSA y los subcircuitos relacionados con códigos de operación, que no interactúan con otras tablas y circuitos de una manera que afecte la combinación del circuito. Estos subcircuitos se omiten en el diagrama para mayor claridad.
Circuito EVM
La Máquina Virtual Ethereum (EVM) es una máquina de estados que establece las reglas para transiciones de estado válidas dentro del protocolo Ethereum. Ejecuta instrucciones (códigos de operación) para lograr estas transiciones y genera un seguimiento de ejecución. El objetivo del circuito EVM es crear un sistema de restricciones que represente el seguimiento de ejecución y pueda verificarse mediante un sistema de prueba de conocimiento cero.
El diseño de alto nivel del circuito EVM es algo similar al diseño del propio EVM, como go-ethereum. En go-ethereum, el intérprete recorre en iteración todos los códigos de operación de instrucciones en el seguimiento de ejecución. Para cada instrucción, el intérprete verifica información de contexto relevante, como gas, pila y memoria, y luego envía el código de operación a JumpTable, que proporciona instrucciones detalladas para ejecutar el código de operación.
De manera similar, en los circuitos EVM, Scroll construye pasos de ejecución basados en el seguimiento de ejecución y proporciona pruebas de códigos de operación y contextos de ejecución. Para cada paso de ejecución, se aplica un conjunto de restricciones para verificar la información contextual. Para cada código de operación, se aplica un conjunto de restricciones para verificar su comportamiento. Dentro del seguimiento de ejecución, el mismo código de operación debería tener las mismas restricciones. Scroll usa selectores para "abrir" todos los pasos con el mismo código de operación en el seguimiento de ejecución y usa el sistema de prueba de backend para probar su comportamiento.
Circuito estatal
Durante la ejecución, todas las operaciones de lectura y escritura del EVM se registran en rw_table y se ordenan mediante la variable rw_counter. El propósito del circuito estatal es demostrar la generación precisa de rw_table.
Circuito MPT
Merkle Patricia Tree (MPT) es una estructura de datos clave utilizada en la capa de almacenamiento de Ethereum. En los circuitos zkevm de Scroll, el MPT se modifica a zkTrie, que es esencialmente un binario disperso de Merkle Patricia Trie. En zkevm-Circuits, Scroll utiliza la tabla MPT para rastrear las transiciones de estado de las operaciones MPT paso a paso. La tabla MPT tiene el siguiente diseño:
El objetivo del circuito MPT es verificar la precisión de la tabla MPT mencionada anteriormente. Garantiza que cada actualización registrada en la tabla MPT dé como resultado un cambio correcto. Esto significa que para cada actualización, el circuito MPT garantiza que sólo hay una forma posible de realizar cambios. Esto evita modificaciones accidentales o no autorizadas y garantiza la integridad y precisión del MPT. En concreto, cuando el MPT sufre cambios por actualizaciones en cuentas o almacenamiento, el circuito MPT debe acreditar que dichas actualizaciones se realizan según las reglas especificadas. Además, debe demostrar que el hash raíz refleja con precisión los resultados de todos los cambios.
Circuito Keccak
Scroll ha implementado su propia versión de Keccak256, siguiendo la especificación NIST Keccak y la especificación del equipo Keccak.
Y el circuito Keccak se utiliza para demostrar la exactitud del funcionamiento del Keccak256. La implementación de este circuito es compleja, principalmente porque el algoritmo keccak256 en sí no es compatible con zk.
Circuito de transmisión
El circuito Tx proporciona restricciones para validar la exactitud de una transacción. Comprueba principalmente los siguientes aspectos de la transacción:
La exactitud de CallDataLength y CallDataGasCost acumulativo: determine la puerta personalizada y busque la última fila de bytes de datos de llamada en la tabla tx;
La exactitud de los datos relacionados con TxSign y TxHash: busque en la tabla RLP y la tabla Keccak;
Demuestre la exactitud de “si tx_type es L1Msg, entonces msg_hash”: verifique buscando en la tabla RLP;
Ejecute la firma tx correctamente usando ECDSA y recupere la dirección de la persona que llama correctamente a partir de la firma ECDSA: Verifique buscando en la tabla sig;
El comportamiento de transición correcto de tx id, cum_num_txs y call_data_length;
Algunas restricciones básicas, como los valores booleanos de determinadas variables indicadoras.
Circuito de código de bytes
Los circuitos EVM necesitan buscar una tabla de códigos de bytes que contenga la información de códigos de bytes correcta. Esto garantiza que los bytes almacenados en el contrato coincidan con los bytes cargados desde la tabla. El propósito del circuito de código de bytes es hacer cumplir la exactitud de la tabla de códigos de bytes. Esto incluye:
Restricciones relacionadas con el comportamiento de los límites con etiquetas (etiqueta): Restricciones en la primera y última línea, conversión de etiqueta == byte a encabezado y viceversa, conversión de encabezado a encabezado;
Restricciones en el tamaño del código: incluido el cálculo de la longitud del código de bytes mediante la restricción del índice del último byte del código de bytes;
Restricciones en el hash del código: restringir correctamente el comportamiento RLC de los bytes en el hash del código y verificar el hash del código buscando la tabla Keccak;
Garantizar la exactitud del comportamiento PUSH: is_code = push_data_left == 0 (debe ser un valor booleano) y verificar el tamaño de los datos enviados para PUSH1-PUSH32 buscando push_table;
Garantizar la correcta propagación en cada línea de un código de bytes.
Las diferentes cadenas tienen sus propias funciones de módulos comerciales personalizados, que generalmente modifican los contratos y códigos de operación precompilados en el EVM. Entre ellos, Scroll zkEVM es una solución de escalado de segunda capa basada en pruebas de conocimiento cero. Esta solución reconstruye los códigos de operación relevantes utilizando circuitos y genera pruebas basadas en seguimientos de ejecución. Esta compleja implementación aumenta enormemente la dificultad de la auditoría. Después de la evaluación por parte de los expertos en seguridad de Beosin, la auditoría de seguridad de zkEVM se centra principalmente en los siguientes aspectos:
GAS: Al generar pruebas para el seguimiento de ejecución del circuito zkEVM, también verifica la exactitud del consumo de gas para las transacciones. Si se utilizan con frecuencia variables libres sin restricciones en el circuito de implementación de los códigos de operación, puede provocar fallos en la generación de pruebas u otros errores desconocidos.
Seguridad de la memoria: algunos circuitos zkEVM se basan en compromisos polinómicos, como el compromiso KZG utilizado por Scroll. Sin embargo, los cálculos polinomiales no se alinean automáticamente, por lo que si el circuito carece de restricciones, puede dar como resultado un rango de valores inconsistente con el rango de bytes en los programas de computadora. En algunos casos, cuando los desarrolladores contratados permiten la optimización del gas, la disposición compacta de los datos puede generar problemas de seguridad de la memoria, como el polinomio constante BYTE_C4096 en Polygon zkEVM. Los polinomios permiten que los valores de los parámetros excedan el rango máximo de valores de bytes de 255, lo que potencialmente puede permitir que secuenciadores maliciosos manipulen parámetros con fines de lucro en algunas plataformas de intercambio que adoptan el modelo AMM. Esencialmente, este tipo de vulnerabilidades surgen de inconsistencias entre el rango de validez numérica representado por el circuito y el rango de valores variables del programa. Un ejemplo es la vulnerabilidad CVE-2023-33252 descubierta por los investigadores de seguridad de Beosin en la biblioteca Snarkjs.
Seguridad del código de operación: al implementar códigos de operación de zkEVM, existen problemas de seguridad comunes, especialmente en lo que respecta a la precisión. Por ejemplo, al comparar dos números en el circuito subyacente, si la precisión de la operación de comparación en el programa es de 1 byte, las restricciones del circuito deben especificar el rango de valores. De lo contrario, la precisión de las operaciones en el circuito excederá la precisión del programa, lo que generará resultados incorrectos.
Soporte para EIP seguros: soporte para EIP centrados en la seguridad como EIP-2 y EIP-155.
Problema de centralización en Sequencer: actualmente, todas las pruebas generadas por Scroll dependen del seguimiento de ejecución generado por Sequencer. Si Sequencer se comporta de manera maliciosa, zkEVM no puede garantizar la seguridad de los activos del usuario.
Problema de compatibilidad: zkEVM genera pruebas de circuito basadas en el seguimiento de ejecución y las verifica en el contrato. Incluso las actualizaciones menores en Sequencer pueden generar diferencias significativas en el seguimiento de ejecución generado en el nivel del lenguaje subyacente.
Actualmente, Scroll adopta una versión KZG de dos capas del sistema de prueba Halo2, que utiliza aceleración de hardware GPU para acelerar la generación de pruebas. El cuello de botella ahora se ha desplazado a la generación de testigos y la replicación de datos. Además, el nivel de centralización y los costos operativos del hardware de Roller también son aspectos que Scroll debe considerar para el desarrollo futuro de sistemas de prueba de múltiples etapas.
Debido a que el seguimiento de ejecución de EVM cambia dinámicamente, existen varias restricciones y escalas de circuito. Actualmente, para adaptarse al seguimiento de ejecución que cambia dinámicamente, cada paso del seguimiento de ejecución debe satisfacer la escala de circuito más grande, lo que genera un desperdicio de memoria adicional.
Actualmente se espera que Scroll's Roller se beneficie de las tarifas de transacción de la red. Sin embargo, la cantidad actual de usuarios y las tarifas de transacción en la red Scroll no pueden cubrir los costos operativos de Roller y el secuenciador. En el futuro, es una cuestión que debe considerarse cómo la red Scroll proporciona incentivos económicos para atraer usuarios y mantener un funcionamiento estable de la red.
Actualmente, Beosin también apoya la auditoría del proyecto zk. Para investigaciones de seguridad exhaustivas sobre zk, puede leer los siguientes artículos: 1. Ataque de maleabilidad de transacciones de Groth16 Proof; 2. Exploración en profundidad de Tornado Cash para revelar ataques de maleabilidad en proyectos ZKP.
Beosin, como empresa de seguridad blockchain líder a nivel mundial, ha establecido sucursales en más de 10 países y regiones de todo el mundo. Nuestros servicios cubren auditorías de seguridad de código antes del lanzamiento del proyecto, monitoreo de riesgos de seguridad, alerta temprana y prevención durante la operación del proyecto, recuperación de activos para monedas virtuales robadas y servicios de cumplimiento seguro como KYT/AML. Proporcionamos una solución integral para productos y servicios de seguridad blockchain. Actualmente, hemos brindado servicios de tecnología de seguridad a más de 3000 empresas blockchain en todo el mundo y hemos auditado más de 3000 contratos inteligentes. Siéntete libre de contactarnos.
El 10 de octubre, a las 14:00, la red principal Scroll de la solución Ethereum Layer 2 generó su primer bloque, lo que marcó el lanzamiento exitoso de la red principal de Scroll. Hasta el 25 de octubre, más de 7600 ETH se han conectado a la red Scroll a través de puentes entre cadenas, y 24 plataformas comerciales descentralizadas se han puesto en funcionamiento en la red principal de Scroll, con un TVL total de aproximadamente $ 10 millones.
El 17 de octubre, Scroll anunció oficialmente el lanzamiento de su red principal sin dejar de mantener su compromiso con el código abierto y la descentralización. En la siguiente fase, Scroll se centrará en construir una red descentralizada de prueba de participación y un clasificador. En este artículo, proporcionaremos un análisis detallado de la arquitectura y la tecnología de Scroll para ayudar a todos a comprender el estado actual de la red y la dirección de desarrollo futuro de Scroll. También explicaremos el circuito zkEVM de Scroll y el conocimiento de auditoría para fortalecer las medidas de seguridad para proyectos zk.
Scroll es una solución de escalamiento de Ethereum Layer 2 basada en tecnología a prueba de conocimiento cero, cuyo objetivo es mejorar el rendimiento de las transacciones y la velocidad de la red Ethereum. En comparación con Optimistic Rollup, Scroll logra escalabilidad a través de pruebas de conocimiento cero y acelera la generación y verificación de pruebas de conocimiento cero a través de la aceleración de hardware. Está comprometido a lograr compatibilidad EVM a nivel de código de bytes. Esto significa que los desarrolladores pueden utilizar directamente las herramientas de desarrollo relacionadas con Solidity y Ethereum para crear contratos inteligentes e implementarlos en Scroll sin ninguna modificación.
Según el sitio web oficial de Scroll, actualmente hay 10 miembros principales en el equipo de Scroll, distribuidos en Asia, América y Europa. Los miembros del equipo tienen una rica experiencia en el desarrollo de zkRollup y operaciones industriales, y la mayoría de ellos se graduaron de universidades prestigiosas y tienen títulos de doctorado.
Actualmente, el ecosistema Scroll es muy rico, con proyectos de infraestructura que incluyen billeteras, herramientas de desarrollo, instalaciones de seguridad y más. El objetivo es brindar soporte integral a los proyectos durante todo el ciclo de vida, desde el diseño, el desarrollo, la operación hasta la auditoría de seguridad. Actualmente, hay más de 180 proyectos de ecosistema en la red principal de Scroll.
Billetera
Actualmente, Scroll es compatible con casi todas las billeteras principales: Metamask, TrustWallet, MathWallet, TokenPocket, WalletConnect, Binance Chain Wallet, SafePal Wallet. Además, la billetera del ecosistema Scroll también incluye OKX Wallet, Versa Wallet, etc.
Puente de las Cadenas Cruzadas
La infraestructura oficial de cadena cruzada de Scroll incluye Celer Network, Stargate, Orbiter Finance, Hop Protocol, LI.FI, Connext, etc. Además, también incluye el protocolo de liquidez entre cadenas Synapse Protocol, Owlto Finance que se centra en puentes entre cadenas de capa 2, puentes entre cadenas de Ethereum Layer 1 y Layer 2 Pheasant Network, Symbiosis, Catalyst, etc.
DeFi
En el ecosistema Scroll, hay varios proyectos DeFi bien establecidos, incluido el protocolo de préstamos Aave, el agregador DEX multicadena DODO, DEX SushiSwap, el agregador DEX OpenOcean, el protocolo DeFi multicadena iZUMi Finance, DEX Syncswap, el protocolo de rendimiento Pendle Finance, préstamos protocolo dForce y protocolo MUX del agregador de operaciones de apalancamiento. También hay proyectos innovadores como GMX que no han sido ampliamente adoptados.
Otros
En términos de NFT, juegos y aspectos sociales, otros proyectos en el ecosistema Scroll incluyen NFTScan, la plataforma de tareas Web3 QuestN, TaskOn, la plataforma de firma de protocolo electrónico EthSign, Galaxy Blitz, OmniKingdoms y otros juegos blockchain en línea.
¿Qué diferencia a la tecnología Scroll de otras?
La arquitectura de Scroll consta de tres componentes:
Nodo de desplazamiento: genera bloques en la red Scroll en función de las transacciones del usuario, envía estas transacciones a la capa base de Ethereum y maneja el paso de mensajes entre Ethereum y Scroll.
Roller: El Roller es responsable de convertir los contratos inteligentes en circuitos zkEVM y luego genera pruebas para demostrar la exactitud de las transacciones. Hay múltiples Rollers en la red Scroll, que procesan transacciones en paralelo y aceleran la generación de pruebas a través del hardware. Scroll logra compatibilidad a nivel de código de bytes con EVM al demostrar directamente la exactitud del procesamiento del código de bytes de EVM.
Contrato acumulativo y puente: estos contratos proporcionan disponibilidad de datos para transacciones de desplazamiento y verifican las pruebas de validez generadas por zkEVM. Se puede decir que Scroll está conectado a la capa base de Ethereum a través de contratos Rollup y Bridge. A través de estos contratos, los usuarios pueden intercambiar mensajes arbitrarios entre Ethereum y Scroll y transferir activos ERC-20 en cualquier dirección con la ayuda de contratos de puerta de enlace.
fuente: https://scroll.mirror.xyz/nDAbJbSIJdQIWqp9kn8J0MVS4s6pYBwHmK7keidQs-k
Scroll es el contrato principal implementado en la cadena de bloques Ethereum:
Contrato de proxy de enrutamiento de puerta de enlace (garantizando el mapeo correcto de tokens en operaciones entre cadenas): 0xF8B1378579659D8F7EE5f3C929c2f3E332E41Fd6
Contrato de proxy de mensaje (transmisión de mensajes entre L1 y L2): 0x6774Bcbd5ceCeF1336b5300fb5186a12DDD8b367
Vale la pena señalar que estos contratos pueden ser modificados por el administrador y propietario del proxy. Además, Scroll ha incorporado una función de lista blanca que permite ajustar las tarifas del gas para direcciones específicas dentro de Scroll. Actualmente, el secuenciador Scroll opera de manera centralizada, lo que permite la revisión de mensajes y transacciones en la red Scroll. Además, existe la posibilidad de omitir cualquier mensaje en la cola de mensajes y confirmar directamente un mensaje específico.
Después de que Scroll genera un bloque, pasa por un coordinador y múltiples probadores (Rodillos) para generar pruebas agregadas. Luego, estas pruebas se envían al contrato Ethereum Rollup para su verificación. El proceso detallado es el siguiente:
1. El secuenciador recibe nuevas transacciones. La máquina virtual lee el código de bytes asociado a cada transacción, genera un seguimiento de ejecución y lo envía al coordinador. Simultáneamente, el secuenciador envía datos de transacciones al contrato acumulativo.
2. Los rodillos convierten los seguimientos de ejecución recibidos del coordinador en circuitos zkEVM. Cada paso en el seguimiento de ejecución corresponde a un circuito zkEVM. Para funciones que no son compatibles con zk (como hash y Keccak), Scroll construye tablas de búsqueda para asignar las entradas y salidas de estas funciones en el seguimiento de ejecución a la tabla de búsqueda. Se utilizan circuitos adicionales para verificar la exactitud de la tabla de búsqueda. Luego, los rodillos generan pruebas para estos circuitos zkEVM.
3. Después de generar las pruebas, Rollers las envía de vuelta al coordinador. Cada pocos bloques, el coordinador asigna aleatoriamente tareas de agregación a un Roller. Luego, el rodillo asignado agrega pruebas de varios bloques en una sola prueba.
4、Por último, el coordinador envía la prueba agregada al contrato Rollup. El contrato Rollup utiliza esta prueba para verificar la exactitud del estado y los datos de la transacción enviados previamente, confirmando así la exactitud del bloque.
zkEVM consta de varios circuitos, cada uno de los cuales tiene la tarea de verificar un aspecto específico de la EVM (máquina virtual Ethereum). Estos circuitos eventualmente se combinan o agregan para generar pruebas de ejecución de la transacción. El siguiente diagrama ilustra la relación entre estos circuitos y las tablas.
Hay subcircuitos más pequeños, como el circuito ECDSA y los subcircuitos relacionados con códigos de operación, que no interactúan con otras tablas y circuitos de una manera que afecte la combinación del circuito. Estos subcircuitos se omiten en el diagrama para mayor claridad.
Circuito EVM
La Máquina Virtual Ethereum (EVM) es una máquina de estados que establece las reglas para transiciones de estado válidas dentro del protocolo Ethereum. Ejecuta instrucciones (códigos de operación) para lograr estas transiciones y genera un seguimiento de ejecución. El objetivo del circuito EVM es crear un sistema de restricciones que represente el seguimiento de ejecución y pueda verificarse mediante un sistema de prueba de conocimiento cero.
El diseño de alto nivel del circuito EVM es algo similar al diseño del propio EVM, como go-ethereum. En go-ethereum, el intérprete recorre en iteración todos los códigos de operación de instrucciones en el seguimiento de ejecución. Para cada instrucción, el intérprete verifica información de contexto relevante, como gas, pila y memoria, y luego envía el código de operación a JumpTable, que proporciona instrucciones detalladas para ejecutar el código de operación.
De manera similar, en los circuitos EVM, Scroll construye pasos de ejecución basados en el seguimiento de ejecución y proporciona pruebas de códigos de operación y contextos de ejecución. Para cada paso de ejecución, se aplica un conjunto de restricciones para verificar la información contextual. Para cada código de operación, se aplica un conjunto de restricciones para verificar su comportamiento. Dentro del seguimiento de ejecución, el mismo código de operación debería tener las mismas restricciones. Scroll usa selectores para "abrir" todos los pasos con el mismo código de operación en el seguimiento de ejecución y usa el sistema de prueba de backend para probar su comportamiento.
Circuito estatal
Durante la ejecución, todas las operaciones de lectura y escritura del EVM se registran en rw_table y se ordenan mediante la variable rw_counter. El propósito del circuito estatal es demostrar la generación precisa de rw_table.
Circuito MPT
Merkle Patricia Tree (MPT) es una estructura de datos clave utilizada en la capa de almacenamiento de Ethereum. En los circuitos zkevm de Scroll, el MPT se modifica a zkTrie, que es esencialmente un binario disperso de Merkle Patricia Trie. En zkevm-Circuits, Scroll utiliza la tabla MPT para rastrear las transiciones de estado de las operaciones MPT paso a paso. La tabla MPT tiene el siguiente diseño:
El objetivo del circuito MPT es verificar la precisión de la tabla MPT mencionada anteriormente. Garantiza que cada actualización registrada en la tabla MPT dé como resultado un cambio correcto. Esto significa que para cada actualización, el circuito MPT garantiza que sólo hay una forma posible de realizar cambios. Esto evita modificaciones accidentales o no autorizadas y garantiza la integridad y precisión del MPT. En concreto, cuando el MPT sufre cambios por actualizaciones en cuentas o almacenamiento, el circuito MPT debe acreditar que dichas actualizaciones se realizan según las reglas especificadas. Además, debe demostrar que el hash raíz refleja con precisión los resultados de todos los cambios.
Circuito Keccak
Scroll ha implementado su propia versión de Keccak256, siguiendo la especificación NIST Keccak y la especificación del equipo Keccak.
Y el circuito Keccak se utiliza para demostrar la exactitud del funcionamiento del Keccak256. La implementación de este circuito es compleja, principalmente porque el algoritmo keccak256 en sí no es compatible con zk.
Circuito de transmisión
El circuito Tx proporciona restricciones para validar la exactitud de una transacción. Comprueba principalmente los siguientes aspectos de la transacción:
La exactitud de CallDataLength y CallDataGasCost acumulativo: determine la puerta personalizada y busque la última fila de bytes de datos de llamada en la tabla tx;
La exactitud de los datos relacionados con TxSign y TxHash: busque en la tabla RLP y la tabla Keccak;
Demuestre la exactitud de “si tx_type es L1Msg, entonces msg_hash”: verifique buscando en la tabla RLP;
Ejecute la firma tx correctamente usando ECDSA y recupere la dirección de la persona que llama correctamente a partir de la firma ECDSA: Verifique buscando en la tabla sig;
El comportamiento de transición correcto de tx id, cum_num_txs y call_data_length;
Algunas restricciones básicas, como los valores booleanos de determinadas variables indicadoras.
Circuito de código de bytes
Los circuitos EVM necesitan buscar una tabla de códigos de bytes que contenga la información de códigos de bytes correcta. Esto garantiza que los bytes almacenados en el contrato coincidan con los bytes cargados desde la tabla. El propósito del circuito de código de bytes es hacer cumplir la exactitud de la tabla de códigos de bytes. Esto incluye:
Restricciones relacionadas con el comportamiento de los límites con etiquetas (etiqueta): Restricciones en la primera y última línea, conversión de etiqueta == byte a encabezado y viceversa, conversión de encabezado a encabezado;
Restricciones en el tamaño del código: incluido el cálculo de la longitud del código de bytes mediante la restricción del índice del último byte del código de bytes;
Restricciones en el hash del código: restringir correctamente el comportamiento RLC de los bytes en el hash del código y verificar el hash del código buscando la tabla Keccak;
Garantizar la exactitud del comportamiento PUSH: is_code = push_data_left == 0 (debe ser un valor booleano) y verificar el tamaño de los datos enviados para PUSH1-PUSH32 buscando push_table;
Garantizar la correcta propagación en cada línea de un código de bytes.
Las diferentes cadenas tienen sus propias funciones de módulos comerciales personalizados, que generalmente modifican los contratos y códigos de operación precompilados en el EVM. Entre ellos, Scroll zkEVM es una solución de escalado de segunda capa basada en pruebas de conocimiento cero. Esta solución reconstruye los códigos de operación relevantes utilizando circuitos y genera pruebas basadas en seguimientos de ejecución. Esta compleja implementación aumenta enormemente la dificultad de la auditoría. Después de la evaluación por parte de los expertos en seguridad de Beosin, la auditoría de seguridad de zkEVM se centra principalmente en los siguientes aspectos:
GAS: Al generar pruebas para el seguimiento de ejecución del circuito zkEVM, también verifica la exactitud del consumo de gas para las transacciones. Si se utilizan con frecuencia variables libres sin restricciones en el circuito de implementación de los códigos de operación, puede provocar fallos en la generación de pruebas u otros errores desconocidos.
Seguridad de la memoria: algunos circuitos zkEVM se basan en compromisos polinómicos, como el compromiso KZG utilizado por Scroll. Sin embargo, los cálculos polinomiales no se alinean automáticamente, por lo que si el circuito carece de restricciones, puede dar como resultado un rango de valores inconsistente con el rango de bytes en los programas de computadora. En algunos casos, cuando los desarrolladores contratados permiten la optimización del gas, la disposición compacta de los datos puede generar problemas de seguridad de la memoria, como el polinomio constante BYTE_C4096 en Polygon zkEVM. Los polinomios permiten que los valores de los parámetros excedan el rango máximo de valores de bytes de 255, lo que potencialmente puede permitir que secuenciadores maliciosos manipulen parámetros con fines de lucro en algunas plataformas de intercambio que adoptan el modelo AMM. Esencialmente, este tipo de vulnerabilidades surgen de inconsistencias entre el rango de validez numérica representado por el circuito y el rango de valores variables del programa. Un ejemplo es la vulnerabilidad CVE-2023-33252 descubierta por los investigadores de seguridad de Beosin en la biblioteca Snarkjs.
Seguridad del código de operación: al implementar códigos de operación de zkEVM, existen problemas de seguridad comunes, especialmente en lo que respecta a la precisión. Por ejemplo, al comparar dos números en el circuito subyacente, si la precisión de la operación de comparación en el programa es de 1 byte, las restricciones del circuito deben especificar el rango de valores. De lo contrario, la precisión de las operaciones en el circuito excederá la precisión del programa, lo que generará resultados incorrectos.
Soporte para EIP seguros: soporte para EIP centrados en la seguridad como EIP-2 y EIP-155.
Problema de centralización en Sequencer: actualmente, todas las pruebas generadas por Scroll dependen del seguimiento de ejecución generado por Sequencer. Si Sequencer se comporta de manera maliciosa, zkEVM no puede garantizar la seguridad de los activos del usuario.
Problema de compatibilidad: zkEVM genera pruebas de circuito basadas en el seguimiento de ejecución y las verifica en el contrato. Incluso las actualizaciones menores en Sequencer pueden generar diferencias significativas en el seguimiento de ejecución generado en el nivel del lenguaje subyacente.
Actualmente, Scroll adopta una versión KZG de dos capas del sistema de prueba Halo2, que utiliza aceleración de hardware GPU para acelerar la generación de pruebas. El cuello de botella ahora se ha desplazado a la generación de testigos y la replicación de datos. Además, el nivel de centralización y los costos operativos del hardware de Roller también son aspectos que Scroll debe considerar para el desarrollo futuro de sistemas de prueba de múltiples etapas.
Debido a que el seguimiento de ejecución de EVM cambia dinámicamente, existen varias restricciones y escalas de circuito. Actualmente, para adaptarse al seguimiento de ejecución que cambia dinámicamente, cada paso del seguimiento de ejecución debe satisfacer la escala de circuito más grande, lo que genera un desperdicio de memoria adicional.
Actualmente se espera que Scroll's Roller se beneficie de las tarifas de transacción de la red. Sin embargo, la cantidad actual de usuarios y las tarifas de transacción en la red Scroll no pueden cubrir los costos operativos de Roller y el secuenciador. En el futuro, es una cuestión que debe considerarse cómo la red Scroll proporciona incentivos económicos para atraer usuarios y mantener un funcionamiento estable de la red.
Actualmente, Beosin también apoya la auditoría del proyecto zk. Para investigaciones de seguridad exhaustivas sobre zk, puede leer los siguientes artículos: 1. Ataque de maleabilidad de transacciones de Groth16 Proof; 2. Exploración en profundidad de Tornado Cash para revelar ataques de maleabilidad en proyectos ZKP.
Beosin, como empresa de seguridad blockchain líder a nivel mundial, ha establecido sucursales en más de 10 países y regiones de todo el mundo. Nuestros servicios cubren auditorías de seguridad de código antes del lanzamiento del proyecto, monitoreo de riesgos de seguridad, alerta temprana y prevención durante la operación del proyecto, recuperación de activos para monedas virtuales robadas y servicios de cumplimiento seguro como KYT/AML. Proporcionamos una solución integral para productos y servicios de seguridad blockchain. Actualmente, hemos brindado servicios de tecnología de seguridad a más de 3000 empresas blockchain en todo el mundo y hemos auditado más de 3000 contratos inteligentes. Siéntete libre de contactarnos.