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

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

La méthode RPC [`getBlockProduction`](https://www.helius.dev/docs/api-reference/rpc/http/getblockproduction) fournit des informations sur la production de blocs dans l'époque actuelle ou une plage de slots spécifiée. Elle peut être utilisée pour récupérer des données pour tous les validateurs ou pour une identité de validateur spécifique. Cela est précieux pour surveiller la performance des validateurs et comprendre les schémas de production de blocs sur le réseau.

## Cas d'utilisation courants

* **Surveillance de la performance des validateurs :** Suivre le nombre de blocs produits et de slots de leader pour un validateur spécifique.
* **Analyse des performances d'une époque :** Obtenir un aperçu de la production de blocs pour tous les validateurs dans l'époque actuelle ou passée.
* **Identification des slots manqués :** Vérifier si des validateurs manquent leurs slots de leader assignés.
* **Vérifications de la santé du réseau :** Collecter des données sur l'efficacité globale de la production de blocs.

## Paramètres de requête

La méthode `getBlockProduction` accepte un objet de configuration optionnel avec les paramètres suivants :

1. **`commitment`** (string, optionnel) : Spécifie le niveau d'engagement à utiliser pour la requête. Si omis, l'engagement par défaut du nœud est utilisé.
2. **`range`** (objet, optionnel) : Définit une plage de slots à interroger.
   * `firstSlot` (u64) : Le premier slot pour récupérer des informations de production de blocs (inclus).
   * `lastSlot` (u64, optionnel) : Le dernier slot pour récupérer des informations de production de blocs (inclus). Si omis, la production des blobs pour l'époque actuelle jusqu'au slot actuel sera retournée.
3. **`identity`** (string, optionnel) : Une clé publique encodée en base58 d'une identité de validateur. Si elle est fournie, la réponse inclura uniquement des informations de production de blocs pour ce validateur spécifique. Si omise, des informations pour tous les validateurs dans la plage spécifiée (ou époque actuelle) sont retournées.

**Remarque :** Au moins un des `identity` ou `range.firstSlot` doit être fourni. Si `identity` n'est pas fourni, le paramètre `range` est requis.

## Structure de la réponse

Le champ `result` de la réponse JSON-RPC sera un objet contenant :

* `context` (objet) :
  * `slot` (u64) : Le slot auquel l'information a été récupérée.
* `value` (objet) :
  * `byIdentity` (objet) : Un objet où les clés sont des chaînes d'identité du validateur (clés publiques encodées en base58), et les valeurs sont des objets contenant :
    * `leaderSlots` (u64) : Le nombre de slots de leader assignés à ce validateur dans la plage/époque interrogée.
    * `blocksProduced` (u64) : Le nombre de blocs produits par ce validateur dans la plage/époque interrogée.
  * `range` (objet) :
    * `firstSlot` (u64) : Le premier slot de la plage interrogée.
    * `lastSlot` (u64) : Le dernier slot de la plage interrogée.

## Conseils pour les développeurs

* **Comprendre les limites d'époque** : Lors de l'interrogation par `identity` sans `range`, les données retournées sont pour l'époque actuelle jusqu'au dernier slot traité par le nœud. Si vous avez besoin de données pour une *époque complète* passée pour un validateur spécifique, vous devrez déterminer les `firstSlot` et `lastSlot` pour cette époque.
* **Disponibilité des données du nœud** : La plage des données historiques de production de blocs peut varier entre les nœuds RPC. Les plages de slots très anciennes peuvent ne pas être disponibles sur tous les nœuds.
* **Surveillance des performances** : `getBlockProduction` est essentiel pour construire des tableaux de bord ou des alertes liées à la disponibilité des validateurs et aux taux de succès de production de blocs.
* **Combinaison avec `getLeaderSchedule`** : Pour une analyse plus approfondie, vous pouvez corréler les données `getBlockProduction` avec la sortie de `getLeaderSchedule` pour voir quels slots de leader spécifiques ont été réalisés ou manqués.
* **Identité vs. Tous les validateurs** : Interroger sans un `identity` peut retourner une grande quantité de données, surtout si aucun `range` ou une large `range` n'est spécifié. Soyez conscient des tailles de réponse et des exigences de traitement.

## Exemples

### 1. Obtenir la production de blocs pour l'époque actuelle (Tous les validateurs)

Cet exemple récupère les données de production de blocs pour tous les validateurs dans l'époque actuelle.

<CodeGroup>
  ```bash cURL theme={"system"}
  curl https://mainnet.helius-rpc.com/?api-key=<api-key> -X POST -H "Content-Type: application/json" -d \\
    '{
      "jsonrpc": "2.0",
      "id": 1,
      "method": "getBlockProduction"
    }'
  ```

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

  async function getEpochBlockProduction() {
    const connection = new Connection('https://mainnet.helius-rpc.com/?api-key=<api-key>');
    try {
      const blockProduction = await connection.getBlockProduction();
      console.log('Block Production for Current Epoch:', JSON.stringify(blockProduction, null, 2));
      // Example: Accessing data for a specific validator (if present)
      // const specificValidatorIdentity = " deaktivCQ2sV2KF1y7n4qX1xUFk6VXL79CdfjrmLdshs"; // Replace with actual identity
      // if (blockProduction.value.byIdentity[specificValidatorIdentity]) {
      //   console.log(\`Data for \${specificValidatorIdentity}:\`, blockProduction.value.byIdentity[specificValidatorIdentity]);
      // }
    } catch (error) {
      console.error('Error fetching block production:', error);
    }
  }

  getEpochBlockProduction();
  ```
</CodeGroup>

### 2. Obtenir la production de blocs pour un validateur spécifique dans l'époque actuelle

Cet exemple récupère la production de blocs pour une identité de validateur spécifique dans l'époque actuelle.

<CodeGroup>
  ```bash cURL theme={"system"}
  # Replace YOUR_VALIDATOR_IDENTITY_PUBKEY with the actual validator's base58 public 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": "getBlockProduction",
      "params": [
        {
          "identity": "YOUR_VALIDATOR_IDENTITY_PUBKEY"
        }
      ]
    }'
  ```

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

  async function getValidatorBlockProduction(validatorIdentity) {
    const connection = new Connection('https://mainnet.helius-rpc.com/?api-key=<api-key>');
    try {
      const blockProduction = await connection.getBlockProduction({ identity: validatorIdentity });
      console.log(\`Block Production for \${validatorIdentity}:\`, JSON.stringify(blockProduction, null, 2));
    } catch (error) {
      console.error(\`Error fetching block production for \${validatorIdentity}:\`, error);
    }
  }

  // Replace with the validator identity you want to query
  const validatorIdentity = "So11111111111111111111111111111111111111112"; // Example: Solana Foundation
  getValidatorBlockProduction(validatorIdentity);
  ```
</CodeGroup>

### 3. Obtenir la production de blocs pour une plage de slots et un validateur spécifiques

Cet exemple récupère les données de production de blocs pour un validateur spécifique dans une plage de slots définie.

<CodeGroup>
  ```bash cURL theme={"system"}
  # Replace YOUR_VALIDATOR_IDENTITY_PUBKEY, START_SLOT, and END_SLOT.
  curl https://mainnet.helius-rpc.com/?api-key=<api-key> -X POST -H "Content-Type: application/json" -d \\
    '{
      "jsonrpc": "2.0",
      "id": 1,
      "method": "getBlockProduction",
      "params": [
        {
          "identity": "YOUR_VALIDATOR_IDENTITY_PUBKEY",
          "range": {
            "firstSlot": START_SLOT, # e.g., 200000000
            "lastSlot": END_SLOT    # e.g., 200010000
          }
        }
      ]
    }'
  ```

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

  async function getValidatorBlockProductionForRange(validatorIdentity, firstSlot, lastSlot) {
    const connection = new Connection('https://mainnet.helius-rpc.com/?api-key=<api-key>');
    try {
      const blockProduction = await connection.getBlockProduction({
        identity: validatorIdentity,
        range: {
          firstSlot: firstSlot,
          lastSlot: lastSlot,
        },
      });
      console.log(\`Block Production for \${validatorIdentity} in range \${firstSlot}-\${lastSlot}:\`, JSON.stringify(blockProduction, null, 2));
    } catch (error) {
      console.error(\`Error fetching block production for \${validatorIdentity} in range:\`, error);
    }
  }

  // Replace with your desired parameters
  const validatorIdentity = "Beefy1So11111111111111111111111111111111111"; // Example validator
  const firstSlot = 200000000; // Example start slot
  const lastSlot = 200010000;   // Example end slot
  getValidatorBlockProductionForRange(validatorIdentity, firstSlot, lastSlot);
  ```
</CodeGroup>

Ce guide devrait vous donner une compréhension solide de l'utilisation de la méthode RPC `getBlockProduction` pour analyser la production de blocs sur Solana.

## Méthodes connexes

<CardGroup cols={2}>
  <Card title="getLeaderSchedule" href="/docs/fr/api-reference/rpc/http/getleaderschedule">
    Obtenez le calendrier complet des leaders pour corréler avec les données de production
  </Card>

  <Card title="getVoteAccounts" href="/docs/fr/api-reference/rpc/http/getvoteaccounts">
    Obtenez des informations sur tous les validateurs votants
  </Card>
</CardGroup>
