getLatestBlockhash é essencial para preparar e enviar transações na rede Solana. Ele recupera o blockhash mais recente processado pelo nó, junto com a última altura do bloco em que este blockhash permanecerá válido. Para mais detalhes sobre como usar blockhashes de forma eficaz e garantir que suas transações sejam realizadas, consulte nosso guia abrangente.
Toda transação em Solana deve referenciar um blockhash recente. Este mecanismo ajuda a prevenir certos tipos de ataques, como repetição de transações em uma cadeia bifurcada.
Nota de Versão: Este método está disponível na solana-core v1.9 ou mais recente. Para nós executando solana-core v1.8 ou mais antigo, use o método getRecentBlockhash.
Casos de Uso Comuns
- Construção de Transações: Obtenha um blockhash recente para incluir em uma nova transação antes de assinar e enviá-la.
- Gerenciamento do Tempo de Vida da Transação: Use
lastValidBlockHeightpara entender por quanto tempo uma transação referenciando o blockhash obtido pode ser considerada válida. - Verificações de Pré-execução: Enquanto
simulateTransactionpode fazer isso implicitamente, aplicações podem buscar um blockhash para preparar manualmente uma transação para simulação.
Parâmetros de Solicitação
Este método pode opcionalmente receber um objeto de configuração com os seguintes parâmetros:commitment(string, opcional): Especifica o nível de compromisso para a consulta. Se omitido, o compromisso padrão do nó é usado. Para transações, é comum usarconfirmedoufinalizedpara garantir que o blockhash seja de uma parte razoavelmente estável da cadeia.minContextSlot(inteiro, opcional): O slot mínimo em que a solicitação pode ser avaliada. Isso garante que a consulta seja feita contra um estado do livro razão que tenha processado até pelo menos este slot.
Estrutura da Resposta
O camporesult da resposta JSON-RPC será um objeto RpcResponse. O campo value dentro deste objeto contém:
blockhash(string): Uma string codificada em base-58 representando o blockhash mais recente.lastValidBlockHeight(u64): A altura do bloco em que oblockhashexpirará. Uma transação citando esteblockhashé válida até que a rede atinja estelastValidBlockHeight.
context com o slot no qual a informação foi recuperada.
Exemplos
1. Obter o Blockhash Mais Recente com Compromisso Padrão
Este exemplo busca o blockhash mais recente usando o compromisso padrão do nó.2. Obter o Blockhash Mais Recente com Compromisso ‘confirmed’
Este exemplo solicita explicitamente o blockhash mais recente com compromissoconfirmed.
Dicas para Desenvolvedores
- Validade do Blockhash: Um blockhash é válido por tempo limitado, aproximadamente 2 minutos (embora isso possa variar). As transações devem ser confirmadas pela rede antes de seu
lastValidBlockHeightser atingido. Sempre busque um novo blockhash se um tempo considerável tiver passado desde o último obtido. - Escolhendo o Compromisso: Para transações críticas, usar o compromisso
finalizedoferece a garantia mais forte de que o blockhash é do fork principal da cadeia, mas pode ser um pouco mais antigo.confirmedoferece um bom equilíbrio. Saiba mais sobre níveis de compromisso para informações detalhadas. - Taxas de Transação: Lembre-se de também calcular e incluir as taxas de transação apropriadas. O blockhash em si não determina a taxa.
- Lógica de Repetição: Se uma transação expirar porque seu
lastValidBlockHeightfoi ultrapassado, você deve assinar novamente com um blockhash novo e mais recente e reenviar.
getLatestBlockhash de forma eficaz, um elemento essencial para interagir com a rede Solana através de transações.
Métodos Relacionados
simulateTransaction
Simular uma transação antes de enviar
isBlockhashValid
Verificar se um blockhash ainda é válido