Skip to main content
getBlock RPCメソッドを使用すると、Solana台帳で確認されたブロックの詳細情報を取得できます。これは、ブロックエクスプローラー、トランザクション履歴分析、特定の時点でのチェーンの状態を理解するために不可欠です。
性能向上のためバッチ処理を避けるアーカイブメソッドのバッチ処理は遅延を大幅に増加させます。10件以上のリクエストのバッチは許可されていません。

一般的な使用例

  • ブロック内容の確認: 特定のブロックに含まれるすべてのトランザクションを表示。
  • ブロックハッシュの取得: 指定されたスロットのブロックハッシュ、その親のブロックハッシュ、およびその親のスロットを取得します。
  • ブロックの高さと時間の確認: ブロックの高さ(シーケンス番号)と推定生成時間を確認します。
  • トランザクション詳細の分析: 適切なパラメータを使用して、手数料、ステータス、前後の残高、内部命令などのメタデータを含む完全なトランザクションデータを取得できます。
  • 報酬の取得: ブロックの報酬情報をオプションで含めることができます。

パラメータ

  1. slot (number, required): クエリするブロックのスロット番号 (u64)。
  2. config (object, optional): 次のフィールドを持つ構成オブジェクト:
    • commitment (string, optional): 使用する committment level を指定します。このメソッドでは processed はサポートされていません。デフォルトは finalized です。
    • encoding (string, optional): トランザクションデータのエンコーディング。transactionDetails が full または accounts の場合、デフォルトは json です。それ以外の場合は base64 です。
      • json: トランザクションとアカウントデータをJSON形式で返します(jsonParsed を推奨)。
      • jsonParsed: トランザクションとアカウントデータを解析済みJSONとして返します。これはすべてのトランザクションアカウントキーを含むので推奨されます(アドレス検索テーブルを含む)。
      • base58 (slow)
      • base64
      • base64+zstd
    • transactionDetails (string, optional): 返すトランザクションの詳細レベルを指定します。デフォルトは full です。
      • full: トランザクションメタデータを含む完全なトランザクション詳細を返します。
      • accounts: 各トランザクションで詳細が記載されたアカウントのリストを返しますが、完全なトランザクションデータまたはメタデータは返しません。
      • signatures: トランザクションシグネチャのみを返します。
      • none: トランザクションの詳細は返しません。
    • rewards (boolean, optional): 応答に報酬配列を含めるかどうか。デフォルトは false です。
    • maxSupportedTransactionVersion (number, optional): 返す最大トランザクションバージョン。ブロックにより高いバージョンのトランザクションが含まれる場合、リクエストはJSON-RPCエラー-32015で失敗します。省略された場合は、レガシートランザクションのみが返され、バージョン付きトランザクションがあるブロックはエラーを引き起こします。レガシー、v0(アドレス検索テーブル)、v1トランザクションを含むには 1 に設定します。トランザクションv1サポートをご覧ください。

レスポンス

指定されたブロックが確認され、見つかった場合、result フィールドはブロックに関する情報を含むオブジェクトになります。ブロックが見つからないか、確認されていない場合、result は nullになります。 ブロックオブジェクトの主要フィールドには次のものがあります:
  • blockhash (string): このブロックのベース58エンコードされたブロックハッシュ。
  • previousBlockhash (string): 前のブロックのベース58エンコードされたブロックハッシュ。親が利用できない場合(台帳のクリーンアップのため)、これはシステムプログラムIDになる可能性があります。
  • parentSlot (number): 親ブロックのスロット番号。
  • transactions (array): ブロックに含まれるトランザクションオブジェクトの配列。これらのオブジェクトの構造はencodingとtransactionDetailsパラメータに依存します。
    • 各トランザクションオブジェクトには通常、meta(手数料、ステータス、ログ、前後の残高などのメタデータ)とtransaction(メッセージとシグネチャを含む実際のトランザクションデータ)が含まれています。
  • rewards (array, optional): rewards: true が指定された場合に存在する報酬オブジェクトの配列。各オブジェクトはpubkey、lamports、postBalance、rewardType、そしておそらくcommissionを詳述します。
  • blockTime (number | null): Unixタイムスタンプとしてのブロックの推定生成時間(エポック以来の秒数)、または利用できない場合はnull。
  • blockHeight (number | null): このブロックの高さ(スロット0から始まるチェーン内でのブロックの数)、または利用できない場合はnull。
レスポンス内のトランザクションとメタオブジェクトの完全で詳細な構造については、公式のSolana RPCドキュメントを参照してください。

例: ブロック情報の取得

開発ネットワーク(Devnet)でイメージとしてスロット番号の情報を取得してみましょう。 重要: スロット番号は迅速に処理されます。以下で使用されているスロット番号(250000000)はプレースホルダーです。例を実行する際には、ターゲットネットワーク(DevnetまたはMainnet)上に存在することが確認された、最近のスロット番号に置き換える必要があります。最近のスロット番号はSolanaブロックエクスプローラーで調べることができます。 注意: 以下の例では、あなたの実際のHelius APIキーを YOUR_API_KEY に置き換えてください。

開発者のヒント

  • スロット vs. ブロックの高さ: getBlock は slot 数字を入力として取りますが、必ずしもブロックの高さではありません。スロットは順次進行しますが、リーダーによって一部のスロットはスキップされることがあります。応答の blockHeight フィールドは、このブロックの前にある実際のブロック数を示します。
  • maxSupportedTransactionVersion は重要: バージョン付きトランザクションを持つブロックを調べるには、maxSupportedTransactionVersion: 1(または新しい標準が現れた場合はより高いバージョン)を設定する必要があります。これを忘れると、多くの現代ブロックでエラーが発生します。
  • transactionDetails の選択:
    • full は最も詳細な分析に必要ですが、最も多くのデータを返します。
    • signatures はブロック内のトランザクションを一覧表示するだけでよい場合に役立ちます。
    • accounts は、すべての命令データを取得せずに関与したアカウントを確認する必要がある場合の中間地点となります。
    • none はまれですが、blockhash や rewards などのブロックレベルのメタデータのみを気にする場合に使用できます。
  • エンコーディングには jsonParsed を推奨: トランザクションの詳細を要求する際には、jsonParsed が最も開発者に優しい出力を提供し、アドレス検索テーブルからのアカウントを正しく解決します。これは json(非推奨)ではありません。
  • ブロックの未提供: null の結果は、そのスロットのブロックが見つからなかったことを意味します。これはスロットがスキップされたか、指定した commitment のレベルまで確認されていないか、RPCノードがその履歴ブロックを台帳から削除したためです(古いスロットで一般的)。
  • 報酬情報: ブロックの報酬分配をバリデーター(報酬タイプに応じて、ステーカーも)に表示するには、rewards: true を設定する必要があります。これにより応答サイズが増加します。
  • ブロック構造の理解: Solanaのアーキテクチャにおけるブロックの適合については、Understanding Slots, Blocks, and Epochs on Solana を参照してください。