Skip to main content
O método RPC isBlockhashValid verifica se um blockhash obtido anteriormente ainda é considerado válido pela rede. Os blockhashes têm um tempo de vida limitado (aproximadamente 2 minutos, ou 150 blocos), após o qual as transações que os referenciam serão rejeitadas. Este método é crucial para aplicativos que mantêm blockhashes por algum tempo antes de enviar uma transação, para garantir que a transação não falhe devido a um blockhash expirado. Nota de Versão: Este método está disponível em solana-core v1.9 e mais recentes. Para nós executando solana-core v1.8 ou mais antigos, você deve usar getFeeCalculatorForBlockhash que, além de informações de taxa, também indica implicitamente a validade do blockhash (um erro ocorrerá se o blockhash for muito antigo).

Casos de Uso Comuns

  • Reenvio de Transação: Antes de tentar uma transação que falhou, verifique se seu blockhash original ainda é válido. Caso contrário, um novo blockhash deve ser buscado.
  • Assinatura Atrasada de Transação: Se uma transação for preparada, mas assinada e enviada mais tarde, verifique a validade do blockhash logo antes do envio.
  • Processamento Otimista de Transações: Determine se um blockhash provavelmente será aceito pela rede se uma transação for enviada imediatamente.

Parâmetros de Solicitação

  1. blockhash (string, obrigatório): O blockhash a ser verificado, como uma string codificada em base-58.
  2. options (objeto, opcional): Um objeto de configuração opcional que pode incluir:
    • commitment (string, opcional): Especifica o nível de compromisso para a consulta (por exemplo, "finalized", "confirmed", "processed"). Se omitido, o compromisso padrão do nó é usado.
    • minContextSlot (u64, opcional): O slot mínimo em que a solicitação pode ser avaliada. Isso garante que o nó RPC não responda com um status de um slot mais antigo do que o minContextSlot.

Estrutura de Resposta

O campo result na resposta JSON-RPC é um objeto RpcResponse contendo:
  • context (objeto): Um objeto contendo:
    • slot (u64): O slot no qual o nó RPC avaliou a validade do blockhash.
  • value (boolean): true se o blockhash ainda for válido, false caso contrário.
Exemplo de Resposta (Blockhash Válido):
Exemplo de Resposta (Blockhash Inválido/Expirado):

Exemplos de Código

Dicas para Desenvolvedores

  • Blockhashes Expiram: Blockhashes são válidos apenas por um tempo limitado (cerca de 150 slots, ou aproximadamente 1-2 minutos). Sempre busque um blockhash novo se não tiver certeza ou se muito tempo se passou.
  • Uso de minContextSlot: Use minContextSlot para se proteger contra consultas a um nó RPC obsoleto que possa dar uma resposta “válida” desatualizada para um blockhash que está realmente muito antigo do ponto de vista do resto do cluster.
  • Alternativa para Nós Mais Antigos: Para nós rodando versões do Solana anteriores a 1.9, use getFeeCalculatorForBlockhash("<YOUR_BLOCKHASH>"). Se este método retornar com sucesso, o blockhash é válido. Se ocorrer um erro (tipicamente porque o blockhash não é encontrado ou é muito antigo), então o blockhash é inválido.
  • Confirmação de Rede: Mesmo que isBlockhashValid retorne true, uma transação só é finalizada quando atinge o nível de compromisso desejado na rede após o envio.
Este guia fornece os detalhes necessários para usar o método RPC isBlockhashValid de forma eficaz ao construir aplicativos Solana.

Métodos Relacionados

getLatestBlockhash

Obtenha um blockhash novo para novas transações