La capa de disponibilidad de datos de Celestia
Last updated
Last updated
Celestia es una capa de disponibilidad de datos (DA) que proporciona una solución escalable a la problema de disponibilidad de datos. Debido a la naturaleza sin permiso de las redes blockchain, una capa DA debe proporcionar un mecanismo para que las capas de ejecución y liquidación verifiquen de manera minimizada la confianza si los datos de la transacción están realmente disponibles.
Dos características clave de la capa DA de Celestia son muestreo de disponibilidad de datos (DAS) y Árboles Merkle a su ritmo (NMT). Ambas características son nuevas soluciones de escalado de blockchain: DAS permite a los nodos de luz verificar la disponibilidad de datos sin necesidad de descargar un bloque completo; Los NMT permiten que las capas de ejecución y liquidación en Celestia descarguen transacciones que solo son relevantes para ellos.
En general, los nodos de luz descargan solo encabezados de bloque que contienen compromisos (i.e., raíces Merkle) de los datos de bloque (i.e., la lista de transacciones).
Para hacer posible el DAS, Celestia utiliza un esquema de codificación Reed-Solomon de 2 dimensiones para codificar los datos de bloque: cada dato de bloque se divide en k×kacciones, dispuestas en un k×kmatriz, y se extendió con datos de paridad en un 2k×2kmatriz extendida aplicando múltiples veces la codificación Reed-Solomon.
Entonces, 4klas raíces de Merkle separadas se calculan para las filas y columnas de la matriz extendida; la raíz de Merkle de estas raíces de Merkle se utiliza como el compromiso de datos de bloque en el encabezado del bloque.
Para verificar que los datos estén disponibles, los nodos de luz de Celestia están muestreando el 2k×2kdatos compartidos.
Cada nodo de luz elige aleatoriamente un conjunto de coordenadas únicas en la matriz extendida y consulta nodos completos para los recursos compartidos de datos y las pruebas Merkle correspondientes en esas coordenadas. Si los nodos de luz reciben una respuesta válida para cada consulta de muestreo, entonces hay un garantía de alta probabilidad que los datos de todo el bloque están disponibles.
Además, cada intercambio de datos recibido con una prueba Merkle correcta se cotillea en la red. Como resultado, siempre y cuando los nodos de luz Celestia estén muestreando juntos suficientes datos compartidos (i.e., al menos k×kacciones únicas), el bloque completo puede ser recuperado por nodos completos honestos.
Para más detalles sobre DAS, eche un vistazo a la papel original.
DAS permite a Celestia escalar la capa DA. DAS se puede realizar mediante nodos de luz con recursos limitados, ya que cada nodo de luz solo muestrea una pequeña porción de los datos del bloque. Cuantos más nodos de luz haya en la red, más datos podrán descargar y almacenar colectivamente.
Esto significa que aumentar el número de nodos de luz que realizan DAS permite bloques más grandes (i.e., con más transacciones), mientras se mantiene el DAS factible para nodos de luz con recursos limitados. Sin embargo, para validar encabezados de bloque, los nodos de luz Celestia necesitan descargar el 4kraíces Merkle intermedias.
Para un tamaño de datos de bloque de n2bytes, esto significa que cada nodo de luz debe descargarse O(n)bytes. Por lo tanto, cualquier mejora en la capacidad de ancho de banda de los nodos de luz Celestia tiene un efecto cuadrático en el rendimiento de la capa DA de Celestia.
El requisito de descargar el 4k las raíces Merkle intermedias son una consecuencia del uso de un esquema de codificación Reed-Solomon de 2 dimensiones. Alternativamente, DAS podría diseñarse con un estándar (i.e., 1-dimensional) Codificación Reed-Solomon, donde los datos originales se dividen en kacciones y ampliadas con kacciones adicionales de datos de paridad. Dado que el compromiso de datos de bloque es la raíz Merkle de la 2kdatos compartidos resultantes, los nodos de luz ya no necesitan descargarse O(n)bytes para validar encabezados de bloque.
La desventaja de la codificación estándar Reed-Solomon es tratar con productores de bloques maliciosos que generan los datos extendidos incorrectamente.
Esto es posible como Celestia no requiere la mayoría del consenso (i.e., productores de bloques) para ser honesto para garantizar la disponibilidad de datos. Por lo tanto, si los datos extendidos no son válidos, es posible que los datos originales no sean recuperables, incluso si los nodos de luz están muestreando suficientes acciones únicas (i.e., al menos kpara una codificación estándar y k×kpara una codificación 2-dimensional).
Como solución, Pruebas de Fraude de Datos Extendidos Generados Incorrectamente permita que los nodos de luz rechacen bloques con datos extendidos no válidos. Tales pruebas requieren reconstruir la codificación y verificar el desajuste. Con la codificación Reed-Solomon estándar, esto implica descargar los datos originales, i.e., n2bytes. En contraste, con codificación Reed-Solomon de 2 dimensiones, solo O(n)se requieren bytes, ya que es suficiente verificar solo una fila o una columna de la matriz extendida.
Celestia divide los datos de bloque en múltiples espacios de nombres, uno para cada aplicación (por ejemplo, rollup) utilizando la capa DA. Como resultado, cada aplicación necesita descargar solo sus propios datos y puede ignorar los datos de otras aplicaciones.
Para que esto funcione, la capa DA debe poder demostrar que los datos proporcionados están completos, i.e., se devuelven todos los datos para un espacio de nombres dado. Con este fin, Celestia está utilizando árboles Merkle con Namespaced (NMT).
Un NMT es un árbol Merkle con las hojas ordenadas por los identificadores de espacio de nombres y la función hash modificada para que cada nodo en el árbol incluya el rango de espacios de nombres de todos sus descendientes. La siguiente figura muestra un ejemplo de una NMT con altura tres (i.e., ocho datos compartidos). Los datos se dividen en tres espacios de nombres.
Cuando una aplicación solicita los datos para el espacio de nombres 2, la capa DA debe proporcionar los recursos compartidos de datos D3
, D4
, D5
, y D6
y los nodos N2
, N8
y N7
como prueba (tenga en cuenta que la aplicación ya tiene la raíz N14
desde el encabezado del bloque).
Como resultado, la aplicación puede verificar que los datos proporcionados formen parte de los datos de bloque. Además, la aplicación puede verificar que se proporcionaron todos los datos para el espacio de nombres 2. Si la capa DA proporciona, por ejemplo, solo los datos compartidos D4
y D5
, éste también debe proporcionar nodos N12
y N11
como pruebas. Sin embargo, la aplicación puede identificar que los datos están incompletos al verificar el rango de espacio de nombres de los dos nodos, i.e., ambos N12
y N11
tener descendientes parte del espacio de nombres 2.
Para obtener más detalles sobre las NMT, consulte el papel original.
La capa Celestia DA consiste en una cadena de bloques PoS. Celestia está apodando a esta cadena de bloques como el celestia-app, una aplicación que proporciona transacciones para facilitar la capa DA y se construye utilizando SDK Cosmos. La siguiente figura muestra los componentes principales de celestia-app.
celestia-app está construida sobre celestia-núcleo, una versión modificada de la Algoritmo de consenso de tendermint. Entre los cambios más importantes en la Menta de vainilla, celestia-core:
Permite la codificación de borrado de datos de bloque (utilizando el esquema de codificación Reed-Solomon de 2 dimensiones).
Reemplaza el árbol Merkle regular utilizado por Tendermint para almacenar datos de bloque con un Árbol Merkle con espacio de nombre eso permite las capas anteriores (i.e., ejecución y liquidación) para descargar solo los datos necesarios (para obtener más detalles, consulte la sección a continuación que describe los casos de uso).
Para obtener más detalles sobre los cambios en Tendermint, eche un vistazo a la ADR. Observe que los nodos celestia-core todavía están utilizando la red Tendermint p2p.
De manera similar a Tendermint, celestia-core está conectado a la capa de aplicación (i.e., la máquina de estado) por ABCI++, una evolución importante de ABCI (Aplicación Blockchain Interface).
La máquina de estado celestia-app es necesaria para ejecutar la lógica PoS y permitir la gobernanza de la capa DA.
Sin embargo, la celestia-app es agnóstica de datos: la máquina de estado no valida ni almacena los datos que la celestia-app pone a disposición.