TON Connect не работает: 10 ошибок и решений
Bridge timeout, deep-link не открывается, unknown wallet, разрыв сессии — разбираем 11 типичных ошибок TON Connect: симптом, причина, что делать.
- Автор
- TON Adoption Team · исследовательская группа проекта
- Опубликовано
Содержание14разделов
- Как устроен TON Connect: три компонента, которые могут ломаться
- Ошибка 1: Bridge timeout — кошелёк не получает запрос
- Ошибка 2: Deep-link открывает не тот кошелёк
- Ошибка 3: Unknown wallet — кошелька нет в списке picker
- Ошибка 4: Session expired — нужно подключаться заново
- Ошибка 5: Manifest URL not accessible
- Ошибка 6: Wrong network — кошелёк подключён, но dApp не видит баланс
- Ошибка 7: TON Connect SDK старой версии — кошелёк падает с Unknown method
- Ошибка 8: Подпись прошла, но транзакция не в блокчейне
- Ошибка 9: User rejected the request — но пользователь ничего не отклонял
- Ошибка 10: Mini App в Telegram открывает кошелёк, но возвращается с пустой сессией
- Ошибка 11: Picker открывается, но вместо Tonkeeper показывается другой логотип
- Что делать, если ничего из списка не сработало
- Резюме
TON Connect задумывался как «одна кнопка — и всё работает», но на практике пользователи регулярно упираются в одну и ту же десятку проблем: bridge не отвечает, deep-link открывает не тот кошелёк, сессия отваливается посреди свопа, а picker показывает чужой логотип вместо привычного Tonkeeper. Большая часть этих ошибок не баги протокола, а столкновение между типичным мобильным окружением и архитектурой TON Connect — там, где сходятся три независимых компонента (dApp, bridge, кошелёк), всегда есть точки рассинхронизации.
Этот текст собран как справочник: 11 повторяющихся ошибок, на каждую — короткий симптом (то, что видит пользователь), причина (что на самом деле произошло) и 1–3 шага решения. Полезно и юзеру, и разработчику dApp: чтобы понимать, когда чинить надо у себя, а когда направлять пользователя в настройки кошелька.
Как устроен TON Connect: три компонента, которые могут ломаться
Прежде чем разбирать ошибки, важно зафиксировать модель. Любой запрос в TON Connect проходит через три независимые сущности:
- dApp — сайт или мини-аппа, которая запрашивает подключение и отправляет запросы на подпись.
- Bridge — HTTP-сервер-релей, через который dApp и кошелёк обмениваются зашифрованными сообщениями. По умолчанию Tonkeeper использует
bridge.tonapi.io, MyTonWallet — свой, есть и другие. Bridge ничего не подписывает, он просто транспорт. - Кошелёк — приложение, которое держит ключ, показывает запрос пользователю и подписывает транзакции.
Каждая из трёх сущностей может временно отказать, неправильно интерпретировать запрос или иметь устаревший протокол. Дальше разбираем конкретные сценарии.
Ошибка 1: Bridge timeout — кошелёк не получает запрос
Симптом. В picker dApp вы выбрали Tonkeeper, появилось окно «Ожидание подтверждения», крутится спиннер, через 60 секунд — сообщение «Bridge timeout» или «Wallet did not respond».
Причина. Bridge — это отдельный сервис, и он может быть временно недоступен или перегружен. Возможны и более тонкие сценарии: ваш ISP блокирует соединение с конкретным bridge-доменом, корпоративный firewall режет long-polling, на телефоне фоновый режим Android прибил соединение Tonkeeper до того, как пришёл запрос.
Что делать.
- Закройте picker, обновите страницу dApp, попробуйте снова — таймаут часто разовый.
- Откройте кошелёк до клика по Connect, чтобы он точно был в foreground.
- Если повторяется — в Tonkeeper зайдите в Settings → Connected apps → Bridge URL, переключите на резервный (например,
bridge.tontech.io). Аналогично в MyTonWallet и Tonhub есть выбор bridge.
Ошибка 2: Deep-link открывает не тот кошелёк
Симптом. Установлены Tonkeeper и MyTonWallet, в picker выбираете Tonkeeper — открывается MyTonWallet с экраном «Cannot read this connect request». Или наоборот.
Причина. Оба кошелька регистрируют обработчик схемы ton://. ОС выбирает один из них по последнему установленному правилу или по дефолту, который вы могли когда-то задать. Picker dApp не знает, какое именно приложение откроется — он просто кидает deep-link в систему.
Что делать.
- На Android: Settings → Apps → Default apps → Opening links → найдите ton:// и выберите нужный кошелёк.
- На iOS прямой настройки нет — приоритет получает последний установленный. Если хотите Tonkeeper по умолчанию, удалите конкурирующий кошелёк, переустановите Tonkeeper, потом вернитесь к нужному порядку.
- Альтернатива: в picker большинства dApp есть пункт «Connect by QR» — он не использует deep-link, а показывает QR-код, который вы сканируете в нужном кошельке вручную. Это надёжный обход.
Ошибка 3: Unknown wallet — кошелька нет в списке picker
Симптом. Вы зашли в dApp, нажали Connect Wallet, но в picker нет вашего кошелька — только Tonkeeper, MyTonWallet, Tonhub, OKX и ещё несколько. Ваш SomeNewWallet отсутствует.
Причина. Picker подтягивает список из публичного манифеста wallets-list.json, который ведут TON Foundation. Свежие или нишевые кошельки могут ещё не быть туда добавлены. Также если вы пользуетесь экспериментальной сборкой кошелька — она может не быть в листинге.
Что делать.
- В большинстве dApp есть пункт «Other wallet» — вставьте туда universal connect URL, который кошелёк сгенерирует у себя в разделе TON Connect.
- Используйте QR — каждый кошелёк, поддерживающий TON Connect, умеет читать QR из picker, даже не будучи в листинге.
- Авторам кошелька — отправить PR в репозиторий ton-blockchain/wallets-list с метаданными своего приложения, и через несколько недель он появится у всех.
Ошибка 4: Session expired — нужно подключаться заново
Симптом. Вчера всё работало, сегодня заходите на тот же dApp, а он показывает кнопку «Connect Wallet», будто вы пришли впервые. В кошельке в Active Sessions старая сессия исчезла.
Причина. Стандарт допускает сессии любой длительности, но многие dApp по умолчанию выставляют TTL 30–90 дней, а некоторые — несколько часов. После TTL bridge стирает данные, и сессию нельзя восстановить. Также сессия рвётся, если вы переустановили кошелёк, импортировали seed на новом устройстве или почистили storage браузера для конкретного dApp.
Что делать.
- Просто подключиться заново — это нормальный сценарий, не баг.
- Если переподключаетесь несколько раз в день — проверьте, не очищаются ли cookies у вас в браузере по выходу (Brave, Firefox с агрессивным privacy-режимом). dApp хранит часть состояния сессии в localStorage, и его потеря разрывает соединение.
- Разработчикам dApp — увеличить TTL у себя в
@tonconnect/sdkчерезtonConnect.connector.bridgeUrlили конфигурацию сессии.
Ошибка 5: Manifest URL not accessible
Симптом. Вы открыли мини-аппу или сайт, нажали Connect, в picker выбрали кошелёк — но в самом кошельке вместо нормального запроса показывается ошибка «Cannot fetch manifest» или «Invalid manifest».
Причина. При подключении кошелёк скачивает по URL манифест dApp (JSON с именем, иконкой и допусками). Если этот URL недоступен (CORS-блокировка, неверный TLS-сертификат, dev-сервер на localhost без публичного домена, файл 404), кошелёк отказывается продолжать.
Что делать.
- Если вы пользователь — попробуйте через 1–2 минуты, иногда CDN dApp временно лежит.
- Если вы разработчик dApp — проверьте, что
tonconnect-manifest.jsonдоступен по HTTPS, отдаётся с правильнымContent-Type: application/json, не блокируется CORS и содержит обязательные поляurl,name,iconUrl. Используйте dev-туннель (например,cloudflared), если разрабатываете локально и хотите тестировать на телефоне.
Ошибка 6: Wrong network — кошелёк подключён, но dApp не видит баланс
Симптом. Подключение прошло, в picker появился ваш адрес, но dApp показывает баланс 0 TON или сообщение «No assets on this network». При этом в кошельке вы видите свои токены.
Причина. Чаще всего — кошелёк в режиме testnet, а dApp ожидает mainnet (или наоборот). TON Connect передаёт chain в connect-response, но в Tonkeeper, MyTonWallet и Tonhub есть отдельный переключатель сетей. Реже причина — это V5R1 vs W5 версия кошелька, и dApp не парсит новый формат адреса.
Что делать.
- Откройте кошелёк, проверьте, что сверху стоит Mainnet (для большинства публичных dApp).
- Если используете несколько wallets-аккаунтов внутри одного приложения — убедитесь, что подключаете тот, на котором лежит баланс. В Tonkeeper это указано в шапке экрана подключения.
- Разработчикам dApp — добавить проверку
chainв свой код и явно предупреждать пользователя, если он подключился из testnet.
Ошибка 7: TON Connect SDK старой версии — кошелёк падает с Unknown method
Симптом. Кошелёк после подтверждения подключения выдаёт ошибку «Unknown method» или «Method not supported», dApp получает unhandled exception в SDK.
Причина. TON Connect — живой протокол, в нём появляются новые методы (tonProof, signData, расширенные параметры sendTransaction). Если dApp обновился до новой версии @tonconnect/sdk, а пользовательский кошелёк давно не апдейтился — он не поддерживает запрашиваемый метод.
Что делать.
- Обновите кошелёк до последней версии (Tonkeeper 4.7+, MyTonWallet 2024+).
- Разработчикам dApp — обернуть вызов нового метода в проверку
connector.wallet.device.featuresи показывать fallback, если фича отсутствует.
Ошибка 8: Подпись прошла, но транзакция не в блокчейне
Симптом. В кошельке вы подтвердили транзакцию, появилось сообщение об успехе, но в эксплорере её нет, а dApp продолжает показывать «Waiting for confirmation».
Причина. TON Connect отдаёт dApp boc подписанной транзакции, но сам отправляет её в сеть кошелёк, а не bridge. Если у кошелька в этот момент проблемы с lite-server (свой RPC), транзакция может зависнуть в локальной очереди или вообще не уйти. Также бывает, что транзакция ушла, но dApp ищет её по неверному хэшу (Tonkeeper и MyTonWallet возвращают boc, а не сразу хэш; хэш надо вычислять отдельно).
Что делать.
- В Tonkeeper зайдите в Activity — там видно все исходящие транзакции с фактическим статусом. Если её там нет, нажмите Refresh.
- Откройте Tonviewer или Tonscan, найдите свой адрес — посмотрите, ушла ли исходящая транзакция в последние 5 минут.
- Разработчикам dApp — не полагаться только на ответ TON Connect, а сразу подписаться на свой адрес через TonAPI WebSocket или поллить TonCenter для подтверждения on-chain.
Ошибка 9: User rejected the request — но пользователь ничего не отклонял
Симптом. В dApp выскакивает ошибка «User rejected the request» (-32000 или специфичный TonConnectError), хотя пользователь не нажимал «Отклонить» — он либо не успел подтвердить, либо переключился на другое приложение.
Причина. TON Connect SDK по умолчанию считает отклонением любое из трёх: явный клик по «Reject», истечение таймаута ожидания (обычно 5 минут на подпись), потеря соединения с bridge посреди запроса. С точки зрения dApp всё это — USER_REJECTED_ERROR, что вводит в заблуждение.
Что делать.
- Пользователю — переоткрыть кошелёк, найти в нём pending-запрос (в Tonkeeper это раздел Requests или сразу в шапке), подтвердить заново; если запрос пропал — нажать в dApp ту же кнопку, новый запрос придёт автоматически.
- Разработчикам dApp — различать причины ошибки по коду и тексту:
USER_REJECTED_ERRORс пустым полемcauseобычно таймаут, а не реальный reject. Показывайте разные сообщения для двух кейсов.
Ошибка 10: Mini App в Telegram открывает кошелёк, но возвращается с пустой сессией
Симптом. Вы в Telegram-мини-аппе нажали Connect, открылся Tonkeeper или Wallet, подтвердили подключение. Мини-аппа открылась снова — но кнопка Connect Wallet по-прежнему висит, как будто ничего не произошло.
Причина. Telegram WebApp при возврате из внешнего приложения иногда полностью перезагружает контекст мини-аппы. Если dApp хранит state TON Connect только в памяти (а не в localStorage или Telegram CloudStorage), на перезагрузке всё теряется. Также: некоторые версии Telegram на Android не восстанавливают focus на правильный таб, и WebApp ловит событие возврата в свёрнутом виде.
Что делать.
- Закройте мини-аппу, откройте заново — состояние сессии в кошельке всё ещё активно, dApp его поднимет с правильно настроенным SDK.
- Разработчикам мини-аппы — подписаться на
tonConnect.onStatusChangeи сохранятьwallet.account.addressв Telegram CloudStorage или собственный backend. На повторном входе восстанавливать UI из сохранённого состояния, не дожидаясь свежего подключения.
Ошибка 11: Picker открывается, но вместо Tonkeeper показывается другой логотип
Симптом. В picker dApp на месте Tonkeeper стоит другой логотип или вообще пустая иконка. Имя приложения может быть искажённое, в URL подключения — незнакомый домен.
Причина. Это может быть один из двух сценариев. Безобидный — dApp загружает wallets-list.json со старой CDN, где у Tonkeeper ещё стоит прошлый логотип; решается обновлением SDK. Опасный — вы попали на фишинговую копию dApp, которая подсунула свой список кошельков с тем же именем, но другим connect-URL, и через несколько секунд после подключения вы получите запрос на подпись вредной транзакции.
Что делать.
- Не подтверждайте подключение, пока не убедитесь в URL dApp в адресной строке. Если домен незнакомый или содержит лишние символы (
tonkeeper-app.comвместоtonkeeper.com) — закройте вкладку. - Если URL верный, а логотип всё равно странный — попробуйте обновить SDK dApp или открыть его в incognito-окне, чтобы исключить старый кеш.
- Раздельно держите cold-wallet с основными средствами и hot-wallet для экспериментальных подключений. Никогда не подключайте cold-wallet к dApp, в котором сомневаетесь. Подробнее о фишинге через TON Connect — в отдельном разборе векторов атак.
Что делать, если ничего из списка не сработало
Иногда проблема не покрывается типовой ошибкой — кошелёк виснет на splash-screen, dApp падает с пустым stack trace, picker не открывается вовсе. Универсальный чек-лист последней надежды:
- Перезапустите кошелёк — force quit и заново. Это решает 30% проблем с зависшими сессиями.
- Очистите кеш dApp в браузере — конкретно для домена приложения. localStorage, cookies, IndexedDB. После этого подключение будет с нуля.
- Попробуйте другой кошелёк на том же dApp. Если работает — проблема в первом кошельке (вероятно, устаревшая версия или повреждённое состояние). Если нет — проблема у dApp.
- Попробуйте другой dApp с тем же кошельком. Если работает — проблема у dApp, написать им в support. Если нет — проблема у кошелька.
- Проверьте версии: TON Connect 2.0 был релизнут в 2023, дальше шли минорные обновления. Любой кошелёк старше середины 2024 года рискует не поддерживать актуальный набор методов. То же касается
@tonconnect/sdkв dApp.
Резюме
Большинство «TON Connect не работает» — это либо рассинхронизация версий между dApp, SDK и кошельком, либо конфликты обработчиков deep-link, либо временные проблемы bridge. Десять перечисленных сценариев покрывают около 90% всех тикетов, которые видят support-команды dApp в TON-экосистеме в 2026 году.
Дисциплина для пользователя: держите кошелёк в актуальной версии, не доверяйте picker без проверки URL, при странных симптомах сначала проверяйте список Active Sessions в самом кошельке. Дисциплина для разработчика: парсите ошибки SDK по типам, показывайте человекочитаемые сообщения, не полагайтесь на состояние, которое может пропасть, и логируйте версии всех трёх компонентов в каждом запросе.
И помните: TON Connect — это транспорт и handshake, не магия. Если он молчит, виноваты конкретные звенья, и каждое можно проверить отдельно.
Частые вопросы
Почему TON Connect показывает Bridge timeout, хотя интернет работает?
Можно ли использовать одну сессию TON Connect на двух устройствах одновременно?
Что значит ошибка Unknown wallet в picker?
Сессия отключилась прямо во время свопа — деньги ушли?
Конфликт между несколькими TON-кошельками в Telegram — как решить?
Похожие материалы
- Основы28 янв. 2026 г.
TON Connect: что это, зачем нужен и как работает (2026)
TON Connect — стандарт подключения кошельков к dApps в TON. Разбираем как работает протокол, какие кошельки поддерживают
- Основы17 мая 2026 г.
TON Connect 2: что изменилось в протоколе подключения
Разбираем, чем TON Connect 2 отличается от первой версии, как устроен JSON-RPC, deep/universal links, bridge-сервера и поддержка multi-wallet picker.
- Основы1 июн. 2026 г.
WalletConnect vs TON Connect 2026: в чём принципиальная разница
Сравнение двух протоколов подключения кошельков: WalletConnect (EVM-стандарт) и TON Connect (TON-native). Архитектура, безопасность, что использовать в 2026.
- Кошельки28 мая 2026 г.
Tonkeeper: что это, установить и пользоваться в 2026
Tonkeeper — главный кошелёк TON. Что это, как установить, как создать кошелёк, как отправить и принять TON, как пользоваться swap и стейкингом. Гайд новичку.
- Безопасность22 мая 2026 г.
TON Connect фишинг и компрометация сессий
Четыре вектора атак на пользователей TON Connect: фейковые dApp, clipboard malware, deep-link в Telegram, злоупотребление старыми сессиями. Защита и реакция.