> ## 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, примеры кода, параметры запроса, структуру ответа и рекомендации.

Метод RPC [`getSupply`](https://www.helius.dev/docs/api-reference/rpc/http/getsupply) предоставляет информацию о текущем объеме предложения SOL в сети Solana. Он содержит сведения об общем объеме предложения, объеме в обращении и вне обращения, а также может возвращать список аккаунтов, на которых хранятся SOL вне обращения.

## Распространенные сценарии использования

* **Анализ токеномики SOL:** Получите сведения о текущем распределении SOL.
* **Экономический анализ:** Отслеживайте изменения показателей предложения с течением времени.
* **Отображение статистики сети:** Предоставляйте пользователям актуальную информацию о предложении SOL на информационных панелях или в обозревателях.
* **Мониторинг инфляции:** Хотя `getInflationRate` и `getInflationGovernor` предоставляют более подробные данные об инфляции, `getSupply` позволяет получить более широкий контекст.

## Параметры запроса

Метод `getSupply` принимает необязательный объект конфигурации со следующими полями:

1. **`commitment`** (строка, необязательно): Задает [уровень подтверждения](https://www.helius.dev/blog/solana-commitment-levels) для запроса. Если параметр не указан, используется уровень подтверждения по умолчанию для узла RPC.
2. **`excludeNonCirculatingAccountsList`** (логическое значение, необязательно): Если задано значение `true`, массив `nonCirculatingAccounts` будет исключен из ответа. Значение по умолчанию — `false`. Этот параметр помогает уменьшить размер ответа, если список отдельных аккаунтов с SOL вне обращения не требуется.

**Пример конфигурации:**

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

## Структура ответа

Ответ представляет собой объект JSON со следующими полями:

* **`value`**: Объект с информацией о предложении:
  * **`total`** (u64): Общий объем предложения SOL в лампортах.
  * **`circulating`** (u64): Объем SOL в обращении, выраженный в лампортах.
  * **`nonCirculating`** (u64): Объем SOL вне обращения, выраженный в лампортах.
  * **`nonCirculatingAccounts`** (массив строк, необязательно): Массив публичных ключей аккаунтов, на которых хранятся SOL вне обращения. Ключи представлены в виде строк в кодировке base58. Это поле отсутствует, если в запросе для `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>

## Рекомендации разработчикам

* **Лампорты и SOL:** Суммы возвращаются в лампортах. Чтобы преобразовать их в SOL, разделите значение на `1,000,000,000` (1 SOL = 10^9 лампортов).
* **Актуальность данных:** Данные отражают состояние в слоте, указанном в объекте `context`, с учетом использованного уровня подтверждения.
* **`excludeNonCirculatingAccountsList`:** Используйте этот параметр, если вам нужны только агрегированные показатели предложения. Это уменьшит размер ответа и время обработки, особенно если список аккаунтов с SOL вне обращения очень длинный.
* **Динамические значения:** Показатели предложения могут часто меняться из-за выпуска токенов (инфляции) и механизмов сжигания.

Это руководство поможет вам эффективно использовать метод RPC `getSupply` для запроса данных о предложении Solana.

## Связанные методы

<CardGroup cols={2}>
  <Card title="getInflationRate" href="/docs/ru/api-reference/rpc/http/getinflationrate">
    Получить текущий уровень инфляции
  </Card>

  <Card title="getInflationGovernor" href="/docs/ru/api-reference/rpc/http/getinflationgovernor">
    Получить параметры управления инфляцией
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.