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
lastValidBlockHeightpara saber cuánto tiempo permanecerá válida una transacción que haga referencia al hash de bloque recuperado. - Comprobaciones previas: Aunque
simulateTransactionpuede 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 preferentementefinalized; con Alpenglow,confirmeddevuelve 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 camporesult 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 esteblockhashserá válida hasta que la red alcance estelastValidBlockHeight.
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,
confirmedyfinalizeddevuelven el mismo estado confirmado permanentemente en el mismo punto. Para código nuevo, usa preferentementefinalizedporqueconfirmedse 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.
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