Skip to main content
El método RPC isBlockhashValid comprueba si la red aún considera válido un hash de bloque obtenido previamente. Los hashes de bloque tienen una vigencia limitada (aproximadamente 2 minutos o 150 bloques). Después de ese plazo, se rechazarán las transacciones que hagan referencia a ellos. Este método es fundamental para las aplicaciones que conservan hashes de bloque durante un tiempo antes de enviar una transacción, ya que permite garantizar que la transacción no falle debido a un hash de bloque vencido. Nota sobre la versión: Este método está disponible en solana-core v1.9 y versiones posteriores. Para los nodos que ejecutan solana-core v1.8 o una versión anterior, debes usar getFeeCalculatorForBlockhash, que, además de proporcionar información sobre las comisiones, también indica implícitamente la validez del hash de bloque (devolverá un error si el hash de bloque es demasiado antiguo).

Casos de uso comunes

  • Reenvío de transacciones: Antes de volver a intentar una transacción fallida, comprueba si su hash de bloque original sigue siendo válido. Si no lo es, debes obtener uno nuevo.
  • Firma diferida de transacciones: Si preparas una transacción, pero la firmas y envías más tarde, verifica la validez del hash de bloque justo antes de enviarla.
  • Procesamiento optimista de transacciones: Determina si es probable que la red acepte un hash de bloque cuando se envía una transacción inmediatamente.

Parámetros de la solicitud

  1. blockhash (cadena, obligatorio): El hash de bloque que se comprobará, como una cadena codificada en base 58.
  2. options (objeto, opcional): Un objeto de configuración opcional que puede incluir:
    • commitment (cadena, opcional): Especifica el nivel de compromiso para la consulta (por ejemplo, "finalized", "confirmed", "processed"). Si se omite, se usa el nivel de compromiso predeterminado del nodo.
    • minContextSlot (u64, opcional): El slot mínimo en el que se puede evaluar la solicitud. Esto garantiza que el nodo RPC no responda con el estado de un slot anterior a minContextSlot.

Estructura de la respuesta

El campo result de la respuesta JSON-RPC es un objeto RpcResponse que contiene:
  • context (objeto): Un objeto que contiene:
    • slot (u64): El slot en el que el nodo RPC evaluó la validez del hash de bloque.
  • value (booleano): true si el hash de bloque sigue siendo válido; de lo contrario, false.
Respuesta de ejemplo (hash de bloque válido):
Respuesta de ejemplo (hash de bloque no válido o vencido):

Ejemplos de código

Consejos para desarrolladores

  • Los hashes de bloque vencen: Los hashes de bloque solo son válidos durante un tiempo limitado (alrededor de 150 slots o aproximadamente 1 o 2 minutos). Obtén siempre un hash de bloque nuevo si tienes dudas o si ha transcurrido bastante tiempo.
  • Uso de minContextSlot: Usa minContextSlot para evitar consultar un nodo RPC desactualizado que podría devolver una respuesta “válida” obsoleta para un hash de bloque que, desde la perspectiva del resto del clúster, en realidad es demasiado antiguo.
  • Alternativa para nodos antiguos: Para los nodos que ejecutan versiones de Solana anteriores a la 1.9, usa getFeeCalculatorForBlockhash("<YOUR_BLOCKHASH>"). Si este método devuelve una respuesta correctamente, el hash de bloque es válido. Si devuelve un error (por lo general, porque no se encuentra el hash de bloque o porque es demasiado antiguo), el hash de bloque no es válido.
  • Confirmación de la red: Aunque isBlockhashValid devuelva true, una transacción solo se finaliza cuando, después de enviarla, alcanza el nivel de compromiso deseado en la red.
Esta guía proporciona la información necesaria para usar eficazmente el método RPC isBlockhashValid al desarrollar aplicaciones de Solana.

Métodos relacionados

getLatestBlockhash

Obtén un hash de bloque nuevo para transacciones nuevas