subgraphs > Developing > FAQ

FAQs pour les développeurs

Reading time: 7 min

Cette page résume certaines des questions les plus courantes pour les développeurs construisant sur The Graph.

Relatif aux Subgraphs

Lien vers cette section

1. Qu'est-ce qu'un subgraph ?

Lien vers cette section

Un subgraph est une API personnalisée construite sur des données blockchain. Les subgraphs sont interrogés en utilisant le langage de requête GraphQL et sont déployés sur Graph Node en utilisant Graph CLI. Une fois déployés et publiés sur le réseau décentralisé de The Graph, les Indexeurs traitent les subgraphs et les rendent disponibles pour que les consommateurs de subgraphs puissent les interroger.

2. Quelle est la première étape pour créer un subgraph ?

Lien vers cette section

Pour créer avec succès un subgraph, vous devrez installer Graph CLI. Consultez le guide de démarrage rapide pour commencer. Pour des informations détaillées, voir Création d'un subgraph.

3. Suis-je toujours en mesure de créer un subgraph si mes smart contracts n'ont pas d'événements ?

Lien vers cette section

Il est fortement recommandé de structurer vos smart contracts pour avoir des événements associés aux données que vous souhaitez interroger. Les gestionnaires d'événements du subgraph sont déclenchés par des événements de contrat et constituent le moyen le plus rapide de récupérer des données utiles.

Si les contrats avec lesquels vous travaillez ne contiennent pas d'événements, votre subgraph peut utiliser des gestionnaires d'appels et de blocs pour déclencher l'indexation. Cependant, ceci n'est pas recommandé, car les performances seront nettement plus lentes.

4. Puis-je modifier le compte GitHub associé à mon subgraph ?

Lien vers cette section

Non. Une fois un subgraph créé, le compte GitHub associé ne peut pas être modifié. Veuillez vous assurer de bien prendre en compte ce détail avant de créer votre subgraph.

5. Comment mettre à jour un subgraph sur le mainnet ?

Lien vers cette section

Vous pouvez déployer une nouvelle version de votre subgraph sur Subgraph Studio en utilisant la CLI. Cette action maintient votre subgraph privé, mais une fois que vous en êtes satisfait, vous pouvez le publier sur Graph Explorer. Cela créera une nouvelle version de votre subgraph sur laquelle les Curateurs pourront commencer à signaler.

6. Est-il possible de dupliquer un subgraph vers un autre compte ou endpoint sans le redéployer ?

Lien vers cette section

Vous devez redéployer le subgraph, mais si l'ID de subgraph (hachage IPFS) ne change pas, il n'aura pas à se synchroniser depuis le début.

7. Comment puis-je appeler une fonction d'un contrat ou accéder à une variable d'état publique depuis mes mappages de subgraph ?

Lien vers cette section

Consultez Accès à l'état du contrat intelligent dans la section AssemblyScript API.

8. Puis-je importer ethers.js ou d'autres bibliothèques JS dans mes mappages de subgraph ?

Lien vers cette section

Actuellement non, car les mappages sont écrits en AssemblyScript.

Une solution alternative possible serait de stocker des données brutes dans des entités et à effectuer une logique nécessitant des bibliothèques JS sur le client.

9. Lorsqu'on écoute plusieurs contrats, est-il possible de sélectionner l'ordre des contrats pour écouter les événements ?

Lien vers cette section

Dans un subgraph, les événements sont toujours traités dans l'ordre dans lequel ils apparaissent dans les blocs, que ce soit sur plusieurs contrats ou non.

10. En quoi les modèles sont-ils différents des sources de données ?

Lien vers cette section

Les modèles vous permettent de créer rapidement des sources de données , pendant que votre subgraph est en cours d'indexation. Votre contrat peut générer de nouveaux contrats à mesure que les gens interagissent avec lui. Étant donné que vous connaissez la structure de ces contrats (ABI, événements, etc.) à l'avance, vous pouvez définir comment vous souhaitez les indexer dans un modèle. Lorsqu'ils sont générés, votre subgraph créera une source de données dynamique en fournissant l'adresse du contrat.

Consultez la section "Instanciation d'un modèle de source de données" sur : Modèles de source de données.

11. Est-il possible de configurer un subgraph en utilisant graph init de graph-cli avec deux contrats ? Ou devrais-je ajouter manuellement une autre source de données dans subgraph.yaml après avoir exécuté graph init ?

Lien vers cette section

Oui. Avec la commande graph init elle-même, vous pouvez ajouter plusieurs sources de données en entrant les contrats l'un après l'autre.

Vous pouvez également utiliser la commande graph add pour ajouter une nouvelle source de données.

12. Dans quel ordre les gestionnaires d'événements, de blocs et d'appels sont-ils déclenchés pour une source de données ?

Lien vers cette section

Les gestionnaires d'événements et d'appels sont d'abord classés par index de transaction à l'intérieur du bloc. Les gestionnaires d'événements et d'appels au sein d'une même transaction sont ordonnés selon une convention : d'abord les gestionnaires d'événements, puis les gestionnaires d'appels, chaque type respectant l'ordre défini dans le manifeste. Les gestionnaires de blocs sont exécutés après les gestionnaires d'événements et d'appels, dans l'ordre où ils sont définis dans le manifeste. Ces règles d'ordre sont également susceptibles d'être modifiées.

Lorsque de nouvelles sources de données dynamiques sont créées, les gestionnaires définis pour les sources de données dynamiques ne commenceront à être traités qu'une fois que tous les gestionnaires de sources de données existantes auront été traités, et ils se répéteront dans la même séquence chaque fois qu'ils seront déclenchés.

13. Comment puis-je m'assurer que j'utilise la dernière version de graph-node pour mes déploiements en local ?

Lien vers cette section

Vous pouvez exécuter la commande suivante :

docker pull graphprotocol/graph-node:dernier

Remarque : docker / docker-compose utilisera toujours la version de graph-node qui a été téléchargée la première fois que vous l'avez exécuté, alors assurez-vous d'être à jour avec la dernière version de graph-node.

14. Quelle est la méthode recommandée pour créer des Ids "autogénérés" pour une entité pendant la gestion des événements ?

Lien vers cette section

Si une seule entité est créée lors de l'événement et s'il n'y a rien de mieux disponible,alors le hachage de transaction + index de journal serait unique. Vous pouvez les masquer en les convertissant en octets, puis en les redirigeant vers crypto.keccak256, mais cela ne le rendra pas plus unique.

15. Puis-je supprimer mon subgraph ?

Lien vers cette section

Yes, you can delete and transfer your subgraph.

Relatif au Réseau

Lien vers cette section

16. Quels réseaux sont supportés par The Graph?

Lien vers cette section

Vous pouvez trouver la liste des réseaux supportés ici.

17. Est-il possible de faire la différence entre les réseaux (mainnet, Sepolia, local) dans les gestionnaires d'événements?

Lien vers cette section

Oui. Vous pouvez le faire en important graph-ts comme dans l'exemple ci-dessous :

importez { dataSource } de '@graphprotocol/graph-ts'
dataSource.network()
dataSource.address()

18. Prenez-vous en charge les gestionnaires de blocs et d'appels sur Sepolia?

Lien vers cette section

Oui. Sepolia prend en charge les gestionnaires de blocs, les gestionnaires d'appels et les gestionnaires d'événements. Il convient de noter que les gestionnaires d'événements sont beaucoup plus performants que les deux autres gestionnaires, et ils sont pris en charge sur tous les réseaux compatibles EVM.

En rapport avec l'indexation & les requêtes

Lien vers cette section

19. Est-il possible de spécifier à partir de quel bloc commencer l'indexation?

Lien vers cette section

Oui. dataSources.source.startBlock dans le fichier subgraph.yaml spécifie le numéro du bloc à partir duquel la Source de donnée commence l'indexation. Dans la plupart des cas, nous suggérons d'utiliser le bloc où le contrat a été créé : Blocs de départ

20. Quels sont quelques conseils pour augmenter les performances d'indexation? Mon subgraph prend beaucoup de temps à se synchroniser

Lien vers cette section

Oui, vous devriez consulter la fonctionnalité optionnelle de bloc de départ pour commencer l'indexation à partir du bloc où le contrat a été déployé : Blocs de départ

21. Existe-t-il un moyen d'interroger directement le subgraph pour déterminer le dernier numéro de bloc qu'il a indexé?

Lien vers cette section

Oui ! Essayez la commande suivante, en remplaçant "organization/subgraphName" par l'organisation sous laquelle elle est publiée et le nom de votre subgraphe :

curl -X POST -d '{ "query": "{indexingStatusForCurrentVersion(subgraphName: \"organization/subgraphName\") { chains { latestBlock { hash number }}}}"}' https://api.thegraph.com/ index-node/graphql

22. Existe-t-il une limite au nombre d'objets que The Graph peut retourner par requête?

Lien vers cette section

Par défaut, les réponses aux requêtes sont limitées à 100 éléments par collection. Si vous voulez en recevoir plus, vous pouvez aller jusqu'à 1000 éléments par collection et au-delà, vous pouvez paginer avec :

quelquesCollection(first: 1000, skip: <number>) { ... }

23. If my dapp frontend uses The Graph for querying, do I need to write my API key into the frontend directly? What if we pay query fees for users – will malicious users cause our query fees to be very high?

Lien vers cette section

Actuellement, l'approche recommandée pour un dapp est d'ajouter la clé au frontend et de l'exposer aux utilisateurs finaux. Cela dit, vous pouvez limiter cette clé à un nom d'hôte, comme yourdapp.io et subgraph. La passerelle est actuellement gérée par Edge & Node. Une partie de la responsabilité d'une passerelle est de surveiller les comportements abusifs et de bloquer le trafic des clients malveillants.

24. Est-il possible d'utiliser Apollo Federation sur graph-node?

Lien vers cette section

La fédération n'est pas encore supportée. Pour le moment, vous pouvez utiliser la fusion de schémas, soit sur le client, soit via un service proxy.

25. Je veux contribuer ou ajouter un problème GitHub. Où puis-je trouver les dépôts open source?

Lien vers cette section
  • graph-node
  • l'outil de graph
  • graph-docs
  • graph-client
Modifier une page

Précédente
Delete a Subgraph
Suivante
Facturation
Modifier une page