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

# Как использовать getBlockHeight

> Узнайте о сценариях использования getBlockHeight, примерах кода, параметрах запроса, структуре ответа и рекомендациях.

Метод RPC [`getBlockHeight`](https://www.helius.dev/docs/api-reference/rpc/http/getblockheight) позволяет легко запросить у узла Solana текущую высоту блока. Высота блока — это количество блоков, обработанных с момента создания исходного блока (слот 0).

Этот метод позволяет быстро определить, насколько продвинулась цепочка, или получить последнюю высоту блока для заданного уровня подтверждения.

## Распространенные сценарии использования

* **Мониторинг продвижения цепочки:** Периодически вызывайте этот метод, чтобы отслеживать продвижение цепочки.
* **Получение снимка длины цепочки:** Определите общее количество блоков, обработанных к определенному моменту с учетом уровня подтверждения.
* **Сопоставление с другими данными:** Используйте высоту блока как ориентир при анализе других данных или событий в блокчейне.

## Параметры

Метод `getBlockHeight` может принимать объект конфигурации в качестве первого необязательного параметра. Его также можно вызвать без параметров, чтобы использовать значения по умолчанию:

1. `config` (объект, необязательно): объект конфигурации со следующими полями:
   * `commitment` (строка, необязательно): задает уровень подтверждения для запроса. Значение по умолчанию — `finalized`.
     * `finalized`: узел запросит последний блок, который сверхбольшинство кластера подтвердило как достигший максимального периода блокировки.
     * `confirmed`: узел запросит последний блок, за который проголосовало сверхбольшинство кластера.
     * `processed`: узел запросит свой последний блок. Обратите внимание, что блок может быть неполным.
   * `minContextSlot` (число, необязательно): минимальный слот, на котором можно обработать запрос. Это гарантирует, что возвращенная высота блока получена из слота, равного `minContextSlot` или превышающего его.

Если параметры не указаны, метод обычно использует уровень подтверждения `finalized` по умолчанию.

## Рекомендации разработчикам

* **Уровень подтверждения имеет значение**: возвращаемая высота блока может различаться в зависимости от указанного уровня `commitment`. `finalized` возвращает наиболее стабильную высоту, а `processed` — более актуальную, но потенциально временную.
* **`minContextSlot` для согласованности**: используйте `minContextSlot`, если нужно гарантировать, что высота блока запрашивается из состояния не старше определенного отслеживаемого слота.
* **Не номер слота**: помните, что высота блока отличается от номера слота. Слот — это период времени, и блок создается не в каждом слоте. Такие слоты называют пропущенными. Высота блока — это количество фактически созданных блоков.
* **Базовая проверка состояния цепочки**: несмотря на простоту, `getBlockHeight` можно использовать для базовой проверки состояния или синхронизации цепочки в вашем приложении или системе мониторинга.

## Ответ

Поле `result` в ответе JSON-RPC будет содержать одно число:

* `blockHeight` (число): текущая высота блока (u64) узла в соответствии с указанным уровнем подтверждения.

**Пример ответа JSON:**

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

Это значение представляет количество блоков в самой длинной цепочке от исходного блока (слот 0) до текущей вершины цепочки с точки зрения опрашиваемого узла.

## Пример: получение текущей высоты блока

Получим текущую высоту блока через RPC Helius Devnet.

**Примечание:** В приведенных ниже примерах замените `YOUR_API_KEY` фактическим ключом API Helius.

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


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.