Реалізація отримання криптовалюти в мобільному гаманці
Ми знаємо, що екран отримання криптовалюти здається тривіальним: показати адресу, згенерувати QR. На практиці за цим стоїть кілька нетривіальних рішень — підтримка кількох мереж з одним seed, коректний URI-формат для QR, і UX, який не дасть користувачеві передати адресу не тієї мережі. Наш досвід показує, що непродумана реалізація призводить до втрати коштів або блокування переказу. Пропонуємо розібрати ключові аспекти.
Як налаштувати відображення адреси для різних мереж?
HD-гаманець деривує різні адреси для різних мереж з одного мнемоніка за BIP-44. Ethereum-адреса (m/44'/60'/0'/0/0) збігається для Ethereum, Polygon, BNB Chain — це один і той самий hex-адреса. Але для Bitcoin (m/44'/0'/0'/0/0) та Solana (m/44'/501'/0'/0') адреси будуть іншими.
Користувач має явно бачити, в якій мережі він приймає: «Отримати ETH / ERC-20 (Ethereum)», «Отримати BNB (BNB Chain)». Одна візуальна помилка — і кошти можуть потрапити в непідтримувану мережу або взагалі згоріти.
| Мережа | Шлях BIP-44 | Формат адреси |
|---|---|---|
| Bitcoin | m/44'/0'/0'/0/0 | 1... / bc1... |
| Ethereum | m/44'/60'/0'/0/0 | 0x... |
| Solana | m/44'/501'/0'/0' | ... |
| BNB Chain | m/44'/60'/0'/0/0 (як ETH) | 0x... |
QR-код: URI-формати за стандартами
Для Bitcoin — BIP-21: bitcoin:1A2B3C...?amount=0.005 Для Ethereum — EIP-681: ethereum:0xAbCd...@1?value=1e18 Для Solana — solana:<address>?amount=0.1&spl-token=<mint>
QR з чистою адресою працює всюди, URI-формат — тільки якщо приймаючий додаток його підтримує. Рекомендуємо генерувати URI за замовчуванням, давати перемикач «тільки адреса» для сумісності.
// iOS — генерація QR через CoreImage import CoreImage.CIFilterBuiltins let filter = CIFilter.qrCodeGenerator() filter.message = Data(uri.utf8) filter.correctionLevel = "M" let ciImage = filter.outputImage! let scaled = ciImage.transformed(by: CGAffineTransform(scaleX: 10, y: 10)) let uiImage = UIImage(ciImage: scaled) // Android — ZXing import com.google.zxing.BarcodeFormat import com.google.zxing.qrcode.QRCodeWriter val writer = QRCodeWriter() val bitMatrix = writer.encode(uri, BarcodeFormat.QR_CODE, 512, 512) val bitmap = Bitmap.createBitmap(512, 512, Bitmap.Config.RGB_565) // заповнити bitmap з bitMatrix Розмір QR-коду має бути достатнім для сканування з відстані 30+ см. Мінімум 200×200 dp, рекомендується 280×280. Світлий фон, темні модулі — не інвертувати, більшість сканерів погано читають інверсію.
Чому важливий правильний URI-формат?
Використання URI-формату замість чистої адреси запобігає помилкам переказу: отримувач одразу отримує суму та ідентифікатор мережі. Якщо додаток відправника підтримує URI (наприклад, BIP-21 для Bitcoin), воно автоматично підставить суму і не дасть відправити не в ту мережу. На практиці 85% сучасних гаманців підтримують URI, тому ми включаємо цю опцію за замовчуванням.
Копіювання адреси та шерінг
Кнопка «Копіювати» — обов’язкова. Після копіювання — короткий toast «Адреса скопійована» без блокуючого діалогу. На iOS з iOS 16+ буфер обміну вимагає явного дозволу при вставці в іншому додатку, тому візуальне підтвердження особливо важливе.
Кнопка «Поділитися» відкриває системний share sheet з текстом адреси або URI. Це зручно при передачі адреси через месенджер.
Для мереж з memo/tag (XRP, XLM, ATOM) — обов’язково відображати memo окремим полем з попередженням: «Без memo кошти можуть бути втрачені на біржі».
Що входить в роботу
- Проектування UX: вибір розташування елементів, обробка помилок, сповіщення.
- Реалізація адресної деривації за BIP-44 для N мереж.
- Генерація QR з URI та чистою адресою, перемикання між режимами.
- Інтеграція копіювання та шерінгу з урахуванням особливостей ОС.
- Тестування на реальних пристроях та симуляторах.
- Документація та передача доступів.
Процес розробки
Аналітика → Проектування (1–2 дні) → Розробка (3–5 днів) → Тестування (1–2 дні) → Деплой. Оцінимо ваш проект за 24 години.
Терміни: від 5 до 10 днів залежно від кількості мереж та додаткових вимог. Ми гарантуємо якість коду та його відповідність App Store Review Guidelines та політикам Google Play.
Порівняння підходів: URI vs чиста адреса
| Можливість | URI-формат | Чиста адреса |
|---|---|---|
| Автозаповнення суми | Так | Ні |
| Визначення мережі | Так (параметр chain) | Ні |
| Сумісність | 85% гаманців | 100% |
| Простота реалізації | Середня | Проста |
Чиста адреса простіша, але URI безпечніший. Ми рекомендуємо комбінувати обидва підходи з перемикачем.
Зверніться до нас за консультацією або замовте реалізацію модуля отримання криптовалюти під ключ. Наші інженери мають досвід 5+ років та 50+ реалізованих проектів у сфері криптовалютних гаманців. Пишіть — оцінимо проект безкоштовно.







