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

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

O método RPC [`getBlocks`](https://www.helius.dev/docs/api-reference/rpc/http/getblocks) permite que você recupere uma lista de números de slots de blocos confirmados entre um slot inicial especificado e um slot final opcional. Isso é útil quando você precisa saber quais blocos foram confirmados em um intervalo específico sem buscar o conteúdo completo de cada bloco.

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

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

## Casos de Uso Comuns

* **Identificação de Blocos Confirmados em um Intervalo:** Obtenha rapidamente uma lista de todos os slots de blocos que foram confirmados com sucesso entre dois pontos no livro-razão.
* **Iteração Através dos Blocos:** Use a lista de slots retornada para buscar subsequentemente informações detalhadas para cada bloco usando `getBlock`, se necessário.
* **Auditoria Básica de Blocos:** Verifique a presença de blocos dentro de um certo intervalo.

## Parâmetros de Solicitação

O método `getBlocks` aceita os seguintes parâmetros:

1. **`start_slot`** (u64, obrigatório): O primeiro slot a ser considerado para o intervalo (inclusive).
2. **`end_slot`** (u64, opcional): O último slot a ser considerado para o intervalo (inclusive).
   * Se não fornecido, a consulta retornará blocos até o último slot confirmado a partir de `start_slot`.
   * O intervalo entre `start_slot` e `end_slot` (ou o último slot se `end_slot` for omitido) **não deve exceder 500.000 slots**.
3. **`commitment`** (string, opcional): Especifica o nível de compromisso para a consulta. Se omitido, o compromisso padrão do nó é usado. Isso é passado como o único campo em um objeto de configuração como o último parâmetro.

## Estrutura de Resposta

O campo `result` da resposta JSON-RPC será um array de inteiros u64. Cada inteiro no array representa um número de slot de bloco confirmado dentro do intervalo especificado.

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

## Exemplos

### 1. Obter Blocos dentro de um Intervalo de Slots Específico

Este exemplo busca a lista de slots de blocos confirmados entre o slot `250000000` e `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. Obter Blocos de um Slot Inicial até o Último Slot Confirmado

Este exemplo busca slots de blocos confirmados a partir de `260000000` até o último bloco confirmado pelo nó (respeitando o limite de intervalo de 500.000 slots a partir do 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. Obter Blocos com um Nível de Compromisso Específico

Este exemplo busca blocos usando o nível de compromisso `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>

## Dicas para Desenvolvedores

* **Limite de Intervalo:** Lembre-se do limite de intervalo de 500.000 slots. Solicitar um intervalo maior resultará em um erro.
* **Disponibilidade de Dados do Nó:** Nós podem não reter informações para todos os slots históricos. Valores muito antigos de `start_slot` podem retornar arrays vazios ou erros dependendo da configuração do nó e retenção do livro-razão.
* **Confirmação de Blocos:** Este método retorna blocos *confirmados*. O conjunto exato de blocos pode variar ligeiramente dependendo do nível `commitment` escolhido e do nó que você consulta, especialmente para slots muito recentes.
* **Complemento para `getBlock`:** `getBlocks` é frequentemente usado como um primeiro passo para identificar slots de blocos relevantes antes de usar `getBlock` para recuperar os detalhes completos dos blocos individuais dentro dessa lista.
* **Alternativa de Paginação:** Como `getBlocks` tem um limite de intervalo, se você precisar examinar uma porção muito grande da cadeia, você precisará fazer várias chamadas para `getBlocks`, dividindo seu intervalo total desejado em segmentos de 500.000 slots ou menos.

Este guia fornece uma visão geral clara de como usar o método RPC `getBlocks` para listar slots de blocos confirmados na rede Solana.

## Métodos Relacionados

<CardGroup cols={2}>
  <Card title="getBlock" href="/docs/pt-BR/api-reference/rpc/http/getblock">
    Obtenha informações detalhadas para um bloco específico
  </Card>

  <Card title="getBlocksWithLimit" href="/docs/pt-BR/api-reference/rpc/http/getblockswithlimit">
    Obtenha um número fixo de blocos a partir de um slot
  </Card>
</CardGroup>
