Compresión de datos en blockchain, una necesidad para descentralizar el ecosistema

Por qué debemos pensar en serio en la comprensión de datos en blockchain

En este artículo vamos a explicar por qué debemos empezar a pensar en serio la compresión de datos en blockchain. Uno de los grandes problemas de la tecnología blockchain es el gran volumen de datos que manejan estas redes y la necesidad de almacenamiento de los mismos. La razón es que redes blockchains públicas, como Bitcoin o Ethereum, requieren una cantidad considerable de espacio de almacenamiento, lo que puede limitar la capacidad del sistema para escalar y mantener su descentralización. Este es el motivo por el que muchos desarrolladores trabajan en una solución: la compresión de datos en blockchain.

¿Qué es la compresión de datos en blockchain?

La compresión de datos en blockchain es un proceso utilizado para reducir el tamaño de los datos que se almacenan y transmiten en una cadena de bloques. Su objetivo principal es optimizar el uso del espacio de almacenamiento y mejorar la eficiencia de la transmisión de datos, lo que a su vez puede aumentar la capacidad de procesamiento y reducir los costes asociados con el mantenimiento de la cadena de bloques.

LABITCONF, EVENTO DE REFERENCIA GLOBAL DE BITCOIN, EMPIEZA HOY EN BUENOS AIRES

Un problema grave

¿Por qué necesitamos comenzar a pensar en la compresión de datos en blockchain? En primer lugar porque cada transacción que se emite en una red blockchain es almacenada y los nodos que contienen este historial tienen una alta necesidad de espacios de almacenamiento. Por ejemplo, la red de Bitcoin requiere en la actualidad unos 615 GB de datos de almacenamiento (en octubre 2024). En octubre de 2023, la red de Bitcoin tan solo ocupaba 522 GB. Se trata de un incremento de casi un 15 % en los requisitos de almacenamiento en tan solo un año. Este fuerte incremento está impulsado por la llegada de Rune Protocol, BRC-20 y otros protocolos de tokens sobre Bitcoin.

Una situación parecida se ve en Ethereum, donde el tamaño de la blockchain (su estado) es de cerca de 1,2 TB (unos 1200 GB), casi el doble de Bitcoin. En Ethereum también existe un nodo especial, conocido como Archive Node, que tiene todo el historial y estados de la blockchain de Ethereum. En este caso, el nodo ocupa 20 TB (unos 20.000 GB) de datos, subrayando el enorme requerimiento de esta blockchain.

Esto significa que si Bitcoin y Ethereum tienen problemas de este tipo con poco más de 80 millones de usuarios ¿Qué pasaría si la tecnología se masifica y se llegan a los mil millones de usuarios? Viéndolo desde esa perspectiva entendemos que el problema del almacenamiento se puede disparar de forma importante, lo que puede limitar la descentralización de las redes blockchain y por tanto su seguridad. Es aquí donde entra la compresión de datos en blockchain para poder solucionar la cuestión de forma inteligente.

Comprimiendo los datos de una blockchain

Para entender cómo se puede comprimir los datos de una blockchain, lo primero que debemos conocer muy bien es cómo está estructurado. Algo necesario, porque los datos de las transacciones y de los bloques deben ser preservados para evitar dañar la seguridad de la red y de sus operaciones. Así, por ejemplo, los desarrolladores de Bitcoin, han diseñado los bloques siguiendo esta estructura:

  • Versión: 4 bytes que indican la versión del protocolo.
  • Hash del bloque anterior: 32 bytes que apuntan al bloque anterior en la cadena.
  • Raíz del árbol de Merkle: 32 bytes que representan el hash de todos los hashes de las transacciones en el bloque.
  • Timestamp: 4 bytes que indican la hora en que se creó el bloque.
  • Dificultad: 4 bytes que indican el nivel de dificultad del algoritmo de prueba de trabajo.
  • Nonce: 4 bytes que son un número que los mineros ajustan para encontrar un hash válido.
  • Payload: aquí se incluye toda la información de cada una de las transacciones, las cuales tienen sus propias estructuras de datos.

Junto a estos datos están todas las transacciones que se incluyen en un bloque. Conociendo esto, ya sabemos que debemos comprimir. La pregunta final es ¿Qué algoritmo usamos para comprimir esos datos?

¿QUÉ SIGNIFICA LA ESCALABILIDAD BLOCKCHAIN?

El gran problema: los algoritmos de compresión

Aquí es donde nos encontramos con el mayor problema de desarrollo en la compresión de datos en blockchain. Hay que tener en cuenta que todo en blockchain usa criptografía, una criptografía que es capaz de reducir grandes cantidades de datos en cadenas únicas de datos. Por ello, cuidar la reproducibilidad y verificabilidad de los datos es vital para mantener la seguridad de la red. Esto es un enorme problema: porque no podemos comprimir datos si esto nos lleva a perder data vital para la seguridad de la blockchain. Hay que tener en cuenta que la mayoría de algoritmos de compresión tienen este problema.

Métodos de compresión en la cadena de bloques

Sin embargo, los desarrolladores han encontrado varios métodos. Uno de ellos, lo podemos ver en este documento, donde existe una idea muy clara de cómo realizar este tipo de procesos de compresión de datos en blockchain. Entre los métodos más comunes para el desarrollo de compresión de datos, los desarrolladores de blockchain trabajan en:

Eliminación de datos y recuperación

Este método implica omitir temporalmente ciertas partes de los datos de las transacciones que pueden ser derivadas o recalculadas más tarde. Por ejemplo, los datos de firma de transacciones intermedias en una cadena pueden ser eliminados y luego recalculados por el destinatario final.

Uso de altura de bloque e índice

En lugar de almacenar todo el dato de la transacción, este método utiliza la altura del bloque (la posición del bloque en la cadena de bloques) y el índice de la transacción (la posición de la transacción dentro del bloque) como referencias. Esto reduce significativamente el tamaño de la transacción, permitiendo que más transacciones se incluyan en un solo bloque.

Reemplazo de enteros de longitud variable

Este enfoque implica el uso de enteros de longitud variable para representar campos de datos en una transacción, en lugar de formatos de longitud fija. El tamaño del entero se adapta según el valor que representa, lo que permite una codificación de datos más eficiente.

Reconstrucción de claves públicas

En este método, solo se incluye una fracción de la clave pública en los datos de la transacción. La clave pública completa se reconstruye posteriormente por el destinatario o un nodo de validación utilizando métodos criptográficos. Esto es especialmente útil en transacciones donde los datos de la clave pública representan una parte significativa del tamaño de la transacción.

Desafíos de la escalabilidad y el tamaño de los bloques

Avanzar en este tipo de medidas es necesario porque a medida que el volumen de transacciones en Bitcoin aumenta (o en cualquier otra blockchain), el tamaño de los bloques también lo hace. Esto puede llevar a problemas de escalabilidad, como tiempos de confirmación más largos y costes de transacción más altos.

Además, el almacenamiento de la cadena de bloques completa se vuelve cada vez más costoso y complejo, lo que puede disuadir a los nodos de mantener una copia completa de la cadena, comprometiendo la descentralización del sistema.

ASÍ ES COMO IA Y BLOCKCHAIN PUEDEN APORTAR CONFIANZA EN EL USO DE LA TECNOLOGÍA

Recordemos que la descentralización es un pilar fundamental de la tecnología blockchain. Sin embargo, el crecimiento exponencial del tamaño de la cadena de bloques puede llevar a una centralización involuntaria. Si el almacenamiento de la cadena completa se vuelve demasiado costoso, solo los nodos con recursos significativos podrán mantener una copia completa, lo que reduce la diversidad de los nodos y aumenta el riesgo de centralización.

Aplicaciones del esquema de compresión

La compresión ayudaría a resolver estos problemas de forma económica. Bastaría con actualizar el software y estaríamos ganando todas estas nuevas ventajas. Por ejemplo, con un esquema de compresión podemos reducir el ancho de banda necesario para sincronizar nodos nuevos. Así, cuando un nuevo nodo se une a la red, puede descargar una versión comprimida de la cadena de bloques, que luego descomprime y almacena localmente.

Por otro lado, los nodos completos pueden utilizar el algoritmo de compresión para reducir el espacio de almacenamiento necesario para la cadena de bloques. Al mantener una versión comprimida de la cadena, los nodos pueden liberar espacio de almacenamiento sin comprometer la integridad de la cadena. Así por ejemplo, si tienes un nodo instalado en la nube, podrás ver como la factura de almacenamiento de datos se reduce de forma importante, un impacto que se multiplica si, por ejemplo, eres una empresa con cientos o miles de nodos bajo tu control (ej: LIDO, Pinata, ConsenSys) lo que al mismo tiempo reduce los costos de acceso a estos servicios.

Impulsando la adopción

Quizá, el mayor avance lo veremos en los nodos SPV (Simplified Payment Verification), nodos ligeros que solo almacenan los encabezados de los bloques. Para validar una transacción, un nodo SPV necesita obtener información suficiente de un nodo completo, incluyendo una ruta de Merkle que conecta el hash de la transacción con el hash de la raíz del árbol de Merkle en el encabezado del bloque. El esquema de compresión no afecta la capacidad de los nodos SPV para validar transacciones, ya que los hashes de las transacciones se pueden reconstruir a partir de sus versiones codificadas.

Como podemos ver, la compresión en blockchain es una necesidad crucial para mantener la escalabilidad y la descentralización del ecosistema. En este sentido, la mayoría de proyectos aún están en desarrollo, no siendo probados ni desplegados en producción, por lo que no podemos aprovecharnos de sus capacidades y los problemas de escalabilidad relacionados siguen incrementándose.

José Maldonado
Comparte esto:
  • bitcoinBitcoin (BTC) $ 94,689.00
  • ethereumEthereum (ETH) $ 3,447.11
  • tetherTether (USDT) $ 0.999247
  • cardanoCardano (ADA) $ 0.974981
  • stellarStellar (XLM) $ 0.505380
  • chainlinkChainlink (LINK) $ 17.76
  • bitcoin-cashBitcoin Cash (BCH) $ 502.00
  • litecoinLitecoin (LTC) $ 94.35
  • moneroMonero (XMR) $ 154.99
  • tezosTezos (XTZ) $ 1.25
  • eosEOS (EOS) $ 0.825470