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

# getBlocksWithLimitを使用する方法

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

[`getBlocksWithLimit`](https://www.helius.dev/docs/api-reference/rpc/http/getblockswithlimit) RPCメソッドは、指定されたスロットから開始して、指定された制限までの確認済みのブロックスロット番号のリストを取得できます。これは、台帳の特定のポイントから特定の数の後続の確認済み[ブロック](https://www.helius.dev/blog/solana-slots-blocks-and-epochs)を必要とする場合に役立ちます。

<Warning>
  **パフォーマンス向上のためのバッチ処理の回避**

  アーカイブメソッドのバッチ処理は待機時間を大幅に増加させます。10件を超えるリクエストのバッチは許可されていません。
</Warning>

## 一般的な使用例

* **固定数の後続ブロックの取得:** 特定の開始スロットの後で確認されたブロックスロットを定義された数だけ取得します。
* **ページネーションされたブロックの探索:** ブロックチェーンのセグメントを分析するときにブロックをチャンクで取得します。
* **最近のブロックの監視:** 既知の最近のスロットから最後のNブロックを取得します。

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

`getBlocksWithLimit`メソッドは以下のパラメータを取ります:

1. **`start_slot`** (u64, 必須): 考慮する最初のスロット（含む）。
2. **`limit`** (u64, 必須): 返す最大ブロックスロット数。クエリされるスロットの合計数（`start_slot`からそれ以降の`limit`ブロックまで）**は500,000スロットを超えてはなりません**。
3. **`commitment`** (string, 任意): クエリのコミットメントレベルを指定します。省略された場合、ノードのデフォルトコミットメントが使用されます。これは、構成オブジェクトの唯一のフィールドとして最後のパラメータで渡されます。

## レスポンス構造

JSON-RPCレスポンスの`result`フィールドは、u64整数の配列となります。配列内の各整数は、`start_slot`から指定された`limit`までの確認済みブロックスロット番号を表します。

* 例: `start_slot`が5で`limit`が3の場合、可能な結果は`[5, 6, 7]`です。

## 例

### 1. 開始スロットからの限定数のブロックを取得

この例では、スロット`280000000`から開始して最大5つの確認済みブロックスロットのリストを取得します。

<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": "getBlocksWithLimit",
      "params": [
        280000000, 
        5 
      ]
    }'
  ```

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

  async function getBlocksWithLimitExample(startSlot, limit) {
    const connection = new Connection('https://mainnet.helius-rpc.com/?api-key=<api-key>');
    try {
      const blocks = await connection.getBlocksWithLimit(startSlot, limit);
      console.log(`Up to ${limit} confirmed blocks starting from slot ${startSlot}:`, blocks);
    } catch (error) {
      console.error('Error fetching blocks with limit:', error);
    }
  }

  // Example usage:
  const startSlot = 280000000;
  const limit = 5;
  getBlocksWithLimitExample(startSlot, limit);
  ```
</CodeGroup>

### 2. 特定のコミットメントレベルでの限定ブロックの取得

この例では、コミットメントレベル`confirmed`を使用してスロット`290000000`から開始して最大3つのブロックを取得します。

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

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

  async function getBlocksWithLimitAndCommitment(startSlot, limit) {
    const connection = new Connection('https://mainnet.helius-rpc.com/?api-key=<api-key>');
    try {
      const blocks = await connection.getBlocksWithLimit(startSlot, limit, { commitment: 'confirmed' });
      console.log(`Up to ${limit} confirmed blocks (with 'confirmed' commitment) starting from slot ${startSlot}:`, blocks);
    } catch (error) {
      console.error('Error fetching blocks with limit and commitment:', error);
    }
  }

  // Example usage:
  const commitStartSlot = 290000000;
  const commitLimit = 3;
  getBlocksWithLimitAndCommitment(commitStartSlot, commitLimit);
  ```
</CodeGroup>

## 開発者のヒント

* **範囲の明確化:** `limit`パラメータは返すブロック*スロット*の最大数を決定します。500,000スロットの制約は、概念的にスキャンされる範囲（つまり、`start_slot`から`start_slot + limit - 1`まで）に適用されます。この概念的な範囲が500,000スロットを超えないようにし、さらに実際のブロックが見つかりその範囲内で返される場合でも、少ないブロックになります。
* **ノードデータの可用性:** ノードはすべての履歴スロットの情報を保持していない可能性があります。非常に古い`start_slot`は、指定された`limit`より少ないブロックを返すか、ノードの台帳保持に応じて空の配列を返すことがあります。
* **ブロックの確認:** このメソッドは*確認済み*ブロックを返します。選択した`commitment`レベルとクエリするノードによって、非常に最近のスロットで特に、ブロックの正確なセットがわずかに異なる場合があります。
* **ユースケースの特定:** `getBlocksWithLimit`は、開始点がわかっていて一定数の後続ブロックが必要な場合に最適です。既知のスロット範囲内のすべてのブロックが必要な場合、`getBlocks`はより適切かもしれません。

このガイドは、Solanaネットワーク上で特定の数の確認済みブロックスロットを一覧表示するために`getBlocksWithLimit` RPCメソッドを使用する方法を明確に概説します。

## 関連メソッド

<CardGroup cols={2}>
  <Card title="getBlocks" href="/ja/api-reference/rpc/http/getblocks">
    スロット範囲内のすべてのブロックを取得します
  </Card>

  <Card title="getBlock" href="/ja/api-reference/rpc/http/getblock">
    特定のブロックに関する詳細情報を取得します
  </Card>
</CardGroup>
