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>
- トークンのミントのpubkeyowner: <string|undefined>
- トークン残高の所有者のpubkeyprogramId: <string|undefined>
- アカウントを所有するToken ProgramのpubkeyuiTokenAmount: <object>
-amount: <string>
- 小数点を無視した、文字列としての生のトークン量decimals: <number>
- トークンのミント用に設定された小数点の数uiAmount: <number|null>
- 小数点を考慮したフロート型のトークン量 非推奨uiAmountString: <string>
- 小数点を考慮した文字列としてのトークン量
Is this page helpful?