> ## 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 getInflationReward

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

La méthode RPC [`getInflationReward`](https://www.helius.dev/docs/api-reference/rpc/http/getinflationreward) vous permet d'interroger les récompenses d' [inflation](https://www.helius.dev/blog/solana-issuance-inflation-schedule) (communément appelées récompenses de staking) qui ont été créditées à une ou plusieurs adresses pour une époque spécifique.

Cela est utile pour vérifier les récompenses reçues par les comptes de staking ou tout compte qui pourrait avoir reçu des récompenses d'inflation.

<Warning>
  **Évitez le traitement par lots pour de meilleures performances**

  Le traitement par lots des méthodes archivées augmente considérablement la latence. Les lots de plus de 10 requêtes ne sont pas autorisés.
</Warning>

## Cas d'utilisation courants

* **Vérifier les récompenses de staking :** Vérifiez si un compte de staking a reçu les récompenses attendues pour une époque passée.
* **Suivre l'historique des récompenses :** Interrogez les récompenses pour plusieurs époques afin de construire un historique pour une adresse.
* **Auditer les paiements des validateurs :** Les validateurs peuvent l'utiliser pour vérifier la distribution des récompenses (bien que les récompenses soient versées aux comptes de staking, et non directement aux identités des validateurs).

## Paramètres de la requête

La méthode prend deux principaux paramètres :

1. **`addresses`** (tableau de chaînes) : Une liste de clés publiques encodées en base-58 pour les comptes que vous souhaitez interroger. Le nombre maximum d'adresses autorisées peut varier en fonction du fournisseur RPC (par exemple, Helius permet jusqu'à 1005 pour les plans payants).
2. **`config`** (objet, optionnel) : Un objet de configuration avec les champs optionnels suivants :
   * **`commitment`** (chaîne, optionnel) : Spécifie le [niveau de commitment](https://www.helius.dev/blog/solana-commitment-levels). Défaut à `finalized` si non fourni.
   * **`epoch`** (entier, optionnel) : Le numéro d'époque pour lequel récupérer les récompenses. Si omis, le nœud RPC utilisera généralement l'époque la plus récemment complétée pour laquelle les récompenses ont été distribuées.
   * **`minContextSlot`** (entier, optionnel) : Le slot minimum auquel la requête peut être évaluée. Cela garantit que la requête est effectuée contre un état de grand livre qui a traité jusqu'à au moins ce slot.

## Structure de la réponse

Le champ `result` de la réponse JSON-RPC sera un tableau correspondant au tableau d'entrée `addresses`. Chaque élément du tableau de résultats sera soit :

* Un **objet** contenant les détails de la récompense d'inflation si l'adresse a reçu une récompense pour l'époque spécifiée.
* **`null`** si l'adresse n'a pas reçu de récompense d'inflation pour cette époque ou si le compte n'existait pas.

L'objet de récompense a les champs suivants :

* **`epoch`** (u64) : L'époque pour laquelle cette récompense a été créditée.
* **`effectiveSlot`** (u64) : Le slot dans lequel la récompense a été appliquée et est devenue effective.
* **`amount`** (u64) : Le montant de la récompense, en lamports.
* **`postBalance`** (u64) : Le solde du compte, en lamports, après que la récompense ait été créditée.
* **`commission`** (u8 | indéfini) : Pour les comptes de vote, il s'agit du pourcentage de commission (0-100) pris par le validateur au moment où la récompense a été créditée. Ce sera `undefined` pour les comptes non-vote.

## Exemples

### 1. Obtenir la récompense d'inflation pour une seule adresse (Époque précédente)

Cet exemple récupère la récompense d'inflation pour une adresse spécifique pour l'époque la plus récemment complétée.

<CodeGroup>
  ```bash cURL theme={"system"}
  # Replace YOUR_VOTE_ACCOUNT_PUBKEY with an actual vote account public key
  # Replace <api-key> with your Helius API key
  curl https://mainnet.helius-rpc.com/?api-key=<api-key> -X POST -H "Content-Type: application/json" -d \
    '{
      "jsonrpc": "2.0",
      "id": 1,
      "method": "getInflationReward",
      "params": [
        ["YOUR_VOTE_ACCOUNT_PUBKEY"]
      ]
    }'
  ```

  ```javascript JavaScript (using @solana/web3.js) theme={"system"}
  // Replace YOUR_VOTE_ACCOUNT_PUBKEY with an actual vote account public key
  // Replace <api-key> with your Helius API key
  const { Connection, PublicKey } = require('@solana/web3.js');

  async function checkInflationReward() {
    const connection = new Connection('https://mainnet.helius-rpc.com/?api-key=<api-key>');
    const voteAccountPubkey = new PublicKey('YOUR_VOTE_ACCOUNT_PUBKEY'); // Example: 'Vote111111111111111111111111111111111111111'

    try {
      const rewards = await connection.getInflationReward([voteAccountPubkey]);
      if (rewards && rewards[0]) {
        const rewardInfo = rewards[0];
        console.log(`Reward for Epoch ${rewardInfo.epoch}:`);
        console.log(`  Amount: ${rewardInfo.amount} lamports`);
        console.log(`  Effective Slot: ${rewardInfo.effectiveSlot}`);
        console.log(`  Post Balance: ${rewardInfo.postBalance} lamports`);
        if (rewardInfo.commission !== undefined) {
          console.log(`  Commission: ${rewardInfo.commission}%`);
        }
      } else {
        console.log('No inflation reward found for the address in the previous epoch.');
      }
      // console.log(JSON.stringify(rewards, null, 2));
    } catch (error) {
      console.error('Error fetching inflation reward:', error);
    }
  }

  checkInflationReward();
  ```
</CodeGroup>

### 2. Obtenir les récompenses d'inflation pour plusieurs adresses pour une époque spécifique

<CodeGroup>
  ```bash cURL theme={"system"}
  # Replace <api-key> with your Helius API key
  # Replace PUBKEY_1 and PUBKEY_2 with actual public keys
  curl https://mainnet.helius-rpc.com/?api-key=<api-key> -X POST -H "Content-Type: application/json" -d \
    '{
      "jsonrpc": "2.0",
      "id": 1,
      "method": "getInflationReward",
      "params": [
        ["PUBKEY_1", "PUBKEY_2"],
        { "epoch": 450, "commitment": "confirmed" }
      ]
    }'
  ```

  ```javascript JavaScript (using @solana/web3.js) theme={"system"}
  // Replace <api-key> with your Helius API key
  // Replace PUBKEY_1 and PUBKEY_2 with actual public keys
  const { Connection, PublicKey } = require('@solana/web3.js');

  async function checkMultipleRewards() {
    const connection = new Connection('https://mainnet.helius-rpc.com/?api-key=<api-key>');
    const address1 = new PublicKey('PUBKEY_1'); 
    const address2 = new PublicKey('PUBKEY_2');
    const specificEpoch = 450;

    try {
      const rewards = await connection.getInflationReward(
        [address1, address2],
        specificEpoch,
        { commitment: 'confirmed' }
      );
      rewards.forEach((rewardInfo, index) => {
        const address = index === 0 ? 'PUBKEY_1' : 'PUBKEY_2';
        if (rewardInfo) {
          console.log(`Reward for ${address} in Epoch ${rewardInfo.epoch}:`);
          console.log(`  Amount: ${rewardInfo.amount} lamports`);
        } else {
          console.log(`No inflation reward found for ${address} in Epoch ${specificEpoch}.`);
        }
      });
      // console.log(JSON.stringify(rewards, null, 2));
    } catch (error) {
      console.error('Error fetching inflation rewards for epoch ', specificEpoch, error);
    }
  }

  checkMultipleRewards();
  ```
</CodeGroup>

## Conseils pour les développeurs

* **Spécificité des époques :** Les récompenses sont créditées une fois par époque. Assurez-vous de demander le bon numéro d'époque.
* **Timing des récompenses :** Les récompenses d'inflation sont calculées à la fin d'une époque et appliquées au début de la suivante. `effectiveSlot` indique quand cela se produit.
* **Résultats nuls :** Un résultat `null` pour une adresse signifie qu'aucune récompense n'a été trouvée pour cette adresse à l'époque spécifiée. Cela pourrait être dû au fait que le compte n'était pas éligible (par exemple, pas un compte de staking suffisamment misé), que la récompense était nulle, ou que le compte n'existait pas à ce moment-là.
* **Limites de taux :** Soyez attentif aux limites de taux des fournisseurs RPC, surtout lorsque vous interrogez un grand nombre d'adresses.

Ce guide vous aide à utiliser la méthode `getInflationReward` pour récupérer et vérifier avec précision les récompenses de staking sur le réseau Solana.
