Auteur : Jerry Luo de Kernel Ventures

Éditeurs : Kernel Ventures Rose, Kernel Ventures Mandy, Kernel Ventures Joshua

TLDR :

  1. Au début de la blockchain, le maintien de la cohérence des données est considéré comme extrêmement important pour garantir la sécurité et la décentralisation. Cependant, avec le développement de l’écosystème blockchain, la pression de stockage augmente également, conduisant à une tendance à la centralisation du fonctionnement des nœuds. Dans ce cas, le problème des coûts de stockage posé par la croissance du TPS dans la couche 1 doit être résolu de toute urgence.

  2. Face à ce problème, les développeurs devraient proposer une solution prenant pleinement en compte la sécurité, le coût de stockage, la vitesse de lecture des données et la polyvalence de la couche DA.

  3. Dans le processus de résolution de ce problème, de nombreuses nouvelles technologies et idées ont émergé, notamment Sharding, DAS, Verkle Tree, les composants intermédiaires DA, etc. Ils tentent d'optimiser le schéma de stockage de la couche DA en réduisant la redondance des données et en améliorant l'efficacité de la validation des données.

  4. Les solutions DA sont globalement classées en deux types du point de vue de l'emplacement de stockage des données, à savoir les DA de la chaîne principale et les DA tiers. Les DA de la chaîne principale sont conçus dans la perspective d'un nettoyage régulier des données et d'un stockage de données découpé pour réduire la pression de stockage sur les nœuds, tandis que les DA tiers sont conçus pour répondre aux besoins de stockage et proposent des solutions raisonnables pour de grandes quantités de données. En conséquence, nous faisons principalement un compromis entre la compatibilité mono-chaîne et la compatibilité multi-chaîne dans les DA tiers, et proposons trois types de solutions : les DA spécifiques à la chaîne principale, les DA modularisés et les DA de chaîne publique de stockage.

  5. Les chaînes publiques de type paiement ont des exigences très élevées en matière de sécurité des données historiques et peuvent donc utiliser la chaîne principale comme couche DA. Cependant, pour les chaînes publiques qui fonctionnent depuis longtemps et qui disposent d'un grand nombre de mineurs exploitant le réseau, il est plus approprié d'adopter un DA tiers qui n'implique pas de changement de couche de consensus avec une sécurité relativement élevée. Pour les chaînes publiques complètes, il est plus approprié d'utiliser le stockage DA dédié de la chaîne principale avec une plus grande capacité de données, un coût inférieur et une sécurité. Cependant, compte tenu de la demande de DA modulaire et inter-chaînes, c'est également une bonne option.

  6. Dans l’ensemble, la blockchain s’oriente vers une réduction de la redondance des données ainsi que vers une division du travail multi-chaînes.

1. Origines

La blockchain, en tant que registre distribué, doit faire une copie des données historiques stockées sur tous les nœuds pour garantir que le stockage des données est sécurisé et suffisamment décentralisé. Puisque l'exactitude de chaque changement d'état est liée à l'état précédent (la source de la transaction), afin de garantir l'exactitude de la transaction, une blockchain doit stocker tout l'historique des transactions depuis la génération de la première transaction jusqu'à la transaction actuelle. transaction. En prenant Ethereum comme exemple, même en prenant 20 Ko par bloc comme taille moyenne, la taille totale des données actuelles dans Ethereum a atteint 370 Go. Pour un nœud complet, en plus du bloc lui-même, il doit enregistrer l'état et les reçus de transaction. En incluant cette partie, la quantité totale de stockage d'un seul nœud a dépassé 1 To, ce qui centralise progressivement le fonctionnement du nœud.

Source : Etherscan

La récente mise à niveau d'Ethereum à Cancun vise à augmenter le TPS d'Ethereum à près de 1 000, date à laquelle la croissance annuelle du stockage d'Ethereum dépassera la somme de son stockage actuel. Dans les chaînes publiques hautes performances, la vitesse de transaction de dizaines de milliers de TPS peut apporter des centaines de Go de données supplémentaires par jour. La redondance commune des données à tous les nœuds du réseau ne peut évidemment pas s'adapter à une telle pression de stockage. Ainsi, Layer1 doit trouver une solution adaptée pour équilibrer la croissance du TPS et le coût de stockage des nœuds.

2. Indicateurs de performance du DA

2.1 Sécurité

Par rapport à une base de données ou à une liste chaînée, l'immuabilité de la blockchain vient du fait que ses données nouvellement générées peuvent être vérifiées par des données historiques, garantissant ainsi la sécurité de ses données historiques est le premier problème à prendre en compte dans le stockage de la couche DA. Pour juger de la sécurité des données des systèmes blockchain, nous analysons souvent la quantité de données redondantes et la méthode de vérification de la disponibilité des données.

  • Nombre de redondance : la redondance des données dans le système blockchain joue principalement les rôles suivants : premièrement, davantage de redondance dans le réseau peut fournir davantage d'échantillons à titre de référence lorsque le vérificateur doit vérifier l'état du compte, ce qui peut aider le nœud à sélectionner les données enregistrées par le majorité de nœuds avec une sécurité plus élevée. Dans les bases de données traditionnelles, puisque les données ne sont stockées que sous forme de paires clé-valeur dans un certain nœud, la modification des données historiques n'est effectuée que dans un seul nœud, avec un faible coût d'attaque et, en théorie, plus Plus le nombre de redondances est élevé, plus le degré de crédibilité des données est élevé. Théoriquement, plus il y a de redondance, plus les données seront fiables. De plus, plus il y a de nœuds, moins les données risquent d'être perdues. Ce point peut également être comparé aux serveurs centralisés qui stockent les jeux Web2, une fois les serveurs en arrière-plan arrêtés, il y aura une fermeture complète du service. Mais ce n'est pas mieux avec plus de redondance, car la redondance apportera de l'espace de stockage supplémentaire, ce qui entraînera une trop grande pression de stockage sur le système. Une bonne couche DA doit choisir un moyen de redondance approprié pour trouver un équilibre entre sécurité et efficacité du stockage.

  • Vérification de la disponibilité des données : le degré de redondance peut garantir un nombre suffisant d'enregistrements de données sur le réseau, mais l'exactitude et l'exhaustivité des données à utiliser doivent être vérifiées. Les blockchains actuelles utilisent généralement des algorithmes d'engagement cryptographique comme méthodes de vérification, qui conservent simplement un petit engagement cryptographique obtenu par mélange de données de transaction, pour que l'ensemble du réseau puisse l'enregistrer. Pour tester l'authenticité des données historiques, nous devons essayer de récupérer l'engagement avec les données. Si l'engagement de recouvrement est identique à l'engagement initial, la vérification réussit. Les algorithmes de vérification cryptographique couramment utilisés sont Merkle Root et Verkle Root. Les algorithmes de vérification de la disponibilité des données de haute sécurité peuvent vérifier rapidement les données historiques à l'aide du moins de données tierces possible.

2.2 Coût de stockage

Après avoir assuré la sécurité de base, le prochain objectif de la couche DA est de réduire les coûts et d’augmenter l’efficacité. La première étape consiste à réduire le coût de stockage présenté par la consommation de mémoire provoquée par le stockage des données par taille unitaire, quelle que soit la différence de performances matérielles. De nos jours, les principaux moyens de réduire les coûts de stockage dans la blockchain sont d'adopter la technologie de sharding et d'utiliser le stockage de récompense pour réduire le nombre de sauvegardes de données tout en préservant leur sécurité. Cependant, il n'est pas difficile de voir à partir des méthodes d'amélioration ci-dessus qu'il existe une relation de jeu entre le coût du stockage et la sécurité des données, et réduire l'occupation du stockage signifie souvent une diminution de la sécurité. Par conséquent, une excellente couche DA doit réaliser l’équilibre entre le coût de stockage et la sécurité des données. De plus, si la couche DA est une chaîne publique distincte, elle doit également réduire les coûts en minimisant le processus intermédiaire d'échange de données, dans lequel chaque processus de transit doit laisser des données d'index pour une récupération ultérieure. Ainsi, plus le processus d'appel est long, plus il restera de données d'index, ce qui augmentera le coût de stockage. Enfin, le coût du stockage des données est directement lié à la persistance des données. En général, plus le coût du stockage des données est élevé, plus il est difficile pour la chaîne publique de stocker les données de manière persistante.

2.3 Vitesse de lecture des données

Une fois les coûts réduits, l’étape suivante est l’efficacité, c’est-à-dire la capacité de rappeler rapidement les données de la couche DA en cas de besoin. Ce processus comporte deux étapes, la première consiste à rechercher des nœuds pour stocker les données, principalement pour les chaînes publiques qui n'ont pas atteint la cohérence des données sur le réseau, si la chaîne publique a réalisé la synchronisation des données des nœuds à travers le réseau, la consommation de temps de cette processus peut être ignoré. Ensuite, dans les systèmes de blockchain traditionnels à ce stade, notamment Bitcoin, Ethereum et Filecoin, la méthode de stockage des nœuds est entièrement basée sur la base de données Leveldb. Dans Leveldb, les données sont stockées de trois manières. Tout d'abord, les données écrites à la volée sont stockées dans des fichiers de type Memtable jusqu'à ce que la Memtable soit pleine, puis le type de fichier passe de Memtable à Immutable Memtable. Les deux types sont stockés en mémoire, mais les fichiers Immutable Memtable sont en lecture seule. Le stockage à chaud utilisé dans le réseau IPFS stocke les données dans cette partie du réseau, de sorte qu'elles puissent être rapidement lues depuis la mémoire lorsqu'il est appelé, mais un nœud moyen ne dispose que de Go de mémoire amovible, qui peut facilement être ralentie, et lorsqu'un nœud tombe en panne, les données en mémoire sont perdues définitivement. Si vous souhaitez un stockage de données persistant, vous devez stocker les données sous forme de fichiers SST sur le disque SSD (Solid State Disk), mais lors de la lecture des données, vous devez d'abord lire les données dans la mémoire, ce qui réduit considérablement la vitesse. d'indexation des données. Enfin, pour un système avec partitionnement du stockage, la restauration des données nécessite d'envoyer des requêtes de données à plusieurs nœuds et de les restaurer, un processus qui ralentit également la lecture des données.

Source : Manuel Leveldb

2.4 Généralisation de la couche DA

Avec le développement de DeFi et divers problèmes de CEX, les exigences des utilisateurs en matière de transactions inter-chaînes d'actifs décentralisés augmentent. Que nous adoptions le mécanisme inter-chaînes de verrouillage de hachage, de notaire ou de chaîne de relais, nous ne pouvons pas éviter la détermination simultanée des données historiques sur deux chaînes. La clé de ce problème réside dans la séparation des données sur les deux chaînes, qui ne peuvent pas être directement communiquées dans différents systèmes décentralisés. Par conséquent, une solution est proposée en modifiant la méthode de stockage de la couche DA, qui stocke les données historiques de plusieurs chaînes publiques sur la même chaîne publique de confiance et n'a besoin d'appeler les données sur cette chaîne publique que lors de la vérification. Cela nécessite que la couche DA soit capable d'établir une communication sécurisée avec différents types de chaînes publiques, ce qui signifie que la couche DA a une bonne polyvalence.

3. Techniques Concerning DA

3.1 Partage

Dans les systèmes distribués traditionnels, un fichier n'est pas stocké sous une forme complète sur un nœud, mais pour diviser les données originales en plusieurs blocs et les stocker dans chaque nœud. En outre, le bloc est souvent non seulement stocké dans un nœud, mais laisse une sauvegarde appropriée dans d'autres nœuds. Dans les systèmes distribués traditionnels existants, le nombre de sauvegardes est généralement fixé à 2. Ce mécanisme de partitionnement peut réduire la pression de stockage des nœuds individuels, étendre la capacité totale du système à la somme de la capacité de stockage de chaque nœud, et au assurer en même temps la sécurité du stockage grâce à une redondance appropriée des données. Le schéma de partitionnement adopté dans la blockchain est généralement similaire aux systèmes distribués traditionnels, mais il existe des différences dans certains détails. Premièrement, étant donné que les nœuds par défaut de la blockchain ne sont pas dignes de confiance, le processus de réalisation du partitionnement nécessite une quantité suffisamment importante de sauvegardes de données pour le jugement ultérieur de l'authenticité des données, de sorte que le nombre de sauvegardes de ce nœud doit être bien supérieur à 2. Idéalement , dans le système blockchain qui adopte ce schéma de stockage, si le nombre total de nœuds d'authentification est T et le nombre de fragments est N, le nombre de sauvegardes doit être T/N. Deuxièmement, en ce qui concerne le processus de stockage d'un bloc, un système distribué traditionnel avec moins de nœuds a souvent le mode qu'un nœud s'adapte à plusieurs blocs de données. Tout d'abord, les données sont mappées sur l'anneau de hachage par l'algorithme de hachage cohérent, puis chaque nœud stocke une certaine plage de blocs numérotés avec les affectations de l'anneau de hachage. Il peut être accepté dans le système qu'un seul nœud n'ait pas de tâche de stockage dans un certain stockage. Sur la blockchain, le bloc de stockage n'est plus un hasard mais un événement inévitable pour les nœuds. Chaque nœud sélectionnera au hasard un bloc à stocker dans la blockchain, le processus étant complété par le résultat de hachage des données mélangées aux informations du nœud pour obtenir un numéro de tranche modulo. En supposant que chaque donnée soit divisée en N blocs, la taille de stockage réelle de chaque nœud n'est que de 1/N. En définissant N de manière appropriée, nous pouvons atteindre un équilibre entre la croissance du TPS et la pression sur le stockage des nœuds.

Source : Kernel Ventures

3.2 DAS (échantillonnage de disponibilité des données)

La technologie DAS est une optimisation supplémentaire de la méthode de stockage basée sur le partitionnement. Au cours du processus de partitionnement, en raison du simple stockage aléatoire des nœuds, une perte de bloc peut survenir. Deuxièmement, pour les données après fragmentation, la manière de confirmer l'authenticité et l'intégrité des données pendant le processus de restauration est également très importante. Dans DAS, ces deux problèmes sont résolus par le code Eraser et l'engagement polynomial KZG.

  • Code Eraser : étant donné le grand nombre de nœuds vérifiés dans Ethereum, il est possible qu'un bloc ne soit stocké par aucun nœud, bien qu'il s'agisse d'un événement probable. Pour atténuer le risque de stockage manquant, au lieu de découper les données brutes en blocs, ce schéma mappe les données brutes aux coefficients d'un polynôme du nième degré, puis prend 2n points sur le polynôme et laisse les nœuds choisir au hasard l'un des les stocker. Pour ce polynôme de nième degré, seuls n+1 points sont nécessaires pour la réduction, et donc seulement la moitié des blocs doivent être sélectionnés par les nœuds pour que nous puissions réaliser la réduction des données d'origine. Le code Eraser améliore la sécurité du stockage des données et la capacité du réseau à récupérer les données.

  • Engagement polynomial KZG : Un aspect très important du stockage des données est la vérification de l'authenticité des données. Dans les réseaux qui n'utilisent pas le code Eraser, diverses méthodes peuvent être utilisées pour la vérification, mais si le code Eraser ci-dessus est introduit pour améliorer la sécurité des données, il est alors plus approprié d'utiliser l'engagement polynomial KZG, qui peut vérifier le contenu d'un seul code Eraser. bloc directement sous la forme d'un polynôme, éliminant ainsi le besoin de réduire le polynôme en données binaires. L'engagement polynomial KZG peut vérifier directement le contenu d'un seul bloc sous forme de polynômes, éliminant ainsi le besoin de réduire les polynômes en données binaires, et la forme globale de vérification est similaire à celle de Merkle Tree, mais elle ne nécessite pas de Données de nœud de chemin et nécessite uniquement les données de racine KZG et de bloc pour vérifier l'authenticité du bloc.

3.3 Méthode de validation des données dans DA

La validation des données garantit que les données appelées depuis un nœud sont exactes et complètes. Pour minimiser la quantité de données et les coûts de calcul requis dans le processus de validation, la couche DA utilise désormais une structure arborescente comme méthode de validation principale. La forme la plus simple consiste à utiliser Merkle Tree pour la vérification, qui utilise la forme d'enregistrements d'arbre binaire complets, il suffit de conserver une racine Merkle et la valeur de hachage du sous-arbre de l'autre côté du chemin du nœud peut être vérifiée, le la complexité temporelle de la vérification est de niveau O (logN) (le logN est log2 (N) par défaut). Bien que le processus de validation ait été considérablement simplifié, la quantité de données pour le processus de validation en général continue de croître avec l'augmentation des données. Pour résoudre le problème de l'augmentation du volume de validation, une autre méthode de validation, Verkle Tree, est proposée à ce stade, dans laquelle chaque nœud du Verkle Tree stocke non seulement la valeur mais attache également un engagement vectoriel, qui peut rapidement valider l'authenticité du données en utilisant la valeur du nœud d'origine et la preuve d'engagement, sans avoir besoin d'appeler les valeurs d'autres nœuds frères, ce qui rend le calcul de chaque validation plus facile et plus rapide. Cela rend le nombre de calculs pour chaque vérification uniquement lié à la profondeur de l'arbre de Verkle, qui est une constante fixe, accélérant ainsi considérablement la vitesse de vérification. Cependant, le calcul du Vector Commitment nécessite la participation de tous les nœuds frères de la même couche, ce qui augmente considérablement le coût d'écriture et de modification des données. Cependant, pour les données telles que les données historiques, qui sont stockées de manière permanente et ne peuvent pas être altérées, et qui peuvent également être uniquement lues mais pas écrites, le Verkle Tree est extrêmement approprié. De plus, Merkle Tree et Verkle Tree eux-mêmes ont une forme de variantes K-ary, la mise en œuvre spécifique du mécanisme est similaire, il suffit de changer le nombre de sous-arbres sous chaque nœud, la comparaison des performances spécifiques peut être vue dans le tableau suivant.

Source : Arbres Verkle

3.4 Middleware DA générique

L’expansion continue de l’écosystème blockchain a donné naissance à un nombre croissant de chaînes publiques. En raison des avantages et du caractère irremplaçable de chaque chaîne publique dans leurs domaines respectifs, il est impossible pour les chaînes publiques de couche 1 de s'unifier en peu de temps. Cependant, avec le développement de DeFi et les problèmes de CEX, la demande des utilisateurs pour des actifs de trading inter-chaînes décentralisés augmente. Par conséquent, le stockage de données multi-chaînes de la couche DA, qui peut éliminer les problèmes de sécurité dans l'interaction des données entre chaînes, a attiré de plus en plus d'attention. Cependant, pour accepter les données historiques de différentes chaînes publiques, il est nécessaire que la couche DA fournisse des protocoles décentralisés pour un stockage et une validation standardisés du flux de données. Par exemple, kvye, un middleware de stockage basé sur Arweave, adopte la méthode d'exploration active des données des chaînes principales et peut stocker les données de toutes les chaînes sous une forme standardisée vers Arweave afin de minimiser les différences dans la transmission des données. processus. Comparativement parlant, Layer2, spécialisé dans la fourniture de stockage de données de couche DA pour une certaine chaîne publique, effectue l'interaction de données via des nœuds internes partagés. Bien qu’il réduise le coût de l’interaction et améliore la sécurité, il présente de plus grandes limites et ne peut fournir des services qu’à des chaînes publiques spécifiques.

4. Méthodes de stockage de DA

4.1 Chaîne principale DA

4.1.1 De type DankSharding

Il n'y a pas de nom définitif pour ce type de système de stockage, mais le plus important est Dank Sharding sur Ethereum. Dans cet article, nous utilisons donc le terme Dank Sharding-like pour désigner ce type de système. Ce type de schéma utilise principalement les deux techniques de stockage DA mentionnées ci-dessus, le sharding et le DAS. Premièrement, les données sont divisées en un nombre approprié de partages par sharding, puis chaque nœud extrait un bloc de données sous forme de DAS pour le stockage. Dans le cas où il y a suffisamment de nœuds dans l'ensemble du réseau, nous pouvons prendre un plus grand nombre de tranches N, de sorte que la pression de stockage de chaque nœud ne soit que de 1/N de celle d'origine, réalisant ainsi une expansion N fois de la capacité de stockage globale. espace. Dans le même temps, pour éviter le cas extrême où un bloc n'est stocké par aucun bloc, Dank Sharding encode les données à l'aide d'Eraser Code, qui ne nécessite que la moitié des données pour une restauration complète. Enfin, les données sont vérifiées à l'aide d'une structure Verkle Tree avec des engagements polynomiaux pour des sommes de contrôle rapides.

4.1.2 Stockage temporaire

Pour le DA de la chaîne principale, l’un des moyens les plus simples de gérer les données consiste à stocker les données historiques pendant une courte période. Essentiellement, la blockchain agit comme un grand livre public, dans lequel des modifications sont apportées au contenu du grand livre en présence de l'ensemble du réseau, et il n'est pas nécessaire de stocker de manière permanente. Dans le cas de Solana, par exemple, bien que ses données historiques soient synchronisées avec Arweave, les principaux nœuds du réseau ne conservent que les données de transaction des deux derniers jours. Sur une chaîne publique basée sur les enregistrements de compte, chaque instant des données historiques conserve l'état final du compte sur la blockchain, ce qui est suffisant pour fournir une base de vérification des changements au moment suivant. Ceux qui ont des besoins particuliers en données avant cette date peuvent les stocker sur d’autres chaînes publiques décentralisées ou les remettre à un tiers de confiance. En d’autres termes, ceux qui ont des besoins supplémentaires en données devront payer pour le stockage des données historiques.

4.2 DA tiers

4.2.1 DA pour la chaîne principale : EthStorage

  • DA pour Main Chain : La chose la plus importante pour la couche DA est la sécurité de la transmission des données, et le DA avec la plus haute sécurité est le DA de la chaîne principale, mais le stockage de la chaîne principale est limité par l'espace de stockage et la concurrence des ressources, ainsi, lorsque le volume de données du réseau augmente rapidement, le DA tiers est un meilleur choix s'il souhaite réaliser le stockage à long terme des données. Si le DA tiers a une compatibilité plus élevée avec le réseau principal, il peut réaliser le partage de nœuds et le processus d'interaction des données aura une sécurité plus élevée. Par conséquent, dans le cadre de la prise en compte de la sécurité, un DA dédié pour la chaîne principale aura un énorme avantage. En prenant Ethereum comme exemple, l'une des exigences de base d'un DA dédié à la chaîne principale est qu'il puisse être compatible avec EVM pour garantir l'interopérabilité avec les données et les contrats Ethereum, et les projets représentatifs incluent Topia, EthStorage, etc. Parmi eux, EthStorage est le DA le plus compatible en termes de compatibilité. Les projets représentatifs incluent Topia, EthStorage, etc. Parmi eux, EthStorage est le plus développé en termes de compatibilité, car en plus de la compatibilité EVM, il a également mis en place des interfaces pertinentes pour s'interfacer avec Remix, Hardhat et d'autres outils de développement Ethereum afin d'assurer la compatibilité avec les outils de développement Ethereum.

  • EthStorage : EthStorage est une chaîne publique indépendante d'Ethereum, mais les nœuds qui y fonctionnent sont un supergroupe de nœuds Ethereum, ce qui signifie que les nœuds exécutant EthStorage peuvent également exécuter Ethereum en même temps. De plus, nous pouvons également exploiter directement EthStorage via les opcodes sur Ethereum. Le modèle de stockage d'EthStorage ne conserve qu'une petite quantité de métadonnées pour l'indexation sur le réseau principal Ethereum, créant essentiellement une base de données décentralisée pour Ethereum. Dans la solution actuelle, EthStorage déploie un contrat EthStorage sur l'Ethereum principal pour réaliser l'interaction entre l'Ethereum principal et EthStorage. Si Ethereum souhaite déposer des données, il doit appeler la fonction put() dans le contrat, et les paramètres d'entrée sont une clé de variables à deux octets, data, où data représente les données à déposer, et la clé est son identité dans le Réseau Ethereum, qui peut être considéré comme similaire à l'existence de CID dans IPFS. Une fois la paire de données (clé, données) stockée avec succès dans le réseau EthStorage, EthStorage générera un kvldx à renvoyer au réseau hôte Ethereum, qui correspond à la clé sur le réseau Ethereum, et cette valeur correspond à l'adresse de stockage de les données sur EthStorage afin que le problème initial du stockage d'une grande quantité de données puisse désormais être modifié en stockage d'une seule (clé, kvldx). (key, kvldx), ce qui réduit considérablement le coût de stockage du réseau principal Ethereum. Si vous devez appeler les données précédemment stockées, vous devez utiliser la fonction get() dans EthStorage et entrer le paramètre key, puis vous pouvez effectuer une recherche rapide des données sur EthStorage en utilisant le kvldx stocké dans Ethereum.

Source : Kernel Ventures

  • En ce qui concerne la manière dont les nœuds stockent les données, EthStorage apprend du modèle Arweave. Tout d'abord, un grand nombre de paires (k, v) d'ETH sont fragmentées, et chaque partitionnement contient un nombre fixe de paires (k, v), dont il y a une limite sur la taille de chacune (k, v) paire pour garantir l’équité de la charge de travail dans le processus de stockage des récompenses pour les mineurs. Pour l’émission des récompenses, il est nécessaire de vérifier si le nœud stocke les données. Dans ce processus, EthStorage divisera un partitionnement (taille de la To) en plusieurs morceaux et conservera une racine Merkle sur le réseau principal Ethereum pour vérification. Ensuite, le mineur doit fournir une occasion pour générer quelques fragments par un algorithme aléatoire avec le hachage du bloc précédent sur EthStorage, et le mineur doit fournir les données de ces fragments pour prouver qu'il a stocké l'intégralité du fragmentage, mais ce nombre occasionnel ne peut pas être choisi arbitrairement, sinon le nœud choisira le nombre occasionnel approprié correspondant aux morceaux qu'il a stockés et réussira la vérification. Cependant, ce nombre occasionnel ne peut pas être choisi au hasard, sinon le nœud choisira un nombre occasionnel approprié qui correspond uniquement à ses fragments stockés et réussira ainsi la vérification. Ce nombre occasionnel doit donc créer les fragments générés après mélange et hachage afin que la valeur de difficulté réponde aux exigences. du réseau, et seul le premier nœud qui soumet le nom occasionnel et la preuve d'accès aléatoire peut obtenir la récompense.

4.2.2 Modularisation DA : Celsetia

  • Module Blockchain : Les transactions à effectuer sur la chaîne publique de couche 1 sont divisées en quatre parties suivantes : (1) concevoir la logique sous-jacente du réseau, sélectionner les nœuds de validation d'une certaine manière, écrire des blocs et attribuer des récompenses aux responsables du réseau ; (2) les transactions de conditionnement et de traitement et les transactions liées à la publication ; (3) valider les transactions à télécharger sur la blockchain et déterminer le statut final ; (4) stocker et conserver les données historiques sur la blockchain. Selon les différentes fonctions exécutées, nous pouvons diviser la blockchain en quatre modules : couche de consensus, couche d'exécution, couche de règlement et couche de disponibilité des données (couche DA).

  • Conception de Blockchain modulaire : depuis longtemps, ces quatre modules ont été intégrés dans une seule chaîne publique, une telle blockchain est appelée blockchain monolithique. Cette forme est plus stable et plus facile à maintenir, mais elle exerce également une pression énorme sur la chaîne publique unique. En pratique, les quatre modules se contraignent mutuellement et se disputent les ressources limitées de calcul et de stockage de la chaîne publique. Par exemple, l'augmentation de la vitesse de traitement de la couche de traitement entraînera une plus grande pression de stockage sur la couche de disponibilité des données ; assurer la sécurité de la couche d'exécution nécessite un mécanisme de vérification plus complexe mais ralentit la vitesse de traitement des transactions. Par conséquent, le développement d’une chaîne publique se heurte souvent à un compromis entre ces quatre modules. Pour surmonter ce goulot d'étranglement dans l'amélioration des performances de la chaîne publique, les développeurs ont proposé une solution blockchain modulaire. L'idée centrale de la blockchain modulaire est de supprimer un ou plusieurs des quatre modules mentionnés ci-dessus et de les confier à une chaîne publique distincte pour leur mise en œuvre. De cette manière, la chaîne publique peut se concentrer sur l’amélioration de la vitesse de transaction ou de la capacité de stockage, dépassant ainsi les limitations précédentes sur les performances globales de la blockchain dues à l’effet short board.

  • DA modulaire : l'approche complexe consistant à séparer la couche DA de l'activité blockchain et à la placer sur une chaîne publique distincte est considérée comme une solution viable pour les données historiques croissantes de Layer1. À ce stade, l'exploration dans ce domaine en est encore à ses débuts, et le projet le plus représentatif est Celestia, qui utilise la méthode de stockage Sharding, qui divise également les données en plusieurs blocs, et chaque nœud en extrait une partie pour stockage et utilise l’engagement polynomial KZG pour vérifier l’intégrité des données. Dans le même temps, Celestia utilise des codes correcteurs RS bidimensionnels avancés pour réécrire les données originales sous la forme d'une matrice k*k, ce qui ne nécessite finalement que 25 % des données originales pour être récupérées. Cependant, le stockage de données découpé ne fait que multiplier la pression de stockage des nœuds à travers le réseau par un facteur du volume total de données, et la pression de stockage des nœuds augmente toujours de manière linéaire avec le volume de données. Alors que la vitesse de transaction de Layer1 continue de s’améliorer, la pression de stockage sur les nœuds pourrait encore un jour atteindre un seuil inacceptable. Pour résoudre ce problème, un composant IPLD est introduit dans Celestia. Au lieu de stocker les données dans la matrice k*k directement sur Celestia, les données sont stockées dans le réseau LL-IPFS, avec uniquement le code CID des données conservé dans le nœud. Lorsqu'un utilisateur demande une donnée historique, le nœud envoie le CID correspondant au composant IPLD, qui est utilisé pour appeler les données d'origine sur IPFS. Si les données existent sur IPFS, elles sont renvoyées via le composant IPLD et le nœud. Si elle n'existe pas, les données ne pourront pas être restituées.

Source : Celestia Core

  • Celestia : En prenant Celestia comme exemple, nous pouvons voir l'application de la blockchain modulaire pour résoudre le problème de stockage d'Ethereum, le nœud Rollup enverra les données de transaction emballées et vérifiées à Celestia et stockera les données sur Celestia, pendant le processus, Celestia stocke uniquement les données sans avoir trop de perception. Dans ce processus, Celestia stocke simplement les données sans les détecter, et au final, en fonction de la taille de l'espace de stockage, le nœud Rollup paiera les jetons tia correspondants à Celestia comme frais de stockage. Le stockage dans Celestia utilise un DAS et un code de débogage similaires à ceux de EIP4844, mais le code de débogage polynomial de EIP4844 est mis à niveau pour utiliser un code de débogage RS bidimensionnel, qui améliore à nouveau la sécurité du stockage, et seulement 25 % des fractions. sont nécessaires pour récupérer l’intégralité des données de transaction. Il s'agit essentiellement d'une chaîne publique de point de vente avec de faibles coûts de stockage, et si elle doit être réalisée comme une solution au problème de stockage de données historiques d'Ethereum, de nombreux autres modules spécifiques sont nécessaires pour fonctionner avec Celestia. Par exemple, en termes de rollup, l'un des modèles de roll-up fortement recommandés par le site officiel de Celestia est le Sovereign Rollup, qui est différent du rollup commun sur Layer2, qui ne peut que calculer et vérifier les transactions, complétant simplement la couche d'exécution, et inclut l'ensemble du processus d'exécution et de règlement, ce qui minimise le besoin de processus d'exécution et de règlement sur Celestia. Cela minimise le traitement des transactions sur Celestia, ce qui maximise la sécurité globale du processus de transaction lorsque la sécurité globale de Celestia est plus faible que celle d'Ethereum. Quant à la sécurité des données appelées par Celestia sur le réseau principal d’Ethereum, la solution la plus répandue est le contrat intelligent Quantum Gravity Bridge. Pour les données stockées sur Celestia, il générera un Merkle Root (certificat de disponibilité des données) et le conservera sur le contrat Quantum Gravity Bridge sur le réseau principal d'EtherCenter. Lorsqu'EtherCenter appelle à chaque fois les données historiques sur Celestia, il comparera le résultat du hachage avec la racine Merkle, et s'il correspond, cela signifie qu'il s'agit bien des véritables données historiques.

4.2.3 Chaîne de stockage DA

En termes de principes techniques des DA de la chaîne principale, de nombreuses techniques similaires au sharding ont été empruntées aux chaînes publiques de stockage. Dans les DA tiers, certains d'entre eux remplissent même une partie des tâches de stockage directement à l'aide de chaînes publiques de stockage, par exemple, les données de transaction spécifiques dans Celestia sont placées sur le réseau LL-IPFS. Dans les solutions des DA tiers, outre la construction d'une chaîne publique distincte pour résoudre le problème de stockage de la couche 1, un moyen plus direct consiste à connecter directement la chaîne publique de stockage à la couche 1 pour stocker les énormes données historiques sur la couche 1. Pour une blockchain haute performance, le volume de données historiques est encore plus important, et en fonctionnement à pleine vitesse, le volume de données de la chaîne publique haute performance Solana est proche de 4 PG, ce qui dépasse complètement la plage de stockage des nœuds ordinaires. Solana choisit une solution pour stocker les données historiques sur le réseau de stockage décentralisé Arweave et ne conserve que 2 jours de données sur les nœuds du réseau principal pour vérification. Pour assurer la sécurité du processus de stockage, Solana et la chaîne Arweave ont conçu un protocole de pont de stockage, Solar Bridge, qui synchronise les données validées des nœuds Solana vers Arweave et renvoie la balise correspondante, qui permet aux nœuds Solana de visualiser les données historiques de la blockchain Solana à tout moment. Le nœud Solana peut afficher les données historiques à tout moment sur la blockchain Solana. Sur Arweave, au lieu d'exiger que les nœuds du réseau maintiennent la cohérence des données comme une nécessité de participation, le réseau adopte une approche de stockage de récompenses. Tout d’abord, Arweave n’utilise pas une structure de chaîne traditionnelle pour construire des blocs, mais plutôt une structure graphique. Dans Arweave, un nouveau bloc pointera non seulement vers le bloc précédent, mais pointera également de manière aléatoire vers un bloc de rappel de bloc généré, dont l'emplacement exact est déterminé par le résultat de hachage du bloc précédent et sa hauteur de bloc, ainsi que l'emplacement du rappel. le bloc est inconnu jusqu'à ce que le bloc précédent soit extrait. Cependant, lors du processus de génération de nouveaux blocs, les nœuds doivent disposer des données du bloc Recall pour utiliser le mécanisme POW pour calculer le hachage de la difficulté spécifiée, et seul le mineur qui est le premier à calculer le hachage qui répond aux la difficulté peut être récompensée, ce qui encourage les mineurs à stocker autant de données historiques que possible. Dans le même temps, moins il y a de personnes stockant un bloc historique particulier, moins un nœud aura de concurrents lors de la génération d'un nonce conforme aux difficultés, encourageant les mineurs à stocker des blocs avec moins de sauvegardes dans le réseau. Enfin, pour garantir que les nœuds stockent les données de manière permanente, le mécanisme de notation des nœuds de WildFire est introduit dans Arweave. Les nœuds préféreront communiquer avec des nœuds capables de fournir des données historiques plus et plus rapidement, tandis que les nœuds avec des notes inférieures ne seront pas en mesure d'obtenir les dernières données de bloc et de transaction du premier coup, ne parvenant ainsi pas à prendre une longueur d'avance dans la compétition POW.

Source : Livre jaune Arweave

5. Comparaison synthétisée

Nous comparerons les avantages et les inconvénients de chacune des cinq solutions de stockage en termes de quatre dimensions des mesures de performances DA.

  • Sécurité : la plus grande source de problèmes de sécurité des données est la perte de données causée par le processus de transmission de données et la falsification malveillante provenant de nœuds malhonnêtes, et le processus inter-chaînes est le domaine de sécurité de la transmission de données le plus durement touché en raison de l'indépendance des deux publics. les chaînes et l’État n’est pas partagé. De plus, la couche 1, qui nécessite une couche DA spécialisée à ce stade, dispose souvent d'un groupe de consensus fort et sa sécurité sera bien supérieure à celle des chaînes publiques de stockage ordinaires. Par conséquent, la solution DA de la chaîne principale offre une sécurité plus élevée. Après avoir assuré la sécurité de la transmission des données, l’étape suivante consiste à assurer la sécurité des données d’appel. En considérant uniquement les données historiques à court terme utilisées pour vérifier la transaction, les mêmes données sont sauvegardées par l'ensemble du réseau dans le réseau de stockage temporaire, tandis que le nombre moyen de sauvegardes de données dans le système de type DankSharding ne représente que 1/N du nombre moyen de sauvegardes de données dans le système de type DankSharding. nombre de nœuds dans l'ensemble du réseau, ce qui signifie qu'une plus grande redondance des données peut rendre les données moins susceptibles d'être perdues, et en même temps, elle peut fournir plus d'échantillons de référence pour la vérification. Par conséquent, le stockage temporaire offrira une sécurité des données plus élevée. Dans le schéma DA tiers, en raison des nœuds publics utilisés dans la chaîne principale, les données peuvent être directement transmises via ces nœuds relais dans le processus de cross-chaining, et auront donc également une sécurité relativement plus élevée que les autres DA. schémas.

  • Coût de stockage : le facteur qui a le plus grand impact sur le coût de stockage est le degré de redondance des données. Dans le schéma de stockage à court terme de la chaîne principale DA, qui utilise la forme de synchronisation des données des nœuds à l'échelle du réseau pour le stockage, toutes les données nouvellement stockées doivent être sauvegardées dans les nœuds à l'échelle du réseau, ce qui présente le coût de stockage le plus élevé. Le coût de stockage élevé détermine à son tour que dans un réseau à TPS élevé, cette approche ne convient qu'au stockage temporaire. Vient ensuite la méthode de stockage par partitionnement, y compris le partitionnement dans la chaîne principale et le partitionnement dans le DA tiers. Étant donné que la chaîne principale comporte souvent plus de nœuds et que le bloc correspondant aura donc plus de sauvegardes, le schéma de partitionnement de la chaîne principale aura un coût plus élevé. Le coût de stockage le plus bas se situe dans la chaîne publique de stockage DA qui adopte la méthode de stockage avec récompense, et la quantité de redondance des données dans ce schéma a tendance à fluctuer autour d'une constante fixe. Dans le même temps, la chaîne publique de stockage DA introduit également un mécanisme d'ajustement dynamique, qui incite les nœuds à stocker moins de données de sauvegarde en augmentant la récompense pour assurer la sécurité des données.

  • Vitesse de lecture des données : la vitesse de stockage des données est principalement affectée par l'emplacement de stockage des données dans l'espace de stockage, le chemin d'index des données et la répartition des données entre les nœuds. Parmi eux, l'endroit où les données sont stockées dans les nœuds a un plus grand impact sur la vitesse, car le stockage des données en mémoire ou sur SSD peut entraîner une différence de vitesse de lecture des dizaines de fois. Les DA de chaîne publique de stockage utilisent principalement le stockage SSD, car la charge sur cette chaîne comprend non seulement les données de la couche DA, mais également des données personnelles très gourmandes en mémoire, telles que des vidéos et des images téléchargées par les utilisateurs. Si le réseau n'utilise pas de disques SSD comme espace de stockage, il est difficile de supporter l'énorme pression de stockage et de répondre à la demande de stockage à long terme. Deuxièmement, pour les DA tiers et les DA de la chaîne principale qui utilisent l'état de la mémoire pour stocker des données, les DA tiers doivent d'abord rechercher les données indexées correspondantes dans la chaîne principale, puis transférer les données indexées à travers la chaîne vers des DA tiers. les DA tiers et renvoyer les données via le pont de stockage. En revanche, le DA de la chaîne principale peut interroger les données directement à partir des nœuds et a ainsi une vitesse de récupération des données plus rapide. Enfin, au sein de la chaîne principale DA, l’approche de partitionnement nécessite d’appeler des blocs à partir de plusieurs nœuds et de restaurer les données d’origine. Par conséquent, elle est plus lente que la méthode de stockage à court terme sans partitionnement.

  • Universalité de la couche DA : l'universalité DA de la chaîne principale est proche de zéro car il n'est pas possible de transférer des données d'une chaîne publique avec un espace de stockage insuffisant vers une autre chaîne publique avec un espace de stockage insuffisant. Dans les DA tiers, la généralité d’une solution et sa compatibilité avec une chaîne principale particulière sont des métriques contradictoires. Par exemple, dans le cas d'une solution DA spécifique à la chaîne principale conçue pour une chaîne principale particulière, elle a apporté de nombreuses améliorations au niveau des types de nœuds et du consensus réseau pour s'adapter à cette chaîne publique particulière, et ces améliorations peuvent donc agir comme un énorme obstacle lors de la communication avec d’autres chaînes publiques. Au sein des DA tiers, les DA de chaîne publique de stockage fonctionnent mieux en termes de généralisabilité que les DA modulaires. Les DA de chaîne publique de stockage disposent d'une communauté de développeurs plus large et de davantage d'installations d'expansion pour s'adapter aux différentes chaînes publiques. Dans le même temps, la chaîne publique de stockage DA peut obtenir des données plus activement via la capture de paquets plutôt que de recevoir passivement des informations transmises par d'autres chaînes publiques. Par conséquent, il peut coder les données à sa manière, réaliser un stockage standardisé du flux de données, faciliter la gestion des informations de données provenant de différentes chaînes principales et améliorer l'efficacité du stockage.

Source : Kernel Ventures

6. Conclusion

La blockchain est en cours de conversion de Crypto vers Web3, et cela apporte une abondance de projets sur la blockchain, mais aussi des problèmes de stockage de données. Pour permettre le fonctionnement simultané d'autant de projets sur Layer1 et garantir l'expérience des projets Gamefi et Socialfi, Layer1 représenté par Ethereum a adopté Rollup et Blobs pour améliorer le TPS. De plus, le nombre de blockchains hautes performances dans la nouvelle blockchain augmente également. Mais un TPS plus élevé signifie non seulement des performances plus élevées, mais également une plus grande pression de stockage sur le réseau. Pour l’énorme quantité de données historiques, plusieurs approches DA, basées à la fois sur la chaîne principale et sur des tiers, sont proposées à ce stade pour s’adapter à la croissance de la pression de stockage sur la chaîne. Les améliorations ont leurs avantages et leurs inconvénients et ont des applicabilités différentes selon les contextes. Dans le cas des blockchains basées sur les paiements, qui ont des exigences très élevées en matière de sécurité des données historiques et ne recherchent pas de TPS particulièrement élevé, celles-ci en sont encore au stade préparatoire, elles peuvent adopter une méthode de stockage de type DankSharding, qui peut assurer la sécurité. et une énorme augmentation de la capacité de stockage est réalisée en même temps. Cependant, s'il s'agit d'une chaîne publique comme Bitcoin, qui a déjà été formée et comporte un grand nombre de nœuds, il existe un risque énorme d'améliorer de manière imprudente la couche de consensus, elle peut donc adopter un DA spécial pour la chaîne principale avec une sécurité plus élevée. dans le stockage hors chaîne pour équilibrer les problèmes de sécurité et de stockage. Cependant, il convient de noter que la fonction de la blockchain évolue avec le temps. Par exemple, au début, les fonctionnalités d'Ethereum se limitaient aux paiements et au simple traitement automatisé des actifs et des transactions à l'aide de contrats intelligents, mais à mesure que le paysage de la blockchain s'est élargi, divers projets Socialfi et Defi ont été ajoutés à Ethereum, le poussant à un niveau plus élevé. orientation globale. Avec la récente explosion de l'écosystème d'inscription sur Bitcoin, les frais de transaction sur le réseau Bitcoin ont augmenté de près de 20 fois depuis août, reflétant le fait que les vitesses de transaction du réseau ne sont pas en mesure de répondre à la demande de transactions à ce stade. Les traders doivent augmenter les frais pour que les transactions soient traitées le plus rapidement possible. Désormais, la communauté Bitcoin doit faire un compromis entre accepter des frais élevés et une vitesse de transaction lente ou réduire la sécurité du réseau pour augmenter la vitesse de transaction tout en allant à l'encontre de l'objectif du système de paiement en premier lieu. Si la communauté Bitcoin choisit cette dernière option, la solution de stockage devra alors être ajustée face à la pression croissante des données.

Source : OKLINK

Quant à la chaîne publique dotée de fonctions complètes, sa poursuite du TPS est plus élevée, avec l'énorme croissance des données historiques, il est difficile de s'adapter à la croissance rapide du TPS à long terme en adoptant la solution de type DankSharding. Par conséquent, une méthode plus appropriée consiste à migrer les données vers un DA tiers pour le stockage. Parmi eux, les DA spécifiques à la chaîne principale ont la compatibilité la plus élevée et peuvent être plus avantageux si seul le stockage d'une seule chaîne publique est pris en compte. Cependant, de nos jours, alors que les chaînes publiques de couche 1 fleurissent, le transfert d’actifs entre chaînes et l’interaction de données sont également devenus une activité commune de la communauté blockchain. Si l'on considère le développement à long terme de l'ensemble de l'écosystème blockchain, le stockage des données historiques de différentes chaînes publiques sur la même chaîne publique peut éliminer de nombreux problèmes de sécurité dans le processus d'échange et de validation des données, de sorte que le DA modularisé et la manière de stocker les données publiques Les DA en chaîne peuvent être un meilleur choix. Sous le principe d'une généralité étroite, le DA modulaire se concentre sur la fourniture de services de couche DA blockchain, introduit des données d'index plus raffinées pour gérer les données historiques et peut effectuer une catégorisation raisonnable des différentes données de la chaîne publique, ce qui présente plus d'avantages par rapport aux chaînes publiques de stockage. Cependant, la proposition ci-dessus ne prend pas en compte le coût de l’ajustement des couches consensuelles sur la chaîne publique existante, ce qui est extrêmement risqué. Une petite faille systématique pourrait faire perdre à la chaîne publique le consensus communautaire. Par conséquent, s’il s’agit d’une solution transitoire dans le processus de transformation de la blockchain, le stockage temporaire sur la chaîne principale peut être plus approprié. Enfin, toutes les discussions ci-dessus sont basées sur les performances en fonctionnement réel, mais si l'objectif d'une certaine chaîne publique est de développer son écologie et d'attirer davantage de parties et de participants au projet, elle peut également avoir tendance à privilégier les projets soutenus et financés par sa fondation. Par exemple, si les performances globales sont égales voire légèrement inférieures à celles de la solution de stockage en chaîne publique, la communauté Ethereum privilégiera également EthStorage, qui est un projet Layer2 soutenu par la Fondation Ethereum, pour continuer à développer l'écosystème Ethereum. .

Dans l’ensemble, la complexité croissante des blockchains actuelles entraîne un besoin accru d’espace de stockage. Avec suffisamment de nœuds de validation de couche 1, les données historiques n'ont pas besoin d'être sauvegardées par tous les nœuds de l'ensemble du réseau, mais peuvent garantir la sécurité après un certain seuil. Dans le même temps, la division du travail de la chaîne publique est devenue de plus en plus détaillée, Layer1 est responsable du consensus et de l'exécution, Rollup est responsable du calcul et de la vérification, puis une blockchain distincte est utilisée pour le stockage des données. Chaque partie peut se concentrer sur une certaine fonction sans être limitée par les performances des autres parties. Cependant, le nombre spécifique de stockage ou la proportion de nœuds autorisés à stocker des données historiques afin d'atteindre un équilibre entre sécurité et efficacité, ainsi que la manière de garantir une interopérabilité sécurisée entre les différentes blockchains sont un problème qui doit être pris en compte par les développeurs de blockchain. Les investisseurs peuvent prêter attention au principal projet DA spécifique à la chaîne sur Ethereum, car Ethereum compte déjà suffisamment de partisans à ce stade, sans qu'il soit nécessaire d'utiliser le pouvoir d'autres communautés pour étendre son influence. Il est plus important d’améliorer et de développer sa communauté pour attirer davantage de projets dans l’écosystème Ethereum. Cependant, pour les chaînes publiques qui rattrapent leur retard, telles que Solana et Aptos, la chaîne unique elle-même ne dispose pas d'un écosystème aussi parfait, elles préféreront donc peut-être unir leurs forces avec d'autres communautés pour construire un vaste écosystème inter-chaînes afin d'étendre leur influence. . Par conséquent, pour la couche 1 émergente, un DA tiers à usage général mérite plus d’attention.

Kernel Ventures est un fonds de capital-risque de crypto-monnaie axé sur la communauté de recherche et de développement avec plus de 70 investissements de démarrage, axés sur l'infrastructure, les middlewares, les dApps, en particulier ZK, Rollup, DEX, la blockchain modulaire et les secteurs verticaux qui intégreront le prochain milliard d'utilisateurs de crypto. tels que l'abstraction de compte, la disponibilité des données, l'évolutivité, etc. Au cours des sept dernières années, nous nous sommes engagés à soutenir la croissance des principales communautés de développement et des associations universitaires Blockchain à travers le monde.

Référence

  1. Celestia : La mer étoilée de la blockchain modulaire : https://foresightnews.pro/article/detail/15497

  2. Utilisation du DHT et travaux futurs : https://github.com/celestiaorg/celestia-node/issues/11

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

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

  5. Annonce du pont SOLAR : https://medium.com/solana-labs/announcing-the-solar-bridge-c90718a49fa2

  6. manuel de niveau DB : https://leveldb-handbook.readthedocs.io/zh/latest/sstable.html

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

  8. Réseau Arweave : https://www.arweave.org/

  9. Livre jaune Arweave : https://www.arweave.org/white-paper.pdf