Re:Doubt: форензика подозрительных транзакций в TON
В TON-экосистеме за последние два года накопилось достаточно скам-паттернов, чтобы вокруг них появилась отдельная инфраструктура. Один из ключевых элементов — Re:Doubt (re-doubt.com), платформа от Tonkeeper team, которая ведёт публичную базу скам-контрактов, drainer-кошельков и токсичных jetton’ов. Этот гайд — практический разбор: как пользоваться Re:Doubt для собственных проверок, что значит его security-score, как он встроен в Tonkeeper и где его недостаточно.
TL;DR
- Re:Doubt — security-research платформа от Tonkeeper team: публичная база контрактов и кошельков с риск-оценкой.
- Tonkeeper использует эту базу для авто-предупреждений в момент подписи транзакции.
- Чек-лист в конце статьи — то, что я прохожу перед approve любой нестандартной операции.
Что такое Re:Doubt и кто его делает
Re:Doubt — это публичный security-инфо-сервис от Tonkeeper team, то есть от той же команды, что делает один из самых популярных некастодиальных кошельков TON. Это важный контекст: оценки Re:Doubt — позиция конкретной независимой команды с большим продуктовым контактом со скам-жертвами, а не «официальный вердикт сети».
Что предоставляет платформа:
- Карточки контрактов и адресов с категорией риска.
- Базу известных drainer-кошельков — адресов, на которые сливаются украденные активы.
- Публичный API, который интегрирован в Tonkeeper и доступен другим dApp’ам.
- Аналитические отчёты по крупным инцидентам (вектора атак, утечки, drainer-кампании).
Цель — снизить долю успешных скамов в TON за счёт того, что подозрительные контракты помечаются ещё до того, как пользователь нажмёт «подтвердить».
Security score: как читать оценку контракта или кошелька
На странице любого адреса в Re:Doubt видна оценка риска. Это не «балл 0-100», а категория с пояснением. Чтобы не сочинять цифры, которых я не видел в их доке, приведу категориальную картину:
- Чисто / без сигналов — система не видит негатива. Не означает «безопасно», означает «нет повода насторожиться».
- Низкий риск — контракт молод, мало истории, либо есть слабые косвенные сигналы.
- Умеренный риск — есть жалобы или подозрительные паттерны (типичные для дрейнеров cookie-cutter контракты, неестественная история транзакций).
- Высокий риск / drainer / scam — подтверждённый вредоносный контракт. Часто с пометкой кампании или цитированием инцидента.
- Impersonation — контракт пытается выдать себя за известный (например, jetton с тикером USDT, но не от Tether).
К каждой категории Re:Doubt обычно прикладывает причину: «адрес фигурирует в N жалобах», «контракт является копией известного drainer-шаблона», «jetton-минтер имитирует тикер X». Это критично: читай причину, а не только цвет метки.
!Скор — это не аудитSecurity-score говорит «у системы есть/нет сигналов». Это не код-аудит, не математическая гарантия. Свежий контракт без жалоб будет светиться «чисто» — даже если он был задеплоен 10 минут назад с зловредной логикой.
Интеграция с Tonkeeper — авто-предупреждения в момент транзакции
Самая полезная часть Re:Doubt — это её встроенность в Tonkeeper. Когда ты подписываешь транзакцию, кошелёк фоном дёргает Re:Doubt API по адресу контрагента и контракта. Если приходит негативный сигнал, Tonkeeper показывает жёлтый или красный баннер на экране подтверждения:
- «Этот адрес помечен как drainer» — красный, с настоятельной рекомендацией отменить.
- «Этот контракт похож на impersonation известного токена» — жёлтый, требует осознанного «всё равно продолжить».
- «У этого jetton нет верификации» — мягкое предупреждение, чтобы не путать с реальным USDT.
Сценарий, ради которого это всё построено: тебе приходит «бесплатный» jetton с инструкцией зайти на сайт и «активировать» — типичная drainer-схема. Ты по инерции жмёшь подтвердить операцию, и в этот момент Tonkeeper показывает красный экран Re:Doubt. Спасает реально много людей, потому что атака рассчитана на автопилот.
Другие кошельки TON постепенно подтягивают аналогичные интеграции, но в Tonkeeper она work-out-of-the-box.
Case-walkthrough: подозрительный jetton airdrop
Разберём конкретный workflow. На кошелёк приходит «бесплатный» jetton с тикером USDT-AIR и суммой 5000. В метаданных — ссылка на сайт «активации». Что делает форензик-friendly пользователь:
Шаг 1 — Re:Doubt по jetton-минтеру.
Из карточки jetton’а в Tonkeeper копируем адрес контракта-минтера, вставляем в поиск Re:Doubt. Скорее всего, увидим категорию impersonation или scam — Re:Doubt уже знает про такие токены. Если категория «нет сигналов», но тикер похож на известный — это уже само по себе красный флаг.
Шаг 2 — проверка адреса-отправителя.
Тот, кто прислал airdrop, — обычно drainer-распределитель. Его адрес тоже идёт в Re:Doubt. Часто такие адреса засвечены и имеют пометку.
Шаг 3 — Tonviewer на цепочку.
Открываем Tonviewer, смотрим, кому ещё этот отправитель раздал тот же jetton. Если видим веер из тысяч одинаковых сообщений, отправленных за минуту — это массовая раздача, не «персональный подарок».
Шаг 4 — НЕ заходить на сайт активации.
Это и есть drainer-страница. Она просит подключить кошелёк и подписать «активацию», которая на деле — approve на снятие реальных активов. Подробный разбор драйнеров — в гайде по drainer-сайтам.
Шаг 5 — оставить jetton в кошельке.
Сам факт владения скам-jetton’ом не опасен. Опасен interact с ним (approve, перевод, обмен). Если игнорируешь — он просто висит мёртвым грузом.
Что Re:Doubt не покрывает
Чтобы пользоваться инструментом честно, надо понимать его границы:
- Fresh-контракты. Если drainer-контракт задеплоен 2 часа назад, у Re:Doubt о нём ещё нет данных. Метка будет «нет сигналов» — но это не значит «безопасно».
- Атаки через UI, а не контракт. Если жертву обманывают через фейковый Telegram-бот, который генерирует ссылку с подменой адреса — Re:Doubt тут не поможет, потому что контракт назначения может быть легитимный (например, твой собственный, но не тот).
- Сложные DeFi-эксплойты. Re:Doubt — не аудит. Если в DEX-контракте уязвимость в логике оракула, скор её не увидит.
- Социальная инженерия. Re:Doubt не знает, что собеседник в Telegram уговорил тебя перевести деньги «другу».
- Покрытие NFT/dApp слабее, чем по jetton’ам и кошелькам — фокус был исторически на токенах.
То есть Re:Doubt — первый фильтр, а не финальная инстанция.
Дополнительные инструменты: Tonviewer graph, TonStat clusters, manual tonscan
Для серьёзной проверки одного Re:Doubt мало. Что добавить:
Tonviewer (tonviewer.com). Показывает дерево сообщений транзакции и удобный граф связей. Если жертва ищет, куда ушли её деньги, Tonviewer быстро строит цепочку через несколько hops. Сравнение Tonviewer и TonScan — в отдельной статье.
TonStat / on-chain аналитика. Кластерный анализ — попытка понять, что N разных адресов на самом деле принадлежат одному оператору. Помогает увидеть масштаб drainer-кампании.
TonScan (tonscan.org). Классический эксплорер, удобен для ручного просмотра отдельных транзакций. Не имеет встроенного security-скоринга, но даёт полную raw-информацию. Базовый гайд по TonScan — в статье про чтение транзакций.
toncenter / tonweb CLI. Для тех, кто пишет свой анализ — официальный API и SDK позволяют тащить данные пачками и считать что угодно.
Чтение on-chain метрик. Если хочется понимать, как вообще оценивается здоровье сети и где смотреть макро-уровень, посмотри гайд по on-chain метрикам.
Чек-лист перед approve любой TON-транзакции
То, что я прохожу мысленно перед нажатием «подтвердить» на сумму, которую жалко потерять:
- Я инициировал эту операцию? Если кошелёк сам выскочил с запросом — это уже плохой знак.
- Адрес получателя сверен побайтно? Не «начало и конец совпадают» — а полностью.
- Re:Doubt по адресу контракта и получателя — что говорит? Если красное или жёлтое — стоп.
- Сумма и jetton — то, что я ожидаю? Не «1.0 TON» вместо «0.1 TON» из-за подмены поля.
- Контракт верифицирован? Если это DEX или знакомый dApp — там есть верификация.
- Я понимаю, что именно подписываю? «Approve», «transfer», «mint» — все это разные операции с разными последствиями.
- Сайт открыт по корректному URL? Без подмены домена через unicode или typo.
- Если это «бесплатно» — где подвох? «Активируй и получи N USDT» = drainer в 99% случаев.
Этот чек-лист легко проходить за 30 секунд, но он закрывает 90% типовых атак.
iОсобый режим для крупных суммДля операций на ощутимые суммы — например, >$1000 в TON или jetton’ах — я добавляю ещё один шаг: тестовый перевод 0.5 TON в адрес назначения, ожидание подтверждения у получателя, и только потом основной транзакт. Дополнительные 0.005 TON газа — дешёвая страховка от подмены адреса.
Заключение
Re:Doubt — это не «антивирус для TON», а публичная база сигналов, на которую полагаются крупные кошельки. Она хорошо ловит уже известные скамы и сильно снижает успех массовых drainer-кампаний. Но fresh-контракты, тонкие атаки через UI и социальная инженерия — это уже не её зона. Поэтому сочетание: Re:Doubt + Tonviewer + здравый смысл + чек-лист — даёт реалистичный уровень защиты для активного пользователя TON.
Если попадаешь под подозрение, что тебя пытались обмануть — детальный разбор типичных схем в топ-10 скамов TON в Telegram и как работают drainer-сайты.
→ Открыть Re:DoubtПубличная база скам-контрактов, drainer-кошельков и impersonation-токенов TON. Бесплатный поиск по адресу. Делается командой Tonkeeper.