📦
Базовые понятия, без которых не написать смарт-контракт в TONСохрани пост — пригодится, когда утонешь в доках.1. Как устроена сеть•
Workchain / Shardchain — уровни горизонтального шардинга; адрес контракта включает ID workchain’а и hash.
•
Masterchain — «главная» цепочка: хранит глобальный корневой хеш состояния всех шардов и ключевые сервис-контракты.
•
Block → State — после каждого блока пересчитывается глобальное состояние.
2. Модель данных•
Cell — минимальная единица хранения: до 1023 бит данных + ссылки на дочерние ячейки (от 0 до 4 ссылок).
•
BOC (Bag of Cells) — сериализованный набор ячеек; формат для хранения/передачи кода, сообщений и состояния.
•
Slice / Builder — «читалка» и «писалка» для работы с битами/референсами внутри ячейки.
•
TL-B (Type Language – Binary) — декларативный способ описывать структуры, которые автоматически сериализуются в ячейки.
3. Виртуальная машина TVM•
TVM-стек – стековый процессор; почти все инструкции берут/кладут данные в стек.
•
TVM-опкоды — 8-битные коды инструкций (аналог ассемблера).
•
Gas — топливо на каждую операцию; каждая инструкция имеет цену, превышение лимита = revert.
•
Storage Fee — арендная плата за хранение состояния контракта; списывается каждые 256 блоков.
4. Языки и инструменты•
FunC — низкоуровневый C-like язык; почти прямое отображение на TVM.
•
Tact — «TypeScript для TON»; высокоуровневый, с генерацией ABI, тестами и кодогенерацией.
•
Tolk — «сборщик + дизассемблер» уровня TVM: удобно смотреть сырой байткод, писать инлайн-ассемблер. Недавно получил статус "рекомендованный" вместо FunC и Tact.
•
Fift — стековый скриптовый язык и CLI (сборка, деплой, утилиты).
•
TonCLI / Tact CLI / Blueprint — наборы инструментов для компиляции, тестов и деплоя.
5. Деплой и адреса•
StateInit — ячейка с кодом и начальным хранилищем; хеш StateInit = часть адреса контракта.
•
Bounceable / Non-bounceable — адрес с/без автоматического возврата TON при ошибке.
•
seqno — каждое внешнее сообщение увеличивает счётчик seqno, защищая от реплея.
6. Сообщения и взаимодействие•
External vs Internal — внешние приходят от кошелька, внутренние идут контракт↔контракт.
•
op-код сообщения - первые 32 бита тела сообщения, определяющие «команду» (transfer, burn, mint и т.д.).
•
forward_payload / callback — данные, которые пересылаются дальше (префиксуй для безопасности!).
•
Bounce flag — вернуть сообщение и TON отправителю, если контракта нет или он упал.
7. Стандарты (TEP)•
TEP-74 — Jetton (Fungible Token) — базовый стандарт токенов; включает Transfer, Burn, Mint, JettonWallet.
•
TEP-62 (NFT) - стандарт невзаимозаменяемых токенов; коллекция, item и т. д.
•
Wallet v3/v4 — эталонные кошельки; хороший пример «правильного» кода подписей и seqno.
•
DEX-пулы, DAO-голосовалки — практические шаблоны: мульти-хоп, опкод-роутинг, safe-math.
8. Безопасность•
Replay-Protection — проверяем msg.pubkey + seqno или query_id.
•
Opcode-whitelist — обрабатываем только известные op, остальное — игнор.
•
Re-entrancy через forward_payload — классический баг (см.
пост TheOpenDevBlog).
•
Formal Verifier / TVM-profile — статический анализ газ-стоимости и ошибок.
🏷
Как прокачаться быстро🏷 Пройдите «official TON course» (FunC+Fift) — поймёте Cell/TL-B/TVM.
🏷 Соберите минимальный кошелёк на Tact/Tolk — освоите StateInit, op, seqno.
🏷 Поднимите lite-ноду и гоняйте контракты на тестнете — практический опыт бесценен.
Освоив эти блоки, сможешь
читать любую TON-спеку и писать контракты, которые не стыдно аудировать. Удачи!