getClusterNodes RPC 方法返回当前参与 Solana 集群的所有已知节点的列表。此信息对于网络分析、发现替代 RPC 端点或从查询节点的角度理解当前网络拓扑非常有用。

常见用例

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

请求参数

此方法不需要任何参数。

响应结构

JSON-RPC 响应的 result 字段将是一个对象数组。每个对象代表一个节点,并包含以下字段:
  • pubkey (string): 节点的公钥(身份),base58 编码。
  • gossip (string | null): 节点 gossip 服务的 IP 地址和端口。如果不可用,可以是 null
  • tpu (string | null): 节点事务处理单元 (TPU) 的 IP 地址和端口。用于直接提交交易。如果不可用,可以是 null
  • rpc (string | null): 节点 JSON-RPC 服务的 IP 地址和端口。如果此节点未启用或未公布 RPC 服务,可以是 null
  • version (string | null): 节点的软件版本。如果版本信息不可用,可以是 null
  • featureSet (u32 | null): 节点功能集的唯一标识符。如果不可用,可以是 null
  • shredVersion (u16 | null): 此节点用于存储和传输区块(shreds)的数据结构版本。如果不可用,可以是 null

示例

1. 获取所有已知的集群节点

此示例获取查询的 RPC 端点已知的所有节点列表。
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"
  }'

开发者提示

  • 节点的视角: 返回的列表反映了您正在查询的特定 RPC 节点已知的节点。不同的 RPC 节点可能对集群有略微不同的视图,尤其是在网络变化期间。
  • RPC 可用性: 列出的所有节点不一定都开放或公开可访问其 RPC 端口。rpc 字段非空表示一个已公布的 RPC 端点,但这不保证可访问性或性能。
  • 动态列表: 集群拓扑是动态的。节点可以加入和离开,因此列表可能会随时间变化。
  • 大响应: 在像 Mainnet Beta 这样的大型网络中,响应可能相当广泛,列出许多节点。
本指南提供了使用 getClusterNodes RPC 方法来发现和理解 Solana 集群中的节点所需的信息。