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

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

O método RPC [`getEpochSchedule`](https://www.helius.dev/docs/api-reference/rpc/http/getepochschedule) retorna as informações de agendamento de [epoch](https://www.helius.dev/blog/solana-slots-blocks-and-epochs) da configuração de gênesis do cluster. Esses dados definem como os epochs são estruturados, incluindo seu comprimento e como o cronograma de líderes é determinado em relação ao início de um epoch.

Compreender o agendamento de epochs é crucial para aplicações que precisam se alinhar com eventos de rede, prever limites de epochs ou entender o mecanismo de rotação de líderes.

## Casos de Uso Comuns

* **Previsão de Limites de Epochs:** Determine o número de slots em um epoch para estimar quando o epoch atual terminará e o próximo começará.
* **Cálculo do Cronograma de Líderes:** Entenda o `leaderScheduleSlotOffset` para saber com quanta antecedência os cronogramas de líderes são gerados para um próximo epoch.
* **Análise da Inicialização da Rede:** Observe `warmup`, `firstNormalEpoch` e `firstNormalSlot` para entender a fase inicial de aumento dos comprimentos dos epochs do cluster, se aplicável.
* **Construção de Ferramentas de Monitoramento de Rede:** Use essas informações para exibir o tempo e a progressão do epoch com precisão.

## Parâmetros de Solicitação

Este método não utiliza nenhum parâmetro.

## Estrutura de Resposta

O campo `result` da resposta JSON-RPC será um objeto contendo os seguintes campos:

* **`slotsPerEpoch`** (u64): O número máximo de slots em cada epoch (após o período de aquecimento, se houver).
* **`leaderScheduleSlotOffset`** (u64): O número de slots antes do início de um epoch para o qual o cronograma de líderes para esse epoch é gerado.
* **`warmup`** (boolean): Um booleano indicando se o cluster tem um período de aquecimento onde os epochs começam mais curtos e aumentam gradualmente de comprimento.
* **`firstNormalEpoch`** (u64): O número do primeiro epoch que possui o comprimento completo `slotsPerEpoch`. Isso é relevante se `warmup` for verdadeiro.
* **`firstNormalSlot`** (u64): O índice do slot do primeiro slot no `firstNormalEpoch`. Isso é relevante se `warmup` for verdadeiro.

## Exemplos

### 1. Obter o Cronograma de Epoch do Cluster

Este exemplo busca o cronograma de epoch.

<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": "getEpochSchedule"
    }'
  ```

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

  async function getClusterEpochSchedule() {
    const connection = new Connection('https://mainnet.helius-rpc.com/?api-key=<api-key>');
    try {
      const epochSchedule = await connection.getEpochSchedule();
      console.log(JSON.stringify(epochSchedule, null, 2));
    } catch (error) {
      console.error('Error fetching epoch schedule:', error);
    }
  }

  getClusterEpochSchedule();
  ```
</CodeGroup>

## Dicas para Desenvolvedores

* **Informação Estática:** O cronograma de epoch é determinado pela configuração de gênesis do cluster e geralmente não muda, a menos que haja uma atualização significativa na rede ou o lançamento de um novo cluster com parâmetros diferentes.
* **Mainnet vs. Testnet/Devnet:** O cronograma de epoch, particularmente `slotsPerEpoch` e os parâmetros de aquecimento, podem diferir significativamente entre Mainnet Beta, Testnet e Devnet. Sempre consulte o cluster específico pelo qual você está interessado.
* **Período de Aquecimento:** Se `warmup` for `true`, os epochs antes de `firstNormalEpoch` terão menos slots que `slotsPerEpoch`. O cálculo exato para comprimentos de epoch de aquecimento é `2^N * MINIMUM_SLOTS_PER_EPOCH` onde N é o número do epoch (começando do 0) até `firstNormalEpoch` ser alcançado. O `MINIMUM_SLOTS_PER_EPOCH` é tipicamente 32.

Este guia fornece as informações necessárias para usar o método RPC `getEpochSchedule` para entender a temporização e a estrutura fundamentais dos epochs dentro de um cluster Solana.
