Solana RPCメソッドの一般的なJSONデータ構造

様々なSolana RPCメソッドは、特定のキー付き値で構成された構造化されたJSONオブジェクトとして、より複雑なレスポンスを返します。

これらのJSONデータ構造の中で最も一般的なものには以下が含まれます:

トランザクション

トランザクションは他のブロックチェーンのものとはかなり異なります。Solanaのトランザクションについて学ぶにはトランザクションの構造を確認してください。

JSON

トランザクションのJSON構造は次のように定義されています:

  • message: <object> - トランザクションの内容を定義します。
    • accountKeys: <array[string]> - トランザクションで使用される、instructionsやシグネチャを含む、Base-58エンコードされた公開鍵のリスト。最初の message.header.numRequiredSignatures 個の公開鍵はトランザクションに署名する必要があります。
    • header: <object> - トランザクションに必要なアカウントタイプとシグネチャの詳細を示します。
      • numRequiredSignatures: <number> - トランザクションを有効にするために必要な署名の総数。署名は message.accountKeys の最初の numRequiredSignatures と一致する必要があります。
      • numReadonlySignedAccounts: <number> - 署名された鍵の最後の numReadonlySignedAccounts は読み取り専用アカウントです。プログラムは単一のPoHエントリ内で読み取り専用アカウントをロードする複数のトランザクションを処理できますが、lamportのクレジットやデビット、アカウントデータの変更は許可されていません。同じ読み書きアカウントを対象とするトランザクションは順次評価されます。
      • numReadonlyUnsignedAccounts: <number> - 署名されていない鍵の最後の numReadonlyUnsignedAccounts は読み取り専用アカウントです。
    • recentBlockhash: <string> - トランザクションの重複を防ぎ、トランザクションの有効期間を設定するために使用される、台帳内の最近のブロックのBase-58エンコードされたハッシュ。
    • instructions: <array[object]> - すべてが成功した場合に順番に実行され、一つのアトミックなトランザクションとしてコミットされるプログラムinstructionsのリスト。
      • programIdIndex: <number> - このinstructionを実行するプログラムアカウントを示す message.accountKeys 配列へのインデックス。
      • accounts: <array[number]> - プログラムに渡すアカウントを示す message.accountKeys 配列への順序付けられたインデックスのリスト。
      • data: <string> - Base-58文字列でエンコードされたプログラム入力データ。
    • addressTableLookups: <array[object]|undefined> - トランザクションがオンチェーンのアドレス検索テーブルからアドレスを動的にロードするために使用するアドレステーブルルックアップのリスト。maxSupportedTransactionVersion が設定されていない場合は未定義です。
      • accountKey: <string> - アドレス検索テーブルアカウントのBase-58エンコードされた公開鍵。
      • writableIndexes: <array[number]> - 検索テーブルから書き込み可能なアカウントのアドレスをロードするために使用されるインデックスのリスト。
      • readonlyIndexes: <array[number]> - 検索テーブルから読み取り専用アカウントのアドレスをロードするために使用されるインデックスのリスト。
  • signatures: <array[string]> - トランザクションに適用されたBase-58エンコードされた署名のリスト。このリストは常に長さ message.header.numRequiredSignatures であり、空ではありません。インデックス i の署名は message.accountKeys のインデックス i の公開鍵に対応します。最初の署名はトランザクションIDとして使用されます。

JSON パース済み

トランザクションのJSONパース済み構造は、通常のJSON形式と同様の構造に従いますが、アカウントとinstructionsの情報に関する追加のパースが含まれています:

  • message: <object> - トランザクションの内容を定義します。
    • accountKeys: <array[object]> - トランザクションで使用されるアカウント情報のリスト。
      • pubkey: <string> - アカウントのbase-58エンコードされた公開鍵。
      • signer: <boolean> - アカウントがトランザクションの署名者として必要かどうかを示します。
      • writable: <boolean> - アカウントが書き込み可能かどうかを示します。
      • source: <string> - アカウントのソース(トランザクションまたはルックアップテーブル)。
    • recentBlockhash: <string> - トランザクションの重複を防ぎ、トランザクションの有効期間を設定するために使用される、台帳内の最近のブロックのbase-58エンコードされたハッシュ。
    • instructions: <array[object]> - パース済みのプログラムinstructionsのリスト。
      • program: <string> - 呼び出されるプログラムの名前。
      • programId: <string> - プログラムのbase-58エンコードされた公開鍵。
      • stackHeight: <number|null> - instructionのスタック高さ。
      • parsed: <object> - プログラム固有のパース済みデータ。
        • type: <string> - instructionのタイプ(例:「transfer」)。
        • info: <object> - プログラムとinstructionタイプに固有のパース済みinstruction情報。
  • signatures: <array[string]> - トランザクションに適用されたbase-58エンコードされた署名のリスト。

トランザクションステータスメタデータ

  • err: <object|null> - トランザクションが失敗した場合はエラー、成功した場合はnull。 TransactionErrorの定義
  • fee: <u64> - このトランザクションに課された手数料(u64整数として)
  • preBalances: <array> - トランザクション処理前のu64アカウント残高の配列
  • postBalances: <array> - トランザクション処理後のu64アカウント残高の配列
  • innerInstructions: <array|null> - 内部instructionsのリスト、またはこのトランザクション中に内部instruction記録が有効になっていなかった場合はnull
  • preTokenBalances: <array|undefined> - トランザクション処理前のトークン残高のリスト、またはこのトランザクション中にトークン残高記録がまだ有効になっていなかった場合は省略
  • postTokenBalances: <array|undefined> - トランザクション処理後のトークン残高のリスト、またはこのトランザクション中にトークン残高記録がまだ有効になっていなかった場合は省略
  • logMessages: <array|null> - 文字列ログメッセージの配列、またはこのトランザクション中にログメッセージ記録が有効になっていなかった場合はnull
  • rewards: <array|null> - トランザクションレベルの報酬;以下を含むJSONオブジェクトの配列:
    • pubkey: <string> - 報酬を受け取ったアカウントの公開鍵(base-58エンコードされた文字列として)
    • lamports: <i64>- アカウントに入金または出金された報酬lamportの数(i64として)
    • postBalance: <u64> - 報酬が適用された後のlamport単位のアカウント残高
    • rewardType: <string|undefined> - 報酬のタイプ:「fee」、「rent」、「voting」、「staking」
    • commission: <u8|undefined> - 報酬が付与されたときの投票アカウントの手数料、投票および賭けの報酬にのみ存在
  • 非推奨:status: <object> - トランザクションステータス
    • "Ok": <null> - トランザクションは成功
    • "Err": <ERR> - トランザクションはTransactionErrorで失敗
  • loadedAddresses: <object|undefined> - アドレスルックアップテーブルからロードされたトランザクションアドレス。リクエストパラメータにmaxSupportedTransactionVersionが設定されていない場合、またはリクエストパラメータにjsonParsedエンコーディングが設定されている場合は未定義。
    • writable: <array[string]> - 書き込み可能なロードされたアカウントのbase-58エンコードされたアドレスの順序付きリスト
    • readonly: <array[string]> - 読み取り専用のロードされたアカウントのbase-58エンコードされたアドレスの順序付きリスト
  • returnData: <object|undefined> - トランザクション内のinstructionによって生成された最新のリターンデータ、以下のフィールドを含む:
    • programId: <string> - リターンデータを生成したプログラム(base-58エンコードされたPubkeyとして)
    • data: <[string, encoding]> - リターンデータ自体(base-64エンコードされたバイナリデータとして)
  • computeUnitsConsumed: <u64|undefined> - トランザクションによって消費されたコンピュートユニットの数
  • version: <"legacy"|number|undefined> - トランザクションバージョン。リクエストパラメータにmaxSupportedTransactionVersionが設定されていない場合は未定義。
  • signatures: <array> - トランザクションの詳細に「signatures」がリクエストされた場合に存在;ブロック内のトランザクション順序に対応する署名文字列の配列

インナーInstructions

Solanaランタイムは、トランザクション処理中に呼び出されるクロスプログラムinstructionsを記録し、トランザクションinstructionごとにオンチェーンで実行された内容の透明性を高めるために提供します。呼び出されたinstructionsは、元のトランザクションinstructionによってグループ化され、処理順に表示されます。

インナーinstructionsのJSON構造は、以下の構造のオブジェクトリストとして定義されています:

  • index: number - インナーinstructionが発生したトランザクションinstructionのインデックス
  • instructions: <array[object]> - 単一のトランザクションinstruction中に呼び出されたインナープログラムinstructionsの順序付きリスト
    • programIdIndex: <number> - message.accountKeys配列へのインデックスで、このinstructionを実行するprogram accountを示します
    • accounts: <array[number]> - message.accountKeys配列への順序付きインデックスのリストで、プログラムに渡すアカウントを示します
    • data: <string> - base-58文字列でエンコードされたプログラム入力データ

トークン残高

トークン残高のJSON構造は、以下の構造のオブジェクトリストとして定義されています:

  • accountIndex: <number> - トークン残高が提供されるアカウントのインデックス
  • mint: <string> - トークンのミントのpubkey
  • owner: <string|undefined> - トークン残高の所有者のpubkey
  • programId: <string|undefined> - アカウントを所有するToken Programのpubkey
  • uiTokenAmount: <object> -
    • amount: <string> - 小数点を無視した、文字列としての生のトークン量
    • decimals: <number> - トークンのミント用に設定された小数点の数
    • uiAmount: <number|null> - 小数点を考慮したフロート型のトークン量 非推奨
    • uiAmountString: <string> - 小数点を考慮した文字列としてのトークン量

Is this page helpful?

目次

ページを編集