Ya sabemos que Optimism es un Optimistic Rollup que ayuda a que nuestra querida Ethereum escale. Hoy vamos a ver los detalles técnicos de Optimism.
Bloques dentro y fuera de Ethereum
La magia de los rollups es que ejecutan transacciones de Ethereum fuera de Ethereum. Luego envían la información de dichos rollups guardándolos en la parte de calldata de una transacción.
Optimism, puntualmente, envía transacciones a la siguiente dirección: 0xff00000…00010. (Sí, es muy larga para ponerla completa, pero se entiende la idea).
Si entramos a una transacción, vemos la información de los bloques de OP comprimida en la parte del calldata (la ventanita que dice Input Data):
Comprendiendo la parte técnica de Optimism
Lo que vimos en las imágenes anteriores son los bloques de la Layer 2 comprimidos. Optimism ejecuta transacciones, las agrupa en un batch, y las envía a la red principal.
Mientras más comprimidas estén las transacciones, menos bytes de información va a haber que guardar en Ethereum. Esto hace que la transaccion en Ethereum sea más barata, por lo que las transacciones en Optimism también van a ser más baratas.
Metáfora del día
Acordate que cuando pagamos el gas en Optimism para hacer una transacción X, lo que estamos haciendo es pagar nuestra parte del costo del gas de guardar la transacción X en Ethereum.
Es como viajar en auto con amigos y compartir gastos. Como cada transacción de Ethereum incluye muchas transacciones dentro de Optimism, el costo de cada transacción de Optimism es exponencialmente más bajo.
Si encima la información está comprimida, se hace todavía más barato.
Roles principales
En Optimism tenemos 2 roles principales:
- Sequencer: es quien recibe las transacciones de los usuarios y las convierte en bloques. El Sequencer de Optimism es como el Validator de Ethereum.
- Validator: simplemente valida que lo que hace el sequencer esté bien, y puede levantar el dedo en caso de ver algo raro. El validator de Optimism es como el nodo típico de Ethereum
¿Cómo se crea un bloque en Optimism?
El Sequencer recibe transacciones en una mempool (privada), las ejecuta y luego las agrega a un bloque. Voilá. Es bastante sencillo.
Ahora veamos las diferencias con Ethereum para que nos quede todo más claro:
El Sequencer, además de crear el bloque, está encargado de todo el proceso de compresión de las transacciones y del envío de la información a la red principal. Lo importante es que envía la info en batches (no en bloques).
El Sequencer es centralizado. A diferencia de Ethereum, que tiene miles de validadores, en Optimism hay un sólo Sequencer que depende de la Optimism Foundation. El objetivo es ir descentralizando de a poco.
Transacciones en Optimism
Hay dos formas de enviar transacciones:
- Enviárselas directamente al Sequencer.
- Enviarlas a través de la Layer 1. Esto evita que el Sequencer aplique censura. Es una forma de “saltearlo” en caso de ser necesario. También es la forma de hacer depósitos.
Para cerrar esta sección veamos una transacción en el Optimistic Etherscan; incluye un “Block Number” o número de bloque (en la Layer 2), un “L1 State Batch Index” y el hash de la transacción en mainnet donde se guardó toda la data.
Resumen
- Las transacciones se ejecutan off-chain.
- Luego se agrupan en batches, se comprimen y se envian usando el call data.
- Ese trabajo depende de un sequencer centralizado.
- Los validators controlan al sequencer y verifican que esté todo ok.