Skip to main content
La méthode RPC getBlockCommitment fournit des informations sur l’état de l’engagement d’un bloc spécifique dans le registre Solana. Cela est utile pour comprendre à quel point un bloc est finalisé, basé sur les enjeux qui ont voté pour lui.

Cas d’utilisation courants

  • Évaluer la finalité des blocs : Déterminez le niveau de consensus qu’un bloc a atteint en examinant les votes pondérés selon les enjeux à différentes profondeurs de confirmation.
  • Comprendre la santé du cluster : Le totalStake fournit un aperçu du total des enjeux actifs dans le cluster au moment où le bloc a été traité.
  • Logique de confirmation avancée : Pour les applications nécessitant des garanties très spécifiques concernant la finalité des blocs au-delà des niveaux d’engagement standard (confirmed, finalized).

Paramètres

  1. slot (nombre, requis) : Le numéro de slot (u64) du bloc pour lequel interroger les informations d’engagement.

Réponse

Le champ result de la réponse JSON-RPC sera un objet contenant :
  • commitment (tableau d’entiers u64 | null) :
    • Un tableau d’entiers u64, où chaque entier représente la quantité d’enjeux du cluster (en lamports) qui a voté pour le bloc à une profondeur de confirmation spécifique.
    • Le tableau a généralement 32 éléments (représentant les profondeurs de 0 à MAX_LOCKOUT_HISTORY, qui est 31).
    • L’index i du tableau montre les enjeux qui ont voté pour le bloc, en tenant compte des votes sur le bloc lui-même et ses descendants jusqu’à i niveaux de profondeur.
    • Si le bloc n’est pas trouvé ou si ses informations d’engagement ne sont pas disponibles (par exemple, s’il est trop ancien et supprimé du suivi de l’engagement), ce champ sera null.
  • totalStake (nombre) :
    • Le total des enjeux actifs dans le cluster (en lamports) au slot où ce bloc a été traité. Cette valeur est utilisée pour calculer le pourcentage d’enjeux qui se sont engagés sur le bloc.

Conseils pour les développeurs

  • Interpréter le tableau commitment :
    • Le tableau commitment montre les enjeux (en lamports) qui ont voté pour le bloc à différentes profondeurs de confirmation. Des valeurs plus élevées à des indices plus profonds signifient une finalité plus forte.
    • Un tableau null commitment signifie souvent que le nœud n’a pas de données pour le slot, possiblement parce qu’il est trop ancien ou a été sauté.
    • Vous pouvez évaluer la finalité à la profondeur i si commitment[i] / totalStake >= 2/3 (supermajorité).
  • Cas d’utilisation avancés : getBlockCommitment est utilisé pour une analyse nuancée de la finalité. Pour la plupart des scénarios courants, s’appuyer sur les niveaux d’engagement standard (processed, confirmed ou finalized) avec d’autres méthodes RPC (comme getTransaction ou getBlock) est plus simple et suffisant.
  • Comprendre l’engagement : Pour tirer pleinement parti de getBlockCommitment, une compréhension solide des niveaux d’engagement de Solana est essentielle. Consultez Solana Commitment Levels pour des informations détaillées.
  • Élagage : Soyez conscient que les nœuds RPC peuvent élaguer les anciennes informations d’engagement, entraînant des résultats null pour les slots plus anciens.

Exemple : Récupérer des informations d’engagement de bloc

Essayons de récupérer des informations d’engagement pour un numéro de slot illustratif sur Devnet. Important : Les numéros de slot sont traités rapidement. Le numéro de slot utilisé ci-dessous (250000000) est un indicateur. Vous devriez le remplacer par un slot récent et confirmé que vous savez exister sur votre réseau cible (par exemple, Devnet ou Mainnet) lorsque vous exécutez l’exemple. Vous pouvez trouver des numéros de slot récents en utilisant un explorateur de blocs Solana. Note : Remplacez YOUR_API_KEY par votre véritable clé API Helius dans les exemples ci-dessous.