Uno de los problemas de Ethereum, o de cualquier blockchain, es que crece en tamaño con el tiempo. Esto significa un aumento en la complejidad de su código y sus requisitos de almacenamiento.
Una cadena de bloques debe conservar todos los datos a lo largo de su historial, que deben ser almacenados por todos los clientes y descargados por los nuevos clientes. Esto conduce a un aumento constante en la carga del cliente y el tiempo de sincronización.
Además, la complejidad del código aumenta con el tiempo porque es “más fácil agregar una nueva característica que eliminar una antigua”, escribió Vitalik Buterin en su weblog.
Por lo tanto, Buterin cree que los desarrolladores deben trabajar activamente para detener estas tendencias crecientes y al mismo tiempo preservar la permanencia de Ethereum. Por lo tanto, Buterin ha presentado The Purge, un plan con tres partes que tienen como objetivo simplificar la cadena de bloques y reducir su carga de datos.
Parte 1: Caducidad del historial
Un nodo Ethereum completamente sincronizado requiere actualmente alrededor de 1,1 TB de espacio de almacenamiento para el cliente de ejecución. Requiere unos cientos de gigabytes más para el cliente de consenso. Según Buterin, la mayoría de estos datos son históricos, como datos sobre bloques, transacciones y recibos históricos, muchos de los cuales tienen varios años. Para almacenar todo este historial, el espacio en disco necesario sigue aumentando en cientos de gigabytes cada año.
Buterin cree que el problema puede resolverse mediante algo llamado Caducidad del historial.
Cada bloque en una cadena de bloques apunta al anterior a través de un enlace hash. Esto significa que el consenso sobre el bloque precise indica un consenso sobre la historia.
Según Buterin, siempre que la crimson tenga consenso sobre el bloque precise, cualquier dato histórico relacionado puede ser proporcionado por un solo actor a través de una prueba Merkle, que permite a cualquiera verificar su integridad. Esto significa que en lugar de que cada nodo almacene todos los datos, cada nodo podría almacenar un pequeño porcentaje de los datos, lo que scale back los requisitos de almacenamiento.
Buterin básicamente sugiere adoptar el modelo operativo de las redes torrent, donde cada participante almacena y distribuye sólo una pequeña parte de los datos almacenados y distribuidos por la crimson.
Ethereum ya ha tomado medidas para reducir los requisitos de almacenamiento: cierta información ahora tiene fecha de vencimiento. Por ejemplo, los bloques de consenso se almacenan durante seis meses y los blobs durante 18 días.
EIP-4444 es otro paso en esa dirección: tiene como objetivo limitar el período de almacenamiento de bloques y recibos históricos a un año. Sin embargo, el objetivo a largo plazo es tener un período fijo, como 18 días, durante el cual cada nodo tenga que almacenar todo y luego los datos más antiguos se almacenen de forma distribuida en una crimson peer-to-peer.
Parte 2: Caducidad del Estado
Según Buterin, eliminar la necesidad de que los clientes almacenen todo el historial no resuelve por completo el problema de los excesivos requisitos de almacenamiento. Esto se debe a que un cliente tiene que aumentar su capacidad de almacenamiento en alrededor de 50 GB cada año debido al “crecimiento continuo del estado: saldos de cuentas y nonces, código de contrato y almacenamiento de contrato”.
Se puede crear un nuevo objeto de estado de tres maneras: creando una nueva cuenta, enviando ETH a una nueva cuenta y configurando una ranura de almacenamiento previamente inactiva. Una vez que se crea un objeto de estado, permanece en ese estado para siempre.
Buterin cree que la solución para caducar objetos de estado automáticamente con el tiempo debe ser eficiente, fácil de usar y amigable para los desarrolladores. Esto significa que la solución no debería requerir grandes cantidades de cálculo, que los usuarios no deberían perder el acceso a sus tokens si los dejan intactos durante años, y que los desarrolladores no sufrirán grandes inconvenientes en el proceso.
Buterin sugiere dos tipos de “soluciones menos malas conocidas”:
Soluciones de vencimiento de estado parcialPropuestas de vencimiento de estado basadas en períodos de dirección.
Caducidad parcial del estado
Las propuestas de expiración parcial del estado funcionan según el principio de dividir el estado en “fragmentos”. Esto requeriría que todos almacenen el “mapa de nivel superior” de qué fragmentos están vacíos o no vacíos para siempre. Los datos dentro de los fragmentos solo se almacenan si se ha accedido a ellos recientemente. El mecanismo de “resurrección” permite a cualquiera recuperar los datos en una porción si no están almacenados, proporcionando prueba de cuáles eran los datos.
Vencimiento del estado basado en el período de dirección
La caducidad del estado basada en el período de dirección propone tener una lista creciente de árboles de estado en lugar de solo uno que almacene todo el estado. Cualquier estado que se lea o escriba se actualiza en el árbol de estados más reciente. Se agrega un nuevo árbol de estado vacío una vez por período, que podría ser un año.
En este escenario, los árboles de estado más antiguos se congelan y los nodos completos necesitan almacenar solo los dos árboles más recientes. Si un objeto de estado pasa a formar parte de un árbol caducado, se puede leer o escribir, pero la transacción requeriría una prueba Merkle para ello. Después de la transacción, se volverá a agregar al último árbol.
Limpieza de funciones
Con el tiempo, todos los protocolos se vuelven complejos, por simples que sean al principio.
Buterin escribió:
“Si no queremos que Ethereum entre en un agujero negro de complejidad cada vez mayor, debemos hacer una de dos cosas: (i) dejar de hacer cambios y osificar el protocolo, (ii) poder eliminar funciones y reducir complejidad.”
Según Buterin, limpiar la complejidad de Ethereum requiere varias correcciones pequeñas, como eliminar el código de operación SELFDESTRUCT, eliminar tipos de transacciones antiguos y comités de cadena de balizas, reformar LOG y más. Buterin también sugirió simplificar la mecánica del gasoline, eliminar la observabilidad del gasoline y mejorar el análisis estático.
Mencionado en este artículo.