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

# Как использовать getTokenSupply

> Узнайте о сценариях использования getTokenSupply, примерах кода, параметрах запроса, структуре ответа и рекомендациях.

Метод RPC [`getTokenSupply`](https://www.helius.dev/docs/api-reference/rpc/http/gettokensupply) возвращает общее предложение для указанного минта SPL-токена. Это необходимо для определения общего количества созданных токенов.

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

* **Отображение информации о токене:** Отображение общего предложения токена в обозревателе или интерфейсе кошелька.
* **Анализ токеномики:** Определение максимального или текущего общего объема эмиссии токена.
* **Проверка:** Проверка предложения токена на основе данных самого аккаунта минта.
* **Отслеживание изменений предложения:** Если можно выпускать дополнительные токены, этот метод позволяет отслеживать изменение их общего предложения с течением времени. Однако для взаимозаменяемых токенов предложение обычно фиксировано или контролируется правом выпуска.

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

1. **`mintAddress`** (строка, обязательный): Публичный ключ минта токена в кодировке base-58, общее предложение которого требуется запросить.

2. **`options`** (объект, необязательный): Необязательный объект конфигурации, который может содержать:
   * **`commitment`** (строка, необязательный): Указывает [уровень подтверждения](https://www.helius.dev/blog/solana-commitment-levels) для запроса (например, `"finalized"`, `"confirmed"`, `"processed"`).

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

Поле `result.value` в ответе JSON-RPC представляет собой объект с подробными данными о предложении токена:

* **`amount`** (строка): Общее предложение токена в наименьших единицах (исходное значение), представленное строкой. В этом значении не учтено количество знаков после десятичной запятой.
* **`decimals`** (u8): Количество знаков после десятичной запятой, заданное для этого минта токена. Это необходимо для преобразования исходного значения `amount` в удобный для восприятия формат.
* **`uiAmount`** (число | null): Общее предложение токена в виде числа с плавающей точкой с учетом значения `decimals` токена. Это поле может иметь значение null или быть менее точным. Для отображения обычно рекомендуется использовать `uiAmountString`.
* **`uiAmountString`** (строка): Общее предложение токена в виде строки с учетом значения `decimals` токена. Это наиболее удобное для пользователя представление общего предложения.

**Пример ответа:**

```json theme={"system"}
{
  "jsonrpc": "2.0",
  "result": {
    "context": { "slot": 123456789 },
    "value": {
      "amount": "1000000000000000", // e.g., 1,000,000,000 tokens with 6 decimals
      "decimals": 6,
      "uiAmount": 1000000000.0,
      "uiAmountString": "1000000000.0"
    }
  },
  "id": 1
}
```

## Примеры кода

<CodeGroup>
  ```bash cURL theme={"system"}
  # Replace <TOKEN_MINT_PUBKEY> with the actual mint address
  curl -X POST -H "Content-Type: application/json" -d \
    '{
      "jsonrpc": "2.0",
      "id": 1,
      "method": "getTokenSupply",
      "params": [
        "<TOKEN_MINT_PUBKEY>"
      ]
    }' \
    <YOUR_RPC_URL>

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

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

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

    try {
      const tokenSupply = await connection.getTokenSupply(mintPublicKey);
      console.log(`Token Supply for Mint ${mintAddress}:`);
      console.log(`  UI Amount: ${tokenSupply.value.uiAmountString}`);
      console.log(`  Raw Amount: ${tokenSupply.value.amount}`);
      console.log(`  Decimals: ${tokenSupply.value.decimals}`);
      // For full details:
      // console.log(JSON.stringify(tokenSupply, null, 2));
    } catch (error) {
      console.error(`Error fetching token supply for mint ${mintAddress}:`, error);
    }
  }

  // Replace with the actual token mint public key you want to query
  const exampleTokenMint = 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'; // USDC mint
  checkTokenSupply(exampleTokenMint);

  // Example with a different mint (e.g., Raydium)
  // const raydiumMint = '4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R';
  // checkTokenSupply(raydiumMint);
  ```
</CodeGroup>

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

* **Неизменяемое предложение (обычно):** Для большинства SPL-токенов после выпуска общее предложение с точки зрения самого аккаунта минта остается фиксированным, если только у минта нет специального права выпуска, позволяющего создавать дополнительные токены или сжигать их. При этом сжигание обычно выполняется со счетов токенов, а не непосредственно из предложения минта.
* **`decimals` — ключевой параметр:** Всегда используйте поле `decimals`, чтобы правильно интерпретировать `amount` или `uiAmountString`.
* **Источник данных:** Этот метод запрашивает информацию о предложении непосредственно из аккаунта минта.

В этом руководстве приведена информация, необходимая для эффективного использования метода RPC `getTokenSupply` при запросе предложения SPL-токенов в Solana.


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