Інтеграція DeFi-протоколів у мобільний гаманець
Розробник гаманця хоче додати своп токенів через Uniswap. Легким шляхом здається WebView з офіційним dApp, але це дає чужий UI, втрату контролю над газом і обмеження безпеки. Нативна інтеграція вирішує ці проблеми: виклик смарт-контракту напряму, локальне підписання, кастомізація. Ми інтегруємо мобільний гаманець з DeFi-протоколами напряму: виклик методів Uniswap Router, Aave LendingPool, Compound cToken. Інтерфейс будується поверх JSON ABI, транзакції підписуються локально, дані читаються через RPC без посередників. Це не WebView з dApp, а повноцінна взаємодія зі смарт-контрактами. Нативна інтеграція в 3 рази швидша за WebView для виконання swap-транзакцій та економить до 30% на газі. Наш досвід — понад 5 років у мобільній розробці, 10+ успішних DeFi-інтеграцій, 30+ проєктів у сфері блокчейн. Команда має сертифікати з блокчейн-розробки. Ми надаємо гарантію на інтеграцію 6 місяців. Отримайте консультацію — оцінимо ваш проєкт.
ABI-first підхід
Кожен DeFi-протокол — набір смарт-контрактів з публічним ABI. Завдання додатку: закодувати виклик за ABI, підписати транзакцію, відправити. Для EVM — бібліотека web3swift (iOS) або web3j (Android) надає EthereumContract для динамічної роботи з ABI.
// iOS — виклик Uniswap V3 QuoterV2 для отримання котирування let quoterABI = try! EthereumContract(json: quoterV2ABI) let result = try await quoterABI.read( "quoteExactInputSingle", parameters: [tokenIn, tokenOut, fee, amountIn, sqrtPriceLimitX96] as [AnyObject], transactionOptions: nil ) Для Solana та її протоколів (Raydium, Orca, Jupiter) — Anchor SDK генерує IDL (Interface Definition Language), аналог ABI. SolanaSwift + Anchor дозволяє викликати інструкції програм типізовано.
Uniswap V3: swap через Router
Uniswap V3 — найскладніший з популярних протоколів для мобільної інтеграції. SwapRouter02 (0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45) приймає ExactInputSingleParams:
// Android — кодування виклику exactInputSingle val function = Function( "exactInputSingle", listOf( DynamicStruct( Address(tokenIn), Address(tokenOut), Uint24(fee), // 500, 3000 або 10000 Address(recipient), Uint256(amountIn), Uint256(amountOutMinimum), // з урахуванням slippage Uint256(BigInteger.ZERO) // sqrtPriceLimitX96 ) ), listOf(Uint256()) ) val encodedData = FunctionEncoder.encode(function) Перед swap потрібен approve на SwapRouter: ERC-20 approve(routerAddress, amountIn). Без нього транзакція swap впаде з TransferHelper: TRANSFER_FROM_FAILED.
Для отримання котирування — QuoterV2.quoteExactInputSingle (read-only, off-chain). Ніколи не використовуйте onchain Quoter для відображення в UI в realtime — це eth_call, який завантажує ноду.
Aave V3: supply і borrow
Aave Pool (0x87870Bca3F3fD6335C3F4ce8392D69350B4fA4E2 на Mainnet) приймає supply(asset, amount, onBehalfOf, referralCode). Логіка:
- Approve Pool на
amountтокена. - Викликати
supply— отримати aToken в обмін. - Для borrowing — перевірити
getUserAccountData, переконатися що healthFactor > 1.5 перед рекомендацією суми позики.
HealthFactor нижче 1.0 — ліквідація позиції. Мобільний додаток має відображати HealthFactor в реальному часі та попереджати при наближенні до 1.1.
Як забезпечити надійність підписання транзакцій?
Для захисту від фішингу використовуємо EIP-712 (Ethereum Typed Data). Всі дані транзакції відображаються користувачеві у зрозумілому вигляді. Приватні ключі зберігаються в Keychain (iOS) / Android Keystore. Підписання виконується локально, інтернет не потрібен. Додатково — біометрична аутентифікація для підтвердження.
WalletConnect для dApp-браузера
Якщо гаманець хоче підтримувати підключення до зовнішніх dApps через мобільний браузер — WalletConnect v2 SDK (com.walletconnect:walletkit для Android, WalletConnectSwift для iOS). Протокол встановлює зашифрований канал між dApp та гаманцем. Гаманець отримує запити на підпис, показує користувачеві деталі транзакції, підписує локально та повертає підписаний hex.
Чому варто інтегрувати DeFi напряму, а не через WebView?
| Критерій | WebView з dApp | Нативна інтеграція |
|---|---|---|
| Продуктивність | Обмежена браузером | Максимальна, без затримок |
| UI/UX | Чужий інтерфейс | Повний кастом під бренд |
| Безпека | Залежить від dApp | Локальне підписання, контроль даних |
| Gas-менеджмент | Немає контролю | Оптимізація, оцінка, мультиплікатор |
Нативна інтеграція дає повний контроль над транзакціями, знижує газ та покращує користувацький досвід.
Управління станом та кеш даних протоколів
Дані DeFi оновлюються з кожним блоком. Курс пулу Uniswap, відсоткові ставки Aave — читаються через Multicall3 кожні 12–15 секунд. Зберігати в реактивному state (Combine на iOS, Flow/StateFlow на Android). При помилці RPC — graceful degradation: показувати останні актуальні дані з міткою часу.
Типові проблеми
Slippage tolerance хардкодити не можна. 0.5% підійде для стейблкоін-пар, 1–3% — для волатильних. Занадто низький slippage — транзакція завжди ревертиться на волатильному ринку, занадто високий — sandwich-атака з'їсть різницю.
Gas estimation для DeFi-операцій може промахнутися: Uniswap V3 при деяких маршрутах споживає 200k–500k gas. Мультиплікувати estimation на 1.3, не 1.1.
| Тип операції | Типовий gas (Ethereum) | Коментар |
|---|---|---|
| Swap через Uniswap V3 | 200k–500k | Залежить від маршруту |
| Supply Aave | 120k–180k | Approve + supply |
| Borrow Aave | 200k–300k | З урахуванням оновлення забезпечення |
Рішення типових проблем з газом
Використовуйте Multicall3 для зниження кількості RPC-запитів. Встановлюйте динамічний мультиплікатор gas на основі історичних даних мемпулу.Процес роботи
- Аналітика: визначення списку протоколів, збір ABI/IDL.
- Проектування: архітектура ABI-шару, reactive state, обробка помилок.
- Реалізація: кодинг функцій swap, supply, borrow, інтеграція WalletConnect.
- Тестування: на testnet (Goerli, Sepolia, Mumbai), перевірка edge-кейсів.
- Деплой: публікація в App Store / Google Play, моніторинг.
Що входить в роботу
- Документація ABI-інтеграції з прикладами коду
- Тест-кейси для всіх сценаріїв (успіх, відкат, gas-помилки)
- Навчання вашої команди роботі з бібліотеками web3swift/web3j
- Підтримка після релізу протягом місяця (багфікс, консультації)
Вартість інтеграції одного протоколу (наприклад, Uniswap swap) починається від $5000. Економія на газі за рахунок нативної інтеграції становить до 30% порівняно з WebView. Зв'яжіться з нами — оцінимо ваш проєкт.
Терміни: 1–3 місяці залежно від набору протоколів. Один протокол (наприклад, тільки Uniswap V3 swap) — 1–2 тижні з урахуванням тестування на testnet. Повноцінний DeFi-хаб з Uniswap + Aave + Compound — 2–3 місяці. Вартість розраховується індивідуально.







