Skip to main content
T TON Adoption
← Glossary
NODE/03 · Term

Jetton Wallet

Per-holder jetton wallet contract that holds one user's balance of one token. Each user gets a separate jetton wallet per token — the cornerstone of jetton architecture.

Aliases: jetton holder wallet

Jetton Wallet is the smart contract that holds one user’s balance of one jetton token. Every holder has their own jetton-wallet for every token they own. If you hold USDT and NOT, you have two separate jetton-wallets on TON.

Why this model

In Ethereum, every ERC-20 balance is stored in a single contract: a transfer updates two entries in a shared mapping. That’s a parallelism bottleneck.

TON does the opposite: a transfer between two jetton-wallets does not touch shared state. Each wallet is an independent contract, so the network can process transfers in different shards in parallel. That architectural choice is what gives TON its high token throughput.

What it stores

  • Balance. How many tokens the owner has.
  • Owner address. Whose wallet it is.
  • Jetton-master address. Which token it represents.
  • Wallet code. The reference code copied from the master at deploy.

A transfer

When Alice sends tokens to Bob, the chain of messages is:

  1. Alice sends transfer to her own jetton-wallet (from her ordinary wallet contract).
  2. Her jetton-wallet decreases its balance and sends internal_transfer to Bob’s jetton-wallet.
  3. If Bob’s jetton-wallet doesn’t exist yet, the master deploys it on the fly.
  4. Bob’s jetton-wallet credits the tokens and sends transfer_notification back to Bob.

Each step is a separate transaction in the corresponding contract’s shard.

Tonscan / TonViewer

In your wallet UI you see “I have 100 USDT”. On chain that means: “my USDT jetton-wallet address is EQ… and its balance is 100”. Explorers display both the wallet and its link to the master.

Security

The jetton-wallet is deployed by the master, and its code is fixed. So unlike classic wallets, you can’t swap out the jetton-wallet logic: if someone deploys a “fake” wallet under their own name, it simply won’t pass the standard internal_transfer check from the legitimate master.

Related terms