К основному содержанию
T TON Adoption
← Словарь
NODE/03 · Term

TASM

Дизассемблер TVM-байткода: преобразует cell с компилированным TVM-кодом в human-readable mnemonics (PUSHINT, IFJMP, CHKSIGN, HASHCU и т.д.). Стандартный инструмент аудита и forensics смарт-контрактов TON.

Синонимы: tvm assembly, ton disassembler, tasm disasm

TASM (TVM Assembly) — формат и инструмент дизассемблирования TVM-байткода. Берёт code:Cell контракта (по сути, бинарный поток TVM-инструкций) и переводит его в читаемый текст с мнемониками TVM-операций: PUSHINT 100500, HASHCU, CHKSIGNU, THROWIFNOT 70, IFJMPREF { ... } и т.д.

Зачем нужен

  • Forensics: чтобы понять, что делает «непонятный» смарт-контракт, у которого нет публикованных исходников, дизассемблируете его в TASM и читаете построчно. На этом строился разбор drain TAC-моста — 2399 строк TASM bridge-admin контракта.
  • Аудит: даже когда исходники открыты, аудитор сверяет TASM-output с тем, что декларируют исходники. FunC/Tact/Tolk компиляторы небезошибочные, и реальная семантика — всегда в байткоде.
  • Поиск security-маркеров: grep по TASM на наличие/отсутствие CHKSIGN, CHKSIGNU, ACCEPT, COMMIT, RANDOMIZE. Если bridge-контракт не содержит ни одной CHKSIGN-инструкции — это сразу red flag (как и оказалось с TAC).

Инструменты

  • @ton-community/disasm — официальный CLI-дизассемблер от TON Community.
  • Tonviewer (https://tonviewer.com/<address>?section=code) показывает TASM-вью прямо в браузере для любого деплойнутого контракта.
  • Tonscan — аналогично, в вкладке кода контракта.
  • Stack-style и continuation-aware: хороший дизассемблер показывает не плоский список опкодов, а вложенные IFJMPREF { ... }-блоки, что критично для понимания control flow.

Что TASM не сделает

Дизассемблер не восстанавливает имена переменных, типы, исходный язык. Понимание TASM требует знания семантики TVM-стека — это поднимает кривую входа, но даёт прямой доступ к реальной семантике контракта.

См. также