getLatestBlockhash est essentielle pour préparer et envoyer des transactions sur le réseau Solana. Elle récupère le blockhash le plus récent traité par le nœud, ainsi que le dernier bloc où ce blockhash restera valide. Pour plus de détails sur l’utilisation efficace des blockhashes et pour vous assurer que vos transactions aboutissent, consultez notre guide complet.
Chaque transaction sur Solana doit référencer un blockhash récent. Ce mécanisme aide à prévenir certains types d’attaques, telles que la réplique de transactions sur une chaîne bifurquée.
Remarque sur la version : Cette méthode est disponible dans solana-core v1.9 ou plus récent. Pour les nœuds exécutant solana-core v1.8 ou plus ancien, utilisez la méthode getRecentBlockhash à la place.
Cas d’utilisation courants
- Construction de transactions : Obtenez un blockhash récent à inclure dans une nouvelle transaction avant de la signer et de l’envoyer.
- Gestion de la durée de vie des transactions : Utilisez
lastValidBlockHeightpour comprendre combien de temps une transaction référencée par le blockhash récupéré peut être considérée comme valide. - Vérifications préalables : Bien que
simulateTransactionpuisse le faire implicitement, les applications pourraient récupérer un blockhash pour préparer manuellement une transaction pour simulation.
Paramètres de la requête
Cette méthode peut prendre facultativement un objet de configuration avec les paramètres suivants :commitment(string, optionnel) : Spécifie le niveau de commitment pour la requête. Si omis, le commitment par défaut du nœud est utilisé. Pour les transactions, il est courant d’utiliserconfirmedoufinalizedpour s’assurer que le blockhash provient d’une partie raisonnablement stable de la chaîne.minContextSlot(entier, optionnel) : Le slot minimum auquel la requête peut être évaluée. Cela garantit que la requête est effectuée contre un état du livre qui a traité jusqu’à ce slot au moins.
Structure de la réponse
Le champresult de la réponse JSON-RPC sera un objet RpcResponse. Le champ value dans cet objet contient :
blockhash(string) : Une chaîne encodée en base-58 représentant le blockhash le plus récent.lastValidBlockHeight(u64) : La hauteur du bloc à laquelle leblockhashexpirera. Une transaction citant ceblockhashest valide jusqu’à ce que le réseau atteigne celastValidBlockHeight.
context avec le slot au moment où l’information a été récupérée.
Exemples
1. Obtenir le blockhash le plus récent avec le commitment par défaut
Cet exemple récupère le blockhash le plus récent en utilisant le commitment par défaut du nœud.2. Obtenir le blockhash le plus récent avec le commitment ‘confirmed’
Cet exemple demande explicitement le dernier blockhash avec le commitmentconfirmed.
Conseils pour les développeurs
- Validité du blockhash : Un blockhash est valide pendant un temps limité, environ 2 minutes (bien que cela puisse varier). Les transactions doivent être confirmées par le réseau avant que leur
lastValidBlockHeightne soit passé. Récupérez toujours un nouveau blockhash si un temps considérable s’est écoulé depuis le dernier. - Choix du commitment : Pour les transactions critiques, l’utilisation du commitment
finalizedoffre la garantie la plus forte que le blockhash provient de la fourche principale de la chaîne, mais il peut être légèrement plus ancien.confirmedoffre un bon équilibre. Apprenez-en plus sur les niveaux de commitment pour des informations détaillées. - Frais de transaction : N’oubliez pas de calculer et d’inclure également les frais de transaction appropriés. Le blockhash lui-même ne détermine pas les frais.
- Logique de réessai : Si une transaction expire parce que son
lastValidBlockHeightest passé, vous devez la re-signer avec un nouveau blockhash plus récent et la renvoyer.
getLatestBlockhash efficacement, une pierre angulaire pour interagir avec le réseau Solana via des transactions.
Méthodes associées
simulateTransaction
Simuler une transaction avant de l’envoyer
isBlockhashValid
Vérifier si un blockhash est toujours valide