Розробка мобільного додатка для крипто-сбережень (Savings/Yield)
Користувач хоче покласти USDC на депозит та отримувати 8% річних у крипті. Просто. На деле — це або кастодіальна платформа з централізованим управлінням (Nexo-подібна), або інтеграція з DeFi-протоколом (Aave, Compound, Yearn), або ліквідити-пулі (Uniswap V3, Curve). Архітектурне рішення приймається на самому початку та визначає весь стек розробки.
Три архітектури та їхні мобільні наслідки
Кастодіальна. Користувач переводить крипту на кошельок платформи, платформа управляє капіталом сама. Мобільне додаток — класичне фінтех-додаток: REST API, JWT-авторизація, баланс, історія транзакцій, вивід коштів. Ніякого Web3 на клієнті. Простої розробки, потребує ліцензії та compliance.
DeFi-інтеграція. Користувач напрямки взаємодіє зі смарт-контрактом через власний некастодіальний гаманець. Мобільне додаток стає інтерфейсом до протоколу. Потребує Web3-стеку: web3.swift / web3j, WalletConnect v2 для підпису транзакцій. Користувач платить газ самостійно.
Гібридна. Платформа тримає smart account (Account Abstraction / ERC-4337), користувач не взаємодіє з ключами напрямки. Платформа спонсирує газ через Paymaster. Найкращий UX з трьох варіантів — користувач не знає про блокчейн.
APY-дашборд та real-time доходність
Головний екран додатка — поточний баланс + накоплені проценти. Накопленні проценти мають оновлюватися в реальному часі, а не раз на годину. Це UX-трюк, але він працює: користувач бачить, як баланс росте, поки він дивиться на екран.
Для DeFi-протоколів Aave V3 проценти нараховуються безупинно через aToken — токен, баланс якого автоматично росте. Рахуємо поточний баланс через AToken.balanceOf(userAddress), виклик кожні 30 секунд через JSON-RPC:
// Отримання актуального балансу aToken через web3.swift
class AaveBalanceService {
let web3 = Web3(rpcURL: "https://mainnet.infura.io/v3/YOUR_KEY")
func fetchATokenBalance(userAddress: EthereumAddress, aTokenAddress: EthereumAddress) async throws -> BigUInt {
let contract = try web3.eth.Contract(json: aTokenABI, abiKey: nil, address: aTokenAddress)
let result = try await contract["balanceOf"]?(userAddress).call()
return result?["_balance"] as? BigUInt ?? 0
}
}
На UI: баланс у USD з пересчетом по поточному курсу. Курс — WebSocket від Binance або CoinGecko з кешуванням на 15 секунд.
Стратегії доходності та Vault
Yearn-подібні продукти пропонують "стратегії" — автоматичне перекладання коштів між протоколами для максимального APY. У мобільному додатку це виглядає як список вкладів з різним ризиком та дохідністю:
| Стратегія | APY | Ризик | Базовий актив |
|---|---|---|---|
| Aave USDC Supply | 4.2% | Низький | USDC |
| Curve 3pool LP | 6.8% | Середній | USDC/USDT/DAI |
| Yearn USDC Vault | 9.1% | Середній | USDC |
| Uniswap V3 USDC/ETH | 14–40% | Високий (IL) | USDC + ETH |
Impermanent Loss для LP-позицій — окремий екран з калькулятором. Користувач має розуміти ризики перед входом у ліквідити-пул.
Вивід коштів та lock-up періоди
Деякі стратегії мають lock-up — кошти не можна вивести раніше визначеної дати. Це потрібно показувати явно до депозиту, не в сноску. На екрані виводу — прогресс-бар з часом, що залишився та датою розблокування.
Частковий вивід — важлива функція. Користувач вказує суму виводу, додаток рахує кількість shares / токенів для withdraw(shares, receiver, owner) по стандарту ERC-4626:
// ERC-4626 Vault: конвертація assets → shares
const shares = await vault.convertToShares(assetsToWithdraw);
const tx = await vault.withdraw(assetsToWithdraw, userAddress, userAddress);
Push-сповіщення та аналітика
Щотижневий summary: скільки заробила за тиждень, поточний APY. Push при значній зміні APY (>2%). Нагадування при наближенні дати розблокування.
Firebase Analytics для відстеження воронки: від реєстрації до першого депозиту. Це допомагає знаходити проблемні кроки в UX.
Безпека
Для кастодіальних платформ — Keychain (iOS) / EncryptedSharedPreferences (Android) для зберігання session token. Біометрична аутентифікація для перегляду балансу та виводу. Підтвердження виводу через email/SMS OTP додатково до біометрії.
Для некастодіальних — seed phrase ніколи не зберігається в додатку; тільки через WalletConnect або Hardware Wallet (Ledger Live SDK).
Етапи та сроки
Вибір архітектури → серверна частина (баланси, APY, історія) → DeFi-інтеграція якщо потрібна → мобільний клієнт iOS + Android → сповіщення → KYC якщо кастодіальна схема → аудит смарт-контрактів.
8–14 тижнів залежно від архітектури. DeFi-інтеграція з кількома протоколами та Vault-стратегіями — ближче до 14 тижнів. Вартість розраховується індивідуально після аналізу вимог.







