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

# getSupply 사용 방법

> getSupply 사용 사례, 코드 예제, 요청 매개변수, 응답 구조 및 팁을 학습합니다.

[`getSupply`](https://www.helius.dev/docs/api-reference/rpc/http/getsupply) RPC 메서드는 Solana 네트워크의 현재 SOL 공급에 대한 정보를 제공합니다. 총 공급량, 유통 공급량, 비유통 공급량을 자세히 설명하며, 비유통 계정을 선택적으로 나열할 수 있습니다.

## 일반적인 사용 사례

* **SOL 토크노믹스 이해:** 현재 SOL 분배에 대한 스냅샷을 얻습니다.
* **경제 분석:** 시간에 따른 공급 지표의 변화를 추적합니다.
* **네트워크 통계 표시:** 대시보드나 탐색기에서 사용자가 최신 SOL 공급 정보를 얻을 수 있도록 합니다.
* **인플레이션 모니터링:** 비록 `getInflationRate` 및 `getInflationGovernor`이(가) 더 직접적인 인플레이션 데이터를 제공하지만, `getSupply`이(가) 더 넓은 맥락을 제공할 수 있습니다.

## 요청 매개변수

`getSupply` 메서드는 다음 필드를 포함한 선택적 구성 개체를 허용합니다:

1. **`commitment`** (string, optional): 쿼리에 대한 [커밋 수준](https://www.helius.dev/blog/solana-commitment-levels)을 지정합니다. 생략하면 RPC 노드의 기본 커밋이 사용됩니다.
2. **`excludeNonCirculatingAccountsList`** (boolean, optional): `true`으로 설정하면 응답에서 `nonCirculatingAccounts` 배열이 제외됩니다. 이는 개별 비유통 계정 목록이 필요하지 않은 경우 응답 크기를 줄이는 데 유용합니다. 기본값은 `false`입니다.

**구성 예제:**

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

## 응답 구조

응답은 다음 필드가 포함된 JSON 객체입니다:

* **`value`**: 공급 정보를 포함한 객체:
  * **`total`** (u64): 전체 SOL 공급량(람포트 단위).
  * **`circulating`** (u64): 유통 SOL 공급량(람포트 단위).
  * **`nonCirculating`** (u64): 비유통 SOL 공급량(람포트 단위).
  * **`nonCirculatingAccounts`** (문자열 배열, 선택적): 비유통 SOL을 보유한 계정의 공개 키(베이스58 인코딩된 문자열) 배열입니다. 요청에서 `excludeNonCirculatingAccountsList`이/가 `true`으로 설정된 경우 이 필드가 생략됩니다.
* **`context`**: 다음을 포함한 객체:
  * **`slot`** (u64): 정보가 검색된 슬롯.

**응답 예제(`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
}
```

**응답 예제(`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
}
```

## 코드 예제

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

## 개발자 팁

* **람포트 vs. SOL:** 금액은 람포트 단위로 반환됩니다. SOL로 변환하려면 `1,000,000,000`로 나누십시오 (1 SOL = 10^9 람포트).
* **데이터 신선도:** 데이터는 `context` 객체에 표시된 슬롯의 상태와 사용된 커밋 수준을 반영합니다.
* **`excludeNonCirculatingAccountsList`:** 전체 공급 수치만 필요할 경우 이 옵션을 사용하여 긴 비유통 계정 목록이 있을 때 응답 크기 및 처리 시간을 최적화하십시오.
* **동적 값:** 공급 수치는 토큰 발급(인플레이션) 및 소각 메커니즘으로 인해 자주 변경될 수 있습니다.

이 가이드가 Solana의 공급 데이터를 쿼리하는 `getSupply` RPC 메서드를 효과적으로 사용하는 데 도움이 되기를 바랍니다.

## 관련 메서드

<CardGroup cols={2}>
  <Card title="getInflationRate" href="/docs/ko/api-reference/rpc/http/getinflationrate">
    현재 인플레이션율 가져오기
  </Card>

  <Card title="getInflationGovernor" href="/docs/ko/api-reference/rpc/http/getinflationgovernor">
    인플레이션 거버넌스 매개변수 가져오기
  </Card>
</CardGroup>
