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

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

Metode RPC [`getSupply`](https://www.helius.dev/docs/api-reference/rpc/http/getsupply) menyediakan informasi tentang pasokan SOL saat ini di jaringan Solana. Metode ini merinci total pasokan, pasokan yang beredar, pasokan yang tidak beredar, dan secara opsional dapat mencantumkan akun yang menyimpan SOL tidak beredar.

## Kasus Penggunaan Umum

* **Memahami Tokenomik SOL:** Dapatkan gambaran terkini tentang distribusi SOL.
* **Analisis Ekonomi:** Pantau perubahan metrik pasokan dari waktu ke waktu.
* **Menampilkan Statistik Jaringan:** Berikan informasi terbaru tentang pasokan SOL kepada pengguna melalui dasbor atau penjelajah.
* **Memantau Inflasi:** Meskipun `getInflationRate` dan `getInflationGovernor` menyediakan data inflasi yang lebih langsung, `getSupply` dapat memberikan konteks yang lebih luas.

## Parameter Permintaan

Metode `getSupply` menerima objek konfigurasi opsional dengan bidang berikut:

1. **`commitment`** (string, opsional): Menentukan [tingkat komitmen](https://www.helius.dev/blog/solana-commitment-levels) untuk kueri. Jika dihilangkan, komitmen default dari node RPC akan digunakan.
2. **`excludeNonCirculatingAccountsList`** (boolean, opsional): Jika diatur ke `true`, array `nonCirculatingAccounts` akan dikecualikan dari respons. Nilai defaultnya adalah `false`. Opsi ini berguna untuk mengurangi ukuran respons jika daftar setiap akun yang menyimpan SOL tidak beredar tidak diperlukan.

**Contoh Konfigurasi:**

```json theme={"system"}
{
  "commitment": "finalized",
  "excludeNonCirculatingAccountsList": true
}
```

## Struktur Respons

Respons berupa objek JSON dengan bidang berikut:

* **`value`**: Objek yang berisi informasi pasokan:
  * **`total`** (u64): Total pasokan SOL dalam lamport.
  * **`circulating`** (u64): Pasokan SOL yang beredar dalam lamport.
  * **`nonCirculating`** (u64): Pasokan SOL yang tidak beredar dalam lamport.
  * **`nonCirculatingAccounts`** (array string, opsional): Array kunci publik (sebagai string yang dikodekan dalam base58) dari akun yang menyimpan SOL tidak beredar. Bidang ini dihilangkan jika `excludeNonCirculatingAccountsList` diatur ke `true` dalam permintaan.
* **`context`**: Objek yang berisi:
  * **`slot`** (u64): Slot tempat informasi tersebut diambil.

**Contoh Respons (dengan `excludeNonCirculatingAccountsList: false`):**

```json theme={"system"}
{
  "jsonrpc": "2.0",
  "result": {
    "context": {
      "slot": 169890374
    },
    "value": {
      "circulating": 423105827585008800,
      "nonCirculating": 123456789012345678, // Example value
      "nonCirculatingAccounts": [
        "Stake11111111111111111111111111111111111111",
        "Vote11111111111111111111111111111111111111",
        // ... other non-circulating accounts
      ],
      "total": 546562616597354478
    }
  },
  "id": 1
}
```

**Contoh Respons (dengan `excludeNonCirculatingAccountsList: true`):**

```json theme={"system"}
{
  "jsonrpc": "2.0",
  "result": {
    "context": {
      "slot": 169890380
    },
    "value": {
      "circulating": 423105830000000000,
      "nonCirculating": 123456780000000000, // Example value
      "total": 546562610000000000
      // nonCirculatingAccounts field is absent
    }
  },
  "id": 1
}
```

## Contoh Kode

<CodeGroup>
  ```bash cURL theme={"system"}
  # Basic Request:
  curl -X POST -H "Content-Type: application/json" -d \
    '{"jsonrpc":"2.0","id":1,"method":"getSupply"}' \
    <YOUR_RPC_URL>

  # Request with excludeNonCirculatingAccountsList:
  curl -X POST -H "Content-Type: application/json" -d \
    '{"jsonrpc":"2.0","id":1,"method":"getSupply", "params": [{"excludeNonCirculatingAccountsList": true}]}' \
    <YOUR_RPC_URL>

  # Request with commitment:
  curl -X POST -H "Content-Type: application/json" -d \
    '{"jsonrpc":"2.0","id":1,"method":"getSupply", "params": [{"commitment": "confirmed", "excludeNonCirculatingAccountsList": false}]}' \
    <YOUR_RPC_URL>
  ```

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

  async function getNetworkSupply() {
    // Replace with your RPC endpoint
    const connection = new Connection('https://mainnet.helius-rpc.com/?api-key=<api-key>');

    try {
      const supplyInfo = await connection.getSupply();
      console.log('Supply Information:', supplyInfo.value);
      console.log('Total SOL:', supplyInfo.value.total / 1_000_000_000); // Convert lamports to SOL
      console.log('Circulating SOL:', supplyInfo.value.circulating / 1_000_000_000);
      console.log('Non-Circulating SOL:', supplyInfo.value.nonCirculating / 1_000_000_000);

      if (supplyInfo.value.nonCirculatingAccounts) {
        console.log('Non-circulating accounts count:', supplyInfo.value.nonCirculatingAccounts.length);
      }

      // Example with options
      const supplyInfoWithoutAccountsList = await connection.getSupply({
        commitment: 'finalized',
        excludeNonCirculatingAccountsList: true,
      });
      console.log('\nSupply Information (excluding non-circulating accounts list):');
      console.log('Total SOL:', supplyInfoWithoutAccountsList.value.total / 1_000_000_000);
      console.log('Circulating SOL:', supplyInfoWithoutAccountsList.value.circulating / 1_000_000_000);

    } catch (error) {
      console.error('Error getting supply information:', error);
    }
  }

  getNetworkSupply();
  ```
</CodeGroup>

## Tips untuk Developer

* **Lamport vs. SOL:** Jumlah dikembalikan dalam lamport. Ingatlah untuk membaginya dengan `1,000,000,000` (1 SOL = 10^9 lamport) agar dikonversi menjadi SOL.
* **Kebaruan Data:** Data mencerminkan status pada slot yang ditunjukkan dalam objek `context` dan berdasarkan tingkat komitmen yang digunakan.
* **`excludeNonCirculatingAccountsList`:** Gunakan opsi ini jika Anda hanya memerlukan angka pasokan agregat untuk mengoptimalkan ukuran respons dan waktu pemrosesan, terutama jika daftar akun yang menyimpan SOL tidak beredar sangat panjang.
* **Nilai Dinamis:** Angka pasokan dapat sering berubah karena penerbitan token (inflasi) dan mekanisme pembakaran.

Panduan ini akan membantu Anda menggunakan metode RPC `getSupply` secara efektif untuk membuat kueri data pasokan Solana.

## Metode Terkait

<CardGroup cols={2}>
  <Card title="getInflationRate" href="/docs/id/api-reference/rpc/http/getinflationrate">
    Dapatkan tingkat inflasi saat ini
  </Card>

  <Card title="getInflationGovernor" href="/docs/id/api-reference/rpc/http/getinflationgovernor">
    Dapatkan parameter tata kelola inflasi
  </Card>
</CardGroup>
