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

# Cara Menggunakan getClusterNodes

> Pelajari kasus penggunaan getClusterNodes, contoh kode, parameter permintaan, struktur respons, dan tips.

Metode RPC [`getClusterNodes`](https://www.helius.dev/docs/api-reference/rpc/http/getclusternodes) mengembalikan daftar semua node yang diketahui dan saat ini berpartisipasi dalam klaster Solana. Informasi ini dapat berguna untuk analisis jaringan, menemukan endpoint RPC alternatif, atau memahami topologi jaringan saat ini dari perspektif node yang dikueri.

## Kasus Penggunaan Umum

* **Analisis Topologi Jaringan:** Dapatkan gambaran singkat tentang node yang diketahui dalam klaster, termasuk kunci publik dan alamat jaringannya (gossip, TPU, RPC).
* **Menemukan Endpoint RPC:** Identifikasi server RPC potensial lainnya dalam klaster (meskipun ketersediaan dan batas laju mungkin berbeda-beda).
* **Memantau Versi Node:** Amati versi perangkat lunak yang dijalankan oleh berbagai node dalam klaster.

## Parameter Permintaan

Metode ini tidak menerima parameter apa pun.

## Struktur Respons

Bidang `result` dalam respons JSON-RPC akan berupa larik objek. Setiap objek mewakili satu node dan berisi bidang berikut:

* **`pubkey`** (string): Kunci publik (identitas) node yang dikodekan dengan base58.
* **`gossip`** (string | null): Alamat IP dan port untuk layanan gossip node. Dapat berupa `null` jika tidak tersedia.
* **`tpu`** (string | null): Alamat IP dan port untuk Transaction Processing Unit (TPU) node. Ini digunakan untuk mengirimkan transaksi secara langsung. Dapat berupa `null`.
* **`rpc`** (string | null): Alamat IP dan port untuk layanan JSON-RPC node. Dapat berupa `null` jika layanan RPC tidak diaktifkan atau tidak diumumkan oleh node ini.
* **`version`** (string | null): Versi perangkat lunak node. Dapat berupa `null` jika informasi versi tidak tersedia.
* **`featureSet`** (u32 | null): Pengidentifikasi unik kumpulan fitur node. Dapat berupa `null`.
* **`shredVersion`** (u16 | null): Versi struktur data yang digunakan oleh node ini untuk menyimpan dan mengirimkan blok (shred). Dapat berupa `null`.

## Contoh

### 1. Dapatkan Semua Node Klaster yang Diketahui

Contoh ini mengambil daftar semua node yang diketahui oleh endpoint RPC yang dikueri.

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

## Tips untuk Pengembang

* **Perspektif Node:** Daftar yang dikembalikan mencerminkan node yang diketahui oleh node RPC tertentu yang Anda kueri. Node RPC yang berbeda mungkin memiliki pandangan yang sedikit berbeda terhadap klaster, terutama selama terjadi perubahan jaringan.
* **Ketersediaan RPC:** Tidak semua node yang tercantum pasti membuka port RPC-nya atau dapat diakses secara publik. Bidang `rpc` yang tidak bernilai null menunjukkan endpoint RPC yang diumumkan, tetapi tidak menjamin aksesibilitas atau performa.
* **Daftar Dinamis:** Topologi klaster bersifat dinamis. Node dapat bergabung dan keluar, sehingga daftar dapat berubah seiring waktu.
* **Respons Besar:** Pada jaringan besar seperti Mainnet Beta, respons dapat berukuran cukup besar dan mencantumkan banyak node.

Panduan ini menyediakan informasi yang diperlukan untuk menggunakan metode RPC `getClusterNodes` guna menemukan dan memahami node dalam klaster Solana.
