> ## 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.

# Cómo usar getLatestBlockhash

> Conoce los casos de uso de getLatestBlockhash, ejemplos de código, parámetros de solicitud, estructura de respuesta y consejos.

El método RPC [`getLatestBlockhash`](https://www.helius.dev/docs/api-reference/rpc/http/getlatestblockhash) es esencial para preparar y enviar transacciones en la red de Solana. Recupera el hash de bloque más reciente procesado por el nodo, junto con la última altura de bloque en la que este hash seguirá siendo válido. Para obtener más información sobre cómo usar los hashes de bloque de manera eficaz y garantizar que tus [transacciones se procesen](https://www.helius.dev/blog/how-to-land-transactions-on-solana), consulta nuestra guía completa.

Cada transacción en Solana debe hacer referencia a un hash de bloque reciente. Este mecanismo ayuda a prevenir ciertos tipos de ataques, como la reproducción de transacciones en una cadena bifurcada.

**Nota sobre la versión:** Este método está disponible en `solana-core` v1.9 o versiones posteriores. Para los nodos que ejecutan `solana-core` v1.8 o versiones anteriores, usa en su lugar el método `getRecentBlockhash`.

## Casos de uso comunes

* **Creación de transacciones:** Obtén un hash de bloque reciente para incluirlo en una nueva transacción antes de firmarla y enviarla.
* **Gestión de la vigencia de las transacciones:** Usa `lastValidBlockHeight` para saber durante cuánto tiempo seguirá siendo válida una transacción que haga referencia al hash de bloque obtenido.
* **Comprobaciones previas:** Aunque `simulateTransaction` puede hacerlo de forma implícita, las aplicaciones pueden obtener un hash de bloque para preparar manualmente una transacción para su simulación.

## Parámetros de la solicitud

Este método puede recibir opcionalmente un objeto de configuración con los siguientes parámetros:

* **`commitment`** (cadena, opcional): Especifica el [nivel de compromiso](https://www.helius.dev/blog/solana-commitment-levels) de la consulta. Si se omite, se usa el compromiso predeterminado del nodo. Para las transacciones, es común usar `confirmed` o `finalized` para garantizar que el hash de bloque provenga de una parte razonablemente estable de la cadena.
* **`minContextSlot`** (entero, opcional): El slot mínimo en el que se puede evaluar la solicitud. Esto garantiza que la consulta se realice en un estado del libro mayor que haya procesado al menos hasta este slot.

## Estructura de la respuesta

El campo `result` de la respuesta JSON-RPC será un objeto `RpcResponse`. El campo `value` de este objeto contiene:

* **`blockhash`** (cadena): Una cadena codificada en base 58 que representa el hash de bloque más reciente.
* **`lastValidBlockHeight`** (u64): La altura de bloque en la que vencerá `blockhash`. Una transacción que haga referencia a este `blockhash` es válida hasta que la red alcance este `lastValidBlockHeight`.

La respuesta también incluye un objeto `context` con el `slot` en el que se recuperó la información.

## Ejemplos

### 1. Obtener el hash de bloque más reciente con el compromiso predeterminado

Este ejemplo obtiene el hash de bloque más reciente mediante el compromiso predeterminado del nodo.

<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. Obtener el hash de bloque más reciente con el compromiso 'confirmed'

Este ejemplo solicita explícitamente el hash de bloque más reciente con el compromiso `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>

## Consejos para desarrolladores

* **Validez del hash de bloque:** Un hash de bloque es válido durante un tiempo limitado, aproximadamente 2 minutos, aunque esto puede variar. La red debe confirmar las transacciones antes de que se supere su `lastValidBlockHeight`. Obtén siempre un hash de bloque nuevo si ha transcurrido un tiempo considerable desde que obtuviste el último.
* **Elección del compromiso:** Para transacciones críticas, usar el compromiso `finalized` ofrece la mayor garantía de que el hash de bloque proviene de la bifurcación principal de la cadena, pero puede ser un poco más antiguo. `confirmed` ofrece un buen equilibrio. Consulta más información sobre los [niveles de compromiso](https://www.helius.dev/blog/solana-commitment-levels).
* **Comisiones de transacción:** Recuerda calcular e incluir también las comisiones de transacción correspondientes. El hash de bloque por sí solo no determina la comisión.
* **Lógica de reintento:** Si una transacción vence porque se ha superado su `lastValidBlockHeight`, debes volver a firmarla con un hash de bloque nuevo y más reciente, y enviarla de nuevo.

Esta guía proporciona los pasos para usar `getLatestBlockhash` de forma eficaz, un elemento fundamental para interactuar con la red de Solana mediante transacciones.

## Métodos relacionados

<CardGroup cols={2}>
  <Card title="simulateTransaction" href="/docs/es/api-reference/rpc/http/simulatetransaction">
    Simula una transacción antes de enviarla
  </Card>

  <Card title="isBlockhashValid" href="/docs/es/api-reference/rpc/http/isblockhashvalid">
    Comprueba si un hash de bloque sigue siendo válido
  </Card>
</CardGroup>
