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

> Pelajari kasus penggunaan getEpochInfo, contoh kode, parameter permintaan, struktur respons, dan kiat.

Metode RPC [`getEpochInfo`](https://www.helius.dev/docs/api-reference/rpc/http/getepochinfo) mengembalikan informasi tentang epoch saat ini. Metode ini berguna untuk memahami kondisi jaringan saat ini, sejauh mana jaringan telah berjalan dalam epoch saat ini, dan kapan epoch berikutnya mungkin dimulai. Untuk lebih memahami cara kerja [epoch, slot, dan blok](https://www.helius.dev/blog/solana-slots-blocks-and-epochs) secara bersamaan di Solana, lihat artikel terperinci kami.

## Kasus Penggunaan Umum

* **Memantau Progres Epoch:** Lacak indeks slot saat ini dalam epoch dan jumlah total slot dalam epoch untuk memperkirakan waktu yang tersisa.
* **Analisis Kondisi Jaringan:** Dapatkan nomor epoch saat ini, tinggi blok, dan jumlah transaksi yang diproses dalam epoch saat ini.
* **Pemeriksaan Sinkronisasi:** Pastikan node cukup tersinkronisasi dengan jaringan dengan membandingkan informasi epochnya.

## Parameter Permintaan

Metode `getEpochInfo` dapat menerima objek konfigurasi opsional dengan parameter berikut:

* **`commitment`** (string, opsional): Menentukan [tingkat komitmen](https://www.helius.dev/blog/solana-commitment-levels) yang akan digunakan saat mengkueri buku besar.
  * `finalized`: Node akan mengkueri blok terbaru yang telah dikonfirmasi oleh supermayoritas klaster sebagai blok yang telah mencapai penguncian maksimum.
  * `confirmed`: Node akan mengkueri blok terbaru yang telah dipilih oleh supermayoritas klaster.
  * `processed`: Node akan mengkueri blok terbarunya. Perhatikan bahwa blok tersebut mungkin belum lengkap.
  * Jika tidak diberikan, komitmen default adalah `finalized`.
* **`minContextSlot`** (number, opsional): Slot minimum tempat permintaan dapat dievaluasi. Parameter ini dapat digunakan untuk memastikan respons berasal dari kondisi yang cukup baru.

## Struktur Respons

Bidang `result` dari respons JSON-RPC akan berupa objek yang berisi bidang-bidang berikut:

* **`absoluteSlot`** (u64): Nomor slot absolut saat ini.
* **`blockHeight`** (u64): Tinggi blok saat ini.
* **`epoch`** (u64): Nomor epoch saat ini.
* **`slotIndex`** (u64): Slot saat ini relatif terhadap awal epoch saat ini.
* **`slotsInEpoch`** (u64): Jumlah total slot dalam epoch saat ini.
* **`transactionCount`** (u64 | null): Jumlah total transaksi yang diproses dalam epoch saat ini. Nilainya dapat berupa `null` jika data tidak tersedia.

## Contoh

### 1. Dapatkan Informasi Epoch Saat Ini (Tanpa Parameter)

Contoh ini mengambil informasi tentang epoch saat ini menggunakan komitmen default.

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

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

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

  getCurrentEpochInfo();
  ```
</CodeGroup>

### 2. Dapatkan Informasi Epoch Saat Ini dengan Komitmen 'confirmed'

Contoh ini mengambil informasi epoch menggunakan komitmen `confirmed`.

<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": "getEpochInfo",
      "params": [
        {
          "commitment": "confirmed"
        }
      ]
    }'
  ```

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

  async function getConfirmedEpochInfo() {
    const connection = new Connection('https://mainnet.helius-rpc.com/?api-key=<api-key>');
    try {
      const epochInfo = await connection.getEpochInfo('confirmed'); // Or connection.getEpochInfo({ commitment: 'confirmed' });
      console.log(JSON.stringify(epochInfo, null, 2));
    } catch (error) {
      console.error('Error fetching confirmed epoch information:', error);
    }
  }

  getConfirmedEpochInfo();
  ```
</CodeGroup>

## Kiat untuk Pengembang

* **Tingkat Komitmen:** Pilihan `commitment` dapat memengaruhi kebaruan dan finalitas data. `processed` adalah yang tercepat tetapi paling tidak aman, sedangkan `finalized` adalah yang paling aman tetapi mungkin sedikit tertinggal. Pelajari lebih lanjut tentang [tingkat komitmen](https://www.helius.dev/blog/solana-commitment-levels) untuk informasi terperinci.
* **Ketersediaan `transactionCount`:** Bidang `transactionCount` mungkin bernilai `null` jika node tidak memiliki informasi ini atau jika informasi tersebut tidak dilacak untuk tingkat komitmen tertentu.
* **Panjang Epoch:** Jumlah `slotsInEpoch` dapat bervariasi. Anda dapat menggunakan `getEpochSchedule` untuk mendapatkan detail selengkapnya tentang jadwal epoch.

Panduan ini menyediakan informasi yang diperlukan untuk menggunakan metode RPC `getEpochInfo` guna mengambil detail tentang epoch saat ini di jaringan Solana.

## Metode Terkait

<CardGroup cols={2}>
  <Card title="getEpochSchedule" href="/docs/id/api-reference/rpc/http/getepochschedule">
    Dapatkan detail tentang jadwal epoch
  </Card>

  <Card title="getSlot" href="/docs/id/api-reference/rpc/http/getslot">
    Dapatkan nomor slot saat ini
  </Card>
</CardGroup>
