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@latest
En utilisant yarn
1yarn global add @graphprotocol/graph-cli
La 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
NewGravatar
ouUpdateGravatar
à chaque fois que des avatars sont créés ou mis à jour. -
Le Subgraph gère ces événements en écrivant des entités
Gravatar
dans 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-entities
identifie comment le développeur souhaite gérer les conflits de noms entreentity
etevent
:-
Si
true
: la nouvelledataSource
doit utiliser leseventHandlers
etentities
existants. -
Si
false
: un nouveau gestionnaireentity
&event
doit être créé avec${dataSourceName}{EventName}
.
-
-
L’adresse du contrat sera écrite dans le fichier
networks.json
pour 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 utilisantsolc
pour 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.