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

# getBlocksの使用方法

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

この[`getBlocks`](https://www.helius.dev/docs/api-reference/rpc/http/getblocks) RPCメソッドを使用すると、指定した開始スロットとオプションの終了[スロット](https://www.helius.dev/blog/solana-slots-blocks-and-epochs)の間の確認済みブロックスロット番号のリストを取得できます。これは、特定の範囲内でどのブロックが確認されたかを、各ブロックの完全な内容を取得せずに知る必要がある場合に便利です。

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

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

## 一般的な使用例

* **範囲内の確認済みブロックの識別：** 原簿の2つのポイント間で正常に確認されたすべてのブロックスロットのリストをすばやく取得します。
* **ブロックの反復処理：** 必要に応じて`getBlock`を使用して各ブロックの詳細情報を取得するために、返されたスロットのリストを使用します。
* **基本的なブロック監査：** 特定の範囲内でのブロックの存在を確認します。

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

`getBlocks`メソッドは次のパラメータを取ります：

1. **`start_slot`** (u64, 必須): 範囲の最初に考慮するスロット（包含）。
2. **`end_slot`** (u64, オプション): 範囲の最後に考慮するスロット（包含）。
   * 指定されていない場合、クエリは`start_slot`から最新の確認済みスロットまでのブロックを返します。
   * `start_slot`と`end_slot`（または`end_slot`が省略された場合は最新スロット）の間の範囲は**500,000スロットを超えてはいけません**。
3. **`commitment`** (文字列, オプション): クエリのコミットメントレベルを指定します。省略された場合、ノードのデフォルトコミットメントが使用されます。これは最後のパラメータとして設定オブジェクトの唯一のフィールドとして渡されます。

## レスポンス構造

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

* 例: `[5, 6, 7, 8, 9, 10]`

## 例

### 1. 特定のスロット範囲内のブロックを取得する

この例では、スロット`250000000`と`250000010`の間の確認済みブロックスロットのリストを取得します。

<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": "getBlocks",
      "params": [
        250000000,
        250000010
      ]
    }'
  ```

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

  async function getBlocksInRange(startSlot, endSlot) {
    const connection = new Connection('https://mainnet.helius-rpc.com/?api-key=<api-key>');
    try {
      const blocks = await connection.getBlocks(startSlot, endSlot);
      console.log(`Confirmed blocks between slot ${startSlot} and ${endSlot}:`, blocks);
    } catch (error) {
      console.error('Error fetching blocks:', error);
    }
  }

  // Example usage:
  const startSlot = 250000000;
  const endSlot = 250000010;
  getBlocksInRange(startSlot, endSlot);
  ```
</CodeGroup>

### 2. 開始スロットから最新の確認済みスロットまでのブロックを取得する

この例では、開始スロット`260000000`からノードによって確認された最新ブロックまでの確認済みブロックスロットを取得します（開始スロットからの500,000スロット範囲制限を尊重します）。

<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": "getBlocks",
      "params": [
        260000000 
      ]
    }'
  ```

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

  async function getBlocksFromStart(startSlot) {
    const connection = new Connection('https://mainnet.helius-rpc.com/?api-key=<api-key>');
    try {
      // The endSlot parameter is omitted to fetch up to the latest confirmed block
      const blocks = await connection.getBlocks(startSlot);
      console.log(`Confirmed blocks from slot ${startSlot} to latest:`, blocks);
      if (blocks.length > 0) {
        console.log(`Latest block in range: ${blocks[blocks.length - 1]}`);
      }
    } catch (error) {
      console.error('Error fetching blocks:', error);
    }
  }

  // Example usage (ensure this doesn't exceed the 500,000 slot limit from latest block):
  const recentStartSlot = 260000000; 
  getBlocksFromStart(recentStartSlot);
  ```
</CodeGroup>

### 3. 特定のコミットメントレベルでのブロックを取得する

この例では、`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": "getBlocks",
      "params": [
        270000000,
        270000005,
        { "commitment": "confirmed" }
      ]
    }'
  ```

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

  async function getBlocksWithCommitment(startSlot, endSlot) {
    const connection = new Connection('https://mainnet.helius-rpc.com/?api-key=<api-key>');
    try {
      const blocks = await connection.getBlocks(startSlot, endSlot, { commitment: 'confirmed' });
      console.log(`Confirmed blocks (with 'confirmed' commitment) between slot ${startSlot} and ${endSlot}:`, blocks);
    } catch (error) {
      console.error('Error fetching blocks with commitment:', error);
    }
  }

  // Example usage:
  const commitStartSlot = 270000000;
  const commitEndSlot = 270000005;
  getBlocksWithCommitment(commitStartSlot, commitEndSlot);
  ```
</CodeGroup>

## 開発者へのヒント

* **範囲制限：** 500,000スロットの範囲制限を覚えておいてください。より大きな範囲を要求するとエラーが発生します。
* **ノードデータの利用可能性：** ノードはすべての過去のスロット情報を保持しているわけではありません。非常に古い`start_slot`値は、ノードの設定と台帳保持によっては、空の配列やエラーを返すことがあります。
* **ブロックの確認：** このメソッドは*確認済み*ブロックを返します。選択した`commitment`レベルとクエリを実行するノードに応じて、特に非常に最近のスロットの場合、返されるブロックの集合にわずかな違いが生じることがあります。
* **`getBlock`への補完：** `getBlocks`は通常、関連するブロックスロットを識別するための最初のステップとして使用され、その後、リスト内の個々のブロックの詳細を取得するために`getBlock`が使用されます。
* **ページネーションの代替：** `getBlocks`に範囲制限があるため、チェーンの非常に大きな部分をスキャンする必要がある場合は、500,000スロット以下のセグメントに分割して、複数回の`getBlocks`呼び出しを行う必要があります。

このガイドは、Solanaネットワークで確認済みブロックスロットをリストするための`getBlocks` RPCメソッドの使用方法を明確に概説しています。

## 関連メソッド

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

  <Card title="getBlocksWithLimit" href="/ja/api-reference/rpc/http/getblockswithlimit">
    スロットから始まる固定数のブロックを取得します
  </Card>
</CardGroup>
