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

# Cara Menggunakan getBalance

> Pelajari kasus penggunaan getBalance, contoh kode, parameter permintaan, struktur respons, dan tips.

Metode RPC [`getBalance`](https://www.helius.dev/docs/api-reference/rpc/http/getbalance) adalah cara mudah untuk mengetahui saldo SOL native dari akun mana pun di blockchain Solana. Metode ini mengembalikan saldo dalam lamport (1 SOL = 1.000.000.000 lamport).

Metode ini lebih ringan daripada `getAccountInfo` jika Anda *hanya* memerlukan saldo SOL tanpa detail akun lainnya.

## Kasus Penggunaan Utama

* **Memeriksa Kepemilikan SOL Akun dengan Cepat:** Penggunaan utamanya adalah untuk mengetahui jumlah SOL yang dimiliki sebuah akun (dompet, program, dan sebagainya).

## Parameter

1. `publicKey` (string, wajib): Kunci publik akun yang akan dikueri, yang dikodekan dalam base-58.

2. `config` (objek, opsional): Objek konfigurasi dengan bidang berikut:
   * `commitment` (string, opsional): Menentukan [tingkat komitmen](https://www.helius.dev/blog/solana-commitment-levels) yang akan digunakan untuk kueri. Nilai default-nya adalah `finalized`.
     * `finalized`: Node akan mengueri blok terbaru yang telah dikonfirmasi oleh supermayoritas klaster sebagai blok yang telah mencapai penguncian maksimum.
     * `confirmed`: Node akan mengueri blok terbaru yang telah mendapatkan suara dari supermayoritas klaster.
     * `processed`: Node akan mengueri blok terbarunya. Perhatikan bahwa blok tersebut mungkin belum lengkap.
   * `minContextSlot` (angka, opsional): Slot minimum tempat permintaan dapat dievaluasi.

## Respons

Bidang `result` dari respons JSON-RPC akan berupa objek yang berisi:

* `context` (objek):
  * `slot` (angka): Slot tempat saldo diambil.
  * `apiVersion` (string, opsional): Versi API RPC (mungkin tidak tersedia dari semua node).
* `value` (angka): Saldo akun dalam lamport (bilangan bulat 64-bit tanpa tanda).

Jika akun tidak ada secara on-chain, `getBalance` biasanya akan mengembalikan nilai sebesar `0` lamport.

## Contoh: Mengambil Saldo Akun

Mari periksa saldo SOL dari ID Serum Program V3 (`9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin`) di mainnet. Akun program ini menyimpan SOL agar bebas dari biaya sewa.

**Catatan:** Ganti `YOUR_API_KEY` dengan kunci API Helius Anda yang sebenarnya dalam contoh di bawah ini.

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

## Tips untuk Developer

* **Kesederhanaan untuk Saldo SOL:** Jika Anda hanya memerlukan saldo SOL akun tanpa data on-chain lainnya (seperti pemilik, data, atau status executable), `getBalance` lebih efisien daripada `getAccountInfo` karena mengambil lebih sedikit data.
* **Akun yang Tidak Ada:** Jika akun tidak ada secara on-chain (belum pernah diinisialisasi atau belum pernah memiliki SOL), `getBalance` akan mengembalikan `0`. Ini dapat menjadi cara cepat untuk memeriksa keberadaan akun jika Anda hanya memerlukan informasi tentang saldo SOL-nya.
* **Lamport vs. SOL:** Ingat bahwa saldo dikembalikan dalam lamport. Anda perlu membaginya dengan `LAMPORTS_PER_SOL` (1.000.000.000) untuk mengonversinya menjadi SOL.
* **Tingkat Komitmen:** Pilihan `commitment` dapat memengaruhi seberapa cepat Anda mendapatkan saldo dan seberapa kuat saldo tersebut telah dikonfirmasi. Untuk sebagian besar kebutuhan tampilan UI, `confirmed` memberikan keseimbangan yang baik. Untuk transaksi keuangan penting, `finalized` memberikan tingkat kepastian tertinggi. Lihat [Tingkat Komitmen Solana](https://www.helius.dev/blog/solana-commitment-levels) untuk informasi mendetail.
* **Pemrosesan Batch dengan `getMultipleAccounts`:** Meskipun `getBalance` ditujukan untuk satu akun, jika Anda memerlukan saldo banyak akun, menggunakan `getMultipleAccounts` lalu mengekstrak saldo lamport dari informasi setiap akun dapat memberikan performa yang lebih baik daripada banyak panggilan `getBalance` secara terpisah.

## Metode Terkait

<CardGroup cols={2}>
  <Card title="getAccountInfo" href="/docs/id/api-reference/rpc/http/getaccountinfo">
    Dapatkan detail akun lengkap, termasuk data, pemilik, dan status executable
  </Card>

  <Card title="getMultipleAccounts" href="/docs/id/api-reference/rpc/http/getmultipleaccounts">
    Ambil beberapa akun secara batch dalam satu permintaan
  </Card>
</CardGroup>
