getTransaction RPCメソッドは、署名を提供することによって、確認されたトランザクションに関する詳細情報を取得することができます。これには、トランザクションのスロット、ブロック時間、メタデータ(手数料、ステータス、残高の変化など)、およびトランザクション自体の構造が含まれます。
一般的な使用例
- トランザクションの確認: トランザクションが処理されたことを確認し、その結果(成功または失敗)を確認。
- 取引履歴の表示: ウォレットやエクスプローラでユーザーの過去の取引の詳細を表示。
- 監査と分析: 実行された指示、支払われた手数料、関与したアカウントなど、取引の詳細を調べる。
- 失敗した取引のデバッグ: メタデータの
logMessages、errフィールドを調査して、取引が失敗した理由を理解する。 - データのインデックス化: トランザクションから特定の情報を抽出し、オフチェーンのストレージと分析に使用。
リクエストパラメータ
-
transactionSignature(文字列、必須): クエリしたいbase-58エンコードされたトランザクション署名。 -
options(オブジェクト、オプション): オプションの設定オブジェクトで、以下を含むことができます:commitment(文字列、オプション): コミットメントレベルを指定します(例:"finalized","confirmed")。指定されない場合、ノードのデフォルトのコミットメントが使用されます(通常は"finalized")。encoding(文字列、オプション):transactionデータのエンコーディング。一般的な値:"json": トランザクションデータを構造化されたJSON形式で返します(ただし、インストラクションはbase64エンコードされている場合があります)。"jsonParsed": プログラム固有のインストラクションを可能な限り人間が読めるJSON構造に解析してトランザクションデータを返します。解析にはこれが最も有用です。"base58": トランザクションデータをbase-58エンコードされた文字列で返します。"base64": トランザクションデータをbase-64エンコードされた文字列で返します。- 指定がない場合、Heliusは
"json"をデフォルトとしますが、Solanaのデフォルトは異なる場合があります。これを指定することをお勧めします。
maxSupportedTransactionVersion(数字、オプション): RPCエンドポイントが処理する最大トランザクションバージョン。0に設定して、バージョン付きトランザクション(従来を含む)を含めます。- 省略された場合、一部のノードは従来のトランザクションのみを返すか、バージョン付きトランザクションに遭遇した場合エラーになる可能性があります。これを
0に設定してすべてのトランザクションタイプをサポートすることを強く推奨します。
応答構造
トランザクションが見つからない場合(例: まだ処理されていない、または署名が間違っている)か、指定されたコミットメントレベルで確認されていない場合、nullを返します。それ以外の場合、次のフィールドを含むオブジェクトを返します:
slot(u64): トランザクションがブロックに含まれたスロット番号。blockTime(i64 | null): トランザクションを含むブロックが生成された推定Unixタイムスタンプ(エポックからの秒数)。利用できない場合はnull。meta(オブジェクト | null): トランザクションの実行に関するメタデータを含むオブジェクト。トランザクションが処理される前に失敗した場合やメタデータが利用できない場合はnull。err(オブジェクト | null): トランザクションが失敗した場合はエラーオブジェクト、それ以外はnull。fee(u64): トランザクションのために支払ったラムポート手数料。preBalances(u64の配列): トランザクションが処理される前のアカウントのラムポート残高。postBalances(u64の配列): トランザクションが処理された後のアカウントのラムポート残高。preTokenBalances(オブジェクトの配列 | null): トランザクション前のトークンアカウントのトークン残高。postTokenBalances(オブジェクトの配列 | null): トランザクション後のトークンアカウントのトークン残高。innerInstructions(オブジェクトの配列 | null): このトランザクション内でCPI(クロスプログラム呼び出し)の一部として実行された命令の配列。logMessages(文字列の配列 | null): トランザクションの命令や内部命令によって発行されたログメッセージの配列。loadedAddresses(オブジェクト, オプション): このトランザクションのためにアドレスルックアップテーブルからロードされたアカウントを指定します。writableとreadonlyの公開鍵の配列を含みます。returnData(オブジェクト, オプション):sol_set_return_dataとsol_get_return_data経由でトランザクションによって返されるデータ。programId(文字列)とdata(配列:[string, encoding])を含みます。computeUnitsConsumed(u64, オプション): このトランザクションが消費した計算ユニットの数。
transaction(オブジェクト | 配列): トランザクション構造自体。フォーマットはencodingパラメータに依存します:encodingが"jsonParsed"または"json"の場合:message(accountKeys、instructions、recentBlockhash、などを含む)とsignatures(文字列の配列)を含むオブジェクト。encodingが"base58"、"base64"の場合: 配列[encoded_string, encoding_format_string]。
version(“legacy” | 数字 | undefined): トランザクションのバージョン。古いトランザクションの場合は"legacy"、バージョン付きトランザクションの場合は数字(例:0)。undefinedはmaxSupportedTransactionVersionが設定されていない場合にバージョン付きトランザクションです。
jsonParsedエンコーディング):
コード例
開発者のヒント
- トランザクションの最終性: 適切な
commitmentレベルでクエリを行うことを確認してください。指定されたコミットメントに到達していないトランザクションをリクエストするとnullが返されます。 - データボリューム: 応答オブジェクトは、特に多数の指示や詳細なログを含む複雑なトランザクションの場合、非常に大きくなる可能性があります。データを処理する際には注意してください。
jsonParsed対json:jsonParsedは非常に便利ですが、特定のプログラムに対するRPCノードの解析サポートに依存します。プログラムが認識されていない場合、その指示はjsonParsedでも解析されない形式にフォールバックする可能性があります。- バージョン付きトランザクション: リクエストオプションで常に
maxSupportedTransactionVersion: 0を設定して、アプリケーションが従来およびバージョン付きの両方のトランザクションを処理できるようにしてください。そうしないと、新しいトランザクション形式のデータが見逃されたり、エラーが発生したりする可能性があります。 - RPCプロバイダーの違い: コアAPIは標準ですが、一部のRPCプロバイダーは拡張された解析や追加のフィールドを提供する場合があります。たとえば、Heliusは豊富なトランザクション解析を提供します。
getTransaction RPCメソッドの包括的な概要を提供し、詳細なSolanaトランザクションデータを取得して理解することを可能にします。