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

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

Metode RPC [`getEpochSchedule`](https://www.helius.dev/docs/api-reference/rpc/http/getepochschedule) mengembalikan informasi jadwal [epoch](https://www.helius.dev/blog/solana-slots-blocks-and-epochs) dari konfigurasi genesis klaster. Data ini menentukan struktur epoch, termasuk panjangnya dan cara jadwal pemimpin ditentukan relatif terhadap awal epoch.

Memahami jadwal epoch sangat penting bagi aplikasi yang perlu diselaraskan dengan peristiwa jaringan, memprediksi batas epoch, atau memahami mekanisme rotasi pemimpin.

## Kasus Penggunaan Umum

* **Memprediksi Batas Epoch:** Tentukan jumlah slot dalam suatu epoch untuk memperkirakan kapan epoch saat ini akan berakhir dan epoch berikutnya akan dimulai.
* **Penghitungan Jadwal Pemimpin:** Pahami `leaderScheduleSlotOffset` untuk mengetahui seberapa jauh sebelumnya jadwal pemimpin dibuat untuk epoch mendatang.
* **Menganalisis Inisialisasi Jaringan:** Amati `warmup`, `firstNormalEpoch`, dan `firstNormalSlot` untuk memahami fase peningkatan awal panjang epoch klaster jika berlaku.
* **Membangun Alat Pemantauan Jaringan:** Gunakan informasi ini untuk menampilkan waktu dan progres epoch secara akurat.

## Parameter Permintaan

Metode ini tidak menerima parameter apa pun.

## Struktur Respons

Kolom `result` dari respons JSON-RPC akan berupa objek yang berisi kolom-kolom berikut:

* **`slotsPerEpoch`** (u64): Jumlah maksimum slot dalam setiap epoch (setelah periode pemanasan, jika ada).
* **`leaderScheduleSlotOffset`** (u64): Jumlah slot sebelum dimulainya suatu epoch ketika jadwal pemimpin untuk epoch tersebut dibuat.
* **`warmup`** (boolean): Nilai boolean yang menunjukkan apakah klaster memiliki periode pemanasan ketika epoch dimulai dengan panjang yang lebih pendek dan meningkat secara bertahap.
* **`firstNormalEpoch`** (u64): Nomor epoch pertama yang memiliki panjang `slotsPerEpoch` penuh. Ini relevan jika `warmup` bernilai true.
* **`firstNormalSlot`** (u64): Indeks slot dari slot pertama dalam `firstNormalEpoch`. Ini relevan jika `warmup` bernilai true.

## Contoh

### 1. Mendapatkan Jadwal Epoch untuk Klaster

Contoh ini mengambil jadwal epoch.

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

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

  async function getClusterEpochSchedule() {
    const connection = new Connection('https://mainnet.helius-rpc.com/?api-key=<api-key>');
    try {
      const epochSchedule = await connection.getEpochSchedule();
      console.log(JSON.stringify(epochSchedule, null, 2));
    } catch (error) {
      console.error('Error fetching epoch schedule:', error);
    }
  }

  getClusterEpochSchedule();
  ```
</CodeGroup>

## Tips untuk Developer

* **Informasi Statis:** Jadwal epoch ditentukan oleh konfigurasi genesis klaster dan umumnya tidak berubah kecuali terjadi peningkatan jaringan yang signifikan atau peluncuran klaster baru dengan parameter berbeda.
* **Mainnet vs. Testnet/Devnet:** Jadwal epoch, khususnya `slotsPerEpoch` dan parameter pemanasan, dapat sangat berbeda antara Mainnet Beta, Testnet, dan Devnet. Selalu lakukan kueri pada klaster tertentu yang Anda perlukan.
* **Periode Pemanasan:** Jika `warmup` bernilai `true`, epoch sebelum `firstNormalEpoch` akan memiliki lebih sedikit slot daripada `slotsPerEpoch`. Penghitungan pasti untuk panjang epoch selama pemanasan adalah `2^N * MINIMUM_SLOTS_PER_EPOCH`, dengan N sebagai nomor epoch (dimulai dari 0) hingga `firstNormalEpoch` tercapai. `MINIMUM_SLOTS_PER_EPOCH` biasanya bernilai 32.

Panduan ini menyediakan informasi yang diperlukan untuk menggunakan metode RPC `getEpochSchedule` guna memahami waktu dan struktur dasar epoch dalam klaster Solana.
