Saltar al contenido principal
El método RPC getLatestBlockhash es esencial para preparar y enviar transacciones en la red de Solana. Recupera el hash de bloque más reciente procesado por el nodo, junto con la última altura de bloque en la que este hash seguirá siendo válido. Para obtener más información sobre cómo usar eficazmente los hashes de bloque y garantizar que tus transacciones se procesen, consulta nuestra guía completa. Cada transacción en Solana debe hacer referencia a un hash de bloque reciente. Este mecanismo ayuda a prevenir ciertos tipos de ataques, como la reproducción de transacciones en una cadena bifurcada. Nota sobre la versión: Este método está disponible en solana-core v1.9 o versiones posteriores. Para los nodos que ejecutan solana-core v1.8 o versiones anteriores, usa en su lugar el método getRecentBlockhash.

Casos de uso comunes

  • Creación de transacciones: Obtén un hash de bloque reciente para incluirlo en una nueva transacción antes de firmarla y enviarla.
  • Administración de la vigencia de las transacciones: Usa lastValidBlockHeight para saber cuánto tiempo permanecerá válida una transacción que haga referencia al hash de bloque recuperado.
  • Comprobaciones previas: Aunque simulateTransaction puede hacer esto de forma implícita, las aplicaciones pueden recuperar un hash de bloque para preparar manualmente una transacción para su simulación.

Parámetros de la solicitud

Este método puede recibir opcionalmente un objeto de configuración con los siguientes parámetros:
  • commitment (cadena, opcional): Especifica el nivel de compromiso de la consulta. Si se omite, se usa el compromiso predeterminado del nodo. Para código nuevo, usa preferentemente finalized; con Alpenglow, confirmed devuelve el mismo estado permanente y sigue disponible por compatibilidad.
  • minContextSlot (entero, opcional): El slot mínimo en el que se puede evaluar la solicitud. Esto garantiza que la consulta se realice sobre un estado del libro mayor que haya procesado al menos hasta este slot.

Estructura de la respuesta

El campo result de la respuesta JSON-RPC será un objeto RpcResponse. El campo value de este objeto contiene:
  • blockhash (cadena): Una cadena codificada en base 58 que representa el hash de bloque más reciente.
  • lastValidBlockHeight (u64): La altura de bloque en la que vencerá blockhash. Una transacción que cite este blockhash será válida hasta que la red alcance este lastValidBlockHeight.
La respuesta también incluye un objeto context con el slot en el que se recuperó la información.

Ejemplos

1. Obtener el hash de bloque más reciente con el compromiso predeterminado

Este ejemplo obtiene el hash de bloque más reciente mediante el compromiso predeterminado del nodo.

2. Obtén el hash de bloque más reciente con el compromiso finalized

Este ejemplo solicita explícitamente el hash de bloque más reciente con el compromiso finalized.

Consejos para desarrolladores

  • Validez del hash de bloque: Un hash de bloque es válido durante un tiempo limitado, aproximadamente 30 segundos, aunque este periodo puede variar. La red debe confirmar las transacciones antes de que se supere su lastValidBlockHeight. Obtén siempre un hash de bloque nuevo si ha transcurrido un tiempo considerable desde que obtuviste el anterior.
  • Elección del compromiso: Con Alpenglow, confirmed y finalized devuelven el mismo estado confirmado permanentemente en el mismo punto. Para código nuevo, usa preferentemente finalized porque confirmed se eliminará en una versión futura.
  • Comisiones de transacción: Recuerda calcular e incluir también las comisiones de transacción correspondientes. El hash de bloque por sí solo no determina la comisión.
  • Lógica de reintentos: Si una transacción vence porque se superó su lastValidBlockHeight, debes volver a firmarla con un hash de bloque nuevo y más reciente, y enviarla de nuevo.
Esta guía proporciona los pasos necesarios para usar getLatestBlockhash de forma eficaz, un elemento fundamental para interactuar con la red de Solana mediante transacciones.

Métodos relacionados

simulateTransaction

Simula una transacción antes de enviarla

isBlockhashValid

Comprueba si un hash de bloque sigue siendo válido