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:
simulateTransactionkann 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äufigconfirmedoderfinalizedverwendet. 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 Feldresult 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 derblockhashabläuft. Eine Transaktion, die auf dieseblockhashverweist, bleibt gültig, bis das Netzwerk dieselastValidBlockHeighterreicht.
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 mitconfirmed 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
finalizedcommitment die höchste Sicherheit, dass die Blockhash aus dem Hauptzweig der Chain stammt. Sie kann jedoch etwas älter sein.confirmedbietet 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.
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