Ethereum se está muriendo de éxito: la blockchain soporta ya tantas transacciones que se ha vuelto prácticamente inutilizable. Y no solo por la congestión, sino también por el precio de las transacciones (gas).
A día de hoy, operar en Ethereum es un lujo que muy pocos usuarios retail se pueden permitir. De hecho, muchos están refugiándose en protocolos más baratos como Solana.
Ethereum se está quedando como un activo de clase institucional. Justo lo que la descentralización trataba de evitar…
Por supuesto que la comunidad Ethereum es consciente de este problema y tienen una visión a medio-largo plazo. ¿Y mientras tanto?
Hablaremos de todo eso. De soluciones.
Y de cómo podemos nosotros seguir utilizando Ethereum sin dejarnos los ahorros en gas.
El trilema escalabilidad-seguridad-descentralización.
La descentralización es uno de los pilares de Ethereum y es lo que lo hace tan similar a Bitcoin en cuanto a seguridad e independencia.
¿Pero cómo escalar Ethereum sin sacrificar la seguridad y la descentralización? He aquí el problema:
- Si incrementamos la potencia de los nodos, conseguiremos aumentar las transacciones por segundo, pero incrementamos los requerimientos hardware –> menos descentralización porque sólo ciertas empresas e instituciones tendrían acceso a ese hardware.
- Si reducimos los requisitos de validación de todas y cada una de las transacciones, disminuye drástricamente la seguridad –> esto tampoco es negociable en Ethereum.
- Si incrementamos las transacciones por segundo en una red descentralizada, se producen más retardos que a su vez crean riesgos de ataque mientras la información está en curso.
¿La solución? Hay una muy buena a largo plazo y algunas no tan buenas a corto.
Empecemos por la más bestia (y mejor).
Eth2: las segundas partes a veces sí son buenas.
La comunidad lleva tiempo trabajando en Ethereum 2 (Eth2), que de forma extremadamente reducida consiste en:
- PoS, proof of Stake: una transición del algoritmo de consenso del pesado Proof of Work hacia el más ligero y ecológico Proof of Stake (lee este artículo para averiguar más sobre algoritmos de consenso).
- Fragmentación o sharding: no es exactamente parte de Eth2 como tal, pero depende del release de Eth2 para funcionar de forma segura. Consiste en la creación de nuevas cadenas, conocidas como shards. Esto también aligerará la carga para cada validador que ya no tendrá que procesar la totalidad de todas las transacciones en la red.
Todo este proceso debería concluir en algún momento de 2023. A partir de ahí, cualquier persona podrá correr un nodo con pocos recursos desde su casa.
Esto significa: mayor adopción y mayor descentralización. Y sin problemas de escalado.
Pero mientras tanto, Ethereum necesita una solución más o menos provisional. Algun así como una segunda capa, más ligera y barata.
Margarina para las blockchains…
¿Qué hace la Capa 2?
Permítanme una pequeña perogrullada (por si acaso): Eth2 y Capa 2 (L2) no son la misma cosa. Ethereum 2.0 (Eth2) se puede considerar una «reescritura» visceral de Ethereum desde sus fundamentos de Capa 1 (consenso).
La Capa 2 (L2, o Layer 2) se refiere a un conjunto de nodos Ethereum que corren una implementación particular e independiente para extender las características de la red principal de Ethereum (Mainnet).
Por ejemplo, L2 es apropiada para videojuegos basados en Ethereum que necesitan transacciones más rápidas y baratas, pero no requieren toda la seguridad base de Ethereum.
En el contexto de la escalabilidad, los protocolos L2 sirven para agrupar, encapsular y validar las transacciones por su cuenta en una capa superior. De esta manera se ahorran los costes de tiempo y validación en las capas inferiores.
Rollups: escalando transacciones en L2
Los Rollups son soluciones de Layer 2 que ejecutan las transacciones en «paquetes acumulativos» que posteriormente publican sus resultados en la capa 1. Esto permite mantener la seguridad nativa de Ethereum, ya que a nivel de datos se usa capa 1, pero a nivel de ejecución se usa la capa 2 (L2).
De forma resumida funcionan así:
- La transacción se ejecuta en la capa 2 (Ethereum L2).
- Los datos de la transacción se guardan para siempre en la capa 1 (Ethereum L1).
- Un contrato inteligente de rollup escrito en la capa 1 se encarga de forzar la ejecución en la capa 2 con los datos de transacción tal y como están almacenados en la capa 1.
Hay dos tipos (y estos conceptos son importantes):
- Acumuladores ZK (Zero-Knowledge): generan una prueba criptográfica llamada prueba de validez (SNARK, SNORK o STARK dependiendo del protocolo), que se publica posteriormente en la capa 1. El contrato inteligente mantiene el estado de todas las transacciones en capa 2, y este estado sólo se puede cambiar con una prueba de validez correcta. Es decir, no hace falta traer a capa 2 todos los datos de la transacción. Y por tanto, la validación es mucho más rápida y barata, pues la comunicación con la capa 1 se limita a la transmisión del SNARK (o SNORK, o STARK) o prueba de validez. Algunos proyectos basados en ZK son Loopring, zkSync, zkTube y Starkware.
- Acumuladores optimistas: asumen que las transacciones son válidas por defecto hasta que se demuestre lo contrario, pues los nodos tienen que poner Ether en stake como garantía. Si un participante lanza un desafío de fraude contra otro y el fraude se demuestra, el participante malicioso pierde el Ether estacado. Hay varias implementaciones: Arbitrum, Optimism y Boba son las más conocidas. Son mucho más lentos y pesados que los acumuladores ZK.
Canales de estado
Utilizan contratos multifirma (multisig) para permitir que los participantes hagan transacciones off-chain, y luego se alineen con la red principal de Ethereum (Mainnet).
Los participantes deberán para eso bloquear Ether como depósito en un contrato multifirma (un contrato multifirma o multisig es un contrato que requiere las firmas de varias claves privadas para ejecutarse).
Esta solución permite ahorrar muchos costes y ejecutar transacciones de forma rápida, pero requiren mantener y establecer un canal entre un conjunto de participantes predeterminado. En Bitcoin una solución similar (aunque no idéntica) es la famosa Lightning Network, que crea unos canales de estado especiales llamados canales de pago (payment channels).
Cadenas laterales (Sidechains)
Hablamos de ellas en este artículo. Es una cadena de bloques independiente pero compatible con EVM (Ethereum Virtual Machine) que se ejecuta de forma paralela a la Mainnet. Utiliza puentes bidireccionales y utiliza sus propias reglas de consenso.
Plasma
Es una cadena lateral que está anclada a la Mainnet de Ethereum y utiliza pruebas de fraude para arbitrar disputas, tal y como los acumuladores optimistas que vimos más arriba. A menudo se las conoce como cadenas hijas, ya que en realidad son copias pequeñas de la Mainnet. Solamente soportan transferencia de tokens, intercambios (swaps) y otras pocas transacciones. Además los retiros pueden tardar varios días debido a las pruebas de fraude. Probablemente la cadena de plasma más conocida a día de hoy es Polygon.
¿Por qué se necesitan tantas soluciones para escalar Ethereum?
- Cuantas más soluciones, más fácilmente se puede aliviar la congestión en el corto plazo (mientras se despliega Eth2).
- Estas soluciones pueden coexistir en perfecta armonía, cada una cumpliendo una función diferente dentro de los problemas que ya hemos revisado.
- No todos los casos de uso requieren la capa 1 de Ethereum (el algoritmo de consenso): las alternativas de capa superior ofrecen beneficios que están fuera del dominio de Ethereum.
- Ninguna solución de escalado L2 Rollup, Sidechain o similar es suficiente para alcanzar los objetivos que se propone Eth2.
Entonces, ¿qué solución es la mejor?
En cuanto al corto-medio plazo, L2 y en particular los rollups zero-knowledge (zk) tienen el mayor potencial debido a que reducen las operaciones E/S con la pesada capa 1 de Ethereum.
En el largo plazo resulta obvio que Eth2 será la solución prevalente para el problema de escalabilidad actual. El mismo padre de Ethereum, Vitalik Buterin, ya lo ha reconocido en alguna ocasión: faltan años para la fase final de Eth2.
Así que mientras tanto tendremos que conformarnos con estas alternativas.
Para ver esto mejor las mejoras en la escalabilidad, pongamos el incremento en transacciones en contexto:
- Actualmente un nodo Ethereum soporta alrededor de 15 TPS (transacciones por segundo).
- Si todo el mundo usara un Rollup L2 sobre Ethereum este número serían 3000 TPS = 200 veces más capacidad.
- Una vez migremos a Eth2 con cadenas fragmentadas: 1.000-5.000 TPS = hasta 333 veces más capacidad que hoy.
- En teoría el Rollup L2 podría seguir aplicándose sobre Eth2 utilizando las cadenas fragmentadas como almacenamiento de las transacciones: 100.000 TPS
¡Un problema menos hasta dentro de muchos años!