getBlockCommitment RPC-Methode liefert Informationen über den Commitment-Status eines bestimmten Blocks im Solana-Ledger. Dies ist nützlich, um zu verstehen, wie finalisiert ein Block ist, basierend auf dem Stake, der auf ihn abgestimmt hat.
Häufige Anwendungsfälle
- Bewertung der Blockfinalität: Bestimmen des Konsensniveaus, das ein Block erreicht hat, indem die stake-gewichteten Stimmen in verschiedenen Bestätigungstiefen betrachtet werden.
- Verständnis der Cluster-Gesundheit: Der
totalStakebietet Einblick in den gesamten aktiven Stake im Cluster zum Zeitpunkt der Verarbeitung des Blocks. - Erweiterte Bestätigungslogik: Für Anwendungen, die sehr spezifische Garantien über Block-Finalität über die Standard-Commitment-Level hinaus erfordern (
confirmed,finalized).
Parameter
slot(Zahl, erforderlich): Die Slot-Nummer (u64) des Blocks, für den Commitment-Informationen abgefragt werden sollen.
Antwort
Dasresult-Feld der JSON-RPC-Antwort wird ein Objekt enthalten, das Folgendes umfasst:
commitment(Array von u64-Zahlen | null):- Ein Array von u64-Zahlen, wobei jede Zahl die Menge des Cluster-Stakes (in Lamports) darstellt, die auf den Block in einer bestimmten Bestätigungstiefe abgestimmt hat.
- Das Array hat typischerweise 32 Elemente (die Tiefen 0 bis
MAX_LOCKOUT_HISTORY, was 31 ist, darstellend). - Der Index
ides Arrays zeigt den Stake, der für den Block abgestimmt hat, wobei sowohl Stimmen auf dem Block selbst als auch auf seinen Nachfolgern bis zui-Tiefen berücksichtigt werden. - Wenn der Block nicht gefunden wird oder seine Commitment-Informationen nicht verfügbar sind (z.B. weil er zu alt ist und aus dem Commitment-Tracking entfernt wurde), wird dieses Feld
nullsein.
totalStake(Zahl):- Der gesamte aktive Stake im Cluster (in Lamports) zum Zeitpunkt, an dem dieser Block verarbeitet wurde. Dieser Wert wird verwendet, um den Prozentsatz des Stakes zu berechnen, der sich zum Block bekannt hat.
Entwicklertipps
- Interpretation des
commitment-Arrays:- Das
commitment-Array zeigt den Stake (in Lamports), der für den Block in verschiedenen Bestätigungstiefen abgestimmt hat. Höhere Werte bei tieferen Indizes bedeuten eine stärkere Finalität. - Ein
nullcommitment-Array bedeutet oft, dass der Knoten keine Daten für den Slot hat, möglicherweise weil er zu alt ist oder übersprungen wurde. - Sie können die Finalität in der Tiefe
ibeurteilen, wenncommitment[i] / totalStake >= 2/3(Supermajorität).
- Das
- Erweiterte Anwendungsfälle:
getBlockCommitmentist für eine nuancierte Finalitätsanalyse gedacht. Für die meisten gängigen Szenarien ist es einfacher und ausreichend, sich auf Standard-Commitment-Level (processed,confirmedoderfinalized) mit anderen RPC-Methoden (wiegetTransactionodergetBlock) zu verlassen. - Verständnis der Commitment: Um
getBlockCommitmentvoll auszuschöpfen, ist ein solides Verständnis der Solana-Commitment-Level unerlässlich. Siehe Solana Commitment Levels für detaillierte Informationen. - Entfernen: Beachten Sie, dass RPC-Knoten alte Commitment-Informationen entfernen könnten, was zu
null-Ergebnissen für ältere Slots führt.
Beispiel: Abrufen von Block-Commitment-Informationen
Versuchen wir, Commitment-Informationen für eine veranschaulichende Slot-Nummer im Devnet abzurufen. Wichtig: Slots werden schnell verarbeitet. Die unten verwendete Slot-Nummer (250000000) ist ein Platzhalter. Sie sollten ihn durch einen aktuellen, bestätigten Slot ersetzen, von dem Sie wissen, dass er in Ihrem Zielnetzwerk (z.B. Devnet oder Mainnet) existiert, wenn Sie das Beispiel ausführen. Sie können aktuelle Slot-Nummern mithilfe eines Solana-Blockexplorers finden.
Hinweis: Ersetzen Sie YOUR_API_KEY durch Ihren tatsächlichen Helius-API-Schlüssel in den unten stehenden Beispielen.