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

Wallet contract

Смарт-контракт, играющий роль кошелька в TON. Принимает подписанные владельцем сообщения и пересылает их в сеть. Существует несколько версий — от v3 до W5.

Синонимы: кошелёк-контракт, ton wallet contract, contract wallet

Wallet contract — это смарт-контракт, выполняющий роль кошелька пользователя в TON. В отличие от Ethereum, где «кошелёк» — это пара ключей (EOA), в TON кошелёк это полноценный смарт-контракт с собственным кодом и состоянием.

Зачем это нужно

Подход «кошелёк это контракт» решает несколько задач:

  • Кастомизируемая логика подписи. Можно реализовать multisig, time-lock, ограничение по адресам, плагины — всё ончейн.
  • Газ оплачивается из кошелька. Контракт сам платит за выполнение операций — нет отдельного «топлива» вне кошелька.
  • Replay protection. Каждая транзакция нумеруется через seqno — повторно использовать подписанное сообщение нельзя.
  • Нативная поддержка плагинов в новых версиях (W5) — позволяет подписать одну авторизацию для повторяющихся операций (DCA, авто-стейкинг).

Версии

Кошелёк-контракт прошёл несколько ревизий:

  • v1, v2 — устарели, использовались на ранних этапах сети.
  • v3, v4 — самые распространённые в 2022-2024 годах. Поддерживают seqno, базовые plugin-ы (v4).
  • W5 (2024+) — новейшая версия от TON Foundation. Поддерживает gasless-транзакции, batch-сообщения, расширенные плагины. Используется по умолчанию в Tonkeeper и MyTonWallet.

Адрес кошелька зависит от версии контракта и публичного ключа. Один и тот же ключ даёт разные адреса для разных версий — поэтому при импорте сид-фразы кошельки спрашивают, какая версия использовалась.

Как работает транзакция

  1. Пользователь в UI кошелька жмёт «Send».
  2. Кошелёк (приложение) формирует внешнее сообщение — payload с новым seqno, получателем, суммой, и подписывает его приватным ключом.
  3. Сообщение отправляется в сеть через liteserver.
  4. Wallet contract принимает сообщение, проверяет подпись и seqno.
  5. Если всё ок — увеличивает seqno и пересылает внутреннее сообщение получателю.

Bounceable / non-bounceable флаг в адресе влияет на то, что произойдёт с TON, если получающий контракт не существует или не принял сообщение (см. термин bounce).

Адресные форматы

Один кошелёк имеет несколько эквивалентных представлений адреса:

  • Bounceable (EQ...) — стандартный, безопасный для отправки на контракты.
  • Non-bounceable (UQ...) — для отправки на «новые» адреса (включая ещё не развернутые кошельки), чтобы средства не вернулись.
  • Raw form0:hex — внутренний формат TVM.
  • Mainnet vs testnet — отдельные префиксы, чтобы случайно не потерять монеты.

Современные кошельки автоматически выбирают правильную форму при отправке, но при копировании адресов с биржи стоит проверять формат.

Plugins (только v4 и W5)

Плагины — это вспомогательные контракты, которые от имени кошелька могут периодически инициировать операции:

  • Subscription plugin — оплата подписок раз в месяц.
  • Auto-staking plugin — авто-делегирование на номинатор.

Плагины активно поддерживаются с релиза W5 в 2024 году и постепенно приходят в массовые UX-сценарии.

См. также