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 ersten message.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 ersten numRequiredSignatures von message.accountKeys übereinstimmen.
      • numReadonlySignedAccounts: <number> - Die letzten numReadonlySignedAccounts 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 letzten numReadonlyUnsignedAccounts 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 das message.accountKeys-Array, der das Programmkonto angibt, das diese Anweisung ausführt.
      • accounts: <array[number]> - Liste geordneter Indizes in das message.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, wenn maxSupportedTransactionVersion 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änge message.header.numRequiredSignatures und ist nicht leer. Die Signatur am Index i entspricht dem öffentlichen Schlüssel am Index i in message.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-Definitionen
  • fee: <u64> - Fee, die für diese Transaktion berechnet wurde, als u64-Ganzzahl
  • preBalances: <array> - Array von u64-Kontoständen vor der Verarbeitung der Transaktion
  • postBalances: <array> - Array von u64-Kontoständen nach der Verarbeitung der Transaktion
  • innerInstructions: <array|null> - Liste von inneren Anweisungen oder null wenn die Aufzeichnung innerer Anweisungen während dieser Transaktion nicht aktiviert war
  • preTokenBalances: <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 war
  • postTokenBalances: <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 war
  • logMessages: <array|null> - Array von String-Protokollnachrichten oder null, wenn die Aufzeichnung von Protokollnachrichten während dieser Transaktion nicht aktiviert war
  • rewards: <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 hat
    • lamports: <i64>- Anzahl der Belohnungs-Lamports, die dem Konto gutgeschrieben oder belastet wurden, als i64
    • postBalance: <u64> - Kontostand in Lamports nach Anwendung der Belohnung
    • rewardType: <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, wenn maxSupportedTransactionVersion nicht in den Anfrageparametern gesetzt ist oder wenn jsonParsedKodierung in den Anfrageparametern gesetzt ist.
    • writable: <array[string]> - Geordnete Liste von Base-58-kodierten Adressen für beschreibbare geladene Konten
    • readonly: <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 Pubkey
    • data: <[string, encoding]> - die Rückgabedaten selbst, als Base-64-kodierte Binärdaten
  • computeUnitsConsumed: <u64|undefined> - Anzahl der Recheneinheiten, die von der Transaktion verbraucht wurden
  • version: <"legacy"|number|undefined> - Transaktionsversion. Undefiniert, wenn maxSupportedTransactionVersion 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 das message.accountKeys-Array, der das Programmkonto angibt, das diese Anweisung ausführt.
    • accounts: <array[number]> - Liste geordneter Indizes in das message.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. VERALTET
    • uiAmountString: <string> - Token-Betrag als String, unter Berücksichtigung der Dezimalstellen.

Is this page helpful?

Inhaltsverzeichnis

Seite bearbeiten