Developing > FAQs pour les développeurs

FAQs pour les développeurs

Reading time: 8 min

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

Lien vers cette section

Un subgraph est une API personnalisée construite sur des données de blockchain. Les subgraphs sont interrogés à l'aide du langage de requête GraphQL et sont déployés sur un nœud de graph à l'aide de Graphe CLI . Dès qu'ils sont 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 être interrogés par les consommateurs de subgraphs.

2. Puis-je supprimer mon subgraph ?

Lien vers cette section

Il n'est pas possible de supprimer des subgraphs une fois qu'ils sont créés.

3. Puis-je changer le nom de mon subgraph ?

Lien vers cette section

Non. Une fois qu'un subgraph est créé, son nom ne peut plus être modifié. Assurez-vous d'y réfléchir attentivement avant de créer votre subgraph afin qu'il soit facilement consultable et identifiable par d'autres dapps.

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

Lien vers cette section

Non. Dès qu'un subgraph est créé, le compte GitHub associé ne peut pas être modifié. Assurez-vous d'y réfléchir attentivement avant de créer votre subgraph.

5. 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. Bien que cela ne soit pas recommandé, les performances seront considérablement plus lentes.

6. Est-il possible de déployer un subgraph portant le même nom pour plusieurs réseaux ?

Lien vers cette section

Vous aurez besoin de noms distincts pour plusieurs réseaux. Bien que vous ne puissiez pas avoir différents subgraphs sous le même nom, il existe des moyens pratiques d'avoir une seule base de code pour plusieurs réseaux. Retrouvez plus d'informations à ce sujet dans notre documentation : Déploiement d'un subgraph

7. 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 des sources de données à la volée, pendant l'indexation de votre subgraph. Il se peut que votre contrat engendre de nouveaux contrats au fur et à mesure que les gens interagissent avec lui, et puisque vous connaissez la forme de ces contrats (ABI, événements, etc.) à l'avance, vous pouvez définir comment vous souhaitez les indexer dans un modèle et 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.

8. Comment m'assurer que j'utilise la dernière version de graph-node pour mes déploiements locaux ?

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 extraite la première fois que vous l'avez exécuté, il est donc important de le faire pour vous assurer que vous êtes à jour avec la dernière version de graph-node.

9. Comment appeler une fonction de contrat ou accéder à une variable d'état publique à partir de mes mappages de subgraphs ?

Lien vers cette section

Take a look at Access to smart contract state inside the section AssemblyScript API.

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

Lien vers cette section

Oui. Dans la commande graph init elle-même, vous pouvez ajouter plusieurs sources de données en saisissant les contrats l'un après l'autre. Vous pouvez également utiliser la commande graph add pour ajouter une nouvelle source de données.

11. Je souhaite contribuer ou ajouter un problème GitHub. Où puis-je trouver les référentiels open source ?

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

12. Quelle est la méthode recommandée pour créer des identifiants « générés automatiquement » pour une entité lors du traitement 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.

13. 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.

14. Is it possible to differentiate between networks (mainnet, Sepolia, local) from within event handlers?

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()

15. Do you support block and call handlers on Sepolia?

Lien vers cette section

Yes. Sepolia supports block handlers, call handlers and event handlers. It should be noted that event handlers are far more performant than the other two handlers, and they are supported on every EVM-compatible network.

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

Lien vers cette section

Pas pour le moment, car les mappages sont écrits en AssemblyScript. Une autre solution possible consiste à stocker les données brutes dans des entités et à exécuter une logique qui nécessite des bibliothèques JS du client.

17. Est-il possible de spécifier sur quel bloc démarrer l'indexation ?

Lien vers cette section

Yes. dataSources.source.startBlock in the subgraph.yaml file specifies the number of the block that the data source starts indexing from. In most cases, we suggest using the block in which the contract was created: Start blocks

18. Existe-t-il des astuces pour améliorer les performances de l'indexation ? La synchronisation de mon subgraph prend beaucoup de temps

Lien vers cette section

Oui, vous devriez jeter un coup d'œil à 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

19. 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

20. Quels réseaux sont pris en charge par The Graph ?

Lien vers cette section

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

21. Est-il possible de dupliquer un subgraph sur un autre compte ou point de terminaison sans 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.

22. Est-il possible d'utiliser Apollo Federation au-dessus du graph-node ?

Lien vers cette section

La fédération n'est pas encore supportée, bien que nous souhaitions la prendre en charge à l'avenir. Pour le moment, vous pouvez utiliser l'assemblage de schémas, soit sur le client, soit via un service proxy.

23. Y a-t-il une limite au nombre d'objets que The Graph peut renvoyer 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 souhaitez en recevoir plus, vous pouvez aller jusqu'à 1000 articles par collection et au-delà, vous pouvez paginer avec :

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

24. Si mon interface dapp utilise The Graph pour les requêtes, dois-je écrire ma clé de requête directement dans l'interface ? Et si nous payons des frais de requête pour les utilisateurs : les utilisateurs malveillants rendront-ils nos frais de requête très élevés ?

Lien vers cette section

Actuellement, l'approche recommandée pour une dapp consiste à ajouter la clé à l'interface et à 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.

25. Where do I go to find my current subgraph on the hosted service?

Lien vers cette section

Rendez-vous sur le service hébergé afin de trouver les subgraphs que vous ou d'autres personnes avez déployés sur le service hébergé. Vous pouvez le trouver ici.

26. Will the hosted service start charging query fees?

Lien vers cette section

The Graph ne facturera jamais le service hébergé. The Graph est un protocole décentralisé, et faire payer un service centralisé n'est pas conforme aux valeurs du Graphe. Le service hébergé a toujours été une étape temporaire pour aider à passer au réseau décentralisé. Les développeurs disposeront d'un délai suffisant pour passer au réseau décentralisé lorsqu'ils le souhaiteront.

27. How do I update a subgraph on mainnet?

Lien vers cette section

If you’re a subgraph developer, you can deploy a new version of your subgraph to Subgraph Studio using the CLI. It’ll be private at that point, but if you’re happy with it, you can publish to the decentralized Graph Explorer. This will create a new version of your subgraph that Curators can start signaling on.

28. Dans quel ordre les gestionnaires d'événements, de blocages 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.

When new dynamic data source are created, the handlers defined for dynamic data sources will only start processing after all existing data source handlers are processed, and will repeat in the same sequence whenever triggered.

Modifier une page

Précédente
Cadre pour les tests unitaires
Suivante
FAQ sur les subgraphs alimentés par les sous-flux
Modifier une page