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

# So verwenden Sie getBlockProduction

> Erfahren Sie mehr über die Anwendungsfälle, Codebeispiele, Anforderungsparameter, Antwortstruktur und Tipps zu getBlockProduction.

Die [`getBlockProduction`](https://www.helius.dev/docs/api-reference/rpc/http/getblockproduction) RPC-Methode liefert Informationen über die Blockproduktion im aktuellen Zyklus oder in einem bestimmten Slot-Bereich. Sie kann verwendet werden, um Daten für alle Validatoren oder eine bestimmte Validatorenidentität abzurufen. Dies ist wertvoll für die Überwachung der Leistung von Validatoren und das Verständnis von Blockproduktionsmustern im Netzwerk.

## Häufige Anwendungsfälle

* **Überwachung der Validatorenleistung:** Verfolgen Sie die Anzahl der produzierten Blöcke und Führungsslots für einen bestimmten Validator.
* **Analyse der Zyklusleistung:** Erhalten Sie einen Überblick über die Blockproduktion aller Validatoren im aktuellen oder einem vergangenen Zyklus.
* **Identifizierung verpasster Slots:** Prüfen Sie, ob Validatoren ihre zugewiesenen Führungsslots verpassen.
* **Netzwerk-Gesundheitschecks:** Sammeln Sie Daten zur Effizienz der gesamten Blockproduktion.

## Anforderungsparameter

Die `getBlockProduction` Methode akzeptiert ein optionales Konfigurationsobjekt mit den folgenden Parametern:

1. **`commitment`** (string, optional): Gibt das Verpflichtungsniveau an, das für die Abfrage verwendet werden soll. Falls nicht angegeben, wird das Standard-Verpflichtungsniveau des Knotens verwendet.
2. **`range`** (object, optional): Definiert einen Slot-Bereich zur Abfrage.
   * `firstSlot` (u64): Der erste Slot, für den Blockproduktionsinformationen abgerufen werden sollen (inklusive).
   * `lastSlot` (u64, optional): Der letzte Slot, für den Blockproduktionsinformationen abgerufen werden sollen (inklusive). Wenn nicht angegeben, wird die Blockproduktion des aktuellen Zyklus bis zum aktuellen Slot zurückgegeben.
3. **`identity`** (string, optional): Ein base58-codierter öffentlicher Schlüssel einer Validatorenidentität. Wenn angegeben, enthält die Antwort nur Blockproduktionsinformationen für diesen spezifischen Validator. Wenn nicht angegeben, werden Informationen für alle Validatoren im angegebenen Bereich (oder aktuellen Zyklus) zurückgegeben.

**Hinweis:** Mindestens einer der `identity` oder `range.firstSlot` muss angegeben werden. Wenn `identity` nicht angegeben ist, ist der `range` Parameter erforderlich.

## Antwortstruktur

Das `result` Feld der JSON-RPC-Antwort wird ein Objekt enthalten, das:

* `context` (object):
  * `slot` (u64): Der Slot, in dem die Informationen abgerufen wurden.
* `value` (object):
  * `byIdentity` (object): Ein Objekt, bei dem die Schlüssel Validatorenidentität-Strings (base58-codierte öffentliche Schlüssel) sind und die Werte Objekte, die Folgendes enthalten:
    * `leaderSlots` (u64): Die Anzahl der Führungsslots, die diesem Validator im abgefragten Bereich/Zyklus zugewiesen sind.
    * `blocksProduced` (u64): Die Anzahl der Blöcke, die von diesem Validator im abgefragten Bereich/Zyklus produziert wurden.
  * `range` (object):
    * `firstSlot` (u64): Der erste Slot des abgefragten Bereichs.
    * `lastSlot` (u64): Der letzte Slot des abgefragten Bereichs.

## Entwicklertipps

* **Verstehen Sie die Zyklusgrenzen**: Bei der Abfrage durch `identity` ohne `range` werden die Daten für den aktuellen Zyklus bis zum letzten vom Knoten verarbeiteten Slot zurückgegeben. Wenn Sie Daten für einen *vollständigen* vergangenen Zyklus für einen bestimmten Validator benötigen, müssen Sie die `firstSlot` und `lastSlot` für diesen Zyklus bestimmen.
* **Verfügbarkeit von Knotendaten**: Der Bereich der historischen Blockproduktionsdaten kann zwischen den RPC-Knoten variieren. Sehr alte Slot-Bereiche sind möglicherweise nicht auf allen Knoten verfügbar.
* **Leistungsüberwachung**: `getBlockProduction` ist entscheidend für den Aufbau von Dashboards oder Benachrichtigungen im Zusammenhang mit der Betriebszeit von Validatoren und Erfolgsraten bei der Blockproduktion.
* **Kombinieren mit `getLeaderSchedule`**: Für eine tiefere Analyse können Sie `getBlockProduction` Daten mit der Ausgabe von `getLeaderSchedule` korrelieren, um zu sehen, welche spezifischen Führungsslots erfüllt oder verpasst wurden.
* **Identität vs. alle Validatoren**: Eine Abfrage ohne `identity` kann eine große Menge an Daten zurückgeben, insbesondere wenn kein `range` oder ein breiter `range` angegeben ist. Beachten Sie die Antwortgrößen und Verarbeitungsanforderungen.

## Beispiele

### 1. Blockproduktion für den aktuellen Zyklus abrufen (alle Validatoren)

Dieses Beispiel ruft Blockproduktionsdaten für alle Validatoren im aktuellen Zyklus ab.

<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. Blockproduktion für einen bestimmten Validator im aktuellen Zyklus abrufen

Dieses Beispiel ruft die Blockproduktion für eine bestimmte Validatorenidentität im aktuellen Zyklus ab.

<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. Blockproduktion für einen bestimmten Slot-Bereich und Validator abrufen

Dieses Beispiel ruft Blockproduktionsdaten für einen bestimmten Validator innerhalb eines definierten Slot-Bereichs ab.

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

Dieser Leitfaden sollte Ihnen ein solides Verständnis dafür vermitteln, wie Sie die `getBlockProduction` RPC-Methode verwenden, um die Blockproduktion auf Solana zu analysieren.

## Verwandte Methoden

<CardGroup cols={2}>
  <Card title="getLeaderSchedule" href="/docs/de/api-reference/rpc/http/getleaderschedule">
    Erhalten Sie den vollständigen Führungsplan, um ihn mit Produktionsdaten zu korrelieren
  </Card>

  <Card title="getVoteAccounts" href="/docs/de/api-reference/rpc/http/getvoteaccounts">
    Erhalten Sie Informationen über alle abstimmenden Validatoren
  </Card>
</CardGroup>
