Smart contract в TON
Программа, исполняемая в TVM. В TON каждый аккаунт — это смарт-контракт, включая обычный кошелёк. Взаимодействие идёт через асинхронные сообщения.
Синонимы: смарт-контракт, ton smart contract, контракт ton
Smart contract в TON — это запись в блокчейне, состоящая из кода (TVM-байткод) и состояния (cell с произвольными данными). В отличие от Ethereum, в TON каждый аккаунт — это контракт, включая обычный пользовательский кошелёк.
Принципиальные отличия от Ethereum
- Каждый аккаунт — контракт. Нет деления на EOA (внешние счета) и контрактные счета. Кошелёк — это контракт класса
wallet_v4илиw5, который умеет проверять подпись владельца и пересылать сообщения дальше. - Асинхронность. Контракты не вызывают друг друга синхронно. Любое взаимодействие — это сообщение, которое доставляется в следующий блок.
- Контракт платит за себя. Газ оплачивается из баланса самого контракта. Если на счету мало TON и не хватает на хранение, контракт уходит в frozen state и через 18 месяцев удаляется.
- Параллелизм. Контракты в разных шардах исполняются одновременно. Это требует от разработчика мыслить в терминах распределённой системы, а не одного потока.
Жизненный цикл
- Деплой. Любой адрес — это хеш от пары
(code, initial_data, workchain). Пока контракта на адресе нет, онuninit. Чтобы развернуть его, отправляется сообщение сstate_init, и контракт переходит вactive. - Active. Контракт принимает сообщения, исполняет код, отправляет ответы.
- Frozen. Если баланс упал ниже порога хранения, контракт замораживается. Можно разморозить, отправив TON и оригинальный
state_init. - Deleted. После долгого простоя в frozen — данные удаляются, остаётся только адрес. Восстановить нельзя.
Стандарты
В TON есть набор официальных стандартов TEP (TON Enhancement Proposal), которые определяют интерфейсы:
- TEP-62 — NFT (см. nft в ton).
- TEP-74 — Jetton (см. jetton).
- TEP-81 — TON DNS.
- TEP-89 — Discoverable Jettons.
- TEP-104 — стандартный wallet-контракт.
Следование TEP даёт совместимость с кошельками и инфраструктурой: ваш контракт «увидят» Tonkeeper, MyTonWallet, индексеры, сканеры.
Аудит и безопасность
Смарт-контракты с большими TVL обычно проходят аудит у специализированных компаний (CertiK, Trail of Bits, локальные команды Trail of Bits, Quantstamp, специально для TON — CertiK и Slowmist). Стоимость аудита — от $10-30 тысяч за простой jetton до сотен тысяч за DEX или стейкинг-протокол.
История экосистемы знает несколько инцидентов: эксплоиты в early-DEX-ах, потери из-за неправильно установленных royalty в NFT-маркетплейсах. По меркам общей блокчейн-индустрии TON относительно чист, но любой контракт стоит проверять перед отправкой туда крупных сумм.