getTokenAccountBalance возвращает баланс токенов указанного аккаунта SPL-токена. Это необходимо приложениям, которым требуется отображать или проверять количество определенного токена в токен-аккаунте.
Распространенные сценарии использования
- Отображение балансов токенов пользователя: Показывайте пользователям, сколько определенного токена хранится в их кошельке (связанных токен-аккаунтах).
- Проверка доступности токенов: Проверяйте, достаточно ли средств на токен-аккаунте перед попыткой перевода или выполнения другой операции.
- Отслеживание портфеля: Объединяйте балансы токенов пользователя в разных токен-аккаунтах.
- Взаимодействие со смарт-контрактами: Смарт-контракты могут запрашивать балансы токенов в рамках своей логики, хотя ончейн-программы обычно получают эти данные непосредственно из информации об аккаунте.
Параметры запроса
- Публичный ключ токен-аккаунта (строка, обязательный): Публичный ключ аккаунта SPL-токена в кодировке base58, который требуется запросить.
- Объект конфигурации (объект, необязательный): Необязательный объект, который может содержать следующее поле:
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— самый безопасный вариант, но он обеспечивает наибольшую задержку.
getTokenAccountBalance.
Связанные методы
getTokenAccountsByOwner
Получить все токен-аккаунты владельца
getTokenSupply
Получить общий объем предложения минта токена