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

Jetton Wallet

Контракт-кошелёк, хранящий баланс одного держателя одного jetton-токена. Деплоится на каждого пользователя отдельно — основа архитектуры jetton.

Синонимы: jetton wallet, кошелёк джеттона, wallet jetton

Jetton Wallet — индивидуальный смарт-контракт, который хранит баланс одного держателя одного jetton-токена. У каждого пользователя — свой собственный jetton-wallet под каждый токен, который у него есть. Если у вас USDT и NOT, у вас два отдельных jetton-wallet-а на TON.

Зачем такая модель

В Ethereum все балансы ERC-20 хранятся в одном контракте: чтобы перевести токен, обновляются две записи в общем mapping. Это узкое место для параллелизации.

В TON наоборот: переводы между двумя jetton-wallet-ами не трогают общий стейт. Каждый wallet — независимый контракт, и сеть может обрабатывать переводы в разных шардах одновременно. Это и есть архитектурный приём, который даёт TON высокую пропускную способность для токенов.

Что хранит

  • Баланс. Сколько токенов у владельца.
  • Адрес владельца. Чей это wallet.
  • Адрес jetton-master. К какому токену относится.
  • Код wallet. Эталонный код, скопированный с master при деплое.

Перевод

Когда Алиса шлёт токены Бобу, цепочка выглядит так:

  1. Алиса шлёт transfer на свой собственный jetton-wallet (через свой обычный wallet-контракт).
  2. Её jetton-wallet списывает у себя баланс и шлёт internal_transfer jetton-wallet-у Боба.
  3. Если у Боба jetton-wallet ещё не задеплоен, master деплоит его на лету.
  4. Jetton-wallet Боба зачисляет токены и шлёт transfer_notification обратно Бобу.

Каждый шаг — отдельная транзакция в шарде соответствующего контракта.

Tonscan / TonViewer

В UI кошелька вы видите «у меня 100 USDT». На цепочке это означает: «адрес моего USDT jetton-wallet — EQ…, и его баланс = 100». Эксплореры показывают и сам wallet, и его привязку к master-у.

Безопасность

Jetton-wallet деплоит сам master, и его код фиксирован. Поэтому, в отличие от классических кошельков, подменить логику jetton-wallet нельзя: если кто-то деплоит «фальшивый» wallet от своего имени, он просто не пройдёт проверку при internal_transfer от стандартного master-а.

См. также