¿Qué significa blockchain bloat?
Blockchain bloat (Blockchain inflamada o hinchada), también llamado state bloat o chain bloat, es una situación que puede ocurrir cuando un blockchain ha crecido tanto que los nodos de la red peer-to-peer (P2P) que soportan el libro de contabilidad distribuido ya no pueden almacenar, procesar y compartir los datos del libro de contabilidad de manera eficiente.
En general, el término “bloat” hace referencia a cualquier tipo de crecimiento o expansión excesivos que puedan provocar ineficacia, lentitud o falta de manejabilidad.
Cómo funciona una cadena de bloques
Las cadenas de bloques son libros de contabilidad descentralizados y distribuidos que registran las transacciones de forma secuencial y permanente. Las transacciones se agrupan en bloques de almacenamiento, y los bloques se enlazan entre sí en una cadena.
Cada bloque contiene un conjunto de transacciones, una marca de tiempo, una referencia al bloque anterior y otros metadatos. Antes de que un bloque se añada a la cadena, pasa por un proceso de consenso que requiere que los nodos de la red se pongan de acuerdo mediante programación sobre el contenido y la validez del nuevo bloque. Los detalles de este proceso pueden variar según el tipo de cadena de bloques y su mecanismo de consenso subyacente.
Una vez que un bloque se añade a la cadena de bloques, su contenido se considera inmutable. Aunque técnicamente es posible alterar el contenido de un bloque, resulta caro desde el punto de vista informático y prácticamente inviable hacerlo, ya que cada bloque de la cadena de bloques está vinculado al anterior a través de un hash criptográfico.
Cualquier cambio en el contenido de un bloque modificará su hash y romperá el vínculo con los bloques posteriores.
Problemas de escalabilidad de la cadena de bloques
A medida que se utiliza una cadena de bloques y se añaden más transacciones al libro de contabilidad distribuido, los nodos de la red necesitan más recursos y más tiempo para procesar, almacenar y validar todo el historial de la cadena cada vez que se añade un nuevo bloque a la cadena. Este problema de escalabilidad puede verse agravado por la acumulación adicional de microtransacciones, transacciones de polvo de poco valor y la inclusión de bloques vacíos o casi vacíos.
El crecimiento continuo provoca hinchazón, lo que puede dificultar que los usuarios individuales o los participantes a pequeña escala puedan permitirse los recursos de almacenamiento y computación necesarios para mantener los nodos llenos y seguir el ritmo de procesamiento de nuevos bloques y transacciones.
Un problema adicional es que la hinchazón no sólo crea una mala experiencia para el usuario, sino que también crea una brecha digital en el ecosistema blockchain. Cuando la participación se limita sólo a quienes pueden permitirse utilizar la red, se centraliza la actividad de la red y se socavan los principios de descentralización e inclusividad.
Este problema puede agravarse en las cadenas de bloques en las que el orden de las transacciones que se realizan puede verse influido por las tarifas. Incluso lo que parece un pequeño aumento de las tarifas (en términos de dólares estadounidenses u otras divisas importantes) puede ser significativo para los usuarios de regiones con menor poder adquisitivo, expulsando de hecho a algunos participantes de la red.
Soluciones para la escalabilidad de la cadena de bloques
La comunidad de blockchain es consciente de estas preocupaciones y se han propuesto varias soluciones para mitigar la hinchazón de blockchain y sus implicaciones. Entre ellas están
Poda de la cadena de bloques: La poda consiste en recortar los datos almacenados en la cadena de bloques para reducir las necesidades de almacenamiento a largo plazo. Los nodos podados sólo conservan los datos necesarios para validar nuevas transacciones y mantener el estado actual de la cadena de bloques. Muchas de las soluciones propuestas para reducir la hinchazón implican algún tipo de estrategia de poda.
Rollups: Los rollups consisten en procesar múltiples transacciones fuera de la cadena y luego combinarlas (rolling up) en una única transacción o prueba que se publica en la cadena principal. Muchas de las soluciones propuestas para reducir la hinchazón implican algún tipo de estrategia de rollup.
Cadenas laterales: Una cadena lateral es una cadena de bloques separada y paralela a la cadena principal. Funciona de forma independiente, pero puede comunicarse con la cadena principal para permitir la transferencia de activos entre ellas. Las cadenas laterales pueden tener sus propios mecanismos de consenso y adaptarse a usos específicos. Muchas de las soluciones propuestas para reducir la hinchazón implican algún tipo de cadena lateral.
Fragmentación: La fragmentación consiste en dividir la cadena de bloques en partes más pequeñas, cada una de las cuales es capaz de procesar sus propias transacciones y contratos inteligentes. Este enfoque mejora el procesamiento paralelo al permitir que cada fragmento gestione un subconjunto de transacciones de forma independiente.
Muchas de las soluciones propuestas para reducir la hinchazón implican algún tipo de estrategia de fragmentación que procesa múltiples transacciones en diferentes fragmentos simultáneamente.
Canales de estado: Un canal de estado es un canal de comunicación bipartito o multipartito de Capa 2 que permite a los participantes realizar un número ilimitado de transacciones sin comprometer cada una de ellas en la cadena de bloques de Capa 1. Normalmente, dos partes bloquean los fondos en la cadena de bloques de Capa 1 sin comprometerlos. Normalmente, dos partes bloquean fondos en un contrato inteligente y luego realizan transacciones entre ellas firmando operaciones que hacen referencia a esta cantidad bloqueada.
Cuando las partes finalizan la transacción, el estado final de sus transacciones se registra en la cadena de bloques. La Lightning Network de Bitcoin y la Raiden Network de Ethereum son ejemplos de canales de estado diseñados para reducir la hinchazón.
Árboles de Merkle: Los árboles de Merkle pueden estructurar los datos de la cadena de bloques en un árbol en el que cada nodo hoja contiene un hash de un bloque de datos, y cada nodo no hoja contiene un hash de sus hijos. Cada participante sólo necesita almacenar la raíz Merkle (el hash de todos los hashes de todas las transacciones individuales de un bloque).
Sistemas delegados: Los sistemas de prueba de participación delegada (DPoS) permiten que un pequeño número de validadores de confianza produzcan bloques. Reducir el número de validadores puede agilizar la producción de bloques y, en teoría, mejorar la escalabilidad de la cadena de bloques. La contrapartida, sin embargo, es que esta estrategia también puede introducir un nivel de centralización.
Almacenamiento diferencial: En lugar de almacenar repetidamente bloques enteros, las técnicas de almacenamiento diferencial sólo almacenan las diferencias entre ellos. Esta forma de reducir la sobrecarga es controvertida porque, en caso necesario, la reconstrucción de los datos originales puede introducir una sobrecarga computacional significativa.
Pruebas de conocimiento cero (ZKP): Los sistemas de prueba de conocimiento cero, como los zk-STARK, permiten verificar las transacciones sin revelar sus detalles. Esta es otra solución para mitigar la sobrecarga que implica reducir la cantidad de datos que deben almacenarse en la cadena.
Segregated Witness (SegWit): Segregated Witness permite que quepan más transacciones en un bloque separando los datos del testigo (los datos de la firma) de la parte principal de una transacción. Esto aumenta la capacidad de cada bloque sin aumentar el tamaño de bloque tradicional.
Aumento del tamaño de los bloques: A lo largo de los años, la idea de aumentar el tamaño de los bloques de almacenamiento para mejorar la escalabilidad y reducir la hinchazón ha sido fuente de mucha controversia dentro de la comunidad de criptomonedas. En teoría, si cada bloque fuera más grande, podría permitir potencialmente a una blockchain manejar un mayor volumen de transacciones en el mismo plazo de tiempo, disminuir la cola de transacciones pendientes (mempool), y acortar los tiempos de espera.
Blockchain Bloat y Bitcoin Cash
En 2013, a medida que Bitcoin ganaba notoriedad pública, el límite de tamaño de bloque de 1MB comenzó a provocar congestión, causando retrasos en los tiempos de confirmación y el aumento de las tarifas de transacción. Surgieron dos puntos de vista principales a medida que la necesidad de escalabilidad se hacía más evidente.
Un punto de vista era simplemente aumentar y permitir más transacciones por bloque aumentando el tamaño del bloque. El otro punto de vista era optimizar la estructura de bloques existente gestionando algunas transacciones fuera de la cadena de bloques principal.
Los dos puntos de vista no pudieron reconciliarse, y en 2017, la facción de la comunidad que quería adoptar un mayor tamaño de bloque se separó. La bifurcación dura resultante se llama Bitcoin Cash.