getBlock RPCメソッドを使用すると、Solana台帳で確認されたブロックの詳細情報を取得できます。これは、ブロックエクスプローラー、トランザクション履歴分析、特定の時点でのチェーンの状態を理解するために不可欠です。
一般的な使用例
- ブロック内容の確認: 特定のブロックに含まれるすべてのトランザクションを表示。
- ブロックハッシュの取得: 指定されたスロットのブロックハッシュ、その親のブロックハッシュ、およびその親のスロットを取得します。
- ブロックの高さと時間の確認: ブロックの高さ(シーケンス番号)と推定生成時間を確認します。
- トランザクション詳細の分析: 適切なパラメータを使用して、手数料、ステータス、前後の残高、内部命令などのメタデータを含む完全なトランザクションデータを取得できます。
- 報酬の取得: ブロックの報酬情報をオプションで含めることができます。
パラメータ
-
slot(number, required): クエリするブロックのスロット番号 (u64)。 -
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)base64base64+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。
例: ブロック情報の取得
開発ネットワーク(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 を参照してください。