Installation du Graph CLI
Reading time: 5 minutes
Pour 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 à 3 Indexeurs. Pour en savoir plus sur la signalisation, consultez curation.
Aperçu
Graph CLI est une interface de ligne de commande qui facilite les commandes des développeurs pour The Graph. Il traite un manifeste de subgraph et compile les mappages pour créer les fichiers dont vous aurez besoin pour déployer le subgraph sur Subgraph Studio et 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
npm install -g @graphprotocol/graph-cli@latest
En utilisant yarn
yarn global add @graphprotocol/graph-cli
La commande graph init
peut être utilisée pour configurer un nouveau projet de subgraph, soit à partir d’un contrat existant, soit à partir d’un exemple de subgraph. Si vous avez déjà déployé un contrat intelligent 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 :
graph init \ --product subgraph-studio --from-contract <ADRESSE_DU_CONTRAT> \ [--network <RESEAU_ETHEREUM>] \ [--abi <FICHIER>] \ <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’ID 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 initialise un nouveau projet à partir d’un exemple de subgraph :
graph 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 dataSources
sont des composants clés des subgraphs. Ils définissent les sources de données que le subgraphs indexe et traite. Une dataSource
spécifie quel smart contract doit être écouté, quels événements doivent être traités 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
:
graph add <address> [<subgraph-manifest default: "./subgraph.yaml">]Options: --abi <path> Chemin d'accès à l'ABI du contrat (par défaut : téléchargement à partir d'Etherscan) --contract-name Nom du contrat (par défaut : Contrat) --merge-entities Fusionner ou non les entités portant le même nom (par défaut : false) --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
ou en utilisantsolc
pour compiler. - Vous pouvez également trouver l’ABI sur Etherscan, 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.
Versions disponibles de SpecVersion
Version | Notes de version |
---|---|
1.2.0 | Ajout de la prise en charge du filtrage des arguments indexés et de la déclaration eth_call |
1.1.0 | Prend en charge Timeseries & Aggregations. Ajout de la prise en charge du type Int8 pour id . |
1.0.0 | Prend en charge la fonctionnalité indexerHints pour élaguer les subgraphs |
0.0.9 | Prend en charge la fonctionnalité endBlock |
0.0.8 | Ajout de la prise en charge des gestionnaires de blocs et des gestionnaires d’initialisation d’interrogation. |
0.0.7 | Ajout de la prise en charge des fichiers sources de données. |
0.0.6 | Prend en charge la variante de calcul rapide de la Preuve d’indexation. |
0.0.5 | Ajout de la prise en charge des gestionnaires d’événement ayant accès aux reçus de transactions. |
0.0.4 | Ajout de la prise en charge du management des fonctionnalités de subgraph. |