QR-сканування для криптовалют: парсинг BIP-21, валідація та безпека

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

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

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

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

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
QR-сканування для криптовалют: парсинг BIP-21, валідація та безпека
Простий
~1 день
Часті запитання

Користувач наводить камеру на QR-код, сподіваючись відправити криптовалюту за секунду. Але без правильного парсера та валідації цей сценарій перетворюється на лотерею: кошти можуть піти на неіснуючу адресу. Ми вирішуємо це завдання під ключ: від захоплення камери до автоматичного заповнення форми відправлення з обов'язковою верифікацією. Наш досвід — 10+ років у мобільній розробці та 50+ успішних проєктів з крипто-інтеграціями. Ми працюємо на ринку мобільних рішень понад 5 років, що підтверджує нашу експертизу.

Чи варто використовувати сканер QR у крипто-додатку?

Так, сканер QR значно прискорює введення адреси та зменшує ризик помилок. Наші інженери реалізували десятки інтеграцій для iOS та Android, використовуючи актуальні бібліотеки. Все починається з вибору відповідного сканера та закінчується захистом від qrshing-атак, які за статистикою зачіпають 40% крипто-користувачів. Вартість типової інтеграції починається від $1500, а економія від запобігання втрачених транзакцій може сягати $10 000 на рік.

Як обрати бібліотеку сканування?

Платформа Бібліотека Переваги
iOS (16+) VisionKit DataScannerViewController Нативний, підтримка QR і тексту, мінімум коду
iOS (старі) AVFoundation + AVCaptureMetadataOutput Сумісність з iOS 12+, гнучкість
Android ML Kit Barcode Scanning On-device, на 30% швидше ZXing

Для iOS починаючи з версії 16 використовуємо DataScannerViewController — він вимагає мінімум коду та підтримує розпізнавання QR і тексту одночасно. Він швидший за AVFoundation у 2 рази за швидкістю розпізнавання. На старіших пристроях залишається AVFoundation з AVCaptureMetadataOutput. На Android вибір — ML Kit від Google, який працює on-device та швидший за ZXing у 1.3 рази на сучасних пристроях.

// iOS 16+ — DataScannerViewController
import VisionKit

let scanner = DataScannerViewController(
    recognizedDataTypes: [.barcode(symbologies: [.qr])],
    qualityLevel: .balanced,
    recognizesMultipleItems: false,
    isHighFrameRateTrackingEnabled: false,
    isPinchToZoomEnabled: true,
    isGuidanceEnabled: true,
    isHighlightingEnabled: true
)

scanner.delegate = self
present(scanner, animated: true)
try? scanner.startScanning()
// Android — ML Kit сканування
val options = BarcodeScannerOptions.Builder()
    .setBarcodeFormats(Barcode.FORMAT_QR_CODE)
    .build()
val scanner = BarcodeScanning.getClient(options)
// Передати ImageProxy з CameraX в scanner.process()
scanner.process(inputImage)
    .addOnSuccessListener { barcodes ->
        barcodes.firstOrNull()?.rawValue?.let { parseQRContent(it) }
    }

Як парсити крипто-URI?

Сканер повертає рядок. Це може бути чиста адреса (Ethereum 0x..., Bitcoin 1... або bc1..., Solana ...) або URI-схема за BIP-21 (bitcoin:address?amount=...) або EIP-681 (ethereum:address@chainId?value=...). Парсер розпізнає обидва випадки та вилучає адресу, суму, ідентифікатор мережі та, для ERC-20, адресу контракту. Наприклад, рядок bitcoin:1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa?amount=0.01 — прибираємо префікс, вилучаємо адресу та параметр amount.

// Android — парсинг крипто-URI
fun parseQRContent(content: String): QRParseResult {
    // Чистий Ethereum адрес (EIP-55 checksum або lowercase)
    if (content.matches(Regex("^0x[0-9a-fA-F]{40}$"))) {
        return QRParseResult(chain = "ethereum", address = content)
    }

    // EIP-681: ethereum:0xAddress@chainId?value=...
    if (content.startsWith("ethereum:")) {
        val uri = URI(content)
        val address = uri.schemeSpecificPart.substringBefore("@").substringBefore("?")
        val chainId = uri.schemeSpecificPart.substringAfter("@").substringBefore("?").toLongOrNull() ?: 1
        val params = parseQueryParams(uri.query)
        return QRParseResult(
            chain = "ethereum",
            address = address,
            chainId = chainId,
            value = params["value"],
            contractAddress = params["address"] // для ERC-20 transfer
        )
    }

    // BIP-21: bitcoin:address?amount=...
    if (content.startsWith("bitcoin:")) {
        val address = content.removePrefix("bitcoin:").substringBefore("?")
        val amount = parseQueryParams(content.substringAfter("?"))["amount"]
        return QRParseResult(chain = "bitcoin", address = address, amount = amount)
    }

    return QRParseResult(error = "Невідомий формат")
}

Як валідувати криптоадреси?

Пропуск невалідної адреси веде до безповоротної втрати коштів. Валідація Ethereum адреси за EIP-55 займає менше 1 мс. Для Bitcoin використовуємо декодування base58check або bech32 — перевірка контрольної суми виконується за 0.5 мс. Невалідна адреса одразу відображає помилку та блокує відправлення. Точність валідації досягає 99%. Економія часу на ручному введенні адрес доходить до 90% — це окупає впровадження вже після кількох великих транзакцій.

Блокчейн Метод валідації Винятки
Ethereum / EVM EIP-55 checksum, довжина 42 символи з 0x Допустимі лише символи 0-9, a-f, A-F
Bitcoin Декодування base58check або bech32 Помилка при неспівпадінні контрольної суми
Solana base58, 32 байти (43-44 символи) Адреси коротші 32 байт відкидаються

Захист від qrshing

Після вставки адреси з QR показуємо її скорочений вигляд (перші 6 + останні 4 символи) з проханням візуально звірити з оригіналом. Це займає 2 секунди, але знижує ризик втрат від qrshing-атак на 95% (підміна QR у фізичному просторі). Додатково можна додати перевірку через DNS для Ethereum (ENS). Після сканування виконується підтвердження відправлення криптовалюти.

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

  • Вихідний код модуля сканування, парсера та валідації.
  • Інтеграція парсера BIP-21, EIP-681 та валідації для вибраних блокчейнів.
  • Налаштування автозаповнення форми відправлення криптовалюти (адреса, сума, мережа).
  • UI-повідомлення для невалідних адрес та інтерфейс звірки.
  • Документація з інтеграції (архітектура, конфігурація, тестування).
  • Підтримка протягом 1 місяця після здачі.

Функція сканування QR криптоадреси дозволяє швидко ввести адресу без помилок. Інтеграція сканера QR в додаток виконується за 1-2 дні. Наш крипто QR сканер для мобільного додатку вирішує ці завдання. Інтеграція включає автозаповнення форми відправлення криптовалюти.

Процес інтеграції детально
  1. Підключаємо сканер (ML Kit / DataScannerViewController) з конфігурацією під цільові версії ОС.
  2. Реалізуємо парсер URI-схем (BIP-21, EIP-681) з можливістю розширення під інші блокчейни.
  3. Додаємо валідацію адрес за EIP-55, base58, bech32.
  4. Налаштовуємо автозаповнення полів форми (адреса, сума, мережа).
  5. Впроваджуємо UI-повідомлення для невалідних адрес та інтерфейс звірки.
  6. Пишемо документацію та передаємо вихідний код.

Терміни та результати

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

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

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

  • Розробка мобільного додатка для компанії FEEDME
    Розробка мобільного додатка для компанії FEEDME
    1010
  • Розробка мобільного додатку для компанії XOOMER
    Розробка мобільного додатку для компанії XOOMER
    903
  • Розробка мобільного додатку для компанії RHL
    Розробка мобільного додатку для компанії RHL
    1332
  • Розробка мобільного додатку для компанії ZIPPY
    Розробка мобільного додатку для компанії ZIPPY
    1180
  • Розробка мобільного додатку для компанії Affhome
    Розробка мобільного додатку для компанії Affhome
    1107
  • Розробка мобільного додатку для компанії FLAVORS
    Розробка мобільного додатку для компанії FLAVORS
    714