📦 Базовые понятия, без которых не написать смарт-контракт в 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-спеку и писать контракты, которые не стыдно аудировать. Удачи!
Сохрани пост — пригодится, когда утонешь в доках.
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-спеку и писать контракты, которые не стыдно аудировать. Удачи!