Zum Hauptinhalt springen
Die RPC-Methode getLatestBlockhash ist entscheidend, um Transaktionen im Solana-Netzwerk vorzubereiten und zu senden. Sie ruft die neueste vom node verarbeitete Blockhash sowie die letzte Blockhöhe ab, bis zu der diese Blockhash gültig bleibt. Weitere Informationen zur effektiven Verwendung von Blockhashes und dazu, wie du sicherstellst, dass deine Transaktionen erfolgreich verarbeitet werden, findest du in unserem ausführlichen Leitfaden. Jede Transaktion auf Solana muss auf eine aktuelle Blockhash verweisen. Dieser Mechanismus schützt vor bestimmten Angriffen, etwa vor der erneuten Ausführung einer Transaktion auf einer abgespaltenen Chain. Versionshinweis: Diese Methode ist ab solana-core v1.9 verfügbar. Verwende für nodes mit solana-core v1.8 oder älter stattdessen die Methode getRecentBlockhash.

Häufige Anwendungsfälle

  • Transaktionen erstellen: Rufe eine aktuelle Blockhash ab und füge sie einer neuen Transaktion hinzu, bevor du diese signierst und sendest.
  • Gültigkeitsdauer von Transaktionen verwalten: Ermittle mit lastValidBlockHeight, wie lange eine Transaktion mit der abgerufenen Blockhash voraussichtlich gültig bleibt.
  • Prüfungen vor dem Senden: simulateTransaction kann dies implizit erledigen. Anwendungen können jedoch eine Blockhash abrufen, um eine Transaktion manuell für die Simulation vorzubereiten.

Parameter des Request

Diese Methode akzeptiert optional ein Konfigurationsobjekt mit den folgenden Parametern:
  • commitment (string, optional): Gibt das commitment-Level für die Abfrage an. Wenn du es weglässt, wird das standardmäßige commitment des node verwendet. Für Transaktionen werden häufig confirmed oder finalized verwendet. So stellst du sicher, dass die Blockhash aus einem ausreichend stabilen Teil der Chain stammt.
  • minContextSlot (integer, optional): Der minimale slot, an dem der Request ausgewertet werden kann. Dadurch wird die Abfrage für einen Ledger-Zustand ausgeführt, der mindestens bis zu diesem slot verarbeitet wurde.

Struktur der Response

Das Feld result der JSON-RPC-response enthält ein Objekt vom Typ RpcResponse. Das darin enthaltene Feld value umfasst:
  • blockhash (string): Eine Base58-codierte Zeichenfolge, die die neueste Blockhash darstellt.
  • lastValidBlockHeight (u64): Die Blockhöhe, bei der blockhash abläuft. Eine Transaktion, die auf diese blockhash verweist, bleibt gültig, bis das Netzwerk diese lastValidBlockHeight erreicht.
Die Response enthält außerdem ein Objekt context mit dem slot, an dem die Informationen abgerufen wurden.

Beispiele

1. Neueste Blockhash mit dem standardmäßigen commitment abrufen

Dieses Beispiel ruft die neueste Blockhash mit dem standardmäßigen commitment des node ab.

2. Neueste Blockhash mit ‘confirmed’ commitment abrufen

Dieses Beispiel fordert ausdrücklich die neueste Blockhash mit confirmed commitment an.

Tipps für Entwickler

  • Gültigkeit der Blockhash: Eine Blockhash ist nur für eine begrenzte Zeit gültig, ungefähr 2 Minuten. Dieser Zeitraum kann jedoch variieren. Transaktionen müssen vom Netzwerk bestätigt werden, bevor ihre lastValidBlockHeight überschritten wird. Rufe immer eine neue Blockhash ab, wenn seit dem letzten Abruf viel Zeit vergangen ist.
  • Commitment auswählen: Bei kritischen Transaktionen bietet finalized commitment die höchste Sicherheit, dass die Blockhash aus dem Hauptzweig der Chain stammt. Sie kann jedoch etwas älter sein. confirmed bietet einen guten Kompromiss. Ausführliche Informationen findest du unter commitment-Levels.
  • Transaktionsgebühren: Berechne außerdem die passenden Transaktionsgebühren und füge sie hinzu. Die Blockhash selbst bestimmt die Gebühr nicht.
  • Logik für erneute Versuche: Wenn eine Transaktion abläuft, weil ihre lastValidBlockHeight überschritten wurde, musst du sie mit einer neuen, aktuelleren Blockhash erneut signieren und senden.
Dieser Leitfaden zeigt dir, wie du getLatestBlockhash effektiv verwendest. Die Methode ist ein zentraler Baustein für Transaktionen im Solana-Netzwerk.

Verwandte Methoden

simulateTransaction

Simuliere eine Transaktion vor dem Senden

isBlockhashValid

Prüfe, ob eine Blockhash noch gültig ist