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

# getBlockTime の使用方法

> getBlockTime のユースケース、コード例、リクエストパラメータ、応答構造、およびヒントについて学びます。

この [`getBlockTime`](https://www.helius.dev/docs/api-reference/rpc/http/getblocktime) RPC メソッドは、スロット番号で識別された特定のブロックの推定生成時間を提供します。時間は Unix タイムスタンプ（Unix エポックからの秒数）として返されます。

このメソッドは、ブロック生成と実世界の時間を関連付ける必要がある場合に便利です。

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

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

## 一般的なユースケース

* **イベントのタイムスタンプ:** 特定のブロックが生成された時刻を決定してオンチェーンのイベントにタイムスタンプを付ける。
* **ブロック生成間隔の分析:** ブロック間の時間差を計算します（詳細な分析には他の方法と組み合わせることができます）。
* **オフチェーンデータの相関:** ブロック生成時刻を一致させてオフチェーンのイベントやデータをオンチェーンの活動と一致させる。

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

`getBlockTime` メソッドは 1 つのパラメータを取ります。

1. **`slot`** (u64, 必須): 推定生成時間を取得するブロックのスロット番号。

## 応答構造

JSON-RPC 応答の `result` フィールドは次のいずれかになります。

* **`timestamp`** (i64): Unix タイムスタンプとしての推定生成時間（Unix エポックからの秒数）。
* **`null`**: 指定されたブロックのタイムスタンプが利用できない場合（例：非常に古いブロックでありデータが削除されている場合、またはブロックがスキップされ関連するタイムスタンプがない場合）。

## 例

### 1. 特定ブロックの推定時間を取得

この例では、特定のスロットの推定生成時間を取得します。あなたが対象としているネットワーク（例：Mainnet Beta または Devnet）で最新の確認されたスロットと `SLOT_NUMBER_TO_QUERY` を置き換えてください。

<CodeGroup>
  ```bash cURL theme={"system"}
  # Replace SLOT_NUMBER_TO_QUERY with a valid slot, e.g., a recent one from an explorer
  curl https://mainnet.helius-rpc.com/?api-key=<api-key> -X POST -H "Content-Type: application/json" -d \
    '{
      "jsonrpc": "2.0",
      "id": 1,
      "method": "getBlockTime",
      "params": [
        SLOT_NUMBER_TO_QUERY 
      ]
    }'
  ```

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

  async function getSpecificBlockTime(slotToQuery) {
    const connection = new Connection('https://mainnet.helius-rpc.com/?api-key=<api-key>');
    try {
      const blockTime = await connection.getBlockTime(slotToQuery);
      if (blockTime !== null) {
        console.log(`Estimated time for slot ${slotToQuery}: ${new Date(blockTime * 1000).toISOString()} (Unix: ${blockTime})`);
      } else {
        console.log(`Timestamp not available for slot ${slotToQuery}.`);
      }
    } catch (error) {
      console.error('Error fetching block time:', error);
    }
  }

  // Example usage: Replace with a recent, valid slot number from Mainnet Beta
  // You can find recent slots on Solana explorers like Solscan or SolanaFM
  const slotToQuery = 300000000; // Replace with an actual slot number
  getSpecificBlockTime(slotToQuery);
  ```
</CodeGroup>

## 開発者向けヒント

* **タイムスタンプの可用性:** 特に非常に古いブロックやスキップされたスロットでは、すべてのブロックにタイムスタンプが利用できるわけではありません。その場合、メソッドは `null` を返します。
* **推定:** 時間は *推定値* です。これは、バリデーターからの投票タイムスタンプのステーク加重平均から導出されます。一般的には正確ですが、ブロックハッシュのようにすべてのブロックに対して暗号学的に保証されたタイムスタンプではありません。
* **ノード依存:** 可用性と精度は、特に非常に最近の（まだ最終決定されていない）ブロックに関して、問い合わせた RPC ノードによってわずかに異なる場合があります。

このガイドは、Solana ネットワーク上の任意のブロックの推定生成タイムスタンプを取得するための `getBlockTime` の使用方法を説明します。
