Как читать TON-транзакции в эксплорере: гайд по TonScan
Разбираем TonScan и Tonviewer пошагово: как найти транзакцию по хешу, что значит каждое поле, как читать сообщения, jetton-переводы, NFT и комиссии.
- Автор
- TON Adoption Team · исследовательская группа проекта
- Опубликовано
- Обновлено
Содержание17разделов
- Какие эксплореры есть в TON
- Что такое транзакция в TON
- Поиск транзакции по хешу
- Поиск по адресу
- Как читать обычный перевод TON
- Как читать перевод jetton (USDT, NOT, любой токен)
- Поля, которые часто пугают новичков
- EXIT_CODE
- Compute phase / Action phase
- Bounce
- Частые сценарии отладки
- «Я отправил, но получатель не получил»
- «Я заплатил большую комиссию»
- «Я не понимаю, почему контракт упал»
- Маленькие фишки
- Дальше
- Источники
В Ethereum-семье есть Etherscan — общеизвестный инструмент проверки транзакций. В TON роль такого «универсального справочника» выполняет TonScan и его более молодой конкурент Tonviewer. Этот гайд показывает, как читать данные в этих эксплорерах: что значит каждое поле, как разобрать цепочку сообщений и где искать ошибки.
Какие эксплореры есть в TON
На 2026 год основных пять:
- tonscan.org — классический, исторически первый.
- tonviewer.com — современнее, делает Tonkeeper team.
- ton.cx — лёгкий, быстрый.
- toncenter.com — официальный API + минимальный UI от TON Foundation.
- explorer.toncoin.org — простой тематический.
Для пользовательского применения — tonscan.org и tonviewer.com покрывают 99% сценариев. Дальше будем рассматривать на их примере.
Что такое транзакция в TON
Прежде чем читать эксплорер, важно понять модель транзакции. В Ethereum транзакция — это одно атомарное действие: вызов функции контракта со всеми вложенными вызовами в одном пакете.
В TON всё иначе:
- Транзакция — это выполнение одного смарт-контракта в ответ на одно входящее сообщение.
- Если контракт А посылает контракту Б сообщение, у тебя получается две транзакции — одна для А (где он отправил), вторая для Б (где он получил и обработал).
- Они связаны цепочкой
in_msg → tx → out_msgs → next_tx → ....
В эксплорерах это видно как дерево сообщений.
Поиск транзакции по хешу
Самый частый сценарий: знаешь хеш транзакции, хочешь её увидеть.
- Открываешь tonscan.org (или tonviewer.com).
- В строку поиска сверху вставляешь хеш — выглядит как длинная hex-строка вида
9f8d7e6c.... - Нажимаешь Enter.
Откроется страница транзакции с полями:
- Hash — собственно хеш.
- Block — в каком блоке (с workchain, shard, seqno).
- Time — когда обработана.
- Status — успех (зелёная галка) или ошибка (красный крестик).
- In message — кто и что прислал.
- Out messages — что отправил наружу.
- Total fees — сколько TON ушло на комиссии.
- EXIT_CODE — код выхода контракта.
Поиск по адресу
Второй частый сценарий — посмотреть историю своего или чужого кошелька.
- Скопировал EQ…/UQ… адрес.
- Вставил в поиск.
- Открылась страница адреса с полями:
- Balance — текущий баланс TON.
- Jettons — список jetton-токенов на адресе с балансами.
- NFTs — список NFT.
- Transactions — лента всех операций.
- State — состояние контракта (uninitialized / active / frozen).
Tonviewer ещё показывает график активности — удобно увидеть, был ли всплеск транзакций.
Как читать обычный перевод TON
Возьмём пример: Алиса отправляет 1 TON Бобу.
В эксплорере увидишь две транзакции:
Транзакция 1 — на адресе Алисы:
- In message: пустое (или подписанная запросом транзакция от внешнего источника, кошелька).
- Out messages: 1 сообщение на адрес Боба, value = 1 TON.
- EXIT_CODE: 0 (успех).
- Total fees: ~0.005 TON.
Транзакция 2 — на адресе Боба:
- In message: от адреса Алисы, value = 1 TON.
- Out messages: пусто.
- EXIT_CODE: 0.
- Total fees: ~0.001 TON (списано из value).
Бобу пришло 0.999 TON, потому что 0.001 TON ушло на forward fee и storage fee на стороне Боба.
Как читать перевод jetton (USDT, NOT, любой токен)
Jetton — это отдельный смарт-контракт у каждого пользователя, не «балансовая запись». Поэтому перевод сложнее:
Алиса отправляет 100 USDT Бобу. В эксплорере цепочка:
- Tx 1: кошелёк Алисы → её jetton-wallet USDT (сообщение «передай 100 USDT Бобу»).
- Tx 2: jetton-wallet Алисы списывает у себя 100 USDT, отправляет сообщение jetton-wallet’у Боба (создаст его, если не существует).
- Tx 3: jetton-wallet Боба зачисляет 100 USDT, отправляет уведомление основному кошельку Боба.
- Tx 4: основной кошелёк Боба обрабатывает уведомление (опционально).
Tonviewer показывает это как единое дерево с понятным «Алиса → 100 USDT → Боб». TonScan показывает классическим списком — нужно прокликать связанные транзакции.
Поля, которые часто пугают новичков
EXIT_CODE
Код выхода TVM при выполнении контракта. Стандартные значения:
- 0 — успех, штатное завершение.
- 1 — успешно с откатом (alternative success).
- 2 — Stack underflow.
- 3 — Stack overflow.
- 4 — Integer overflow.
- 5 — Range check error.
- 8 — Cell overflow.
- 9 — Cell underflow.
- 10 — Dictionary error.
- 13 — Out of gas.
- 32 — Action list invalid (типичная ошибка при попытке отправить некорректное сообщение).
- 34 — Action invalid (например, неправильный mode).
- 37 — Not enough TON.
- 38 — Not enough extra-currency.
Контракт может определить и свои коды выхода в диапазоне 256+. Например, jetton-wallet выкидывает код 706 «not authorized» при попытке списать токены не от владельца.
Полная таблица — в docs.ton.org/develop/smart-contracts/guidelines/error-handling.
Compute phase / Action phase
Транзакция в TON делится на фазы:
- Compute — выполнение кода контракта в TVM. Здесь живёт EXIT_CODE.
- Action — обработка действий, которые контракт «накопил» (отправка сообщений, изменение кода). У этой фазы свой код —
action_result_code. - Storage — списание storage fee.
- Bounce — обработка bounce (откат при ошибке).
Если транзакция «упала», смотри сначала EXIT_CODE compute-фазы. Если он 0, но что-то пошло не так — смотри action_result_code.
Bounce
Если контракт А отправил сообщение контракту Б, и Б не смог его обработать (упал с ошибкой), сообщение «отскакивает» обратно к А. В TonScan и Tonviewer это видно как помеченное «Bounced». Это не значит, что деньги пропали — они вернулись отправителю.
Частые сценарии отладки
«Я отправил, но получатель не получил»
- Открой свой адрес в эксплорере.
- Найди исходящую транзакцию с нужной суммой.
- Проверь её статус: успех или ошибка.
- Если успех — иди по цепочке
out_messagesк адресу получателя. - На странице получателя должна быть входящая транзакция с тем же хешем родительской.
Если на стороне получателя нет транзакции — задержка в сети (подожди 1–2 минуты). Если она есть, но баланс не обновился — обнови приложение или попробуй другой эксплорер для двойной проверки.
«Я заплатил большую комиссию»
Открываешь транзакцию, смотришь поле total_fees. Если больше 0.05 TON — что-то нестандартное. Возможные причины:
- Деплой контракта (первая транзакция новой dApp).
- Большой
forward_feeиз-за объёма payload. - Долгая
storage_fee(контракт давно не использовался).
Подробнее о том, как считаются комиссии — в отдельной статье.
«Я не понимаю, почему контракт упал»
Открываешь транзакцию в Tonviewer (он удобнее для отладки). Поля:
compute.exit_code— основная подсказка.compute.vm_log— лог выполнения (если включён).action.result_code— если сама компиляция прошла.
Если exit_code = 13 — контракт исчерпал газ. Если в районе 700+ — типично кастомный код от контракта (jetton, NFT). Гугли по конкретному номеру и контракту.
Маленькие фишки
- Tonviewer показывает превью dApp, если транзакция связана с известным проектом (STON.fi, DeDust). Это удобно для понимания «свопил ли я на правильной кривой».
- TonScan имеет публичный API для пакетной обработки данных. Удобно для аналитики или своих ботов.
- Tonviewer показывает OnchainAPI для каждой транзакции — можно дёрнуть JSON через query.
- Оба эксплорера дают постоянные ссылки на конкретные транзакции — можно пошарить в Telegram-чате.
Дальше
Если хочешь понять, из чего состоит эта комиссия и почему в TON она так невысока — гайд по комиссиям. Если работаешь с testnet — как переключиться и проверить. Если только начинаешь — создание кошелька.
Источники
Частые вопросы
Чем TonScan отличается от Tonviewer?
Как найти транзакцию по хешу?
Почему я вижу несколько сообщений в одной транзакции?
Что такое EXIT_CODE 0 и почему это важно?
Можно ли в эксплорере посмотреть, кому ты отправлял TON?
Похожие материалы
- Основы30 янв. 2026 г.
Комиссии в TON: как считаются и почему такие низкие
Из чего состоит комиссия в TON: gas, storage, forward, action fee. Реальные цифры на 2026, сравнение с Ethereum и Solana, как сэкономить и почему TON так дёшев.
- Основы20 янв. 2026 г.
Как создать TON-кошелёк за 5 минут: пошаговый гайд
Создаём TON-кошелёк с нуля: Wallet в Telegram, Tonkeeper, MyTonWallet. Сравнение, проверка seed-фразы, типичные ошибки новичков и что делать сразу после.
- Основы11 февр. 2026 г.
Mainnet vs Testnet TON: для чего нужны и как переключаться
Чем отличается mainnet от testnet TON, как переключить Tonkeeper в тестовую сеть, где взять бесплатный testnet TON и зачем это нужно разработчикам и.