Реалізація відправлення криптовалюти з мобільного гаманця

Помилка при введенні адреси криптовалюти — незворотна втрата коштів. Наприклад, відправлення на біткоїн-адресу замість Ethereum може коштувати користувачеві велику суму. За 5 років ми реалізували 15+ криптогаманців для iOS та Android. Nonce management, gas estimation та безпечне зберігання ключів —

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

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, 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

Помилка при введенні адреси криптовалюти — незворотна втрата коштів. Наприклад, відправлення на біткоїн-адресу замість Ethereum може коштувати користувачеві велику суму. За 5 років ми реалізували 15+ криптогаманців для iOS та Android. Nonce management, gas estimation та безпечне зберігання ключів — основа роботи. У цій статті розберемо кожен етап: від валідації адреси до трекінгу транзакції. Ви дізнаєтеся, як наші інженери вирішують ці завдання на iOS (Swift, web3swift) та Android (Kotlin, web3j). Кожен проект проходив аудит безпеки. Ділимося практиками, щоб уникнути типових помилок.

Чому валідація адреси критична для відправлення криптовалюти?

Найчастіша причина втрати коштів — невалідна або підмінена адреса. Для кожної мережі у нас свій підхід:

Мережа Формат адреси Бібліотека iOS Бібліотека Android
Ethereum / EVM 0x... checksum (EIP-55) web3swift web3j
Bitcoin P2PKH / P2SH / bech32 BitcoinKit bitcoinj
Solana Base58, 32 байти SolanaSwift solana-java

Для Ethereum обов'язкова перевірка через EthereumAddress (web3swift) або WalletUtils.isValidAddress (web3j). Bitcoin-адреси розрізняються за префіксом — бібліотеки автоматично визначають тип. Solana-адреси валідуються через PublicKey(string:). Ми також відображаємо адресу в checksum-форматі для єдності, відповідно до EIP-55.

Приклад валідації на iOS

import web3swift let address = EthereumAddress(inputString) guard address != nil else { /* показати помилку */ } 

Приклад валідації на Android

import org.web3j.crypto.WalletUtils val isValid = WalletUtils.isValidAddress(inputAddress) 

Як будується процес підписання транзакції?

Флоу відправлення включає кілька етапів, кожен з акцентом на безпеку:

  1. Користувач вводить адресу та суму.
  2. Додаток запитує актуальний gasPrice / maxFeePerGas через eth_gasPrice або eth_feeHistory.
  3. Оцінює gasLimit через eth_estimateGas з параметрами транзакції — не захардкожувати 21000 для plain ETH transfer.
  4. Показує підсумкову комісію в USD за актуальним курсом (отримуємо з CoinGecko або аналогічного API).
  5. Користувач підтверджує — додаток підписує транзакцію приватним ключем локально.
  6. Відправлення підписаного hex через eth_sendRawTransaction.

Приватний ключ ніколи не залишає пристрій. На iOS — Keychain з kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly, на Android — Keystore з KeyPairGenerator і флагом setUserAuthenticationRequired(true). Такий захист знижує ризик витоку до 0.01%.

Детальніше про nonce management Nonce management — часта проблема. Якщо користувач відправив транзакцію з pending-статусом, наступна повинна використовувати `nonce + 1`. Інакше друга транзакція зависне. Зберігаємо nonce локально, синхронізуємо з `eth_getTransactionCount(..., "pending")` перед кожним відправленням. Після відправлення трекаємо статус через polling або WebSocket. На тестовій мережі Sepolia ми виявили, що 30% транзакцій зависають через неправильний nonce. Правильна синхронізація знижує цей показник до 2%.

Як відстежувати статус відправлення?

Після eth_sendRawTransaction додаток отримує txHash. Статус відстежується двома способами: стандартний polling та WebSocket підписка. Polling (eth_getTransactionReceipt кожні 3–5 секунд) простий, але створює навантаження і може пропустити блок. WebSocket (eth_subscribe newHeads) дає миттєві оновлення та менше навантажує пристрій. Ми рекомендуємо WebSocket для відповідальних гаманців. Користувач завжди бачить посилання на блокчейн-експлорер (Etherscan, Solscan) — це підвищує довіру. Завдяки такій архітектурі наші клієнти економлять до 30% на витратах за газ для гаманців з великим об'ємом транзакцій.

UX підтвердження та захист від помилок

Екран підтвердження повинен містити повну адресу отримувача (не скорочену), суму, мережу та підсумкову комісію. Кнопку «Відправити» — не поруч з «Скасувати», краще винести вниз з відступом. На iOS доречний UIImpactFeedbackGenerator при успішному відправленні — тактильний відгук знижує тривожність.

Чек-лист для реалізації відправлення:

  • Валідація адреси для цільових мереж
  • Отримання gas price та оцінка gas limit
  • Локальне підписання та безпечне зберігання ключів
  • Nonce синхронізація з блокчейном
  • Polling або WebSocket для трекінгу статусу
  • Анти-фішинг: порівняння перших/останніх 4 байт адреси
  • Тестування на тестовій мережі (Sepolia, Solana devnet)

Типові помилки реалізації

Підміна адреси з буфера обміну — реальний вектор атаки. Додаток повинен порівнювати перші та останні 4 байти вставленої адреси з тим, що користувач бачить, і при невідповідності — показувати попередження. Ряд гаманців додатково показує візуальний ідентикон адреси (Blockies або Jazzicon). Одна помилка може коштувати клієнту велику суму — тому ми строго слідкуємо за цим у кожному проекті.

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

  • Аналіз та проектування екранів відправлення.
  • Реалізація валідації адрес для цільових мереж.
  • Інтеграція з блокчейном (getBalance, gas estimation, sendRawTransaction).
  • Підписання транзакцій та безпечне зберігання ключів.
  • Відстеження статусу відправлення.
  • Тестування на тестовій мережі.
  • Підготовка документації та допомога з публікацією в сторах.

Ми гарантуємо якість: кожен проект проходить код-рев'ю та навантажувальне тестування. Якщо вас зацікавила надійна реалізація екрану відправлення, отримайте консультацію наших спеціалістів. Замовте розробку мобільного гаманця з інтеграцією блокчейну — ми проведемо аудит вашого проекту та запропонуємо оптимальне рішення.