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

# Wie man getInflationReward verwendet

> Lernen Sie Anwendungsfälle, Codebeispiele, Anforderungsparameter, Antwortstrukturen und Tipps zur Nutzung von getInflationReward kennen.

Die [`getInflationReward`](https://www.helius.dev/docs/api-reference/rpc/http/getinflationreward) RPC-Methode ermöglicht es Ihnen, die [Inflation](https://www.helius.dev/blog/solana-issuance-inflation-schedule) Belohnungen (allgemein bekannt als Staking-Belohnungen) abzufragen, die einem oder mehreren Adressen für eine bestimmte Epoche gutgeschrieben wurden.

Dies ist nützlich, um die von Stake-Konten oder einem Konto, das Inflationsbelohnungen erhalten haben könnte, erhaltenen Belohnungen zu überprüfen.

<Warning>
  **Vermeiden Sie Batch-Verarbeitung für bessere Leistung**

  Das Batchen von Archivierungsmethoden erhöht die Latenzzeit erheblich. Batches über 10 Anfragen sind nicht erlaubt.
</Warning>

## Übliche Anwendungsfälle

* **Staking-Belohnungen verifizieren:** Überprüfen Sie, ob ein Stake-Konto die erwarteten Belohnungen für eine vergangene Epoche erhalten hat.
* **Belohnungshistorie verfolgen:** Belohnungen für mehrere Epochen abfragen, um eine Historie für eine Adresse zu erstellen.
* **Validator-Auszahlungen prüfen:** Validatoren können dies nutzen, um die Belohnungsverteilung zu überprüfen (obwohl Belohnungen an Stake-Konten gezahlt werden, nicht direkt an die Validator-Identitäten).

## Anforderungsparameter

Die Methode nimmt zwei Hauptparameter entgegen:

1. **`addresses`** (Array von Strings): Eine Liste von base-58 codierten öffentlichen Schlüsseln für die Konten, die Sie abfragen möchten. Die maximale Anzahl erlaubter Adressen kann je nach RPC-Anbieter variieren (z. B. erlaubt Helius bis zu 1005 für bezahlte Pläne).
2. **`config`** (Objekt, optional): Ein Konfigurationsobjekt mit den folgenden optionalen Feldern:
   * **`commitment`** (String, optional): Gibt das [Commitment Level](https://www.helius.dev/blog/solana-commitment-levels) an. Standardmäßig `finalized`, falls nicht angegeben.
   * **`epoch`** (Integer, optional): Die Epoche, für die die Belohnungen abgerufen werden sollen. Wird sie weggelassen, verwendet der RPC-Knoten in der Regel die zuletzt abgeschlossene Epoche, für die Belohnungen verteilt wurden.
   * **`minContextSlot`** (Integer, optional): Der minimale Slot, bei dem die Anfrage evaluiert werden kann. Dies stellt sicher, dass die Abfrage gegen einen Hauptbuchzustand durchgeführt wird, der mindestens bis zu diesem Slot verarbeitet wurde.

## Antwortstruktur

Das FIELD\_`result` des JSON-RPC-Antworts wird ein Array sein, das dem Eingabe-ARRAY\_`addresses` entspricht. Jedes Element im Ergebnisarray wird entweder sein:

* Ein **Objekt**, das die Details der Inflationsbelohnung enthält, wenn die Adresse für die spezifische Epoche eine Belohnung erhalten hat.
* **`null`**, wenn die Adresse keine Inflationsbelohnung für diese Epoche erhalten hat oder das Konto nicht existierte.

Das Belohnungsobjekt hat die folgenden Felder:

* **`epoch`** (u64): Die Epoche, für die diese Belohnung gutgeschrieben wurde.
* **`effectiveSlot`** (u64): Der Slot, in dem die Belohnung angewendet und wirksam wurde.
* **`amount`** (u64): Die Höhe der Belohnung, in Lamports.
* **`postBalance`** (u64): Das Guthaben des Kontos, in Lamports, nach der Gutschrift der Belohnung.
* **`commission`** (u8 | undefined): Für Abstimmungskonten ist dies der Prozentsatz der Kommission (0-100), den der Validator zum Zeitpunkt der Gutschrift der Belohnung genommen hat. Es wird `undefined` für Nicht-Abstimmungskonten sein.

## Beispiele

### 1. Inflationsbelohnung für eine einzelne Adresse abrufen (Vorherige Epoche)

Dieses Beispiel ruft die Inflationsbelohnung für eine bestimmte Adresse für die zuletzt abgeschlossene Epoche ab.

<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. Inflationsbelohnungen für mehrere Adressen für eine bestimmte Epoche abrufen

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

## Entwicklertipps

* **Epochen-Spezifität:** Belohnungen werden einmal pro Epoche gutgeschrieben. Stellen Sie sicher, dass Sie nach der richtigen Epochenzahl abfragen.
* **Zeitpunkt der Belohnungen:** Inflationsbelohnungen werden am Ende einer Epoche berechnet und zu Beginn der nächsten angewendet. Der `effectiveSlot` zeigt an, wann dies geschieht.
* **Nullergebnisse:** Ein `null` Ergebnis für eine Adresse bedeutet, dass keine Belohnung für diese Adresse in der angegebenen Epoche gefunden wurde. Dies könnte daran liegen, dass das Konto nicht berechtigt war (z. B. kein ausreichend gestaktes Stake-Konto), die Belohnung null war oder das Konto zu diesem Zeitpunkt nicht existierte.
* **Ratenbegrenzungen:** Beachten Sie die Ratenbegrenzungen des RPC-Anbieters, insbesondere bei der Abfrage einer großen Anzahl von Adressen.

Dieser Leitfaden hilft Ihnen, die `getInflationReward` Methode zu verwenden, um Staking-Belohnungen im Solana-Netzwerk korrekt abzurufen und zu überprüfen.
