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

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

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

Метод RPC [`getBalance`](https://www.helius.dev/docs/api-reference/rpc/http/getbalance) позволяет легко узнать баланс нативного SOL для любой учетной записи в блокчейне Solana. Он возвращает баланс в лампортах (1 SOL = 1 000 000 000 лампортов).

Этот метод требует меньше ресурсов, чем `getAccountInfo`, если вам нужен *только* баланс SOL без других сведений об учетной записи.

## Основной сценарий использования

* **Быстрая проверка баланса SOL учетной записи:** Основное назначение метода — определить, сколько SOL хранится в учетной записи (кошельке, программе и т. д.).

## Параметры

1. `publicKey` (строка, обязательный): Закодированный в Base58 открытый ключ учетной записи, которую нужно запросить.

2. `config` (объект, необязательный): Объект конфигурации со следующими полями:
   * `commitment` (строка, необязательное): Задает [уровень подтверждения](https://www.helius.dev/blog/solana-commitment-levels), используемый для запроса. Значение по умолчанию — `finalized`.
     * `finalized`: Узел запросит последний блок, который квалифицированное большинство кластера подтвердило как достигший максимальной блокировки.
     * `confirmed`: Узел запросит последний блок, за который проголосовало квалифицированное большинство кластера.
     * `processed`: Узел запросит свой последний блок. Обратите внимание, что блок может быть неполным.
   * `minContextSlot` (число, необязательное): Минимальный слот, на котором может быть обработан запрос.

## Ответ

Поле `result` ответа JSON-RPC будет содержать объект со следующими данными:

* `context` (объект):
  * `slot` (число): Слот, на котором был получен баланс.
  * `apiVersion` (строка, необязательное): Версия RPC API (может отсутствовать у некоторых узлов).
* `value` (число): Баланс учетной записи в лампортах (беззнаковое 64-битное целое число).

Если учетная запись не существует в блокчейне, `getBalance` обычно возвращает значение `0` лампортов.

## Пример: получение баланса учетной записи

Проверим баланс SOL идентификатора Serum Program V3 (`9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin`) в основной сети. Эта программная учетная запись сама хранит SOL для освобождения от арендной платы.

**Примечание:** В приведенных ниже примерах замените `YOUR_API_KEY` своим фактическим ключом Helius API.

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

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

* **Простой способ получить баланс SOL:** Если вам нужен только баланс SOL учетной записи без других данных из блокчейна (например, владельца, данных или статуса исполняемости), `getBalance` эффективнее `getAccountInfo`, поскольку получает меньше данных.
* **Несуществующие учетные записи:** Если учетная запись не существует в блокчейне (никогда не была инициализирована или не имела SOL), `getBalance` вернет `0`. Это быстрый способ проверить существование учетной записи, если вас интересует только ее баланс SOL.
* **Лампорты и SOL:** Помните, что баланс возвращается в лампортах. Чтобы преобразовать его в SOL, разделите значение на `LAMPORTS_PER_SOL` (1 000 000 000).
* **Уровни подтверждения:** Выбор `commitment` может повлиять на скорость получения баланса и степень его подтверждения. Для большинства задач отображения в пользовательском интерфейсе `confirmed` обеспечивает хороший баланс. Для критически важных финансовых транзакций `finalized` обеспечивает максимальную надежность. Подробную информацию см. в статье [«Уровни подтверждения Solana»](https://www.helius.dev/blog/solana-commitment-levels).
* **Пакетная обработка с `getMultipleAccounts`:** Метод `getBalance` предназначен для одной учетной записи. Если вам нужны балансы множества учетных записей, вызов `getMultipleAccounts` с последующим извлечением баланса в лампортах из данных каждой учетной записи может быть производительнее множества отдельных вызовов `getBalance`.

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

<CardGroup cols={2}>
  <Card title="getAccountInfo" href="/docs/ru/api-reference/rpc/http/getaccountinfo">
    Получите полные сведения об учетной записи, включая данные, владельца и статус исполняемости
  </Card>

  <Card title="getMultipleAccounts" href="/docs/ru/api-reference/rpc/http/getmultipleaccounts">
    Получите пакетные данные нескольких учетных записей одним запросом
  </Card>
</CardGroup>


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