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

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

> Узнайте о сценариях использования getClusterNodes, примерах кода, параметрах запроса, структуре ответа и рекомендациях.

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

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

* **Анализ топологии сети:** Получите снимок известных узлов кластера, включая их открытые ключи и сетевые адреса (gossip, TPU, RPC).
* **Поиск конечных точек RPC:** Найдите другие потенциальные серверы RPC в кластере, хотя их доступность и ограничения частоты запросов могут различаться.
* **Мониторинг версий узлов:** Отслеживайте версии программного обеспечения, используемые различными узлами кластера.

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

Этот метод не принимает параметры.

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

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

* **`pubkey`** (string): Открытый ключ (идентификатор) узла в кодировке base58.
* **`gossip`** (string | null): IP-адрес и порт gossip-службы узла. Может иметь значение `null`, если данные недоступны.
* **`tpu`** (string | null): IP-адрес и порт модуля обработки транзакций (TPU) узла. Используется для прямой отправки транзакций. Может иметь значение `null`.
* **`rpc`** (string | null): IP-адрес и порт службы JSON-RPC узла. Может иметь значение `null`, если служба RPC не включена или этот узел ее не объявляет.
* **`version`** (string | null): Версия программного обеспечения узла. Может иметь значение `null`, если информация о версии недоступна.
* **`featureSet`** (u32 | null): Уникальный идентификатор набора функций узла. Может иметь значение `null`.
* **`shredVersion`** (u16 | null): Версия структуры данных, которую этот узел использует для хранения и передачи блоков (шредов). Может иметь значение `null`.

## Примеры

### 1. Получение всех известных узлов кластера

В этом примере запрашивается список всех узлов, известных опрашиваемой конечной точке RPC.

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

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

  async function getNodesInCluster() {
    const connection = new Connection('https://mainnet.helius-rpc.com/?api-key=<api-key>');
    try {
      const clusterNodes = await connection.getClusterNodes();
      console.log(`Found ${clusterNodes.length} cluster nodes:`);
      clusterNodes.forEach(node => {
        console.log(
          `  PubKey: ${node.pubkey}, Gossip: ${node.gossip || 'N/A'}, RPC: ${node.rpc || 'N/A'}, Version: ${node.version || 'N/A'}`
        );
      });
      // For full details:
      // console.log(JSON.stringify(clusterNodes, null, 2));
    } catch (error) {
      console.error('Error fetching cluster nodes:', error);
    }
  }

  getNodesInCluster();
  ```
</CodeGroup>

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

* **Точка зрения узла:** Возвращаемый список отражает узлы, известные конкретному опрашиваемому узлу RPC. Представления разных узлов RPC о кластере могут немного различаться, особенно во время изменений в сети.
* **Доступность RPC:** Порты RPC не всех перечисленных узлов обязательно открыты или общедоступны. Ненулевое значение поля `rpc` указывает на объявленную конечную точку RPC, но не гарантирует ее доступность или производительность.
* **Динамический список:** Топология кластера динамична. Узлы могут подключаться и отключаться, поэтому список со временем меняется.
* **Большой ответ:** В крупной сети, такой как Mainnet Beta, ответ может быть довольно объемным и содержать множество узлов.

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


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