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

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

El método RPC [`getBlockHeight`](https://www.helius.dev/docs/api-reference/rpc/http/getblockheight) es una forma sencilla de consultar un nodo de Solana para obtener su altura de bloque actual. La altura de bloque representa la cantidad de bloques que se han procesado desde el bloque génesis (slot 0).

Este método es útil para saber rápidamente cuánto ha avanzado la cadena o para consultar la altura del bloque más reciente en un nivel de compromiso específico.

## Casos de uso comunes

* **Monitorear el avance de la cadena:** Llama a este método periódicamente para comprobar el avance de la cadena.
* **Obtener una instantánea de la longitud de la cadena:** Determina la cantidad total de bloques procesados hasta un punto determinado (según el nivel de compromiso).
* **Cruzar referencias con otros datos:** Usa la altura de bloque como punto de referencia cuando analices otros datos o eventos en cadena.

## Parámetros

`getBlockHeight` puede recibir opcionalmente un objeto de configuración como primer parámetro (o puedes llamarlo sin parámetros para usar los valores predeterminados):

1. `config` (objeto, opcional): Un objeto de configuración con los siguientes campos:
   * `commitment` (cadena, opcional): Especifica el nivel de compromiso que se usará en la consulta. El valor predeterminado es `finalized`.
     * `finalized`: El nodo consultará el bloque más reciente que la gran mayoría del clúster haya confirmado como bloque que alcanzó el bloqueo máximo.
     * `confirmed`: El nodo consultará el bloque más reciente por el que haya votado una gran mayoría del clúster.
     * `processed`: El nodo consultará su bloque más reciente. Ten en cuenta que es posible que el bloque no esté completo.
   * `minContextSlot` (número, opcional): El slot mínimo en el que se puede evaluar la solicitud. Esto garantiza que la altura de bloque devuelta provenga de un slot igual o posterior a `minContextSlot`.

Si no proporcionas parámetros, el método normalmente usa de forma predeterminada el compromiso `finalized`.

## Consejos para desarrolladores

* **Los niveles de compromiso son importantes**: La altura de bloque devuelta puede variar según el nivel `commitment` especificado. `finalized` proporciona la altura más estable, mientras que `processed` puede proporcionar una altura más actual, pero potencialmente transitoria.
* **`minContextSlot` para mantener la coherencia**: Usa `minContextSlot` si necesitas garantizar que la altura de bloque se consulte desde un estado que sea al menos tan reciente como un slot específico que estés monitoreando.
* **No es un número de slot**: Recuerda que la altura de bloque es diferente del número de slot. Un slot es un periodo, y no todos los slots producen un bloque (se denominan slots omitidos). La altura de bloque es el recuento de los bloques realmente producidos.
* **Comprobación básica del estado de la cadena**: Aunque es sencillo, `getBlockHeight` puede formar parte de una comprobación básica del estado o la sincronización de la cadena para tu aplicación o sistema de monitoreo.

## Respuesta

El campo `result` de la respuesta JSON-RPC será un único número:

* `blockHeight` (número): La altura de bloque actual (u64) del nodo según el nivel de compromiso especificado.

**Ejemplo de respuesta JSON:**

```json theme={"system"}
{
  "jsonrpc": "2.0",
  "result": 275123456, // Example block height
  "id": 1
}
```

Este valor representa la cantidad de bloques en la cadena más larga desde el bloque génesis (slot 0) hasta el extremo actual de la cadena, según lo observado por el nodo consultado.

## Ejemplo: obtener la altura de bloque actual

Obtengamos la altura de bloque actual del RPC de Helius Devnet.

**Nota:** Reemplaza `YOUR_API_KEY` por tu clave de API de Helius real en los siguientes ejemplos.

<CodeGroup>
  ```bash curl theme={"system"}
  curl https://mainnet.helius-rpc.com/?api-key=YOUR_API_KEY -X POST -H "Content-Type: application/json" -d \
  '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "getBlockHeight",
    "params": [] 
  }'
  ```

  ```javascript JavaScript (using @solana/web3.js) theme={"system"}
  const { Connection } = require('@solana/web3.js');

  async function getCurrentBlockHeight() {
    const rpcUrl = 'https://mainnet.helius-rpc.com/?api-key=YOUR_API_KEY'; // Replace YOUR_API_KEY
    const connection = new Connection(rpcUrl, 'confirmed');

    try {
      const blockHeight = await connection.getBlockHeight();
      console.log(`Current Block Height: ${blockHeight}`);

    } catch (error) {
      console.error('Error fetching block height:', error);
    }
  }

  getCurrentBlockHeight();
  ```

  ```typescript Kit theme={"system"}
  import { createSolanaRpc } from "@solana/kit";

  const rpc_url = "https://mainnet.helius-rpc.com/?api-key=YOUR_API_KEY";
  const rpc = createSolanaRpc(rpc_url);

  let blockHeight = await rpc.getBlockHeight().send();

  console.log("block height:", blockHeight);
  ```

  ```rust Rust theme={"system"}
  use anyhow::Result;
  use solana_client::nonblocking::rpc_client::RpcClient;
  use solana_sdk::commitment_config::CommitmentConfig;

  #[tokio::main]
  async fn main() -> Result<()> {
      let client = RpcClient::new_with_commitment(
          String::from("https://mainnet.helius-rpc.com/?api-key=YOUR_API_KEY"),
          CommitmentConfig::confirmed(),
      );

      let block_height = client.get_block_height().await?;

      println!("Block height: {:#?}", block_height);

      Ok(())
  }
  ```
</CodeGroup>
