Autor: Kernel Ventures Jerry Luo

Revisores: Kernel Ventures Mandy, Kernel Ventures Joshua

TLDR:

  1. Las primeras cadenas públicas requerían que todos los nodos de la red mantuvieran la coherencia de los datos para garantizar la seguridad y la descentralización. Sin embargo, con el desarrollo del ecosistema blockchain, la presión de almacenamiento continúa aumentando, lo que lleva a una tendencia de operaciones de nodos centralizados. En esta etapa, la Capa 1 necesita resolver urgentemente el problema de los costos de almacenamiento causado por el crecimiento de TPS.

  2. Ante este problema, los desarrolladores deben proponer nuevas soluciones de almacenamiento de datos históricos teniendo en cuenta la seguridad, el costo de almacenamiento, la velocidad de lectura de datos y la versatilidad de la capa DA.

  3. En el proceso de resolver este problema, han surgido muchas nuevas tecnologías y nuevas ideas, incluidos Sharding, DAS, Verkle Tree, componentes intermedios DA, etc. Intentaron optimizar la solución de almacenamiento de la capa DA reduciendo la redundancia de datos y mejorando la eficiencia de la verificación de datos.

  4. Las soluciones DA actuales se dividen aproximadamente en dos categorías según la ubicación de almacenamiento de datos: DA de la cadena principal y DA de terceros. El DA de la cadena principal comienza desde la perspectiva de limpiar y fragmentar datos periódicamente para reducir la presión de almacenamiento del nodo. Todos los requisitos de diseño de DA de terceros están dirigidos a servicios de almacenamiento y tienen soluciones razonables para grandes cantidades de datos. Por lo tanto, el enfoque principal está en el equilibrio entre la compatibilidad de una sola cadena y la compatibilidad de múltiples cadenas, y se proponen tres soluciones: DA dedicado de cadena principal, DA modular y DA de cadena pública de almacenamiento.

  5. Las cadenas públicas de tipo pago tienen requisitos extremadamente altos para la seguridad de los datos históricos y son adecuadas para utilizar la cadena principal como capa DA. Sin embargo, para las cadenas públicas que han estado funcionando durante mucho tiempo y tienen una gran cantidad de mineros ejecutando la red, sería más apropiado adoptar un DA de terceros que no involucre la capa de consenso y tenga en cuenta la seguridad. Las cadenas públicas integrales son más adecuadas para utilizar almacenamiento DA dedicado de la cadena principal con mayor capacidad de datos, menor costo y seguridad. Pero considerando las necesidades de cadena cruzada, el DA modular también es una buena opción.

  6. En términos generales, blockchain se está desarrollando en la dirección de reducir la redundancia de datos y la división del trabajo entre cadenas múltiples.

1. Antecedentes

Como libro de contabilidad distribuido, blockchain necesita almacenar datos históricos en todos los nodos para garantizar la seguridad y una descentralización suficiente del almacenamiento de datos. Dado que la exactitud de cada cambio de estado está relacionada con el estado anterior (fuente de la transacción), para garantizar la exactitud de las transacciones, una cadena de bloques debe, en principio, almacenar todos los registros históricos desde la primera transacción hasta la transacción actual. Tomando Ethereum como ejemplo, incluso si se estima que el tamaño promedio de los bloques es de 20 kb, el tamaño total actual de los bloques de Ethereum ha alcanzado los 370 GB. Además del bloque en sí, un nodo completo también necesita registrar el estado y los recibos de las transacciones. . Contando esta parte, la capacidad total de almacenamiento de un único nodo ha superado el 1 TB, lo que concentra la operación del nodo en unas pocas personas.

Última altura del bloque de Ethereum, fuente de la imagen: Etherscan

La reciente actualización de Ethereum Cancún tiene como objetivo aumentar el TPS de Ethereum a alrededor de 1000. Para entonces, el crecimiento anual del almacenamiento de Ethereum superará la suma de su capacidad de almacenamiento actual. Entre las diversas cadenas públicas de alto rendimiento que se han vuelto populares recientemente, la velocidad de transacción de decenas de miles de TPS puede generar en promedio cientos de GB de datos nuevos cada día. El método de redundancia de datos común de todo el nodo de la red obviamente no puede adaptarse a tal presión de almacenamiento. La Capa 1 debe encontrar una solución adecuada para equilibrar el crecimiento de TPS y el costo de almacenamiento del nodo.

2. Indicadores de desempeño de la AD

2.1 Seguridad

En comparación con las estructuras de almacenamiento de bases de datos o listas vinculadas, la inviolabilidad de blockchain proviene de la capacidad de verificar datos recién generados a través de datos históricos. Por lo tanto, garantizar la seguridad de los datos históricos es el primer tema a considerar en el almacenamiento de la capa DA. Al juzgar la seguridad de los datos de los sistemas blockchain, a menudo la analizamos a partir de la cantidad de redundancia de datos y el método de verificación de la disponibilidad de los datos.

  • Cantidad de redundancia: Para la redundancia de datos en el sistema blockchain, puede desempeñar principalmente las siguientes funciones: Primero, si la cantidad de redundancias en la red es mayor, cuando el verificador necesita verificar el estado de la cuenta en un determinado bloque histórico para verificar Cuando se verifica una transacción, se puede obtener la mayor cantidad de muestras como referencia y seleccionar los datos registrados por la mayoría de los nodos. En las bases de datos tradicionales, dado que los datos solo se almacenan en forma de pares clave-valor en un determinado nodo, los cambios en los datos históricos solo se pueden realizar en un solo nodo y, en teoría, el costo del ataque es extremadamente bajo. Cuanto mayor sea el número de despidos, menos probables serán los datos y mayor será el grado de credibilidad. Al mismo tiempo, cuantos más nodos se almacenen, es menos probable que se pierdan los datos. Esto también se puede comparar con el servidor centralizado que almacena juegos Web2. Una vez que se cierran todos los servidores backend, el servidor se apagará por completo. Sin embargo, cuanto más, mejor, porque cada pieza de redundancia traerá espacio de almacenamiento adicional. Una redundancia de datos excesiva traerá una presión de almacenamiento excesiva al sistema. Una buena capa de DA debe elegir una estrategia redundante que equilibre la seguridad y la eficiencia del almacenamiento.

  • Verificación de la disponibilidad de datos: el número de redundancias garantiza que haya suficientes registros de datos en la red, pero se debe verificar la exactitud e integridad de los datos que se utilizarán. El método de verificación comúnmente utilizado en la cadena de bloques actual es el algoritmo de compromiso criptográfico, que retiene un pequeño compromiso criptográfico para que lo registre toda la red. Este compromiso se obtiene mezclando datos de transacciones. Cuando desee probar la autenticidad de un determinado dato histórico, debe restaurar el compromiso criptográfico a través de los datos y verificar si el compromiso criptográfico obtenido por esta restauración es consistente con los registros de toda la red. , se pasa la verificación. Los algoritmos de verificación de criptografía más utilizados incluyen Merkle Root y Verkle Root. El algoritmo de verificación de disponibilidad de datos de alta seguridad requiere solo una pequeña cantidad de datos de verificación y puede verificar rápidamente datos históricos.

2.2 Costos de almacenamiento

Bajo la premisa de garantizar la seguridad básica, el siguiente objetivo principal que debe alcanzar la capa DA es reducir los costos y aumentar la eficiencia. El primero es reducir los costos de almacenamiento, independientemente de las diferencias de rendimiento del hardware, es decir, reducir el uso de memoria causado por el almacenamiento de datos de tamaño unitario. En esta etapa, las principales formas de reducir los costos de almacenamiento en blockchain son adoptar tecnología de fragmentación y utilizar almacenamiento basado en recompensas para garantizar que los datos se almacenen de manera efectiva y reducir la cantidad de copias de seguridad de los datos. Sin embargo, no es difícil ver en los métodos de mejora anteriores que existe una relación de juego entre el costo del almacenamiento y la seguridad de los datos. Reducir la ocupación del almacenamiento a menudo significa una disminución de la seguridad. Por lo tanto, una excelente capa DA debe lograr un equilibrio entre el costo de almacenamiento y la seguridad de los datos. Además, si la capa DA es una cadena pública separada, debe reducir el costo minimizando el proceso intermedio de intercambio de datos. En cada proceso de transferencia, los datos de índice deben dejarse para llamadas de consulta posteriores, por lo que la llamada será más larga. proceso, más datos de índice quedarán y el costo de almacenamiento aumentará. Por último, el coste del almacenamiento de datos está directamente relacionado con la durabilidad de los datos. En términos generales, cuanto mayor sea el costo de almacenamiento de datos, más difícil será para la cadena pública almacenar datos de forma persistente.

2.3 Velocidad de lectura de datos

Después de lograr la reducción de costos, el siguiente paso es aumentar la eficiencia, que es la capacidad de extraer rápidamente datos de la capa DA cuando es necesario utilizarlos. Este proceso implica dos pasos. El primero es buscar nodos que almacenen datos. Este proceso es principalmente para cadenas públicas que no han logrado la coherencia de los datos en toda la red. Si la cadena pública logra la sincronización de datos para los nodos en toda la red. Se puede ignorar el consumo de tiempo de un proceso. En segundo lugar, en los principales sistemas blockchain actuales, incluidos Bitcoin, Ethereum y Filecoin, el método de almacenamiento de nodos es la base de datos Leveldb. En Leveldb, los datos se almacenan de tres formas. Primero, los datos escritos inmediatamente se almacenarán en archivos de tipo Memtable. Cuando el almacenamiento de Memtable esté lleno, el tipo de archivo cambiará de Memtable a Immutable Memtable. Ambos tipos de archivos se almacenan en la memoria, pero los archivos Immutable Memtable ya no se pueden cambiar, solo se pueden leer datos de ellos. El almacenamiento en caliente utilizado en la red IPFS almacena datos en esta parte. Cuando se llama, se pueden leer rápidamente desde la memoria. Sin embargo, la memoria móvil de un nodo normal suele tener un nivel de GB y es fácil de escribir lentamente. y cuando un nodo falla u ocurre otra situación anormal, los datos en la memoria se perderán permanentemente. Si desea que los datos se almacenen de forma persistente, debe almacenarlos en forma de archivo SST en una unidad de estado sólido (SSD). Sin embargo, al leer los datos, primero debe leerlos en la memoria. lo que reduce en gran medida la velocidad de indexación de datos. Finalmente, para los sistemas que utilizan almacenamiento fragmentado, la restauración de datos requiere enviar solicitudes de datos a múltiples nodos y restaurarlos. Este proceso también reducirá la velocidad de lectura de datos.

Método de almacenamiento de datos de Leveldb, fuente de la imagen: manual de Leveldb

2.4 Versatilidad de la capa DA

Con el desarrollo de DeFi y varios problemas con CEX, los requisitos de los usuarios para transacciones entre cadenas de activos descentralizados también están aumentando. Independientemente del mecanismo entre cadenas de bloqueo de hash, notario público o cadena de retransmisión, no se puede evitar la determinación simultánea de datos históricos en ambas cadenas. La clave de este problema radica en la separación de datos en las dos cadenas, y la comunicación directa no se puede lograr en diferentes sistemas descentralizados. Por lo tanto, en esta etapa se propone una solución cambiando el método de almacenamiento de la capa DA, que no solo almacena los datos históricos de múltiples cadenas públicas en la misma cadena pública confiable, sino que solo necesita llamar a los datos en esta cadena pública durante la verificación. . Esto requiere que la capa DA pueda establecer métodos de comunicación seguros con diferentes tipos de cadenas públicas, lo que significa que la capa DA tiene una buena versatilidad.

3. Exploración de tecnologías relacionadas con DA

3.1 fragmentación

  • En un sistema distribuido tradicional, un archivo no se almacena de forma completa en un determinado nodo, sino que los datos originales se dividen en varios bloques y se almacena un bloque en cada nodo. Y los bloques a menudo no se almacenan en un solo nodo, sino que dejarán copias de seguridad adecuadas en otros nodos. En los sistemas distribuidos convencionales existentes, esta cantidad de copias de seguridad generalmente se establece en 2. Este mecanismo de fragmentación puede reducir la presión de almacenamiento de un solo nodo, expandir la capacidad total del sistema a la suma de la capacidad de almacenamiento de cada nodo y, al mismo tiempo, garantizar la seguridad del almacenamiento mediante la redundancia de datos adecuada. El esquema de fragmentación adoptado en blockchain es generalmente similar, pero los detalles específicos serán diferentes. En primer lugar, debido a que cada nodo en la cadena de bloques no es confiable de manera predeterminada, el proceso de implementación de Sharding requiere una cantidad de respaldo de datos lo suficientemente grande para un posterior juicio sobre la autenticidad de los datos, por lo que el número de respaldos para este nodo debe ser mucho mayor que 2. . Idealmente, en un sistema blockchain que utiliza este esquema de almacenamiento, si el número total de nodos de verificación es T y el número de fragmentos es N, entonces el número de copias de seguridad debería ser T/N. El segundo es el proceso de almacenamiento de bloques. Hay menos nodos en los sistemas distribuidos tradicionales, por lo que un nodo a menudo se adapta a múltiples bloques de datos. Primero, los datos se asignan al anillo hash mediante un algoritmo hash consistente y luego cada nodo almacena los datos. bloques numerados en un rango determinado y pueden aceptar que un nodo no asigne tareas de almacenamiento durante un determinado almacenamiento. En la cadena de bloques, si a cada nodo se le asigna un bloque ya no es un evento aleatorio sino un evento inevitable. Cada nodo seleccionará aleatoriamente un bloque para su almacenamiento. Este proceso combina los datos originales con el bloque y la propia información del nodo. El hash de los datos se completa tomando el módulo del número de fragmentos. Suponiendo que cada dato se divide en N bloques, el tamaño de almacenamiento real de cada nodo es solo 1/N del original. Al configurar N adecuadamente, se puede lograr un equilibrio entre el TPS creciente y la presión de almacenamiento del nodo.

Método de almacenamiento de datos después de la fragmentación, fuente de la imagen: Kernel Ventures

3.2 DAS (muestreo de disponibilidad de datos)

La tecnología DAS se basa en una mayor optimización de los métodos de almacenamiento Sharding. Durante el proceso de fragmentación, debido al simple almacenamiento aleatorio de nodos, es posible que se pierda un determinado bloque. En segundo lugar, en el caso de datos fragmentados, también es muy importante confirmar la autenticidad e integridad de los datos durante el proceso de restauración. En DAS, estos dos problemas se resuelven mediante el código Eraser y el compromiso polinomial KZG.

  • Código de borrador: considerando la gran cantidad de nodos de verificación en Ethereum, la probabilidad de que un determinado bloque no sea almacenado por ningún nodo es casi 0, pero en teoría todavía existe la posibilidad de que ocurra una situación tan extrema. Para mitigar esta posible amenaza de pérdida de almacenamiento, según este esquema, los datos originales a menudo no se dividen directamente en bloques para su almacenamiento. En cambio, los datos originales primero se asignan a los coeficientes de un polinomio de orden n y luego se calcula 2n. tomado de los puntos del polinomio, y deje que el nodo seleccione aleatoriamente uno de ellos para su almacenamiento. Para este polinomio de orden n, solo se necesitan n+1 puntos para restaurarlo. Por lo tanto, los nodos solo necesitan seleccionar la mitad de los bloques y podemos restaurar los datos originales. A través del código Eraser, se mejora la seguridad del almacenamiento de datos y la capacidad de recuperación de datos de la red.

  • Compromiso polinómico de KZG: una parte muy importante del almacenamiento de datos es la verificación de la autenticidad de los datos. En una red que no utiliza el código Eraser, se pueden utilizar varios métodos en el proceso de verificación. Sin embargo, si el código Eraser anterior se introduce para mejorar la seguridad de los datos, entonces un método más apropiado es utilizar el compromiso polinómico KZG. El compromiso polinómico KZG puede verificar directamente el contenido de un solo bloque en forma de polinomios, eliminando así el proceso de reducir polinomios a datos binarios. El formulario de verificación es generalmente similar al árbol Merkle, pero no requiere datos de nodo de ruta específicos, solo KZG. Root Su autenticidad se puede verificar con datos de Block.

3.3 Método de verificación de datos de la capa DA

La verificación de datos garantiza que los datos llamados desde el nodo no hayan sido manipulados ni se hayan perdido. Para minimizar la cantidad de datos y los costos de cálculo necesarios en el proceso de verificación, la capa DA actualmente utiliza una estructura de árbol como método de verificación principal. La forma más simple es usar Merkle Tree para la verificación, que se registra en forma de un árbol binario completo. Solo necesita conservar una raíz de Merkle y el valor hash del subárbol en el otro lado de la ruta del nodo para verificar. El tiempo de verificación es complicado. El grado es el nivel O (logN) (si logN no agrega la base, el valor predeterminado es log2 (N)). Aunque el proceso de verificación se ha simplificado enormemente, el volumen general de datos del proceso de verificación aún crece con el aumento de datos. Para resolver el problema del aumento del volumen de verificación, en esta etapa se propone otro método de verificación, Verkle Tree. Además de almacenar valor, cada nodo en Verkle Tree también viene con un Compromiso de Vector. A través del valor del nodo original y esta prueba de compromiso, la autenticidad de los datos se puede verificar rápidamente sin llamar a los valores de otra hermana. nodos, lo que hace que cada El número de cálculos de verificación solo está relacionado con la profundidad del árbol Verkle y es una constante fija, lo que acelera enormemente la velocidad de verificación. Sin embargo, el cálculo del compromiso vectorial requiere la participación de todos los nodos hermanos en la misma capa, lo que aumenta en gran medida el costo de escribir y cambiar datos. Sin embargo, para datos como los históricos que se almacenan permanentemente y no se pueden alterar, y solo necesitan leerse pero no escribirse, Verkle Tree es extremadamente adecuado. Además, Merkle Tree y Verkle Tree tienen variantes en forma K-ary. Sus mecanismos de implementación específicos son similares, excepto que se cambia el número de subárboles debajo de cada nodo. En la siguiente tabla se puede ver una comparación de su rendimiento específico.

Comparación del rendimiento temporal de los métodos de verificación de datos, fuente de la imagen: Verkle Trees

3.4 Middleware DA general

La continua expansión del ecosistema blockchain ha provocado un aumento continuo en el número de cadenas públicas. Debido a las ventajas y la irremplazabilidad de cada cadena pública en sus respectivos campos, es casi imposible que las cadenas públicas de Capa 1 se unifiquen en un corto período de tiempo. Sin embargo, con el desarrollo de DeFi y varios problemas con CEX, los requisitos de los usuarios para activos comerciales descentralizados entre cadenas también están aumentando. Por lo tanto, el almacenamiento de datos multicadena de la capa DA que puede eliminar los problemas de seguridad en las interacciones de datos entre cadenas ha recibido cada vez más atención. Sin embargo, para aceptar datos históricos de diferentes cadenas públicas, la capa DA debe proporcionar un protocolo descentralizado para el almacenamiento estandarizado y la verificación de flujos de datos. Por ejemplo, kvye, un middleware de almacenamiento basado en Arweave, toma la iniciativa de capturar datos de la cadena. y todos los datos de la cadena se almacenan en Arweave en un formato estándar para minimizar las diferencias en el proceso de transmisión de datos. En términos relativos, Layer2, que proporciona específicamente almacenamiento de datos de la capa DA para una determinada cadena pública, interactúa con los datos a través de nodos internos compartidos. Aunque reduce el costo de la interacción y mejora la seguridad, tiene limitaciones relativamente grandes y solo puede proporcionar datos a un público específico. Las cadenas brindan servicios.

4. Solución de almacenamiento de capa DA

4.1 Cadena principal DA

4.1.1 Clase DankSharding

Este tipo de solución de almacenamiento aún no tiene un nombre definido y el representante más destacado es DankSharding en Ethereum, por lo que este artículo utiliza la clase DankSharding para referirse a este tipo de solución. Este tipo de solución utiliza principalmente las dos tecnologías de almacenamiento DA mencionadas anteriormente, Sharding y DAS. Primero, los datos se dividen en recursos compartidos apropiados mediante fragmentación y luego cada nodo extrae un bloque de datos en forma de DAS para su almacenamiento. Si hay suficientes nodos en toda la red, podemos elegir una cantidad mayor de fragmentos N, de modo que la presión de almacenamiento de cada nodo sea solo 1/N de la original, logrando así una expansión N veces del espacio de almacenamiento general. Al mismo tiempo, para evitar la situación extrema en la que un determinado bloque no se almacena en ningún bloque, DankSharding codifica los datos utilizando Eraser Code y solo la mitad de los datos se pueden restaurar por completo. El último paso es el proceso de verificación de datos, que utiliza la estructura de árbol de Verkle y el compromiso polinomial para lograr una verificación rápida.

4.1.2 Almacenamiento a corto plazo

Para el DA de la cadena principal, uno de los métodos de procesamiento de datos más simples es almacenar datos históricos a corto plazo. En esencia, la cadena de bloques desempeña el papel de un libro de contabilidad público, lo que permite que toda la red sea testigo de los cambios en el contenido del libro de contabilidad, sin la necesidad de un almacenamiento permanente. Tomando a Solana como ejemplo, aunque sus datos históricos están sincronizados con Arweave, el nodo de la red principal solo retiene los datos de transacciones de los últimos dos días. En la cadena pública basada en registros de cuentas, los datos históricos de cada momento conservan el estado final de la cuenta en la cadena de bloques, lo que es suficiente para proporcionar una base de verificación para los cambios en el momento siguiente. Para los proyectos que tienen necesidades especiales de datos antes de este período, pueden almacenarlos ellos mismos en otras cadenas públicas descentralizadas o mediante un tercero de confianza. En otras palabras, aquellos que tienen necesidades de datos adicionales deben pagar por el almacenamiento de datos históricos.

4.2 DA de terceros

4.2.1 DA específico de la cadena principal: EthStorage

  • DA específico de la cadena principal: lo más importante de la capa DA es la seguridad de la transmisión de datos. El más seguro en este punto es el DA de la cadena principal. Sin embargo, el almacenamiento de la cadena principal está sujeto a limitaciones de espacio de almacenamiento y competencia por los recursos. Por lo tanto, cuando la cantidad de datos de la red crece rápidamente, DA de terceros será una mejor opción si se desea lograr un almacenamiento de datos a largo plazo. Si el DA de terceros tiene una mayor compatibilidad con la red principal, podrá compartir nodos y también tendrá una mayor seguridad durante el proceso de interacción de datos. Por lo tanto, bajo la premisa de considerar la seguridad, el DA específico de la cadena principal tendrá enormes ventajas. Tomando Ethereum como ejemplo, un requisito básico para DA específico de la cadena principal es ser compatible con EVM y garantizar la interoperabilidad con los datos y contratos de Ethereum. Los proyectos representativos incluyen Topia, EthStorage, etc. Entre ellos, EthStorage es actualmente el mejor desarrollado en términos de compatibilidad, porque además de la compatibilidad a nivel EVM, también ha configurado especialmente interfaces relevantes para conectarse con herramientas de desarrollo de Ethereum como Remix y Hardhat para lograr compatibilidad a nivel Nivel de herramienta de desarrollo de Ethereum.

  • EthStorage: EthStorage es una cadena pública independiente de Ethereum, pero los nodos que se ejecutan en ella son superiores a los nodos de Ethereum. Es decir, los nodos que ejecutan EthStorage también pueden ejecutar Ethereum al mismo tiempo. A través del código de operación en Ethereum, se puede acceder directamente. EthStorage. EthStorage realiza operaciones. En el modelo de almacenamiento de EthStorage, solo se retiene una pequeña cantidad de metadatos en la red principal de Ethereum para su indexación, creando esencialmente una base de datos descentralizada para Ethereum. En la solución actual, EthStorage implementa la interacción entre la red principal de Ethereum y EthStorage mediante la implementación de un contrato de EthStorage en la red principal de Ethereum. Si Ethereum quiere almacenar datos, necesita llamar a la función put() en el contrato. Los parámetros de entrada son clave y datos de variables de dos bytes, donde los datos representan los datos que se almacenarán y la clave es su ubicación en la red Ethereum. La identificación puede considerarse similar a la existencia de CID en IPFS. Después de que el par de datos (clave, datos) se almacene correctamente en la red EthStorage, EthStorage generará un kvldx y lo devolverá a la red principal de Ethereum, y corresponderá a la clave en Ethereum. Este valor corresponde a la dirección de almacenamiento de los datos en Ethereum. EthStorage, por lo que originalmente era posible El problema de la necesidad de almacenar grandes cantidades de datos ahora se convierte en almacenar un único par (clave, kvldx), lo que reduce en gran medida el costo de almacenamiento de la red principal de Ethereum. Si necesita llamar a datos almacenados previamente, debe usar la función get() en EthStorage e ingresar el parámetro clave. Puede buscar rápidamente los datos en EthStorage a través de kvldx almacenados en Ethereum.

Contrato EthStorage, fuente de la imagen: Kernel Ventures

  • En términos de cómo los nodos almacenan datos específicamente, EthStorage se basa en el modelo Arweave. Primero, se fragmenta una gran cantidad de pares (k, v) de ETH. Cada fragmentación contiene un número fijo de pares de datos (k, v). También hay un límite en el tamaño específico de cada par (k, v). De esta manera, se garantiza la equidad de la carga de trabajo posterior para los mineros en el proceso de recompensa de almacenamiento. Para la emisión de recompensas, primero es necesario verificar si el nodo almacena datos. Durante este proceso, EthStorage dividirá un Sharding (tamaño de nivel de TB) en muchos fragmentos y retendrá una raíz de Merkle en la red principal de Ethereum para su verificación. Luego, el minero primero debe proporcionar un nonce para generar las direcciones de varios fragmentos a través de un algoritmo aleatorio con el hash del bloque anterior en EthStorage. El minero debe proporcionar los datos de estos fragmentos para demostrar que efectivamente almacena todo el Sharding. Pero este nonce no se puede seleccionar arbitrariamente; de ​​lo contrario, el nodo seleccionará un nonce adecuado que solo corresponda a su fragmento almacenado y pasará la verificación. Por lo tanto, este nonce debe ser tal que el valor de dificultad del fragmento generado pueda cumplir con los requisitos de la red después de la mezcla. y hash, y solo el primer nodo que envíe el nonce y la prueba de acceso aleatorio puede obtener la recompensa.

4.2.2 DA modular: Celestia

  • Módulo Blockchain: en esta etapa, las transacciones que debe realizar la cadena pública de Capa 1 se dividen principalmente en las siguientes cuatro partes: (1) Diseñar la lógica subyacente de la red, seleccionar nodos de verificación de una manera determinada, escribir bloques y asignar recompensas para los mantenedores de la red; (2) empaquetar y procesar transacciones y publicar transacciones relacionadas (3) verificar las transacciones que se cargarán en la cadena y determinar el estado final; (4) almacenar y mantener datos históricos en la cadena de bloques; Según las diferentes funciones completadas, podemos dividir la cadena de bloques en cuatro módulos, a saber, capa de consenso, capa de ejecución, capa de liquidación y capa de disponibilidad de datos (capa DA).

  • Diseño de cadena de bloques modular: durante mucho tiempo, estos cuatro módulos se han integrado en una cadena pública. Dicha cadena de bloques se denomina cadena de bloques única. Esta forma es más estable y más fácil de mantener, pero también ejerce una enorme presión sobre una única cadena pública. Durante el funcionamiento real, estos cuatro módulos se limitan entre sí y compiten por los recursos informáticos y de almacenamiento limitados de la cadena pública. Por ejemplo, aumentar la velocidad de procesamiento de la capa de procesamiento traerá una mayor presión de almacenamiento a la capa de disponibilidad de datos, para garantizar la seguridad de la capa de ejecución, se requiere un mecanismo de verificación más complejo, pero ralentiza la velocidad de procesamiento de las transacciones. Por lo tanto, el desarrollo de cadenas públicas a menudo enfrenta compensaciones entre estos cuatro módulos. Para superar el cuello de botella de la mejora del rendimiento de la cadena pública, los desarrolladores han propuesto una solución blockchain modular. La idea central de la cadena de bloques modular es separar uno o más de los cuatro módulos mencionados anteriormente e implementarlos en una cadena pública separada. De esta manera, la cadena pública solo puede centrarse en mejorar la velocidad de las transacciones o la capacidad de almacenamiento, rompiendo las limitaciones anteriores sobre el rendimiento general de la cadena de bloques debido a deficiencias.

  • DA modular: el método complejo de separar la capa DA del negocio blockchain y entregarlo a una cadena pública se considera una solución factible para los crecientes datos históricos de Layer1. La exploración en esta área aún se encuentra en sus primeras etapas, y el proyecto más representativo en la actualidad es Celestia. En términos del método de almacenamiento específico, Celestia se basa en el método de almacenamiento de Danksharding, que también divide los datos en múltiples bloques, y cada nodo extrae una parte para el almacenamiento y utiliza el compromiso polinomial KZG para verificar la integridad de los datos. Al mismo tiempo, Celestia utiliza un código de borrado RS bidimensional avanzado para reescribir los datos originales en forma de una matriz k*k. Al final, solo se puede recuperar el 25% de los datos originales. Sin embargo, el almacenamiento fragmentado de datos esencialmente simplemente multiplica la presión de almacenamiento de todo el nodo de la red por un coeficiente sobre el volumen total de datos. La presión de almacenamiento del nodo y el volumen de datos aún mantienen un crecimiento lineal. A medida que la Capa 1 continúa mejorando su velocidad de transacciones, la presión de almacenamiento de los nodos aún puede alcanzar un nivel crítico inaceptable algún día. Para resolver este problema, se introduce el componente IPLD en Celestia para su procesamiento. Los datos en la matriz k * k no se almacenan directamente en Celestia, sino en la red LL-IPFS, y solo el código CID de los datos en IPFS se retiene en el nodo. Cuando un usuario solicita un dato histórico, el nodo enviará el CID correspondiente al componente IPLD y los datos originales se llamarán en IPFS a través de este CID. Si los datos existen en IPFS, se devolverán a través del componente y el nodo IPLD; si no existen, los datos no se pueden devolver.

Método de lectura de datos de Celestia, fuente de la imagen: Celestia Core

  • Celestia: Tomando a Celestia como ejemplo, podemos vislumbrar la aplicación de la cadena de bloques modular para resolver el problema de almacenamiento de Ethereum. El nodo Rollup enviará los datos de transacciones empaquetados y verificados a Celestia y almacenará los datos en Celestia. Durante este proceso, Celestia solo almacenará los datos sin un conocimiento excesivo. Finalmente, el nodo Rollup se basará en el tamaño del espacio de almacenamiento correspondiente. Los tokens tia se pagarán a Celestia como tarifas de almacenamiento. El almacenamiento en Celstia utiliza DAS y códigos de borrado similares a los de EIP4844, pero los códigos de borrado polinómicos en EIP4844 se actualizan y los códigos de borrado RS bidimensionales se utilizan para actualizar la seguridad del almacenamiento nuevamente. Solo solo el 25% de las fracturas pueden restaurar la seguridad. datos completos de la transacción. Es esencialmente solo una cadena pública de POS con bajos costos de almacenamiento. Si se va a implementar para resolver el problema de almacenamiento de datos históricos de Ethereum, se necesitan muchos otros módulos específicos para cooperar con Celestia. Por ejemplo, en términos de resumen, un modo de resumen muy recomendado en el sitio web oficial de Celestia es Sovereign Rollup. A diferencia del Rollup común en la Capa 2, las transacciones solo se calculan y verifican, es decir, se completan las operaciones de la capa de ejecución. Sovereign Rollup incluye todo el proceso de ejecución y liquidación, lo que minimiza el procesamiento de transacciones en Celestia. Cuando la seguridad general de Celestia es más débil que la de Ethereum, esta medida puede maximizar la seguridad del proceso de transacción general. En términos de garantizar la seguridad de los datos solicitados por Celestia, la red principal de Ethereum, la solución más común en este momento es el contrato inteligente del puente de gravedad cuántica. Para los datos almacenados en Celestia, generará una raíz Merkle (prueba de disponibilidad de datos) y la mantendrá en el contrato del puente de gravedad cuántica de la red principal de Ethereum. Cada vez que Ethereum llame a los datos históricos de Celestia, se comparará su resultado de hash. con Merkle Root se utiliza para comparar, y si coincide, significa que de hecho se trata de datos históricos reales.

4.2.3 Almacenamiento de DA de cadena pública

En términos de los principios técnicos de DA de la cadena principal, muchas tecnologías similares a Sharding se toman prestadas de la cadena pública de almacenamiento. Entre los DA de terceros, algunos utilizan directamente la cadena pública de almacenamiento para completar algunas tareas de almacenamiento. Por ejemplo, los datos de transacciones específicas en Celestia se colocan en la red LL-IPFS. En la solución DA de terceros, además de construir una cadena pública separada para resolver el problema de almacenamiento de Layer1, una forma más directa es conectar directamente la cadena pública de almacenamiento con Layer1 para almacenar enormes datos históricos en Layer1. Para las cadenas de bloques de alto rendimiento, el volumen de datos históricos es aún mayor. Cuando se ejecuta a máxima velocidad, el volumen de datos de la cadena pública de alto rendimiento Solana es cercano a 4 PG, lo que está completamente más allá del rango de almacenamiento de los nodos ordinarios. La solución que eligió Solana es almacenar datos históricos en la red de almacenamiento descentralizada Arweave y solo retener 2 días de datos en los nodos de la red principal para su verificación. Para garantizar la seguridad del proceso almacenado, Solana y Arweave Chain han diseñado especialmente un protocolo puente de almacenamiento, Solar Bridge. Los datos verificados por el nodo Solana se sincronizarán con Arweave y se devolverá la etiqueta correspondiente. Solo a través de esta etiqueta, el nodo Solana puede ver los datos históricos de la cadena de bloques Solana en cualquier momento. En Arweave, no es necesario que todos los nodos de la red mantengan la coherencia de los datos y los utilicen como umbral para participar en la operación de la red. En cambio, se adopta el almacenamiento de recompensas. En primer lugar, Arweave no utiliza una estructura de cadena tradicional para construir bloques, sino que es más similar a una estructura gráfica. En Arweave, un nuevo bloque no solo apuntará al bloque anterior, sino que también apuntará aleatoriamente a un bloque generado. La ubicación específica del bloque de recuperación está determinada por el resultado hash de su bloque anterior y la altura de su bloque. La ubicación del bloque de recuperación se desconoce hasta que se extrae el bloque anterior. Sin embargo, en el proceso de generar un nuevo bloque, el nodo necesita tener datos de Recall Block para usar el mecanismo POW para calcular el hash de la dificultad especificada. Solo el primer minero que calcule el hash que cumpla con la dificultad puede obtener la recompensa. lo que anima a los mineros a almacenar la mayor cantidad de datos históricos posible. Al mismo tiempo, cuantas menos personas almacenen un determinado bloque histórico, los nodos tendrán menos competidores a la hora de generar nonces que cumplan con la dificultad, animando a los mineros a almacenar menos bloques en la red.Finalmente, para garantizar que los nodos almacenen datos permanentemente en Arweave, introduce el mecanismo de puntuación de nodos de WildFire. Los nodos tenderán a comunicarse con los nodos que pueden proporcionar más datos históricos más rápido, mientras que los nodos con calificaciones más bajas a menudo no pueden obtener los datos de transacciones y bloques más recientes lo antes posible y, por lo tanto, no pueden aprovechar la competencia de POW.

Método de construcción de bloques Arweave, fuente de la imagen: Arweave Yellow-Paper

5. Comparación completa

A continuación, compararemos las ventajas y desventajas de las cinco soluciones de almacenamiento según las cuatro dimensiones de los indicadores de rendimiento de DA.

  • Seguridad: la mayor fuente de problemas de seguridad de los datos es la pérdida causada durante el proceso de transmisión de datos y la manipulación maliciosa por parte de nodos deshonestos. En el proceso entre cadenas, debido a la independencia y el estado de las dos cadenas públicas, la seguridad de la transmisión de datos es fundamental. zonas más afectadas. Además, la Capa 1, que actualmente requiere una capa DA dedicada, a menudo tiene un grupo de consenso fuerte y su propia seguridad será mucho mayor que la de las cadenas públicas de almacenamiento ordinarias. Por lo tanto, la solución DA de la cadena principal tiene mayor seguridad. Después de garantizar la seguridad de la transmisión de datos, el siguiente paso es garantizar la seguridad de los datos de la llamada. Si solo se consideran los datos históricos a corto plazo utilizados para verificar las transacciones, toda la red realiza una copia de seguridad de los mismos datos en la red de almacenamiento temporal. En una solución similar a DankSharding, el número promedio de copias de seguridad de datos es solo 1/N de. la cantidad de nodos en toda la red, una mayor redundancia de datos puede hacer que sea menos probable que se pierdan y también puede proporcionar más muestras de referencia durante la verificación. Por lo tanto, el almacenamiento temporal tendrá relativamente una mayor seguridad de los datos. En la solución DA de terceros, el DA específico de la cadena principal utiliza nodos públicos con la cadena principal, y los datos se pueden transmitir directamente a través de estos nodos de retransmisión durante el proceso entre cadenas, por lo que tendrá una seguridad relativamente mayor que otras soluciones DA. .

  • Costos de almacenamiento: el factor más importante que afecta los costos de almacenamiento es la cantidad de redundancia de datos. En la solución de almacenamiento a corto plazo de la cadena principal DA, se almacena en forma de sincronización de datos de todos los nodos de la red. Es necesario realizar una copia de seguridad de todos los datos recién almacenados en todos los nodos de la red, lo que tiene el mayor costo de almacenamiento. El alto coste del almacenamiento determina a su vez que este método sólo sea adecuado para el almacenamiento temporal en redes con alto TPS. El segundo es el método de almacenamiento de Sharding, incluido Sharding en la cadena principal y Sharding en DA de terceros. Dado que la cadena principal suele tener más nodos, un bloque correspondiente también tendrá más copias de seguridad, por lo que la solución de fragmentación de la cadena principal tendrá costos más altos. El costo de almacenamiento más bajo es la cadena pública de almacenamiento DA que adopta un método de almacenamiento de recompensa. Según este esquema, la cantidad de datos redundantes a menudo fluctúa alrededor de una constante fija. Al mismo tiempo, también se introduce un mecanismo de ajuste dinámico en la cadena pública de almacenamiento DA para atraer nodos para almacenar menos datos respaldados mediante el aumento de las recompensas para garantizar la seguridad de los datos.

  • Velocidad de lectura de datos: la velocidad de almacenamiento de datos se ve afectada principalmente por la ubicación de almacenamiento de los datos en el espacio de almacenamiento, la ruta del índice de datos y la distribución de los datos en los nodos. Entre ellos, la ubicación de almacenamiento de los datos en el nodo tiene un mayor impacto en la velocidad, porque almacenar los datos en la memoria o SSD puede hacer que la velocidad de lectura difiera decenas de veces. El almacenamiento SSD se usa a menudo para almacenar DA de cadena pública, porque la carga en esta cadena no solo incluye datos en la capa DA, sino que también incluye datos personales con un alto uso de memoria, como videos e imágenes cargados por los usuarios. Si la red no utiliza SSD como espacio de almacenamiento, será difícil soportar una enorme presión de almacenamiento y cumplir con los requisitos de almacenamiento a largo plazo. En segundo lugar, para el DA de terceros y el DA de la cadena principal que utilizan memoria para almacenar datos, el DA de terceros primero debe buscar los datos de índice correspondientes en la cadena principal y luego transferir los datos de índice a través de la cadena al tercero. -party DA y devolverlo a través de los datos del puente de almacenamiento. Por el contrario, el DA de la cadena principal puede consultar datos directamente desde los nodos y, por lo tanto, tiene una velocidad de recuperación de datos más rápida. Finalmente, dentro de la cadena principal DA, el método Sharding requiere llamar a Block desde múltiples nodos y restaurar los datos originales. Por lo tanto, en comparación con el almacenamiento a corto plazo sin almacenamiento fragmentado, la velocidad será más lenta.

  • Universalidad de la capa DA: la universalidad de DA de la cadena principal es cercana a cero, porque es imposible transferir datos en una cadena pública con espacio de almacenamiento insuficiente a otra cadena pública con espacio de almacenamiento insuficiente. En DA de terceros, la versatilidad de una solución y su compatibilidad con una cadena principal específica son indicadores contradictorios. Por ejemplo, en la solución DA específica de la cadena principal diseñada para una determinada cadena principal, se han realizado muchas mejoras en el nivel de consenso de red y tipo de nodo para adaptarse a la cadena pública. Por lo tanto, estas mejoras desempeñarán un papel en la comunicación. con otras cadenas públicas un gran obstáculo. Dentro del DA de terceros, el DA de cadena pública de almacenamiento tiene un mejor rendimiento en términos de versatilidad en comparación con el DA modular. La cadena pública de almacenamiento DA tiene una comunidad de desarrolladores más grande y más instalaciones de expansión, que pueden adaptarse a las condiciones de las diferentes cadenas públicas. Al mismo tiempo, la cadena pública de almacenamiento DA adquiere datos de manera más activa a través de la captura de paquetes, en lugar de recibir pasivamente información transmitida desde otras cadenas públicas. Por lo tanto, puede codificar datos a su manera, lograr un almacenamiento estandarizado de flujos de datos, facilitar la gestión de información de datos de diferentes cadenas principales y mejorar la eficiencia del almacenamiento.

Comparación del rendimiento de la solución de almacenamiento, fuente de la imagen: Kernel Ventures

6. Resumen

La cadena de bloques actual está experimentando una transformación de Crypto a la Web3 más inclusiva. Este proceso trae no solo una riqueza de proyectos en la cadena de bloques. Para dar cabida a la operación simultánea de tantos proyectos en Layer1 y al mismo tiempo garantizar la experiencia de los proyectos Gamefi y Socialfi, Layer1 representada por Ethereum ha adoptado métodos como Rollup y Blobs para mejorar TPS. Entre las nuevas cadenas de bloques, también está creciendo el número de cadenas de bloques de alto rendimiento. Pero un TPS más alto no sólo significa un mayor rendimiento, sino también una mayor presión de almacenamiento en la red. Para datos históricos masivos, actualmente se proponen varios métodos de DA basados ​​en la cadena principal y terceros para adaptarse al aumento de la presión de almacenamiento en cadena. Cada método de mejora tiene ventajas y desventajas y tiene una aplicabilidad diferente en diferentes situaciones.

Las cadenas de bloques que se centran en pagos tienen requisitos extremadamente altos para la seguridad de los datos históricos y no persiguen un TPS particularmente alto. Si este tipo de cadena pública aún está en la etapa de preparación, se puede adoptar un método de almacenamiento similar a DankSharding, que puede lograr un enorme aumento en la capacidad de almacenamiento al tiempo que garantiza la seguridad. Sin embargo, si se trata de una cadena pública como Bitcoin que ya ha tomado forma y tiene una gran cantidad de nodos, existen enormes riesgos de mejoras precipitadas en la capa de consenso. Por lo tanto, la cadena principal DA dedicada con mayor seguridad en el almacenamiento fuera de la cadena. se puede utilizar para equilibrar los problemas de seguridad y almacenamiento. Pero vale la pena señalar que las funciones de blockchain no son estáticas sino que cambian constantemente. Por ejemplo, las primeras funciones de Ethereum se limitaban principalmente a pagos y procesamiento automatizado simple de activos y transacciones mediante contratos inteligentes. Sin embargo, a medida que el panorama de blockchain continúa expandiéndose, se han agregado gradualmente varios proyectos Socialfi y Defi a Ethereum. en una dirección más integral. Recientemente, con la explosión de la ecología de inscripción en Bitcoin, las tarifas de transacción de la red Bitcoin han aumentado casi 20 veces desde agosto. Esto refleja que la velocidad de transacción de la red Bitcoin en esta etapa no puede satisfacer la demanda de transacciones, y los comerciantes solo pueden hacerlo. El aumento de las tarifas hace que las transacciones se procesen lo más rápido posible. Ahora, la comunidad Bitcoin necesita hacer una concesión, ya sea aceptar tarifas altas y velocidades de transacción lentas, o reducir la seguridad de la red para aumentar la velocidad de las transacciones pero frustrar la intención original del sistema de pago. Si la comunidad Bitcoin elige lo último, ante la creciente presión de datos, también será necesario ajustar la solución de almacenamiento correspondiente.

Las tarifas de transacción de la red principal de Bitcoin fluctúan, fuente de la imagen: OKLINK

Para las cadenas públicas con funciones integrales, tienen una mayor búsqueda de TPS y el crecimiento de datos históricos es aún mayor. Es difícil adaptarse al rápido crecimiento de TPS a largo plazo mediante la adopción de una solución similar a DankSharding. Por lo tanto, una forma más adecuada es migrar los datos a un DA de terceros para su almacenamiento. Entre ellos, el DA específico de la cadena principal tiene la mayor compatibilidad y puede tener más ventajas si solo se consideran los problemas de almacenamiento de una única cadena pública. Pero hoy, cuando las cadenas públicas de Capa 1 están floreciendo, la transferencia de activos entre cadenas y la interacción de datos se han convertido en una búsqueda común de la comunidad blockchain. Si se tiene en cuenta el desarrollo a largo plazo de todo el ecosistema blockchain, almacenar datos históricos de diferentes cadenas públicas en la misma cadena pública puede eliminar muchos problemas de seguridad en el proceso de verificación e intercambio de datos. Por lo tanto, la diferencia entre DA modular y almacenamiento. La forma DA de la cadena pública podría ser una mejor opción. Bajo la premisa de una gran versatilidad, el DA modular se centra en proporcionar servicios de capa de DA de blockchain, introduciendo datos históricos de gestión de datos de índice más refinados, que pueden clasificar razonablemente diferentes datos de la cadena pública y almacenar datos de la cadena pública. Sin embargo, la solución anterior no tiene en cuenta el costo de ajustar la capa de consenso en la cadena pública existente. Este proceso es extremadamente riesgoso, una vez que ocurren los problemas, puede generar vulnerabilidades sistémicas y hacer que la cadena pública pierda el consenso de la comunidad. Por lo tanto, si se trata de una solución de transición durante el proceso de expansión de la cadena de bloques, el almacenamiento temporal más simple de la cadena principal puede ser más adecuado. Finalmente, la discusión anterior se basa en el desempeño durante la operación real. Sin embargo, si el objetivo de una determinada cadena pública es desarrollar su propia ecología y atraer más partes y participantes del proyecto, también puede preferir proyectos que sean apoyados y financiados por ella misma. base. . Por ejemplo, cuando el rendimiento general es equivalente o incluso ligeramente inferior al de las soluciones de almacenamiento en cadena pública, la comunidad Ethereum también recurrirá a proyectos de Capa 2 respaldados por la Fundación Ethereum, como EthStorage, para continuar desarrollando el ecosistema Ethereum.

En definitiva, las funciones de la cadena de bloques actual son cada vez más complejas, lo que también conlleva mayores necesidades de espacio de almacenamiento. Cuando hay suficientes nodos de verificación de Capa 1, no es necesario realizar una copia de seguridad de los datos históricos en todos los nodos de toda la red. Solo cuando la cantidad de copias de seguridad alcanza un cierto valor se puede garantizar la seguridad relativa. Al mismo tiempo, la división del trabajo en la cadena pública se ha vuelto cada vez más detallada. Layer1 es responsable del consenso y la ejecución, Rollup es responsable del cálculo y la verificación, y se utiliza una cadena de bloques separada para el almacenamiento de datos. Cada parte puede centrarse en una determinada función sin estar limitada por el desempeño de otras partes. Sin embargo, cuánto almacenar o qué proporción de nodos almacenar datos históricos puede lograr un equilibrio entre seguridad y eficiencia, y cómo garantizar la interoperabilidad segura entre diferentes cadenas de bloques. Esto requiere que los desarrolladores de cadenas de bloques piensen y continúen. Para los inversores, pueden prestar atención al principal proyecto DA específico de la cadena en Ethereum, porque Ethereum ya tiene suficientes partidarios en esta etapa y no necesita depender de otras comunidades para expandir su influencia. Lo que más se necesita es mejorar y desarrollar su propia comunidad y atraer más proyectos al ecosistema Ethereum. Sin embargo, para las cadenas públicas en posición de ponerse al día, como Solana y Aptos, la cadena única en sí no tiene una ecología tan completa, por lo que puede estar más inclinada a unir fuerzas con otras comunidades para construir una enorme ecología entre cadenas. para ampliar la influencia. Por lo tanto, para la capa 1 emergente, el DA general de terceros merece más atención.

Kernel Ventures es un fondo de capital de riesgo criptográfico impulsado por la comunidad de investigación y desarrollo con más de 70 inversiones en etapas iniciales centradas en infraestructura, middleware, dApps, especialmente ZK, Rollup, DEX, blockchains modulares e incorporación de áreas verticales para miles de millones de usuarios criptográficos en el futuro, como la abstracción de cuentas, la disponibilidad de datos, la escalabilidad, etc. Durante los últimos siete años, nos hemos comprometido a apoyar el crecimiento de las principales comunidades de desarrollo y asociaciones universitarias de blockchain en todo el mundo.

referencias

  1. Celestia: El mar estrellado de la blockchain modular: https://foresightnews.pro/article/detail/15497

  2. Uso de DHT y trabajo futuro: https://github.com/celestiaorg/celestia-node/issues/11

  3. Celestia-core: https://github.com/celestiaorg/celestia-core

  4. Laboratorios Solana: https://github.com/solana-labs/solana?source=post_page-----cf47a61a9274------------------------ --------

  5. Anuncio del Puente SOLAR: https://medium.com/solana-labs/annunciando-the-solar-bridge-c90718a49fa2

  6. manual de niveldb: https://leveldb-handbook.readthedocs.io/zh/latest/sstable.html

  7. Kuszmaul J. Verkle árboles[J]. Verkle Trees, 2019, 1: 1.:https://math.mit.edu/research/highschool/primes/materials/2018/Kuszmaul.pdf

  8. Sitio web oficial de Arweave: https://www.arweave.org/

  9. Papel amarillo de Arweave: https://www.arweave.org/amarillo-paper.pdf