> ## 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ách sử dụng getSlotLeader

> Tìm hiểu các trường hợp sử dụng, ví dụ mã, tham số yêu cầu, cấu trúc phản hồi và mẹo dành cho getSlotLeader.

Phương thức RPC [`getSlotLeader`](https://www.helius.dev/docs/api-reference/rpc/http/getslotleader) trả về khóa công khai của trình xác thực hiện đang giữ vai trò leader sản xuất khối, dựa trên góc nhìn của nút tại một mức cam kết cụ thể. Leader chịu trách nhiệm sản xuất khối cho slot hiện tại.

## Các trường hợp sử dụng phổ biến

* **Xác định trình sản xuất khối hiện tại:** Tìm trình xác thực hiện được lên lịch để sản xuất khối.
* **Giám sát mạng:** Theo dõi quá trình luân phiên leader của slot.
* **Gỡ lỗi sự cố giao dịch:** Trong một số trường hợp nâng cao, việc biết leader của slot hiện tại có thể hữu ích nếu giao dịch được gửi trực tiếp đến các leader (dù đây không phải là cách làm phổ biến ở phía máy khách).

## Tham số yêu cầu

Phương thức này nhận một đối tượng cấu hình không bắt buộc làm tham số đầu tiên:

1. **`options`** (`object`, không bắt buộc): Một đối tượng cấu hình không bắt buộc với các trường sau:
   * **`commitment`** (`string`, không bắt buộc): Chỉ định [mức cam kết](https://www.helius.dev/blog/solana-commitment-levels) cho truy vấn. Các giá trị được hỗ trợ là `finalized`, `confirmed` hoặc `processed`. Nếu bỏ qua, hệ thống sẽ sử dụng mức cam kết mặc định của nút RPC (thường là `finalized`). Leader của slot được xác định dựa trên slot khớp với mức cam kết này.
   * **`minContextSlot`** (`number`, không bắt buộc): Slot tối thiểu mà tại đó yêu cầu có thể được đánh giá. Trường này đặt slot tối thiểu cho ngữ cảnh của nút.

## Cấu trúc phản hồi

Trường `result` trong phản hồi JSON-RPC là một chuỗi duy nhất được mã hóa base-58, đại diện cho khóa công khai (danh tính) của leader slot hiện tại.

**Phản hồi mẫu:**

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

## Ví dụ

### 1. Lấy leader slot hiện tại (mức cam kết mặc định)

Ví dụ này truy xuất leader slot hiện tại bằng mức cam kết mặc định của nút (thường là `finalized`).

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

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

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

  getCurrentSlotLeader();
  ```
</CodeGroup>

### 2. Lấy leader slot hiện tại với mức cam kết `confirmed`

Ví dụ này truy xuất leader slot cho slot mới nhất đã đạt mức cam kết `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": "getSlotLeader",
      "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 getConfirmedSlotLeader() {
    const connection = new Connection('https://mainnet.helius-rpc.com/?api-key=<api-key>');
    try {
      const slotLeader = await connection.getSlotLeader('confirmed');
      console.log('Current slot leader (confirmed commitment):', slotLeader);
      // 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 slotLeader = await connection.getSlotLeader({ commitment: 'confirmed' });
    } catch (error) {
      console.error('Error fetching confirmed slot leader:', error);
    }
  }

  getConfirmedSlotLeader();
  ```
</CodeGroup>

## Mẹo dành cho nhà phát triển

* **Tính biến động:** Leader slot thay đổi thường xuyên (sau mỗi vài slot, thường là 4). Kết quả của lệnh gọi này là ảnh chụp tại một thời điểm, dựa trên góc nhìn hiện tại của nút và mức cam kết đã chọn.
* **Mức cam kết:** Mức cam kết ảnh hưởng đến slot nào được coi là "hiện tại" khi xác định leader. Việc sử dụng `processed` sẽ cung cấp leader của slot mới nhất mà nút biết đến. Leader này có thể thay đổi nhanh chóng và có thể chưa được mạng lưới rộng hơn xác nhận.
* **Lịch leader:** Thứ tự các leader slot được xác định bằng lịch leader, được tính toán vào đầu mỗi epoch. Hướng dẫn của chúng tôi về [Slot, khối và epoch](https://www.helius.dev/blog/solana-slots-blocks-and-epochs) cung cấp thêm thông tin chi tiết về quy trình này. Để xem toàn diện hơn về các leader sắp tới, hãy sử dụng `getLeaderSchedule`.
* **Góc nhìn của nút:** Leader slot được trả về dựa trên thông tin có sẵn cho nút RPC cụ thể mà bạn đang truy vấn. Các nút khác nhau có thể có góc nhìn hơi khác nhau do độ trễ mạng.

`getSlotLeader` cung cấp một cách nhanh chóng để xác định trình xác thực hiện chịu trách nhiệm sản xuất khối. Để có góc nhìn rộng hơn về quá trình luân phiên leader, hãy cân nhắc sử dụng `getLeaderSchedule`.

## Các phương thức liên quan

<CardGroup cols={2}>
  <Card title="getLeaderSchedule" href="/docs/vi/api-reference/rpc/http/getleaderschedule">
    Lấy toàn bộ lịch leader cho một epoch
  </Card>

  <Card title="getSlotLeaders" href="/docs/vi/api-reference/rpc/http/getslotleaders">
    Lấy các leader cho một dải slot sắp tới
  </Card>
</CardGroup>
