Skip to main content
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 los hashes de bloque de manera eficaz 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.
  • Gestión de la vigencia de las transacciones: Usa lastValidBlockHeight para saber durante cuánto tiempo seguirá siendo válida una transacción que haga referencia al hash de bloque obtenido.
  • Comprobaciones previas: Aunque simulateTransaction puede hacerlo de forma implícita, las aplicaciones pueden obtener 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 las transacciones, es común usar confirmed o finalized para garantizar que el hash de bloque provenga de una parte razonablemente estable de la cadena.
  • minContextSlot (entero, opcional): El slot mínimo en el que se puede evaluar la solicitud. Esto garantiza que la consulta se realice en 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 haga referencia a este blockhash es 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. Obtener el hash de bloque más reciente con el compromiso ‘confirmed’

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

Consejos para desarrolladores

  • Validez del hash de bloque: Un hash de bloque es válido durante un tiempo limitado, aproximadamente 2 minutos, aunque esto 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 último.
  • Elección del compromiso: Para transacciones críticas, usar el compromiso finalized ofrece la mayor garantía de que el hash de bloque proviene de la bifurcación principal de la cadena, pero puede ser un poco más antiguo. confirmed ofrece un buen equilibrio. Consulta más información sobre los niveles de compromiso.
  • 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 reintento: Si una transacción vence porque se ha superado 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 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