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

# getSlotLeaderの使い方

> getSlotLeaderの使用例、コード例、リクエストパラメータ、レスポンス構造、およびヒントを学びましょう。

[`getSlotLeader`](https://www.helius.dev/docs/api-reference/rpc/http/getslotleader) RPCメソッドは、指定されたコミットメントレベルでのノードのビューに基づいて、ブロック生成の現在のリーダーであるバリデーターの公開鍵を返します。リーダーは、現在のスロットのブロック生成を担当します。

## 一般的な使用例

* **現在のブロックプロデューサーの特定:** 現在ブロックを生成する予定のバリデーターを確認します。
* **ネットワークモニタリング:** スロットリーダーのローテーションを観察します。
* **トランザクションの問題のデバッグ:** 高度なシナリオでは、トランザクションがリーダーに直接送信される場合、現在のスロットリーダーを知ることが関連するかもしれません（ただし、これは一般的なクライアント側のプラクティスではありません）。

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

このメソッドは、最初のパラメータとしてオプションの構成オブジェクトを取ります：

1. **`options`** (`object`, optional): 次のフィールドを含むオプションの構成オブジェクトです:

* **`commitment`** (`string`, optional): クエリの[コミットメントレベル](https://www.helius.dev/blog/solana-commitment-levels)を指定します。サポートされる値は`finalized`、`confirmed`、または`processed`です。省略した場合、RPCノードのデフォルトのコミットメントが使用されます（通常は`finalized`）。スロットリーダーは、このコミットメントレベルに一致するスロットに基づいて決定されます。
* **`minContextSlot`** (`number`, optional): リクエストが評価される可能性のある最小スロットです。これにより、ノードのコンテキストの最小スロットが設定されます。

## レスポンス構造

JSON-RPCレスポンスの`result`フィールドは、現在のスロットリーダーの公開鍵（アイデンティティ）を表す単一のbase-58エンコードされた文字列です。

**レスポンス例:**

```json theme={"system"}
{
  "jsonrpc": "2.0",
  "result": "ENvAW7JScgYq6o4zKZwewtkzzJgDzuJAFxYasvmEQdpS",
  "id": 1
}
```

## 例

### 1. 現在のスロットリーダーを取得（デフォルトコミットメント）

この例では、ノードのデフォルトのコミットメントレベルを使用して現在のスロットリーダーを取得します（通常は`finalized`）。

<CodeGroup>
  ```bash cURL theme={"system"}
  # Replace <api-key> with your Helius API key
  curl https://mainnet.helius-rpc.com/?api-key=<api-key> -X POST -H "Content-Type: application/json" -d \
    '{
      "jsonrpc": "2.0",
      "id": 1,
      "method": "getSlotLeader"
    }'
  ```

  ```javascript JavaScript (using @solana/web3.js) theme={"system"}
  // Replace <api-key> with your Helius API key
  const { Connection } = require('@solana/web3.js');

  async function getCurrentSlotLeader() {
    const connection = new Connection('https://mainnet.helius-rpc.com/?api-key=<api-key>');
    try {
      const slotLeader = await connection.getSlotLeader();
      console.log('Current slot leader (default commitment):', slotLeader);
    } catch (error) {
      console.error('Error fetching current slot leader:', error);
    }
  }

  getCurrentSlotLeader();
  ```
</CodeGroup>

### 2. `confirmed`コミットメントで現在のスロットリーダーを取得

この例では、`confirmed`コミットメントに到達した最新のスロットのスロットリーダーを取得します。

<CodeGroup>
  ```bash cURL theme={"system"}
  # Replace <api-key> with your Helius API key
  curl https://mainnet.helius-rpc.com/?api-key=<api-key> -X POST -H "Content-Type: application/json" -d \
    '{
      "jsonrpc": "2.0",
      "id": 1,
      "method": "getSlotLeader",
      "params": [
        {
          "commitment": "confirmed"
        }
      ]
    }'
  ```

  ```javascript JavaScript (using @solana/web3.js) theme={"system"}
  // Replace <api-key> with your Helius API key
  const { Connection } = require('@solana/web3.js');

  async function getConfirmedSlotLeader() {
    const connection = new Connection('https://mainnet.helius-rpc.com/?api-key=<api-key>');
    try {
      const slotLeader = await connection.getSlotLeader('confirmed');
      console.log('Current slot leader (confirmed commitment):', slotLeader);
      // Note: For @solana/web3.js v1.30.0 and later, you can pass commitment directly.
      // For older versions or more complex options, use an object:
      // const slotLeader = await connection.getSlotLeader({ commitment: 'confirmed' });
    } catch (error) {
      console.error('Error fetching confirmed slot leader:', error);
    }
  }

  getConfirmedSlotLeader();
  ```
</CodeGroup>

## 開発者へのヒント

* **ダイナミックな特性:** スロットリーダーは頻繁に変わります（通常は数スロットごとに4）。この呼び出しの結果は、ノードの現在のビューと選択されたコミットメントに基づくスナップショットです。
* **コミットメントレベル:** コミットメントレベルは、リーダーを決定するために「現在」とみなされるスロットに影響します。`processed`を使用すると、ノードが認識している最新のスロットのリーダーが得られますが、これは急速に変化し、まだ広範なネットワークによって確認されていない可能性があります。
* **リーダースケジュール:** スロットリーダーのシーケンスは、各エポックの開始時に計算されるリーダースケジュールによって決定されます。[スロット、ブロック、エポックに関するガイド](https://www.helius.dev/blog/solana-slots-blocks-and-epochs)で、このプロセスの詳細を確認できます。将来のリーダーを包括的に見るには、`getLeaderSchedule`を使用してください。
* **ノードの視点:** 返されるスロットリーダーは、クエリしている特定のRPCノードに利用可能な情報に基づいています。ネットワークのレイテンシーにより、異なるノードはわずかに異なるビューを持っているかもしれません。

`getSlotLeader`は、現在ブロックを生成する責任があるバリデーターを迅速に特定する方法を提供します。より広範なリーダーローテーションを見るには、`getLeaderSchedule`を検討してください。

## 関連メソッド

<CardGroup cols={2}>
  <Card title="getLeaderSchedule" href="/ja/api-reference/rpc/http/getleaderschedule">
    エポックの完全なリーダースケジュールを取得する
  </Card>

  <Card title="getSlotLeaders" href="/ja/api-reference/rpc/http/getslotleaders">
    今後のスロット範囲のリーダーを取得する
  </Card>
</CardGroup>
