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

# Verwendung von getBlockCommitment

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

Die [`getBlockCommitment`](https://www.helius.dev/docs/api-reference/rpc/http/getblockcommitment) RPC-Methode liefert Informationen über den [Commitment](https://www.helius.dev/blog/solana-commitment-levels)-Status eines bestimmten Blocks im Solana-Ledger. Dies ist nützlich, um zu verstehen, wie finalisiert ein Block ist, basierend auf dem Stake, der auf ihn abgestimmt hat.

## Häufige Anwendungsfälle

* **Bewertung der Blockfinalität:** Bestimmen des Konsensniveaus, das ein Block erreicht hat, indem die stake-gewichteten Stimmen in verschiedenen Bestätigungstiefen betrachtet werden.
* **Verständnis der Cluster-Gesundheit:** Der `totalStake` bietet Einblick in den gesamten aktiven Stake im Cluster zum Zeitpunkt der Verarbeitung des Blocks.
* **Erweiterte Bestätigungslogik:** Für Anwendungen, die sehr spezifische Garantien über Block-Finalität über die Standard-Commitment-Level hinaus erfordern (`confirmed`, `finalized`).

## Parameter

1. `slot` (Zahl, erforderlich): Die Slot-Nummer (u64) des Blocks, für den Commitment-Informationen abgefragt werden sollen.

## Antwort

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

* `commitment` (Array von u64-Zahlen | null):
  * Ein Array von u64-Zahlen, wobei jede Zahl die Menge des Cluster-Stakes (in Lamports) darstellt, die auf den Block in einer bestimmten Bestätigungstiefe abgestimmt hat.
  * Das Array hat typischerweise 32 Elemente (die Tiefen 0 bis `MAX_LOCKOUT_HISTORY`, was 31 ist, darstellend).
  * Der Index `i` des Arrays zeigt den Stake, der für den Block abgestimmt hat, wobei sowohl Stimmen auf dem Block selbst als auch auf seinen Nachfolgern bis zu `i`-Tiefen berücksichtigt werden.
  * Wenn der Block nicht gefunden wird oder seine Commitment-Informationen nicht verfügbar sind (z.B. weil er zu alt ist und aus dem Commitment-Tracking entfernt wurde), wird dieses Feld `null` sein.
* `totalStake` (Zahl):
  * Der gesamte aktive Stake im Cluster (in Lamports) zum Zeitpunkt, an dem dieser Block verarbeitet wurde. Dieser Wert wird verwendet, um den Prozentsatz des Stakes zu berechnen, der sich zum Block bekannt hat.

## Entwicklertipps

* **Interpretation des `commitment`-Arrays:**
  * Das `commitment`-Array zeigt den Stake (in Lamports), der für den Block in verschiedenen Bestätigungstiefen abgestimmt hat. Höhere Werte bei tieferen Indizes bedeuten eine stärkere Finalität.
  * Ein `null` `commitment`-Array bedeutet oft, dass der Knoten keine Daten für den Slot hat, möglicherweise weil er zu alt ist oder übersprungen wurde.
  * Sie können die Finalität in der Tiefe `i` beurteilen, wenn `commitment[i] / totalStake >= 2/3` (Supermajorität).
* **Erweiterte Anwendungsfälle:** `getBlockCommitment` ist für eine nuancierte Finalitätsanalyse gedacht. Für die meisten gängigen Szenarien ist es einfacher und ausreichend, sich auf Standard-Commitment-Level (`processed`, `confirmed` oder `finalized`) mit anderen RPC-Methoden (wie `getTransaction` oder `getBlock`) zu verlassen.
* **Verständnis der Commitment:** Um `getBlockCommitment` voll auszuschöpfen, ist ein solides Verständnis der Solana-Commitment-Level unerlässlich. Siehe [Solana Commitment Levels](https://www.helius.dev/blog/solana-commitment-levels) für detaillierte Informationen.
* **Entfernen:** Beachten Sie, dass RPC-Knoten alte Commitment-Informationen entfernen könnten, was zu `null`-Ergebnissen für ältere Slots führt.

## Beispiel: Abrufen von Block-Commitment-Informationen

Versuchen wir, Commitment-Informationen für eine veranschaulichende Slot-Nummer im Devnet abzurufen.
**Wichtig:** Slots werden schnell verarbeitet. Die unten verwendete Slot-Nummer (`250000000`) ist ein Platzhalter. Sie sollten ihn durch einen aktuellen, bestätigten Slot ersetzen, von dem Sie wissen, dass er in Ihrem Zielnetzwerk (z.B. Devnet oder Mainnet) existiert, wenn Sie das Beispiel ausführen. Sie können aktuelle Slot-Nummern mithilfe eines Solana-Blockexplorers finden.

**Hinweis:** Ersetzen Sie `YOUR_API_KEY` durch Ihren tatsächlichen Helius-API-Schlüssel in den unten stehenden Beispielen.

<CodeGroup>
  ```bash curl theme={"system"}
  # Replace 250000000 with a valid, recent slot number on Devnet/Mainnet
  curl https://mainnet.helius-rpc.com/?api-key=YOUR_API_KEY -X POST -H "Content-Type: application/json" -d \
  '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "getBlockCommitment",
    "params": [
      250000000 
    ]
  }'
  ```

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

  async function getBlockCommitmentDetails() {
    const rpcUrl = 'https://mainnet.helius-rpc.com/?api-key=YOUR_API_KEY'; // Replace YOUR_API_KEY
    const connection = new Connection(rpcUrl, 'confirmed');
    
    // Replace with a valid, recent slot number on your target network
    const slotToQuery = 250000000; 

    try {
      // Note: getBlockCommitment is not directly available in @solana/web3.js Connection object.
      // You typically need to make a direct RPC call for this method.
      // The example below shows how to construct and send such a raw request.
      const response = await fetch(rpcUrl, {
        method: 'POST',
        headers: {
          'Content-Type': 'application/json',
        },
        body: JSON.stringify({
          jsonrpc: '2.0',
          id: 1,
          method: 'getBlockCommitment',
          params: [slotToQuery],
        }),
      });
      const result = await response.json();

      if (result.error) {
        console.error(`Error fetching block commitment for slot ${slotToQuery}:`, result.error.message);
        return;
      }

      const blockCommitment = result.result;

      if (blockCommitment) {
        console.log(`Block Commitment for Slot ${slotToQuery}:`);
        console.log(`   Total Stake (Lamports): ${blockCommitment.totalStake}`);
        console.log(`   Commitment Array:`, blockCommitment.commitment ? blockCommitment.commitment : 'Not available/Unknown block');
        // The commitment array shows lamports committed at different depths.
        // A null commitment array usually means the block is not found or too old.
        // A non-null array where later entries are higher indicates increasing finality.
      } else {
        console.log(`Block commitment data for slot ${slotToQuery} not found.`);
      }
    } catch (error) {
      console.error(`Error fetching block commitment for slot ${slotToQuery}:`, error);
    }
  }

  getBlockCommitmentDetails();
  ```

  ```typescript Kit theme={"system"}
  import { createSolanaRpc } from "@solana/kit";

  const rpc_url = "https://mainnet.helius-rpc.com/?api-key=YOUR_API_KEY";
  const rpc = createSolanaRpc(rpc_url);

  const slot_number = BigInt(5);

  let blockCommitment = await rpc.getBlockCommitment(slot_number).send();

  console.log("block commitment:", blockCommitment);
  ```
</CodeGroup>
