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

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

O método RPC [`getEpochInfo`](https://www.helius.dev/docs/api-reference/rpc/http/getepochinfo) retorna informações sobre o epoch atual. Isso pode ser útil para entender o estado atual da rede, o quanto a rede progrediu no epoch atual e quando o próximo epoch pode começar. Para entender melhor como [epochs, slots e blocos](https://www.helius.dev/blog/solana-slots-blocks-and-epochs) funcionam juntos no Solana, consulte nosso artigo detalhado.

## Casos de Uso Comuns

* **Monitoramento do Progresso do Epoch:** Acompanhe o índice do slot atual dentro do epoch e o total de slots no epoch para estimar o tempo restante.
* **Análise de Estado da Rede:** Obtenha o número do epoch atual, a altura do bloco e o número de transações processadas no epoch atual.
* **Verificações de Sincronização:** Verifique se um nó está razoavelmente sincronizado com a rede comparando suas informações de epoch.

## Parâmetros da Requisição

O método `getEpochInfo` pode opcionalmente receber um objeto de configuração com os seguintes parâmetros:

* **`commitment`** (string, opcional): Especifica o [nível de compromisso](https://www.helius.dev/blog/solana-commitment-levels) a ser usado ao consultar o ledger.
  * `finalized`: O nó irá consultar o bloco mais recente confirmado pela supermaioria do cluster como tendo alcançado bloqueio máximo.
  * `confirmed`: O nó irá consultar o bloco mais recente que foi votado por uma supermaioria do cluster.
  * `processed`: O nó irá consultar seu bloco mais recente. Observe que o bloco pode não estar completo.
  * Se não for fornecido, o compromisso padrão é `finalized`.
* **`minContextSlot`** (número, opcional): O slot mínimo no qual a requisição pode ser avaliada. Isso pode ser usado para garantir que a resposta seja de um estado suficientemente recente.

## Estrutura da Resposta

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

* **`absoluteSlot`** (u64): O número absoluto do slot atual.
* **`blockHeight`** (u64): A altura do bloco atual.
* **`epoch`** (u64): O número do epoch atual.
* **`slotIndex`** (u64): O slot atual em relação ao início do epoch atual.
* **`slotsInEpoch`** (u64): O número total de slots no epoch atual.
* **`transactionCount`** (u64 | null): O número total de transações processadas no epoch atual. Pode ser `null` se os dados não estiverem disponíveis.

## Exemplos

### 1. Obter Informações do Epoch Atual (Sem Parâmetros)

Este exemplo obtém informações sobre o epoch atual usando o compromisso padrão.

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

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

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

  getCurrentEpochInfo();
  ```
</CodeGroup>

### 2. Obter Informações do Epoch Atual com Compromisso 'confirmed'

Este exemplo obtém informações do epoch utilizando o 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": "getEpochInfo",
      "params": [
        {
          "commitment": "confirmed"
        }
      ]
    }'
  ```

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

  async function getConfirmedEpochInfo() {
    const connection = new Connection('https://mainnet.helius-rpc.com/?api-key=<api-key>');
    try {
      const epochInfo = await connection.getEpochInfo('confirmed'); // Or connection.getEpochInfo({ commitment: 'confirmed' });
      console.log(JSON.stringify(epochInfo, null, 2));
    } catch (error) {
      console.error('Error fetching confirmed epoch information:', error);
    }
  }

  getConfirmedEpochInfo();
  ```
</CodeGroup>

## Dicas para Desenvolvedores

* **Níveis de Compromisso:** A escolha de `commitment` pode afetar a pontualidade e a finalidade dos dados. `processed` é o mais rápido, mas menos seguro, enquanto `finalized` é o mais seguro, mas pode ter um pequeno atraso. Saiba mais sobre [níveis de compromisso](https://www.helius.dev/blog/solana-commitment-levels) para informações detalhadas.
* **Disponibilidade do `transactionCount`:** O campo `transactionCount` pode ser `null` se o nó não tiver essa informação prontamente disponível ou se não estiver sendo rastreada para o nível de compromisso específico.
* **Duração do Epoch:** O número de `slotsInEpoch` pode variar. Você pode usar `getEpochSchedule` para obter mais detalhes sobre o cronograma do epoch.

Este guia fornece as informações necessárias para usar o método RPC `getEpochInfo` para recuperar detalhes sobre o epoch atual na rede Solana.

## Métodos Relacionados

<CardGroup cols={2}>
  <Card title="getEpochSchedule" href="/docs/pt-BR/api-reference/rpc/http/getepochschedule">
    Obtenha detalhes sobre o cronograma dos epochs
  </Card>

  <Card title="getSlot" href="/docs/pt-BR/api-reference/rpc/http/getslot">
    Obtenha o número do slot atual
  </Card>
</CardGroup>
