Пакетне отримання балансів токенів у мобільному гаманці

Баланс токенів ERC-20/BEP-20/SPL у мобільному гаманці Уявіть: користувач відкриває гаманець і чекає завантаження балансу по одному токену — секунда на кожен. При 20 токенах це 20 секунд. Користувач закриває застосунок. Класичний RPC-запит на кожен контракт дає затримку 2-3 секунди на токен, разом

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Пакетне отримання балансів токенів у мобільному гаманці
Середній
~3-5 днів

Наші компетенції:

Часті запитання

Останні роботи

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    898
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    784
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1219
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    1081
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    1004
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    600

Баланс токенів ERC-20/BEP-20/SPL у мобільному гаманці

Уявіть: користувач відкриває гаманець і чекає завантаження балансу по одному токену — секунда на кожен. При 20 токенах це 20 секунд. Користувач закриває застосунок. Класичний RPC-запит на кожен контракт дає затримку 2-3 секунди на токен, разом хвилина для портфеля з 30 активів. Ми вирішуємо це завдання через пакетне завантаження з Multicall3, кешування та паралельні запити для різних мереж. Наш досвід показує: правильна архітектура скорочує час завантаження до 1-2 секунд, незалежно від кількості токенів. Економія часу сягає 20-кратного прискорення — користувачі не йдуть, а конверсія в операції зростає.

Як пакетно завантажити баланси?

Multicall3 — контракт 0xcA11bde05977b3631167028862bE2a173976CA11, задеплоєний у більшості EVM-мереж (Ethereum, Polygon, BNB Chain, Arbitrum, Optimism, Base). Один виклик aggregate3 повертає баланси всіх токенів за одну транзакцію читання. Порівняння методів:

Метод Час на 20 токенів Навантаження на ноду Підтримка мереж
Послідовні RPC 4-6 секунд 20 викликів Будь-яка EVM
Multicall3 0.3-0.6 секунди 1 виклик Більшість EVM
JSON-RPC batch 0.5-1 секунда 1 batch-запит Всі EVM (без Multicall)

Multicall3 скорочує кількість RPC-викликів у 20 разів і в 10-20 разів швидше послідовних запитів.

Покрокова інтеграція Multicall3

  1. Ініціалізуйте Multicall3-контракт у коді гаманця. Адреса єдина для всіх мереж — 0xcA11bde05977b3631167028862bE2a173976CA11.
  2. Зберіть масив Call3 для кожного токена: target, allowFailure: true, callData = balanceOf(address).
  3. Викличте aggregate3 — отримайте масив результатів з rawBalance та success.
  4. Обробіть результати: для кожного токена витягніть rawBalance, поділіть на 10^decimals.
  5. Відобразіть баланси в UI паралельно із завантаженням курсів.
// iOS — web3swift + Multicall3 let multicallAddress = EthereumAddress("0xcA11bde05977b3631167028862bE2a173976CA11")! var calls: [Multicall3.Call3] = [] for tokenAddress in tokenAddresses { let callData = ERC20.balanceOf(owner: walletAddress).encodeABI() calls.append(.init(target: tokenAddress, allowFailure: true, callData: callData)) } let results = try await multicall3.aggregate3(calls: calls) 
// Android — web3j + ручна збірка Multicall val multicallEncoder = Function("aggregate3", listOf(DynamicArray(calls)), listOf()) val encodedCall = FunctionEncoder.encode(multicallEncoder) val response = web3j.ethCall(Transaction.createEthCallTransaction(null, multicallAddress, encodedCall), DefaultBlockParameterName.LATEST).send() 

Для мереж без Multicall3 (деякі L2 або приватні EVM-мережі) — JSON-RPC batch request: масив викликів в одному HTTP-тілі. Більшість нод підтримують до 100 запитів у batch.

Що робити з SPL-токенами на Solana?

Solana принципово відрізняється: кожен SPL-токен зберігається на окремому Associated Token Account (ATA). Список ATA для гаманця отримують через getTokenAccountsByOwner з програмою TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA.

// iOS — SolanaSwift let tokenAccounts = try await solana.action.getTokenAccountsByOwner( pubkey: walletPublicKey, params: .init(programId: TokenProgram.publicKey), configs: nil ) for account in tokenAccounts { let mint = account.account.data.parsed.info.mint let amount = account.account.data.parsed.info.tokenAmount.uiAmount } 

У користувача може бути 50+ ATA, включаючи нульові баланси від старих airdrop'ів. Нульові ми приховуємо за замовчуванням, але даємо опцію «показати всі». Це тримає UI чистим, не втрачаючи інформацію.

Чому важливі decimals і курси?

Відображення балансу без фіатного еквівалента — половина роботи. Для отримання курсів використовуємо CoinGecko API (/simple/price?ids=...&vs_currencies=usd) або CoinMarketCap. CoinGecko Free tier — 30 запитів на хвилину, достатньо для більшості гаманців. Ключі токенів — це contract address, не тікер. Для Ethereum: https://api.coingecko.com/api/v3/simple/token_price/ethereum?contract_addresses=0x...&vs_currencies=usd. Запит до 100 контрактів за раз — пакетуємо.

Decimals токена критично важливі: згідно зі специфікацією ERC-20, контракт повертає баланс у мінімальних одиницях. USDC — 6 decimals, ETH — 18. Відображуваний баланс: rawBalance / 10^decimals. Помилка в decimals — баланс покаже астрономічну або нульову суму. Ми гарантуємо коректне зчитування decimals з контракту при ініціалізації.

Типові помилки при роботі з decimals:

  • Контракт повертає decimals = 0 для токенів, що не реалізують decimals(), — використовуємо fallback 18.
  • Деякі токени (наприклад, USDT на Tron) мають 6 decimals, але на EVM-версіях — 6 або 18.
  • При додаванні нового токена вручну користувач може ввести невірні decimals — перевіряємо через ончейн-дані.

Схема кешування та частота оновлення

Дані Частота оновлення Зберігання
Баланси токенів Кожні 30 сек / pull-to-refresh In-memory
Список токенів користувача При кожному запуску SQLite / UserDefaults
Курси токенів Кожні 60 сек In-memory + disk cache
Метадані токена (ім'я, decimals) Одноразово SQLite

Особистий кейс: для одного DeFi-проєкту ми інтегрували відображення балансів у 4 мережах (Ethereum, BSC, Polygon, Solana) і 30 токенах. Час завантаження скоротився з 12 секунд до 2,5 секунд завдяки пакетним запитам і кешуванню курсорів.

Що входить у роботу

  • Проєктування архітектури завантаження балансів під вашу цільову аудиторію.
  • Інтеграція Multicall3 для EVM-мереж та getTokenAccountsByOwner для Solana.
  • Підключення фіатних курсів з кешуванням.
  • Розробка UI списку токенів з pull-to-refresh, пошуком і приховуванням нульових.
  • Тестування на 10+ популярних токенах у кожній мережі.
  • Передача доступів до App Store Connect / Google Play Console.
  • Документація з експлуатації та підтримка протягом місяця після релізу.

Строки орієнтовно

Від 3 до 7 днів залежно від кількості мереж і вимог до UI. Для типового рішення (EVM + Solana + курси) — 5 днів. Зв'яжіться з нами — ми оцінимо ваш проєкт безкоштовно і назвемо точні строки. Наші інженери мають 5+ років досвіду в мобільній розробці і гарантують дотримання App Store Review Guidelines та Play Console політик.

Замовте реалізацію відображення балансу токенів у вашому гаманці — отримайте готове рішення під ключ. Отримайте консультацію прямо зараз.