Skip to main content
Die getLatestBlockhash RPC-Methode ist essenziell für die Vorbereitung und das Versenden von Transaktionen im Solana-Netzwerk. Sie ruft den neuesten Blockhash ab, der vom Knoten verarbeitet wurde, zusammen mit der letzten Blockhöhe, bei der dieser Blockhash gültig bleibt. Weitere Details zur effektiven Nutzung von Blockhashes und zur Sicherstellung, dass Ihre Transaktionen landen, finden Sie in unserem umfassenden Leitfaden. Jede Transaktion auf Solana muss sich auf einen aktuellen Blockhash beziehen. Dieser Mechanismus hilft, bestimmte Arten von Angriffen zu verhindern, wie das Wiederholen von Transaktionen auf einer verzweigten Kette. Versionshinweis: Diese Methode ist in solana-core v1.9 oder neuer verfügbar. Bei Knoten, die solana-core v1.8 oder älter ausführen, verwenden Sie stattdessen die getRecentBlockhash-Methode.

Häufige Anwendungsfälle

  • Transaktionserstellung: Abrufen eines aktuellen Blockhashes zur Einbeziehung in eine neue Transaktion vor dem Signieren und Versenden.
  • Verwaltung der Transaktionslebensdauer: Verwenden Sie lastValidBlockHeight, um zu verstehen, wie lange eine Transaktion, die den abgerufenen Blockhash referenziert, voraussichtlich gültig bleibt.
  • Preflight-Checks: Während simulateTransaction dies implizit tun kann, könnten Anwendungen einen Blockhash abrufen, um manuell eine Transaktion zur Simulation vorzubereiten.

Anfrageparameter

Diese Methode kann optional ein Konfigurationsobjekt mit den folgenden Parametern übernehmen:
  • commitment (string, optional): Gibt das Commitment Level für die Anfrage an. Wenn es weggelassen wird, wird das Standard-Commitment des Knotens verwendet. Für Transaktionen ist es üblich, confirmed oder finalized zu verwenden, um sicherzustellen, dass der Blockhash aus einem vernünftig stabilen Teil der Kette stammt.
  • minContextSlot (integer, optional): Der Mindestslot, bei dem die Anfrage ausgewertet werden kann. Dies stellt sicher, dass die Abfrage gegen einen Ledger-Zustand erfolgt, der bis mindestens zu diesem Slot verarbeitet wurde.

Antwortstruktur

Das result-Feld der JSON-RPC-Antwort wird ein RpcResponse-Objekt sein. Das Feld value innerhalb dieses Objekts enthält:
  • blockhash (string): Eine base-58 kodierte Zeichenkette, die den neuesten Blockhash darstellt.
  • lastValidBlockHeight (u64): Die Blockhöhe, bei der der blockhash abläuft. Eine Transaktion, die diesen blockhash zitiert, ist gültig, bis das Netzwerk diese lastValidBlockHeight erreicht.
Die Antwort enthält auch ein context-Objekt mit dem slot, bei dem die Informationen abgerufen wurden.

Beispiele

1. Abrufen des neuesten Blockhashes mit Standard-Commitment

Dieses Beispiel ruft den neuesten Blockhash mit dem Standard-Commitment des Knotens ab.

2. Abrufen des neuesten Blockhashes mit ‘bestätigtem’ Commitment

Dieses Beispiel fordert explizit den neuesten Blockhash mit confirmed-Commitment an.

Entwicklertipps

  • Blockhash-Gültigkeit: Ein Blockhash ist nur für eine begrenzte Zeit gültig, etwa 2 Minuten (obwohl dies variieren kann). Transaktionen müssen vom Netzwerk bestätigt werden, bevor ihr lastValidBlockHeight erreicht wird. Holen Sie immer einen neuen Blockhash, wenn seit dem letzten Abruf erhebliche Zeit vergangen ist.
  • Wahl des Commitments: Für kritische Transaktionen bietet das Verwenden von finalized-Commitment die stärkste Garantie, dass der Blockhash von der Hauptkette stammt, kann aber etwas älter sein. confirmed bietet einen guten Kompromiss. Weitere Informationen finden Sie unter Commitment Levels.
  • Transaktionsgebühren: Denken Sie auch daran, geeignete Transaktionsgebühren zu berechnen und einzuschließen. Der Blockhash selbst bestimmt nicht die Gebühr.
  • Retry-Logik: Wenn eine Transaktion abläuft, weil ihr lastValidBlockHeight erreicht wurde, müssen Sie sie mit einem neuen, aktuelleren Blockhash neu signieren und erneut einreichen.
Dieser Leitfaden bietet die Schritte, um getLatestBlockhash effektiv zu nutzen, ein Eckpfeiler für die Interaktion mit dem Solana-Netzwerk durch Transaktionen.

Verwandte Methoden

simulateTransaction

Simulieren Sie eine Transaktion vor dem Versand

isBlockhashValid

Überprüfen Sie, ob ein Blockhash noch gültig ist