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

# Cara Menggunakan getInflationReward

> Pelajari kasus penggunaan getInflationReward, contoh kode, parameter permintaan, struktur respons, dan tips.

Metode RPC [`getInflationReward`](https://www.helius.dev/docs/api-reference/rpc/http/getinflationreward) memungkinkan Anda meminta informasi tentang imbalan [inflasi](https://www.helius.dev/blog/solana-issuance-inflation-schedule) (umumnya dikenal sebagai imbalan staking) yang dikreditkan ke satu atau beberapa alamat untuk epoch tertentu.

Metode ini berguna untuk memverifikasi imbalan yang diterima oleh akun stake atau akun lain yang mungkin telah menerima imbalan inflasi.

<Warning>
  **Hindari Pemrosesan Batch untuk Performa yang Lebih Baik**

  Pemrosesan metode arsip secara batch meningkatkan latensi secara signifikan. Batch yang berisi lebih dari 10 permintaan tidak diizinkan.
</Warning>

## Kasus Penggunaan Umum

* **Verifikasi Imbalan Staking:** Periksa apakah akun stake menerima imbalan yang diharapkan untuk epoch sebelumnya.
* **Lacak Riwayat Imbalan:** Minta informasi imbalan untuk beberapa epoch guna menyusun riwayat suatu alamat.
* **Audit Pembayaran Validator:** Validator dapat menggunakan metode ini untuk memverifikasi distribusi imbalan (meskipun imbalan dibayarkan ke akun stake, bukan langsung ke identitas validator).

## Parameter Permintaan

Metode ini menerima dua parameter utama:

1. **`addresses`** (larik string): Daftar kunci publik yang dikodekan dengan base-58 untuk akun yang ingin Anda minta informasinya. Jumlah maksimum alamat yang diizinkan dapat berbeda-beda tergantung penyedia RPC (misalnya, Helius mengizinkan hingga 1005 untuk paket berbayar).
2. **`config`** (objek, opsional): Objek konfigurasi dengan bidang opsional berikut:
   * **`commitment`** (string, opsional): Menentukan [tingkat komitmen](https://www.helius.dev/blog/solana-commitment-levels). Nilai default-nya adalah `finalized` jika tidak diberikan.
   * **`epoch`** (bilangan bulat, opsional): Nomor epoch yang imbalannya ingin diambil. Jika dihilangkan, node RPC biasanya akan menggunakan epoch terakhir yang telah selesai dan imbalannya telah didistribusikan.
   * **`minContextSlot`** (bilangan bulat, opsional): Slot minimum tempat permintaan dapat dievaluasi. Ini memastikan kueri dilakukan terhadap status ledger yang telah diproses setidaknya hingga slot ini.

## Struktur Respons

Bidang `result` dalam respons JSON-RPC akan berupa larik yang sesuai dengan larik input `addresses`. Setiap elemen dalam larik hasil akan berupa salah satu dari berikut ini:

* Sebuah **objek** yang berisi detail imbalan inflasi jika alamat tersebut menerima imbalan untuk epoch yang ditentukan.
* **`null`** jika alamat tersebut tidak menerima imbalan inflasi untuk epoch tersebut atau jika akunnya tidak ada.

Objek imbalan memiliki bidang berikut:

* **`epoch`** (u64): Epoch saat imbalan ini dikreditkan.
* **`effectiveSlot`** (u64): Slot tempat imbalan diterapkan dan mulai berlaku.
* **`amount`** (u64): Jumlah imbalan dalam lamport.
* **`postBalance`** (u64): Saldo akun dalam lamport setelah imbalan dikreditkan.
* **`commission`** (u8 | undefined): Untuk akun voting, ini adalah persentase komisi (0-100) yang diambil oleh validator saat imbalan dikreditkan. Nilainya akan berupa `undefined` untuk akun non-voting.

## Contoh

### 1. Dapatkan Imbalan Inflasi untuk Satu Alamat (Epoch Sebelumnya)

Contoh ini mengambil imbalan inflasi untuk alamat tertentu pada epoch terakhir yang telah selesai.

<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. Dapatkan Imbalan Inflasi untuk Beberapa Alamat pada Epoch Tertentu

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

## Tips untuk Developer

* **Ketepatan Epoch:** Imbalan dikreditkan satu kali per epoch. Pastikan Anda meminta informasi untuk nomor epoch yang benar.
* **Waktu Pemberian Imbalan:** Imbalan inflasi dihitung pada akhir epoch dan diterapkan pada awal epoch berikutnya. `effectiveSlot` menunjukkan kapan hal ini terjadi.
* **Hasil Null:** Hasil `null` untuk suatu alamat berarti tidak ada imbalan yang ditemukan bagi alamat tersebut dalam epoch yang ditentukan. Hal ini mungkin terjadi karena akun tidak memenuhi syarat (misalnya, bukan akun stake dengan jumlah staking yang memadai), nilai imbalannya nol, atau akun tersebut belum ada pada saat itu.
* **Batas Laju:** Perhatikan batas laju penyedia RPC, terutama saat meminta informasi untuk banyak alamat.

Panduan ini membantu Anda menggunakan metode `getInflationReward` untuk mengambil dan memverifikasi imbalan staking secara akurat di jaringan Solana.
