# Suivre les transferts d'un Fan Token

Le suivi des mouvements des Fan Tokens sur Chiliz Chain est un excellent moyen de surveiller l’activité de vos tokens préférés. En l’utilisant comme brique de base pour un tableau de bord potentiel, vous pouvez structurer les données afin de fournir des informations sur ce qui est populaire et ce qui ne l’est pas.

Lorsque l’on suit les mouvements des Fan Tokens™, on se heurte rapidement à un défi : lire les données directement depuis la blockchain est efficace pour l’état actuel («*Quel est le solde du portefeuille X ?* »), mais inefficace pour les données historiques («*Montrez-moi tous les transferts impliquant le portefeuille X au cours de l’année écoulée*").

Pour résoudre cela, nous pouvons utiliser des sous-graphes.

## À propos des sous-graphes

Un sous-graphe est une API personnalisée qui extrait des données d’une blockchain, les traite et les stocke afin qu’elles puissent être interrogées facilement.\
Au lieu de demander à la blockchain d’analyser des millions de blocs à chaque fois que vous avez besoin de données, un sous-graphe indexe des événements spécifiques au fur et à mesure qu’ils se produisent et les stocke dans une base de données.

Chiliz Chain prend en charge les protocoles d’indexation standard du secteur. Vous pouvez choisir le fournisseur qui correspond le mieux aux besoins de votre projet :

* [The Graph](https://thegraph.com/) : la norme du secteur pour l’indexation décentralisée. Elle vous permet de déployer votre sous-graphe sur un réseau décentralisé d’indexeurs.
* [Goldsky](https://goldsky.com/) : un service d’indexation hébergé haute performance. Il est entièrement compatible avec le code de The Graph (vous pouvez souvent utiliser exactement le même code), mais offre des vitesses d’indexation plus rapides et des fonctionnalités de diffusion de données en temps réel.

Les deux outils utilisent le même framework de développement, donc la plupart des étapes de cette page peuvent s’appliquer aux deux.

Voyons par exemple comment nous pourrions suivre les transferts du PSG Fan Token...

## 0. Choisir un outil

Vous pouvez déployer un sous-graphe sur Chiliz Chain en utilisant **The Graph** (réseau décentralisé) ou **Goldsky** (indexeur hébergé). La structure du code est identique ; seules les commandes de déploiement diffèrent.

Bien sûr, vous pouvez vous appuyer sur leur propre documentation :

{% embed url="<https://thegraph.com/docs/en/subgraphs/quick-start/>" %}

{% embed url="<https://docs.goldsky.com/subgraphs/deploying-subgraphs>" %}

## 1. Initialiser un projet de sous-graphe

The Graph et Goldsky proposent tous deux des méthodes basées sur la CLI pour créer votre graphe.

{% hint style="info" %}
The Graph propose [Subgraph Studio](https://thegraph.com/studio/), auquel vous pouvez vous connecter via votre Web3, puis créer un sous-graphe via l’interface.

Goldsky vous fournit un [tableau de bord](https://app.goldsky.com/) lorsque vous créez un compte, à partir duquel vous pouvez créer un sous-graphe.
{% endhint %}

### Installer le Graph CLI⁠

Sur votre machine locale, exécutez la commande suivante :

```bash
npm install -g @graphprotocol/graph-cli
```

{% hint style="info" %}
Vous pouvez créer un sous-graphe à l’aide de l’outil CLI de The Graph, que ce soit pour des sous-graphes décentralisés de The Graph ou pour des sous-graphes hébergés par Goldsky.

Goldsky dispose de son propre outil CLI, dont vous aurez besoin si vous souhaitez déployer sur Goldsky (voir ci-dessous).
{% endhint %}

### Initialisez votre sous-graphe⁠

Vous pouvez le copier directement depuis la page de votre sous-graphe pour inclure le slug spécifique de votre sous-graphe :

```bash
graph init --studio <SUBGRAPH_SLUG>
```

Le `La balise` --studio

est facultative.

```bash
Dans notre exemple du PSG Fan Token, nous pouvons utiliser :
```

Il vous sera demandé de fournir quelques informations sur votre sous-graphe, comme ceci :

<figure><img src="/files/5305a328742389c3f4f0925bb548e6e02190276d" alt=""><figcaption></figcaption></figure>

Vous devez avoir votre contrat vérifié sur l’explorateur de blocs, et la CLI récupérera automatiquement l’ABI et configurera votre sous-graphe. Les paramètres par défaut généreront une entité pour chaque événement.

{% hint style="warning" %}
Remarque :

* Si le contrat utilise un proxy, comme c’est le cas pour le PSG Fan Token, utilisez plutôt l’adresse du contrat d’implémentation. Vous la verrez dans l’onglet « Lire/écrire le contrat » sur la page de l’explorateur de blocs du contrat. Par exemple, [voir ici le contrat du PSG Fan token sur Chiliz Block Explorer](https://scan.chiliz.com/token/0xc2661815C69c2B3924D3dd0c2C1358A1E38A3105?tab=read_write_contract).
  * Si vous avez dû saisir l’adresse du contrat d’implémentation d’un proxy, alors une fois le projet configuré, allez dans le fichier manifeste (`subgraph.yaml`) et changez l’adresse du contrat en l’adresse du proxy.
* Si le bloc de départ n’est pas récupéré automatiquement, vous pouvez saisir manuellement le numéro de bloc où le contrat a été créé. Vous pouvez l’obtenir depuis l’explorateur de blocs.
  {% endhint %}

{% hint style="info" %}
Lorsque vous apportez des modifications à votre sous-graphe, vous travaillerez principalement avec trois fichiers :

* Le manifeste (`subgraph.yaml`) : définit quelles sources de données votre sous-graphe indexera.
* Le schéma (`schema.graphql`) : définit quelles données vous souhaitez récupérer à partir du sous-graphe.
* Les mappings AssemblyScript (`mapping.ts`) : traduisent les données de vos sources de données en entités définies dans le schéma.
  {% endhint %}

Ouvrez `subgraph.yaml` et assurez-vous que votre fichier manifeste pointe vers le bon réseau :

```yaml
dataSources:
  - kind: ethereum
    name: FanToken
    network: chiliz  # Utilisez 'chiliz' pour le Mainnet, chiliz-testnet pour Spicy
    source:
      address: "0x..." 
      abi: FanToken
```

### Compiler votre sous-graphe

Enfin, compilez votre sous-graphe pour vous assurer qu’il n’y a pas d’erreurs :

```bash
graph codegen && graph build
```

## 2. Déployer et publier

Une fois votre sous-graphe construit, choisissez votre fournisseur pour le déployer.

{% columns %}
{% column %}
**The Graph**

1. Connectez-vous à [Subgraph Studio](https://thegraph.com/studio/), créez un sous-graphe et copiez votre clé de déploiement.
2. Authentifiez-vous via la CLI :\
   `graph auth --studio <DEPLOY_KEY>`
3. Déployez votre sous-graphe dans Subgraph Studio :\
   `graph deploy --studio <SUBGRAPH_SLUG>`
4. Allez dans Studio, ouvrez votre sous-graphe et cliquez sur « Publish » pour frapper votre sous-graphe sur le réseau décentralisé.\
   Cela déclenchera une transaction via votre portefeuille pour publier votre sous-graphe sous forme de NFT sur le réseau Arbitrum One.
   {% endcolumn %}

{% column %}
**Goldsky**

1. Allez à [Goldsky](https://app.goldsky.com/), créez une clé API dans « Paramètres du projet », puis connectez-vous via la CLI.
2. Installez le `goldsky` commande :\
   `curl https://goldsky.com | sh`\
   Puis authentifiez-vous via la CLI :\
   `goldsky login`
3. Téléchargez votre sous-graphe vers Goldsky :\
   `goldsky subgraph deploy / --path`

Les sous-graphes Goldsky sont actifs immédiatement après le déploiement. Aucune étape supplémentaire de publication n’est requise.
{% endcolumn %}
{% endcolumns %}

{% hint style="info" %}
Il vous sera demandé un libellé de version. Vous pouvez entrer quelque chose comme `v0.0.1`, mais vous êtes libre de choisir le format. Une fois cela fait, vous verrez le sous-graphe commencer à se synchroniser sur la page Studio.
{% endhint %}

{% hint style="info" %}
Les contrats intelligents de The Graph sont tous sur [Arbitrum One](https://arbitrum.io/arbitrum-101), même si votre sous-graphe indexe des données provenant de Chiliz Chain.
{% endhint %}

## 3. Interroger votre sous-graphe

Félicitations ! Vous pouvez maintenant commencer à l’interroger en envoyant une requête GraphQL dans l’URL de requête du sous-graphe, que vous pouvez trouver dans le tableau de bord du service choisi.

Exemple :

{% columns %}
{% column %}
**The Graph**

`https://gateway-arbitrum.network.thegraph.com/api/[APIKEY]/subgraphs/id/[ID]`
{% endcolumn %}

{% column %}
**Goldsky**

`https://api.goldsky.com/api/public/project_[KEY]/subgraphs/[SLUG]/1.0.0/gn`
{% endcolumn %}
{% endcolumns %}

Vous n’avez plus qu’à renseigner vos informations pour commencer à envoyer des requêtes GraphQL à cet endpoint.

## Annexes

### Requête d’exemple

Cette requête montre toutes les transactions du PSG Fan Token.

```typescript
const axios = require('axios');

// La requête GraphQL (identique pour les deux fournisseurs)
const graphqlQuery = `{
  transfers {
    depuis
    vers
    value
    transactionHash
  }
}`;

// Choisissez le bon format d’URL selon le fournisseur :
// const queryUrl = 'https://gateway-arbitrum.network.thegraph.com/api/[api-key]/subgraphs/id/[id]'
// const queryUrl = 'https://api.goldsky.com/api/public/project_[key]/subgraphs/[slug]/1.0.0/gn';

const graphQLRequest = {
  method: 'post',
  url: queryUrl,
  data: {
    query: graphqlQuery,
  },
};

// Envoyer la requête GraphQL
axios(graphQLRequest)
  .then((response) => {
    // Gérer la réponse ici
    const data = response.data.data
    console.log(data)

  })
  .catch((error) => {
    // Gérer les erreurs
    console.error(error);
  });
```

### Code d’exemple

```json
{
  "data": {
    "transfers": [
      {
        "from": "0x26a3e78fa4d2cbebf6b59b2f84b8fb7c61b52d28",
        "to": "0xdca23d02923d01779fb22959bd2575d64eab4535",
        "value": "1500",
        "transactionHash": "0x000309e9cd3f550e8965381bbd83a35c5cee18f26c33a357f9dbb57450d594ea"
      },
//      ...
  }
}
```

Le fait de le transmettre à l’URL de requête renvoie ce résultat :

```json
{
  transfers {
    depuis
    vers
    value
    transactionHash
  }
}
```

## Ressources supplémentaires

Pour plus d’informations sur l’interrogation des données de votre sous-graphe avec GraphQL :

{% embed url="<https://thegraph.com/docs/en/subgraphs/querying/best-practices/>" %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.chiliz.com/fr-ai/develop/advanced/follow-transfers-of-a-fan-token.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
