> ## 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 的使用案例、代码示例、请求参数、响应结构和提示。

[此](https://www.helius.dev/docs/api-reference/rpc/http/getclusternodes) RPC 方法返回当前参与 Solana 集群的所有已知节点的列表。此信息可用于网络分析、发现备用 RPC 端点或从查询节点的角度了解当前网络拓扑。

## 常见用例

* **网络拓扑分析：** 获取集群中已知节点的快照，包括它们的公钥和网络地址（gossip、TPU、RPC）。
* **发现 RPC 端点：** 识别集群中其他潜在的 RPC 服务器（尽管可用性和速率限制可能会有所不同）。
* **监控节点版本：** 观察集群中不同节点运行的软件版本。

## 请求参数

此方法不需要任何参数。

## 响应结构

JSON-RPC 响应的字段将是一个对象数组。每个对象代表一个节点，并包含以下字段：

* **（string）**：节点的公钥（身份），base58 编码。
* **（string | null）**：节点 gossip 服务的 IP 地址和端口。如果不可用，可以是。
* **（string | null）**：节点事务处理单元 (TPU) 的 IP 地址和端口。用于直接提交交易。如果不可用，可以是。
* **（string | null）**：节点 JSON-RPC 服务的 IP 地址和端口。如果此节点没有启用或广告 RPC 服务，可以是。
* **（string | null）**：节点的软件版本。如果版本信息不可用，可以是。
* **（u32 | null）**：节点功能集的唯一标识符。如果不可用，可以是。
* **（u16 | 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这样的大型网络上，响应可能相当庞大，列出许多节点。

本指南提供了使用`getClusterNodes` RPC方法的必要信息，以发现和理解Solana集群中的节点。
