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

# getEpochInfoの使い方

> getEpochInfoのユースケース、コード例、リクエストパラメータ、レスポンス構造、ヒントを学びましょう。

[`getEpochInfo`](https://www.helius.dev/docs/api-reference/rpc/http/getepochinfo) RPCメソッドは、現在のエポックに関する情報を返します。ネットワークの現在の状態を理解したり、現在のエポックがどの程度進行しているかや次のエポックがいつ始まるかを把握するのに役立ちます。[エポック、スロット、ブロック](https://www.helius.dev/blog/solana-slots-blocks-and-epochs)がSolana上でどのように連携するかを理解するには、詳細な記事を参照してください。

## よくあるユースケース

* **エポック進行状況の監視:** エポック内の現在のスロットインデックスとエポック内の総スロット数を追跡し、残り時間を推定します。
* **ネットワーク状態分析:** 現在のエポック番号、ブロック高、現在のエポックで処理されたトランザクション数を取得します。
* **同期チェック:** ノードがネットワークと適切に同期しているかどうかを、そのエポック情報を比較して確認します。

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

`getEpochInfo`メソッドは、以下のパラメータを持つオプションの設定オブジェクトを取ることができます。

* **`commitment`** (string, optional): 台帳を照会する際に使用する[コミットメントレベル](https://www.helius.dev/blog/solana-commitment-levels)を指定します。
  * `finalized`: ノードは、クラスターの過半数によって最大ロックアウトに達したと確認された最新のブロックを照会します。
  * `confirmed`: ノードは、クラスターの過半数によって投票された最新のブロックを照会します。
  * `processed`: ノードは、最も最近のブロックを照会します。ただし、ブロックが完全ではない可能性があります。
  * 提供されない場合、デフォルトのコミットメントは`finalized`です。
* **`minContextSlot`** (number, optional): リクエストを評価できる最小スロット。これは、応答が十分に新しい状態からのものであることを保証するために使用できます。

## レスポンス構造

JSON-RPC応答の`result`フィールドは、以下のフィールドを含むオブジェクトです。

* **`absoluteSlot`** (u64): 現在の絶対スロット番号。
* **`blockHeight`** (u64): 現在のブロック高。
* **`epoch`** (u64): 現在のエポック番号。
* **`slotIndex`** (u64): 現在のエポックの開始からの現在のスロット。
* **`slotsInEpoch`** (u64): 現在のエポックの総スロット数。
* **`transactionCount`** (u64 | null): 現在のエポックで処理されたトランザクションの総数。データが利用できない場合は`null`になることがあります。

## 例

### 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": "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. 'confirmed'コミットメントで現在のエポック情報を取得

この例では、`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>

## 開発者へのヒント

* **コミットメントレベル:** `commitment`の選択は、データのタイムリーさと最終性に影響を与える可能性があります。`processed`は最も速いですが最も安全ではなく、`finalized`は最も安全ですが少し遅れる可能性があります。[コミットメントレベル](https://www.helius.dev/blog/solana-commitment-levels)の詳細については、こちらをご覧ください。
* **`transactionCount`の利用可能性:** `transactionCount`フィールドは、ノードがこの情報をすぐに利用できない場合や、特定のコミットメントレベルで追跡されていない場合、`null`になることがあります。
* **エポックの長さ:** `slotsInEpoch`の数は変わる可能性があります。エポックスケジュールについての詳細は、`getEpochSchedule`を使用して取得できます。

このガイドは、Solanaネットワーク上で現在のエポックに関する詳細を取得するための`getEpochInfo` RPCメソッドの使用に必要な情報を提供します。

## 関連メソッド

<CardGroup cols={2}>
  <Card title="getEpochSchedule" href="/ja/api-reference/rpc/http/getepochschedule">
    エポックスケジュールについての詳細を取得
  </Card>

  <Card title="getSlot" href="/ja/api-reference/rpc/http/getslot">
    現在のスロット番号を取得
  </Card>
</CardGroup>
