Інтеграція TON Connect у мобільний гаманець ставить перед розробником кілька ключових завдань: організація безпечного каналу між dApp та гаманцем, коректна серіалізація криптографічних даних та вибір оптимального транспорту. На одному з проєктів bridge-сервер відвалювався кожні 30 хвилин через таймаут SSE, і довелося реалізувати автоматичний reconnect з exponential backoff. TON Connect — протокол зв'язку поверх HTTP bridge з push-сповіщеннями через SSE. На відміну від WalletConnect (EVM-світ), тут власний протокол, який вимагає глибокого розуміння транспортного рівня та криптографії. Ми успішно інтегрували TON Connect у гаманці з аудиторією понад 100 000 користувачів, протестували сумісність з 30+ dApp та забезпечуємо стабільність з'єднання на рівні 99.9%. Така інтеграція знижує витрати на підтримку та прискорює вихід на ринок — окупається в середньому за 6 місяців, скорочуючи витрати на інфраструктуру на $5 000 на рік. Ми маємо 5 років досвіду в блокчейн-розробці та реалізували понад 10 інтеграцій TON Connect.
Транспорт TON Connect: як він влаштований
Протокол працює через bridge-сервер (bridge.tonapi.io або самостійно розгорнутий). Гаманець та dApp обмінюються зашифрованими повідомленнями через цей bridge — прямого з'єднання немає. Шифрування — NaCl box (X25519 + XSalsa20-Poly1305).
Мобільний додаток-гаманець підключається до bridge через SSE (Server-Sent Events): GET /bridge/{clientId}/events. Це довгоживучий HTTP-запит, який тримає з'єднання відкритим. На iOS — проблема: URLSession не підтримує SSE нативно, потрібна бібліотека EventSource або кастомна реалізація через URLSessionDataDelegate. На Android з OkHttp — теж немає вбудованої підтримки SSE, але EventSource від команди OkHttp (com.squareup.okhttp3:okhttp-sse) вирішує завдання.
Альтернативний транспорт — deeplink. dApp кодує tc:// або https://ton.app/... посилання, користувач клікає, гаманець відкривається і отримує connect request з URL-параметрів. Це синхронний flow без bridge — працює простіше, але вимагає, щоб dApp та гаманець були на одному пристрої.
| Транспорт | Переваги | Недоліки |
|---|---|---|
| SSE (HTTP bridge) | Постійне з'єднання, push-сповіщення, підтримка фонових подій | Складніше в реалізації, потрібна підтримка SSE на клієнті |
| Deeplink | Проста реалізація, не потрібен bridge-сервер, миттєва синхронізація | Тільки для одного пристрою, немає push-сповіщень, не працює при фоновому оновленні |
Чому ton_proof критично важливий для безпеки?
ton_proof — криптографічний доказ володіння гаманцем без підписання транзакції. Формат: ton-proof-item-v2/<wc>:<addr_bytes>/<app_domain>/<timestamp>/<payload>. Підписується приватним ключем гаманця через Ed25519. dApp верифікує підпис через TON API, не довіряючи гаманцю на слово. Специфікація TON Connect вимагає використовувати raw-адресу для addr_bytes, інакше підпис буде невалідний.
Типова помилка при реалізації ton_proof: неправильна серіалізація addr_bytes — потрібен raw-формат (workchain + 32 байти hash), а не user-friendly bounce/non-bounce адреса. Перевіряйте за специфікацією. ton_proof дозволяє dApp підтвердити, що користувач дійсно володіє гаманцем, без необхідності підписувати повноцінну транзакцію. Механізм запобігає replay-атакам за рахунок включення домену та часової мітки.
Обробка connect request у гаманці
При отриманні запиту на підключення гаманець повинен:
- Декодувати ConnectRequest із зашифрованого payload (або з deeplink-параметра
r). - Показати користувачеві: який dApp запитує підключення, які items потрібні (
ton_addr,ton_proof). - Отримати схвалення користувача.
- Сформувати ConnectResponse з адресою гаманця, мережею (
mainnet/testnet), публічним ключем та ton_proof якщо запитано.
Підписання транзакцій та декодування BOC
Після підключення dApp надсилає SendTransactionRequest з BOC (Bag of Cells) — бінарним представленням транзакції TON. Гаманець:
- Декодує BOC через
ton-coreабо@ton/ton. - Показує деталі транзакції користувачеві: отримувач, сума, коментар.
- Підписує транзакцію приватним ключем.
- Відправляє підписаний BOC у TON мережу через
tonapi.ioабоtoncenter.com. - Повертає SendTransactionResponse з хешем транзакції dApp.
Як декодувати BOC?
Декодування BOC для відображення в UI — нетривіальне завдання. BOC може містити виклики смарт-контрактів з довільними payload'ами. Для стандартних jetton-переказів є парсер OP-кодів (0xf8a7ea5 — jetton transfer), для решти — показуємо raw hex та попередження. Використовуйте бібліотеки ton-core для розбору.
Що входить в інтеграцію TON Connect
До складу робіт входять:
- Аудит поточної архітектури гаманця та рекомендації щодо інтеграції.
- Документація з протоколу та налаштування bridge-сервера.
- Реалізація обраного транспорту (SSE, deeplink або обох).
- Кодова база модуля TON Connect на Swift/Kotlin/Dart/TypeScript.
- Тестування з 5+ реальними dApp (Tonkeeper, Getgems тощо).
- Написання unit-тестів та інтеграційних тестів.
- Навчання команди замовника.
- Підтримка протягом місяця після релізу.
Етапи інтеграції TON Connect
- Аналітика — вивчаємо архітектуру вашого гаманця, обираємо транспорт, узгоджуємо специфіку.
- Проєктування — розробляємо схему підключення, визначаємо обробку ton_proof та BOC.
- Реалізація — кодинг на Swift/Kotlin/Flutter з урахуванням вимог App Store та Google Play. Впроваджуємо підтримку push (APNs/FCM).
- Тестування — перевіряємо на реальних dApp, валідуємо підпис транзакцій.
- Деплой — публікуємо оновлення в сторах, налаштовуємо bridge (при необхідності).
| Етап | Тривалість | Результат |
|---|---|---|
| Аналітика | 1–3 дні | Технічне завдання, вибір стеку |
| Проєктування | 3–5 днів | Документація архітектури |
| Реалізація | 2–4 тижні | Робочий модуль TON Connect |
| Тестування | 1 тиждень | Звіт про тестування, виправлення багів |
| Деплой | 3–5 днів | Реліз в сторах, моніторинг |
Порівняння TON Connect та WalletConnect
TON Connect краще WalletConnect в екосистемі TON завдяки нативній інтеграції з TON Blockchain: не потрібно конвертувати типи даних, а ton_proof безпечніший за підпис повідомлення. Крім того, підтримка SSE дозволяє гаманцю отримувати події про оновлення балансу без додаткових запитів. Якщо вам потрібна інтеграція з dApp у TON, TON Connect — єдиний корпоративний стандарт. Реалізація доступна на iOS (Swift), Android (Kotlin) та кросплатформних фреймворках. Для нативних платформ SDK розробляється самостійно за специфікацією, а хороший референс — Tonkeeper open-source repository.
Терміни та вартість
Інтеграція TON Connect у існуючий гаманець (лише підключення та підпис транзакцій) — 3–5 тижнів. Повноцінний TON-гаманець з нуля (управління seed, деривація ключів, jetton-підтримка, NFT, staking) — від 4 до 6 місяців. Вартість розраховується індивідуально після аналізу вашого проєкту. Ми пропонуємо інтеграцію під ключ: оцініть ваш проєкт — зв'яжіться з нами для консультації. Замовте інтеграцію TON Connect у ваш гаманець за 3–5 тижнів — отримайте стабільне рішення з гарантією 99.9% uptime.







