Skip to main content
La méthode RPC getBlock vous permet de récupérer des informations détaillées sur un bloc confirmé dans le registre Solana. Cela est essentiel pour les explorateurs de blocs, l’analyse de l’historique des transactions et la compréhension de l’état de la chaîne à un moment donné.
Évitez le regroupement pour de meilleures performancesLe regroupement des méthodes archivées augmente considérablement la latence. Les lots de plus de 10 requêtes ne sont pas autorisés.

Cas d’utilisation courants

  • Inspection du contenu des blocs : Voir toutes les transactions incluses dans un bloc spécifique.
  • Récupération des hachages de blocs : Obtenez le blockhash pour un slot donné, le blockhash de son parent et son slot parent.
  • Vérification de la hauteur et du temps du bloc : Découvrez la hauteur d’un bloc (son numéro de séquence) et son temps de production estimé.
  • Analyse des détails des transactions : Avec les paramètres appropriés, vous pouvez obtenir les données complètes des transactions, y compris les métadonnées telles que les frais, le statut, les soldes avant/après et les instructions internes.
  • Récupération des récompenses : Incluez optionnellement les informations de récompense pour le bloc.

Paramètres

  1. slot (nombre, requis) : Le numéro du slot du bloc à interroger (u64).
  2. config (objet, optionnel) : Un objet de configuration avec les champs suivants :
    • commitment (chaîne, optionnel) : Spécifie le niveau d’engagement à utiliser. processed n’est pas supporté pour cette méthode. Par défaut, finalized.
    • encoding (chaîne, optionnel) : Le codage des données de transaction. Par défaut, json si transactionDetails est full ou accounts, sinon base64.
      • json : Retourne les transactions et les données de comptes au format JSON (déprécié en faveur de jsonParsed).
      • jsonParsed : Retourne les transactions et les données de comptes sous forme de JSON analysé. Ceci est recommandé car il inclut toutes les clés de compte de transaction (y compris celles des Address Lookup Tables).
      • base58 (lent)
      • base64
      • base64+zstd
    • transactionDetails (chaîne, optionnel) : Spécifie le niveau de détail de transaction à retourner. Par défaut, full.
      • full : Retourne tous les détails de la transaction, y compris les métadonnées de transaction.
      • accounts : Retourne une liste des comptes détaillés dans chaque transaction, mais pas les données complètes de transaction ni les métadonnées.
      • signatures : Retourne uniquement les signatures de transaction.
      • none : Ne retourne aucun détail de transaction.
    • rewards (booléen, optionnel) : Si inclure ou non le tableau des récompenses dans la réponse. Par défaut, false.
    • maxSupportedTransactionVersion (nombre, optionnel) : La version de transaction maximale à retourner. Si le bloc contient une transaction avec une version supérieure, la requête échoue avec une erreur JSON-RPC -32015. Si omis, seules les transactions héritées sont retournées, et un bloc avec toute transaction versionnée provoque une erreur. Définir à 1 pour inclure les transactions héritées, v0 (Address Lookup Tables) et v1. Voir Support de Transaction v1.

Réponse

Si le bloc spécifié est confirmé et trouvé, le champ result sera un objet contenant des informations sur le bloc. Si le bloc n’est pas trouvé ou non confirmé, result sera null. Les champs clés dans l’objet bloc incluent :
  • blockhash (chaîne) : Le blockhash encodé en base-58 pour ce bloc.
  • previousBlockhash (chaîne) : Le blockhash encodé en base-58 du bloc précédent. Si le parent n’est pas disponible (en raison du nettoyage du registre), cela pourrait être l’ID du programme système.
  • parentSlot (nombre) : Le numéro du slot du bloc parent.
  • transactions (tableau) : Un tableau d’objets de transaction inclus dans le bloc. La structure de ces objets dépend des paramètres encoding et transactionDetails.
    • Chaque objet de transaction contient généralement meta (métadonnées comme les frais, le statut, les journaux, les soldes avant/après) et transaction (les données réelles de la transaction, y compris le message et les signatures).
  • rewards (tableau, optionnel) : Un tableau d’objets de récompense, présent si rewards: true a été spécifié. Chaque objet détaille pubkey, lamports, postBalance, rewardType, et potentiellement commission.
  • blockTime (nombre | null) : Le temps de production estimé du bloc en tant que timestamp Unix (secondes depuis l’époque), ou null si non disponible.
  • blockHeight (nombre | null) : La hauteur de ce bloc (nombre de blocs avant celui-ci dans la chaîne à partir du slot 0), ou null si non disponible.
Consultez la documentation officielle RPC de Solana pour la structure complète et détaillée des objets de transaction et méta dans la réponse.

Exemple : Récupération d’informations sur un bloc

Essayons de récupérer des informations 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 espace réservé. Vous devez 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 slots récents en utilisant un explorateur de blocs Solana. Remarque : Remplacez YOUR_API_KEY par votre clé API Helius réelle dans les exemples ci-dessous.

Conseils pour les développeurs

  • Slot vs. Hauteur de Bloc : N’oubliez pas que getBlock prend un nombre slot comme entrée, pas nécessairement une hauteur de bloc. Bien que les slots soient séquentiels, certains peuvent être ignorés par les leaders. Le champ blockHeight dans la réponse indique le nombre réel de blocs avant celui-ci.
  • maxSupportedTransactionVersion est Crucial : Pour inspecter les blocs avec des transactions versionnées (qui sont désormais standard et utilisent les Address Lookup Tables), vous devez définir maxSupportedTransactionVersion: 1 (ou une version plus élevée si une nouvelle norme émerge). L’oublier entraînera des erreurs pour la plupart des blocs modernes.
  • Choisir transactionDetails :
    • full est nécessaire pour une analyse détaillée mais retourne le plus de données.
    • signatures est utile si vous avez seulement besoin de lister les transactions dans un bloc.
    • accounts peut être un juste milieu si vous devez voir quels comptes étaient impliqués sans récupérer toutes les données d’instruction.
    • none est rare mais pourrait être utilisé si vous vous souciez uniquement des métadonnées au niveau du bloc comme blockhash ou rewards.
  • jsonParsed est Recommandé pour l’encodage : Lors de la demande de détails de transaction, jsonParsed fournit la sortie la plus conviviale pour les développeurs et résout correctement les comptes des Address Lookup Tables, ce que json (déprécié) ne fait pas.
  • Indisponibilité du Bloc : Un résultat null signifie que le bloc à ce slot n’a pas été trouvé. Cela pourrait être dû au fait que le slot a été ignoré, que le bloc n’a pas été confirmé au niveau spécifié par votre commitment, ou que le nœud RPC a supprimé ce bloc historique de son registre (commun pour les slots plus anciens).
  • Informations sur les Récompenses : La configuration rewards: true est nécessaire pour voir la distribution des récompenses de bloc au validateur (et potentiellement aux stakers, selon le type de récompense). Cela ajoute à la taille de la réponse.
  • Compréhension de la Structure des Blocs : Pour une compréhension plus approfondie de la façon dont les blocs s’intègrent dans l’architecture de Solana, voir Comprendre les Slots, Blocs et Époques sur Solana.