getTransaction kannst du detaillierte Informationen zu einer bestätigten Transaktion abrufen, indem du ihre Signatur angibst. Dazu gehören der slot und die Blockzeit der Transaktion, Metadaten wie Gebühren, Status und Kontostandsänderungen sowie die Transaktionsstruktur selbst.
Häufige Anwendungsfälle
- Transaktionsprüfung: Bestätigen, dass eine Transaktion verarbeitet wurde, und ihr Ergebnis prüfen (Erfolg oder Fehlschlag).
- Anzeige des Transaktionsverlaufs: Nutzern in einer Wallet oder einem Explorer Details zu ihren vergangenen Transaktionen anzeigen.
- Prüfung und Analyse: Einzelheiten einer Transaktion untersuchen, darunter ausgeführte Anweisungen, gezahlte Gebühren und beteiligte Konten.
- Fehlgeschlagene Transaktionen debuggen: Die Felder
logMessagesunderrin den Metadaten untersuchen, um die Ursache eines Transaktionsfehlers zu ermitteln. - Datenindexierung: Bestimmte Informationen aus Transaktionen für die Off-Chain-Speicherung und Analyse extrahieren.
Parameter des request
-
transactionSignature(string, erforderlich): Die Base58-codierte Signatur der Transaktion, die du abfragen möchtest. -
options(object, optional): Ein optionales Konfigurationsobjekt, das Folgendes enthalten kann:commitment(string, optional): Legt das commitment-Level fest (z. B."finalized","confirmed"). Ohne Angabe wird das standardmäßige commitment des node verwendet (normalerweise"finalized").encoding(string, optional): Die Codierung für die Daten intransaction. Häufige Werte:"json": Gibt die Transaktionsdaten in einem strukturierten JSON-Format zurück. Anweisungen können jedoch weiterhin Base64-codiert sein."jsonParsed": Gibt die Transaktionsdaten zurück und parst nach Möglichkeit programmspezifische Anweisungen in eine menschenlesbare JSON-Struktur. Diese Codierung ist für Analysen oft am nützlichsten."base58": Gibt die Transaktionsdaten als Base58-codierten string zurück."base64": Gibt die Transaktionsdaten als Base64-codierten string zurück.- Wenn Helius keinen Wert angibt, wird standardmäßig
"json"verwendet. Der Standardwert von Solana kann jedoch abweichen. Gib diesen Wert am besten explizit an.
maxSupportedTransactionVersion(number, optional): Die maximale Transaktionsversion, die der RPC endpoint verarbeiten soll.- Setze den Wert auf
1, um Legacy-, v0- und v1-Transaktionen einzubeziehen. - Wenn der Wert fehlt oder niedriger als die Version der Transaktion ist, schlägt der request mit dem JSON-RPC-Fehler
-32015(Transaction version (1) is not supported by the requesting client) fehl. Setze ihn immer auf1. Siehe Unterstützung für Transaktion v1.
- Setze den Wert auf
Struktur der response
Die Methode gibtnull zurück, wenn die Transaktion nicht gefunden wurde (z. B. weil sie noch nicht verarbeitet wurde oder die Signatur falsch ist) oder nicht bis zum angegebenen commitment-Level bestätigt wurde. Andernfalls gibt sie ein Objekt mit den folgenden Feldern zurück:
slot(u64): Die Nummer des slot, in dem die Transaktion in einen Block aufgenommen wurde.blockTime(i64 | null): Der geschätzte Unix-Zeitstempel (Sekunden seit Beginn der Unixzeit), zu dem der Block mit der Transaktion erzeugt wurde. Kannnullsein, wenn er nicht verfügbar ist.meta(object | null): Ein Objekt mit Metadaten zur Ausführung der Transaktion. Kannnullsein, wenn die Transaktion vor der Verarbeitung fehlgeschlagen ist oder keine Metadaten verfügbar sind.err(object | null): Ein Fehlerobjekt, wenn die Transaktion fehlgeschlagen ist, andernfallsnull.fee(u64): Die für die Transaktion gezahlte Gebühr in Lamports.preBalances(array of u64): Lamport-Kontostände der beteiligten Konten vor der Verarbeitung der Transaktion.postBalances(array of u64): Lamport-Kontostände der beteiligten Konten nach der Verarbeitung der Transaktion.preTokenBalances(array of objects | null): Token-Kontostände der beteiligten Token-Konten vor der Transaktion.postTokenBalances(array of objects | null): Token-Kontostände der beteiligten Token-Konten nach der Transaktion.innerInstructions(array of objects | null): Ein Array mit Anweisungen, die innerhalb dieser Transaktion im Rahmen von CPI (Cross-Program Invocations) ausgeführt wurden.logMessages(array of string | null): Ein Array mit Protokollmeldungen, die von den Anweisungen der Transaktion und allen inneren Anweisungen ausgegeben wurden.loadedAddresses(object, optional): Gibt die Konten an, die für diese Transaktion aus Adress-Lookup-Tabellen geladen wurden. Enthält die Arrayswritableundreadonlymit öffentlichen Schlüsseln.returnData(object, optional): Daten, die von der Transaktion übersol_set_return_dataundsol_get_return_datazurückgegeben wurden. EnthältprogramId(string) unddata(array:[string, encoding]).computeUnitsConsumed(u64, optional): Die Anzahl der von dieser Transaktion verbrauchten Recheneinheiten.
transaction(object | array): Die Transaktionsstruktur selbst. Das Format hängt vom Parameterencodingab:- Wenn
encodingden Wert"jsonParsed"oder"json"hat: Ein Objekt mitmessage(enthältaccountKeys,instructions,recentBlockhashusw.) undsignatures(Array von strings). - Wenn
encodingden Wert"base58"oder"base64"hat: Ein Array[encoded_string, encoding_format_string].
- Wenn
version(“legacy” | number | undefined): Die Version der Transaktion. Kann für ältere Transaktionen"legacy"oder für versionierte Transaktionen eine Zahl (0oder1) sein.undefined, wennmaxSupportedTransactionVersionnicht gesetzt und die Transaktion versioniert ist. Eine v1-Transaktion enthält außerdem eintransactionConfig-Objekt inmessagemit dem Rechenbudget (computeUnitLimit,heapSize,loadedAccountsDataSizeLimit,priorityFee). Dieses Objekt ersetzt die Anweisungen des ComputeBudget-Programms.priorityFeegibt die Gesamtgebühr in Lamports an, nicht Mikro-Lamports pro Recheneinheit.
jsonParsed):
Codebeispiele
Tipps für Entwickler
- Finalität der Transaktion: Frage mit einem geeigneten
commitment-Level ab. Wenn eine Transaktion das angegebene commitment noch nicht erreicht hat, wirdnullzurückgegeben. - Datenmenge: Das response-Objekt kann sehr groß sein, besonders bei komplexen Transaktionen mit vielen Anweisungen oder detaillierter Protokollierung. Berücksichtige dies bei der Verarbeitung der Daten.
jsonParsedim Vergleich zujson:jsonParsedist sehr praktisch. Die Parsing-Unterstützung hängt jedoch von den Fähigkeiten des RPC node für bestimmte Programme ab. Wenn ein Programm nicht erkannt wird, werden seine Anweisungen möglicherweise auch mitjsonParsedin einem weniger stark geparsten Format zurückgegeben.- Versionierte Transaktionen: Setze in den Optionen deines request immer
maxSupportedTransactionVersion: 1, damit deine Anwendung sowohl Legacy- als auch versionierte Transaktionen verarbeiten kann. Andernfalls fehlen dir möglicherweise Daten oder bei neueren Transaktionsformaten treten Fehler auf. - Unterschiede zwischen RPC-Anbietern: Die grundlegende API ist standardisiert. Einige RPC-Anbieter bieten jedoch möglicherweise erweitertes Parsing oder zusätzliche Felder. Helius stellt beispielsweise umfangreiches Transaktions-Parsing bereit.
getTransaction. Damit kannst du detaillierte Solana-Transaktionsdaten abrufen und verstehen.