4 minutes
Installation du Graph CLI
Afin d’utiliser votre subgraph sur le réseau décentralisé de The Graph, vous devrez créer une clé API dans Subgraph Studio. Il est recommandé d’ajouter un signal à votre subgraph avec au moins 3 000 GRT pour attirer 2 ou 3 Indexeurs. Pour en savoir plus sur la signalisation, consultez Curation.
Aperçu
Le Graph CLI est une interface de ligne de commande qui facilite les commandes des développeurs pour The Graph. Elle traite un Subgraph manifest et compile les mappages pour créer les fichiers dont vous aurez besoin pour déployer le subgraph dans Subgraph Studio et sur le réseau.
Introduction
Installation du Graph CLI
L’interface de ligne de commande Graph est écrite en TypeScript et vous devez avoir installé node et soit npm soit yarn pour l’utiliser. Recherchez la version la plus récente de l’interface de ligne de commande.
Sur votre machine locale, exécutez l’une des commandes suivantes :
En utilisant npm
1npm install -g @graphprotocol/graph-cli@latestEn utilisant yarn
1yarn global add @graphprotocol/graph-cliLa commande graph init peut être utilisée pour mettre en place un nouveau projet Subgraph, soit à partir d’un contrat existant, soit à partir d’un exemple de Subgraph. Si vous avez déjà un contrat intelligent déployé sur votre réseau préféré, vous pouvez démarrer un nouveau Subgraph à partir de ce contrat pour commencer.
Créer un subgraph
À partir d’un contrat existant
La commande suivante crée un Subgraph qui indexe tous les événements d’un contrat existant :
1graph init \2 --product subgraph-studio3 --from-contract <ADRESSE_DU_CONTRAT> \4 [--network <RESEAU_ETHEREUM>] \5 [--abi <FICHIER>] \6 <SUBGRAPH_SLUG> [<REPERTOIRE>]-
La commande tente de récupérer l’ABI du contrat depuis Etherscan.
- Graph CLI repose sur un endpoint RPC public. Bien que des échecs occasionnels soient attendus, les réessais résolvent généralement ce problème. Si les échecs persistent, envisagez d’utiliser un ABI local.
-
Si certains arguments optionnels manquent, il vous guide à travers un formulaire interactif.
-
Le
<SUBGRAPH_SLUG>est l’identifiant de votre Subgraph dans Subgraph Studio. Il se trouve sur la page de détails de votre Subgraph.
À partir d’un exemple de subgraph
La commande suivante permet d’initialiser un nouveau projet à partir d’un exemple de Subgraph :
1graph init <SUBGRAPH_SLUG> --from-example=example-subgraph-
Le Subgraph d’exemple est basé sur le contrat Gravity de Dani Grant, qui gère les avatars des utilisateurs et émet des événements
NewGravatarouUpdateGravatarà chaque fois que des avatars sont créés ou mis à jour. -
Le Subgraph gère ces événements en écrivant des entités
Gravatardans le store de Graph Node et en veillant à ce qu’elles soient mises à jour en fonction des événements.
Ajouter de nouvelles sources de données à un subgraph existant
Les sources de données sont des composants clés des subgraphs. Ils définissent les sources de données que le subgraph indexe et traite. Une dataSource spécifie quel contrat intelligent écouter, quels événements traiter et comment les traiter.
Les versions récentes de Graph CLI permettent d’ajouter de nouvelles dataSources à un Subgraph existant grâce à la commande graph add :
1graph add <address> [<subgraph-manifest default: "./subgraph.yaml">]23Options:45 --abi <path> Chemin d'accès à l'ABI du contrat (par défaut : téléchargement à partir d'Etherscan)6 --contract-name Nom du contrat (par défaut : Contrat)7 --merge-entities Fusionner ou non les entités portant le même nom (par défaut : false)8 --network-file <path> Chemin du fichier de configuration du réseau (par défaut: "./networks.json")Spécificités
La commande graph add récupère l’ABI depuis Etherscan (à moins qu’un chemin ABI ne soit spécifié avec l’option --abi) et crée une nouvelle dataSource, de la même manière que la commande graph init crée une dataSource --from-contract, en mettant à jour le schéma et les mappages en conséquence. Cela vous permet d’indexer les contrats d’implémentation à partir de leurs contrats proxy.
-
L’option
--merge-entitiesidentifie comment le développeur souhaite gérer les conflits de noms entreentityetevent:-
Si
true: la nouvelledataSourcedoit utiliser leseventHandlersetentitiesexistants. -
Si
false: un nouveau gestionnaireentity&eventdoit être créé avec${dataSourceName}{EventName}.
-
-
L’adresse du contrat sera écrite dans le fichier
networks.jsonpour le réseau concerné.
Note : Lorsque vous utilisez la CLI interactive, après avoir exécuté graph init avec succès, vous serez invité à ajouter une nouvelle dataSource.
Récupération des ABIs
Le(s) fichier(s) ABI doivent correspondre à votre(vos) contrat(s). Il existe plusieurs façons d’obtenir des fichiers ABI :
- Si vous construisez votre propre projet, vous aurez probablement accès à vos ABI les plus récents.
- Si vous construisez un Subgraph pour un projet public, vous pouvez télécharger ce projet sur votre ordinateur et obtenir l’ABI en utilisant [
npx hardhat compile] (https://hardhat.org/hardhat-runner/docs/guides/compile-contracts#compiling-your-contracts) ou en utilisantsolcpour compiler. - Vous pouvez également trouver l’ABI sur [Etherscan] (https://etherscan.io/), mais ce n’est pas toujours fiable, car l’ABI qui y est téléchargé peut être obsolète. Assurez-vous d’avoir le bon ABI, sinon l’exécution de votre Subgraph échouera.