> ## Documentation Index
> Fetch the complete documentation index at: https://www.helius.dev/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Como Usar getLatestBlockhash

> Aprenda casos de uso do getLatestBlockhash, exemplos de código, parâmetros de solicitação, estrutura de resposta e dicas.

O método RPC [`getLatestBlockhash`](https://www.helius.dev/docs/api-reference/rpc/http/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](https://www.helius.dev/blog/how-to-land-transactions-on-solana), 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 `lastValidBlockHeight` para entender por quanto tempo uma transação referenciando o blockhash obtido pode ser considerada válida.
* **Verificações de Pré-execução:** Enquanto `simulateTransaction` pode 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](https://www.helius.dev/blog/solana-commitment-levels) para a consulta. Se omitido, o compromisso padrão do nó é usado. Para transações, é comum usar `confirmed` ou `finalized` para 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 campo `result` 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 o `blockhash` expirará. Uma transação citando este `blockhash` é válida até que a rede atinja este `lastValidBlockHeight`.

A resposta também inclui um objeto `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ó.

<CodeGroup>
  ```bash cURL theme={"system"}
  # Replace <api-key> with your Helius API key
  curl https://mainnet.helius-rpc.com/?api-key=<api-key> -X POST -H "Content-Type: application/json" -d \
    '{
      "jsonrpc": "2.0",
      "id": 1,
      "method": "getLatestBlockhash"
    }'
  ```

  ```javascript JavaScript (using @solana/web3.js) theme={"system"}
  // Replace <api-key> with your Helius API key
  const { Connection } = require('@solana/web3.js');

  async function fetchLatestBlockhash() {
    const connection = new Connection('https://mainnet.helius-rpc.com/?api-key=<api-key>');
    try {
      const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash();
      console.log('Latest Blockhash Info:');
      console.log(`  Blockhash: ${blockhash}`);
      console.log(`  Last Valid Block Height: ${lastValidBlockHeight}`);
      // This blockhash can now be used in a transaction
    } catch (error) {
      console.error('Error fetching latest blockhash:', error);
    }
  }

  fetchLatestBlockhash();
  ```
</CodeGroup>

### 2. Obter o Blockhash Mais Recente com Compromisso 'confirmed'

Este exemplo solicita explicitamente o blockhash mais recente com compromisso `confirmed`.

<CodeGroup>
  ```bash cURL theme={"system"}
  # Replace <api-key> with your Helius API key
  curl https://mainnet.helius-rpc.com/?api-key=<api-key> -X POST -H "Content-Type: application/json" -d \
    '{
      "jsonrpc": "2.0",
      "id": 1,
      "method": "getLatestBlockhash",
      "params": [{ "commitment": "confirmed" }]
    }'
  ```

  ```javascript JavaScript (using @solana/web3.js) theme={"system"}
  // Replace <api-key> with your Helius API key
  const { Connection } = require('@solana/web3.js');

  async function fetchConfirmedBlockhash() {
    const connection = new Connection('https://mainnet.helius-rpc.com/?api-key=<api-key>');
    try {
      const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash('confirmed');
      console.log('Confirmed Blockhash Info:');
      console.log(`  Blockhash: ${blockhash}`);
      console.log(`  Last Valid Block Height: ${lastValidBlockHeight}`);
    } catch (error) {
      console.error('Error fetching confirmed blockhash:', error);
    }
  }

  fetchConfirmedBlockhash();
  ```
</CodeGroup>

## 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 `lastValidBlockHeight` ser 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 `finalized` oferece a garantia mais forte de que o blockhash é do fork principal da cadeia, mas pode ser um pouco mais antigo. `confirmed` oferece um bom equilíbrio. Saiba mais sobre [níveis de compromisso](https://www.helius.dev/blog/solana-commitment-levels) 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 `lastValidBlockHeight` foi ultrapassado, você deve assinar novamente com um blockhash novo e mais recente e reenviar.

Este guia fornece os passos para usar `getLatestBlockhash` de forma eficaz, um elemento essencial para interagir com a rede Solana através de transações.

## Métodos Relacionados

<CardGroup cols={2}>
  <Card title="simulateTransaction" href="/docs/pt-BR/api-reference/rpc/http/simulatetransaction">
    Simular uma transação antes de enviar
  </Card>

  <Card title="isBlockhashValid" href="/docs/pt-BR/api-reference/rpc/http/isblockhashvalid">
    Verificar se um blockhash ainda é válido
  </Card>
</CardGroup>
