EIP-4444 aborda el crecimiento histórico de Ether y deja espacio para aumentos en el límite de gas.

Lectura relacionada: "Paradigma: desafíos y soluciones para el crecimiento del estado de Ethereum"

撰文:Tormenta Slivkoff、Georgios Konstantopoulos

Compilado por: Luffy, Foresight News

El crecimiento histórico es actualmente el mayor obstáculo en la expansión de Ethereum. Sorprendentemente, el crecimiento histórico se ha convertido en un problema mayor que el crecimiento estatal. Dentro de unos años, los datos históricos superarán la capacidad de almacenamiento de muchos nodos de Ethereum.

La buena noticia es:

  • El crecimiento histórico es un problema más fácil de resolver que el crecimiento estatal.

  • Las soluciones ya están en desarrollo activo.

  • Abordar el crecimiento histórico aliviará el problema de crecimiento del estado.

En este artículo, continuamos nuestro estudio del problema de escalamiento de Ethereum de la Parte 1, ahora dirigiendo nuestra atención del crecimiento estatal al crecimiento histórico. Utilizando un conjunto de datos granulares, nuestro objetivo es 1) comprender técnicamente los cuellos de botella de escala de Ethereum y 2) contribuir a la discusión sobre soluciones óptimas para el límite de gas de Ethereum.

¿Qué es el crecimiento histórico?

La historia es la colección de todos los bloques y transacciones ejecutadas por Ethereum a lo largo de su vida, son todos los datos desde el bloque génesis hasta el bloque actual. El crecimiento histórico es la acumulación de nuevos bloques y nuevas transacciones a lo largo del tiempo.

La Figura 1 muestra el crecimiento histórico frente a varias métricas de protocolo y limitaciones de hardware del nodo Ethereum. El crecimiento histórico está limitado por un conjunto diferente de restricciones de hardware que el crecimiento estatal. El crecimiento histórico ejerce presión sobre la IO de la red, ya que se deben transmitir nuevos bloques y transacciones a través de la red. El crecimiento del historial también ejerce presión sobre el espacio de almacenamiento de los nodos, ya que cada nodo de Ethereum almacena una copia completa del historial. Si el historial crece lo suficientemente rápido como para exceder estos límites de hardware, el nodo ya no podrá alcanzar un consenso estable con sus pares. Para obtener una descripción general del crecimiento del estado y otros obstáculos a la escala, consulte la Parte 1 de esta serie.

Figura 1: cuello de botella en la expansión de Ethereum

Hasta hace poco, la mayor parte del rendimiento de la red de cada nodo se utilizaba para transmitir el historial (como nuevos bloques y transacciones). Esto cambió con la introducción de blobs en el hard fork de Dencun. Los blobs ahora representan una gran parte de la actividad de la red de nodos. Sin embargo, los blobs no se consideran parte del historial porque 1) los nodos solo los almacenan durante 2 semanas y luego los descartan, y 2) no es necesario que repitan los datos de la creación de Ethereum. Debido a (1), los blobs no aumentan significativamente la carga de almacenamiento de cada nodo de Ethereum. Hablaremos de los blobs más adelante en este artículo.

En este artículo nos centraremos en el crecimiento histórico y discutiremos la relación entre historia y estatus. Debido a que el crecimiento estatal y el crecimiento histórico tienen algunas limitaciones de hardware superpuestas, son problemas relacionados y resolver uno puede ayudar a resolver el otro.

¿Qué tan rápido ha crecido la historia?

La Figura 2 muestra la tasa de crecimiento histórica de Ethereum desde su creación. Cada línea vertical representa un mes de crecimiento. El eje y representa el crecimiento histórico en gigabytes durante el mes. Las transacciones se clasifican por su "dirección de destino" y el tamaño se representa mediante bytes RLP (https://ethereum.org/en/developers/docs/data-structures-and-encoding/rlp/). Los contratos que no pueden identificarse fácilmente se clasifican como "desconocidos". La categoría "Otros" incluye una variedad de subcategorías como infraestructura y juegos.

Figura 2: Tasa de crecimiento histórica de Ethereum a lo largo del tiempo

Algunas conclusiones clave del cuadro anterior:

  • El crecimiento histórico ha sido de 6 a 8 veces más rápido que el crecimiento estatal: el crecimiento histórico alcanzó recientemente un máximo de 36,0 GiB/mes y actualmente se sitúa en 19,3 GiB/mes. El crecimiento del estado alcanzó un máximo de aproximadamente 6,0 GiB/mes y actualmente es de 2,5 GiB/mes. Más adelante en este artículo se describe una comparación de la historia y el estado en términos de crecimiento y tamaño acumulado.

  • Antes de Decun, las tasas de crecimiento históricas se habían acelerado: mientras que los estados habían crecido aproximadamente de manera lineal a lo largo de los años (ver Parte 1), el crecimiento histórico había sido superlineal. Dado que las tasas de crecimiento lineal conducen a un crecimiento cuadrático del tamaño general, las tasas de crecimiento superlineales conducen a un crecimiento mayor que cuadrático del tamaño general. Esta aceleración se detiene abruptamente después de Dencun. Esta es la primera vez que Ethereum experimenta una caída significativa en su tasa de crecimiento histórica.

  • Gran parte del crecimiento histórico reciente proviene de acumulaciones: cada L2 publica una copia de sus transacciones en la red principal. Esto generó una gran cantidad de historia y resultó en que Rollup se convirtiera en el contribuyente más importante al crecimiento histórico durante el año pasado. Sin embargo, Dencun permite que L2 publique los datos de sus transacciones utilizando blobs en lugar de historial, por lo que Rollup ya no genera la mayor parte del historial de Ethereum. Cubriremos los resúmenes con más detalle más adelante en este artículo.

¿Quién es el mayor contribuyente al crecimiento histórico de Ethereum?

El volumen histórico generado por diferentes categorías de contratos revela cómo los patrones de uso de Ethereum han evolucionado con el tiempo. La Figura 3 muestra la contribución relativa de varias categorías de contratos. Estos son los mismos datos que los de la Figura 2 normalizados.

Figura 3: Contribución de diferentes categorías de contratos al crecimiento histórico

Los datos revelan cuatro períodos distintos de patrones de uso de Ethereum:

  • Primeros años (púrpura): Los primeros años de Ethereum vieron poca o ninguna actividad en la cadena. La mayoría de estos primeros contratos ahora son difíciles de identificar y están etiquetados como "desconocidos" en los gráficos.

  • La era ERC-20 (verde): el estándar ERC-20 se finalizó a finales de 2015, pero no obtuvo un desarrollo significativo hasta 2017 y 2018. Los contratos ERC-20 se convirtieron en la mayor fuente de crecimiento histórico en 2019.

  • Era DEX/DeFi (marrón): Los contratos DEX y DeFi aparecieron en la cadena ya en 2016 y comenzaron a ganar terreno en 2017. Pero no fue hasta el verano de DeFi de 2020 que se convirtieron en la categoría más grande en términos de crecimiento histórico. Los contratos DeFi y DEX representaron más del 50% del crecimiento histórico en 2021 y partes de 2022.

  • Era Rollup (gris): a principios de 2023, L2 Rollup comienza a ejecutar más transacciones que la red principal. En los meses previos a Dencun, generaron aproximadamente 2/3 de la historia de Ethereum.

Cada era representa patrones de uso de Ethereum más complejos que la anterior. La complejidad puede verse como una forma de escalamiento de Ethereum a lo largo del tiempo y no puede medirse con métricas simples como las transacciones por segundo.

En el mes de datos más reciente (abril de 2024), Rollup ya no produce gran parte del historial. No está claro si la historia futura surgirá de DEX y DeFi, o si surgirán algunos patrones de uso nuevos.

¿Qué pasa con las manchas?

La bifurcación dura Dencun cambió significativamente la dinámica de crecimiento histórico al introducir blobs, lo que permitió a Rollup publicar datos utilizando blobs baratos en lugar de registros históricos. La Figura 4 amplía la tasa de crecimiento histórica de Dencun antes y después de la actualización. El gráfico es similar a la Figura 2, excepto que cada línea vertical representa un día en lugar de un mes.

Figura 4: El impacto de Dencun en el crecimiento histórico

Podemos sacar varias conclusiones clave de este gráfico:

  • El crecimiento histórico de los resúmenes se ha reducido aproximadamente 2/3 desde Dencun: la mayoría de los resúmenes se han convertido de datos de llamadas a blobs, lo que reduce en gran medida la cantidad de historial que generan. Sin embargo, en abril de 2024, todavía hay algunos paquetes acumulativos que aún no se han convertido de datos de llamadas a blobs.

  • El crecimiento histórico total ha disminuido aproximadamente 1/3 desde Dencun: Dencun solo redujo el crecimiento histórico de los rollups. Otras categorías de contratos han experimentado ligeros aumentos en su crecimiento histórico. Incluso después de Dencun, el crecimiento histórico sigue siendo 8 veces el crecimiento estatal (consulte la siguiente sección para obtener más detalles).

Aunque los blobs han ralentizado las tasas de crecimiento históricas, siguen siendo una característica nueva de Ethereum. No está claro a qué nivel se estabilizarían las tasas de crecimiento históricas en presencia de burbujas.

¿A qué velocidad es aceptable el crecimiento histórico?

Aumentar el límite de gas aumentará la tasa de crecimiento histórica. Por lo tanto, las propuestas para aumentar el límite de gas (como Pump the Gas) deben considerar la relación entre el crecimiento histórico y el cuello de botella de hardware de cada nodo.

La determinación de tasas de crecimiento históricas aceptables comienza con la comprensión de cuánto tiempo puede sostenerse el hardware de nodo actual en términos de red y almacenamiento. El hardware de red puede mantener el status quo indefinidamente, ya que es poco probable que las tasas de crecimiento históricas vuelvan a los picos anteriores a Dencun antes de que se aumenten los límites de gas. Sin embargo, la carga de almacenamiento histórico aumenta con el tiempo. Según la estrategia de almacenamiento actual, es inevitable que el disco duro de almacenamiento de cada nodo eventualmente se llene con registros históricos.

La Figura 5 muestra la carga de almacenamiento de los nodos Ethereum a lo largo del tiempo y predice el crecimiento de la carga de almacenamiento en los próximos 3 años. Las previsiones se refieren a tasas de crecimiento de abril de 2024. Esta tasa de crecimiento puede aumentar o disminuir a medida que los patrones de uso o los límites de gas cambien en el futuro.

Figura 5: Historia, estado y tamaño de la carga de almacenamiento de nodo completo

Podemos sacar varias conclusiones clave de esta figura:

  • La historia ocupa aproximadamente 3 veces el espacio de almacenamiento del estado. Esta diferencia también aumenta con el tiempo, ya que la tasa de crecimiento histórica es aproximadamente 8 veces la del estado.

  • 1,8 TiB es un umbral crítico y muchos nodos se verán obligados a actualizar sus discos duros de almacenamiento. 2 TB es un tamaño de unidad de almacenamiento común que proporciona solo 1,8 TiB de espacio utilizable. Tenga en cuenta que TB (1 billón de bytes) es una unidad diferente a TiB (= 1024^4 bytes). Para muchos operadores de nodos, el umbral crítico "verdadero" es aún más bajo, ya que los validadores posteriores a la fusión deben ejecutar el cliente de consenso junto con el cliente de ejecución.

  • El umbral crítico se alcanzará en 2 o 3 años. Aumentar el límite de gasolina en cualquier cantidad acelerará este tiempo en consecuencia. Alcanzar este umbral impondrá una carga de mantenimiento significativa a los operadores de nodos y requerirá la compra de hardware adicional (como unidades NVME de 300 dólares).

A diferencia de los datos estatales, los datos históricos se adjuntan únicamente y se accede a ellos con mucha menos frecuencia. Por lo tanto, en teoría es posible almacenar datos históricos por separado de los datos estatales en medios de almacenamiento más baratos. Esto se puede lograr a través de algunos clientes como Geth.

Además de la capacidad de almacenamiento, la E/S de la red es otra limitación importante para el crecimiento histórico. A diferencia de la capacidad de almacenamiento, los límites de IO de la red no causarán problemas a los nodos en el corto plazo, pero estos límites se volverán importantes a medida que los límites de gas aumenten en el futuro.

Para comprender cuánto crecimiento histórico puede soportar la capacidad de la red de un nodo Ethereum típico, es necesario conocer la relación entre el crecimiento histórico y varias métricas de salud de la red, como la tasa de reorganización, los fallos de ranuras, los fallos finales, los fallos de certificación y los fallos del comité de sincronización. , etc. Golpear y bloquear retrasos en la confirmación. El análisis de estas métricas está más allá del alcance de este artículo, pero se puede encontrar más información en una encuesta anterior sobre la salud de la capa de consenso. Además, el proyecto Xatu de la Fundación Ethereum ha estado creando conjuntos de datos públicos para acelerar dicho análisis.

¿Cómo resolver el problema del crecimiento histórico?

El crecimiento histórico es un problema más fácil de resolver que el crecimiento estatal. Puede abordarse casi en su totalidad mediante la propuesta candidata EIP-4444. Este EIP cambia cada nodo de guardar todos los datos históricos de Ethereum a solo un año de datos históricos. Después de la implementación de EIP-4444, el almacenamiento de datos ya no será un cuello de botella para la expansión de Ethereum y el aumento de los límites de Gas ya no estará limitado a largo plazo. EIP -4444 es necesario para la sostenibilidad a largo plazo de la red; de lo contrario, el crecimiento histórico sería rápido y requeriría actualizaciones periódicas del hardware de los nodos de la red.

La Figura 6 muestra el impacto de EIP-4444 en la carga de almacenamiento de cada nodo durante los próximos 3 años. Esto es lo mismo que la Figura 4, pero con la adición de líneas más claras que representan la carga de almacenamiento después de que se implemente EIP-4444.

Figura 6: Impacto de EIP-4444 en la carga de almacenamiento del nodo Ethereum

De esta figura se pueden extraer algunas conclusiones clave:

  • EIP-4444 reducirá la carga de almacenamiento actual a la mitad. La carga de almacenamiento disminuirá de 1,2 TiB a 633 GiB.

  • EIP-4444 estabilizará la carga de almacenamiento del historial. Suponiendo una tasa de crecimiento histórica constante, los datos históricos se descartarán al ritmo en que se generen.

  • Después de EIP-4444, se necesitarían muchos años para que la carga de almacenamiento del nodo llegue a donde está hoy. Esto se debe a que el crecimiento del estado será el único factor que aumentará la carga de almacenamiento, y el estado crece más lentamente que el crecimiento histórico.

Después de la implementación de EIP-4444, el crecimiento histórico seguirá imponiendo cierto nivel de carga de almacenamiento, ya que los nodos almacenarán el valor de un año de historial. Sin embargo, incluso si Ethereum alcanza una escala global, esta carga no será difícil de resolver. Una vez que se demuestre que los métodos de mantenimiento de registros históricos son confiables, el tiempo de vencimiento de un año de EIP-4444 puede reducirse a meses, semanas o incluso menos.

¿Cómo guardar la historia de Ethereum?

EIP-4444 plantea una pregunta: si los propios nodos de Ethereum no guardan el historial, ¿cómo se debe conservar? La historia juega un papel central en la verificación, la contabilidad y el análisis de Ethereum, por lo que preservarla es crucial. Afortunadamente, la preservación del historial es un problema simple que requiere solo 1/n proveedores de datos honestos. Esto contrasta con los problemas de consenso estatal que requieren honestidad de 1/3 a 2/3 de los participantes. Los operadores de nodos pueden verificar la autenticidad del conjunto de datos históricos 1) reproduciendo todas las transacciones desde el bloque de génesis y 2) verificando que estas transacciones reaparecen con la misma raíz de estado que el lado actual de la cadena de bloques.

Hay muchas formas de guardar la historia.

  • Torrents/P2P: Los torrents son el método más fácil y fiable. Los nodos de Ethereum pueden empaquetar periódicamente partes del historial y compartirlo como un archivo torrent público. Por ejemplo, un nodo podría crear un nuevo archivo torrent histórico cada 100.000 bloques. Los clientes de nodos como erigon ya realizan este proceso de una forma algo no estandarizada. Para estandarizar este proceso, todos los clientes del nodo deben utilizar el mismo formato de datos, los mismos parámetros y la misma red P2P. Los nodos podrán elegir si participar en esta red en función de sus capacidades de almacenamiento y ancho de banda. Los torrents tienen la ventaja de utilizar estándares abiertos de alta definición que ya son compatibles con una gran cantidad de herramientas de datos.

  • Portal Network: Portal Network es una nueva red diseñada específicamente para alojar datos de Ethereum. Este es un enfoque similar a un torrent y al mismo tiempo proporciona algunas funciones adicionales para facilitar la verificación de datos. La ventaja de Portal Network es que estas capas de validación adicionales brindan a los clientes ligeros utilidades para validar y consultar de manera eficiente conjuntos de datos compartidos.

  • Alojamiento en la nube: los servicios de almacenamiento en la nube como S3 de AWS o R2 de Cloudflare ofrecen una opción económica y de alto rendimiento para preservar el historial. Sin embargo, este enfoque introduce más riesgos legales y operativos comerciales, ya que no hay garantía de que estos servicios en la nube siempre estén dispuestos y sean capaces de alojar datos de criptomonedas.

Los desafíos de implementación restantes son más sociales que técnicos. La comunidad Ethereum necesita coordinar los detalles de implementación específicos para que puedan integrarse directamente en cada cliente de nodo. En particular, realizar una sincronización completa (en lugar de una sincronización instantánea) a partir del bloque génesis requerirá recuperar el historial de un proveedor de historial en lugar de un nodo Ethereum. Estos cambios técnicamente no requieren una bifurcación dura, por lo que podrían implementarse antes que la próxima bifurcación dura de Ethereum, Pectra.

L2 también puede utilizar todos estos métodos para guardar el historial para guardar los datos de blobs que publican en la red principal. En comparación con guardar el historial, guardar blobs es 1) más difícil porque el volumen total de datos es mucho mayor y 2) menos importante porque los blobs no son necesarios para reproducir el historial de la red principal. Sin embargo, la preservación del blob sigue siendo necesaria para que cada L2 pueda reproducir su propia historia. Por lo tanto, alguna forma de preservación de blobs es importante para todo el ecosistema Ethereum. Además, si L2 desarrolla una infraestructura sólida de almacenamiento de blobs, también podrán almacenar fácilmente datos históricos de L1.

Sería útil comparar directamente los datos almacenados por varias configuraciones de nodos antes y después de EIP-4444. La Figura 7 muestra la carga de almacenamiento para diferentes tipos de nodos de Ethereum. Los datos estatales son cuentas y contratos, los datos históricos son bloques y transacciones, y los datos de archivo son un conjunto de índices de datos opcionales. Los recuentos de bytes en esta tabla se basan en la instantánea de reth más reciente, pero las cifras de otros clientes de nodos deberían ser aproximadamente comparables.

Figura 7: Carga de almacenamiento de diferentes tipos de nodos de Ethereum

en otras palabras,

  • Los nodos de archivo almacenan datos históricos y de estado, así como datos de archivo. Los nodos de archivo se utilizan cuando alguien quiere poder consultar fácilmente el estado histórico de la cadena.

  • Los nodos completos solo almacenan datos históricos y datos de estado. La mayoría de los nodos actuales son nodos completos. La carga de almacenamiento de un nodo completo es aproximadamente la mitad que la de un nodo de archivo.

  • Los nodos completos posteriores a EIP-4444 solo almacenan datos estatales y el año más reciente de datos históricos. Esto reduce la carga de almacenamiento en el nodo de 1,2 TiB a 633 GiB y lleva el espacio de almacenamiento para datos históricos a un valor de estado estable.

  • Los nodos sin estado, también conocidos como "nodos ligeros", no almacenan ningún conjunto de datos y pueden verificarse inmediatamente al final de la cadena. Este tipo de nodo será posible una vez que se agreguen a Ethereum los intentos de Verkle u otros esquemas de compromiso estatal.

Finalmente, hay algunos EIP adicionales que limitan la tasa de crecimiento histórica, en lugar de simplemente adaptarse a la tasa de crecimiento actual. Esto ayuda a mantenerse dentro de las limitaciones de E/S de la red a corto plazo y dentro de las limitaciones de almacenamiento a largo plazo. Si bien EIP-4444 sigue siendo necesario para la sostenibilidad a largo plazo de la red, estos otros EIP ayudarán a Ethereum a escalar de manera más eficiente en el futuro:

  • EIP-7623: Cambio de precio de los datos de llamadas para encarecer ciertas transacciones con datos de llamadas excesivos. Encarecer estos patrones de uso obligará a que algunos de ellos se conviertan de datos de llamadas a blobs. Esto reducirá las tasas de crecimiento históricas.

  • EIP-4488: Implemente un límite en la cantidad total de datos de llamadas que se pueden incluir en cada fragmento. Esto impondrá límites más estrictos al ritmo al que pueden crecer los registros históricos.

Estos EIP son más fáciles de implementar que EIP-4444, por lo que pueden servir como un recurso provisional a corto plazo hasta que EIP-4444 entre en producción.

Conclusión

El propósito de este artículo es utilizar datos para comprender 1) cómo funciona el crecimiento histórico y 2) formas de resolver el problema. Gran parte de los datos contenidos en este artículo son difíciles de obtener a través de medios tradicionales, por lo que esperamos que su disponibilidad proporcione nuevos conocimientos sobre cuestiones de crecimiento histórico.

El crecimiento histórico no ha recibido suficiente atención como cuello de botella para la expansión de Ethereum. Incluso sin aumentar el límite de gasolina, la actual convención de ahorro de historia de Ethereum obligará a muchos nodos a actualizar su hardware en unos pocos años. Afortunadamente, este no es un problema difícil de resolver. Ya existe una solución clara en EIP-4444. Creemos que la implementación de este EIP debería acelerarse para permitir futuros aumentos en el límite de gasolina.