> ## 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 的使用案例、代码示例、请求参数、响应结构和提示。

[获取区块高度](https://www.helius.dev/docs/api-reference/rpc/http/getblockheight) RPC 方法是查询 Solana 节点当前区块高度的一种简单方式。区块高度表示自创世区块（插槽 0）以来处理的区块数量。

此方法对于快速了解链的进展情况或在特定承诺级别引用最新区块高度非常有用。

## 常见用例

* **监控链进展：** 定期调用此方法以查看链的推进情况。
* **获取链长度快照：** 确定在某个时间点（基于承诺）处理的区块总数。
* **与其他数据交叉引用：** 在分析其他链上数据或事件时，使用区块高度作为参考点。

## 参数

可选择地使用一个配置对象作为其第一个参数（或者不带参数调用以使用默认值）：

1. 配置对象 (object, optional): 包含以下字段的配置对象：
   * 承诺级别 (string, optional): 指定用于查询的承诺级别。默认为最大锁定。
     * 最大锁定: 节点将查询被集群的绝大多数确认达到最大锁定的最新区块。
     * 投票: 节点将查询已被集群绝大多数投票的最新区块。
     * 空头锁定: 节点将查询其最新区块。注意，该区块可能不完整。
   * 最小插槽 (number, optional): 请求可以被评估的最小插槽。这确保返回的区块高度来自不小于该插槽的插槽。

如果未提供参数，方法通常默认为最大锁定承诺。

## 开发者提示

* **承诺级别很重要**: 返回的区块高度可能根据指定的承诺级别而有所不同。最大锁定提供最稳定的高度，而空头锁定可能提供更当前但可能是暂时的高度。
* **为一致性而使用最小插槽**: 如果需要确保区块高度是从至少与您正在跟踪的特定插槽一样新的状态进行查询的，请使用最小插槽。
* **不是插槽号**: 请记住，区块高度与插槽号不同。插槽是一段时间，并且不是每个插槽都会产生区块（这些称为跳过的插槽）。区块高度是实际产生的区块计数。
* **基本链健康检查**: 虽然简单，但获取区块高度可以作为您应用程序或监控系统基本链健康或同步检查的一部分。

## 响应

JSON-RPC 响应中的 `result` 字段将是一个单一的数字：

* `blockHeight` (数字)：根据指定的承诺级别，节点的当前块高度 (u64)。

**示例响应JSON：**

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

此值表示从创世区块（槽位0）到链的当前头部，查询节点所看到的最长链上的区块数量。

## 示例：获取当前区块高度

让我们从Helius Devnet RPC获取当前区块高度。

\*\*注意：\*\*在下面的示例中，将 `YOUR_API_KEY` 替换为您实际的 Helius API 密钥。

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