Zum Hauptinhalt springen
Mit der RPC-Methode 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.
Vermeide Batching für eine bessere PerformanceWenn du Archivmethoden in Batches zusammenfasst, erhöht sich die Latenz erheblich. Batches mit mehr als 10 requests sind nicht zulässig.

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. confirmed oder finalized.
  • 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

  1. signatures (array aus string): (Erforderlich) Ein Array mit Base58-codierten Transaktionssignaturen. Du kannst mit einem einzelnen request bis zu 256 Signaturen abfragen.
  2. options (object, optional): Ein optionales Konfigurationsobjekt mit dem folgenden Feld:
    • searchTransactionHistory (boolean, optional): Bei true durchsucht der RPC node seinen vollständigen Transaktionsverlauf nach den Signaturen. Bei false (Standardwert) durchsucht er nur einen Cache mit aktuellen Statusinformationen. Setze diesen Wert bei alten oder möglicherweise verworfenen Transaktionen auf true.

Struktur der response

Das Feld result 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 (array aus object | 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 Wert null. 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 Wert null.
      • 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, confirmed oder finalized. Der Wert kann null sein, wenn der Status nicht im Cache verfügbar ist und searchTransactionHistory auf false gesetzt ist.
    • null: Wenn eine Signatur nicht im Status-Cache gefunden wurde und searchTransactionHistory auf false gesetzt ist. Das gilt auch, wenn die Signatur selbst bei einer Verlaufssuche tatsächlich nicht existiert.

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. Bei false (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 Signatur null zurück. Setze den Wert immer auf true, 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: Ein null im Array value bedeutet, dass der Status der betreffenden Signatur nicht gefunden wurde. Die Signatur befindet sich möglicherweise nicht im aktuellen Cache, wenn searchTransactionHistory auf false gesetzt ist. Möglicherweise wurde die Transaktion nie aufgenommen oder sie ist selbst für den Verlauf des node mit searchTransactionHistory: true zu alt.
  • confirmations: null: Dies bedeutet normalerweise, dass die Transaktion den Status finalized erreicht hat. Ab diesem Punkt ist eine bestimmte Anzahl von Bestätigungen weniger relevant, da der Block als unumkehrbar gilt.
  • Fehlerbehandlung: Prüfe das Feld err in jedem Statusobjekt, um festzustellen, ob eine Transaktion fehlgeschlagen ist. Das Feld status enthält ebenfalls Details, z. B. {"Err":...}.
Mit getSignatureStatuses kannst du den Status mehrerer Solana-Transaktionen effizient überwachen. Verwende searchTransactionHistory: true, um den Status zuverlässig zu prüfen.