Saltar al contenido
0%

¿Qué es la capa de disponibilidad de datos?

Alchemy team headshot

Escrito por Alchemy

Publicado el 4 de agosto de 202212 min de lectura

Las tareas principales de las blockchains modulares y monolíticas incluyen ejecutar transacciones, alcanzar consenso sobre el orden de las transacciones y garantizar la disponibilidad de los datos transaccionales. La última parte —la disponibilidad de datos— es fundamental para las blockchains y es el tema central de este artículo.

La disponibilidad de datos se refiere a la idea de que todos los datos relacionados con transacciones están disponibles para los nodos de la red blockchain. La disponibilidad de datos es importante porque permite a los nodos verificar transacciones y calcular el estado de la blockchain de forma independiente, sin necesidad de confiar unos en otros.

Esta guía explicará en detalle qué significa la disponibilidad de datos y por qué resolver el "problema de la disponibilidad de datos" es importante. También aprenderás el papel que juegan las capas de disponibilidad de datos en el escalamiento de blockchains y las diferentes soluciones propuestas para resolver este problema.

¿Qué significa disponibilidad de datos?

La disponibilidad de datos en blockchains se refiere a la capacidad de los nodos de descargar los datos contenidos en todos los bloques propagados a través de una red peer-to-peer. Entender la disponibilidad de datos requiere comprender los procesos actuales de verificación de bloques en las blockchains.

¿Cómo funciona la verificación de bloques?

Primero, el productor de bloques:

  1. Toma transacciones del mempool
  2. Produce un nuevo bloque con esas transacciones
  3. Transmite el nuevo bloque a la red P2P para que sea agregado a la cadena

A un productor de bloques se le llama "minero" en una red Proof-of-Work y "validador" en una red Proof-of-Stake.

Luego, los nodos validadores (también llamados full nodes):

  1. Descargan las transacciones del bloque recién propuesto
  2. Vuelven a ejecutar las transacciones para confirmar el cumplimiento de las reglas de consenso.
  3. Agregan el bloque a la cabeza de la cadena una vez que la red considera que el bloque es válido

La siguiente ilustración usa Bitcoin como ejemplo del proceso de verificación de bloques:

Diagrama que muestra cómo se transmiten los datos de las transacciones a través de la red blockchain
Un diagrama que muestra cómo se transmiten los datos de transacciones a través de la red blockchain. [Sourcehttps://globalxetfs.co.jp/en/research/bitcoin-the-basics/index.html ]

Pero ¿qué pasaría si un proponente de bloques se negara a publicar los datos de las transacciones y solo transmitiera los encabezados de bloque, que contienen metadatos sobre las transacciones pero no las transacciones en sí?

En tal escenario, los full nodes no podrían verificar la integridad de los bloques propuestos. Además, los light nodes que solo descargan encabezados de bloque podrían ser engañados fácilmente para aceptar bloques inválidos.

Para evitar este problema, las blockchains —especialmente las cadenas monolíticas— exigen a los proponentes de bloques que hagan disponibles los datos del bloque al resto de la red.

Más allá de habilitar la seguridad, las reglas de disponibilidad de datos fomentan la "trustlessness": los pares pueden verificar transacciones y bloques de forma independiente en lugar de confiar en otros participantes de la red.

¿Cuáles son los desafíos de la disponibilidad de datos?

Los desafíos que presenta la necesidad de disponibilidad de datos son: exigir a los nodos que descarguen y verifiquen datos reduce el throughput, y usar almacenamiento on-chain para una cantidad de información cada vez mayor limita el número de entidades que pueden ejecutar infraestructura de nodos.

Las blockchains monolíticas garantizan la disponibilidad de datos almacenando de forma redundante los datos de estado en múltiples nodos, de modo que un par que necesite dichos datos solo tenga que solicitarlos a otro par. Pero esta implementación básica de disponibilidad de datos tiene un problema.

Obligar a un gran número de nodos de la red a descargar, verificar y almacenar los mismos datos reduce drásticamente el throughput de las blockchains. Esta es la razón por la que Ethereum solo puede procesar entre 15 y 20 transacciones por segundo y por la que la velocidad de procesamiento de Bitcoin es de alrededor de 5 a 7 transacciones por segundo.

El almacenamiento de datos on-chain también genera un crecimiento exponencial del tamaño de la blockchain, lo que a su vez aumenta los requisitos de hardware para los full nodes que necesitan almacenar cantidades de estado cada vez mayores.

El aumento de los costos de hardware de alta especificación tiende a reducir el número de personas dispuestas a ejecutar nodos, lo cual incrementa directamente el riesgo de centralización.

Disponibilidad de datos y escalamiento de blockchain

La disponibilidad de datos también es relevante en el contexto de la escalabilidad de blockchain. Las cadenas modulares suelen diseñarse para escalar el throughput separando la disponibilidad de datos del consenso y la ejecución. Bajo este esquema, los nodos ya no están obligados a almacenar los datos de la blockchain, eliminando algunas de las limitaciones descritas en la sección anterior.

Sin embargo, la red aún necesita garantizar que todos los datos del bloque estén disponibles para las partes interesadas. Esto constituye la base del problema de disponibilidad de datos: "¿Cómo podemos saber que los datos detrás de cada bloque fueron publicados sin tener acceso al bloque completo?"

Discutiremos las soluciones al problema de disponibilidad de datos en una sección posterior. Por ahora, exploremos el concepto de "capa de disponibilidad de datos" y sus implicaciones para las blockchains.

¿Qué es la capa de disponibilidad de datos?

En las blockchains, una capa de disponibilidad de datos es un sistema que almacena y proporciona consenso sobre la disponibilidad de los datos de la blockchain. La "capa de disponibilidad de datos" se refiere al lugar donde se almacenan los datos de las transacciones.

Existen dos tipos de capas de disponibilidad de datos:

1. Capa de disponibilidad de datos on-chain

Este es el enfoque estándar entre muchas blockchains, en el cual los datos se almacenan on-chain por los nodos que ejecutan las transacciones. Si bien esto garantiza una alta disponibilidad de datos, limita la descentralización y la escalabilidad.

2. Capa de disponibilidad de datos off-chain

Este enfoque requiere almacenar los datos de las transacciones fuera de la red blockchain original. Una capa de disponibilidad de datos off-chain puede ser otra blockchain o cualquier sistema de almacenamiento de datos elegido por los desarrolladores. En este caso, la capa de disponibilidad de datos se enfoca en almacenar datos, no en la ejecución.

¿Cómo ayuda la capa de disponibilidad de datos a escalar Ethereum?

El sharding es un enfoque de escalamiento de blockchain que consiste en dividir una red en varias subcadenas que operan en paralelo. Los nodos de cada subcadena manejan tareas diferentes con el objetivo de lograr un uso eficiente de los recursos computacionales.

El roadmap de escalamiento actual de Ethereum incluye planes para implementar data sharding —un sistema en el cual distintos grupos de nodos almacenan piezas de datos diferentes. Habrá 64 shard chains operando de forma independiente, y los nodos solo descargarán los datos publicados en su shard asignado. Esto significa que los full nodes ya no tendrán que almacenar los mismos datos, como sucede actualmente.

Diagrama que muestra la distribución de las cadenas de fragmentos en Ethereum
Cadenas de fragmentos

Con el sharding, Ethereum empleará múltiples capas de disponibilidad de datos en lugar de almacenar los datos de estado en un solo lugar. Los bloques ya no tendrán que propagarse por toda la red, y solo un conjunto limitado de nodos será necesario para verificar los datos de cada bloque. Esto se traduce directamente en escalabilidad, porque la red podrá procesar transacciones más rápido.

Además, almacenar datos entre múltiples capas descentraliza aún más a Ethereum.

Actualmente, los full nodes almacenan la blockchain completa, que equivale aproximadamente a 1TB de datos según estadísticas recientes, pero solo necesitarán almacenar 1/64 de los datos de la cadena una vez que estén en funcionamiento los 64 shards. Esto podría reducir los requisitos de almacenamiento para los full nodes y aumentar el número de validadores en Ethereum.

¿Cómo funciona la capa de disponibilidad de datos con los Rollups?

Los Rollups escalan Ethereum trasladando el cómputo y el almacenamiento de estado fuera del entorno de ejecución de Ethereum: la Ethereum Virtual Machine. La EVM solo acepta los resultados de la computación off-chain y los aplica a su estado sin necesidad de volver a ejecutar las transacciones, mejorando así la velocidad de procesamiento y reduciendo los costos.

Lo que hace que los Rollups sean más seguros que otras soluciones de escalamiento de Ethereum, incluyendo sidechains o Plasma, es su dependencia de Ethereum para la disponibilidad de datos. Además de publicar los resultados de las transacciones en Ethereum, los optimistic rollups y los zero-knowledge rollups también publican los datos de las transacciones en la Layer 1 como CALLDATA.

Los datos de bloque publicados desde un Rollup hacia Ethereum están disponibles públicamente, lo que permite que cualquiera ejecute transacciones y valide la cadena del Rollup.

Esto también favorece la resistencia a la censura, porque los datos publicados pueden ser usados por posibles productores de bloques para reconstruir el estado de la cadena y comenzar a producir nuevos bloques. Gracias a esta medida, ningún operador de Layer 2 puede congelar arbitrariamente la cadena ni censurar usuarios en el Rollup.

Con la capa de disponibilidad de datos proporcionando seguridad, los Rollups pueden optimizarse para la escalabilidad. Por ejemplo, un Rollup puede optar por bloques más grandes y tiempos de bloque más rápidos para acelerar la velocidad de procesamiento.

Si bien esto aumenta los requisitos de hardware para los nodos (la mayoría de los Rollups tienen unos pocos "supernodos" que ejecutan las transacciones), la disponibilidad de los datos de estado permite que cualquiera pueda impugnar transiciones de estado inválidas o producir bloques para evitar la censura.

¿Cómo funcionan las capas de disponibilidad de datos con las blockchains modulares?

Una blockchain modular es una blockchain que se encarga de una función específica, como la ejecución, el consenso o la disponibilidad de datos, y depende de otras blockchains y sistemas off-chain para realizar las tareas restantes. El stack de blockchain modular está compuesto por diferentes cadenas modulares que trabajan juntas de distintas maneras para cumplir objetivos determinados.

La capa de disponibilidad de datos en un stack de blockchain modular normalmente es responsable de almacenar los datos de las transacciones, aunque también puede proporcionar consenso sobre el orden de las transacciones. Por ejemplo, las blockchains modulares enfocadas en la ejecución (por ejemplo, rollups y validiums) dependen de capas de disponibilidad de datos off-chain para almacenar los datos detrás de las actualizaciones de estado.

Una capa de disponibilidad de datos en sí misma es una cadena modular, ya que se concentra en almacenar datos y delega la ejecución a otras cadenas. A diferencia de las blockchains convencionales, una capa de disponibilidad de datos pura no verifica la validez de los datos publicados por los productores de bloques. Los nodos solo tienen que llegar a consenso sobre el orden de las transacciones y confirmar que se pagaron las tarifas correctas.

Diagrama que muestra la posición de la capa de disponibilidad de datos en la pila modular de blockchain
Un diagrama que muestra la posición de la capa de disponibilidad de datos dentro del stack de blockchain modular. [Sourcehttps://celestia.org/learn/modular-architectures/ ]

¿Qué significan las capas de disponibilidad de datos para los desarrolladores de Web3?

La existencia de capas de disponibilidad de datos separadas tiene beneficios importantes para los desarrolladores de blockchain, entre ellos ciclos de desarrollo más rápidos y tarifas de usuario más bajas.

1. Ciclos de desarrollo más rápidos

Los desarrolladores que lanzan nuevas blockchains o cadenas específicas de aplicación pueden lograr propiedades de seguridad significativas desde el inicio al usar una capa de disponibilidad de datos. La seguridad de una blockchain generalmente se mide por la distribución de los nodos validadores, pero lograr una distribución ideal de validadores en las etapas tempranas no es realista.

En cambio, estas nuevas blockchains pueden enfocarse en la ejecución y el settlement mientras dependen de redes de disponibilidad de datos existentes para la seguridad. Así, incluso si un número reducido de nodos está ejecutando la cadena, su capacidad de actuar de forma maliciosa publicando transacciones inválidas y censurando usuarios queda limitada.

Esto se debe a que los datos de estado necesarios para calcular fraud proofs y validity proofs, con el fin de verificar la ejecución, tienen garantizada su disponibilidad. La disponibilidad de datos también facilita la sincronización con el estado de la blockchain, lo cual es un requisito para producir nuevos bloques.

2. Tarifas de usuario más bajas

La competencia por el blockspace limitado en Ethereum ha elevado las tarifas de transacción, lo cual no es ideal para las aplicaciones descentralizadas que necesitan publicar grandes cantidades de datos on-chain. En lugar de publicar los datos en Ethereum, una dApp puede almacenar datos de forma económica en una capa optimizada para la disponibilidad de datos.

Las tarifas por usar capas de disponibilidad de datos son más bajas por dos razones: los nodos necesitan cobrar tarifas más bajas para recuperar los gastos de hardware, y las redes de disponibilidad de datos pueden aumentar el tamaño de bloque, lo que significa que se pueden incluir más transacciones en los bloques.

1. Los nodos necesitan hardware menos costoso

Los nodos solo se ocupan del almacenamiento de datos y no necesitan invertir en el ancho de banda o el hardware necesarios para ejecutar transacciones. Por lo tanto, los nodos no están bajo presión para cobrar tarifas altas y así recuperar la inversión en hardware.

2. Las redes de disponibilidad de datos pueden aumentar el tamaño de los bloques

Las redes de disponibilidad de datos pueden aumentar el tamaño de los bloques sin perjudicar la descentralización y la seguridad gracias al data availability sampling.

El data availability sampling permite a los nodos muestrear aleatoriamente un bloque para confirmar su disponibilidad sin descargar todos los datos. Una menor competencia por el blockspace significa que almacenar datos en una blockchain de disponibilidad de datos es, en promedio, más económico.

¿Cuáles son los diferentes tipos de soluciones de disponibilidad de datos?

Las soluciones al problema de disponibilidad de datos generalmente adoptan dos enfoques: modificar el almacenamiento de datos on-chain o almacenar los datos off-chain. A continuación exploramos ambas clases de soluciones de disponibilidad de datos.

1. Almacenamiento on-chain modificado

El almacenamiento on-chain modificado requiere cambiar la forma en que los datos se almacenan on-chain para lograr eficiencia y seguridad. Una forma de almacenamiento on-chain modificado se refiere al proceso de data sharding discutido anteriormente.

En las blockchains con sharding, los nodos solo descargan y almacenan los datos publicados en un shard específico. En otras palabras, los validadores ejecutan un full node para un shard y actúan como light client para los demás shards.

La pregunta obvia aquí es: "¿Cómo pueden los nodos estar seguros de que los datos de otros shards están disponibles sin descargar esos bloques?"

Aquí es donde entra en juego el data availability sampling.

¿Qué es el data availability sampling (das)?

El data availability sampling es un mecanismo para verificar la disponibilidad de un bloque sin necesidad de descargarlo por completo. Los nodos aplican el data availability sampling descargando partes aleatorias de un bloque para comprobar si están disponibles.

Con muchos nodos muestreando aleatoriamente un bloque, la probabilidad de ocultar datos de bloque se reduce. Si un nodo descubre que una parte del bloque no está disponible, puede activar una alerta y avisar a otros nodos.

Diagrama que muestra cómo un nodo muestrea un bloque (“blob”) para verificar su disponibilidad
Diagrama que muestra cómo un nodo muestrea un bloque (“blob”) para verificar su disponibilidad. [Fuente: Vitalik Buterin]

Si bien el data availability sampling puede dar a los nodos una alta certeza estadística de que los datos de un bloque están disponibles, no puede descartar por completo los ataques de retención de datos. Un ataque de retención de datos ocurre cuando los productores de bloques proponen nuevos bloques pero no publican todos los datos de las transacciones.

Incluso si un productor de bloques publica la mayor parte del bloque, ocultar una pequeña fracción de los datos sigue teniendo implicaciones de seguridad. ¿Qué pasaría si un operador de rollup realiza una transacción inválida que transfiere una gran cantidad de tokens de los usuarios hacia sí mismo y retiene los datos necesarios para impugnaciones?

Para tener garantías de seguridad más altas contra la retención de datos, combinamos el data availability sampling con erasure coding.

¿Qué es el erasure coding?

El erasure coding es una primitiva criptográfica para aumentar la integridad y disponibilidad de los datos, que consiste en duplicar un conjunto de datos agregando piezas redundantes (llamadas erasure codes), de modo que cualquier combinación de las piezas redundantes pueda ayudar a recuperar los datos originales.

Las shard chains en Ethereum publican los datos de las transacciones usando "blobs" (binary large objects), que son similares a los bloques. Antes de publicar un blob, el productor de bloques debe extender los datos originales mediante erasure coding. De esta forma, cualquiera puede reconstruir el bloque completo con acceso a algunos de los erasure codes.

El erasure coding dificulta la realización de ataques de retención de datos. Con bloques codificados mediante erasure coding, los nodos solo necesitan una pequeña fracción para recuperar los datos originales. Por lo tanto, un productor de bloques tendría que ocultar una gran parte del conjunto total de datos —más del 50%— para lograr ocultar los datos con éxito.

2. Almacenamiento de datos off-chain

El almacenamiento de datos off-chain consiste en almacenar los datos en otro lugar para evitar sobrecargar a los nodos. Las soluciones de almacenamiento de datos off-chain son de dos tipos: comités de disponibilidad de datos (DAC) y redes de disponibilidad de datos.

1. Comités de disponibilidad de datos (DACs)

Un comité de disponibilidad de datos (DAC) es un conjunto de entidades con permisos, encargadas de mantener copias de los datos de la blockchain fuera de línea. El DAC normalmente está compuesto por entidades de confianza designadas para ese rol.

Los productores de bloques deben enviar los datos de las transacciones a los miembros del DAC al realizar transiciones de estado. Esto reduce el riesgo de centralización porque el DAC puede poner los datos a disposición de los usuarios, especialmente si el productor de bloques comienza a actuar de forma maliciosa.

Los Validiums, una solución de escalamiento de Ethereum similar a los ZK-rollups, usan DACs para garantizar la disponibilidad de datos. Además de calcular pruebas de conocimiento cero para verificar los lotes de transacciones, los proponentes de bloques deben obtener attestations (firmas) de los miembros del DAC. Esta "prueba de disponibilidad" se verifica junto con la prueba de validez en Ethereum antes de que se acepten nuevos lotes de transacciones.

Ejemplos de proyectos que usan DACs incluyen DiversiFi e ImmutableX.

Si bien los comités de disponibilidad de datos ayudan a resolver el problema de disponibilidad de datos hasta cierto punto, tienen ciertas desventajas. El DAC suele ser pequeño en tamaño, lo que facilita que actores maliciosos comprometan al grupo. Y dado que los miembros del DAC son entidades "de confianza", no existe un sistema para sancionar el mal comportamiento.

2. Redes de disponibilidad de datos

Las redes de disponibilidad de datos buscan descentralizar el proceso de almacenamiento de los datos de la blockchain y eliminar los supuestos de confianza. Las redes de disponibilidad de datos son similares a los comités de disponibilidad de datos, salvo por tres diferencias clave: arquitectura permissionless, trustlessness y tolerancia a fallos.

Arquitectura permissionless

La red de disponibilidad de datos suele ser una blockchain cuyo único propósito es ordenar transacciones y almacenar datos.

Las redes de disponibilidad de datos, como Celestia y Polygon Avail, usan un sistema Proof-of-Stake que permite que cualquiera se convierta en administrador de disponibilidad de datos. Para hacerlo, los usuarios solo tienen que aportar el stake requerido para comenzar a participar en la blockchain.

Trustlessness

Las redes de disponibilidad de datos con Proof-of-Stake usan incentivos criptoeconómicos para garantizar que los nodos actúen de forma honesta. Cada nodo encargado de almacenar datos debe hacer stake de fondos en un contrato inteligente, los cuales pueden ser slashed si no logran proporcionar los datos cuando se les solicita. Esta característica elimina los supuestos de confianza que existen con los comités de disponibilidad de datos.

Tolerancia a fallos

Las redes de disponibilidad de datos con Proof-of-Stake suelen tener conjuntos de participación más grandes que los comités de disponibilidad de datos. Esto dificulta que actores maliciosos comprometan al grupo y realicen ataques de retención de datos.

Diagrama que muestra la arquitectura de la red de disponibilidad de datos de Polygon Avail.
Diagrama que muestra la arquitectura de la red de disponibilidad de datos de Polygon Avail.

Conclusión

La disponibilidad de datos juega un papel clave en la capacidad de las blockchains de mantenerse funcionales y seguras. Especialmente en el contexto de las blockchains modulares, las capas de disponibilidad de datos permiten una descentralización y seguridad significativas.

Los planes futuros de escalabilidad de Ethereum también dependen de su capacidad de almacenamiento de datos. Los Rollups están limitados por el throughput de datos de la cadena padre, de ahí la introducción del data sharding y otras mejoras para aumentar el rendimiento de Ethereum como capa de disponibilidad de datos para las soluciones de Layer 2.

Background gradient

Construye magia blockchain

Alchemy combina los productos y herramientas de desarrollo Web3 más potentes con recursos, comunidad y un soporte legendario.