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

# Cómo usar getInflationReward

> Conoce los casos de uso, ejemplos de código, parámetros de solicitud, estructura de respuesta y consejos de getInflationReward.

El método RPC [`getInflationReward`](https://www.helius.dev/docs/api-reference/rpc/http/getinflationreward) te permite consultar las recompensas por [inflación](https://www.helius.dev/blog/solana-issuance-inflation-schedule), comúnmente conocidas como recompensas de staking, que se acreditaron a una o más direcciones durante una época específica.

Esto resulta útil para verificar las recompensas recibidas por cuentas de stake o por cualquier cuenta que pueda haber recibido recompensas por inflación.

<Warning>
  **Evita agrupar solicitudes para obtener un mejor rendimiento**

  Agrupar métodos de archivo aumenta significativamente la latencia. No se permiten lotes de más de 10 solicitudes.
</Warning>

## Casos de uso comunes

* **Verificar recompensas de staking:** Comprueba si una cuenta de stake recibió las recompensas esperadas durante una época anterior.
* **Dar seguimiento al historial de recompensas:** Consulta las recompensas de varias épocas para crear un historial de una dirección.
* **Auditar pagos de validadores:** Los validadores pueden usar este método para verificar la distribución de recompensas, aunque estas se pagan a las cuentas de stake y no directamente a las identidades de los validadores.

## Parámetros de la solicitud

El método acepta dos parámetros principales:

1. **`addresses`** (arreglo de cadenas): Una lista de claves públicas codificadas en base 58 de las cuentas que quieres consultar. La cantidad máxima de direcciones permitidas puede variar según el proveedor de RPC (por ejemplo, Helius permite hasta 1005 en los planes de pago).
2. **`config`** (objeto, opcional): Un objeto de configuración con los siguientes campos opcionales:
   * **`commitment`** (cadena, opcional): Especifica el [nivel de compromiso](https://www.helius.dev/blog/solana-commitment-levels). El valor predeterminado es `finalized` si no se proporciona.
   * **`epoch`** (entero, opcional): El número de la época cuyas recompensas quieres obtener. Si se omite, el nodo RPC normalmente usará la época completada más reciente para la que se hayan distribuido recompensas.
   * **`minContextSlot`** (entero, opcional): El slot mínimo en el que se puede evaluar la solicitud. Esto garantiza que la consulta se realice sobre un estado del libro mayor que haya procesado al menos hasta este slot.

## Estructura de la respuesta

El campo `result` de la respuesta JSON-RPC será un arreglo que corresponde al arreglo de entrada `addresses`. Cada elemento del arreglo de resultados será uno de los siguientes:

* Un **objeto** que contiene los detalles de la recompensa por inflación si la dirección recibió una recompensa durante la época especificada.
* **`null`** si la dirección no recibió una recompensa por inflación durante esa época o si la cuenta no existía.

El objeto de recompensa tiene los siguientes campos:

* **`epoch`** (u64): La época durante la que se acreditó esta recompensa.
* **`effectiveSlot`** (u64): El slot en el que la recompensa se aplicó y entró en vigor.
* **`amount`** (u64): El monto de la recompensa, en lamports.
* **`postBalance`** (u64): El saldo de la cuenta, en lamports, después de que se acreditó la recompensa.
* **`commission`** (u8 | undefined): Para las cuentas de voto, este es el porcentaje de comisión (0-100) que tomó el validador cuando se acreditó la recompensa. Será `undefined` para las cuentas que no sean de voto.

## Ejemplos

### 1. Obtener la recompensa por inflación de una sola dirección (época anterior)

Este ejemplo obtiene la recompensa por inflación de una dirección específica durante la época completada más reciente.

<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. Obtener las recompensas por inflación de varias direcciones durante una é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>

## Consejos para desarrolladores

* **Época específica:** Las recompensas se acreditan una vez por época. Asegúrate de consultar el número de época correcto.
* **Momento de las recompensas:** Las recompensas por inflación se calculan al final de una época y se aplican al comienzo de la siguiente. `effectiveSlot` indica cuándo ocurre esto.
* **Resultados nulos:** Un resultado `null` para una dirección significa que no se encontró ninguna recompensa para esa dirección durante la época especificada. Esto puede deberse a que la cuenta no era elegible (por ejemplo, no era una cuenta de stake con suficiente stake), la recompensa era cero o la cuenta no existía en ese momento.
* **Límites de frecuencia:** Ten en cuenta los límites de frecuencia del proveedor de RPC, especialmente cuando consultes una gran cantidad de direcciones.

Esta guía te ayuda a usar el método `getInflationReward` para recuperar y verificar con precisión las recompensas de staking en la red Solana.
