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

> Tìm hiểu các trường hợp sử dụng getBalance, 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 [`getBalance`](https://www.helius.dev/docs/api-reference/rpc/http/getbalance) là một cách đơn giản để kiểm tra số dư SOL gốc của bất kỳ tài khoản nào trên blockchain Solana. Phương thức này trả về số dư theo lamport (1 SOL = 1.000.000.000 lamport).

Phương thức này nhẹ hơn `getAccountInfo` nếu bạn *chỉ* cần số dư SOL mà không cần thông tin tài khoản nào khác.

## Trường hợp sử dụng chính

* **Kiểm tra nhanh lượng SOL nắm giữ của một tài khoản:** Mục đích chính là xác định lượng SOL mà một tài khoản (ví, chương trình, v.v.) đang nắm giữ.

## Tham số

1. `publicKey` (chuỗi, bắt buộc): Khóa công khai được mã hóa base-58 của tài khoản cần truy vấn.

2. `config` (đối tượng, không bắt buộc): Đối tượng cấu hình có các trường 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) dùng cho truy vấn. Mặc định là `finalized`.
     * `finalized`: Nút sẽ truy vấn khối gần nhất được đại đa số cụm xác nhận là đã đạt thời gian khóa tối đa.
     * `confirmed`: Nút sẽ truy vấn khối gần nhất đã được đại đa số cụm bỏ phiếu.
     * `processed`: Nút sẽ truy vấn khối gần nhất của mình. Lưu ý rằng khối này có thể chưa hoàn chỉnh.
   * `minContextSlot` (số, không bắt buộc): Slot tối thiểu mà tại đó yêu cầu có thể được đánh giá.

## Phản hồi

Trường `result` của phản hồi JSON-RPC sẽ là một đối tượng chứa:

* `context` (đối tượng):
  * `slot` (số): Slot tại đó số dư được truy xuất.
  * `apiVersion` (chuỗi, không bắt buộc): Phiên bản API RPC (có thể không được cung cấp từ tất cả các nút).
* `value` (số): Số dư tài khoản tính bằng lamport (số nguyên 64 bit không dấu).

Nếu tài khoản không tồn tại trên chuỗi, `getBalance` thường sẽ trả về giá trị `0` lamport.

## Ví dụ: Truy xuất số dư tài khoản

Hãy kiểm tra số dư SOL của ID Serum Program V3 (`9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin`) trên mạng chính. Bản thân tài khoản chương trình này nắm giữ SOL để được miễn tiền thuê.

**Lưu ý:** Thay `YOUR_API_KEY` bằng khóa API Helius thực tế của bạn trong các ví dụ dưới đây.

<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": "getBalance",
    "params": [
      "9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"
    ]
  }'
  ```

  ```javascript JavaScript (using @solana/web3.js) theme={"system"}
  const { Connection, PublicKey, LAMPORTS_PER_SOL } = require('@solana/web3.js');

  async function checkBalance() {
    const rpcUrl = 'https://mainnet.helius-rpc.com/?api-key=YOUR_API_KEY'; // Replace YOUR_API_KEY
    const connection = new Connection(rpcUrl, 'confirmed');
    const accountPubKey = new PublicKey('9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin');

    try {
      const lamports = await connection.getBalance(accountPubKey);
      const sol = lamports / LAMPORTS_PER_SOL;

      console.log(`Account PubKey: ${accountPubKey.toBase58()}`);
      console.log(`Balance (Lamports): ${lamports}`);
      console.log(`Balance (SOL): ${sol}`);

    } catch (error) {
      console.error('Error fetching balance:', error);
    }
  }

  checkBalance();
  ```

  ```typescript Kit theme={"system"}
  import { address, createSolanaRpc } from "@solana/kit";

  const rpc_url = "https://mainnet.helius-rpc.com/?api-key=YOUR_API_KEY";
  const rpc = createSolanaRpc(rpc_url);

  const publicKey = address("83astBRguLMdt2h5U1Tpdq5tjFoJ6noeGwaY3mDLVcri");
  const balance = await rpc.getBalance(publicKey).send();

  console.log("Account Balance:", balance);
  ```

  ```rust Rust theme={"system"}
  use anyhow::Result;
  use solana_client::nonblocking::rpc_client::RpcClient;
  use solana_sdk::{
      commitment_config::CommitmentConfig, native_token::LAMPORTS_PER_SOL, pubkey::Pubkey,
  };
  use std::str::FromStr;

  #[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 pubkey = Pubkey::from_str("83astBRguLMdt2h5U1Tpdq5tjFoJ6noeGwaY3mDLVcri")?;
      let balance = client.get_balance(&pubkey).await?;

      println!("{:#?} SOL", balance / LAMPORTS_PER_SOL);

      Ok(())
  }
  ```
</CodeGroup>

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

* **Đơn giản hóa việc lấy số dư SOL:** Nếu bạn chỉ cần số dư SOL của tài khoản mà không cần dữ liệu trên chuỗi nào khác (như chủ sở hữu, dữ liệu hoặc trạng thái thực thi), `getBalance` hiệu quả hơn `getAccountInfo` vì truy xuất ít dữ liệu hơn.
* **Tài khoản không tồn tại:** Nếu một tài khoản không tồn tại trên chuỗi (chưa từng được khởi tạo hoặc chưa từng có SOL), `getBalance` sẽ trả về `0`. Đây có thể là cách nhanh chóng để kiểm tra sự tồn tại của tài khoản nếu bạn chỉ quan tâm đến số dư SOL của tài khoản đó.
* **Lamport và SOL:** Hãy nhớ rằng số dư được trả về theo lamport. Bạn cần chia cho `LAMPORTS_PER_SOL` (1.000.000.000) để chuyển đổi sang SOL.
* **Mức cam kết:** Việc lựa chọn `commitment` có thể ảnh hưởng đến tốc độ nhận số dư và mức độ xác nhận của số dư đó. Đối với hầu hết mục đích hiển thị trên giao diện người dùng, `confirmed` mang lại sự cân bằng hợp lý. Đối với các giao dịch tài chính quan trọng, `finalized` mang lại độ đảm bảo cao nhất. Xem [Các mức cam kết của Solana](https://www.helius.dev/blog/solana-commitment-levels) để biết thông tin chi tiết.
* **Xử lý theo lô với `getMultipleAccounts`:** Mặc dù `getBalance` dành cho một tài khoản, nếu cần số dư của nhiều tài khoản, việc sử dụng `getMultipleAccounts` rồi trích xuất số dư lamport từ thông tin của từng tài khoản có thể mang lại hiệu suất cao hơn so với nhiều lệnh gọi `getBalance` riêng lẻ.

## Phương thức liên quan

<CardGroup cols={2}>
  <Card title="getAccountInfo" href="/docs/vi/api-reference/rpc/http/getaccountinfo">
    Lấy đầy đủ thông tin tài khoản, bao gồm dữ liệu, chủ sở hữu và trạng thái thực thi
  </Card>

  <Card title="getMultipleAccounts" href="/docs/vi/api-reference/rpc/http/getmultipleaccounts">
    Truy xuất hàng loạt nhiều tài khoản trong một yêu cầu duy nhất
  </Card>
</CardGroup>
