Skip to main content
Метод RPC getTokenAccountBalance возвращает баланс токенов указанного аккаунта SPL-токена. Это необходимо приложениям, которым требуется отображать или проверять количество определенного токена в токен-аккаунте.

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

  • Отображение балансов токенов пользователя: Показывайте пользователям, сколько определенного токена хранится в их кошельке (связанных токен-аккаунтах).
  • Проверка доступности токенов: Проверяйте, достаточно ли средств на токен-аккаунте перед попыткой перевода или выполнения другой операции.
  • Отслеживание портфеля: Объединяйте балансы токенов пользователя в разных токен-аккаунтах.
  • Взаимодействие со смарт-контрактами: Смарт-контракты могут запрашивать балансы токенов в рамках своей логики, хотя ончейн-программы обычно получают эти данные непосредственно из информации об аккаунте.

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

  1. Публичный ключ токен-аккаунта (строка, обязательный): Публичный ключ аккаунта SPL-токена в кодировке base58, который требуется запросить.
  2. Объект конфигурации (объект, необязательный): Необязательный объект, который может содержать следующее поле:
    • commitment (строка, необязательный): Задает уровень подтверждения для запроса. Если параметр не указан, используется уровень подтверждения RPC-узла по умолчанию (обычно finalized).

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

Поле result в ответе JSON-RPC содержит объект с полями context и value. Объект value содержит информацию о балансе:
  • amount (строка): Необработанный баланс токен-аккаунта в виде строки. Это целое число, представляющее минимальную единицу токена (например, если у токена 6 знаков после запятой, значение «1000000» означает 1 токен).
  • decimals (u8): Количество знаков после запятой, заданное для этого типа токена его минтом.
  • uiAmount (число | null): Баланс, отформатированный как число с плавающей запятой с учетом decimals. В некоторых случаях это поле может иметь значение null или быть устаревшим в пользу uiAmountString.
  • uiAmountString (строка): Баланс, отформатированный как строка с учетом decimals. Этот вариант часто предпочтительнее для отображения, поскольку позволяет избежать возможных неточностей вычислений с плавающей запятой.
Пример ответа:

Примеры кода

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

  • Токен-аккаунт, аккаунт минта и аккаунт владельца: Убедитесь, что вы указываете публичный ключ аккаунта SPL-токена, а не адрес минта токена или адрес кошелька владельца. Обычно токен-аккаунты владельца получают с помощью getTokenAccountsByOwner.
  • Знаки после запятой: Всегда используйте поле decimals, чтобы правильно интерпретировать amount. Для отображения обычно безопаснее использовать uiAmountString вместо uiAmount, чтобы избежать проблем с точностью чисел с плавающей запятой.
  • Несуществующие аккаунты: Если указанный публичный ключ не соответствует существующему токен-аккаунту, поведение может немного различаться в зависимости от поставщика RPC или библиотеки. Однако часто значение value в ответе будет равно null либо возникнет ошибка. Пример на JavaScript содержит базовую проверку balance.value.
  • Уровни подтверждения: Использование разных уровней подтверждения может влиять на скорость отображения изменений баланса, особенно для совсем недавних транзакций. finalized — самый безопасный вариант, но он обеспечивает наибольшую задержку.
Это руководство поможет вам точно получать и интерпретировать балансы SPL-токенов с помощью метода getTokenAccountBalance.

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

getTokenAccountsByOwner

Получить все токен-аккаунты владельца

getTokenSupply

Получить общий объем предложения минта токена