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

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

Phương thức RPC [`getLargestAccounts`](https://www.helius.dev/docs/api-reference/rpc/http/getlargestaccounts) trả về danh sách 20 tài khoản hàng đầu trên mạng Solana, được xếp hạng theo số dư lamport. Phương thức này hữu ích để phân tích mạng, tìm hiểu sự phân bổ tài sản hoặc xác định những người nắm giữ lượng SOL đáng kể.

Lưu ý rằng nút RPC có thể lưu kết quả từ phương thức này vào bộ nhớ đệm trong tối đa hai giờ.

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

* **Giám sát tình trạng mạng:** Theo dõi mức độ tập trung SOL trong các tài khoản lớn nhất.
* **Phân tích kinh tế:** Nghiên cứu sự phân bổ tài sản trên mạng Solana.
* **Xác định cá voi:** Tìm các tài khoản nắm giữ lượng SOL đáng kể.

## Tham số yêu cầu

Phương thức này có thể nhận một đối tượng cấu hình không bắt buộc với các tham số sau:

* **`commitment`** (chuỗi, không bắt buộc): Chỉ định [mức cam kết](https://www.helius.dev/blog/solana-commitment-levels) sẽ sử dụng khi truy vấn sổ cái. Nếu không được cung cấp, phương thức sẽ sử dụng mức cam kết mặc định của nút.
* **`filter`** (chuỗi, không bắt buộc): Lọc kết quả theo loại tài khoản. Các giá trị được chấp nhận gồm:
  * `circulating`: Trả về các tài khoản lớn nhất thuộc nguồn cung lưu hành.
  * `nonCirculating`: Trả về các tài khoản lớn nhất không thuộc nguồn cung lưu hành (ví dụ: tài khoản bị khóa, tài khoản của quỹ).
    Nếu bỏ qua, tất cả tài khoản sẽ được xem xét mà không áp dụng bộ lọc cụ thể này.

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

Trường `result` của phản hồi JSON-RPC sẽ là một đối tượng `RpcResponse`. Trường `value` trong đối tượng này là một mảng gồm tối đa 20 đối tượng tài khoản, mỗi đối tượng chứa:

* **`address`** (chuỗi): Khóa công khai của tài khoản được mã hóa theo base-58.
* **`lamports`** (u64): Số dư của tài khoản tính bằng lamport.

Phản hồi cũng bao gồm một đối tượng `context` chứa `slot` mà tại đó thông tin được truy xuất.

## Ví dụ

### 1. Lấy 20 tài khoản lớn nhất (không có bộ lọc)

Ví dụ này truy xuất 20 tài khoản lớn nhất theo số dư lamport mà không áp dụng bộ lọc nguồn cung.

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

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

  async function logLargestAccounts() {
    const connection = new Connection('https://mainnet.helius-rpc.com/?api-key=<api-key>');
    try {
      const largestAccounts = await connection.getLargestAccounts();
      console.log(`Largest Accounts (Slot: ${largestAccounts.context.slot}):`);
      largestAccounts.value.forEach((account, index) => {
        console.log(
          `  ${index + 1}. Address: ${account.address}, Balance: ${account.lamports / 10**9} SOL`
        );
      });
      // For full raw details:
      // console.log(JSON.stringify(largestAccounts, null, 2));
    } catch (error) {
      console.error('Error fetching largest accounts:', error);
    }
  }

  logLargestAccounts();
  ```
</CodeGroup>

### 2. Lấy 20 tài khoản lưu hành lớn nhất

Ví dụ này truy xuất 20 tài khoản lớn nhất được xem là thuộc nguồn cung lưu hành.

<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": "getLargestAccounts",
      "params": [{ "filter": "circulating" }]
    }'
  ```

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

  async function logLargestCirculatingAccounts() {
    const connection = new Connection('https://mainnet.helius-rpc.com/?api-key=<api-key>');
    try {
      const largestAccounts = await connection.getLargestAccounts({ filter: 'circulating' });
      console.log(`Largest Circulating Accounts (Slot: ${largestAccounts.context.slot}):`);
      largestAccounts.value.forEach((account, index) => {
        console.log(
          `  ${index + 1}. Address: ${account.address}, Balance: ${account.lamports / 10**9} SOL`
        );
      });
      // console.log(JSON.stringify(largestAccounts, null, 2));
    } catch (error) {
      console.error('Error fetching largest circulating accounts:', error);
    }
  }

  logLargestCirculatingAccounts();
  ```
</CodeGroup>

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

* **Dữ liệu được lưu vào bộ nhớ đệm:** Nút RPC có thể lưu kết quả vào bộ nhớ đệm trong tối đa hai giờ. Điều này có nghĩa là dữ liệu có thể không phản ánh theo thời gian thực đến khối mới nhất.
* **Giới hạn ở 20 tài khoản hàng đầu:** Phương thức này chỉ trả về 20 tài khoản hàng đầu. Để phân tích toàn diện hơn về sự phân bổ tài sản, có thể cần sử dụng các nguồn dữ liệu hoặc phương thức khác.
* **Hoạt động của bộ lọc:** Các bộ lọc `circulating` và `nonCirculating` phụ thuộc vào định nghĩa và nguồn dữ liệu mà nút RPC sử dụng cho các phân loại này.

Hướng dẫn này cung cấp thông tin cần thiết để sử dụng phương thức RPC `getLargestAccounts` nhằm truy vấn những người nắm giữ SOL lớn nhất trên mạng Solana.
