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

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

El método RPC [`getBlocks`](https://www.helius.dev/docs/api-reference/rpc/http/getblocks) te permite recuperar una lista de números de slot de bloques confirmados entre un slot inicial especificado y un [slot](https://www.helius.dev/blog/solana-slots-blocks-and-epochs) final opcional. Esto resulta útil cuando necesitas saber qué bloques se confirmaron en un rango específico sin obtener el contenido completo de cada bloque.

<Warning>
  **Evita el procesamiento por lotes para mejorar el rendimiento**

  El procesamiento por lotes de métodos de archivo aumenta considerablemente la latencia. No se permiten lotes de más de 10 solicitudes.
</Warning>

## Casos de uso comunes

* **Identificar bloques confirmados en un rango:** Obtén rápidamente una lista de todos los slots de bloques que se confirmaron correctamente entre dos puntos del libro mayor.
* **Recorrer bloques:** Usa la lista de slots devuelta para obtener después información detallada de cada bloque mediante `getBlock`, si es necesario.
* **Auditoría básica de bloques:** Verifica la presencia de bloques dentro de un rango determinado.

## Parámetros de solicitud

El método `getBlocks` acepta los siguientes parámetros:

1. **`start_slot`** (u64, obligatorio): El primer slot que se tendrá en cuenta para el rango (inclusive).
2. **`end_slot`** (u64, opcional): El último slot que se tendrá en cuenta para el rango (inclusive).
   * Si no se proporciona, la consulta devolverá los bloques desde `start_slot` hasta el último slot confirmado.
   * El rango entre `start_slot` e `end_slot` (o el último slot si se omite `end_slot`) **no debe superar los 500,000 slots**.
3. **`commitment`** (string, opcional): Especifica el nivel de compromiso de la consulta. Si se omite, se usa el nivel de compromiso predeterminado del nodo. Se pasa como el único campo de un objeto de configuración en el último parámetro.

## Estructura de la respuesta

El campo `result` de la respuesta JSON-RPC será un arreglo de enteros u64. Cada entero del arreglo representa el número de slot de un bloque confirmado dentro del rango especificado.

* Ejemplo: `[5, 6, 7, 8, 9, 10]`

## Ejemplos

### 1. Obtener bloques dentro de un rango específico de slots

Este ejemplo obtiene la lista de slots de bloques confirmados entre el slot `250000000` y el `250000010`.

<CodeGroup>
  ```bash cURL theme={"system"}
  curl https://mainnet.helius-rpc.com/?api-key=<api-key> -X POST -H "Content-Type: application/json" -d \
    '{
      "jsonrpc": "2.0",
      "id": 1,
      "method": "getBlocks",
      "params": [
        250000000,
        250000010
      ]
    }'
  ```

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

  async function getBlocksInRange(startSlot, endSlot) {
    const connection = new Connection('https://mainnet.helius-rpc.com/?api-key=<api-key>');
    try {
      const blocks = await connection.getBlocks(startSlot, endSlot);
      console.log(`Confirmed blocks between slot ${startSlot} and ${endSlot}:`, blocks);
    } catch (error) {
      console.error('Error fetching blocks:', error);
    }
  }

  // Example usage:
  const startSlot = 250000000;
  const endSlot = 250000010;
  getBlocksInRange(startSlot, endSlot);
  ```
</CodeGroup>

### 2. Obtener bloques desde un slot inicial hasta el último slot confirmado

Este ejemplo obtiene los slots de bloques confirmados desde `260000000` hasta el último bloque confirmado por el nodo (respetando el límite de rango de 500,000 slots desde el slot inicial).

<CodeGroup>
  ```bash cURL theme={"system"}
  curl https://mainnet.helius-rpc.com/?api-key=<api-key> -X POST -H "Content-Type: application/json" -d \
    '{
      "jsonrpc": "2.0",
      "id": 1,
      "method": "getBlocks",
      "params": [
        260000000 
      ]
    }'
  ```

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

  async function getBlocksFromStart(startSlot) {
    const connection = new Connection('https://mainnet.helius-rpc.com/?api-key=<api-key>');
    try {
      // The endSlot parameter is omitted to fetch up to the latest confirmed block
      const blocks = await connection.getBlocks(startSlot);
      console.log(`Confirmed blocks from slot ${startSlot} to latest:`, blocks);
      if (blocks.length > 0) {
        console.log(`Latest block in range: ${blocks[blocks.length - 1]}`);
      }
    } catch (error) {
      console.error('Error fetching blocks:', error);
    }
  }

  // Example usage (ensure this doesn't exceed the 500,000 slot limit from latest block):
  const recentStartSlot = 260000000; 
  getBlocksFromStart(recentStartSlot);
  ```
</CodeGroup>

### 3. Obtener bloques con un nivel de compromiso específico

Este ejemplo obtiene bloques mediante el nivel de compromiso `confirmed`.

<CodeGroup>
  ```bash cURL theme={"system"}
  curl https://mainnet.helius-rpc.com/?api-key=<api-key> -X POST -H "Content-Type: application/json" -d \
    '{
      "jsonrpc": "2.0",
      "id": 1,
      "method": "getBlocks",
      "params": [
        270000000,
        270000005,
        { "commitment": "confirmed" }
      ]
    }'
  ```

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

  async function getBlocksWithCommitment(startSlot, endSlot) {
    const connection = new Connection('https://mainnet.helius-rpc.com/?api-key=<api-key>');
    try {
      const blocks = await connection.getBlocks(startSlot, endSlot, { commitment: 'confirmed' });
      console.log(`Confirmed blocks (with 'confirmed' commitment) between slot ${startSlot} and ${endSlot}:`, blocks);
    } catch (error) {
      console.error('Error fetching blocks with commitment:', error);
    }
  }

  // Example usage:
  const commitStartSlot = 270000000;
  const commitEndSlot = 270000005;
  getBlocksWithCommitment(commitStartSlot, commitEndSlot);
  ```
</CodeGroup>

## Consejos para desarrolladores

* **Límite del rango:** Recuerda el límite de rango de 500,000 slots. Solicitar un rango mayor generará un error.
* **Disponibilidad de los datos del nodo:** Es posible que los nodos no conserven información de todos los slots históricos. Los valores muy antiguos de `start_slot` podrían devolver arreglos vacíos o errores, según la configuración del nodo y la retención del libro mayor.
* **Confirmación de bloques:** Este método devuelve bloques *confirmados*. El conjunto exacto de bloques puede variar ligeramente según el nivel de `commitment` elegido y el nodo que consultes, especialmente para slots muy recientes.
* **Complemento de `getBlock`:** `getBlocks` suele usarse como primer paso para identificar los slots de bloques relevantes antes de usar `getBlock` para recuperar todos los detalles de cada bloque de esa lista.
* **Alternativa de paginación:** Dado que `getBlocks` tiene un límite de rango, si necesitas explorar una parte muy grande de la cadena, tendrás que hacer varias llamadas a `getBlocks` y dividir el rango total que deseas consultar en segmentos de 500,000 slots o menos.

Esta guía ofrece una descripción clara de cómo usar el método RPC `getBlocks` para enumerar slots de bloques confirmados en la red de Solana.

## Métodos relacionados

<CardGroup cols={2}>
  <Card title="getBlock" href="/docs/es/api-reference/rpc/http/getblock">
    Obtén información detallada de un bloque específico
  </Card>

  <Card title="getBlocksWithLimit" href="/docs/es/api-reference/rpc/http/getblockswithlimit">
    Obtén una cantidad fija de bloques a partir de un slot
  </Card>
</CardGroup>
