Docs
La Recherche⌘ K
  • Accueil
  • À propos de The Graph
  • Réseaux pris en charge
  • Contrats du Protocole
  • Subgraphs
    • Substreams
      • Token API
        • AI Suite
          • Indexing
            • Resources
              Subgraphs > Developing

              7 minutes

              FAQ pour les développeurs

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

              Relatif aux Subgraphs

              1. Qu’est-ce qu’un Subgraph ?

              Un Subgraph est une API personnalisée construite sur les données de la blockchain. Les Subgraphs sont interrogés à l’aide du langage de requête GraphQL et sont déployés dans un Graph Node à l’aide de l’interface CLI de The Graph. Une fois déployés et publiés sur le réseau décentralisé de The Graph, les Indexeurs traitent les Subgraphs et les mettent à la disposition des consommateurs de Subgraphs pour qu’ils les interrogent.

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

              Pour créer un Subgraph avec succès, vous devez installer Graph CLI. Consultez le Démarrage rapide pour commencer. Pour des informations plus détaillées, voir Créer un Subgraph.

              3. Puis-je créer un Subgraph si mes contrats intelligents n’ont pas d’événements ?

              Il est fortement recommandé de structurer vos contrats intelligents pour avoir des événements associés aux données que vous êtes intéressé à interroger. Les gestionnaires d’événements du Subgraph sont déclenchés par les événements du 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. Cette méthode n’est toutefois pas recommandée, car elle ralentit considérablement les performances.

              4. Puis-je changer le compte GitHub associé à mon Subgraph ?

              Non. Une fois qu’un Subgraph est créé, le compte GitHub associé ne peut pas être modifié. Veillez à bien prendre en compte ce point avant de créer votre Subgraph.

              5. Comment mettre à jour un Subgraph sur le réseau principal ?

              Vous pouvez déployer une nouvelle version de votre Subgraph dans Subgraph Studio à l’aide de l’interface de commande. Cette action maintient votre Subgraph privé, mais une fois que vous en êtes satisfait, vous pouvez le publier dans Graph Explorer. Cela créera une nouvelle version de votre Subgraph sur laquelle les Curateurs pourront commencer à émettre des signaux.

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

              Vous devez redéployer le Subgraph, mais si l’ID du Subgraph (hash IPFS) ne change pas, il ne sera pas nécessaire de le synchroniser depuis le début.

              7. Comment appeler une fonction du contrat ou accéder à une variable d’état publique à partir de mes mappages de Subgraphs ?

              Jetez un œil à l’état Accès au contrat intelligent dans la section API AssemblyScript.

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

              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 ?

              Dans un Subgraph, les événements sont toujours traités dans l’ordre dans lequel ils apparaissent dans les blocs, qu’il s’agisse ou non de contrats multiples.

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

              Les modèles vous permettent de créer rapidement des sources de données pendant que votre subgraph est indexé. Votre contrat peut engendrer de nouveaux contrats au fur et à mesure que les gens interagissent avec lui. Puisque vous connaissez la forme de ces contrats (ABI, événements, etc.) à l’avance, vous pouvez définir comment vous voulez les indexer dans un modèle. Lorsqu’ils sont créés, votre subgraph crée 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 sources de données.

              11. 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 lancé graph init ?

              Oui. Dans la commande graph init elle-même, vous pouvez ajouter plusieurs sources de données en entrant des 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 ?

              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 ?

              Vous pouvez exécuter la commande suivante :

              1docker 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 ?

              Si une seule entité est créée pendant l’événement et s’il n’y a rien de mieux disponible, alors le hash de la transaction + l’index du journal seront uniques. Vous pouvez les obscurcir en les convertissant en Bytes et en les faisant passer par crypto.keccak256, mais cela ne les rendra pas plus uniques.

              15. Puis-je supprimer mon Subgraph ?

              Oui, vous pouvez supprimer et transférer votre Subgraph.

              Relatif au Réseau

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

              Vous pouvez trouver la liste des réseaux pris en charge ici.

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

              Oui, vous pouvez le faire en important graph-ts comme dans l’exemple ci-dessous :

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

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

              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 & L’interrogation

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

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

              20. Quelles sont les astuces pour améliorer la performance de l’indexation ? La synchronisation de mon Subgraph prend beaucoup de temps

              Oui, vous devriez jeter un coup d’œil à la fonctionnalité optionnelle de bloc de démarrage pour commencer l’indexation à partir du bloc où le contrat a été déployé : Start blocks

              21. Existe-t-il un moyen d’interroger directement le Subgraph pour connaître le dernier numéro de bloc qu’il a indexé ?

              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 :

              1curl -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?

              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 :

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

              23. Si mon application décentralisée (dapp) utilise The Graph pour effectuer des requêtes, dois-je écrire ma clé API directement dans le code du frontend ? Et si nous payons les frais de requête pour les utilisateurs – des utilisateurs malveillants pourraient-ils faire augmenter considérablement nos frais de requête ?

              Actuellement, l’approche recommandée pour une 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.

              Divers

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

              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?

              • graph-node⁠
              • graph-tooling⁠
              • graph-docs⁠
              • graph-client⁠
              ⁠Edit on GitHub⁠

              Suppression d'un SubgraphFacturation
              On this page
              • Relatif aux Subgraphs
              • 1. Qu’est-ce qu’un Subgraph ?
              • 2. Quelle est la première étape pour créer un Subgraph ?
              • 3. Puis-je créer un Subgraph si mes contrats intelligents n’ont pas d’événements ?
              • 4. Puis-je changer le compte GitHub associé à mon Subgraph ?
              • 5. Comment mettre à jour un Subgraph sur le réseau principal ?
              • 6. Est-il possible de dupliquer un Subgraph vers un autre compte ou un autre endpoint sans le redéployer ?
              • 7. Comment appeler une fonction du contrat ou accéder à une variable d’état publique à partir de mes mappages de Subgraphs ?
              • 8. Puis-je importer ethers.js ou d’autres bibliothèques JS dans mes mappages de Subgraphs ?
              • 9. Lorsqu’on écoute plusieurs contrats, est-il possible de sélectionner l’ordre des contrats pour écouter les événements ?
              • 10. En quoi les modèles sont-ils différents des sources de données ?
              • 11. 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 lancé graph init ?
              • 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 ?
              • 13. Comment puis-je m’assurer que j’utilise la dernière version de graph-node pour mes déploiements en local ?
              • 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 ?
              • 15. Puis-je supprimer mon Subgraph ?
              • Relatif au Réseau
              • 16. Quels réseaux sont supportés par The Graph?
              • 17. Est-il possible de faire la différence entre les réseaux (mainnet, Sepolia, local) dans les gestionnaires d’événements?
              • 18. Prenez-vous en charge les gestionnaires de blocs et d’appels sur Sepolia?
              • En rapport avec L’Indexation & L’interrogation
              • 19. Est-il possible de spécifier à partir de quel bloc commencer l’indexation?
              • 20. Quelles sont les astuces pour améliorer la performance de l’indexation ? La synchronisation de mon Subgraph prend beaucoup de temps
              • 21. Existe-t-il un moyen d’interroger directement le Subgraph pour connaître le dernier numéro de bloc qu’il a indexé ?
              • 22. Existe-t-il une limite au nombre d’objets que The Graph peut retourner par requête?
              • 23. Si mon application décentralisée (dapp) utilise The Graph pour effectuer des requêtes, dois-je écrire ma clé API directement dans le code du frontend ? Et si nous payons les frais de requête pour les utilisateurs – des utilisateurs malveillants pourraient-ils faire augmenter considérablement nos frais de requête ?
              • Divers
              • 24. Est-il possible d’utiliser Apollo Federation sur graph-node?
              • 25. Je veux contribuer ou ajouter un problème GitHub. Où puis-je trouver les dépôts open source?
              The GraphStatusTestnetActifs de la MarqueForumSécuritéPolitique de confidentialitéConditions d'utilisation