Ethereum: de historia a labs

Artículo 33 de 48

69%

completado al llegar aquí

Sistemas distribuidosNota de investigación12 min de lectura

Rollups desde cero: ejecutar fuera, resolver dentro

Qué es un rollup: secuenciador, lote comprimido, raíz de estado, disponibilidad de datos y la regla que obliga a L1 a aceptar solo transiciones válidas.

Ruta Ethereum: 0/48

Si alguna vez optimizaste una base de datos, conoces el truco: en vez de mil INSERT sueltos, haces uno con mil filas. Pagas una vez el coste fijo de la operación y repartes el resto. Un rollup aplica esa idea a Ethereum, con una condición extra muy exigente: Ethereum tiene que poder comprobar, o al menos castigar, cualquier lote que mienta sobre el resultado.

Este capítulo construye el modelo desde cero. Una L2 (capa 2) es un sistema que procesa transacciones fuera de la red principal de Ethereum, llamada L1, y obtiene su seguridad de ella. Los rollups son la familia de L2 que publica en L1 los datos de sus transacciones y una afirmación verificable sobre el estado resultante.

Brújula de lectura

Actor, evidencia y estado

Antes de avanzar, ubica quién actúa, qué prueba queda y qué parte del sistema cambia.

Actor

Secuenciador

Ordena y ejecuta las transacciones de L2, y publica lotes y raíces de estado en L1.

Evidencia

Datos del lote + prueba

Los datos permiten reconstruir el estado; una prueba de fraude o de validez decide si la raíz vale.

Estado

Raíz en un contrato L1

El contrato del rollup guarda la raíz aceptada y el puente libera fondos contra ella.

Preguntas guía

  • ¿Por qué Ethereum no sube simplemente su capacidad de ejecución?
  • ¿Qué publica un rollup en L1 y por qué no basta con publicar solo el resultado?
  • ¿Qué diferencia a un rollup de una sidechain o de un validium?
  • Si el secuenciador desaparece o te censura, ¿cómo recuperas tus fondos?

Conexiones dentro de la serie

Cuello de botella: por qué L1 no ejecuta más

En Ethereum cada nodo completo descarga y ejecuta cada transacción para comprobar por sí mismo que el bloque es correcto. Eso es lo que permite "no confiar, verificar". El precio es que la capacidad total está limitada por lo que un nodo modesto puede procesar. Si se sube el límite de gas sin más, el hardware necesario crece y menos personas pueden operar nodos. ethereum.org lo plantea como el objetivo central del escalado: más velocidad y capacidad sin sacrificar descentralización ni seguridad.

Un rollup ataca el problema separando dos trabajos que en L1 van juntos: ejecutar y verificar. La ejecución pasa a una máquina fuera de L1. A L1 solo le quedan tareas baratas por transacción: guardar datos comprimidos, guardar una raíz de estado y, cuando hace falta, resolver una disputa o verificar una prueba.

Historia: del sharding a una hoja de ruta centrada en rollups

Durante años, el plan para escalar Ethereum era el sharding de ejecución: dividir la cadena en fragmentos validados por subconjuntos de validadores. ethereum.org explica que ese plan se abandonó porque los rollups avanzaron rápido y porque danksharding, una forma de añadir a los bloques datos baratos para rollups, permitía escalar con una lógica de consenso más simple.

La motivación de EIP-4844 lo dice de forma directa: a corto y medio plazo, y quizá a largo plazo, los rollups son la única solución de escalado sin confianza para Ethereum. Esa EIP, activada en marzo de 2024, creó los blobs, un espacio de datos separado y temporal pensado para ellos.

Traza de ejecución de un lote: qué sale de L2 y qué entra en L1

Sigue una transferencia en un rollup. El usuario firma una transacción de L2 y la envía al secuenciador, el nodo que ordena y ejecuta. El secuenciador acumula muchas transacciones, las ejecuta sobre el estado de L2 y obtiene una nueva raíz de estado: un hash de 32 bytes que resume todas las cuentas y saldos (una raíz de árbol de Merkle). Luego publica en L1 dos cosas: los datos comprimidos del lote y la nueva raíz.

Figura 1

Anatomía de un rollup: ejecución fuera, datos y verificación dentro

Fuentes:

[3][4]
Anatomía de un rollup: ejecución fuera, datos y verificación dentro
Cómo leer esta figura

Diagrama en dos bandas. Arriba, L2 fuera de Ethereum: los usuarios firman transacciones de L2 y las envían al secuenciador, que las ordena y ejecuta y produce un nuevo estado con raíz r sub n más 1. Abajo, L1 Ethereum: el secuenciador publica un lote comprimido como datos en calldata o blob, y una raíz propuesta llega al contrato del rollup, que guarda la raíz anterior y la nueva. Una flecha discontinua indica que con los datos del lote se puede reconstruir el estado. El contrato pasa la raíz a verificación, que puede ser por fraude con ventana o por prueba de validez, y entrega la raíz aceptada al puente, que paga retiros con prueba Merkle. A la izquierda, una flecha discontinua ocre va de los usuarios a una cola en L1 de depósitos y transacciones: es la inclusión forzada si hay censura.

Visual original de TrautsLab. El secuenciador ejecuta en L2; L1 recibe los datos del lote y la raíz propuesta, la verifica con prueba de fraude o de validez y el puente libera fondos contra la raíz aceptada.

El ahorro viene de amortizar. Una transacción de L1 tiene un coste base de 21000 gas, y cada byte de calldata distinto de cero cuesta 16 gas desde EIP-2028. Si un lote empaqueta N transacciones, ese coste base y la verificación se dividen entre N, y la compresión reduce los bytes de cada una. ethereum.org señala ejemplos concretos, como sustituir direcciones de 20 bytes por índices de cuenta. Desde Pectra, EIP-7623 añade un precio mínimo: una transacción dominada por datos paga al menos 10 gas por "token" de calldata, donde un byte distinto de cero cuenta como cuatro tokens.

javascript
// Ilustrativo: coste de L1 por transacción de L2 en un lote.
// Los valores reales dependen del precio del gas o del blob en cada momento.
function l1CostPerTx({ fixedGas, verifyGas, bytesPerTx, gasPerByte, txsInBatch }) {
  const batchGas = fixedGas + verifyGas + bytesPerTx * gasPerByte * txsInBatch;
  return batchGas / txsInBatch; // gas de L1 atribuible a cada transacción
}

Invariante de seguridad: datos disponibles y una regla de validez

Un rollup es seguro si se cumplen dos condiciones a la vez. La primera es la disponibilidad de datos: cualquiera debe poder descargar lo necesario para reconstruir el estado de L2. La segunda es una regla de validez que L1 hace cumplir: o bien una prueba de fraude permite impugnar una raíz falsa durante una ventana, o bien una prueba de validez demuestra que la raíz es correcta antes de aceptarla.

Las dos condiciones se necesitan entre sí. Sin datos, nadie puede construir una prueba de fraude, y los usuarios no pueden demostrar qué les pertenece para salir. Con datos pero sin regla de validez, L1 guardaría raíces que nadie puede discutir. ethereum.org insiste en que, para los optimistic rollups, la disponibilidad es crítica precisamente porque sin acceso a los datos los retadores no pueden construir pruebas de fraude.

Matriz de decisión

Dónde viven los datos y quién garantiza la validez

Recomendado

Optimistic rollup

Datos en Ethereum; raíz aceptada si nadie demuestra fraude a tiempo.

Ideal para
Compatibilidad máxima con la EVM.
Ojo con
Retiros a L1 esperan la ventana de impugnación.
Recomendado

ZK rollup

Datos en Ethereum; raíz aceptada solo con prueba de validez verificada.

Ideal para
Salida rápida a L1 una vez verificada la prueba.
Ojo con
Coste y complejidad del prover y de los circuitos.
Precaución

Validium

Prueba de validez en Ethereum, pero datos fuera.

Ideal para
Datos muy voluminosos y baratos.
Ojo con
Si el custodio de datos falla, puedes no poder demostrar tus saldos.
Riesgo

Sidechain

Cadena independiente con su propio consenso.

Ideal para
Aplicaciones que aceptan otra garantía de seguridad.
Ojo con
Ethereum no verifica sus transiciones.
Taxonomía de ethereum.org: la diferencia no es la velocidad sino de dónde sale la seguridad.

Riesgo operativo: sigue la salida de emergencia

Para evaluar un rollup, empieza por una pregunta incómoda: si el secuenciador desaparece hoy, ¿qué mecanismo te permite recuperar fondos? En la mayoría de los rollups hay un único secuenciador, y ethereum.org reconoce que puede censurar transacciones o dejar de producir lotes. La defensa es la inclusión forzada: el usuario envía su transacción directamente a un contrato en L1, y el rollup queda obligado a procesarla dentro de un plazo.

El segundo punto a revisar es quién puede cambiar los contratos de L1. Un puente que custodia fondos es código; si alguien puede actualizarlo o pausarlo, esa persona forma parte del modelo de confianza. La especificación de OP Stack, por ejemplo, define un rol Guardian capaz de pausar el portal de retiros y descartar juegos de disputa. Eso no es necesariamente malo, pero debe aparecer en tu análisis de riesgo como lo que es.

Lista de verificación

Cinco preguntas antes de desplegar en un rollup

0 de 5 revisados

Sirven para cualquier L2; las respuestas están en su documentación y en sus contratos de L1.

Laboratorio mínimo: reconstruir el estado a partir de lotes

Un ejercicio local ayuda a interiorizar el invariante. Escribe un "rollup de juguete" en el lenguaje que prefieras: una lista de saldos, una función que aplica transferencias y una función que calcula un hash del estado. Publica cada lote en un archivo (tu "L1") junto con la raíz resultante. Luego borra el estado y reconstrúyelo leyendo solo los lotes.

La validación observable es que la raíz reconstruida coincide con la publicada. Después introduce una raíz falsa en un lote y escribe un verificador que la detecte reejecutando ese lote: acabas de construir, en miniatura, la idea de la prueba de fraude. Si en lugar de reejecutar exigieras una prueba criptográfica, estarías en el terreno de los ZK rollups.

Quédate con esta frase: un rollup traslada la ejecución, no la confianza. La confianza sigue en L1 mientras los datos estén disponibles y exista una regla de validez que nadie pueda saltarse.

Referencias

Bibliografía académica

Formato IEEENumerado para ingeniería, sistemas y protocolos.
  1. [1]

    ethereum.org, "Scaling."

    official docsID: ETH-SCALING-DOCSAbrir fuente (abre en otra pestaña)

    Escalado on-chain y off-chain, capa 2 y abandono del sharding de ejecución.

  2. [2]

    V. Buterin et al., "EIP-4844: Shard Blob Transactions," 2022.

    Motivación del enfoque centrado en rollups y transacciones con blobs.

  3. [3]

    ethereum.org, "Optimistic rollups."

    official docsID: ETH-OPTIMISTIC-DOCSAbrir fuente (abre en otra pestaña)

    Arquitectura de contratos on-chain, VM off-chain, compromisos de estado e inclusión forzada.

  4. [4]

    ethereum.org, "Zero-knowledge rollups."

    official docsID: ETH-ZK-DOCSAbrir fuente (abre en otra pestaña)

    Contrato verificador, compresión de datos, salida sin ventana y salida forzada.

  5. [5]

    A. Akhunov et al., "EIP-2028: Transaction data gas cost reduction," 2019.

    Reduce el gas por byte de calldata distinto de cero de 68 a 16.

  6. [6]

    ethereum.org, "Data availability."

    official docsID: ETH-DA-DOCSAbrir fuente (abre en otra pestaña)

    Problema de disponibilidad de datos, muestreo (DAS) y comités de disponibilidad.

  7. [7]

    OP Stack specification, "Fault Proof: Bridge Integration."

    Rol Guardian, PROOF_MATURITY_DELAY_SECONDS y DISPUTE_GAME_FINALITY_DELAY_SECONDS en OptimismPortal.

  8. [8]

    T. Wahrstätter and V. Buterin, "EIP-7623: Increase calldata cost," 2024.

    Precio mínimo de 10 gas por token de calldata para transacciones dominadas por datos.

Fuentes primarias, papers seminales y especificaciones técnicas citadas en esta investigación.

Rutas vecinas

Si este tema te abrió hambre, sigue por aquí.

Series y labs que comparten área o dependen de esta ruta. Pocas opciones, para no convertir la curiosidad en menú infinito.

Sigue leyendo

Ideas conectadas con este artículo

Una ruta corta para continuar sin abrir veinte pestañas y perder el hilo.

Los comentarios se cargan al final de la lectura para no meter peso antes de tiempo.