Gängige JSON-Datenstrukturen für Solana RPC-Methoden
Verschiedene Solana RPC-Methoden liefern komplexere Antworten als strukturierte JSON- Objekte, gefüllt mit spezifischen Schlüssel-Wert-Paaren.
Zu den häufigsten dieser JSON-Datenstrukturen gehören:
Transaktionen
Transaktionen unterscheiden sich deutlich von denen auf anderen Blockchains. Lesen Sie unbedingt den Abschnitt Anatomie einer Transaktion, um mehr über Transaktionen auf Solana zu erfahren.
JSON
Die JSON-Struktur einer Transaktion ist wie folgt definiert:
message: <object>
- Definiert den Inhalt der Transaktion.accountKeys: <array[string]>
- Liste der Base-58-codierten öffentlichen Schlüssel, die von der Transaktion verwendet werden, einschließlich der Anweisungen und für Signaturen. Die erstenmessage.header.numRequiredSignatures
öffentlichen Schlüssel müssen die Transaktion signieren.header: <object>
- Detailliert die Kontotypen und Signaturen, die von der Transaktion benötigt werden.numRequiredSignatures: <number>
- Die Gesamtzahl der Signaturen, die erforderlich sind, um die Transaktion gültig zu machen. Die Signaturen müssen mit den erstennumRequiredSignatures
vonmessage.accountKeys
übereinstimmen.numReadonlySignedAccounts: <number>
- Die letztennumReadonlySignedAccounts
der signierten Schlüssel sind schreibgeschützte Konten. Programme können mehrere Transaktionen verarbeiten, die schreibgeschützte Konten innerhalb eines einzelnen PoH-Eintrags laden, dürfen aber keine Lamports gutschreiben oder abbuchen oder Kontodaten ändern. Transaktionen, die auf dasselbe Lese-Schreib-Konto abzielen, werden sequentiell ausgewertet.numReadonlyUnsignedAccounts: <number>
- Die letztennumReadonlyUnsignedAccounts
der unsignierten Schlüssel sind schreibgeschützte Konten.
recentBlockhash: <string>
- Ein Base-58-codierter Hash eines kürzlich erstellten Blocks im Ledger, der verwendet wird, um Transaktionsduplikate zu verhindern und Transaktionen Lebensdauern zu geben.instructions: <array[object]>
- Liste der Programm-Anweisungen, die in Sequenz ausgeführt und in einer atomaren Transaktion festgeschrieben werden, wenn alle erfolgreich sind.programIdIndex: <number>
- Index in dasmessage.accountKeys
-Array, der das Programmkonto angibt, das diese Anweisung ausführt.accounts: <array[number]>
- Liste geordneter Indizes in dasmessage.accountKeys
-Array, die angibt, welche Konten an das Programm übergeben werden sollen.data: <string>
- Die Programmeingabedaten, codiert in einem Base-58-String.
addressTableLookups: <array[object]|undefined>
- Liste der Adresstabellen- Nachschlagungen, die von einer Transaktion verwendet werden, um Adressen dynamisch aus On-Chain- Adressnachschlagetabellen zu laden. Undefiniert, wennmaxSupportedTransactionVersion
nicht gesetzt ist.accountKey: <string>
- Base-58-codierter öffentlicher Schlüssel für ein Adressnachschlagetabellen- Konto.writableIndexes: <array[number]>
- Liste der Indizes, die verwendet werden, um Adressen von beschreibbaren Konten aus einer Nachschlagetabelle zu laden.readonlyIndexes: <array[number]>
- Liste der Indizes, die verwendet werden, um Adressen von schreibgeschützten Konten aus einer Nachschlagetabelle zu laden.
signatures: <array[string]>
- Eine Liste von Base-58-codierten Signaturen, die auf die Transaktion angewendet wurden. Die Liste hat immer die Längemessage.header.numRequiredSignatures
und ist nicht leer. Die Signatur am Indexi
entspricht dem öffentlichen Schlüssel am Indexi
inmessage.accountKeys
. Die erste wird als Transaktions-ID verwendet.
JSON geparst
Die geparste JSON-Struktur einer Transaktion folgt einer ähnlichen Struktur wie das reguläre JSON-Format, mit zusätzlicher Analyse von Konten und Anweisungen Informationen:
message: <object>
- Definiert den Inhalt der Transaktion.accountKeys: <array[object]>
- Liste der Konteninformationen, die von der Transaktion verwendet werden.pubkey: <string>
- Der Base-58-kodierte öffentliche Schlüssel des Kontos.signer: <boolean>
- Gibt an, ob das Konto ein erforderlicher Transaktions- Signer ist.writable: <boolean>
- Gibt an, ob das Konto beschreibbar ist.source: <string>
- Quelle des Kontos (Transaktion oder Lookup-Tabelle).
recentBlockhash: <string>
- Ein Base-58-kodierter Hash eines kürzlich erstellten Blocks im Ledger, der verwendet wird, um Transaktionsduplikate zu verhindern und Transaktionen Lebensdauern zu geben.instructions: <array[object]>
- Liste der geparsten Programm-Anweisungen.program: <string>
- Der Name des aufgerufenen Programms.programId: <string>
- Der Base-58-kodierte öffentliche Schlüssel des Programms.stackHeight: <number|null>
- Die Stack-Höhe der Anweisung.parsed: <object>
- Programmspezifische geparste Daten.type: <string>
- Der Typ der Anweisung (z.B. "transfer").info: <object>
- Geparste Anweisungsinformationen spezifisch für das Programm und den Anweisungstyp.
signatures: <array[string]>
- Eine Liste von Base-58-kodierten Signaturen, die auf die Transaktion angewendet wurden.
Transaktionsstatus-Metadaten
err: <object|null>
- Fehler, wenn die Transaktion fehlgeschlagen ist, null, wenn die Transaktion erfolgreich war. TransactionError-Definitionenfee: <u64>
- Fee, die für diese Transaktion berechnet wurde, als u64-GanzzahlpreBalances: <array>
- Array von u64-Kontoständen vor der Verarbeitung der TransaktionpostBalances: <array>
- Array von u64-Kontoständen nach der Verarbeitung der TransaktioninnerInstructions: <array|null>
- Liste von inneren Anweisungen odernull
wenn die Aufzeichnung innerer Anweisungen während dieser Transaktion nicht aktiviert warpreTokenBalances: <array|undefined>
- Liste von Token-Salden vor der Verarbeitung der Transaktion oder weggelassen, wenn die Token-Saldo-Aufzeichnung noch nicht während dieser Transaktion aktiviert warpostTokenBalances: <array|undefined>
- Liste von Token-Salden nach der Verarbeitung der Transaktion oder weggelassen, wenn die Token-Saldo-Aufzeichnung noch nicht während dieser Transaktion aktiviert warlogMessages: <array|null>
- Array von String-Protokollnachrichten odernull
, wenn die Aufzeichnung von Protokollnachrichten während dieser Transaktion nicht aktiviert warrewards: <array|null>
- Belohnungen auf Transaktionsebene; ein Array von JSON-Objekten mit:pubkey: <string>
- Der öffentliche Schlüssel als Base-58-kodierte Zeichenfolge des Kontos, das die Belohnung erhalten hatlamports: <i64>
- Anzahl der Belohnungs-Lamports, die dem Konto gutgeschrieben oder belastet wurden, als i64postBalance: <u64>
- Kontostand in Lamports nach Anwendung der BelohnungrewardType: <string|undefined>
- Art der Belohnung: "fee", "rent", "voting", "staking"commission: <u8|undefined>
- Provision des Abstimmungskontos, als die Belohnung gutgeschrieben wurde, nur für Abstimmungs- und Staking-Belohnungen vorhanden
- VERALTET:
status: <object>
- Transaktionsstatus"Ok": <null>
- Transaktion war erfolgreich"Err": <ERR>
- Transaktion ist mit TransactionError fehlgeschlagen
loadedAddresses: <object|undefined>
- Transaktionsadressen, die aus Adress-Lookup-Tabellen geladen wurden. Undefiniert, wennmaxSupportedTransactionVersion
nicht in den Anfrageparametern gesetzt ist oder wennjsonParsed
Kodierung in den Anfrageparametern gesetzt ist.writable: <array[string]>
- Geordnete Liste von Base-58-kodierten Adressen für beschreibbare geladene Kontenreadonly: <array[string]>
- Geordnete Liste von Base-58-kodierten Adressen für schreibgeschützte geladene Konten
returnData: <object|undefined>
- die neuesten Rückgabedaten, die von einer Anweisung in der Transaktion generiert wurden, mit den folgenden Feldern:programId: <string>
- das Programm, das die Rückgabedaten generiert hat, als Base-58-kodierter Pubkeydata: <[string, encoding]>
- die Rückgabedaten selbst, als Base-64-kodierte Binärdaten
computeUnitsConsumed: <u64|undefined>
- Anzahl der Recheneinheiten, die von der Transaktion verbraucht wurdenversion: <"legacy"|number|undefined>
- Transaktionsversion. Undefiniert, wennmaxSupportedTransactionVersion
nicht in den Anfrageparametern gesetzt ist.signatures: <array>
- vorhanden, wenn "signatures" für Transaktionsdetails angefordert werden; ein Array von Signatur-Strings, entsprechend der Transaktions- reihenfolge im Block
Inner Instructions
Die Solana-Laufzeitumgebung zeichnet die programmübergreifenden Anweisungen auf, die während der Transaktionsverarbeitung aufgerufen werden, und macht diese für eine größere Transparenz darüber verfügbar, was pro Transaktionsanweisung on-chain ausgeführt wurde. Aufgerufene Anweisungen werden nach der ursprünglichen Transaktionsanweisung gruppiert und in der Reihenfolge der Verarbeitung aufgelistet.
Die JSON-Struktur der inneren Anweisungen ist als Liste von Objekten in der folgenden Struktur definiert:
index: number
- Index der Transaktionsanweisung, aus der die innere(n) Anweisung(en) stammt(en)instructions: <array[object]>
- Geordnete Liste der inneren Programm-Anweisungen, die während einer einzelnen Transaktionsanweisung aufgerufen wurden.programIdIndex: <number>
- Index in dasmessage.accountKeys
-Array, der das Programmkonto angibt, das diese Anweisung ausführt.accounts: <array[number]>
- Liste geordneter Indizes in dasmessage.accountKeys
-Array, die angibt, welche Konten an das Programm übergeben werden sollen.data: <string>
- Die Programmeingabedaten, kodiert in einem Base-58-String.
Token-Guthaben
Die JSON-Struktur der Token-Guthaben ist als Liste von Objekten in der folgenden Struktur definiert:
accountIndex: <number>
- Index des Kontos, für das das Token-Guthaben bereitgestellt wird.mint: <string>
- Pubkey der Token-Mint.owner: <string|undefined>
- Pubkey des Besitzers des Token-Guthabens.programId: <string|undefined>
- Pubkey des Token Program, dem das Konto gehört.uiTokenAmount: <object>
-amount: <string>
- Rohe Menge an Tokens als String, ohne Berücksichtigung der Dezimalstellen.decimals: <number>
- Anzahl der für die Token-Mint konfigurierten Dezimalstellen.uiAmount: <number|null>
- Token-Betrag als Gleitkommazahl, unter Berücksichtigung der Dezimalstellen. VERALTETuiAmountString: <string>
- Token-Betrag als String, unter Berücksichtigung der Dezimalstellen.
Is this page helpful?