Le Graph Node est au cœur de l'architecture de The Graph. Ce composant clé est chargé d'indexer les sous-graphes et de rendre les données qui en résultent accessibles via une API GraphQL. C'est le cœur de la pile d'indexeurs, et son fonctionnement efficace est crucial pour le succès d'un indexeur. Graph Node fonctionne de manière polyvalente, capable de fonctionner à la fois dans des environnements bare metal et cloud, ce qui reflète la capacité d'adaptation requise dans le paysage dynamique de la technologie blockchain.
La base de données PostgreSQL, qui fait office de magasin principal, fait partie intégrante du fonctionnement du Graph Node. Cette base de données contient non seulement les données des sous-graphes, mais également des métadonnées relatives aux sous-graphes et des données réseau essentielles, telles que les caches block et eth_call. L'organisation et la gestion de cette base de données sont vitales pour le bon fonctionnement du Graph Node, en garantissant l'intégrité et l'accessibilité des données.
Pour indexer les réseaux blockchain, Graph Node se connecte aux clients du réseau via une API JSON-RPC compatible EVM. Cette configuration peut aller de la connexion à un seul client à une configuration plus complexe impliquant un équilibrage de charge entre plusieurs clients. The Graph a également développé le Network Firehoses, un service gRPC qui fournit un flux de blocs ordonné et sensible aux forks. Bien que ce ne soit pas obligatoire pour les indexeurs pour le moment, le Firehose représente une avancée significative en matière de prise en charge d'une indexation performante à grande échelle.
L'interaction de Graph Node avec le réseau IPFS est cruciale pour le stockage des métadonnées relatives au déploiement des sous-graphes. Un nœud IPFS hébergé au niveau du réseau simplifie ce processus pour les indexeurs. De plus, l'intégration optionnelle à un serveur de métriques Prometheus pour la surveillance et la création de rapports ajoute une touche de sophistication supplémentaire, en permettant aux indexeurs de suivre et d'optimiser les performances du Graph Node.
La configuration flexible du Graph Node, qu'il s'agisse des options d'installation ou des capacités de mise à l'échelle, souligne l'engagement de The Graph à répondre aux différents besoins opérationnels. Le système peut être redimensionné horizontalement à l'aide de plusieurs nœuds graphiques et bases de données, afin de répondre à la demande croissante du réseau. Les utilisateurs avancés peuvent tirer parti des options de configuration du Graph Node, gérées via un fichier TOML ou des variables d'environnement, afin d'optimiser le traitement des données et la répartition de la charge de travail.
Firehose, conceptualisé et développé par StreamingFast, révolutionne l'extraction de données à partir des nœuds de la blockchain. Cet outil innovant décompose chaque transaction d'un bloc de blockchain en ses plus petits éléments, en les enregistrant sous forme de simples fichiers plats. Ces fichiers plats ne sont pas simplement un format de stockage ; ils incarnent un changement de paradigme en matière d'indexation des données. Ils facilitent le traitement parallèle, ce qui accélère considérablement les opérations d'indexation. Cette technologie fournit des données riches et sensibles aux forks, directement aux consommateurs, à partir de nœuds de blockchain instrumentés. Concrètement, Firehose a démontré ses prouesses en proposant des vitesses de capture et de traitement que l'on pensait autrefois inaccessibles, établissant ainsi de nouvelles normes en matière d'extraction de données dans l'écosystème The Graph.
Substreams, une extension des fonctionnalités fournies par Firehose, est conçu pour un traitement des données à hautes performances en parallèle, d'abord en streaming. Ces modules écrits par Rust permettent aux développeurs de composer, de trier, de stocker et de transformer les données de la blockchain pour diverses utilisations. L'ingéniosité de Substreams réside dans sa capacité à utiliser les fichiers plats de Firehose pour indexer les données à des vitesses exceptionnellement rapides. Cette approche garantit que les sous-flux sont non seulement très efficaces pour traiter les données, mais aussi pour les distribuer dès qu'elles sont disponibles, au lieu de se fier à des demandes continues.
L'intégration de Firehose et de Substreams dans l'écosystème de The Graph constitue une combinaison puissante pour le traitement des données. Firehose garantit la diffusion rapide des données de la blockchain dans un format optimisé, tandis que Substreams affine et traite ces données. Cette relation synergique se traduit par une efficacité sans précédent dans la gestion de grands volumes de données de la blockchain, améliorant ainsi considérablement les capacités de The Graph.
Les sous-graphes sont devenus la norme du secteur en matière d'indexation des données de la blockchain depuis leur introduction par The Graph en 2018. Il s'agit essentiellement d'API ouvertes qui extraient, traitent et stockent les données des blockchains, ce qui permet de les interroger facilement via une interface GraphQL. Avec plus de 85 000 sous-graphes pris en charge par plus de 40 chaînes, les sous-graphes sont devenus indispensables pour les développeurs Web3. Ils permettent de déployer rapidement une base de données Postgres remplie de données indexées, prête à être interrogée à l'aide d'une couche GraphQL. Les sous-graphes permettent aux développeurs d'afficher un large éventail de données relatives à la blockchain dans leurs dApps, qu'il s'agisse de transactions DeFi ou de provenance de NFT, de manière organisée et efficace.
Dans le paysage en constante évolution de la technologie blockchain, les sous-graphes sont devenus un concept essentiel, transformant la façon dont nous interagissons avec les données de la blockchain et les utilisons. Ces API ouvertes font office d'intermédiaires, comblant parfaitement le fossé entre le monde décentralisé des blockchains et le domaine familier des données structurées. En extrayant, traitant et organisant les données de la blockchain dans un format interrogeable, les sous-graphes permettent aux développeurs de créer des applications innovantes et basées sur les données.
Les sous-graphes offrent de nombreux avantages, ce qui en fait un choix intéressant pour les développeurs comme pour les utilisateurs. Leur nature décentralisée garantit une résistance à la censure et aux temps d'arrêt, favorisant ainsi un écosystème de données sécurisé et fiable. De plus, les sous-graphes sont intrinsèquement évolutifs, capables de gérer d'énormes quantités de données sans compromettre les performances. La rentabilité est un autre avantage clé, les sous-graphes étant souvent plus abordables que les API de données traditionnelles.
Les sous-graphes sont composés de trois éléments essentiels qui fonctionnent en harmonie pour apporter leurs capacités de transformation :
Manifeste : Le manifeste sert de plan au sous-graphe, en décrivant ses sources de données, son schéma et son code AssemblyScript. Il définit les limites des données que le sous-graphe va indexer, en veillant à ce que seules les informations pertinentes soient saisies.
Schéma : Le schéma définit la structure des données, comme le plan d'un bâtiment. Il décrit les entités, les champs et les relations entre les entités, fournissant ainsi une manière claire et organisée de représenter les données.
Code AssemblyScript : Ce code exécutable fait office de cheval de bataille du sous-graphe, en traduisant les données brutes des blockchains dans un format compréhensible par le moteur GraphQL. Il gère également l'indexation et le stockage des données, garantissant ainsi leur accessibilité et leur fiabilité.
La création d'un sous-graphe comporte une série d'étapes, chacune étant soigneusement conçue pour garantir sa fonctionnalité et son efficacité :
Conceptualisation et conception : Le parcours commence par une idée précise des données à indexer et des applications qu'elles alimenteront. Cela implique de définir les entités, les champs et les relations entre eux, afin de s'assurer que la structure du sous-graphe correspond à son objectif.
Développement du manifeste et du schéma : Le manifeste et le schéma sont méticuleusement conçus, jetant ainsi les bases de l'architecture des données du sous-graphe. Le manifeste spécifie les sources de données, tandis que le schéma décrit la structure des données, garantissant ainsi leur intégrité et leur cohérence.
Implémentation du code AssemblyScript : Le code AssemblyScript est écrit pour traduire les données brutes de la blockchain dans un format compréhensible par GraphQL. Il gère l'indexation, le stockage et la récupération des données, permettant ainsi un accès efficace aux données indexées.
Une fois le sous-graphe développé, il est soumis à un processus de déploiement qui le présente au monde entier :
Intégration à Subgraph Studio : Le Subgraph Studio sert de plateforme centralisée pour gérer les sous-graphes. Cela facilite le processus de déploiement en permettant aux développeurs de publier leurs sous-graphes sur le réseau décentralisé.
Indexation et curation : Les indexeurs, chargés de récupérer et de stocker les données de la blockchain, sont essentiels pour rendre les sous-graphes accessibles aux développeurs. La curation, généralement effectuée à l'aide de jetons GRT, incite les indexeurs à donner la priorité aux sous-graphes les plus demandés.
Requête et utilisation : les développeurs peuvent désormais interroger le sous-graphe déployé à l'aide de requêtes GraphQL, en récupérant des données spécifiques adaptées aux besoins de leur application. Cette intégration fluide permet aux développeurs d'exploiter les données de la blockchain pour innover.
Alors que The Graph entre dans une nouvelle ère (nous l'aborderons dans la leçon 5), l'évolution continue de ces technologies de base, à savoir les sous-graphes, Firehose et les sous-flux, est attendue avec impatience. Ces composants sont appelés à se développer et à évoluer, jouant un rôle vital dans l'introduction de nouveaux services de données et dans la garantie de flux de données plus rapides et plus modulaires. Le Verifiable Firehose, par exemple, est en passe de devenir une solution révolutionnaire pour accéder aux données historiques d'Ethereum, afin de relever les défis liés à l'évolution des normes en matière de blockchain.
Il est crucial de faire la distinction entre les sous-graphes et les sous-flux, car ils ont des objectifs différents. Les sous-graphes sont idéaux pour la récupération et la gestion de données standard, car ils sont faciles à configurer et à utiliser avec une couche de requête GraphQL. À l'inverse, les sous-flux sont conçus pour répondre à des besoins d'analyse plus complexes et de mégadonnées, offrant un traitement des données parallélisé et une plus grande flexibilité en matière de gestion et de stockage des données. Les sous-flux permettent aux développeurs de transformer des données provenant de formats de fichiers de base en des formes plus utilisables, en répondant à des exigences complexes en matière de traitement des données.
The Graph, traditionnellement connu pour ses prouesses en matière d'organisation des données en chaîne, élargit aujourd'hui ses horizons en s'aventurant dans le domaine des données hors chaîne. Cette approche s'inscrit dans la mission à long terme de The Graph qui consiste à fournir un accès facile aux connaissances et informations publiques du monde entier.
Dans l'architecture Web3, les utilisateurs peuvent interagir directement avec la blockchain par le biais de services intergiciels, mais il faut faire un compromis, notamment en termes de coût. Les coûts de transaction en chaîne, souvent appelés frais de gaz, peuvent être trop élevés pour des calculs complexes ou un stockage de données étendu. Cette limitation a toujours réduit la complexité des applications ou a incité les développeurs à créer des API propriétaires hors chaîne, en s'éloignant des modèles open source.
The Graph propose une solution unique à ce défi en permettant d'organiser et de diffuser des données hors chaîne via son réseau décentralisé. Cette méthode implique un flux de travail dans lequel les données hors chaîne sont traditionnellement publiées sur IPFS (InterPlanetary File System), puis les hachages IPFS sont enregistrés en chaîne. Par la suite, ces données peuvent être indexées par sous-graphes et mises à disposition pour les requêtes. Cette approche offre un moyen évolutif et économique de publier et de diffuser des données complexes et dynamiques sans avoir à créer et à gérer des API propriétaires.
Jobs Cron pour le calcul et la publication de données : Un cron hors chaîne effectue des calculs complexes et publie les résultats sur une source permanente, comme IPFS, indexable par The Graph. Ce job génère également une transaction en chaîne pour publier le hachage du fichier IPFS et toutes les métadonnées pertinentes.
Publication de sous-graphes à des fins d'indexation : La prochaine étape consiste à publier un sous-graphe qui indexe ces fichiers IPFS en fonction des hachages de fichiers publiés sur la chaîne. Une fois le sous-graphe publié, il peut être récupéré et diffusé par les indexeurs du réseau The Graph, ce qui permet aux développeurs et aux utilisateurs tiers d'interroger les données.
Accès aux données robuste et fiable : En tirant parti du réseau distribué d'indexeurs de The Graph, l'accès aux données reste robuste et fiable sans effort supplémentaire de la part de l'éditeur de données. Cette structure décentralisée améliore considérablement la disponibilité et l'intégrité des données.
Un exemple pratique de l'écosystème The Graph est l'oracle développé par Edge & Node pour publier des indicateurs de coût et de qualité de service du réseau. Cet oracle publie des données agrégées sur IPFS toutes les cinq minutes et enregistre le hachage du fichier IPFS sur la chaîne Gnosis. Ces données sont ensuite indexées dans un sous-graphique, qui peut être consulté par les parties prenantes du protocole. Le coût associé à ce flux de travail est étonnamment bas, ce qui en fait une option intéressante pour les éditeurs de données.
Cette méthode d'utilisation de The Graph pour les données dynamiques ouvre de nouvelles possibilités intéressantes pour les sites permaweb, notamment des back-ends allégés pour les blogs, la curation algorithmique du contenu et les systèmes de surveillance en temps réel. Cela représente un changement significatif dans la façon dont les données sont publiées, indexées et consultées, promouvant ainsi un écosystème Web3 plus ouvert et plus collaboratif.
L'expansion de The Graph vers la gestion des données hors chaîne ouvre de nouvelles voies dans l'écosystème Web3, en créant un pont entre les domaines des données décentralisés et traditionnels. Cette initiative reflète la mission de The Graph qui consiste à rendre accessible un plus large éventail d'informations de manière décentralisée, en remédiant aux limites inhérentes au stockage et au calcul des données en chaîne.
The Graph reconnaît les compromis liés aux coûts entre le stockage et le calcul des données en chaîne dans les architectures Web3. Bien que l'interaction directe avec la blockchain soit simple, les calculs complexes et le stockage de données à grande échelle peuvent devenir trop coûteux. Pour contourner ces limites, The Graph propose une méthode qui combine le stockage des données hors chaîne et le référencement des données en chaîne, préservant ainsi une philosophie décentralisée tout en améliorant les fonctionnalités.
Calcul hors chaîne et publication IPFS : Les calculs complexes sont effectués hors chaîne, et les données qui en résultent sont publiées sur IPFS, une solution de stockage décentralisée. Cette étape garantit que les données, lorsqu'elles sont hors chaîne, sont stockées de manière vérifiable et décentralisée.
Liaison en chaîne via des transactions : En plus de stocker des données sur IPFS, une transaction en chaîne correspondante est effectuée pour enregistrer le hachage IPFS et les autres métadonnées pertinentes. Cette méthode ancre les données hors chaîne à la blockchain, apportant ainsi une couche de confiance et de traçabilité.
Indexation des sous-graphes pour l'accessibilité : La dernière étape consiste à indexer les données stockées au format IPFS à l'aide de sous-graphes. Ce processus rend les données hors chaîne facilement interrogeables et accessibles via le réseau décentralisé de The Graph.
Mise en œuvre pratique : Oracle d'Edge & Node
L'oracle développé par Edge & Node est une application pratique de cette méthodologie au sein de l'écosystème The Graph. Cet oracle publie les indicateurs du coût et de la qualité de service du réseau toutes les cinq minutes de la manière suivante :
Les données agrégées sont publiées sur IPFS.
Le hachage du fichier IPFS correspondant est ensuite enregistré sur la chaîne Gnosis via un contrat DataEdge.
Ces fichiers IPFS sont indexés dans un sous-graphe, ce qui permet de mettre les données à la disposition des parties prenantes de manière décentralisée.
Cette implémentation illustre l'approche peu coûteuse, évolutive et efficace qui permet de publier et de diffuser des données complexes sans avoir besoin d'API propriétaires. Cela montre comment la méthode de The Graph peut être exploitée pour créer des sources de données dynamiques pour diverses applications.
Les coûts associés à ce flux de travail sont étonnamment bas, ce qui en fait une solution intéressante pour les éditeurs de données. Par exemple, la mise en œuvre d'Oracle par Edge & Node entraîne des dépenses minimes pour les transactions en chaîne et l'épinglage des nœuds IPFS, les frais de service étant à la charge du consommateur de données. Ce modèle réduit efficacement les frais opérationnels des éditeurs de données tout en garantissant un accès robuste et fiable aux données.
Cette méthode ouvre de nouvelles possibilités pour les applications permaweb, telles que les backends dynamiques pour les blogs, la curation algorithmique du contenu et les systèmes de surveillance en temps réel. Cela permet de séparer les éditeurs de données des opérateurs d'applications et de front-end, encourageant ainsi la spécialisation et la division du travail au sein d'une communauté open source. Cette approche est prometteuse pour les applications et protocoles sociaux décentralisés, car elle ouvre une nouvelle voie en matière de publication et de consommation de données décentralisées.
L'intégration de GraphQL comme langage de requête préféré. Cette décision façonne de manière significative la manière dont les données sont accessibles et interagissent via les API de The Graph, fournissant ainsi une méthode rationalisée et efficace pour interroger les données de la blockchain.
GraphQL est à la pointe de la conception d'API modernes, proposant une approche flexible et efficace de la récupération des données. Dans le contexte de la blockchain, où les structures de données sont complexes et évoluent constamment, la capacité de GraphQL à récupérer exactement ce dont on a besoin devient inestimable.
Requêtes de données personnalisées : L'attrait principal de GraphQL réside dans sa capacité à permettre aux clients de définir avec précision la structure des données dont ils ont besoin. Cette fonctionnalité constitue une différence significative par rapport aux réponses à structure fixe traditionnelles, car elle permet une interaction plus ciblée et plus efficace avec les données.
Améliorer les interactions en temps réel : au-delà des simples requêtes, GraphQL in The Graph permet de s'abonner à des données en temps réel. Cette fonctionnalité est vitale pour les applications blockchain où les mises à jour rapides et la réactivité sont essentielles à l'expérience utilisateur.
Accès aux données décentralisé et fiable : L'utilisation de GraphQL par The Graph étend sa philosophie de décentralisation au domaine de l'accès aux données. En s'interfaçant avec un réseau de nœuds décentralisés, les requêtes GraphQL garantissent que les données restent ouvertes, transparentes et résistantes à la censure.
La convergence des API et de GraphQL
Dans l'écosystème de The Graph, la fusion des API avec GraphQL crée un système harmonieux et puissant de récupération de données :
Définition du schéma et mappage des données : les développeurs définissent un schéma GraphQL dans leur sous-graphe, en décrivant la structure des données interrogeables. Le schéma est ensuite associé de manière complexe aux événements de la blockchain, traduisant les activités de la chaîne en données structurées.
Exécution de requêtes via des indexeurs : lorsqu'une requête GraphQL est soumise à une API de sous-graphe, elle est traitée par le réseau décentralisé d'indexeurs de The Graph. Ce processus illustre la façon dont les requêtes sont exécutées de manière distribuée, conformément aux principes de la technologie blockchain.
Gestion des relations complexes entre données : Les relations complexes entre données étant monnaie courante dans la blockchain, la capacité de GraphQL à gérer des requêtes complexes, y compris diverses formes de filtrage et de tri des données, est particulièrement bénéfique.
Les avantages se font sentir pour les développeurs et les utilisateurs finaux
L'intégration de GraphQL dans The Graph présente de nombreux avantages :
Le Graph Node est au cœur de l'architecture de The Graph. Ce composant clé est chargé d'indexer les sous-graphes et de rendre les données qui en résultent accessibles via une API GraphQL. C'est le cœur de la pile d'indexeurs, et son fonctionnement efficace est crucial pour le succès d'un indexeur. Graph Node fonctionne de manière polyvalente, capable de fonctionner à la fois dans des environnements bare metal et cloud, ce qui reflète la capacité d'adaptation requise dans le paysage dynamique de la technologie blockchain.
La base de données PostgreSQL, qui fait office de magasin principal, fait partie intégrante du fonctionnement du Graph Node. Cette base de données contient non seulement les données des sous-graphes, mais également des métadonnées relatives aux sous-graphes et des données réseau essentielles, telles que les caches block et eth_call. L'organisation et la gestion de cette base de données sont vitales pour le bon fonctionnement du Graph Node, en garantissant l'intégrité et l'accessibilité des données.
Pour indexer les réseaux blockchain, Graph Node se connecte aux clients du réseau via une API JSON-RPC compatible EVM. Cette configuration peut aller de la connexion à un seul client à une configuration plus complexe impliquant un équilibrage de charge entre plusieurs clients. The Graph a également développé le Network Firehoses, un service gRPC qui fournit un flux de blocs ordonné et sensible aux forks. Bien que ce ne soit pas obligatoire pour les indexeurs pour le moment, le Firehose représente une avancée significative en matière de prise en charge d'une indexation performante à grande échelle.
L'interaction de Graph Node avec le réseau IPFS est cruciale pour le stockage des métadonnées relatives au déploiement des sous-graphes. Un nœud IPFS hébergé au niveau du réseau simplifie ce processus pour les indexeurs. De plus, l'intégration optionnelle à un serveur de métriques Prometheus pour la surveillance et la création de rapports ajoute une touche de sophistication supplémentaire, en permettant aux indexeurs de suivre et d'optimiser les performances du Graph Node.
La configuration flexible du Graph Node, qu'il s'agisse des options d'installation ou des capacités de mise à l'échelle, souligne l'engagement de The Graph à répondre aux différents besoins opérationnels. Le système peut être redimensionné horizontalement à l'aide de plusieurs nœuds graphiques et bases de données, afin de répondre à la demande croissante du réseau. Les utilisateurs avancés peuvent tirer parti des options de configuration du Graph Node, gérées via un fichier TOML ou des variables d'environnement, afin d'optimiser le traitement des données et la répartition de la charge de travail.
Firehose, conceptualisé et développé par StreamingFast, révolutionne l'extraction de données à partir des nœuds de la blockchain. Cet outil innovant décompose chaque transaction d'un bloc de blockchain en ses plus petits éléments, en les enregistrant sous forme de simples fichiers plats. Ces fichiers plats ne sont pas simplement un format de stockage ; ils incarnent un changement de paradigme en matière d'indexation des données. Ils facilitent le traitement parallèle, ce qui accélère considérablement les opérations d'indexation. Cette technologie fournit des données riches et sensibles aux forks, directement aux consommateurs, à partir de nœuds de blockchain instrumentés. Concrètement, Firehose a démontré ses prouesses en proposant des vitesses de capture et de traitement que l'on pensait autrefois inaccessibles, établissant ainsi de nouvelles normes en matière d'extraction de données dans l'écosystème The Graph.
Substreams, une extension des fonctionnalités fournies par Firehose, est conçu pour un traitement des données à hautes performances en parallèle, d'abord en streaming. Ces modules écrits par Rust permettent aux développeurs de composer, de trier, de stocker et de transformer les données de la blockchain pour diverses utilisations. L'ingéniosité de Substreams réside dans sa capacité à utiliser les fichiers plats de Firehose pour indexer les données à des vitesses exceptionnellement rapides. Cette approche garantit que les sous-flux sont non seulement très efficaces pour traiter les données, mais aussi pour les distribuer dès qu'elles sont disponibles, au lieu de se fier à des demandes continues.
L'intégration de Firehose et de Substreams dans l'écosystème de The Graph constitue une combinaison puissante pour le traitement des données. Firehose garantit la diffusion rapide des données de la blockchain dans un format optimisé, tandis que Substreams affine et traite ces données. Cette relation synergique se traduit par une efficacité sans précédent dans la gestion de grands volumes de données de la blockchain, améliorant ainsi considérablement les capacités de The Graph.
Les sous-graphes sont devenus la norme du secteur en matière d'indexation des données de la blockchain depuis leur introduction par The Graph en 2018. Il s'agit essentiellement d'API ouvertes qui extraient, traitent et stockent les données des blockchains, ce qui permet de les interroger facilement via une interface GraphQL. Avec plus de 85 000 sous-graphes pris en charge par plus de 40 chaînes, les sous-graphes sont devenus indispensables pour les développeurs Web3. Ils permettent de déployer rapidement une base de données Postgres remplie de données indexées, prête à être interrogée à l'aide d'une couche GraphQL. Les sous-graphes permettent aux développeurs d'afficher un large éventail de données relatives à la blockchain dans leurs dApps, qu'il s'agisse de transactions DeFi ou de provenance de NFT, de manière organisée et efficace.
Dans le paysage en constante évolution de la technologie blockchain, les sous-graphes sont devenus un concept essentiel, transformant la façon dont nous interagissons avec les données de la blockchain et les utilisons. Ces API ouvertes font office d'intermédiaires, comblant parfaitement le fossé entre le monde décentralisé des blockchains et le domaine familier des données structurées. En extrayant, traitant et organisant les données de la blockchain dans un format interrogeable, les sous-graphes permettent aux développeurs de créer des applications innovantes et basées sur les données.
Les sous-graphes offrent de nombreux avantages, ce qui en fait un choix intéressant pour les développeurs comme pour les utilisateurs. Leur nature décentralisée garantit une résistance à la censure et aux temps d'arrêt, favorisant ainsi un écosystème de données sécurisé et fiable. De plus, les sous-graphes sont intrinsèquement évolutifs, capables de gérer d'énormes quantités de données sans compromettre les performances. La rentabilité est un autre avantage clé, les sous-graphes étant souvent plus abordables que les API de données traditionnelles.
Les sous-graphes sont composés de trois éléments essentiels qui fonctionnent en harmonie pour apporter leurs capacités de transformation :
Manifeste : Le manifeste sert de plan au sous-graphe, en décrivant ses sources de données, son schéma et son code AssemblyScript. Il définit les limites des données que le sous-graphe va indexer, en veillant à ce que seules les informations pertinentes soient saisies.
Schéma : Le schéma définit la structure des données, comme le plan d'un bâtiment. Il décrit les entités, les champs et les relations entre les entités, fournissant ainsi une manière claire et organisée de représenter les données.
Code AssemblyScript : Ce code exécutable fait office de cheval de bataille du sous-graphe, en traduisant les données brutes des blockchains dans un format compréhensible par le moteur GraphQL. Il gère également l'indexation et le stockage des données, garantissant ainsi leur accessibilité et leur fiabilité.
La création d'un sous-graphe comporte une série d'étapes, chacune étant soigneusement conçue pour garantir sa fonctionnalité et son efficacité :
Conceptualisation et conception : Le parcours commence par une idée précise des données à indexer et des applications qu'elles alimenteront. Cela implique de définir les entités, les champs et les relations entre eux, afin de s'assurer que la structure du sous-graphe correspond à son objectif.
Développement du manifeste et du schéma : Le manifeste et le schéma sont méticuleusement conçus, jetant ainsi les bases de l'architecture des données du sous-graphe. Le manifeste spécifie les sources de données, tandis que le schéma décrit la structure des données, garantissant ainsi leur intégrité et leur cohérence.
Implémentation du code AssemblyScript : Le code AssemblyScript est écrit pour traduire les données brutes de la blockchain dans un format compréhensible par GraphQL. Il gère l'indexation, le stockage et la récupération des données, permettant ainsi un accès efficace aux données indexées.
Une fois le sous-graphe développé, il est soumis à un processus de déploiement qui le présente au monde entier :
Intégration à Subgraph Studio : Le Subgraph Studio sert de plateforme centralisée pour gérer les sous-graphes. Cela facilite le processus de déploiement en permettant aux développeurs de publier leurs sous-graphes sur le réseau décentralisé.
Indexation et curation : Les indexeurs, chargés de récupérer et de stocker les données de la blockchain, sont essentiels pour rendre les sous-graphes accessibles aux développeurs. La curation, généralement effectuée à l'aide de jetons GRT, incite les indexeurs à donner la priorité aux sous-graphes les plus demandés.
Requête et utilisation : les développeurs peuvent désormais interroger le sous-graphe déployé à l'aide de requêtes GraphQL, en récupérant des données spécifiques adaptées aux besoins de leur application. Cette intégration fluide permet aux développeurs d'exploiter les données de la blockchain pour innover.
Alors que The Graph entre dans une nouvelle ère (nous l'aborderons dans la leçon 5), l'évolution continue de ces technologies de base, à savoir les sous-graphes, Firehose et les sous-flux, est attendue avec impatience. Ces composants sont appelés à se développer et à évoluer, jouant un rôle vital dans l'introduction de nouveaux services de données et dans la garantie de flux de données plus rapides et plus modulaires. Le Verifiable Firehose, par exemple, est en passe de devenir une solution révolutionnaire pour accéder aux données historiques d'Ethereum, afin de relever les défis liés à l'évolution des normes en matière de blockchain.
Il est crucial de faire la distinction entre les sous-graphes et les sous-flux, car ils ont des objectifs différents. Les sous-graphes sont idéaux pour la récupération et la gestion de données standard, car ils sont faciles à configurer et à utiliser avec une couche de requête GraphQL. À l'inverse, les sous-flux sont conçus pour répondre à des besoins d'analyse plus complexes et de mégadonnées, offrant un traitement des données parallélisé et une plus grande flexibilité en matière de gestion et de stockage des données. Les sous-flux permettent aux développeurs de transformer des données provenant de formats de fichiers de base en des formes plus utilisables, en répondant à des exigences complexes en matière de traitement des données.
The Graph, traditionnellement connu pour ses prouesses en matière d'organisation des données en chaîne, élargit aujourd'hui ses horizons en s'aventurant dans le domaine des données hors chaîne. Cette approche s'inscrit dans la mission à long terme de The Graph qui consiste à fournir un accès facile aux connaissances et informations publiques du monde entier.
Dans l'architecture Web3, les utilisateurs peuvent interagir directement avec la blockchain par le biais de services intergiciels, mais il faut faire un compromis, notamment en termes de coût. Les coûts de transaction en chaîne, souvent appelés frais de gaz, peuvent être trop élevés pour des calculs complexes ou un stockage de données étendu. Cette limitation a toujours réduit la complexité des applications ou a incité les développeurs à créer des API propriétaires hors chaîne, en s'éloignant des modèles open source.
The Graph propose une solution unique à ce défi en permettant d'organiser et de diffuser des données hors chaîne via son réseau décentralisé. Cette méthode implique un flux de travail dans lequel les données hors chaîne sont traditionnellement publiées sur IPFS (InterPlanetary File System), puis les hachages IPFS sont enregistrés en chaîne. Par la suite, ces données peuvent être indexées par sous-graphes et mises à disposition pour les requêtes. Cette approche offre un moyen évolutif et économique de publier et de diffuser des données complexes et dynamiques sans avoir à créer et à gérer des API propriétaires.
Jobs Cron pour le calcul et la publication de données : Un cron hors chaîne effectue des calculs complexes et publie les résultats sur une source permanente, comme IPFS, indexable par The Graph. Ce job génère également une transaction en chaîne pour publier le hachage du fichier IPFS et toutes les métadonnées pertinentes.
Publication de sous-graphes à des fins d'indexation : La prochaine étape consiste à publier un sous-graphe qui indexe ces fichiers IPFS en fonction des hachages de fichiers publiés sur la chaîne. Une fois le sous-graphe publié, il peut être récupéré et diffusé par les indexeurs du réseau The Graph, ce qui permet aux développeurs et aux utilisateurs tiers d'interroger les données.
Accès aux données robuste et fiable : En tirant parti du réseau distribué d'indexeurs de The Graph, l'accès aux données reste robuste et fiable sans effort supplémentaire de la part de l'éditeur de données. Cette structure décentralisée améliore considérablement la disponibilité et l'intégrité des données.
Un exemple pratique de l'écosystème The Graph est l'oracle développé par Edge & Node pour publier des indicateurs de coût et de qualité de service du réseau. Cet oracle publie des données agrégées sur IPFS toutes les cinq minutes et enregistre le hachage du fichier IPFS sur la chaîne Gnosis. Ces données sont ensuite indexées dans un sous-graphique, qui peut être consulté par les parties prenantes du protocole. Le coût associé à ce flux de travail est étonnamment bas, ce qui en fait une option intéressante pour les éditeurs de données.
Cette méthode d'utilisation de The Graph pour les données dynamiques ouvre de nouvelles possibilités intéressantes pour les sites permaweb, notamment des back-ends allégés pour les blogs, la curation algorithmique du contenu et les systèmes de surveillance en temps réel. Cela représente un changement significatif dans la façon dont les données sont publiées, indexées et consultées, promouvant ainsi un écosystème Web3 plus ouvert et plus collaboratif.
L'expansion de The Graph vers la gestion des données hors chaîne ouvre de nouvelles voies dans l'écosystème Web3, en créant un pont entre les domaines des données décentralisés et traditionnels. Cette initiative reflète la mission de The Graph qui consiste à rendre accessible un plus large éventail d'informations de manière décentralisée, en remédiant aux limites inhérentes au stockage et au calcul des données en chaîne.
The Graph reconnaît les compromis liés aux coûts entre le stockage et le calcul des données en chaîne dans les architectures Web3. Bien que l'interaction directe avec la blockchain soit simple, les calculs complexes et le stockage de données à grande échelle peuvent devenir trop coûteux. Pour contourner ces limites, The Graph propose une méthode qui combine le stockage des données hors chaîne et le référencement des données en chaîne, préservant ainsi une philosophie décentralisée tout en améliorant les fonctionnalités.
Calcul hors chaîne et publication IPFS : Les calculs complexes sont effectués hors chaîne, et les données qui en résultent sont publiées sur IPFS, une solution de stockage décentralisée. Cette étape garantit que les données, lorsqu'elles sont hors chaîne, sont stockées de manière vérifiable et décentralisée.
Liaison en chaîne via des transactions : En plus de stocker des données sur IPFS, une transaction en chaîne correspondante est effectuée pour enregistrer le hachage IPFS et les autres métadonnées pertinentes. Cette méthode ancre les données hors chaîne à la blockchain, apportant ainsi une couche de confiance et de traçabilité.
Indexation des sous-graphes pour l'accessibilité : La dernière étape consiste à indexer les données stockées au format IPFS à l'aide de sous-graphes. Ce processus rend les données hors chaîne facilement interrogeables et accessibles via le réseau décentralisé de The Graph.
Mise en œuvre pratique : Oracle d'Edge & Node
L'oracle développé par Edge & Node est une application pratique de cette méthodologie au sein de l'écosystème The Graph. Cet oracle publie les indicateurs du coût et de la qualité de service du réseau toutes les cinq minutes de la manière suivante :
Les données agrégées sont publiées sur IPFS.
Le hachage du fichier IPFS correspondant est ensuite enregistré sur la chaîne Gnosis via un contrat DataEdge.
Ces fichiers IPFS sont indexés dans un sous-graphe, ce qui permet de mettre les données à la disposition des parties prenantes de manière décentralisée.
Cette implémentation illustre l'approche peu coûteuse, évolutive et efficace qui permet de publier et de diffuser des données complexes sans avoir besoin d'API propriétaires. Cela montre comment la méthode de The Graph peut être exploitée pour créer des sources de données dynamiques pour diverses applications.
Les coûts associés à ce flux de travail sont étonnamment bas, ce qui en fait une solution intéressante pour les éditeurs de données. Par exemple, la mise en œuvre d'Oracle par Edge & Node entraîne des dépenses minimes pour les transactions en chaîne et l'épinglage des nœuds IPFS, les frais de service étant à la charge du consommateur de données. Ce modèle réduit efficacement les frais opérationnels des éditeurs de données tout en garantissant un accès robuste et fiable aux données.
Cette méthode ouvre de nouvelles possibilités pour les applications permaweb, telles que les backends dynamiques pour les blogs, la curation algorithmique du contenu et les systèmes de surveillance en temps réel. Cela permet de séparer les éditeurs de données des opérateurs d'applications et de front-end, encourageant ainsi la spécialisation et la division du travail au sein d'une communauté open source. Cette approche est prometteuse pour les applications et protocoles sociaux décentralisés, car elle ouvre une nouvelle voie en matière de publication et de consommation de données décentralisées.
L'intégration de GraphQL comme langage de requête préféré. Cette décision façonne de manière significative la manière dont les données sont accessibles et interagissent via les API de The Graph, fournissant ainsi une méthode rationalisée et efficace pour interroger les données de la blockchain.
GraphQL est à la pointe de la conception d'API modernes, proposant une approche flexible et efficace de la récupération des données. Dans le contexte de la blockchain, où les structures de données sont complexes et évoluent constamment, la capacité de GraphQL à récupérer exactement ce dont on a besoin devient inestimable.
Requêtes de données personnalisées : L'attrait principal de GraphQL réside dans sa capacité à permettre aux clients de définir avec précision la structure des données dont ils ont besoin. Cette fonctionnalité constitue une différence significative par rapport aux réponses à structure fixe traditionnelles, car elle permet une interaction plus ciblée et plus efficace avec les données.
Améliorer les interactions en temps réel : au-delà des simples requêtes, GraphQL in The Graph permet de s'abonner à des données en temps réel. Cette fonctionnalité est vitale pour les applications blockchain où les mises à jour rapides et la réactivité sont essentielles à l'expérience utilisateur.
Accès aux données décentralisé et fiable : L'utilisation de GraphQL par The Graph étend sa philosophie de décentralisation au domaine de l'accès aux données. En s'interfaçant avec un réseau de nœuds décentralisés, les requêtes GraphQL garantissent que les données restent ouvertes, transparentes et résistantes à la censure.
La convergence des API et de GraphQL
Dans l'écosystème de The Graph, la fusion des API avec GraphQL crée un système harmonieux et puissant de récupération de données :
Définition du schéma et mappage des données : les développeurs définissent un schéma GraphQL dans leur sous-graphe, en décrivant la structure des données interrogeables. Le schéma est ensuite associé de manière complexe aux événements de la blockchain, traduisant les activités de la chaîne en données structurées.
Exécution de requêtes via des indexeurs : lorsqu'une requête GraphQL est soumise à une API de sous-graphe, elle est traitée par le réseau décentralisé d'indexeurs de The Graph. Ce processus illustre la façon dont les requêtes sont exécutées de manière distribuée, conformément aux principes de la technologie blockchain.
Gestion des relations complexes entre données : Les relations complexes entre données étant monnaie courante dans la blockchain, la capacité de GraphQL à gérer des requêtes complexes, y compris diverses formes de filtrage et de tri des données, est particulièrement bénéfique.
Les avantages se font sentir pour les développeurs et les utilisateurs finaux
L'intégration de GraphQL dans The Graph présente de nombreux avantages :