getBlockCommitment liefert Informationen zum commitment-Status eines bestimmten Blocks im Solana-Ledger. Damit kannst du anhand des Stakes, der für den Block gestimmt hat, beurteilen, wie final der Block ist.
Häufige Anwendungsfälle
- Finalität eines Blocks beurteilen: Ermittle den Konsensgrad eines Blocks, indem du die nach Stake gewichteten Stimmen bei verschiedenen Bestätigungstiefen untersuchst.
- Zustand des Clusters verstehen:
totalStakegibt Aufschluss über den gesamten aktiven Stake im Cluster zu dem Zeitpunkt, an dem der Block verarbeitet wurde. - Erweiterte Bestätigungslogik: Für Anwendungen, die sehr spezifische Garantien zur Finalität eines Blocks benötigen, die über die standardmäßigen commitment-Stufen hinausgehen (
confirmed,finalized).
Parameter
slot(number, erforderlich): Die slot-Nummer (u64) des Blocks, dessen commitment-Informationen abgefragt werden sollen.
Response
Das Feldresult der JSON-RPC-response ist ein Objekt mit folgenden Daten:
commitment(Array aus u64-Ganzzahlen | null):- Ein Array aus u64-Ganzzahlen. Jede Ganzzahl gibt die Menge des Cluster-Stakes (in Lamports) an, die bei einer bestimmten Bestätigungstiefe für den Block gestimmt hat.
- Das Array enthält normalerweise 32 Elemente. Sie repräsentieren die Tiefen 0 bis
MAX_LOCKOUT_HISTORY, also 31. - Index
ides Arrays zeigt den Stake, der für den Block gestimmt hat. Dabei werden Stimmen für den Block selbst und seine Nachfolger bis zu einer Tiefe voniStufen berücksichtigt. - Wenn der Block nicht gefunden wird oder seine commitment-Informationen nicht verfügbar sind, ist dieses Feld
null. Das kann beispielsweise passieren, wenn der Block zu alt ist und aus der commitment-Verfolgung entfernt wurde.
totalStake(number):- Der gesamte aktive Stake im Cluster (in Lamports) zu dem slot, in dem dieser Block verarbeitet wurde. Dieser Wert dient dazu, den prozentualen Anteil des Stakes zu berechnen, der sich für den Block committed hat.
Tipps für Entwickler
- Das Array
commitmentinterpretieren:- Das Array
commitmentzeigt den Stake (in Lamports), der bei verschiedenen Bestätigungstiefen für den Block gestimmt hat. Höhere Werte bei tieferen Indizes weisen auf eine stärkere Finalität hin. - Ein
null-Array fürcommitmentbedeutet häufig, dass der node keine Daten für den slot hat. Möglicherweise ist er zu alt oder wurde übersprungen. - Du kannst die Finalität bei Tiefe
ieinschätzen, wenncommitment[i] / totalStake >= 2/3(Supermehrheit).
- Das Array
- Erweiterte Anwendungsfälle:
getBlockCommitmentdient einer differenzierten Analyse der Finalität. In den meisten gängigen Szenarien ist es einfacher und ausreichend, bei anderen RPC-Methoden wiegetTransactionodergetBlockdie standardmäßigen commitment-Stufenprocessed,confirmedoderfinalizedzu verwenden. - Commitment verstehen: Um
getBlockCommitmenteffektiv zu nutzen, musst du die commitment-Stufen von Solana gut verstehen. Ausführliche Informationen findest du unter Solana Commitment Levels. - Bereinigung: Beachte, dass RPC-nodes alte commitment-Informationen möglicherweise entfernen. Dadurch können Abfragen älterer slots
nullzurückgeben.
Beispiel: Commitment-Informationen eines Blocks abrufen
Rufen wir die commitment-Informationen für eine beispielhafte slot-Nummer im Devnet ab. Wichtig: Slot-Nummern werden schnell verarbeitet. Die unten verwendete slot-Nummer (250000000) ist ein Platzhalter. Ersetze sie beim Ausführen des Beispiels durch einen aktuellen, bestätigten slot, von dem du weißt, dass er in deinem Zielnetzwerk vorhanden ist, etwa im Devnet oder Mainnet. Aktuelle slot-Nummern findest du mit einem Solana-Block-Explorer.
Hinweis: Ersetze YOUR_API_KEY in den folgenden Beispielen durch deinen tatsächlichen Helius API key.