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

# Cómo usar getClusterNodes

> Conoce los casos de uso de getClusterNodes, ejemplos de código, parámetros de solicitud, estructura de respuesta y consejos.

El método RPC [`getClusterNodes`](https://www.helius.dev/docs/api-reference/rpc/http/getclusternodes) devuelve una lista de todos los nodos conocidos que participan actualmente en el clúster de Solana. Esta información puede ser útil para analizar la red, descubrir endpoints RPC alternativos o comprender la topología actual de la red desde la perspectiva del nodo consultado.

## Casos de uso comunes

* **Análisis de la topología de la red:** Obtén una instantánea de los nodos conocidos del clúster, incluidas sus claves públicas y direcciones de red (gossip, TPU, RPC).
* **Descubrimiento de endpoints RPC:** Identifica otros posibles servidores RPC dentro del clúster, aunque su disponibilidad y límites de frecuencia pueden variar.
* **Monitoreo de versiones de nodos:** Observa las versiones de software que ejecutan los distintos nodos del clúster.

## Parámetros de solicitud

Este método no acepta ningún parámetro.

## Estructura de la respuesta

El campo `result` de la respuesta JSON-RPC será un arreglo de objetos. Cada objeto representa un nodo y contiene los siguientes campos:

* **`pubkey`** (string): La clave pública (identidad) del nodo, codificada en base58.
* **`gossip`** (string | null): La dirección IP y el puerto del servicio gossip del nodo. Puede ser `null` si no está disponible.
* **`tpu`** (string | null): La dirección IP y el puerto de la Unidad de Procesamiento de Transacciones (TPU) del nodo. Se usa para enviar transacciones directamente. Puede ser `null`.
* **`rpc`** (string | null): La dirección IP y el puerto del servicio JSON-RPC del nodo. Puede ser `null` si el servicio RPC no está habilitado o este nodo no lo anuncia.
* **`version`** (string | null): La versión de software del nodo. Puede ser `null` si la información de la versión no está disponible.
* **`featureSet`** (u32 | null): El identificador único del conjunto de características del nodo. Puede ser `null`.
* **`shredVersion`** (u16 | null): La versión de la estructura de datos que usa este nodo para almacenar y transmitir bloques (shreds). Puede ser `null`.

## Ejemplos

### 1. Obtén todos los nodos conocidos del clúster

Este ejemplo obtiene la lista de todos los nodos conocidos por el endpoint RPC consultado.

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

## Consejos para desarrolladores

* **Perspectiva del nodo:** La lista devuelta refleja los nodos que conoce el nodo RPC específico que consultas. Distintos nodos RPC pueden tener vistas ligeramente diferentes del clúster, especialmente durante cambios en la red.
* **Disponibilidad de RPC:** No todos los nodos de la lista tendrán necesariamente sus puertos RPC abiertos o accesibles públicamente. Si el campo `rpc` no es nulo, indica que se anuncia un endpoint RPC, pero no garantiza su accesibilidad ni rendimiento.
* **Lista dinámica:** La topología del clúster es dinámica. Los nodos pueden unirse y retirarse, por lo que la lista puede cambiar con el tiempo.
* **Respuesta extensa:** En una red grande como Mainnet Beta, la respuesta puede ser bastante extensa e incluir muchos nodos.

Esta guía proporciona la información necesaria para usar el método RPC `getClusterNodes` a fin de descubrir y comprender los nodos de un clúster de Solana.
