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

# getEpochScheduleの使用方法

> getEpochScheduleの使用例、コード例、リクエストパラメータ、応答構造、およびヒントを学びます。

[`getEpochSchedule`](https://www.helius.dev/docs/api-reference/rpc/http/getepochschedule) RPCメソッドは、クラスターのジェネシス設定からエポックスケジュール情報を返します。このデータは、エポックがどのように構成されているか、その長さ、およびリーダースケジュールがエポックの開始時に対してどのように決定されるかを定義します。

エポックスケジュールを理解することは、ネットワークイベントに調整したり、エポックの境界を予測したり、リーダー回転メカニズムを理解する必要があるアプリケーションにとって重要です。

## 一般的な使用例

* **エポック境界の予測:** エポック内のスロット数を決定し、現在のエポックがいつ終了し、次がいつ開始するかを推定します。
* **リーダースケジュール計算:** `leaderScheduleSlotOffset`を理解して、来るエポックのリーダースケジュールがどれだけ前に生成されるかを知ります。
* **ネットワーク初期化の分析:** `warmup`、`firstNormalEpoch`、`firstNormalSlot`を観察して、クラスターのエポック長の初期ランプアップフェーズを理解します（該当する場合）。
* **ネットワーク監視ツールの構築:** この情報を使用して、エポックのタイミングと進行を正確に表示します。

## リクエストパラメータ

このメソッドにはパラメータはありません。

## 応答構造

JSON-RPC応答の`result`フィールドは以下のフィールドを含むオブジェクトになります：

* **`slotsPerEpoch`** (u64): 各エポックの最大スロット数（ウォームアップ期間後）。
* **`leaderScheduleSlotOffset`** (u64): そのエポックのリーダースケジュールが生成されるエポック開始前のスロット数。
* **`warmup`** (boolean): クラスターがウォームアップ期間を持ち、エポックが短く始まり徐々に長くなるかどうかを示すブール値。
* **`firstNormalEpoch`** (u64): 完全な`slotsPerEpoch`長を持つ最初のエポック番号。`warmup`がtrueの場合に関連します。
* **`firstNormalSlot`** (u64): `firstNormalEpoch`の最初のスロットのスロットインデックス。`warmup`がtrueの場合に関連します。

## 例

### 1. クラスターのエポックスケジュールを取得

この例は、エポックスケジュールを取得します。

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

## 開発者向けのヒント

* **静的情報:** エポックスケジュールはクラスターのジェネシス設定によって決定され、重大なネットワークアップグレードまたは異なるパラメータを持つ新しいクラスターの起動がない限り、一般的に変更されません。
* **メインネットとテストネット/Devnet:** エポックスケジュール、特に`slotsPerEpoch`とウォームアップパラメータは、メインネットベータ、テストネット、およびDevnetの間で大きく異なる場合があります。関心のある特定のクラスターを必ずクエリしてください。
* **ウォームアップ期間:** `warmup`が`true`の場合、`firstNormalEpoch`前のエポックには`slotsPerEpoch`より少ないスロットがあります。ウォームアップエポックの長さの正確な計算は`2^N * MINIMUM_SLOTS_PER_EPOCH`で、Nは`firstNormalEpoch`に到達するまで（0から始まる）エポック番号です。通常、`MINIMUM_SLOTS_PER_EPOCH`は32です。

このガイドは、Solanaクラスター内のエポックの基本的なタイミングと構造を理解するために、`getEpochSchedule` RPCメソッドを使用するために必要な情報を提供します。
