getSignatureStatuses kannst du den Verarbeitungs- und Bestätigungsstatus einer Liste von Transaktionssignaturen abrufen. So kannst du feststellen, ob das Netzwerk Transaktionen verarbeitet, bestätigt oder finalisiert hat.
Wenn die Option searchTransactionHistory nicht aktiviert ist, fragt diese Methode hauptsächlich einen Cache mit aktuellen Statusinformationen auf dem RPC node ab. Für ältere Transaktionen musst du searchTransactionHistory aktivieren.
Häufige Anwendungsfälle
- Finalität einer Transaktion bestätigen: Prüfe, ob eine übermittelte Transaktion die gewünschte Bestätigungsstufe erreicht hat, z. B.
confirmedoderfinalized. - Status mehrerer Transaktionen abrufen: Prüfe effizient den Status mehrerer Transaktionen gleichzeitig, beispielsweise nach einem Batch-Versand.
- UI anhand des Transaktionsstatus aktualisieren: Zeige Nutzern den Echtzeitstatus einer Transaktion an.
- Fehlerprüfung: Ermittle, ob Transaktionen aus einer Liste fehlgeschlagen sind und warum.
Parameter für den request
signatures(arrayausstring): (Erforderlich) Ein Array mit Base58-codierten Transaktionssignaturen. Du kannst mit einem einzelnen request bis zu 256 Signaturen abfragen.options(object, optional): Ein optionales Konfigurationsobjekt mit dem folgenden Feld:searchTransactionHistory(boolean, optional): Beitruedurchsucht der RPC node seinen vollständigen Transaktionsverlauf nach den Signaturen. Beifalse(Standardwert) durchsucht er nur einen Cache mit aktuellen Statusinformationen. Setze diesen Wert bei alten oder möglicherweise verworfenen Transaktionen auftrue.
Struktur der response
Das Feldresult der JSON-RPC-response enthält ein Objekt mit zwei Feldern:
context(object): Ein Objekt mit folgendem Inhalt:slot(u64): Der slot, in dem der RPC node diesen request verarbeitet hat.
value(arrayausobject|null): Ein Array mit Statusobjekten. Ihre Reihenfolge entspricht der Reihenfolge der Signaturen im request. Jedes Element kann Folgendes sein:- Ein Objekt mit den folgenden Feldern, wenn die Signatur gefunden wurde:
slot(u64): Der slot, in dem die Transaktion verarbeitet wurde.confirmations(number|null): Die Anzahl der Blöcke, die seit der Verarbeitung der Transaktion bestätigt wurden. Bei einer finalisierten Transaktion lautet der Wertnull. Die Finalität bedeutet, dass die Transaktion nicht zurückgesetzt wird. Daher ist eine bestimmte Anzahl von Bestätigungen weniger relevant.err(object|null): Ein Fehlerobjekt, wenn die Transaktion fehlgeschlagen ist, z. B.{"InstructionError":[0,{"Custom":1}]}. Bei einer erfolgreichen Transaktion lautet der Wertnull.status(object): Ein Objekt, das den Ausführungsstatus der Transaktion angibt. Bei erfolgreichen Transaktionen lautet der Wert normalerweise{"Ok":null}. Bei fehlgeschlagenen Transaktionen enthält das Objekt Details zum Fehler.confirmationStatus(string|null): Der Bestätigungsstatus der Transaktion im cluster, z. B.processed,confirmedoderfinalized. Der Wert kannnullsein, wenn der Status nicht im Cache verfügbar ist undsearchTransactionHistoryauf false gesetzt ist.
null: Wenn eine Signatur nicht im Status-Cache gefunden wurde undsearchTransactionHistoryauffalsegesetzt ist. Das gilt auch, wenn die Signatur selbst bei einer Verlaufssuche tatsächlich nicht existiert.
- Ein Objekt mit den folgenden Feldern, wenn die Signatur gefunden wurde:
Beispiele
1. Status einer Liste von Signaturen abrufen (aktueller Cache)
Dieses Beispiel ruft den Status zweier Signaturen aus dem aktuellen Cache des node ab.2. Status mit Suche im Transaktionsverlauf abrufen
Dieses Beispiel ruft den Status von Signaturen ab und fordert den node ausdrücklich auf, seinen Transaktionsverlauf zu durchsuchen.Tipps für Entwickler
searchTransactionHistory: Entscheidend für die Zuverlässigkeit. Beifalse(Standardwert) prüft die Methode nur einen begrenzten Cache mit aktuellen Statusinformationen. Wenn eine Transaktion alt ist oder möglicherweise verworfen wurde und nicht in diesem Cache enthalten ist, gibt die Methode für den Status dieser Signaturnullzurück. Setze den Wert immer auftrue, wenn du den Status von Transaktionen prüfen musst, die möglicherweise nicht mehr aktuell sind.- Signaturlimit: Du kannst pro Aufruf maximal 256 Signaturen abfragen.
- Status
null: Einnullim Arrayvaluebedeutet, dass der Status der betreffenden Signatur nicht gefunden wurde. Die Signatur befindet sich möglicherweise nicht im aktuellen Cache, wennsearchTransactionHistoryauf false gesetzt ist. Möglicherweise wurde die Transaktion nie aufgenommen oder sie ist selbst für den Verlauf des node mitsearchTransactionHistory: truezu alt. confirmations: null: Dies bedeutet normalerweise, dass die Transaktion den Statusfinalizederreicht hat. Ab diesem Punkt ist eine bestimmte Anzahl von Bestätigungen weniger relevant, da der Block als unumkehrbar gilt.- Fehlerbehandlung: Prüfe das Feld
errin jedem Statusobjekt, um festzustellen, ob eine Transaktion fehlgeschlagen ist. Das Feldstatusenthält ebenfalls Details, z. B.{"Err":...}.
getSignatureStatuses kannst du den Status mehrerer Solana-Transaktionen effizient überwachen. Verwende searchTransactionHistory: true, um den Status zuverlässig zu prüfen.