# Introducción a la Arquitectura de Scroll

By [L2 en Español](https://paragraph.com/@layer2es) · 2023-05-23

---

Introducción
============

Scroll es una solución de escalabilidad **_Layer_ 2** para Ethereum que utiliza la tecnología ZK. Funciona como un **zkRollup equivalente a la EVM**, permitiendo transacciones más rápidas y eficientes mientras mantiene la seguridad de la blockchain de Ethereum.

La pieza central de Scroll es la [**zkEVM**](https://scroll.io/blog/zkEVM), que se encarga de probar la corrección de la ejecución de EVM en la **_Layer_ 2**. Este proyecto se ha estado construyendo abiertamente durante casi 2 años en colaboración con el grupo _Privacy and Scaling Explorations_ de la Fundación Ethereum.

Sin embargo, para convertir [**zkEVM**](https://scroll.io/blog/zkEVM) en un [**zkRollup**](https://ethereum.org/es/developers/docs/scaling/zk-rollups/) completo en Ethereum, se necesita construir una [**arquitectura L2**](https://scroll.io/blog/architecture) **completa** alrededor de él. Este proceso ha requerido una gran cantidad de trabajo y esfuerzo por parte del equipo de desarrollo de Scroll.

* * *

Arquitectura de Scroll
======================

En esencia la arquitectura de **Scroll** está compuesta de **3** piezas fundamentales.

**Scroll Node**: Construye los bloques L2 a partir de transacciones de usuarios, los consigna en la _Layer_ base de Ethereum y pasa mensajes entre L1 y L2.

**Roller Network**: Genera las [**_validity proofs_**](https://www.alchemy.com/overviews/validity-proof-vs-fraud-proof#:~:text=A%20validity%20proof%2C%20also%20known,information%20shared%20between%20the%20two.) (o **pruebas de validez**) de la _zkEVM_ para demostrar que las transacciones se ejecutan correctamente.

**Rollup and Bridge Contracts**: Proporciona [**_Data Availability_**](https://mirror.xyz/layer2es.eth/riUBdyBGEL30ggWNKy81WwvC8cynh_3oNpcbmwHNMms) (o **disponibilidad de datos**) para las transacciones de Scroll, verifica las pruebas de validez de _zkEVM_ y permite a los usuarios mover activos entre Ethereum y Scroll.

![](https://storage.googleapis.com/papyrus_images/323658e820cd9779c368fe982adf5489dd9e180a10febaafd1994b05fee079f7.png)

### Scroll Node

El **_Scroll Node_** es el componente principal para que aplicaciones y usuarios interactúen con Scroll. Este nodo esta conformado por tres módulos: **Secuenciador**, **Coordinador** y **Relayer**.

El **_Sequencer_** (o **Secuenciador**) se encarga de proporcionar una interfaz **_JSON-RPC_** para recibir transacciones L2. Cada pocos segundos, este módulo recupera un grupo de transacciones del [**_mempool_**](https://academy.bit2me.com/que-es-la-mempool-bitcoin/) **L2**, luego las ejecuta para generar un nuevo bloque L2 y una nueva **_state root_**. Para lograr esto, se hizo un **_fork_** de **_Go-Ethereum (Geth)_**, una de las implementaciones de nodos Ethereum más populares, lo que permite heredar la seguridad y compatibilidad de Ethereum.

Cuando se genera un nuevo bloque, el **Coordinator** (o **Coordinador**) es notificado y recibe un **_execution trace_** asociado al nuevo bloque desde el **_Secuenciador_**. A continuación, envía este **_execution trace_** a un **_Roller_** seleccionado aleatoriamente del **_Roller Network_** para la generación de **pruebas de validez**.

Por último, el **_Relayer_** se encarga de vigilar los contratos del **_Bridge_** y el **_Rollup_** desplegados tanto en Ethereum como en Scroll. Sus responsabilidades principales son supervisar el contrato _rollup_ para hacer un **seguimiento del estado de los bloques L2**, incluyendo su **disponibilidad de datos** y **prueba de validez**, así como vigilar los eventos de **depósito** y **retirada** de los contratos del _bridge_ desplegados tanto en Ethereum como en Scroll, y **retransmitir** los mensajes de un lado a otro.

### Roller Network

La _Roller Network_ es la responsable de **generar** las pruebas de validez para el **_zkRollup_** de Scroll. Los Roller actúan como _provers_ y se espera que utilicen aceleradores como GPUs, FPGAs y ASICs para reducir el tiempo y el costo de las pruebas. El proceso consta de los siguientes pasos:

1.  El _Roller_ convierte el **_execution trace_** recibida del **_Coordinador_** en **testigos** (_Witness_) **de circuito**.
    
2.  Se generan pruebas de validez para **cada** [**circuito**](https://tlu.tarilabs.com/cryptography/rank-1) **_zkEVM_**.
    
3.  Las pruebas de validez de varios circuitos _zkEVM_ se **agregan** para formar una **única** prueba de validez del bloque.
    

![](https://storage.googleapis.com/papyrus_images/0a1ac6ac291069377994c6906fa24b14d127e8760d02d6da320cffdb31b0196c.png)

### Contratos del Rollup y el Bridge

Scroll se conecta a la base _Layer_ de Ethereum mediante el uso de los [_smart contracts_](https://guide.scroll.io/developers/alpha-testnet-contracts) asociados al **_Rollup_** y el **_Bridge_**. Estos contratos trabajan en conjunto para **garantizar** la **_Data Availability_** en las transacciones L2, al mismo tiempo que permiten a los usuarios **transferir** activos y mensajes entre L1 y L2.

El contrato _Rollup_ recibe bloques L2 y las _state roots_ del **_Sequencer_**. Las _state roots_ se almacenan en el state de Ethereum, mientras que los datos de bloque L2 se guardan como **calldata** de Ethereum. Esto proporciona disponibilidad de datos para los bloques Scroll y aprovecha la seguridad de Ethereum para garantizar que los _indexers_, incluido el **Scroll Relayer**, puedan **reconstruir** los bloques L2. Una vez que se ha verificado la validez de un bloque L2 a través de una prueba, este se considera finalizado en Scroll.

Por otro lado, los contratos **_Bridge_** en Ethereum y Scroll permiten a los usuarios enviar mensajes arbitrarios entre L1 y L2. Además, se ha creado un protocolo _bridge_ _Trustless_ para transferir activos ERC-20 en **ambas direcciones**. Para enviar un mensaje o fondos de Ethereum a Scroll, los usuarios deben llamar a una transacción **_sendMessage_** en el contrato **_Bridge_**. El _Relayer_ indexará esta transacción en L1 y la enviará al _Sequencer_ para que se incluya en un bloque L2. El envío de mensajes desde Scroll a Ethereum se realiza de manera similar a través del contrato _Bridge_ L2.

* * *

¿Cómo funciona la zkEVM de Scroll?
----------------------------------

Luego de todo lo explicado el diagrama de operación de la **_zkEVM_** de Scroll funciona siguiendo la secuencia de pasos presentada a continuación:

### Paso 1:

El Secuenciador genera una secuencia de bloques. Para el bloque i, el Secuenciador genera una _execution trace_ **T** y la envía al Coordinador. Mientras tanto, también envía los datos de transacción **D** como _calldata_ al contrato Rollup en Ethereum para la **disponibilidad de datos**, las **_state roots_** resultantes y los compromisos con los datos de transacción al contrato Rollup como estado.

![](https://storage.googleapis.com/papyrus_images/6fd4107d8cf4ec907fb0d5e3eec12312c1360af5f2b6eba04a75d27ab18eed13.png)

### Paso 2:

El **Coordinador** selecciona **aleatoriamente** un **_Roller_** para generar una prueba de validez para cada _execution trace_ **T** de bloque. Para **acelerar** el proceso de generación de pruebas, las pruebas para **diferentes bloques** se pueden generar en paralelo en **diferentes** **_Rollers_**.

![](https://storage.googleapis.com/papyrus_images/d2758a345f0362d579fc0ad1387062174af1ea02dcfd88ebf1861176649624fb.png)

### Paso 3:

Después de generar la prueba de bloque **P** para el bloque i, el _Roller_ la envía de vuelta al **Coordinador**. Cada **k** bloques, el **Coordinador** despacha todas las pruebas recolectadas a otro _Roller_ aleatorio, el cual agrupa las **k** pruebas de bloque en una sola prueba agregada **A** y la envia de vuelta al Coordinador.

![](https://storage.googleapis.com/papyrus_images/4a8e5dc298d0ad72b5b3210bbb85c61ee79e1b2d8e68f91b24229cb0218e0ef1.png)

**Paso 4:**

Finalmente, el **Coordinador** envía la prueba agregada **A** al contrato _Rollup_ para finalizar los bloques L2 i+1 a i+k verificando la **prueba agregada A** frente a las **_state roots_** y compromisos de datos de transacción previamente enviados al contrato _Rollup_.

![](https://storage.googleapis.com/papyrus_images/d6869843bf5b135d5eb52adc5430691b9661049bb62b496c6a37e6416a02595c.png)

En las imágenes se ilustra que los bloques de Scroll se finalizarán en L1 en un proceso de múltiples pasos. Cada bloque L2 avanzará a través de las siguientes tres etapas hasta que se finalice.

*   **Pre-committed** indica que un bloque ha sido propuesto por un Secuenciador y enviado a los Rollers. Aunque los bloques Precomprometidos aún no son una parte canónica de la cadena L2 de Scroll porque aún no se han publicado en la capa base de Ethereum, los usuarios que confían en el Secuenciador pueden optar por tomar medidas en anticipación.
    
*   **Committed** indica que los datos de transacción de este bloque se han publicado en el contrato Rollup en Ethereum. Esto garantiza que los datos del bloque estén disponibles, pero no prueba que se hayan ejecutado de manera válida.
    
*   **Finalized** indica que la ejecución correcta de las transacciones en este bloque se ha demostrado verificando una prueba de validez en la cadena en Ethereum. Los bloques Finalizados se consideran partes canónicas de la cadena L2 de Scroll.
    

Al poner todo esto junto, Scroll es capaz de ejecutar el _bytecode_ nativo de EVM en L2 mientras hereda fuertes garantías de seguridad de la base _layer_ de Ethereum.

* * *

Conclusión
----------

En resumen, Scroll es una solución de escalabilidad **_Layer_** 2 para Ethereum que utiliza la tecnología ZK para permitir transacciones más rápidas y eficientes en la red.

La pieza central de Scroll es la **_zkEVM_**, que es como un juez de la **Layer 2** que se encarga de verificar que todo lo que sucede en la red se está ejecutando de manera correcta, la cual se apoya en una arquitectura criptográfica construida alrededor de la misma.

La arquitectura de Scroll conformada por: el **_Scroll Node_**, la **_Roller Network_** y los **_Rollup and Bridge Contracts_**, que trabajan juntos para garantizar la [**_Data Availability_**](https://mirror.xyz/layer2es.eth/riUBdyBGEL30ggWNKy81WwvC8cynh_3oNpcbmwHNMms) en las transacciones L2, al mismo tiempo que permiten a los usuarios **transferir** activos y **mensajes** entre **L1** y **L2**.

El proyecto de Scroll ha sido construido abiertamente durante casi dos años y su potencial es evidente para los amantes de las soluciones _Layer_ 2. Pero, como siempre, solo el tiempo dirá si la [**_zkEVM_**](https://scroll.io/blog/zkEVM) de Scroll será un jugador importante en el futuro de la escalabilidad de Ethereum una vez que la **_mainnet_** este operativa. Lo que es seguro es que el equipo detrás de Scroll ha estado trabajando duro para hacer que la red sea más eficiente y escalable, y eso es algo que siempre es digno de aplaudir.

* * *

🤵Agradecimientos
-----------------

🎉 ¡Gracias por leer hasta el final! Desde L2 en español queremos darle un especial agradecimiento a [**Ahmed Castro**](https://twitter.com/FilosofiaCodigo). Por ayudarnos con el contenido e investigación para la creación de este articulo.

Si está interesado en continuar aprendiendo y colaborando con nosotros, le invitamos a unirse a la vibrante comunidad de [**Telegram L2 en Español**](https://t.me/l2espaniol) y a seguirnos en nuestro [**Twitter L2 en Español**](https://twitter.com/Layer2es). Allí encontrará una gran cantidad de información sobre **Layer 2** y el ecosistema de Blockchain en general. **¡Te Esperamos!**

[https://t.me/l2espaniol](https://t.me/l2espaniol)

[https://twitter.com/Layer2es](https://twitter.com/Layer2es)

---

*Originally published on [L2 en Español](https://paragraph.com/@layer2es/introducci-n-a-la-arquitectura-de-scroll)*
