Skip to main content
Die 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 totalStake bietet 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

  1. slot (Zahl, erforderlich): Die Slot-Nummer (u64) des Blocks, für den Commitment-Informationen abgefragt werden sollen.

Antwort

Das result-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 i des Arrays zeigt den Stake, der für den Block abgestimmt hat, wobei sowohl Stimmen auf dem Block selbst als auch auf seinen Nachfolgern bis zu i-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 null sein.
  • 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 null commitment-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 i beurteilen, wenn commitment[i] / totalStake >= 2/3 (Supermajorität).
  • Erweiterte Anwendungsfälle: getBlockCommitment ist 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, confirmed oder finalized) mit anderen RPC-Methoden (wie getTransaction oder getBlock) zu verlassen.
  • Verständnis der Commitment: Um getBlockCommitment voll 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.