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

# 如何使用 getSlot

> 了解 getSlot 的使用案例、代码示例、请求参数、响应结构和提示。

[`getSlot`](https://www.helius.dev/docs/api-reference/rpc/http/getslot) RPC 方法返回 RPC 节点认为已达到特定承诺级别的当前 slot。这是理解节点感知的区块链当前状态的重要方法。

## 常见用例

* **获取当前网络进度：** 确定节点处理或确认的最新槽。
* **节点同步检查：** 比较不同节点的槽可以指示它们的同步状态。
* **操作时间戳：** 使用当前槽作为操作的参考点或理解某些数据的年龄。
* **其他 RPC 调用的输入：** 一些 RPC 方法可能使用槽号作为参考点。

## 请求参数

此方法将一个可选的配置对象作为其第一个参数：

1. **`options`** (`object`, 可选)：一个可选的配置对象，具有以下字段：
   * **`commitment`** (`string`, 可选)：指定查询的[承诺级别](https://www.helius.dev/blog/solana-commitment-levels)。支持的值有 `finalized`, `confirmed`, 或 `processed`。如果省略，则使用 RPC 节点的默认承诺（通常是 `finalized`）。
     * `processed`：节点将查询其最新的 slot。请注意，该 slot 可能尚未被集群确认，并可能会被跳过。
     * `confirmed`：节点将查询已被集群超多数投票的最新 slot。
     * `finalized`：节点将查询已被集群超多数确认达到最大锁定（不能回退）的最新 slot。
   * **`minContextSlot`** (`number`, 可选)：请求可以评估的最小 slot。这设置了节点上下文的最小 slot。如果节点的状态早于此 slot，可能会返回错误或返回一个反映其当前（较旧）状态的 slot 编号。

## 响应结构

JSON-RPC 响应中的字段 `result` 是一个单一的 `u64` （无符号 64 位整数），表示根据指定承诺级别的当前 slot 编号。

**示例响应：**

```json theme={"system"}
{
  "jsonrpc": "2.0",
  "result": 123456789,
  "id": 1
}
```

## 示例

### 1. 获取当前槽（默认承诺）

此示例使用节点的默认承诺级别（通常是 `finalized`）获取当前 slot。

<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": "getSlot"
    }'
  ```

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

  async function getCurrentSlot() {
    const connection = new Connection('https://mainnet.helius-rpc.com/?api-key=<api-key>');
    try {
      const slot = await connection.getSlot();
      console.log('Current slot (default commitment):', slot);
    } catch (error) {
      console.error('Error fetching current slot:', error);
    }
  }

  getCurrentSlot();
  ```
</CodeGroup>

### 2. 获取具有特定承诺的当前槽

此示例获取已达到 `confirmed` 承诺的当前 slot。

<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": "getSlot",
      "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 getConfirmedSlot() {
    const connection = new Connection('https://mainnet.helius-rpc.com/?api-key=<api-key>');
    try {
      const slot = await connection.getSlot('confirmed');
      console.log('Current slot (confirmed commitment):', slot);
      // Note: For @solana/web3.js v1.30.0 and later, you can pass commitment directly.
      // For older versions or more complex options, use an object:
      // const slot = await connection.getSlot({ commitment: 'confirmed' });
    } catch (error) {
      console.error('Error fetching confirmed slot:', error);
    }
  }

  getConfirmedSlot();
  ```
</CodeGroup>

## 开发者提示

* **承诺事项：** 返回的槽号在很大程度上取决于指定的`commitment`级别。有关详细信息，请参阅[Solana承诺级别](https://www.helius.dev/blog/solana-commitment-levels)。`processed`将是节点知道的最高（最新）槽，而`finalized`将是整个网络确认的较旧槽。选择适合您的用例数据终结性需求的承诺级别。
* **节点变异性：** 由于网络传播延迟或自身处理状态，不同的RPC节点可能会为同一承诺级别返回略有不同的槽号。这在`processed`和`confirmed`级别尤其明显。
* **`minContextSlot`：** 此参数确保处理您请求的节点至少已经达到`minContextSlot`。如果节点落后于此槽，行为可能会有所不同（例如，错误或节点当前的最高槽小于`minContextSlot`）。通常在需要确保查询针对最近状态的高级场景中使用。

`getSlot`是与Solana区块链交互和理解其当前进展的简单但至关重要的方法。
