La faille d'IPFS

En matière de stockage de données décentralisé, le système de fichiers interplanétaire, connu sous le nom d'IPFS, est un projet incontournable.

En tant que l'un des projets de stockage décentralisés les plus remarquables, IPFS utilise la structure de données du Merkle DAG (Directed Acyclic Graph), une modification basée sur le Merkle Tree. Avec cette structure de données, IPFS implémente l'adressage de contenu et le téléchargement de fragments de fichiers.

Plus précisément, IPFS attribue une valeur de hachage unique à chaque fichier, similaire à une empreinte digitale de fichier. Chaque fichier racine pointe vers plusieurs fichiers de nœuds, et une fois que le contenu d'un fichier de nœud change, la valeur de hachage change en conséquence, entraînant également une modification du hachage du fichier racine.

De cette manière, IPFS stocke et recherche les fichiers dans un adressage unique basé sur le contenu plutôt que sur l'adresse. Cela signifie que si vous recherchez un fichier, vous n’avez pas besoin de savoir où il se trouve, juste ce qu’il contient. IPFS génère un hachage unique pour chaque fichier, et lorsque l'utilisateur a besoin de récupérer ce fichier, il lui suffit de demander à IPFS qui possède ce hachage pour terminer la récupération. Étant donné que les hachages empêchent le stockage en double, les fichiers ayant le même contenu ne sont pas dupliqués par IPFS. Cette approche optimise le stockage et améliore les performances du réseau.

Le mécanisme d'adressage du contenu est un avantage majeur d'IPFS, mais chaque médaille a deux faces, elle présente également un inconvénient. Dans IPFS, une fois qu'un fichier est stocké, il ne peut pas être modifié dans le système car la modification du contenu du fichier modifie le hachage du fichier et l'utilisateur ne peut pas trouver le fichier modifié par la valeur de hachage d'origine. Il s’agit d’un problème largement critiqué : IPFS n’est pas efficace pour stocker des fichiers qui doivent être mis à jour et modifiés de temps en temps.

Bien qu'IPFS fonctionne bien pour le stockage de fichiers statiques, il lui manque la capacité de calcul et de gestion d'état pour des fonctionnalités de base de données plus avancées telles que la mutabilité, le contrôle de version, le contrôle d'accès et la logique programmable, qui sont nécessaires pour permettre aux développeurs de créer des systèmes décentralisés complets. applications. Par conséquent, il existe un besoin urgent d'une solution efficace et décentralisée pour stocker des données dynamiques. Ceramic résout ce problème avec une base de données de type NoSQL permettant aux développeurs de stocker du contenu structuré et modifiable.

Conçu pour le contenu mutable

La conception de stockage de Ceramic est basée sur IPFS et l'étend avec une couche de stockage dynamique décentralisée.

Sur Ceramic, chaque élément d'information est représenté sous la forme d'un journal de validations en annexe uniquement, appelé « Stream », qui est représenté par la combinaison de carrés gris dans la figure ci-dessous. Le Stream est similaire dans son concept aux arbres Git : l'état initial (Genesis Commit) et chaque modification ultérieure (Commit) sont tous stockés dans IPLD (InterPlanetary Linked Data, la couche d'IPFS dédiée aux structures de données), et ces enregistrements sont combinés pour former un Flux. Étant donné que les flux enregistrent des « modifications » plutôt que des « instantanés » de l'état résultant, il suffit de traiter tous les événements sur le flux pour obtenir le dernier état du journal.

Par exemple, le modèle d’enregistrement de Ceramic est le suivant : au départ, Alice et Bob ont chacun 10 $ ; le deuxième jour, Alice transfère 5 $ à Bob ; le troisième jour, Bob transfère 3 $ à Alice. Cela ressemble également beaucoup à un registre blockchain, dans lequel le registre n'indique pas le solde de chaque utilisateur et tous les processus intermédiaires doivent être calculés pour obtenir le solde final de l'utilisateur.

En comparaison, le modèle d'enregistrement traditionnel d'IPFS est le suivant : dans le fichier a, Alice et Bob disposent chacun de 10 $ ; dans le fichier b, Alice a 5 $ et Bob 15 $ ; et dans le fichier c, Alice a 8 $ et Bob 12 $. Ici, chaque enregistrement est un instantané de l'état résultant, et un nouvel instantané doit être généré dès qu'il y a un changement.

Grâce à cette conception, Ceramic garantit que chaque journal possède un ID de flux unique, avec une dénomination globale uniforme, et qu'aucun changement de nom n'est dû à des changements de contenu. Chaque écriture nécessite l'autorisation de l'utilisateur, et l'ensemble du processus est similaire à la comptabilité blockchain, sauf que ce qui est écrit ne sont pas des données de transaction, mais d'autres contenus modifiables, tels que les informations du compte utilisateur.

Composabilité des données

Ceramic atteint la composabilité des données entre applications principalement grâce à l'utilisation d'une nouvelle abstraction, appelée modèles de données.

Les modèles de données représentent généralement une fonctionnalité d'application unique et logique, telle qu'un profil utilisateur, un graphique social ou un blog. Par exemple, vous pouvez imaginer que chaque implémentation décentralisée de Twitter fonctionnerait sur quelques modèles de données partagés : un pour les tweets de chaque utilisateur, un pour son graphe social, un pour ses DM, etc. En adoptant les mêmes modèles de données sous-jacents, les applications sont capables pour interagir nativement sur les mêmes données.

D’une certaine manière, vous pouvez comparer l’utilisation par Ceramic des normes de modèles de données à l’utilisation de normes de jetons pour les registres d’actifs. Sur Ethereum, par exemple, l’introduction des normes de jeton fongible ERC20 et de jeton non fongible ERC721 a donné naissance à des écosystèmes entiers de jetons et d’applications financières qui interagissent nativement. La céramique apporte ce même concept aux données.

Ceramic adopte une approche communautaire pour créer ces modèles de données, permettant à tout développeur de définir, partager et réutiliser facilement ses modèles avec d'autres développeurs de l'écosystème. À mesure que de plus en plus de modèles de données sont créés par la communauté, vous constaterez une expansion continue de la quantité et de la variété des applications construites avec des données composables.

La composabilité réalisée de cette manière améliore également l'expérience du développeur. Créer une application sur Ceramic revient à parcourir un marché de modèles de données, à les connecter à votre application et à accéder automatiquement à toutes les données du réseau stockées dans ces modèles. Grâce à Ceramic, les développeurs n’auront pas à se soucier du démarrage de leur application avec leurs propres utilisateurs et données cloisonnés. Le rythme de l’innovation combinée entre les développeurs va s’accélérer considérablement.

Évolutivité

Ceramic atteint l’évolutivité grâce à un environnement d’exécution fragmenté. Tous les flux sur Ceramic conservent leur état de manière indépendante et les nœuds du réseau exécutent les transactions de flux en parallèle. Cette approche, contrairement à la plupart des blockchains, permet à Ceramic de fonctionner avec l'évolutivité requise pour les versions décentralisées d'applications sociales comme Twitter ou Facebook.

Contrairement aux systèmes blockchain traditionnels où l'évolutivité est limitée à un seul environnement d'exécution virtuel global et où l'état d'un seul grand livre est partagé entre tous les nœuds, chaque nœud Ceramic agit comme un environnement d'exécution individuel pour effectuer des calculs et valider des transactions sur les flux - il n'y a pas de système global. registre. Ce partitionnement d'exécution « intégré » permet au réseau Ceramic d'évoluer horizontalement pour paralléliser le traitement d'un nombre croissant de transactions de flux simultanées à mesure que le nombre de nœuds sur le réseau augmente. Une telle conception est nécessaire pour gérer l’ampleur des données mondiales, qui sont bien supérieures au débit nécessaire sur une blockchain financière. Un autre avantage de cette conception est qu'un nœud Ceramic peut effectuer des transactions en flux dans un environnement hors ligne, puis synchroniser ultérieurement les mises à jour avec le reste du réseau lorsqu'il revient en ligne.

Solution DID

Ceramic propose également une solution d'identité flexible et robuste appelée IDX, la première solution d'identité décentralisée (DID) entièrement fonctionnelle.

IDX est un protocole d'identité inter-chaînes pour les applications ouvertes avec une identité décentralisée et des données utilisateur interopérables, qui permet aux utilisateurs de créer une identité numérique unifiée composée de toutes leurs données tout en permettant aux développeurs de briser les silos et de partager librement les données utilisateur entre les applications. Comme le montre la figure ci-dessous, il fournit un index décentralisé qui permet d'associer des données structurées à un identifiant décentralisé (DID), et les données sont définies par des définitions et stockées dans des enregistrements.

De plus, IDX peut être utilisé avec tout type de banque de données tel que Ceramic, Textile, OrbitDB, IPFS, Sia, Arweave, les registres blockchain ou même des bases de données centralisées et prend en charge l'authentification à partir de tout type de portefeuille Web3.

IDX est idéal pour associer des profils d'utilisateurs, des graphiques sociaux portables, des scores de réputation, des allégations vérifiables, du contenu généré par l'utilisateur, des données d'application, des paramètres, des noms de domaine, des adresses de blockchain et des comptes sociaux Web2 à un utilisateur de manière décentralisée.

Conclusion

En résumé, l’émergence de Ceramic a grandement facilité la construction du Web3 et débloqué de nouvelles fonctionnalités pour les développeurs Web3. Quelle que soit la blockchain publique (Ethereum, BSC, Polygon, Avalanche, etc.) sur laquelle les développeurs s'appuient, ils peuvent simultanément exploiter Ceramic pour des fonctions centrées sur les données afin d'améliorer leurs applications. De plus, grâce au système de compte flexible basé sur DID de Ceramic, Ceramic s’interface naturellement avec les systèmes de comptes et de clés des principales blockchains actuelles, ce qui offre aux utilisateurs une grande commodité.

Il est agréable de constater qu’il existe déjà de nombreux projets de plateformes sociales DID et Web3 développés sur Ceramic. Parmi eux, pour citer quelques projets remarquables : CyberConnect, une plateforme middleware de graphes sociaux ; Orbis, une plateforme Twitter Web3 ; et The Convo Space, une plateforme de messagerie instantanée, etc. Nous attendons avec impatience les nouvelles possibilités que l’infrastructure de réseau de données de Ceramic peut apporter à la couche d’application Web3.

Avertissement : Cette recherche est à titre informatif uniquement. Il ne constitue pas un conseil en investissement ni une recommandation d’acheter ou de vendre un investissement et ne doit pas être utilisé dans l’évaluation du bien-fondé d’une décision d’investissement.

🐦 @chestersigned

📅 8 mai 2022

Liens:

https://developers.ceramic.network/learn/welcome/

https://blog.ceramic.network/what-is-ceramic/

https://multicoin.capital/2022/02/16/the-composable-web3-data-network/

https://blog.ipfs.io/2021-07-13-ceramic-mainnet-launch/