
Graph Query Langage ou GraphQL est un langage de requêtes (query language) et un environnement d'exécution (runtime) open source. Dans l'univers des blockchains, ses propriétés en font le langage de choix pour rechercher et extraire les données de blocs.
Originellement développé par Facebook en 2012, il est désormais la principale alternative aux API REST, les interfaces de programmation applicatives standard du Web.
Caractéristiques
GraphQL fonctionne sur le modèle client-serveur :
- Le client détermine la structure de données de sa requête, qui est envoyée en POST (via HTTP). C'est le client qui met en cache ses requêtes, contrairement aux requêtes REST.
- Le serveur utilise la structure de données pour envoyer sa réponse. Ainsi, le client reçoit exactement les données spécifiées (pas d'under / overfetching).
GraphQL permet donc au client de définir précisément la réponse qu'il souhaite obtenir de la part du serveur : types, champs, et ordre. La réponse à une requête forme alors une arborescence (graphe) d'où le nom du langage. Ce langage est donc beaucoup plus flexible que REST, qui nécessite généralement des requêtes multiples pour obtenir des informations précises et spécifiques.

GraphQL et la blockchain
Les services qui définissent leurs propres schémas GraphQL sont appelés subgraphs. On peut donc construire des API modulaires adaptées aux blockchains : les développeurs de smart contracts utilisent les subgraphs pour requêter leurs données blockchain.
Il faut un service d'indexation des données de bloc pour faciliter le travail des API. C'est par exemple la mission de The Graph (GRT), qui structure les données blockchain en subgraphs. Le leader des indexeurs Web3 est déployé sur plus de 90 chaînes. Ce travail est essentiel, car pour requêter des données blockchain, il faut :
- Analyser les smart contracts et leurs événements ;
- Retrouver et analyser les métadonnées qui se trouvent sur des services de stockage distribué (généralement IPFS) ;
- Agréger les données.
Grâce à son réseau d'indexeurs, The Graph utilise GraphQL pour fournir :
- Des flux de données personnalisés ;
- Les données relatives aux tokens (soldes, pools de liquidité, transactions, etc.)
- Les données historiques.
Tous les subgraphs fournis par The Graph sont open source.

Les API GraphQL pour le Web3
Le leader incontesté du secteur est The Graph et son réseau d'indexeurs décentralisé : https://thegraph.com/
Il existe des services alternatifs, comme :
- BitQuery
- Les subgraphs de Chainstack