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

# Как использовать getEpochInfo

> Изучите сценарии использования getEpochInfo, примеры кода, параметры запроса, структуру ответа и рекомендации.

Метод RPC [`getEpochInfo`](https://www.helius.dev/docs/api-reference/rpc/http/getepochinfo) возвращает информацию о текущей эпохе. Это помогает понять текущее состояние сети, насколько далеко сеть продвинулась в текущей эпохе и когда может начаться следующая эпоха. Чтобы лучше понять, как [эпохи, слоты и блоки](https://www.helius.dev/blog/solana-slots-blocks-and-epochs) взаимодействуют в Solana, ознакомьтесь с нашей подробной статьей.

## Распространенные сценарии использования

* **Отслеживание хода эпохи:** Отслеживайте индекс текущего слота в эпохе и общее количество слотов в эпохе, чтобы оценить оставшееся время.
* **Анализ состояния сети:** Получайте номер текущей эпохи, высоту блока и количество транзакций, обработанных в текущей эпохе.
* **Проверки синхронизации:** Проверяйте, достаточно ли узел синхронизирован с сетью, сравнивая информацию о его эпохе.

## Параметры запроса

Метод `getEpochInfo` может принимать необязательный объект конфигурации со следующими параметрами:

* **`commitment`** (строка, необязательно): Задает [уровень подтверждения](https://www.helius.dev/blog/solana-commitment-levels), используемый при запросе к реестру.
  * `finalized`: Узел запросит самый последний блок, который квалифицированное большинство кластера подтвердило как достигший максимального периода блокировки.
  * `confirmed`: Узел запросит самый последний блок, за который проголосовало квалифицированное большинство кластера.
  * `processed`: Узел запросит свой самый последний блок. Обратите внимание, что блок может быть неполным.
  * Если параметр не указан, по умолчанию используется уровень подтверждения `finalized`.
* **`minContextSlot`** (число, необязательно): Минимальный слот, на котором может быть обработан запрос. Этот параметр позволяет убедиться, что ответ получен из достаточно актуального состояния.

## Структура ответа

Поле `result` ответа JSON-RPC будет содержать объект со следующими полями:

* **`absoluteSlot`** (u64): Текущий абсолютный номер слота.
* **`blockHeight`** (u64): Текущая высота блока.
* **`epoch`** (u64): Номер текущей эпохи.
* **`slotIndex`** (u64): Текущий слот относительно начала текущей эпохи.
* **`slotsInEpoch`** (u64): Общее количество слотов в текущей эпохе.
* **`transactionCount`** (u64 | null): Общее количество транзакций, обработанных в текущей эпохе. Может иметь значение `null`, если данные недоступны.

## Примеры

### 1. Получение информации о текущей эпохе (без параметров)

В этом примере запрашивается информация о текущей эпохе с уровнем подтверждения по умолчанию.

<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. Получение информации о текущей эпохе с уровнем подтверждения 'confirmed'

В этом примере запрашивается информация об эпохе с уровнем подтверждения `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>

## Рекомендации для разработчиков

* **Уровни подтверждения:** Выбор `commitment` может влиять на актуальность и окончательность данных. `processed` — самый быстрый, но наименее безопасный вариант, а `finalized` — самый безопасный, но может немного отставать. Подробнее см. в материале об [уровнях подтверждения](https://www.helius.dev/blog/solana-commitment-levels).
* **Доступность `transactionCount`:** Поле `transactionCount` может иметь значение `null`, если у узла нет оперативного доступа к этой информации или она не отслеживается для указанного уровня подтверждения.
* **Длительность эпохи:** Количество `slotsInEpoch` может различаться. Чтобы получить дополнительные сведения о расписании эпох, используйте `getEpochSchedule`.

В этом руководстве приведена необходимая информация об использовании метода RPC `getEpochInfo` для получения сведений о текущей эпохе в сети Solana.

## Связанные методы

<CardGroup cols={2}>
  <Card title="getEpochSchedule" href="/docs/ru/api-reference/rpc/http/getepochschedule">
    Получение сведений о расписании эпох
  </Card>

  <Card title="getSlot" href="/docs/ru/api-reference/rpc/http/getslot">
    Получение номера текущего слота
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.