Интеграция TON Connect в мобильный кошелёк ставит перед разработчиком несколько ключевых задач: организация безопасного канала между dApp и кошельком, корректная сериализация криптографических данных и выбор оптимального транспорта. На одном из проектов bridge-сервер отваливался каждые 30 минут из-за таймаута SSE, и пришлось реализовать автоматический reconnect с exponential backoff. TON Connect — протокол связи поверх HTTP bridge с push-уведомлениями через SSE. В отличие от WalletConnect (EVM-мир), здесь собственный протокол, требующий глубокого понимания транспортного уровня и криптографии. Мы успешно интегрировали TON Connect в кошельки с аудиторией более 100 тысяч пользователей, протестировали совместимость с 30+ dApp и обеспечиваем стабильность соединения на уровне 99.9%. Такая интеграция снижает затраты на поддержку и ускоряет выход на рынок, окупаясь в среднем за полгода.
Как устроен транспорт 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 team (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, etc.).
- Написание 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 в ваш кошелёк — получите стабильное решение с гарантией.







