> ## Documentation Index
> Fetch the complete documentation index at: https://www.helius.dev/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Comment utiliser getSupply

> Découvrez les cas d'utilisation de getSupply, des exemples de code, des paramètres de requête, la structure de réponse et des conseils.

La méthode RPC [`getSupply`](https://www.helius.dev/docs/api-reference/rpc/http/getsupply) fournit des informations sur l'offre actuelle de SOL sur le réseau Solana. Elle détaille l'offre totale, l'offre en circulation, l'offre non circulante et peut, optionnellement, lister les comptes non circulants.

## Cas d'utilisation courants

* **Comprendre la Tokenomics du SOL :** Obtenez un instantané de la distribution actuelle du SOL.
* **Analyse économique :** Suivez les changements des métriques de l'offre au fil du temps.
* **Affichage des statistiques du réseau :** Fournissez aux utilisateurs des informations à jour sur l'offre de SOL dans des tableaux de bord ou des explorateurs.
* **Surveillance de l'inflation :** Bien que `getInflationRate` et `getInflationGovernor` fournissent des données d'inflation plus directes, `getSupply` peut offrir un contexte plus large.

## Paramètres de la requête

La méthode `getSupply` accepte un objet de configuration optionnel avec les champs suivants :

1. **`commitment`** (string, optionnel) : Spécifie le [niveau d'engagement](https://www.helius.dev/blog/solana-commitment-levels) pour la requête. Si omis, l'engagement par défaut du nœud RPC est utilisé.
2. **`excludeNonCirculatingAccountsList`** (booléen, optionnel) : Si défini sur `true`, le tableau `nonCirculatingAccounts` sera exclu de la réponse. Par défaut à `false`. Cela peut être utile pour réduire la taille de la réponse si la liste des comptes non circulants individuels n'est pas nécessaire.

**Exemple de configuration :**

```json theme={"system"}
{
  "commitment": "finalized",
  "excludeNonCirculatingAccountsList": true
}
```

## Structure de la réponse

La réponse est un objet JSON avec les champs suivants :

* **`value`** : Un objet contenant les informations sur l'offre :
  * **`total`** (u64) : L'offre totale de SOL en lamports.
  * **`circulating`** (u64) : L'offre circulante de SOL en lamports.
  * **`nonCirculating`** (u64) : L'offre non circulante de SOL en lamports.
  * **`nonCirculatingAccounts`** (tableau de chaînes, optionnel) : Un tableau de clés publiques (en tant que chaînes encodées en base58) de comptes détenant du SOL non circulant. Ce champ est omis si `excludeNonCirculatingAccountsList` était défini sur `true` dans la requête.
* **`context`** : Un objet contenant :
  * **`slot`** (u64) : Le slot auquel l'information a été récupérée.

**Exemple de réponse (avec `excludeNonCirculatingAccountsList: false`) :**

```json theme={"system"}
{
  "jsonrpc": "2.0",
  "result": {
    "context": {
      "slot": 169890374
    },
    "value": {
      "circulating": 423105827585008800,
      "nonCirculating": 123456789012345678, // Example value
      "nonCirculatingAccounts": [
        "Stake11111111111111111111111111111111111111",
        "Vote11111111111111111111111111111111111111",
        // ... other non-circulating accounts
      ],
      "total": 546562616597354478
    }
  },
  "id": 1
}
```

**Exemple de réponse (avec `excludeNonCirculatingAccountsList: true`) :**

```json theme={"system"}
{
  "jsonrpc": "2.0",
  "result": {
    "context": {
      "slot": 169890380
    },
    "value": {
      "circulating": 423105830000000000,
      "nonCirculating": 123456780000000000, // Example value
      "total": 546562610000000000
      // nonCirculatingAccounts field is absent
    }
  },
  "id": 1
}
```

## Exemples de code

<CodeGroup>
  ```bash cURL theme={"system"}
  # Basic Request:
  curl -X POST -H "Content-Type: application/json" -d \
    '{"jsonrpc":"2.0","id":1,"method":"getSupply"}' \
    <YOUR_RPC_URL>

  # Request with excludeNonCirculatingAccountsList:
  curl -X POST -H "Content-Type: application/json" -d \
    '{"jsonrpc":"2.0","id":1,"method":"getSupply", "params": [{"excludeNonCirculatingAccountsList": true}]}' \
    <YOUR_RPC_URL>

  # Request with commitment:
  curl -X POST -H "Content-Type: application/json" -d \
    '{"jsonrpc":"2.0","id":1,"method":"getSupply", "params": [{"commitment": "confirmed", "excludeNonCirculatingAccountsList": false}]}' \
    <YOUR_RPC_URL>
  ```

  ```javascript JavaScript (using @solana/web3.js) theme={"system"}
  const { Connection } = require('@solana/web3.js');

  async function getNetworkSupply() {
    // Replace with your RPC endpoint
    const connection = new Connection('https://mainnet.helius-rpc.com/?api-key=<api-key>');

    try {
      const supplyInfo = await connection.getSupply();
      console.log('Supply Information:', supplyInfo.value);
      console.log('Total SOL:', supplyInfo.value.total / 1_000_000_000); // Convert lamports to SOL
      console.log('Circulating SOL:', supplyInfo.value.circulating / 1_000_000_000);
      console.log('Non-Circulating SOL:', supplyInfo.value.nonCirculating / 1_000_000_000);

      if (supplyInfo.value.nonCirculatingAccounts) {
        console.log('Non-circulating accounts count:', supplyInfo.value.nonCirculatingAccounts.length);
      }

      // Example with options
      const supplyInfoWithoutAccountsList = await connection.getSupply({
        commitment: 'finalized',
        excludeNonCirculatingAccountsList: true,
      });
      console.log('\nSupply Information (excluding non-circulating accounts list):');
      console.log('Total SOL:', supplyInfoWithoutAccountsList.value.total / 1_000_000_000);
      console.log('Circulating SOL:', supplyInfoWithoutAccountsList.value.circulating / 1_000_000_000);

    } catch (error) {
      console.error('Error getting supply information:', error);
    }
  }

  getNetworkSupply();
  ```
</CodeGroup>

## Conseils pour les développeurs

* **Lamports vs. SOL :** Les montants sont retournés en lamports. N'oubliez pas de diviser par `1,000,000,000` (1 SOL = 10^9 lamports) pour convertir en SOL.
* **Actualité des données :** Les données reflètent l'état au slot indiqué dans l'objet `context` et en fonction du niveau d'engagement utilisé.
* **`excludeNonCirculatingAccountsList` :** Utilisez cette option si vous avez seulement besoin des chiffres totaux de l'offre pour optimiser la taille de la réponse et le temps de traitement, surtout si la liste des comptes non circulants est très longue.
* **Valeurs dynamiques :** Les chiffres de l'offre peuvent changer fréquemment en raison de l'émission de tokens (inflation) et des mécanismes de brûlage.

Ce guide devrait vous aider à utiliser efficacement la méthode RPC `getSupply` pour interroger les données d'offre de Solana.

## Méthodes connexes

<CardGroup cols={2}>
  <Card title="getInflationRate" href="/docs/fr/api-reference/rpc/http/getinflationrate">
    Obtenez le taux d'inflation actuel
  </Card>

  <Card title="getInflationGovernor" href="/docs/fr/api-reference/rpc/http/getinflationgovernor">
    Obtenez les paramètres de gouvernance de l'inflation
  </Card>
</CardGroup>
