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

# Como Usar getInflationReward

> Aprenda casos de uso do getInflationReward, exemplos de código, parâmetros de solicitação, estrutura de resposta e dicas.

O método RPC [`getInflationReward`](https://www.helius.dev/docs/api-reference/rpc/http/getinflationreward) permite consultar as recompensas de [inflação](https://www.helius.dev/blog/solana-issuance-inflation-schedule) (comumente conhecidas como recompensas de staking) que foram creditadas a um ou mais endereços para uma época específica.

Isso é útil para verificar recompensas recebidas por contas de stake ou qualquer conta que possa ter recebido recompensas de inflação.

<Warning>
  **Evite Agrupamento para Melhor Desempenho**

  Agrupar métodos arquivados aumenta significativamente a latência. Agrupamentos acima de 10 solicitações não são permitidos.
</Warning>

## Casos de Uso Comuns

* **Verificar Recompensas de Staking:** Verifique se uma conta de stake recebeu as recompensas esperadas para uma época passada.
* **Acompanhar Histórico de Recompensas:** Consulta recompensas para várias épocas para construir um histórico para um endereço.
* **Auditar Pagamentos de Validadores:** Validadores podem usar isso para verificar a distribuição de recompensas (embora as recompensas sejam pagas para contas de stake, não diretamente para identidades de validadores).

## Parâmetros de Solicitação

O método leva dois parâmetros principais:

1. **`addresses`** (array de strings): Uma lista de chaves públicas codificadas em base-58 para as contas que você deseja consultar. O número máximo de endereços permitidos pode variar dependendo do provedor RPC (por exemplo, Helius permite até 1005 para planos pagos).
2. **`config`** (objeto, opcional): Um objeto de configuração com os seguintes campos opcionais:
   * **`commitment`** (string, opcional): Especifica o [nível de compromisso](https://www.helius.dev/blog/solana-commitment-levels). O padrão é `finalized` se não for fornecido.
   * **`epoch`** (integer, opcional): O número da época para a qual buscar as recompensas. Se omitido, o nó RPC geralmente usará a época mais recentemente concluída para a qual as recompensas foram distribuídas.
   * **`minContextSlot`** (integer, opcional): O slot mínimo que a solicitação pode ser avaliada. Isso garante que a consulta seja feita contra um estado do ledger que tenha processado até pelo menos este slot.

## Estrutura de Resposta

O campo `result` da resposta JSON-RPC será um array correspondente ao array de entrada `addresses`. Cada elemento no array de resultados será:

* Um **objeto** contendo os detalhes da recompensa de inflação se o endereço recebeu uma recompensa para a época especificada.
* **`null`** se o endereço não recebeu uma recompensa de inflação para essa época ou se a conta não existia.

O objeto de recompensa tem os seguintes campos:

* **`epoch`** (u64): A época para a qual esta recompensa foi creditada.
* **`effectiveSlot`** (u64): O slot no qual a recompensa foi aplicada e se tornou efetiva.
* **`amount`** (u64): A quantidade da recompensa, em lamports.
* **`postBalance`** (u64): O saldo da conta, em lamports, após a recompensa ter sido creditada.
* **`commission`** (u8 | indefinido): Para contas de voto, esta é a porcentagem de comissão (0-100) tomada pelo validador no momento em que a recompensa foi creditada. Será `undefined` para contas não relacionadas a votos.

## Exemplos

### 1. Obter Recompensa de Inflação para um Único Endereço (Época Anterior)

Este exemplo busca a recompensa de inflação para um endereço específico para a época mais recentemente concluída.

<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. Obter Recompensas de Inflação para Múltiplos Endereços para uma Época Específica

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

## Dicas para Desenvolvedores

* **Especificidade da Época:** Recompensas são creditadas uma vez por época. Certifique-se de que está consultando o número da época correto.
* **Momento das Recompensas:** As recompensas de inflação são calculadas no final de uma época e aplicadas no início da próxima. O `effectiveSlot` indica quando isso acontece.
* **Resultados Nulos:** Um resultado `null` para um endereço significa que nenhuma recompensa foi encontrada para esse endereço na época especificada. Isso pode ser porque a conta não era elegível (por exemplo, não uma conta de stake suficientemente aposta), a recompensa foi zero, ou a conta não existia naquele momento.
* **Limites de Taxa:** Fique atento aos limites de taxa do provedor RPC, especialmente ao consultar um grande número de endereços.

Este guia ajuda você a usar o método `getInflationReward` para recuperar e verificar com precisão recompensas de staking na rede Solana.
