Saltar al contenido principal
El método RPC isBlockhashValid comprueba si la red aún considera válido un hash de bloque obtenido anteriormente. Los hashes de bloque tienen una vigencia limitada (aproximadamente 30 segundos o 150 bloques). Después de ese periodo, 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. Además de proporcionar información sobre las comisiones, este método 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 de 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 aún es 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 caducan: Los hashes de bloque solo son válidos durante un periodo limitado (alrededor de 150 slots o aproximadamente 30 segundos). 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 de «válido» obsoleta para un hash de bloque que, desde la perspectiva del resto del clúster, ya es demasiado antiguo.
  • Alternativa para nodos más 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 correcta, el hash de bloque es válido. Si devuelve un error (normalmente 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: Incluso si isBlockhashValid devuelve true, una transacción solo se considera finalizada cuando alcanza el nivel de compromiso deseado en la red después de enviarla.
Esta guía proporciona los detalles necesarios para usar eficazmente el método RPC isBlockhashValid al crear aplicaciones de Solana.

Métodos relacionados

getLatestBlockhash

Obtén un hash de bloque nuevo para transacciones nuevas