> For the complete documentation index, see [llms.txt](https://docs.chiliz.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.chiliz.com/fr/developper/notions-avancees/suivre-les-transferts-dun-fan-token.md).

# Suivre les transferts d'un Fan Token

Suivre les mouvements de Fan Tokens sur Chiliz Chain est un excellent moyen de surveiller l'activité de vos tokens favoris. En l'utilisant comme élément de base pour un tableau de bord potentiel, vous pouvez organiser les données pour fournir des insights sur ce qui est populaire et ce qui ne l'est pas.

Lorsque vous suivez les mouvements de Fan Tokens™, vous vous heurtez rapidement à un défi : lire les données directement depuis la blockchain est efficace pour le statut 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 la dernière année*").

Pour résoudre ce problème, nous pouvons utiliser des subgraphs.

## À propos des subgraphs

Un Subgraph est une API personnalisée qui extrait des données d'une blockchain, les traite et les stocke pour qu'elles puissent être facilement interrogées.\
Au lieu de demander à la blockchain de scanner des millions de blocs chaque fois que vous avez besoin de données, un subgraph 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 standards de l'industrie. Vous pouvez choisir le fournisseur qui correspond le mieux aux besoins de votre projet :

* [The Graph](https://thegraph.com/) : Le standard de l'industrie pour l'indexation décentralisée. Il vous permet de déployer votre subgraph 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 streaming 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 subgraph 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 leurs propres documentations :

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

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

## 1. Initialiser un projet de subgraph

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

{% hint style="info" %}
The Graph dispose de [Subgraph Studio](https://thegraph.com/studio/), auquel vous pouvez vous connecter en utilisant votre Web3, puis créer un subgraph via l'interface.

Goldsky vous donne un [tableau de bord](https://app.goldsky.com/) lorsque vous créez un compte, depuis lequel vous pouvez créer un subgraph.
{% endhint %}

### Installer le Graph CLI

Sur votre machine locale, exécutez ce qui suit :

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

{% hint style="info" %}
Vous pouvez créer un subgraph en utilisant l'outil CLI de The Graph, soit pour des subgraphs décentralisés The Graph, soit pour des subgraphs hébergés Goldsky.

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

### Initialiser votre subgraph

Vous pouvez copier ceci directement depuis votre page de subgraph pour inclure votre slug de subgraph spécifique :

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

Le tag `--studio` est optionnel.

Dans notre exemple de PSG Fan Token, nous pouvons utiliser :

```bash
graph init chiliz-psg-fantoken-followup
```

Des informations vous seront demandées sur votre subgraph, comme ceci :

<figure><img src="/files/70aRo3yobADlBpLNL9pH" alt=""><figcaption></figcaption></figure>

Vous devez avoir votre contrat vérifié sur l'explorateur de blocs, et le CLI obtiendra automatiquement l'ABI et configurera votre subgraph. Les paramètres par défaut génèreront une entité pour chaque événement.

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

* Si le contrat utilise un proxy, comme le PSG Fan Token, utilisez alors l'adresse du contrat d'implémentation à la place. Vous la verrez dans l'onglet "Read/write contract" sur la page de l'explorateur de blocs du contrat. Par exemple, [voir ici pour le contrat PSG Fan Token sur Chiliz Block Explorer](https://scan.chiliz.com/token/0xc2661815C69c2B3924D3dd0c2C1358A1E38A3105?tab=read_write_contract).
  * Si vous avez dû entrer l'adresse d'un contrat d'implémentation de proxy, une fois le projet configuré, allez dans le fichier manifeste (`subgraph.yaml`) et changez l'adresse du contrat pour l'adresse du proxy.
* Si le Start Block n'est pas obtenu automatiquement, vous pouvez entrer 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 subgraph, vous travaillerez principalement avec trois fichiers :

* Le Manifeste (`subgraph.yaml`) : Définit les sources de données que votre subgraph va indexer.
* Le Schéma (`schema.graphql`) : Définit les données que vous souhaitez récupérer depuis le subgraph.
* Les Mappings AssemblyScript (`mapping.ts`) : Traduit les données de vos sources de données vers les 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 subgraph

Enfin, compilez votre subgraph pour vous assurer qu'il n'y a pas d'erreurs :

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

## 2. Déployer et publier

Une fois votre subgraph compilé, choisissez votre fournisseur pour le déployer.

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

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

{% column %}
**Goldsky**

1. Allez sur [Goldsky](https://app.goldsky.com/), créez une clé API dans "Project Settings", et connectez-vous via CLI.
2. Installez la commande `goldsky` :\
   `curl https://goldsky.com | sh`\
   Puis authentifiez-vous via le CLI :\
   `goldsky login`
3. Téléversez votre subgraph sur Goldsky :\
   `goldsky subgraph deploy / --path`

Les subgraphs Goldsky sont en ligne immédiatement après le déploiement. Aucune étape de publication supplémentaire n'est requise.
{% endcolumn %}
{% endcolumns %}

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

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

## 3. Interroger votre Subgraph

Félicitations ! Vous pouvez maintenant commencer à l'interroger en passant une requête GraphQL dans l'URL de requête du subgraph, que vous pouvez trouver dans le tableau de bord de votre 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 %}

Maintenant, il vous suffit de remplir vos informations pour commencer à envoyer des requêtes GraphQL à cet endpoint.

## Annexes

### Exemple de requête

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

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

// La requête GraphQL (identique pour les deux fournisseurs)
const graphqlQuery = `{
  transfers {
    from
    to
    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 éventuelles
    console.error(error);
  });
```

### Exemple de code

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

Passer ceci dans l'URL de requête retourne ce résultat :

```json
{
  transfers {
    from
    to
    value
    transactionHash
  }
}
```

## Ressources supplémentaires

Pour plus d'informations sur l'interrogation de données depuis votre subgraph avec GraphQL :

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


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://docs.chiliz.com/fr/developper/notions-avancees/suivre-les-transferts-dun-fan-token.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
